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. MFC after: 2 weeks
This commit is contained in:
parent
0baf15253f
commit
9417bccc92
@ -102,9 +102,6 @@ SYSCTL_INT(_hw_vmm_svm, OID_AUTO, vmcb_clean, CTLFLAG_RDTUN, &vmcb_clean,
|
|||||||
static MALLOC_DEFINE(M_SVM, "svm", "svm");
|
static MALLOC_DEFINE(M_SVM, "svm", "svm");
|
||||||
static MALLOC_DEFINE(M_SVM_VLAPIC, "svm-vlapic", "svm-vlapic");
|
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. */
|
static uint32_t svm_feature = ~0U; /* AMD SVM features. */
|
||||||
SYSCTL_UINT(_hw_vmm_svm, OID_AUTO, features, CTLFLAG_RDTUN, &svm_feature, 0,
|
SYSCTL_UINT(_hw_vmm_svm, OID_AUTO, features, CTLFLAG_RDTUN, &svm_feature, 0,
|
||||||
"SVM features advertised by CPUID.8000000AH:EDX");
|
"SVM features advertised by CPUID.8000000AH:EDX");
|
||||||
@ -2054,7 +2051,7 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
|
|||||||
/* Launch Virtual Machine. */
|
/* Launch Virtual Machine. */
|
||||||
VCPU_CTR1(vm, vcpu, "Resume execution at %#lx", state->rip);
|
VCPU_CTR1(vm, vcpu, "Resume execution at %#lx", state->rip);
|
||||||
svm_dr_enter_guest(gctx);
|
svm_dr_enter_guest(gctx);
|
||||||
svm_launch(vmcb_pa, gctx, &__pcpu[curcpu]);
|
svm_launch(vmcb_pa, gctx, get_pcpu());
|
||||||
svm_dr_leave_guest(gctx);
|
svm_dr_leave_guest(gctx);
|
||||||
|
|
||||||
CPU_CLR_ATOMIC(curcpu, &pmap->pm_active);
|
CPU_CLR_ATOMIC(curcpu, &pmap->pm_active);
|
||||||
|
@ -72,14 +72,11 @@ vmm_get_host_gdtrbase(void)
|
|||||||
return ((uint64_t)&gdt[NGDT * curcpu]);
|
return ((uint64_t)&gdt[NGDT * curcpu]);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct pcpu;
|
|
||||||
extern struct pcpu __pcpu[];
|
|
||||||
|
|
||||||
static __inline uint64_t
|
static __inline uint64_t
|
||||||
vmm_get_host_gsbase(void)
|
vmm_get_host_gsbase(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
return ((uint64_t)&__pcpu[curcpu]);
|
return ((uint64_t)get_pcpu());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user