Changeset 51367 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- May 23, 2014 7:45:35 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 93861
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/GIM.cpp
r51333 r51367 116 116 * Setup the GIM provider for this VM. 117 117 */ 118 LogRel(("GIM: Using provider \"%s\" version %u\n", szProvider, uVersion));118 LogRel(("GIM: Using provider \"%s\" (Implementation version: %u)\n", szProvider, uVersion)); 119 119 if (!RTStrCmp(szProvider, "None")) 120 120 { … … 143 143 } 144 144 } 145 146 145 return rc; 147 146 } -
trunk/src/VBox/VMM/VMMR3/GIMHv.cpp
r51333 r51367 36 36 * Defined Constants And Macros * 37 37 *******************************************************************************/ 38 #define GIMHV_HYPERCALL "GIMHvHypercall" 38 //#define GIMHV_HYPERCALL "GIMHvHypercall" 39 #ifdef VBOX_WITH_STATISTICS 40 # define GIMHV_MSRRANGE(a_uFirst, a_uLast, a_szName) \ 41 { (a_uFirst), (a_uLast), kCpumMsrRdFn_Gim, kCpumMsrWrFn_Gim, 0, 0, 0, 0, 0, a_szName, { 0 }, { 0 }, { 0 }, { 0 } } 42 #else 43 # define GIMHV_MSRRANGE(a_uFirst, a_uLast, a_szName) \ 44 { (a_uFirst), (a_uLast), kCpumMsrRdFn_Gim, kCpumMsrWrFn_Gim, 0, 0, 0, 0, 0, a_szName } 45 #endif 46 47 /** 48 * Array of MSR ranges supported by Hyper-V. 49 */ 50 static CPUMMSRRANGE const g_aMsrRanges_HyperV[] = 51 { 52 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE0_START, MSR_GIM_HV_RANGE0_END, "Hyper-V range 0"), 53 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE1_START, MSR_GIM_HV_RANGE1_END, "Hyper-V range 1"), 54 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE2_START, MSR_GIM_HV_RANGE2_END, "Hyper-V range 2"), 55 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE3_START, MSR_GIM_HV_RANGE3_END, "Hyper-V range 3"), 56 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE4_START, MSR_GIM_HV_RANGE4_END, "Hyper-V range 4"), 57 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE5_START, MSR_GIM_HV_RANGE5_END, "Hyper-V range 5"), 58 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE6_START, MSR_GIM_HV_RANGE6_END, "Hyper-V range 6"), 59 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE7_START, MSR_GIM_HV_RANGE7_END, "Hyper-V range 7"), 60 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE8_START, MSR_GIM_HV_RANGE8_END, "Hyper-V range 8"), 61 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE9_START, MSR_GIM_HV_RANGE9_END, "Hyper-V range 9"), 62 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE10_START, MSR_GIM_HV_RANGE10_END, "Hyper-V range 10"), 63 GIMHV_MSRRANGE(MSR_GIM_HV_RANGE11_START, MSR_GIM_HV_RANGE11_END, "Hyper-V range 11") 64 }; 65 #undef GIMHV_MSR 39 66 40 67 … … 73 100 if (!pVM->gim.s.u32Version) 74 101 { 75 uBaseFeat = GIM_HV_BASE_FEAT_PART_REF_COUNT_MSR; 102 uBaseFeat = 0 103 //| GIM_HV_BASE_FEAT_VP_RUNTIME_MSR 104 | GIM_HV_BASE_FEAT_PART_REF_COUNT_MSR 105 //| GIM_HV_BASE_FEAT_BASIC_SYNTH_IC 106 //| GIM_HV_BASE_FEAT_SYNTH_TIMER_MSRS 107 //| GIM_HV_BASE_FEAT_APIC_ACCESS_MSRS 108 //| GIM_HV_BASE_FEAT_HYPERCALL_MSRS 109 | GIM_HV_BASE_FEAT_VP_ID_MSR 110 //| GIM_HV_BASE_FEAT_VIRT_SYS_RESET_MSR 111 //| GIM_HV_BASE_FEAT_STAT_PAGES_MSR 112 //| GIM_HV_BASE_FEAT_PART_REF_TSC_MSR 113 //| GIM_HV_BASE_FEAT_GUEST_IDLE_STATE_MSR 114 //| GIM_HV_BASE_FEAT_TIMER_FREQ_MSRS 115 //| GIM_HV_BASE_FEAT_DEBUG_MSRS 116 ; 117 76 118 pVM->gim.s.u.hv.u16HyperIdVersionMajor = VBOX_VERSION_MAJOR; 77 119 pVM->gim.s.u.hv.u16HyperIdVersionMajor = VBOX_VERSION_MINOR; … … 108 150 * Add Hyper-V specific leaves. 109 151 */ 110 HyperLeaf.uLeaf = UINT32_C(0x40000002); /* MBZ until MSR_ HV_GUEST_OS_ID is set by the guest. */152 HyperLeaf.uLeaf = UINT32_C(0x40000002); /* MBZ until MSR_GIM_HV_GUEST_OS_ID is set by the guest. */ 111 153 HyperLeaf.uEax = 0; 112 154 HyperLeaf.uEbx = 0; … … 125 167 126 168 /* 127 * Register the complete MSR range forHyper-V.169 * Insert all MSR ranges of Hyper-V. 128 170 */ 129 CPUMMSRRANGE MsrRange; 130 RT_ZERO(MsrRange); 131 MsrRange.uFirst = UINT32_C(0x40000000); 132 MsrRange.uLast = UINT32_C(0x40000105); 133 MsrRange.enmRdFn = kCpumMsrRdFn_Gim; 134 MsrRange.enmWrFn = kCpumMsrWrFn_Gim; 135 RTStrCopy(MsrRange.szName, sizeof(MsrRange.szName), "Hyper-V"); 136 rc = CPUMR3MsrRangesInsert(pVM, &MsrRange); 137 AssertLogRelRCReturn(rc, rc); 138 139 171 for (uint32_t i = 0; i < RT_ELEMENTS(g_aMsrRanges_HyperV); i++) 172 { 173 rc = CPUMR3MsrRangesInsert(pVM, &g_aMsrRanges_HyperV[i]); 174 AssertLogRelRCReturn(rc, rc); 175 } 140 176 return VINF_SUCCESS; 141 177 } … … 144 180 VMMR3_INT_DECL(void) GIMR3HvRelocate(PVM pVM, RTGCINTPTR offDelta) 145 181 { 146 // int rc = PDMR3LdrGetSymbolRC(pVM, NULL /* pszModule */, GIMHV_HYPERCALL, &pVM->gim.s.pfnHypercallRC); 147 // AssertFatalRC(rc); 182 #if 0 183 int rc = PDMR3LdrGetSymbolRC(pVM, NULL /* pszModule */, GIMHV_HYPERCALL, &pVM->gim.s.pfnHypercallRC); 184 AssertFatalRC(rc); 185 #endif 148 186 } 149 187 -
trunk/src/VBox/VMM/VMMR3/VM.cpp
r50953 r51367 989 989 if (RT_SUCCESS(rc)) 990 990 { 991 /* GIM must be init'd after PDM, relieson PDMR3 for992 symbol resolution. */991 /* GIM must be init'd after PDM, may rely on PDMR3 for 992 symbol resolution. */ 993 993 rc = GIMR3Init(pVM); 994 994 if (RT_SUCCESS(rc))
Note:
See TracChangeset
for help on using the changeset viewer.