Re: Delaying i8042 probe?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 05 Oct 2021 17:43:23 +0200,
Takashi Iwai wrote:
> 
> On Thu, 16 Sep 2021 11:22:03 +0200,
> Takashi Iwai wrote:
> > 
> > On Sun, 12 Sep 2021 00:54:55 +0200,
> > Dmitry Torokhov wrote:
> > > 
> > > Hi Fabio,
> > > 
> > > On Sat, Sep 11, 2021 at 03:50:25PM -0300, Fabio Estevam wrote:
> > > > On Sat, Sep 11, 2021 at 3:43 PM Fabio Estevam <festevam@xxxxxxxxx> wrote:
> > > > >
> > > > > On Sat, Sep 11, 2021 at 4:32 AM Takashi Iwai <tiwai@xxxxxxx> wrote:
> > > > >
> > > > > > OK, I'll update and let the reporter testing it.
> > > > >
> > > > > Sorry, platform_device_alloc() and platform_device_add() were missing
> > > > > in the earlier patch.
> > > > >
> > > > > New patch atached.
> > > > >
> > > > > Dmitry, does this look correct?
> > > > 
> > > > Please consider this one instead.
> > > 
> > > This is unfortunately is a band-aid. I wonder what other driver pokes
> > > the embedded controller on these devices for it to start responding to
> > > 8042 queries...
> > > 
> > > Does the laptop have the latest BIOS? I wonder what ACPI tables look
> > > like.
> > 
> > ACPI dump is included in hwinfo output,
> >   https://bugzilla.suse.com/show_bug.cgi?id=1190256#c1
> > 
> > If other format is required, let me know.  I thought this could be a
> > typical pinctrl thing, alas it doesn't look so.  The pinctrl-amd is
> > also built-in, and it's initialized before the input stuff...
> > 
> > And about BIOS: I don't think we can expect every user updates BIOS.
> > This report is not alone; as I checked through net, there have been a
> > few other reports for other distros like Arch.  On Arch, they "fixed"
> > the problem by reverting the config from built-in to modules (the bug
> > surfaced after their kconfig changes).
> > 
> > That said, even if it's a band-aid, we need some fix.  Can the
> > deferred probe be applied in some restricted manner, e.g. only for the
> > known buggy devices (and/or module option) and cap the max repeats?
> 
> Dmitry, what is your take for fixing this bug?  

Any news for this?  The bug seem still there unfixed.


thanks,

Takashi

> I find Fabio's deferred probe patch reasonable.  Maybe we may restrict
> the application of the deferred probe only for known working devices
> and an option, something like a patch below, just to be safer.
> (There are devices exposing PnP for i8042 although there isn't really,
> IIRC.)
> 
> 
> thanks,
> 
> Takashi
> 
> -- 8< --
> From: Takashi Iwai <tiwai@xxxxxxx>
> Subject: [PATCH] Input: i8042 - Perform deferred probe only with DMI list and
>  option
> 
> Add an i8042.probe_defer option to enable the deferred probing
> feature, otherwise it'll be disabled and done in a single shot like
> before.  For the known devices that need the deferred probe, we
> provide a DMI-based allow-list.  As of this patch, ASUS ZenBook
> UX425UA is added there.
> 
> BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1190256
> Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> ---
>  Documentation/admin-guide/kernel-parameters.txt |  2 ++
>  drivers/input/serio/i8042-x86ia64io.h           | 14 ++++++++++++++
>  drivers/input/serio/i8042.c                     |  6 +++++-
>  3 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index 91ba391f9b32..6e6622d8f4a0 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -1690,6 +1690,8 @@
>  			architectures force reset to be always executed
>  	i8042.unlock	[HW] Unlock (ignore) the keylock
>  	i8042.kbdreset	[HW] Reset device connected to KBD port
> +	i8042.probe_defer
> +			[HW] Allow deferred probing upon i8042 probe errors
>  
>  	i810=		[HW,DRM]
>  
> diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
> index a5a003553646..41335a1d7001 100644
> --- a/drivers/input/serio/i8042-x86ia64io.h
> +++ b/drivers/input/serio/i8042-x86ia64io.h
> @@ -981,6 +981,17 @@ static const struct dmi_system_id __initconst i8042_dmi_kbdreset_table[] = {
>  	{ }
>  };
>  
> +static const struct dmi_system_id i8042_dmi_probe_defer_table[] __initconst = {
> +	{
> +		/* ASUS ZenBook UX425UA */
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425UA"),
> +		},
> +	},
> +	{ }
> +};
> +
>  #endif /* CONFIG_X86 */
>  
>  #ifdef CONFIG_PNP
> @@ -1301,6 +1312,9 @@ static int __init i8042_platform_init(void)
>  	if (dmi_check_system(i8042_dmi_kbdreset_table))
>  		i8042_kbdreset = true;
>  
> +	if (dmi_check_system(i8042_dmi_probe_defer_table))
> +		i8042_probe_defer = true;
> +
>  	/*
>  	 * A20 was already enabled during early kernel init. But some buggy
>  	 * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
> diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
> index a72a8c538164..ea0c52ca95c4 100644
> --- a/drivers/input/serio/i8042.c
> +++ b/drivers/input/serio/i8042.c
> @@ -45,6 +45,10 @@ static bool i8042_unlock;
>  module_param_named(unlock, i8042_unlock, bool, 0);
>  MODULE_PARM_DESC(unlock, "Ignore keyboard lock.");
>  
> +static bool i8042_probe_defer;
> +module_param_named(probe_defer, i8042_probe_defer, bool, 0);
> +MODULE_PARM_DESC(unlock, "Allow deferred probing.");
> +
>  enum i8042_controller_reset_mode {
>  	I8042_RESET_NEVER,
>  	I8042_RESET_ALWAYS,
> @@ -1005,7 +1009,7 @@ static int i8042_controller_init(void)
>  
>  		if (i8042_command(&ctr[n++ % 2], I8042_CMD_CTL_RCTR)) {
>  			pr_err("Can't read CTR while initializing i8042\n");
> -			return -EPROBE_DEFER;
> +			return i8042_probe_defer ? -EPROBE_DEFER : -EIO;
>  		}
>  
>  	} while (n < 2 || ctr[0] != ctr[1]);
> -- 
> 2.31.1
> 



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux