Page MenuHomeFreeBSD

hyperv: Fix vmbus(4) after the i386 4/4 split
ClosedPublic

Authored by markj on May 31 2021, 4:19 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Dec 12, 1:49 AM
Unknown Object (File)
Wed, Dec 11, 9:45 PM
Unknown Object (File)
Tue, Nov 26, 11:27 AM
Unknown Object (File)
Nov 24 2024, 6:31 PM
Unknown Object (File)
Nov 23 2024, 11:31 PM
Unknown Object (File)
Nov 20 2024, 11:00 PM
Unknown Object (File)
Nov 20 2024, 12:28 PM
Unknown Object (File)
Nov 19 2024, 10:45 AM
Subscribers

Details

Summary

The Hyper-V ISR needs to live in a trampoline. Initially I tried
allocating a separate trampoline for it but it got somewhat complicated,
mainly due to the fact that the KENTER macro does not work in this
situation. In particular, it seems that LOAD_CR3's implementation
depends on having a fixed offset relative to tramp_idleptd. Another
detail is that native_lapic_ipi_alloc() uses setidt(), which assumes
a fixed trampoline offset.

Rather than fight this, move the Hyper-V ISR to i386/exception.s. Add a
new HYPERV kernel option to make this optional, and configure it by
default on i386. This is sufficient to make use of vmbus(4) after the
4/4 split. Note that vmbus cannot be loaded dynamically and both the
HYPERV option and device must be configured together. I think this is
not too onerous a requirement, since vmbus(4) was previously
non-functional.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 39599
Build 36488: arc lint + arc unit