Page MenuHomeFreeBSD

x86: Fix lapic_ipi_alloc() on i386
ClosedPublic

Authored by markj on May 31 2021, 4:19 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Apr 22, 5:51 AM
Unknown Object (File)
Feb 12 2024, 12:26 PM
Unknown Object (File)
Feb 12 2024, 10:17 AM
Unknown Object (File)
Dec 31 2023, 12:53 PM
Unknown Object (File)
Dec 20 2023, 3:37 AM
Unknown Object (File)
Dec 17 2023, 2:19 PM
Unknown Object (File)
Dec 12 2023, 1:19 AM
Unknown Object (File)
Nov 30 2023, 5:28 AM
Subscribers

Details

Summary

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.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

But doesn't this mean that IDTVEC(rsdv) do not work and effectively unexpected interrupt would cause double fault?

In D30576#686743, @kib wrote:

But doesn't this mean that IDTVEC(rsdv) do not work and effectively unexpected interrupt would cause double fault?

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).

This revision is now accepted and ready to land.May 31 2021, 10:16 PM
This revision was automatically updated to reflect the committed changes.