summaryrefslogtreecommitdiff
path: root/kvm_x86.c
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2011-05-06 13:59:15 -0700
committerRobert Mustacchi <rm@joyent.com>2011-05-06 17:37:47 -0700
commit9a05848826dd5040be93c0c611aed1ba6a3a301f (patch)
tree75f5e5bdf771c7e6430171f2fcb0e3dd919f4d96 /kvm_x86.c
parent4d47ee753a5219d80140469b8dfc3e86f78f4d31 (diff)
downloadillumos-kvm-9a05848826dd5040be93c0c611aed1ba6a3a301f.tar.gz
HVM-169 page_address should use hat_kpm_mapin_pfn
Diffstat (limited to 'kvm_x86.c')
-rw-r--r--kvm_x86.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/kvm_x86.c b/kvm_x86.c
index d0f5891..594e558 100644
--- a/kvm_x86.c
+++ b/kvm_x86.c
@@ -1543,13 +1543,7 @@ kvm_create_lapic(struct kvm_vcpu *vcpu)
vcpu->arch.apic = apic;
- apic->regs_page = alloc_page(PAGESIZE, KM_SLEEP);
- if (apic->regs_page == NULL) {
- cmn_err(CE_WARN, "malloc apic regs error for vcpu %x\n",
- vcpu->vcpu_id);
- goto nomem_free_apic;
- }
- apic->regs = page_address(apic->regs_page);
+ apic->regs = kmem_zalloc(PAGESIZE, KM_SLEEP);
memset(apic->regs, 0, PAGESIZE);
apic->vcpu = vcpu;
@@ -2504,6 +2498,7 @@ vmx_vcpu_reset(struct kvm_vcpu *vcpu)
struct vcpu_vmx *vmx = to_vmx(vcpu);
uint64_t msr;
int ret, idx;
+ page_t *ptp;
vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP));
#ifdef XXX
@@ -2600,8 +2595,9 @@ vmx_vcpu_reset(struct kvm_vcpu *vcpu)
if (cpu_has_vmx_tpr_shadow()) {
vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, 0);
if (vm_need_tpr_shadow(vmx->vcpu.kvm)) {
- vmcs_write64(VIRTUAL_APIC_PAGE_ADDR,
- page_to_phys(vmx->vcpu.arch.apic->regs_page));
+ ptp = page_numtopp_nolock(hat_getpfnum(kas.a_hat,
+ vmx->vcpu.arch.apic->regs));
+ vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, page_to_phys(ptp));
}
vmcs_write32(TPR_THRESHOLD, 0);