Message ID | 20231206212140.7458-2-mario.limonciello@amd.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] Input: i8042: Avoid probing if no keyboard and mouse are set in quirks | expand |
On Wed, 06 Dec, 2023 15:21:40 -0600 Mario Limonciello <mario.limonciello@amd.com> wrote: > The Framework 16" laptop doesn't have a PS/2 keyboard. At bootup the > following messages are emitted: > > i8042: PNP: No PS/2 controller found. > i8042: PNP: Probing ports directly. > i8042: Can't read CTR while initializing i8042 > i8042: probe of i8042 failed with error -5 > > There are no PNP devices as those listed in `pnp_kbd_devids` but > i8042_pnp_init() ignores this and still runs and will continue to > try to probe. > > As there is no PS/2 keyboard or mouse in this laptop, set a quirk > to avoid this behavior. > > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
On Wed, Dec 06, 2023 at 03:21:40PM -0600, Mario Limonciello wrote: > The Framework 16" laptop doesn't have a PS/2 keyboard. At bootup the > following messages are emitted: > > i8042: PNP: No PS/2 controller found. > i8042: PNP: Probing ports directly. > i8042: Can't read CTR while initializing i8042 > i8042: probe of i8042 failed with error -5 > > There are no PNP devices as those listed in `pnp_kbd_devids` but > i8042_pnp_init() ignores this and still runs and will continue to > try to probe. > > As there is no PS/2 keyboard or mouse in this laptop, set a quirk > to avoid this behavior. I believe the proper fix for this is for the firmware not report i8042 as present by properly setting up FADT. Please take a look at arch/x86/kernel/acpi/boot.c::acpi_parse_fadt() and how it sets flag X86_LEGACY_I8042_FIRMWARE_ABSENT. It will still say "PNP: No PS/2 controller found" which is an "informational" message, but should not try to probe ports directly and report errors. Thanks.
On Fri, 08 Dec, 2023 17:57:05 +0000 Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > On Wed, Dec 06, 2023 at 03:21:40PM -0600, Mario Limonciello wrote: >> The Framework 16" laptop doesn't have a PS/2 keyboard. At bootup the >> following messages are emitted: >> >> i8042: PNP: No PS/2 controller found. >> i8042: PNP: Probing ports directly. >> i8042: Can't read CTR while initializing i8042 >> i8042: probe of i8042 failed with error -5 >> >> There are no PNP devices as those listed in `pnp_kbd_devids` but >> i8042_pnp_init() ignores this and still runs and will continue to >> try to probe. >> >> As there is no PS/2 keyboard or mouse in this laptop, set a quirk >> to avoid this behavior. > > I believe the proper fix for this is for the firmware not report i8042 > as present by properly setting up FADT. Please take a look at > arch/x86/kernel/acpi/boot.c::acpi_parse_fadt() and how it sets flag > X86_LEGACY_I8042_FIRMWARE_ABSENT. This is along the lines of a point I brought up in the v1 of this patch. https://lore.kernel.org/linux-input/87v89bgl7a.fsf@nvidia.com/ This means that Framework as a manufacturer will need to provide the appropriate fix for what's advertised over ACPI by the device. I think that makes sense instead of creating quirk combinations to avoid resolving the issue at the ACPI level. I guess the only de-merit is that means folks need to depend on vendors with no way to suppress this if a vendor does not correct set up FADT. > > It will still say "PNP: No PS/2 controller found" which is an > "informational" message, but should not try to probe ports directly and > report errors. -- Thanks, Rahul Rameshbabu
On 12/8/2023 12:08, Rahul Rameshbabu wrote: > On Fri, 08 Dec, 2023 17:57:05 +0000 Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: >> On Wed, Dec 06, 2023 at 03:21:40PM -0600, Mario Limonciello wrote: >>> The Framework 16" laptop doesn't have a PS/2 keyboard. At bootup the >>> following messages are emitted: >>> >>> i8042: PNP: No PS/2 controller found. >>> i8042: PNP: Probing ports directly. >>> i8042: Can't read CTR while initializing i8042 >>> i8042: probe of i8042 failed with error -5 >>> >>> There are no PNP devices as those listed in `pnp_kbd_devids` but >>> i8042_pnp_init() ignores this and still runs and will continue to >>> try to probe. >>> >>> As there is no PS/2 keyboard or mouse in this laptop, set a quirk >>> to avoid this behavior. >> >> I believe the proper fix for this is for the firmware not report i8042 >> as present by properly setting up FADT. Please take a look at >> arch/x86/kernel/acpi/boot.c::acpi_parse_fadt() and how it sets flag >> X86_LEGACY_I8042_FIRMWARE_ABSENT. > > This is along the lines of a point I brought up in the v1 of this patch. > > https://lore.kernel.org/linux-input/87v89bgl7a.fsf@nvidia.com/ > > This means that Framework as a manufacturer will need to provide the > appropriate fix for what's advertised over ACPI by the device. I think > that makes sense instead of creating quirk combinations to avoid > resolving the issue at the ACPI level. I guess the only de-merit is that > means folks need to depend on vendors with no way to suppress this if a > vendor does not correct set up FADT. Got it, thanks guys. I'll raise this with them. > >> >> It will still say "PNP: No PS/2 controller found" which is an >> "informational" message, but should not try to probe ports directly and >> report errors. > > -- > Thanks, > > Rahul Rameshbabu
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h index 0fd88bbfaee1..6a71416057a3 100644 --- a/drivers/input/serio/i8042-acpipnpio.h +++ b/drivers/input/serio/i8042-acpipnpio.h @@ -1310,6 +1310,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, + /* Framework 16" laptop uses an internal USB keyboard */ + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Framework"), + DMI_MATCH(DMI_PRODUCT_NAME, "Laptop 16"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOKBD | SERIO_QUIRK_NOAUX) + }, { } };
The Framework 16" laptop doesn't have a PS/2 keyboard. At bootup the following messages are emitted: i8042: PNP: No PS/2 controller found. i8042: PNP: Probing ports directly. i8042: Can't read CTR while initializing i8042 i8042: probe of i8042 failed with error -5 There are no PNP devices as those listed in `pnp_kbd_devids` but i8042_pnp_init() ignores this and still runs and will continue to try to probe. As there is no PS/2 keyboard or mouse in this laptop, set a quirk to avoid this behavior. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- drivers/input/serio/i8042-acpipnpio.h | 8 ++++++++ 1 file changed, 8 insertions(+)