freebsd-dev/sys/i386
Mark Johnston 97993d1ebf 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
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D30577
2021-06-08 09:40:30 -04:00
..
acpica acpi: Make nexus_acpi quiet on amd64 and i386 2021-03-05 12:54:00 -05:00
bios Add CFI start/end proc directives to arm64, i386, and ppc 2020-12-05 00:33:28 +00:00
cloudabi32 Get rid of sa->narg. It serves no purpose; use sa->callp->sy_narg instead. 2020-09-27 18:47:06 +00:00
conf hyperv: Fix vmbus after the i386 4/4 split 2021-06-08 09:40:30 -04:00
i386 hyperv: Fix vmbus after the i386 4/4 split 2021-06-08 09:40:30 -04:00
include i386: Make setidt_disp a size_t instead of uintptr_t 2021-06-01 19:37:50 -04:00
linux linuxolator: Add compat.linux.setid_allowed knob 2021-06-06 21:43:00 +03:00
pci i386: clean up empty lines in .c and .h files 2020-09-01 21:19:39 +00:00
Makefile Remove iBCS2, part2: general kernel 2018-12-19 21:57:58 +00:00