VirtualBox

vbox的更動 61776 路徑 trunk/src/VBox/Main


忽略:
時間撮記:
2016-6-20 下午11:25:06 (8 年 以前)
作者:
vboxsync
訊息:

CPUM,APIC: Per-CPU APIC CPUID feature bit and MSR_IA32_APICBASE GP mask adjustments.

  • Changed the PDMAPICHLPR3::pfnChangeFeature to pfnSetFeatureLevel, removing the RC and R0 versions.
  • Only use pfnSetFeatureLevel from the APIC constructor to communicate to CPUM the max APIC feature level, not to globally flip CPUID[1].EDX[9].
  • Renamed APIC enmOriginalMode to enmMaxMode, changing the type of it and the corresponding config values to PDMAPICMODE. This makes the above simpler and eliminates two conversion functions. It also makes APICMODE private to the APIC again.
  • Introduced CPUMSetGuestCpuIdPerCpuApicFeature for the per-CPU APIC feature bit management.
  • Introduced CPUMCPUIDLEAF_F_CONTAINS_APIC which works same as CPUMCPUIDLEAF_F_CONTAINS_OSXSAVE and CPUMCPUIDLEAF_F_CONTAINS_APIC_ID. Updated existing CPU profiles with this.
  • Made the patch manager helper function actually handle CPUMCPUIDLEAF_F_CONTAINS_APIC and CPUMCPUIDLEAF_F_CONTAINS_OSXSAVE (the latter previously relied on CPUMSetGuestCpuIdFeature/CPUMClearGuestCpuIdFeature from CPUMSetGuestCR4).
  • Pushed CPUMSetGuestCpuIdFeature, CPUMGetGuestCpuIdFeature and CPUMClearGuestCpuIdFeature down to ring-3 only (now CPUMR3*). The latter two function are deprecated.
  • Added call to CPUMSetGuestCpuIdPerCpuApicFeature from load function just in case the APIC is disabled by the guest at the time of saving.
  • CPUMSetGuestCpuIdFeature ensures we've got a MSR_IA32_APICBASE register when enabling the APIC.
  • CPUMSetGuestCpuIdFeature adjust the MSR_IA32_APICBASE GP mask when enabling x2APIC so setting MSR_IA32_APICBASE_EXTD does not trap.
檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r61320 r61776  
    16031603            InsertConfigNode(pInst,    "Config", &pCfg);
    16041604            InsertConfigInteger(pCfg,  "IOAPIC", fIOAPIC);
    1605             APICMODE enmAPICMode = APICMODE_XAPIC;
     1605            PDMAPICMODE enmAPICMode = PDMAPICMODE_APIC;
    16061606            if (fEnableX2APIC)
    1607                 enmAPICMode = APICMODE_X2APIC;
     1607                enmAPICMode = PDMAPICMODE_X2APIC;
    16081608            else if (!fEnableAPIC)
    1609                 enmAPICMode = APICMODE_DISABLED;
     1609                enmAPICMode = PDMAPICMODE_NONE;
    16101610            InsertConfigInteger(pCfg,  "Mode", enmAPICMode);
    16111611            InsertConfigInteger(pCfg,  "NumCPUs", cCpus);
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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