opnsense-src/sys/dev/hyperv/vmbus
Mark Johnston df57775d7a hyperv: Fix vmbus after the i386 4/4 split
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 97993d1ebf)
2021-06-21 21:09:17 -04:00
..
amd64
i386 hyperv: Fix vmbus after the i386 4/4 split 2021-06-21 21:09:17 -04:00
hyperv.c
hyperv_busdma.c
hyperv_machdep.h
hyperv_reg.h
hyperv_var.h
vmbus.c hyperv: register intr handler as usermode-mapped if loaded as module 2021-06-12 19:58:02 +03:00
vmbus_br.c Fix i386 build for r361275 2020-05-20 13:51:27 +00:00
vmbus_brvar.h HyperV socket implementation for FreeBSD 2020-05-20 11:03:59 +00:00
vmbus_chan.c HyperV socket implementation for FreeBSD 2020-05-20 11:03:59 +00:00
vmbus_chanvar.h HyperV socket implementation for FreeBSD 2020-05-20 11:03:59 +00:00
vmbus_et.c
vmbus_if.m
vmbus_reg.h HyperV socket implementation for FreeBSD 2020-05-20 11:03:59 +00:00
vmbus_res.c
vmbus_var.h
vmbus_xact.c