The loop which checks to see if "dynamic" IDT entries are allocated
needs to compare with the trampoline address of the reserved ISR.
Otherwise it will never succeed.
Details
Details
- Reviewers
kib - Commits
- rG18f55c67f746: x86: Fix lapic_ipi_alloc() on i386
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
But doesn't this mean that IDTVEC(rsdv) do not work and effectively unexpected interrupt would cause double fault?
Comment Actions
I could be missing something, but I think not. setidt() shifts the entry point address by setidt_disp before updating the IDT. The problem here is that when reading entries out of the IDT, we have to shift back before comparing with IDTVEC(foo).