opnsense-src/sys/amd64/vmm/amd
Corvin Köhne 892feec221
vmm: avoid spurious rendezvous
A vcpu only checks if a rendezvous is in progress or not to decide if it
should handle a rendezvous. This could lead to spurios rendezvous where
a vcpu tries a handle a rendezvous it isn't part of. This situation is
properly handled by vm_handle_rendezvous but it could potentially
degrade the performance. Avoid that by an early check if the vcpu is
part of the rendezvous or not.

At the moment, rendezvous are only used to spin up application
processors and to send ioapic interrupts. Spinning up application
processors is done in the guest boot phase by sending INIT SIPI
sequences to single vcpus. This is known to cause spurious rendezvous
and only occurs in the boot phase. Sending ioapic interrupts is rare
because modern guest will use msi and the rendezvous is always send to
all vcpus.

Reviewed by:		jhb
MFC after:		1 week
Sponsored by:		Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D37390
2023-02-01 12:36:36 +01:00
..
amdiommu.c amd64: Remove unused devclass arguments to DRIVER_MODULE. 2022-05-06 15:46:59 -07:00
amdv.c sys/amd64: further adoption of SPDX licensing ID tags. 2017-11-27 15:03:07 +00:00
amdvi_hw.c vmm: fix set but not used warning 2022-04-10 10:30:05 -08:00
amdvi_priv.h vmm: Fix AMD-vi using wrong rid range 2021-07-14 01:53:10 +08:00
ivhd_if.m Correct "Fondation" typo (missing "u") 2021-03-22 13:06:31 -04:00
ivrs_drv.c amd64: Remove unused devclass arguments to DRIVER_MODULE. 2022-05-06 15:46:59 -07:00
npt.c amd64: clean up empty lines in .c and .h files 2020-09-01 21:16:54 +00:00
npt.h Add SPDX tags to vmm(4). 2018-06-13 07:02:58 +00:00
svm.c vmm: avoid spurious rendezvous 2023-02-01 12:36:36 +01:00
svm.h vmm: Pass vcpu instead of vm and vcpuid to APIs used from CPU backends. 2022-11-18 10:25:37 -08:00
svm_genassym.c Add SPDX tags to vmm(4). 2018-06-13 07:02:58 +00:00
svm_msr.c vmm: Pass vcpu instead of vm and vcpuid to APIs used from CPU backends. 2022-11-18 10:25:37 -08:00
svm_msr.h vmm: Pass vcpu instead of vm and vcpuid to APIs used from CPU backends. 2022-11-18 10:25:37 -08:00
svm_softc.h vmm: Expose struct vcpu as an opaque type. 2022-11-18 10:25:36 -08:00
svm_support.S Remove manual instruction encodings for VMLOAD, VMRUN, and VMSAVE. 2020-11-26 05:58:55 +00:00
vmcb.c vmm svm: Add SVM_CTR* wrapper macros. 2022-11-18 10:25:36 -08:00
vmcb.h vmm: Remove the per-vm cookie argument from vmmops taking a vcpu. 2022-11-18 10:25:35 -08:00