svn commit: r354085 - in stable/12/sys/amd64/vmm: . amd
Alexander Motin
mav at FreeBSD.org
Fri Oct 25 17:54:38 UTC 2019
Author: mav
Date: Fri Oct 25 17:54:37 2019
New Revision: 354085
URL: https://svnweb.freebsd.org/changeset/base/354085
Log:
MFC r351591 (by jhb): Use get_pcpu() to fetch the current CPU's pcpu pointer.
This avoids encoding knowledge about how pcpu objects are allocated and is
also a few instructions shorter.
Modified:
stable/12/sys/amd64/vmm/amd/svm.c
stable/12/sys/amd64/vmm/vmm_host.h
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/amd64/vmm/amd/svm.c
==============================================================================
--- stable/12/sys/amd64/vmm/amd/svm.c Fri Oct 25 17:41:08 2019 (r354084)
+++ stable/12/sys/amd64/vmm/amd/svm.c Fri Oct 25 17:54:37 2019 (r354085)
@@ -102,9 +102,6 @@ SYSCTL_INT(_hw_vmm_svm, OID_AUTO, vmcb_clean, CTLFLAG_
static MALLOC_DEFINE(M_SVM, "svm", "svm");
static MALLOC_DEFINE(M_SVM_VLAPIC, "svm-vlapic", "svm-vlapic");
-/* Per-CPU context area. */
-extern struct pcpu __pcpu[];
-
static uint32_t svm_feature = ~0U; /* AMD SVM features. */
SYSCTL_UINT(_hw_vmm_svm, OID_AUTO, features, CTLFLAG_RDTUN, &svm_feature, 0,
"SVM features advertised by CPUID.8000000AH:EDX");
@@ -2054,7 +2051,7 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t
/* Launch Virtual Machine. */
VCPU_CTR1(vm, vcpu, "Resume execution at %#lx", state->rip);
svm_dr_enter_guest(gctx);
- svm_launch(vmcb_pa, gctx, &__pcpu[curcpu]);
+ svm_launch(vmcb_pa, gctx, get_pcpu());
svm_dr_leave_guest(gctx);
CPU_CLR_ATOMIC(curcpu, &pmap->pm_active);
Modified: stable/12/sys/amd64/vmm/vmm_host.h
==============================================================================
--- stable/12/sys/amd64/vmm/vmm_host.h Fri Oct 25 17:41:08 2019 (r354084)
+++ stable/12/sys/amd64/vmm/vmm_host.h Fri Oct 25 17:54:37 2019 (r354085)
@@ -72,14 +72,11 @@ vmm_get_host_gdtrbase(void)
return ((uint64_t)&gdt[NGDT * curcpu]);
}
-struct pcpu;
-extern struct pcpu __pcpu[];
-
static __inline uint64_t
vmm_get_host_gsbase(void)
{
- return ((uint64_t)&__pcpu[curcpu]);
+ return ((uint64_t)get_pcpu());
}
#endif
More information about the svn-src-all
mailing list