From: Wilken Gottwalt <wilken.gottwalt@posteo.net>
To: Armin Wolf <W_Armin@gmx.de>
Cc: jdelvare@suse.com, linux@roeck-us.net,
linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] hwmon: (corsair-psu) Fix probe when built-in
Date: Fri, 8 Dec 2023 06:48:02 +0000 [thread overview]
Message-ID: <20231208074802.56bb2d78@posteo.net> (raw)
In-Reply-To: <20231207210723.222552-1-W_Armin@gmx.de>
On Thu, 7 Dec 2023 22:07:23 +0100
Armin Wolf <W_Armin@gmx.de> wrote:
> It seems that when the driver is built-in, the HID bus is
> initialized after the driver is loaded, which whould cause
> module_hid_driver() to fail.
> Fix this by registering the driver after the HID bus using
> late_initcall() in accordance with other hwmon HID drivers.
>
> Compile-tested only.
So you did not test this? Well, I did.
[ 2.225831] Driver 'corsair-psu' was unable to register with bus_type 'hid' because the bus was not initialized.
[ 2.225835] amd_pstate: driver load is disabled, boot with specific mode to enable this
[ 2.226363] ledtrig-cpu: registered to indicate activity on CPUs
[ 2.226679] hid: raw HID events driver (C) Jiri Kosina
You are right, it is a timing issue and this can actually happen. I'm fine with
the fix.
Though, this could even be a bigger issue. There are currently 104 HID drivers
using the module_hid_driver macro. Maybe it would be a better idea to change the
module_hid_driver macro to use the lateinit calls instead of the plain init/exit
calls.
greetings,
Will
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> ---
> drivers/hwmon/corsair-psu.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/corsair-psu.c b/drivers/hwmon/corsair-psu.c
> index 904890598c11..2c7c92272fe3 100644
> --- a/drivers/hwmon/corsair-psu.c
> +++ b/drivers/hwmon/corsair-psu.c
> @@ -899,7 +899,23 @@ static struct hid_driver corsairpsu_driver = {
> .reset_resume = corsairpsu_resume,
> #endif
> };
> -module_hid_driver(corsairpsu_driver);
> +
> +static int __init corsair_init(void)
> +{
> + return hid_register_driver(&corsairpsu_driver);
> +}
> +
> +static void __exit corsair_exit(void)
> +{
> + hid_unregister_driver(&corsairpsu_driver);
> +}
> +
> +/*
> + * With module_init() the driver would load before the HID bus when
> + * built-in, so use late_initcall() instead.
> + */
> +late_initcall(corsair_init);
> +module_exit(corsair_exit);
>
> MODULE_LICENSE("GPL");
> MODULE_AUTHOR("Wilken Gottwalt <wilken.gottwalt@posteo.net>");
> --
> 2.39.2
>
next prev parent reply other threads:[~2023-12-08 6:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-07 21:07 [PATCH] hwmon: (corsair-psu) Fix probe when built-in Armin Wolf
2023-12-08 6:48 ` Wilken Gottwalt [this message]
2023-12-08 18:38 ` Guenter Roeck
2023-12-08 18:44 ` Wilken Gottwalt
2023-12-08 19:12 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231208074802.56bb2d78@posteo.net \
--to=wilken.gottwalt@posteo.net \
--cc=W_Armin@gmx.de \
--cc=jdelvare@suse.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.