VirtualBox

Changeset 56627 in vbox


Ignore:
Timestamp:
Jun 24, 2015 7:41:37 PM (9 years ago)
Author:
vboxsync
Message:

PGMPhys: The s_abPlayItSafe bits in dealing with PGMPAGETYPE_SPECIAL_ALIAS_MMIO pages screws up VBOX_STRICT assertions, triggering often with VBOX_WITH_2ND_IEM_STEP, so try the pvZeroPG now. Redefined what VINF_EM_DBG_STOP and VINF_EM_DBG_BREAKPOINT means when returned by access handlers and PGMPhysRead/Write APIs.

Location:
trunk
Files:
2 edited

Legend:

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

    r56411 r56627  
    527527#ifdef IN_RING3
    528528# define PGM_PHYS_RW_IS_SUCCESS(a_rcStrict) \
    529     (   (a_rcStrict) == VINF_SUCCESS )
     529    (   (a_rcStrict) == VINF_SUCCESS \
     530     || (a_rcStrict) == VINF_EM_DBG_STOP \
     531     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
     532    )
    530533#elif defined(IN_RING0)
    531534# define PGM_PHYS_RW_IS_SUCCESS(a_rcStrict) \
     
    535538     || (a_rcStrict) == VINF_EM_RESET \
    536539     || (a_rcStrict) == VINF_EM_HALT \
     540     || (a_rcStrict) == VINF_EM_DBG_STOP \
     541     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
    537542    )
    538543#elif defined(IN_RC)
     
    545550     || (a_rcStrict) == VINF_SELM_SYNC_GDT \
    546551     || (a_rcStrict) == VINF_EM_RAW_EMULATE_INSTR_GDT_FAULT \
     552     || (a_rcStrict) == VINF_EM_DBG_STOP \
     553     || (a_rcStrict) == VINF_EM_DBG_BREAKPOINT \
    547554    )
    548555#endif
  • trunk/src/VBox/VMM/VMMAll/PGMAllPhys.cpp

    r56412 r56627  
    12461246        }
    12471247        else
    1248         {
     1248# ifdef VBOX_WITH_2ND_IEM_STEP
     1249            *ppv = pVM->pgm.s.CTXALLSUFF(pvZeroPg);
     1250# else
     1251        {
     1252            /* This kind of screws up the TLB entry if accessed from a different section afterwards. */
    12491253            static uint8_t s_abPlayItSafe[0x1000*2];  /* I don't dare return the zero page at the moment. */
    12501254            *ppv = (uint8_t *)((uintptr_t)&s_abPlayItSafe[0x1000] & ~(uintptr_t)0xfff);
    12511255        }
     1256# endif
    12521257        *ppMap = NULL;
    12531258        return VINF_SUCCESS;
     
    24282433 * @retval  VINF_SELM_SYNC_GDT in RC only - read completed.
    24292434 *
    2430  * @retval  VINF_EM_DBG_STOP in RC and R0.
    2431  * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0.
     2435 * @retval  VINF_EM_DBG_STOP in RC and R0 - read completed.
     2436 * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0 - read completed.
    24322437 * @retval  VINF_EM_RAW_EMULATE_INSTR in RC and R0 only.
    24332438 *
     
    30483053 * @retval  VINF_SELM_SYNC_GDT in RC only - write completed.
    30493054 *
    3050  * @retval  VINF_EM_DBG_STOP in RC and R0.
    3051  * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0.
     3055 * @retval  VINF_EM_DBG_STOP in RC and R0 - write completed.
     3056 * @retval  VINF_EM_DBG_BREAKPOINT in RC and R0 - write completed.
    30523057 * @retval  VINF_EM_RAW_EMULATE_INSTR in RC and R0 only.
    30533058 *
Note: See TracChangeset for help on using the changeset viewer.

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