amd/pi/hudson: Move APIC enable to CPU file
Relocate the enabling of the LAPIC out of the southbridge source and surround it with a check for CONFIG_UDELAY_LAPIC (typical for AMD systems). The LAPIC is now enabled for all cores; not only the BSP, and not only when the UART is used. This solves the problem of APs not having their APICs enabled when the timer is expected to be functional, e.g. verstage often uses do_printk_va_list() instead of do_printk() which exits early for APs when CONFIG_SQUELCH_EARLY_SMP=y. The changes were tested with two Gardenia builds, one using verstage and another with CONFIG_SQUELCH_EARLY_SMP=n. Original-Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Original-Reviewed-by: Marc Jones <marcj303@gmail.com> (cherry picked from commit 93ffc311165f19d4192a5489051fa4264cd8e0ad) Change-Id: Ieaecc0bf921ee0d2691a8082f2431ea4d0c33749 Signed-off-by: Marc Jones <marcj303@gmail.com> Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Reviewed-on: https://review.coreboot.org/18436 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Marc Jones
						Marc Jones
					
				
			
			
				
	
			
			
			
						parent
						
							a0891ee367
						
					
				
				
					commit
					03e6a455a3
				
			| @@ -77,4 +77,10 @@ void amd_initmmio(void) | ||||
| 	LibAmdMsrWrite (0x20C, &MsrReg, &StdHeader); | ||||
| 	MsrReg = ((1ULL << CONFIG_CPU_ADDR_BITS) - CACHE_ROM_SIZE) | 0x800ull; | ||||
| 	LibAmdMsrWrite (0x20D, &MsrReg, &StdHeader); | ||||
|  | ||||
| 	if (IS_ENABLED(CONFIG_UDELAY_LAPIC)){ | ||||
| 		LibAmdMsrRead(0x1B, &MsrReg, &StdHeader); | ||||
| 		MsrReg |= 1 << 11; | ||||
| 		LibAmdMsrWrite(0x1B, &MsrReg, &StdHeader); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -84,4 +84,10 @@ void amd_initmmio(void) | ||||
| 	LibAmdMsrWrite (0x20C, &MsrReg, &StdHeader); | ||||
| 	MsrReg = ((1ULL << CONFIG_CPU_ADDR_BITS) - CACHE_ROM_SIZE) | 0x800ull; | ||||
| 	LibAmdMsrWrite (0x20D, &MsrReg, &StdHeader); | ||||
|  | ||||
| 	if (IS_ENABLED(CONFIG_UDELAY_LAPIC)){ | ||||
| 		LibAmdMsrRead(0x1B, &MsrReg, &StdHeader); | ||||
| 		MsrReg |= 1 << 11; | ||||
| 		LibAmdMsrWrite(0x1B, &MsrReg, &StdHeader); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -88,4 +88,10 @@ void amd_initmmio(void) | ||||
| 	MsrReg = ((1ULL << CONFIG_CPU_ADDR_BITS) - CACHE_ROM_SIZE) | \ | ||||
| 		0x800ull; | ||||
| 	LibAmdMsrWrite(0x20D, &MsrReg, &StdHeader); | ||||
|  | ||||
| 	if (IS_ENABLED(CONFIG_UDELAY_LAPIC)){ | ||||
| 		LibAmdMsrRead(0x1B, &MsrReg, &StdHeader); | ||||
| 		MsrReg |= 1 << 11; | ||||
| 		LibAmdMsrWrite(0x1B, &MsrReg, &StdHeader); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -89,4 +89,10 @@ void amd_initmmio(void) | ||||
| 	LibAmdMsrWrite (0x20C, &MsrReg, &StdHeader); | ||||
| 	MsrReg = ((1ULL << CONFIG_CPU_ADDR_BITS) - CACHE_ROM_SIZE) | 0x800ull; | ||||
| 	LibAmdMsrWrite (0x20D, &MsrReg, &StdHeader); | ||||
|  | ||||
| 	if (IS_ENABLED(CONFIG_UDELAY_LAPIC)){ | ||||
| 		LibAmdMsrRead(0x1B, &MsrReg, &StdHeader); | ||||
| 		MsrReg |= 1 << 11; | ||||
| 		LibAmdMsrWrite(0x1B, &MsrReg, &StdHeader); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user