diff options
author | Robert Mustacchi <rm@joyent.com> | 2011-05-06 13:59:15 -0700 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2011-05-06 17:37:47 -0700 |
commit | 9a05848826dd5040be93c0c611aed1ba6a3a301f (patch) | |
tree | 75f5e5bdf771c7e6430171f2fcb0e3dd919f4d96 /kvm_x86.c | |
parent | 4d47ee753a5219d80140469b8dfc3e86f78f4d31 (diff) | |
download | illumos-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.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -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); |