freebsd-dev/sys/amd64
John Baldwin 769b884e2e vmm: Fix AP startup with old userspace binaries.
Older binaries that do not request IPI exits to userspace do not
start user threads for other vCPUs until a STARTUP IPI triggers a
VM_EXITCODE_SPINUP_AP exit to userland.  This means that those vcpus
are not yet active (in terms of vm_active_cpus) when the INIT and
STARTUP IPIs are delivered to the vCPUs.

The changes in commit 0bda8d3e9f changed the INIT and STARTUP IPIs
to reuse the existing vlapic_calcdest() function.  This function
silently ignores IPIs sent to inactive vCPUs.  As a result, when using
an old bhyve binary, the INIT and STARTUP IPIs sent to wakeup APs were
ignored.

To fix, restructure the compat code for the INIT and STARTUP IPIs to
ignore the results of vlapic_calcdest() and manually parse the APIC ID
and resulting vcpuid.  As part of this, make the compat code always
conditonal on the ipi_exit capability being disabled.

Reviewed by:	c.koehne_beckhoff.com, markj
Differential Revision:	https://reviews.freebsd.org/D37093
2022-10-26 14:22:56 -07:00
..
acpica pmap_unmapdev/bios: Accept a pointer instead of a vm_offset_t. 2022-09-22 15:08:52 -07:00
amd64 Add vm_page_any_valid() 2022-10-19 20:24:07 +03:00
conf amd64: Add FIRECRACKER kernel configuration 2022-10-17 23:02:22 -07:00
ia32 Introduce the PROC_SIGCODE() macro 2022-07-18 16:27:26 +02:00
include vmm: permit some IPIs to be handled by userspace 2022-10-14 12:03:05 +02:00
linux Rework how shared page related data is stored 2022-07-18 16:27:32 +02:00
linux32 linux32: binutils as requires %eflags instead of %flags for CFI. 2022-09-29 15:06:01 -07:00
pci pci_cfgreg.c: Use io port config access for early boot time. 2019-04-09 18:07:17 +00:00
sgx sgx: Remove unused variable. 2022-04-07 17:01:28 -07:00
vmm vmm: Fix AP startup with old userspace binaries. 2022-10-26 14:22:56 -07:00
Makefile Bring the tags and links entries for amd64 up to date. 2021-09-27 20:04:51 -07:00