Changeset 55034 in vbox
- Timestamp:
- Mar 31, 2015 1:41:56 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 99319
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/vm.h
r54898 r55034 371 371 /** PDM critical section unlocking is pending, process promptly upon return to R3. */ 372 372 #define VMCPU_FF_PDM_CRITSECT RT_BIT_32(5) 373 /** This action forces the VCPU out of the halted state. */ 374 #define VMCPU_FF_UNHALT RT_BIT_32(6) 373 375 /** This action forces the VM to service pending requests from other 374 376 * thread or requests which must be executed in another context. */ … … 429 431 /** Externally forced VMCPU actions. Used to quit the idle/wait loop. */ 430 432 #define VMCPU_FF_EXTERNAL_HALTED_MASK ( VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC | VMCPU_FF_REQUEST \ 431 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_TIMER) 433 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT \ 434 | VMCPU_FF_TIMER) 432 435 433 436 /** High priority VM pre-execution actions. */ … … 466 469 | VM_FF_EMT_RENDEZVOUS) 467 470 /** Normal priority VMCPU actions. */ 468 #define VMCPU_FF_NORMAL_PRIORITY_MASK (VMCPU_FF_REQUEST )471 #define VMCPU_FF_NORMAL_PRIORITY_MASK (VMCPU_FF_REQUEST | VMCPU_FF_UNHALT) 469 472 470 473 /** Flags to clear before resuming guest execution. */ -
trunk/src/VBox/VMM/VMMR3/EM.cpp
r55001 r55034 1855 1855 } 1856 1856 1857 /* 1858 * Forced unhalting of EMT. 1859 */ 1860 if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_UNHALT)) 1861 { 1862 VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_UNHALT); 1863 if (rc == VINF_EM_HALT) 1864 { 1865 rc2 = VINF_EM_RESCHEDULE; 1866 UPDATE_RC(); 1867 } 1868 } 1869 1857 1870 /* check that we got them all */ 1858 Assert(!(VMCPU_FF_NORMAL_PRIORITY_MASK & ~(VMCPU_FF_REQUEST )));1871 Assert(!(VMCPU_FF_NORMAL_PRIORITY_MASK & ~(VMCPU_FF_REQUEST | VMCPU_FF_UNHALT))); 1859 1872 } 1860 1873 … … 2551 2564 if ( rc == VINF_SUCCESS 2552 2565 && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC 2553 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI ))2566 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT)) 2554 2567 { 2555 2568 Log(("EMR3ExecuteVM: Triggering reschedule on pending IRQ after MWAIT\n")); … … 2561 2574 rc = VMR3WaitHalted(pVM, pVCpu, !(CPUMGetGuestEFlags(pVCpu) & X86_EFL_IF)); 2562 2575 if ( rc == VINF_SUCCESS 2563 && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI ))2576 && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT)) 2564 2577 { 2565 Log(("EMR3ExecuteVM: Triggering reschedule on pending NMI/SMI after HLT\n"));2578 Log(("EMR3ExecuteVM: Triggering reschedule on pending NMI/SMI/UNHALT after HLT\n")); 2566 2579 rc = VINF_EM_RESCHEDULE; 2567 2580 } -
trunk/src/VBox/VMM/VMMR3/VMM.cpp
r54737 r55034 2411 2411 PRINT_FLAG(VMCPU_FF_,INTERRUPT_SMI); 2412 2412 PRINT_FLAG(VMCPU_FF_,PDM_CRITSECT); 2413 PRINT_FLAG(VMCPU_FF_,UNHALT); 2413 2414 PRINT_FLAG(VMCPU_FF_,REQUEST); 2414 2415 PRINT_FLAG(VMCPU_FF_,HM_UPDATE_CR3);
Note:
See TracChangeset
for help on using the changeset viewer.