Changeset 72221 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- May 15, 2018 4:06:19 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/NEMAllNativeTemplate-win.cpp.h
r72207 r72221 1553 1553 */ 1554 1554 nemHCWinCopyStateFromX64Header(pVCpu, pCtx, &pMsg->Header); 1555 Log4(("IOIntW/%u: %04x:%08RX64: %u\n", pVCpu->idCpu, pMsg->Header.CsSegment.Selector, pMsg->Header.Rip, pMsg->Type)); 1555 Log4(("IntWinExit/%u: %04x:%08RX64: %u IF=%d InterruptShadow=%d\n", pVCpu->idCpu, pMsg->Header.CsSegment.Selector, 1556 pMsg->Header.Rip, pMsg->Type, RT_BOOL(pMsg->Header.Rflags & X86_EFL_IF), pMsg->Header.ExecutionState.InterruptShadow)); 1556 1557 1557 1558 /** @todo call nemHCWinHandleInterruptFF */ … … 1848 1849 } 1849 1850 *pfInterruptWindows |= NEM_WIN_INTW_F_NMI; 1851 Log8(("NMI window pending on %u\n", pVCpu->idCpu)); 1850 1852 } 1851 1853 … … 1879 1881 } 1880 1882 *pfInterruptWindows |= NEM_WIN_INTW_F_REGULAR; 1883 Log8(("Interrupt window pending on %u\n", pVCpu->idCpu)); 1881 1884 } 1882 1885 … … 1922 1925 { 1923 1926 /* 1924 * Pending interrupts or such? Need to check and deal with this prior to the state syncing.1925 * Note! This may stop execution.1927 * Pending interrupts or such? Need to check and deal with this prior 1928 * to the state syncing. 1926 1929 */ 1927 1930 pVCpu->nem.s.fDesiredInterruptWindows = 0; … … 1929 1932 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI)) 1930 1933 { 1934 /* Make sure the CPU isn't executing. */ 1931 1935 if (pVCpu->nem.s.fHandleAndGetFlags == VID_MSHAGN_F_GET_NEXT_MESSAGE) 1932 1936 { 1933 1937 pVCpu->nem.s.fHandleAndGetFlags = 0; 1934 1938 rcStrict = nemHCWinStopCpu(pVM, pVCpu, rcStrict, pMappingHeader, pGVM, pGVCpu); 1935 if (rcStrict != VINF_SUCCESS) 1939 if (rcStrict == VINF_SUCCESS) 1940 { /* likely */ } 1941 else 1942 { 1943 LogFlow(("NEM/%u: breaking: nemHCWinStopCpu -> %Rrc\n", pVCpu->idCpu, VBOXSTRICTRC_VAL(rcStrict) )); 1944 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatBreakOnStatus); 1936 1945 break; 1946 } 1937 1947 } 1948 1949 /* Try inject interrupt. */ 1938 1950 rcStrict = nemHCWinHandleInterruptFF(pVM, pVCpu, pGVCpu, pCtx, &pVCpu->nem.s.fDesiredInterruptWindows); 1939 if (rcStrict != VINF_SUCCESS) 1951 if (rcStrict == VINF_SUCCESS) 1952 { /* likely */ } 1953 else 1954 { 1955 LogFlow(("NEM/%u: breaking: nemHCWinHandleInterruptFF -> %Rrc\n", pVCpu->idCpu, VBOXSTRICTRC_VAL(rcStrict) )); 1956 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatBreakOnStatus); 1940 1957 break; 1958 } 1941 1959 } 1942 1960 … … 1948 1966 || pVCpu->nem.s.fCurrentInterruptWindows != pVCpu->nem.s.fDesiredInterruptWindows) 1949 1967 { 1968 Assert(pVCpu->nem.s.fHandleAndGetFlags != VID_MSHAGN_F_GET_NEXT_MESSAGE /* not running */); 1950 1969 # ifdef IN_RING0 1951 1970 int rc2 = nemR0WinExportState(pGVM, pGVCpu, pCtx);
Note:
See TracChangeset
for help on using the changeset viewer.