powerpc/powernv: Workaround OFW issues in prom_init.c
Open Firmware on OPAL machines seems to have issues if we close stdin and/or we try to print things after calling "quiesce" so we avoid doing both. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
		
							parent
							
								
									cee72d5bb4
								
							
						
					
					
						commit
						40dfef66a9
					
				| @ -2969,9 +2969,11 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, | |||||||
| 	/*
 | 	/*
 | ||||||
| 	 * in case stdin is USB and still active on IBM machines... | 	 * in case stdin is USB and still active on IBM machines... | ||||||
| 	 * Unfortunately quiesce crashes on some powermacs if we have | 	 * Unfortunately quiesce crashes on some powermacs if we have | ||||||
| 	 * closed stdin already (in particular the powerbook 101). | 	 * closed stdin already (in particular the powerbook 101). It | ||||||
|  | 	 * appears that the OPAL version of OFW doesn't like it either. | ||||||
| 	 */ | 	 */ | ||||||
| 	if (RELOC(of_platform) != PLATFORM_POWERMAC) | 	if (RELOC(of_platform) != PLATFORM_POWERMAC && | ||||||
|  | 	    RELOC(of_platform) != PLATFORM_OPAL) | ||||||
| 		prom_close_stdin(); | 		prom_close_stdin(); | ||||||
| 
 | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| @ -2987,8 +2989,12 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, | |||||||
| 	 * is common to us and kexec | 	 * is common to us and kexec | ||||||
| 	 */ | 	 */ | ||||||
| 	hdr = RELOC(dt_header_start); | 	hdr = RELOC(dt_header_start); | ||||||
| 	prom_printf("returning from prom_init\n"); | 
 | ||||||
| 	prom_debug("->dt_header_start=0x%x\n", hdr); | 	/* Don't print anything after quiesce under OPAL, it crashes OFW */ | ||||||
|  | 	if (RELOC(of_platform) != PLATFORM_OPAL) { | ||||||
|  | 		prom_printf("returning from prom_init\n"); | ||||||
|  | 		prom_debug("->dt_header_start=0x%x\n", hdr); | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_PPC32 | #ifdef CONFIG_PPC32 | ||||||
| 	reloc_got2(-offset); | 	reloc_got2(-offset); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user