VirtualBox

儲存庫 vbox 的更動 62357


忽略:
時間撮記:
2016-7-20 下午01:03:13 (8 年 以前)
作者:
vboxsync
訊息:

VMM/GIM/HyperV: SynIC: APIC-assist page bits.

位置:
trunk/src/VBox/VMM
檔案:
修改 3 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/GIMAllHv.cpp

    r61632 r62357  
    678678            return VINF_CPUM_R3_MSR_WRITE;
    679679#else  /* IN_RING3 */
    680             /* First, update all but the TSC-page enable bit. */
     680            /* First, update all but the TSC page enable bit. */
    681681            pHv->u64TscPageMsr = (uRawValue & ~MSR_GIM_HV_REF_TSC_ENABLE_BIT);
    682682
    683             /* Is the guest disabling the TSC-page? */
     683            /* Is the guest disabling the TSC page? */
    684684            bool fEnable = RT_BOOL(uRawValue & MSR_GIM_HV_REF_TSC_ENABLE_BIT);
    685685            if (!fEnable)
     
    690690            }
    691691
    692             /* Enable the TSC-page. */
     692            /* Enable the TSC page. */
    693693            RTGCPHYS GCPhysTscPage = MSR_GIM_HV_REF_TSC_GUEST_PFN(uRawValue) << PAGE_SHIFT;
    694694            int rc = gimR3HvEnableTscPage(pVM, GCPhysTscPage, false /* fUseThisTscSequence */, 0 /* uTscSequence */);
     
    696696            {
    697697                pHv->u64TscPageMsr = uRawValue;
     698                return VINF_SUCCESS;
     699            }
     700
     701            return VERR_CPUM_RAISE_GP_0;
     702#endif /* IN_RING3 */
     703        }
     704
     705        case MSR_GIM_HV_APIC_ASSIST_PAGE:
     706        {
     707#ifndef IN_RING3
     708            return VINF_CPUM_R3_MSR_WRITE;
     709#else  /* IN_RING3 */
     710            PGIMHVCPU pHvCpu = &pVCpu->gim.s.u.HvCpu;
     711            /* First, update all but the APIC-assist page enable bit. */
     712            pHvCpu->uApicAssistPageMsr = (uRawValue & ~MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT);
     713
     714            /* Is the guest disabling the APIC-assist page? */
     715            bool fEnable = RT_BOOL(uRawValue & MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT);
     716            if (!fEnable)
     717            {
     718                gimR3HvDisableApicAssistPage(pVM);
     719                pHvCpu->uApicAssistPageMsr = uRawValue;
     720                return VINF_SUCCESS;
     721            }
     722
     723            /* Enable the APIC-assist page. */
     724            RTGCPHYS GCPhysApicAssist = MSR_GIM_HV_APICASSIST_GUEST_PFN(uRawValue) << PAGE_SHIFT;
     725            int rc = gimR3HvEnableApicAssistPage(pVM, GCPhysApicAssist);
     726            if (RT_SUCCESS(rc))
     727            {
     728                pHvCpu->uApicAssistPageMsr = uRawValue;
    698729                return VINF_SUCCESS;
    699730            }
  • trunk/src/VBox/VMM/VMMR3/GIMHv.cpp

    r62354 r62357  
    557557        pVCpu->gim.s.u.HvCpu.uSint2Msr = MSR_GIM_HV_SINT_MASKED_BIT;
    558558        pVCpu->gim.s.u.HvCpu.uSimpMsr  = 0;
     559        pVCpu->gim.s.u.HvCpu.uApicAssistPageMsr = 0;
    559560    }
    560561}
  • trunk/src/VBox/VMM/include/GIMHvInternal.h

    r62354 r62357  
    11221122    /** Interrupt source 2 MSR. */
    11231123    uint64_t                    uSint2Msr;
     1124    /** APIC-assist page MSR. */
     1125    uint64_t                    uApicAssistPageMsr;
    11241126    /** @} */
    11251127} GIMHVCPU;
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette