Changeset 62540 in vbox for trunk/src/VBox
- Timestamp:
- Jul 25, 2016 9:31:02 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/GIMAllHv.cpp
r62478 r62540 909 909 } 910 910 911 case MSR_GIM_HV_SINT2: 912 { 913 if (!pHv->fDbgEnabled) 911 case MSR_GIM_HV_SINT0: case MSR_GIM_HV_SINT1: case MSR_GIM_HV_SINT2: case MSR_GIM_HV_SINT3: 912 case MSR_GIM_HV_SINT4: case MSR_GIM_HV_SINT5: case MSR_GIM_HV_SINT6: case MSR_GIM_HV_SINT7: 913 case MSR_GIM_HV_SINT8: case MSR_GIM_HV_SINT9: case MSR_GIM_HV_SINT10: case MSR_GIM_HV_SINT11: 914 case MSR_GIM_HV_SINT12: case MSR_GIM_HV_SINT13: case MSR_GIM_HV_SINT14: case MSR_GIM_HV_SINT15: 915 { 916 #ifndef IN_RING3 917 /** @todo make this RZ later? */ 918 return VINF_CPUM_R3_MSR_WRITE; 919 #else 920 PGIMHVCPU pHvCpu = &pVCpu->gim.s.u.HvCpu; 921 uint8_t uVector = MSR_GIM_HV_SINT_VECTOR(uRawValue); 922 bool const fVMBusMsg = RT_BOOL(idMsr == GIM_HV_VMBUS_MSG_SINT); 923 size_t const idxSintMsr = idMsr - MSR_GIM_HV_SINT0; 924 const char *pszDesc = fVMBusMsg ? "VMBus Message" : "Generic"; 925 if (uVector < GIM_HV_SINT_VECTOR_VALID_MIN) 926 { 927 LogRel(("GIM: HyperV%u: Programmed an invalid vector in SINT%u (%s), uVector=%u -> #GP(0)\n", pVCpu->idCpu, 928 idxSintMsr, pszDesc, uVector)); 914 929 return VERR_CPUM_RAISE_GP_0; 915 #ifndef IN_RING3 916 return VINF_CPUM_R3_MSR_WRITE; 917 #else 918 PGIMHVCPU pHvCpu = &pVCpu->gim.s.u.HvCpu; 919 uint8_t uVector = MSR_GIM_HV_SINT_VECTOR(uRawValue); 920 if ( !MSR_GIM_HV_SINT_IS_MASKED(uRawValue) 921 && uVector < GIM_HV_SINT_VECTOR_VALID_MIN) 922 { 923 LogRel(("GIM: HyperV: Programmed an invalid vector in SINT2 (VMBUS_MSG_SINT), uVector=%u -> #GP(0)\n", uVector)); 924 return VERR_CPUM_RAISE_GP_0; 925 } 926 927 pHvCpu->auSintXMsr[GIM_HV_VMBUS_MSG_SINT] = uRawValue; 928 if (MSR_GIM_HV_SINT_IS_MASKED(uRawValue)) 929 LogRel(("GIM: HyperV: Masked SINT2 (VMBUS_MSG_SINT)\n")); 930 else 931 LogRel(("GIM: HyperV: Unmasked SINT2 (VMBUS_MSG_SINT), uVector=%u\n", uVector)); 930 } 931 932 pHvCpu->auSintXMsr[idxSintMsr] = uRawValue; 933 if (fVMBusMsg) 934 { 935 if (MSR_GIM_HV_SINT_IS_MASKED(uRawValue)) 936 LogRel(("GIM: HyperV%u: Masked SINT%u (%s)\n", pVCpu->idCpu, idxSintMsr, pszDesc)); 937 else 938 LogRel(("GIM: HyperV%u: Unmasked SINT%u (%s), uVector=%u\n", pVCpu->idCpu, idxSintMsr, pszDesc, uVector)); 939 } 932 940 return VINF_SUCCESS; 933 941 #endif
Note:
See TracChangeset
for help on using the changeset viewer.