mirror of
https://github.com/opnsense/src.git
synced 2026-06-04 06:15:33 -04:00
vmx: Prefer consistent naming for loader tunables
The following loader tunables do have corresponding sysctl MIBs but
with different names. That may be historical reason. Let's prefer
consistent naming for them so that it will be easier to read and
maintain.
1. hw.vmm.l1d_flush -> hw.vmm.vmx.l1d_flush
2. hw.vmm.l1d_flush_sw -> hw.vmm.vmx.l1d_flush_sw
3. hw.vmm.vmx.use_apic_pir -> hw.vmm.vmx.cap.posted_interrupts
4. hw.vmm.vmx.use_apic_vid -> hw.vmm.vmx.cap.virtual_interrupt_delivery
5. hw.vmm.vmx.use_tpr_shadowing -> hw.vmm.vmx.cap.tpr_shadowing
Old names are kept for compatibility.
Meanwhile, add sysctl flag CTLFLAG_TUN to them so that `sysctl -T` will
report them correctly.
Reviewed by: corvink, jhb, kib, #bhyve
MFC after: 5 days
Differential Revision: https://reviews.freebsd.org/D42251
(cherry picked from commit f3ff0918ff)
This commit is contained in:
parent
ede6fd0672
commit
9e48b627ae
1 changed files with 27 additions and 5 deletions
|
|
@ -192,15 +192,18 @@ SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, invpcid, CTLFLAG_RD, &cap_invpcid,
|
|||
0, "Guests are allowed to use INVPCID");
|
||||
|
||||
static int tpr_shadowing;
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, tpr_shadowing, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, tpr_shadowing,
|
||||
CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
|
||||
&tpr_shadowing, 0, "TPR shadowing support");
|
||||
|
||||
static int virtual_interrupt_delivery;
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, virtual_interrupt_delivery, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, virtual_interrupt_delivery,
|
||||
CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
|
||||
&virtual_interrupt_delivery, 0, "APICv virtual interrupt delivery support");
|
||||
|
||||
static int posted_interrupts;
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, posted_interrupts, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, posted_interrupts,
|
||||
CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
|
||||
&posted_interrupts, 0, "APICv posted interrupt support");
|
||||
|
||||
static int pirvec = -1;
|
||||
|
|
@ -213,10 +216,10 @@ SYSCTL_UINT(_hw_vmm_vmx, OID_AUTO, vpid_alloc_failed, CTLFLAG_RD,
|
|||
&vpid_alloc_failed, 0, NULL);
|
||||
|
||||
int guest_l1d_flush;
|
||||
SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, l1d_flush, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, l1d_flush, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
|
||||
&guest_l1d_flush, 0, NULL);
|
||||
int guest_l1d_flush_sw;
|
||||
SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, l1d_flush_sw, CTLFLAG_RD,
|
||||
SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, l1d_flush_sw, CTLFLAG_RDTUN | CTLFLAG_NOFETCH,
|
||||
&guest_l1d_flush_sw, 0, NULL);
|
||||
|
||||
static struct msr_entry msr_load_list[1] __aligned(16);
|
||||
|
|
@ -832,8 +835,12 @@ vmx_modinit(int ipinum)
|
|||
&tmp);
|
||||
if (error == 0) {
|
||||
tpr_shadowing = 1;
|
||||
#ifndef BURN_BRIDGES
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.use_tpr_shadowing",
|
||||
&tpr_shadowing);
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.cap.tpr_shadowing",
|
||||
&tpr_shadowing);
|
||||
}
|
||||
|
||||
if (tpr_shadowing) {
|
||||
|
|
@ -854,8 +861,12 @@ vmx_modinit(int ipinum)
|
|||
procbased2_vid_bits, 0, &tmp);
|
||||
if (error == 0 && tpr_shadowing) {
|
||||
virtual_interrupt_delivery = 1;
|
||||
#ifndef BURN_BRIDGES
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.use_apic_vid",
|
||||
&virtual_interrupt_delivery);
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.cap.virtual_interrupt_delivery",
|
||||
&virtual_interrupt_delivery);
|
||||
}
|
||||
|
||||
if (virtual_interrupt_delivery) {
|
||||
|
|
@ -881,8 +892,12 @@ vmx_modinit(int ipinum)
|
|||
}
|
||||
} else {
|
||||
posted_interrupts = 1;
|
||||
#ifndef BURN_BRIDGES
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.use_apic_pir",
|
||||
&posted_interrupts);
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.cap.posted_interrupts",
|
||||
&posted_interrupts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -899,7 +914,10 @@ vmx_modinit(int ipinum)
|
|||
|
||||
guest_l1d_flush = (cpu_ia32_arch_caps &
|
||||
IA32_ARCH_CAP_SKIP_L1DFL_VMENTRY) == 0;
|
||||
#ifndef BURN_BRIDGES
|
||||
TUNABLE_INT_FETCH("hw.vmm.l1d_flush", &guest_l1d_flush);
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.l1d_flush", &guest_l1d_flush);
|
||||
|
||||
/*
|
||||
* L1D cache flush is enabled. Use IA32_FLUSH_CMD MSR when
|
||||
|
|
@ -911,8 +929,12 @@ vmx_modinit(int ipinum)
|
|||
if (guest_l1d_flush) {
|
||||
if ((cpu_stdext_feature3 & CPUID_STDEXT3_L1D_FLUSH) == 0) {
|
||||
guest_l1d_flush_sw = 1;
|
||||
#ifndef BURN_BRIDGES
|
||||
TUNABLE_INT_FETCH("hw.vmm.l1d_flush_sw",
|
||||
&guest_l1d_flush_sw);
|
||||
#endif
|
||||
TUNABLE_INT_FETCH("hw.vmm.vmx.l1d_flush_sw",
|
||||
&guest_l1d_flush_sw);
|
||||
}
|
||||
if (guest_l1d_flush_sw) {
|
||||
if (nmi_flush_l1d_sw <= 1)
|
||||
|
|
|
|||
Loading…
Reference in a new issue