VirtualBox

Changeset 61628 in vbox for trunk/include


Ignore:
Timestamp:
Jun 9, 2016 5:52:51 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107976
Message:

DBGF: Added bsod_msr event, stubbed bsod_efi event. Since we cannot return VINF_EM_DBG_EVENT from an MSR handler, VMCPU_FF_DBGF was introduced as an alternative.

Location:
trunk/include/VBox/vmm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/dbgf.h

    r61570 r61628  
    411411    DBGFEVENT_MEMORY_ROM_WRITE,
    412412
     413    /** Windows guest reported BSOD via hyperv MSRs. */
     414    DBGFEVENT_BSOD_MSR,
     415    /** Windows guest reported BSOD via EFI variables. */
     416    DBGFEVENT_BSOD_EFI,
    413417
    414418    /** End of valid event values. */
     
    524528VMMR3_INT_DECL(void)    DBGFR3PowerOff(PVM pVM);
    525529VMMR3_INT_DECL(void)    DBGFR3Relocate(PVM pVM, RTGCINTPTR offDelta);
    526 VMMR3_INT_DECL(int)     DBGFR3VMMForcedAction(PVM pVM);
     530VMMR3_INT_DECL(int)     DBGFR3VMMForcedAction(PVM pVM, PVMCPU pVCpu);
    527531VMMR3_INT_DECL(VBOXSTRICTRC)    DBGFR3EventHandlePending(PVM pVM, PVMCPU pVCpu);
    528532VMMR3DECL(int)          DBGFR3Event(PVM pVM, DBGFEVENTTYPE enmEvent);
  • trunk/include/VBox/vmm/vm.h

    r61150 r61628  
    324324 *
    325325 * Available VMCPU bits:
    326  *      10, 11, 14, 15, 31
     326 *      11, 14, 15, 31
    327327 *
    328328 * @todo If we run low on VMCPU, we may consider merging the SELM bits
     
    407407 *  interrupts as pending interrupts. */
    408408#define VMCPU_FF_UPDATE_APIC                RT_BIT_32(VMCPU_FF_UPDATE_APIC_BIT)
    409 
    410409/** This action forces the VM to service pending requests from other
    411410 * thread or requests which must be executed in another context. */
    412411#define VMCPU_FF_REQUEST                    RT_BIT_32(9)
     412/** Pending DBGF event (alternative to passing VINF_EM_DBG_EVENT around).  */
     413#define VMCPU_FF_DBGF                       RT_BIT_32(VMCPU_FF_DBGF_BIT)
     414/** The bit number for VMCPU_FF_DBGF. */
     415#define VMCPU_FF_DBGF_BIT                   10
    413416/** This action forces the VM to service any pending updates to CR3 (used only
    414417 *  by HM). */
     
    468471
    469472/** Externally VM forced actions. Used to quit the idle/wait loop. */
    470 #define VM_FF_EXTERNAL_SUSPENDED_MASK           (VM_FF_CHECK_VM_STATE | VM_FF_DBGF | VM_FF_REQUEST | VM_FF_EMT_RENDEZVOUS)
     473#define VM_FF_EXTERNAL_SUSPENDED_MASK           (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF | VM_FF_REQUEST | VM_FF_EMT_RENDEZVOUS )
    471474/** Externally VMCPU forced actions. Used to quit the idle/wait loop. */
    472 #define VMCPU_FF_EXTERNAL_SUSPENDED_MASK        (VMCPU_FF_REQUEST)
     475#define VMCPU_FF_EXTERNAL_SUSPENDED_MASK        (  VMCPU_FF_REQUEST  | VMCPU_FF_DBGF )
    473476
    474477/** Externally forced VM actions. Used to quit the idle/wait loop. */
    475 #define VM_FF_EXTERNAL_HALTED_MASK              (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF | VM_FF_REQUEST \
    476                                                  | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA | VM_FF_EMT_RENDEZVOUS)
     478#define VM_FF_EXTERNAL_HALTED_MASK              (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF    | VM_FF_REQUEST \
     479                                                 | VM_FF_PDM_QUEUES     | VM_FF_PDM_DMA | VM_FF_EMT_RENDEZVOUS )
    477480/** Externally forced VMCPU actions. Used to quit the idle/wait loop. */
    478481#define VMCPU_FF_EXTERNAL_HALTED_MASK           (  VMCPU_FF_UPDATE_APIC | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC \
    479                                                  | VMCPU_FF_REQUEST     | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI \
    480                                                  | VMCPU_FF_UNHALT      | VMCPU_FF_TIMER)
     482                                                 | VMCPU_FF_REQUEST     | VMCPU_FF_INTERRUPT_NMI  | VMCPU_FF_INTERRUPT_SMI \
     483                                                 | VMCPU_FF_UNHALT      | VMCPU_FF_TIMER          | VMCPU_FF_DBGF )
    481484
    482485/** High priority VM pre-execution actions. */
    483 #define VM_FF_HIGH_PRIORITY_PRE_MASK            (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF | VM_FF_TM_VIRTUAL_SYNC \
    484                                                  | VM_FF_DEBUG_SUSPEND | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY \
    485                                                  | VM_FF_EMT_RENDEZVOUS)
     486#define VM_FF_HIGH_PRIORITY_PRE_MASK            (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF                 | VM_FF_TM_VIRTUAL_SYNC \
     487                                                 | VM_FF_DEBUG_SUSPEND  | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY \
     488                                                 | VM_FF_EMT_RENDEZVOUS )
    486489/** High priority VMCPU pre-execution actions. */
    487 #define VMCPU_FF_HIGH_PRIORITY_PRE_MASK         (  VMCPU_FF_TIMER | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC \
    488                                                  | VMCPU_FF_UPDATE_APIC \
     490#define VMCPU_FF_HIGH_PRIORITY_PRE_MASK         (  VMCPU_FF_TIMER        | VMCPU_FF_INTERRUPT_APIC    | VMCPU_FF_INTERRUPT_PIC \
     491                                                 | VMCPU_FF_UPDATE_APIC  | VMCPU_FF_INHIBIT_INTERRUPTS | VMCPU_FF_DBGF \
    489492                                                 | VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL \
    490                                                  | VMCPU_FF_INHIBIT_INTERRUPTS \
    491493                                                 | VM_WHEN_RAW_MODE(  VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT \
    492494                                                                    | VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT, 0 ) )
    493495
    494496/** High priority VM pre raw-mode execution mask. */
    495 #define VM_FF_HIGH_PRIORITY_PRE_RAW_MASK        (VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY)
     497#define VM_FF_HIGH_PRIORITY_PRE_RAW_MASK        (  VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY )
    496498/** High priority VMCPU pre raw-mode execution mask. */
    497499#define VMCPU_FF_HIGH_PRIORITY_PRE_RAW_MASK     (  VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL \
    498500                                                 | VMCPU_FF_INHIBIT_INTERRUPTS \
    499                                                  | VM_WHEN_RAW_MODE( VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT \
     501                                                 | VM_WHEN_RAW_MODE(  VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT \
    500502                                                                    | VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT, 0) )
    501503
    502504/** High priority post-execution actions. */
    503 #define VM_FF_HIGH_PRIORITY_POST_MASK           (VM_FF_PGM_NO_MEMORY)
     505#define VM_FF_HIGH_PRIORITY_POST_MASK           (  VM_FF_PGM_NO_MEMORY )
    504506/** High priority post-execution actions. */
    505 #define VMCPU_FF_HIGH_PRIORITY_POST_MASK        (  VMCPU_FF_PDM_CRITSECT | VM_WHEN_RAW_MODE(VMCPU_FF_CSAM_PENDING_ACTION, 0) \
     507#define VMCPU_FF_HIGH_PRIORITY_POST_MASK        (  VMCPU_FF_PDM_CRITSECT  | VM_WHEN_RAW_MODE(VMCPU_FF_CSAM_PENDING_ACTION, 0) \
    506508                                                 | VMCPU_FF_HM_UPDATE_CR3 | VMCPU_FF_HM_UPDATE_PAE_PDPES \
    507                                                  | VMCPU_FF_IEM | VMCPU_FF_IOM )
     509                                                 | VMCPU_FF_IEM           | VMCPU_FF_IOM )
    508510
    509511/** Normal priority VM post-execution actions. */
    510512#define VM_FF_NORMAL_PRIORITY_POST_MASK         (  VM_FF_CHECK_VM_STATE | VM_FF_DBGF | VM_FF_RESET \
    511                                                  | VM_FF_PGM_NO_MEMORY | VM_FF_EMT_RENDEZVOUS)
     513                                                 | VM_FF_PGM_NO_MEMORY  | VM_FF_EMT_RENDEZVOUS)
    512514/** Normal priority VMCPU post-execution actions. */
    513 #define VMCPU_FF_NORMAL_PRIORITY_POST_MASK      VM_WHEN_RAW_MODE(VMCPU_FF_CSAM_SCAN_PAGE, 0)
     515#define VMCPU_FF_NORMAL_PRIORITY_POST_MASK      ( VM_WHEN_RAW_MODE(VMCPU_FF_CSAM_SCAN_PAGE, 0) | VMCPU_FF_DBGF )
    514516
    515517/** Normal priority VM actions. */
    516 #define VM_FF_NORMAL_PRIORITY_MASK              (  VM_FF_REQUEST | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA | VM_FF_REM_HANDLER_NOTIFY \
    517                                                  | VM_FF_EMT_RENDEZVOUS)
     518#define VM_FF_NORMAL_PRIORITY_MASK              (  VM_FF_REQUEST            | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA \
     519                                                 | VM_FF_REM_HANDLER_NOTIFY | VM_FF_EMT_RENDEZVOUS)
    518520/** Normal priority VMCPU actions. */
    519 #define VMCPU_FF_NORMAL_PRIORITY_MASK           (VMCPU_FF_REQUEST | VMCPU_FF_UNHALT)
     521#define VMCPU_FF_NORMAL_PRIORITY_MASK           (  VMCPU_FF_REQUEST | VMCPU_FF_UNHALT )
    520522
    521523/** Flags to clear before resuming guest execution. */
    522 #define VMCPU_FF_RESUME_GUEST_MASK              (VMCPU_FF_TO_R3)
     524#define VMCPU_FF_RESUME_GUEST_MASK              (  VMCPU_FF_TO_R3 )
    523525
    524526
    525527/** VM flags that cause the REP[|NE|E] STRINS loops to yield immediately. */
    526 #define VM_FF_HIGH_PRIORITY_POST_REPSTR_MASK    (  VM_FF_TM_VIRTUAL_SYNC | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY \
    527                                                  | VM_FF_EMT_RENDEZVOUS | VM_FF_RESET | VM_FF_PGM_POOL_FLUSH_PENDING )
     528#define VM_FF_HIGH_PRIORITY_POST_REPSTR_MASK    (  VM_FF_TM_VIRTUAL_SYNC | VM_FF_PGM_NEED_HANDY_PAGES   | VM_FF_PGM_NO_MEMORY \
     529                                                 | VM_FF_EMT_RENDEZVOUS  | VM_FF_PGM_POOL_FLUSH_PENDING | VM_FF_RESET)
    528530/** VM flags that cause the REP[|NE|E] STRINS loops to yield. */
    529531#define VM_FF_YIELD_REPSTR_MASK                 (  VM_FF_HIGH_PRIORITY_POST_REPSTR_MASK \
     
    531533/** VMCPU flags that cause the REP[|NE|E] STRINS loops to yield immediately. */
    532534#ifdef IN_RING3
    533 # define VMCPU_FF_HIGH_PRIORITY_POST_REPSTR_MASK ( VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL )
     535# define VMCPU_FF_HIGH_PRIORITY_POST_REPSTR_MASK ( VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_DBGF )
    534536#else
    535537# define VMCPU_FF_HIGH_PRIORITY_POST_REPSTR_MASK (  VMCPU_FF_TO_R3 | VMCPU_FF_IEM | VMCPU_FF_IOM | VMCPU_FF_PGM_SYNC_CR3 \
    536                                                   | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL )
     538                                                  | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_DBGF )
    537539#endif
    538540/** VMCPU flags that cause the REP[|NE|E] STRINS loops to yield, interrupts
     
    557559#define VM_FF_HP_R0_PRE_HM_MASK                 (VM_FF_HM_TO_R3_MASK | VM_FF_REQUEST | VM_FF_PGM_POOL_FLUSH_PENDING | VM_FF_PDM_DMA)
    558560/** High priority ring-0 VMCPU pre HM-mode execution mask. */
    559 #define VMCPU_FF_HP_R0_PRE_HM_MASK              ( VMCPU_FF_HM_TO_R3_MASK | VMCPU_FF_PGM_SYNC_CR3 \
     561#define VMCPU_FF_HP_R0_PRE_HM_MASK              (  VMCPU_FF_HM_TO_R3_MASK | VMCPU_FF_PGM_SYNC_CR3 \
    560562                                                 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_REQUEST)
    561563/** High priority ring-0 VM pre HM-mode execution mask, single stepping. */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette