All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] platform/surface: aggregator: Fix initialization order when compiling as builtin module
@ 2022-04-29 19:57 Maximilian Luz
  2022-05-06 10:16 ` Hans de Goede
  0 siblings, 1 reply; 2+ messages in thread
From: Maximilian Luz @ 2022-04-29 19:57 UTC (permalink / raw)
  To: Hans de Goede, Mark Gross, platform-driver-x86, linux-kernel
  Cc: Maximilian Luz, Blaž Hrastnik

When building the Surface Aggregator Module (SAM) core, registry, and
other SAM client drivers as builtin modules (=y), proper initialization
order is not guaranteed. Due to this, client driver registration
(triggered by device registration in the registry) races against bus
initialization in the core.

If any attempt is made at registering the device driver before the bus
has been initialized (i.e. if bus initialization fails this race) driver
registration will fail with a message similar to:

    Driver surface_battery was unable to register with bus_type surface_aggregator because the bus was not initialized

Switch from module_init() to subsys_initcall() to resolve this issue.
Note that the serdev subsystem uses postcore_initcall() so we are still
able to safely register the serdev device driver for the core.

Fixes: c167b9c7e3d6 ("platform/surface: Add Surface Aggregator subsystem")
Reported-by: Blaž Hrastnik <blaz@mxxn.io>
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
---
 drivers/platform/surface/aggregator/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/surface/aggregator/core.c b/drivers/platform/surface/aggregator/core.c
index d384d36098c2..a62c5dfe42d6 100644
--- a/drivers/platform/surface/aggregator/core.c
+++ b/drivers/platform/surface/aggregator/core.c
@@ -817,7 +817,7 @@ static int __init ssam_core_init(void)
 err_bus:
 	return status;
 }
-module_init(ssam_core_init);
+subsys_initcall(ssam_core_init);
 
 static void __exit ssam_core_exit(void)
 {
-- 
2.36.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] platform/surface: aggregator: Fix initialization order when compiling as builtin module
  2022-04-29 19:57 [PATCH] platform/surface: aggregator: Fix initialization order when compiling as builtin module Maximilian Luz
@ 2022-05-06 10:16 ` Hans de Goede
  0 siblings, 0 replies; 2+ messages in thread
From: Hans de Goede @ 2022-05-06 10:16 UTC (permalink / raw)
  To: Maximilian Luz, Mark Gross, platform-driver-x86, linux-kernel
  Cc: Blaž Hrastnik

Hi,

On 4/29/22 21:57, Maximilian Luz wrote:
> When building the Surface Aggregator Module (SAM) core, registry, and
> other SAM client drivers as builtin modules (=y), proper initialization
> order is not guaranteed. Due to this, client driver registration
> (triggered by device registration in the registry) races against bus
> initialization in the core.
> 
> If any attempt is made at registering the device driver before the bus
> has been initialized (i.e. if bus initialization fails this race) driver
> registration will fail with a message similar to:
> 
>     Driver surface_battery was unable to register with bus_type surface_aggregator because the bus was not initialized
> 
> Switch from module_init() to subsys_initcall() to resolve this issue.
> Note that the serdev subsystem uses postcore_initcall() so we are still
> able to safely register the serdev device driver for the core.
> 
> Fixes: c167b9c7e3d6 ("platform/surface: Add Surface Aggregator subsystem")
> Reported-by: Blaž Hrastnik <blaz@mxxn.io>
> Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>

Thank you for your patch, I've applied this patch to my review-hans 
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans



> ---
>  drivers/platform/surface/aggregator/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/surface/aggregator/core.c b/drivers/platform/surface/aggregator/core.c
> index d384d36098c2..a62c5dfe42d6 100644
> --- a/drivers/platform/surface/aggregator/core.c
> +++ b/drivers/platform/surface/aggregator/core.c
> @@ -817,7 +817,7 @@ static int __init ssam_core_init(void)
>  err_bus:
>  	return status;
>  }
> -module_init(ssam_core_init);
> +subsys_initcall(ssam_core_init);
>  
>  static void __exit ssam_core_exit(void)
>  {


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-05-06 10:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-29 19:57 [PATCH] platform/surface: aggregator: Fix initialization order when compiling as builtin module Maximilian Luz
2022-05-06 10:16 ` Hans de Goede

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.