This message comes from
drivers/acpi/button.c which is a part of
ACPI_BUTTON module in the Linux kernel.
For example, under
linux-source-4.19/drivers/acpi/button.c after line
171 you can find it:
194 /* Complain the buggy firmware */
195 pr_warn_once("The lid device is not compliant to SW_LID.\n");
As you can see this message is printed when the buggy firmware is
detected. The comment carries on:
197 * Send the unreliable complement switch event:
. * On most platforms, the lid device is reliable. However
. * there are exceptions:
. * 1. Platforms returning initial lid state as "close" by
. * default after booting/resuming:
. * https://bugzilla.kernel.org/show_bug.cgi?id=89211
. * https://bugzilla.kernel.org/show_bug.cgi?id=106151
. * 2. Platforms never reporting "open" events:
. * https://bugzilla.kernel.org/show_bug.cgi?id=106941
. * On these buggy platforms, the usage model of the ACPI
. * lid device actually is:
. * 1. The initial returning value of _LID may not be
. * reliable.
. * 2. The open event may not be reliable.
. * 3. The close event is reliable.
. * But SW_LID is typed as input switch event, the input
. * layer checks if the event is redundant. Hence if the
. * state is not switched, the userspace cannot see this
. * platform triggered reliable event. By inserting a
. * complement switch event, it then is guaranteed that the
. * platform triggered reliable one can always be seen by
. * the userspace.
How to fix it - it's just a diagnostic message, if everything works
fine for you, you can ignore it. In case something doesn't work you should
visit the links posted above and search for possible solutions for the
particular hardware you have or try to upgrade your computer's firmware
which unluckily may not be always possible from Linux.