Dear Expert,
I see in file OvmfPkg\Sec\SecMain.c, line 810:
//
// Initialize Local APIC Timer hardware and disable Local APIC Timer
// interrupts before initializing the Debug Agent and the debug timer is
// enabled.
//
InitializeApicTimer (0, MAX_UINT32, TRUE, 5);
DisableApicTimerInterrupt ();
Ovmf initializes apic timer and give it a vector number 5, according to "Intel®
64 and IA-32 Architectures Software Developer’s Manual", vol 3, 10.5.2 Valid
Interrupt Vectors:
When an interrupt vector in the range of 0 to 15 is sent or received through
the local APIC, the APIC indicates an
illegal vector in its Error Status Register (see Section 10.5.3, “Error
Handling”). The Intel 64 and IA-32 architec-
tures reserve vectors 16 through 31 for predefined interrupts, exceptions, and
Intel-reserved encodings (see Table
6-1). However, the local APIC does not treat vectors in this range as illegal.
When an illegal vector value (0 to 15)
is written to an LVT entry and the delivery mode is Fixed (bits 8-11 equal 0),
the APIC may signal an illegal vector
error, without regard to whether the mask bit is set or whether an interrupt is
actually seen on the input.
So here "vector 5" is a fake value, right? we just want to let timer be
running, and we can fill it with 6, 7, 8, also?
If next function "DisableApicTimerInterrupt()" does not invoke, a interrupt
will be occurred when current timer value
down to Zero?
And I see CPU Interrupt 5 is "BOUND Range Exceeded Exception" for BOUND
instruction.
Thanks.
------------------
BR
winddy_zhang
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel