mirror of
https://github.com/opnsense/src.git
synced 2026-05-12 00:49:10 -04:00
The vmbus ISR needs to live in a trampoline. Dynamically allocating a
trampoline at driver initialization time poses some difficulties due to
the fact that the KENTER macro assumes that the offset relative to
tramp_idleptd is fixed at static link time. Another problem 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.
Reported by: Harry Schmalzbauer <freebsd@omnilan.de>
Tested by: Harry Schmalzbauer <freebsd@omnilan.de>
Reviewed by: whu, kib
Sponsored by: The FreeBSD Foundation
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| amd64 | ||
| i386 | ||
| hyperv.c | ||
| hyperv_busdma.c | ||
| hyperv_machdep.h | ||
| hyperv_reg.h | ||
| hyperv_var.h | ||
| vmbus.c | ||
| vmbus_br.c | ||
| vmbus_brvar.h | ||
| vmbus_chan.c | ||
| vmbus_chanvar.h | ||
| vmbus_et.c | ||
| vmbus_if.m | ||
| vmbus_reg.h | ||
| vmbus_res.c | ||
| vmbus_var.h | ||
| vmbus_xact.c | ||