Changeset 51980 in vbox
- Timestamp:
- Jul 11, 2014 5:49:50 AM (10 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
-
VMMAll/GIMAllHv.cpp (modified) (6 diffs)
-
VMMR3/GIMHv.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/GIMAllHv.cpp
r51686 r51980 29 29 #include <VBox/vmm/pgm.h> 30 30 #include <VBox/vmm/pdmdev.h> 31 #include <VBox/vmm/pdmapi.h> 31 32 32 33 #include <iprt/asm-amd64-x86.h> … … 92 93 return VINF_SUCCESS; 93 94 95 case MSR_GIM_HV_TPR: 96 PDMApicReadMSR(pVM, pVCpu->idCpu, 0x80, puValue); 97 return VINF_SUCCESS; 98 99 case MSR_GIM_HV_EOI: 100 PDMApicReadMSR(pVM, pVCpu->idCpu, 0x0B, puValue); 101 return VINF_SUCCESS; 102 103 case MSR_GIM_HV_ICR: 104 PDMApicReadMSR(pVM, pVCpu->idCpu, 0x30, puValue); 105 return VINF_SUCCESS; 106 94 107 case MSR_GIM_HV_GUEST_OS_ID: 95 108 *puValue = pHv->u64GuestOsIdMsr; … … 118 131 119 132 default: 133 #ifdef IN_RING3 134 static uint32_t s_cTimes = 0; 135 if (s_cTimes++ < 20) 136 LogRel(("GIM: HyperV: Unknown/invalid RdMsr (%#x) -> #GP(0)\n", idMsr)); 137 #endif 138 LogFunc(("Unknown/invalid RdMsr (%#RX32) -> #GP(0)\n", idMsr)); 120 139 break; 121 140 } 122 141 123 LogRel(("GIMHvReadMsr: Unknown/invalid RdMsr %#RX32 -> #GP(0)\n", idMsr));124 142 return VERR_CPUM_RAISE_GP_0; 125 143 } … … 143 161 switch (idMsr) 144 162 { 163 case MSR_GIM_HV_TPR: 164 PDMApicWriteMSR(pVM, pVCpu->idCpu, 0x80, uRawValue); 165 return VINF_SUCCESS; 166 167 case MSR_GIM_HV_EOI: 168 PDMApicWriteMSR(pVM, pVCpu->idCpu, 0x0B, uRawValue); 169 return VINF_SUCCESS; 170 171 case MSR_GIM_HV_ICR: 172 PDMApicWriteMSR(pVM, pVCpu->idCpu, 0x30, uRawValue); 173 return VINF_SUCCESS; 174 145 175 case MSR_GIM_HV_GUEST_OS_ID: 146 176 { … … 233 263 if (MSR_GIM_HV_RESET_IS_SET(uRawValue)) 234 264 { 235 LogRel(("GIM: HyperV: Reset initiated byMSR.\n"));265 LogRel(("GIM: HyperV: Reset initiated through MSR.\n")); 236 266 int rc = PDMDevHlpVMReset(pVM->gim.s.pDevInsR3); 237 267 AssertRC(rc); … … 253 283 static uint32_t s_cTimes = 0; 254 284 if (s_cTimes++ < 20) 255 LogRel(("GIM: Unknown/invalid WrMsr (%#x,%#x`%08x) -> #GP(0)\n", idMsr, uRawValue & UINT64_C(0xffffffff00000000),285 LogRel(("GIM: HyperV: Unknown/invalid WrMsr (%#x,%#x`%08x) -> #GP(0)\n", idMsr, uRawValue & UINT64_C(0xffffffff00000000), 256 286 uRawValue & UINT64_C(0xffffffff))); 257 287 #endif -
trunk/src/VBox/VMM/VMMR3/GIMHv.cpp
r51979 r51980 93 93 //| GIM_HV_BASE_FEAT_BASIC_SYNTH_IC 94 94 //| GIM_HV_BASE_FEAT_SYNTH_TIMER_MSRS 95 //| GIM_HV_BASE_FEAT_APIC_ACCESS_MSRS95 | GIM_HV_BASE_FEAT_APIC_ACCESS_MSRS 96 96 | GIM_HV_BASE_FEAT_HYPERCALL_MSRS 97 97 | GIM_HV_BASE_FEAT_VP_ID_MSR … … 105 105 106 106 pHv->uMiscFeat = GIM_HV_MISC_FEAT_TIMER_FREQ; 107 108 pHv->uHyperHints = GIM_HV_HINT_MSR_FOR_SYS_RESET; 107 109 } 108 110 … … 190 192 HyperLeaf.uEcx = pHv->uPowMgmtFeat; 191 193 HyperLeaf.uEdx = pHv->uMiscFeat; 194 rc = CPUMR3CpuIdInsert(pVM, &HyperLeaf); 195 AssertLogRelRCReturn(rc, rc); 196 197 HyperLeaf.uLeaf = UINT32_C(0x40000004); 198 HyperLeaf.uEax = pHv->uHyperHints; 199 HyperLeaf.uEbx = 0xffffffff; 200 HyperLeaf.uEcx = 0; 201 HyperLeaf.uEdx = 0; 192 202 rc = CPUMR3CpuIdInsert(pVM, &HyperLeaf); 193 203 AssertLogRelRCReturn(rc, rc);
Note:
See TracChangeset
for help on using the changeset viewer.

