forked from mirrors/linux
		
	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 <brgl@bgdev.pl> Fixes:507fd01d53("drivers: move the early platform device support to arch/sh") Tested-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Rob Landley <rob@landley.net> Link: https://lore.kernel.org/r/20191203205852.15659-1-linux@roeck-us.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									51ba8b3a0e
								
							
						
					
					
						commit
						eecd37e105
					
				
					 2 changed files with 6 additions and 9 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Guenter Roeck
						Guenter Roeck