mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 22:37:45 -04:00
drivers: Fix boot problem on SuperH
SuperH images crash too eearly to display any console output. Bisect points to commit507fd01d53("drivers: move the early platform device support to arch/sh"). An analysis of that patch suggests that early_platform_cleanup() is now called at the wrong time. Restoring its call point fixes the problem. Cc: Bartosz Golaszewski <[email protected]> Fixes:507fd01d53("drivers: move the early platform device support to arch/sh") Tested-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Guenter Roeck <[email protected]> Acked-by: Rob Landley <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
1 parent
51ba8b3a0e
commit
eecd37e105
2 files changed
+6
-9
No files matched your search
@@ -325,9 +325,9 @@ int __init sh_early_platform_driver_probe(char *class_str,
|
||||
}
|
||||
|
||||
/**
|
||||
* sh_early_platform_cleanup - clean up early platform code
|
||||
* early_platform_cleanup - clean up early platform code
|
||||
*/
|
||||
static int __init sh_early_platform_cleanup(void)
|
||||
void __init early_platform_cleanup(void)
|
||||
{
|
||||
struct platform_device *pd, *pd2;
|
||||
|
||||
@@ -337,11 +337,4 @@ static int __init sh_early_platform_cleanup(void)
|
||||
list_del(&pd->dev.devres_head);
|
||||
memset(&pd->dev.devres_head, 0, sizeof(pd->dev.devres_head));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* This must happen once after all early devices are probed but before probing
|
||||
* real platform devices.
|
||||
*/
|
||||
subsys_initcall(sh_early_platform_cleanup);
|
||||
@@ -1325,10 +1325,14 @@ struct device *platform_find_device_by_driver(struct device *start,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(platform_find_device_by_driver);
|
||||
|
||||
void __weak __init early_platform_cleanup(void) { }
|
||||
|
||||
int __init platform_bus_init(void)
|
||||
{
|
||||
int error;
|
||||
|
||||
early_platform_cleanup();
|
||||
|
||||
error = device_register(&platform_bus);
|
||||
if (error) {
|
||||
put_device(&platform_bus);
|
||||
|
||||
Reference in new issue
Block a user