cpu/x86/lapic/lapic.c: Set spurious interrupt vector to 0xF
The MP Specification v1.4 says to program the spurious interrupt in the following way: "The APIC spurious interrupt must point to a vector whose lower nibble is 0F, that is 0xF, where x is 0 - F. Here we use Int 00FH, which handles spurious interrupts and supplies the necessary IRET. This vector is assumed to have already been initialized in memory." Follow the requirement and set the spurious interrupt vector to 0x0F. This is what reference implementations, like EDK2, and also BIOS vendors do. Change-Id: I7bde413bbadca1de0079daf52b5501ba6638a4c3 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/89736 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
This commit is contained in:
parent
41348477e3
commit
8795680828
1 changed files with 2 additions and 2 deletions
|
|
@ -76,9 +76,9 @@ void setup_lapic_interrupts(void)
|
|||
*/
|
||||
lapic_update32(LAPIC_TASKPRI, ~LAPIC_TPRI_MASK, 0);
|
||||
|
||||
/* Set spurious interrupt vector to 0 and keep LAPIC enabled to
|
||||
/* Set spurious interrupt vector to 0xF and keep LAPIC enabled to
|
||||
be able to clear LVT register mask bits. */
|
||||
lapic_update32(LAPIC_SPIV, ~LAPIC_VECTOR_MASK, LAPIC_SPIV_ENABLE);
|
||||
lapic_update32(LAPIC_SPIV, ~LAPIC_VECTOR_MASK, LAPIC_SPIV_ENABLE | 0xF);
|
||||
|
||||
/* Put the local APIC in virtual wire mode */
|
||||
uint32_t mask = LAPIC_LVT_MASKED | LAPIC_LVT_LEVEL_TRIGGER | LAPIC_INPUT_POLARITY |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue