Changeset 39154 in vbox
- Timestamp:
- Oct 31, 2011 3:36:29 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
-
include/VBox/dbg.h (modified) (2 diffs)
-
include/VBox/vmm/dbgf.h (modified) (15 diffs)
-
include/VBox/vmm/iom.h (modified) (1 diff)
-
src/VBox/Devices/USB/DevOHCI.cpp (modified) (8 diffs)
-
src/VBox/VMM/VMMAll/IOMAllMMIO.cpp (modified) (10 diffs)
-
src/VBox/VMM/include/DBGFInternal.h (modified) (2 diffs)
-
src/VBox/VMM/include/PGMInternal.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/dbg.h
r35696 r39154 41 41 42 42 RT_C_DECLS_BEGIN 43 44 #ifdef IN_RING3 /* The debugger stuff is ring-3 only. */ 43 45 44 46 /** @def VBOX_WITH_DEBUGGER … … 1069 1071 DECLEXPORT(int) DBGCPlugInEntry(DBGCPLUGINOP enmOperation, PVM pVM, uintptr_t uArg); 1070 1072 1073 #endif /* IN_RING3 */ 1074 1071 1075 /** @} */ 1072 1076 -
trunk/include/VBox/vmm/dbgf.h
r38838 r39154 54 54 55 55 56 #ifdef IN_RING3 57 56 58 /** 57 59 * Mixed address. … … 124 126 VMMR3DECL(PDBGFADDRESS) DBGFR3AddrSub(PDBGFADDRESS pAddress, RTGCUINTPTR uSubtrahend); 125 127 128 #endif /* IN_RING3 */ 126 129 127 130 … … 265 268 typedef const DBGFEVENT *PCDBGFEVENT; 266 269 270 #ifdef IN_RING3 /* The event API only works in ring-3. */ 267 271 268 272 /** @def DBGFSTOP … … 272 276 * @param pVM VM Handle. 273 277 */ 274 # ifdef VBOX_STRICT275 # define DBGFSTOP(pVM) DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, __FILE__, __LINE__, __PRETTY_FUNCTION__, NULL)276 # else277 # define DBGFSTOP(pVM) VINF_SUCCESS278 # endif278 # ifdef VBOX_STRICT 279 # define DBGFSTOP(pVM) DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, __FILE__, __LINE__, __PRETTY_FUNCTION__, NULL) 280 # else 281 # define DBGFSTOP(pVM) VINF_SUCCESS 282 # endif 279 283 280 284 VMMR3DECL(int) DBGFR3Init(PVM pVM); … … 296 300 VMMR3DECL(int) DBGFR3Step(PVM pVM, VMCPUID idCpu); 297 301 VMMR3DECL(int) DBGFR3PrgStep(PVMCPU pVCpu); 302 303 #endif /* IN_RING3 */ 304 298 305 299 306 … … 377 384 typedef const DBGFBP *PCDBGFBP; 378 385 379 386 #ifdef IN_RING3 /* The breakpoint management API is only available in ring-3. */ 380 387 VMMR3DECL(int) DBGFR3BpSet(PVM pVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable, uint32_t *piBp); 381 388 VMMR3DECL(int) DBGFR3BpSetReg(PVM pVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable, … … 399 406 400 407 VMMR3DECL(int) DBGFR3BpEnum(PVM pVM, PFNDBGFBPENUM pfnCallback, void *pvUser); 408 #endif /* IN_RING3 */ 409 401 410 VMMDECL(RTGCUINTREG) DBGFBpGetDR7(PVM pVM); 402 411 VMMDECL(RTGCUINTREG) DBGFBpGetDR0(PVM pVM); … … 407 416 408 417 409 418 #ifdef IN_RING3 /* The CPU mode API only works in ring-3. */ 410 419 VMMR3DECL(CPUMMODE) DBGFR3CpuGetMode(PVM pVM, VMCPUID idCpu); 411 412 413 420 #endif 421 422 423 424 #ifdef IN_RING3 /* The info callbacks API only works in ring-3. */ 414 425 415 426 /** … … 551 562 VMMR3DECL(PCDBGFINFOHLP) DBGFR3InfoLogRelHlp(void); 552 563 553 554 564 #endif /* IN_RING3 */ 565 566 567 #ifdef IN_RING3 /* The log contrl API only works in ring-3. */ 555 568 VMMR3DECL(int) DBGFR3LogModifyGroups(PVM pVM, const char *pszGroupSettings); 556 569 VMMR3DECL(int) DBGFR3LogModifyFlags(PVM pVM, const char *pszFlagSettings); 557 570 VMMR3DECL(int) DBGFR3LogModifyDestinations(PVM pVM, const char *pszDestSettings); 558 559 571 #endif /* IN_RING3 */ 572 573 #ifdef IN_RING3 /* The debug information management APIs only works in ring-3. */ 560 574 561 575 /** Max length (including '\\0') of a symbol name. */ … … 621 635 /** The last special one. */ 622 636 #define DBGF_AS_LAST DBGF_AS_GLOBAL 637 #endif 623 638 /** The number of special address space handles. */ 624 639 #define DBGF_AS_COUNT (6U) 640 #ifdef IN_RING3 625 641 /** Converts an alias handle to an array index. */ 626 642 #define DBGF_AS_ALIAS_2_INDEX(hAlias) \ … … 663 679 VMMR3DECL(void) DBGFR3LineFree(PDBGFLINE pLine); 664 680 681 #endif /* IN_RING3 */ 682 683 #ifdef IN_RING3 /* The stack API only works in ring-3. */ 665 684 666 685 /** … … 795 814 /** Set if the content of the frame is filled in by DBGFR3StackWalk() and can be used 796 815 * to construct the next frame. */ 797 # define DBGFSTACKFRAME_FLAGS_ALL_VALIDRT_BIT(0)816 # define DBGFSTACKFRAME_FLAGS_ALL_VALID RT_BIT(0) 798 817 /** This is the last stack frame we can read. 799 818 * This flag is not set if the walk stop because of max dept or recursion. */ 800 # define DBGFSTACKFRAME_FLAGS_LASTRT_BIT(1)819 # define DBGFSTACKFRAME_FLAGS_LAST RT_BIT(1) 801 820 /** This is the last record because we detected a loop. */ 802 # define DBGFSTACKFRAME_FLAGS_LOOPRT_BIT(2)821 # define DBGFSTACKFRAME_FLAGS_LOOP RT_BIT(2) 803 822 /** This is the last record because we reached the maximum depth. */ 804 # define DBGFSTACKFRAME_FLAGS_MAX_DEPTHRT_BIT(3)823 # define DBGFSTACKFRAME_FLAGS_MAX_DEPTH RT_BIT(3) 805 824 /** 16-bit frame. */ 806 # define DBGFSTACKFRAME_FLAGS_16BITRT_BIT(4)825 # define DBGFSTACKFRAME_FLAGS_16BIT RT_BIT(4) 807 826 /** 32-bit frame. */ 808 # define DBGFSTACKFRAME_FLAGS_32BITRT_BIT(5)827 # define DBGFSTACKFRAME_FLAGS_32BIT RT_BIT(5) 809 828 /** 64-bit frame. */ 810 # define DBGFSTACKFRAME_FLAGS_64BITRT_BIT(6)829 # define DBGFSTACKFRAME_FLAGS_64BIT RT_BIT(6) 811 830 /** @} */ 812 831 … … 835 854 VMMR3DECL(void) DBGFR3StackWalkEnd(PCDBGFSTACKFRAME pFirstFrame); 836 855 837 838 856 #endif /* IN_RING3 */ 857 858 859 #ifdef IN_RING3 /* The disassembly API only works in ring-3. */ 839 860 840 861 /** Flags to pass to DBGFR3DisasInstrEx(). … … 900 921 * @thread Any EMT. 901 922 */ 902 # ifdef LOG_ENABLED903 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) \923 # ifdef LOG_ENABLED 924 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) \ 904 925 do { \ 905 926 if (LogIsEnabled()) \ 906 927 DBGFR3DisasInstrLogInternal(pVCpu, Sel, GCPtr); \ 907 928 } while (0) 908 #else 909 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) do { } while (0) 929 # else 930 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) do { } while (0) 931 # endif 910 932 #endif 911 933 912 934 935 #ifdef IN_RING3 913 936 VMMR3DECL(int) DBGFR3MemScan(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, RTGCUINTPTR cbRange, RTGCUINTPTR uAlign, 914 937 const void *pvNeedle, size_t cbNeedle, PDBGFADDRESS pHitAddress); … … 916 939 VMMR3DECL(int) DBGFR3MemReadString(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, char *pszBuf, size_t cbBuf); 917 940 VMMR3DECL(int) DBGFR3MemWrite(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, void const *pvBuf, size_t cbRead); 941 #endif 918 942 919 943 -
trunk/include/VBox/vmm/iom.h
r39111 r39154 120 120 #define IOMMMIO_FLAGS_WRITE_MODE UINT32_C(0x00000070) 121 121 122 /** Whether to do a DBGSTOP on complicated reads. 123 * What this includes depends on the read mode, but generally all misaligned 124 * reads as well as word and byte reads and maybe qword reads. */ 125 #define IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_READ UINT32_C(0x00000100) 126 /** Whether to do a DBGSTOP on complicated writes. 127 * This depends on the write mode, but generally all writes where we have to 128 * supply bytes (zero them or read them). */ 129 #define IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE UINT32_C(0x00000200) 130 122 131 /** Mask of valid flags. */ 123 #define IOMMMIO_FLAGS_VALID_MASK UINT32_C(0x00000 073)132 #define IOMMMIO_FLAGS_VALID_MASK UINT32_C(0x00000373) 124 133 /** @} */ 125 134 -
trunk/src/VBox/Devices/USB/DevOHCI.cpp
r39151 r39154 351 351 /** A flag indicating that the bulk list may have in-flight URBs. */ 352 352 bool fBulkNeedsCleaning; 353 354 /** Whether RC/R0 is enabled. */ 355 bool fRZEnabled; 353 356 354 357 uint32_t Alignment3; /**< Align size on a 8 byte boundary. */ … … 4790 4793 * @param cb The size of the read. 4791 4794 */ 4792 PDMBOTHCBDECL(int) ohci Read(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)4795 PDMBOTHCBDECL(int) ohciMmioRead(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb) 4793 4796 { 4794 4797 POHCI pOhci = PDMINS_2_DATA(pDevIns, POHCI); … … 4829 4832 * @param cb The size of the data being written. 4830 4833 */ 4831 PDMBOTHCBDECL(int) ohci Write(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb)4834 PDMBOTHCBDECL(int) ohciMmioWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb) 4832 4835 { 4833 4836 POHCI pOhci = PDMINS_2_DATA(pDevIns, POHCI); … … 4838 4841 if (cb != sizeof(uint32_t)) 4839 4842 { 4840 Log2(("ohci Write: Bad write size!!! GCPhysAddr=%RGp cb=%d\n", GCPhysAddr, cb));4843 Log2(("ohciMmioWrite: Bad write size!!! GCPhysAddr=%RGp cb=%d\n", GCPhysAddr, cb)); 4841 4844 return VINF_SUCCESS; 4842 4845 } 4843 4846 if (GCPhysAddr & 0x3) 4844 4847 { 4845 Log2(("ohci Write: Unaligned write!!! GCPhysAddr=%RGp cb=%d\n", GCPhysAddr, cb));4848 Log2(("ohciMmioWrite: Unaligned write!!! GCPhysAddr=%RGp cb=%d\n", GCPhysAddr, cb)); 4846 4849 return VINF_SUCCESS; 4847 4850 } … … 4874 4877 POHCI pOhci = (POHCI)pPciDev; 4875 4878 int rc = PDMDevHlpMMIORegister(pOhci->CTX_SUFF(pDevIns), GCPhysAddress, cb, NULL /*pvUser*/, 4876 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_PASSTHRU, 4877 ohciWrite, ohciRead, "USB OHCI"); 4879 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_DWORD_ZEROED 4880 | IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE, 4881 ohciMmioWrite, ohciMmioRead, "USB OHCI"); 4878 4882 if (RT_FAILURE(rc)) 4879 4883 return rc; 4880 4884 4881 # if 1 /* this enabled / disabled GC/R0 stuff */ 4882 rc = PDMDevHlpMMIORegisterRC(pOhci->CTX_SUFF(pDevIns), GCPhysAddress, cb, NIL_RTRCPTR /*pvUser*/, "ohciWrite", "ohciRead"); 4883 if (RT_FAILURE(rc)) 4884 return rc; 4885 4886 rc = PDMDevHlpMMIORegisterR0(pOhci->CTX_SUFF(pDevIns), GCPhysAddress, cb, NIL_RTR0PTR /*pvUser*/, "ohciWrite", "ohciRead"); 4887 if (RT_FAILURE(rc)) 4888 return rc; 4889 # endif 4885 if (pOhci->fRZEnabled) 4886 { 4887 rc = PDMDevHlpMMIORegisterRC(pOhci->CTX_SUFF(pDevIns), GCPhysAddress, cb, 4888 NIL_RTRCPTR /*pvUser*/, "ohciMmioWrite", "ohciMmioRead"); 4889 if (RT_FAILURE(rc)) 4890 return rc; 4891 4892 rc = PDMDevHlpMMIORegisterR0(pOhci->CTX_SUFF(pDevIns), GCPhysAddress, cb, 4893 NIL_RTR0PTR /*pvUser*/, "ohciMmioWrite", "ohciMmioRead"); 4894 if (RT_FAILURE(rc)) 4895 return rc; 4896 } 4890 4897 4891 4898 pOhci->MMIOBase = GCPhysAddress; … … 5366 5373 static DECLCALLBACK(int) ohciR3Construct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfg) 5367 5374 { 5368 POHCI pOhci = PDMINS_2_DATA(pDevIns, POHCI); 5369 int rc; 5375 POHCI pOhci = PDMINS_2_DATA(pDevIns, POHCI); 5370 5376 PDMDEV_CHECK_VERSIONS_RETURN(pDevIns); 5371 5372 /*5373 * Read configuration. No configuration keys are currently supported.5374 */5375 if (!CFGMR3AreValuesValid(pCfg, "\0"))5376 return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,5377 N_("Configuration error: Unknown config key"));5378 5377 5379 5378 /* … … 5409 5408 pOhci->RootHub.ILeds.pfnQueryStatusLed = ohciRhQueryStatusLed; 5410 5409 5410 5411 /* 5412 * Read configuration. No configuration keys are currently supported. 5413 */ 5414 PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns, "RZEnabled", ""); 5415 int rc = CFGMR3QueryBoolDef(pCfg, "RZEnabled", &pOhci->fRZEnabled, true); 5416 AssertLogRelRCReturn(rc, rc); 5417 5418 5411 5419 /* 5412 5420 * Register PCI device and I/O region. … … 5423 5431 aMsiReg.iMsiNextOffset = 0x0; 5424 5432 rc = PDMDevHlpPCIRegisterMsi(pDevIns, &aMsiReg); 5425 if (RT_FAILURE (rc))5433 if (RT_FAILURE(rc)) 5426 5434 { 5427 5435 PCIDevSetCapabilityList(&pOhci->PciDev, 0x0); -
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r39112 r39154 85 85 * VINF_IOM_HC_MMIO_READ may be returned. 86 86 * 87 * @param pVM The VM handle. 87 88 * @param pRange The range to write to. 88 89 * @param GCPhys The physical address to start writing. … … 90 91 * @param cbValue The size of the value to write. 91 92 */ 92 static VBOXSTRICTRC iomMMIODoComplicatedWrite(P IOMMMIORANGE pRange, RTGCPHYS GCPhys, void const *pvValue, unsigned cbValue)93 static VBOXSTRICTRC iomMMIODoComplicatedWrite(PVM pVM, PIOMMMIORANGE pRange, RTGCPHYS GCPhys, void const *pvValue, unsigned cbValue) 93 94 { 94 95 AssertReturn( (pRange->fFlags & IOMMMIO_FLAGS_WRITE_MODE) != IOMMMIO_FLAGS_WRITE_PASSTHRU … … 100 101 101 102 /* 103 * Do debug stop if requested. 104 */ 105 int rc = VINF_SUCCESS; NOREF(pVM); 106 #ifdef VBOX_STRICT 107 if (pRange->fFlags & IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE) 108 # ifdef IN_RING3 109 rc = DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, RT_SRC_POS, 110 "Complicated write %#x byte at %RGp to %s\n", cbValue, GCPhys, R3STRING(pRange->pszDesc)); 111 # else 112 return VINF_IOM_HC_MMIO_WRITE; 113 # endif 114 #endif 115 116 117 /* 102 118 * Split and conquer. 103 119 */ 104 int rc = VINF_SUCCESS;105 120 for (;;) 106 121 { … … 251 266 GCPhysFault, (void *)pvData, cb); /** @todo fix const!! */ 252 267 else 253 rc = iomMMIODoComplicatedWrite(p Range, GCPhysFault, pvData, cb);268 rc = iomMMIODoComplicatedWrite(pVM, pRange, GCPhysFault, pvData, cb); 254 269 } 255 270 else … … 271 286 * VINF_IOM_HC_MMIO_WRITE may be returned. 272 287 * 288 * @param pVM The VM handle. 273 289 * @param pRange The range to read from. 274 290 * @param GCPhys The physical address to start reading. … … 276 292 * @param cbValue The size of the value to read. 277 293 */ 278 static VBOXSTRICTRC iomMMIODoComplicatedRead(P IOMMMIORANGE pRange, RTGCPHYS GCPhys, void *pvValue, unsigned cbValue)294 static VBOXSTRICTRC iomMMIODoComplicatedRead(PVM pVM, PIOMMMIORANGE pRange, RTGCPHYS GCPhys, void *pvValue, unsigned cbValue) 279 295 { 280 296 AssertReturn( (pRange->fFlags & IOMMMIO_FLAGS_READ_MODE) == IOMMMIO_FLAGS_READ_DWORD … … 285 301 286 302 /* 303 * Do debug stop if requested. 304 */ 305 int rc = VINF_SUCCESS; NOREF(pVM); 306 #ifdef VBOX_STRICT 307 if (pRange->fFlags & IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE) 308 # ifdef IN_RING3 309 rc = DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, RT_SRC_POS, 310 "Complicated read %#x byte at %RGp to %s\n", cbValue, GCPhys, R3STRING(pRange->pszDesc)); 311 # else 312 return VINF_IOM_HC_MMIO_READ; 313 # endif 314 #endif 315 316 /* 287 317 * Split and conquer. 288 318 */ 289 int rc = VINF_SUCCESS;290 319 for (;;) 291 320 { … … 439 468 rc = pRange->CTX_SUFF(pfnReadCallback)(pRange->CTX_SUFF(pDevIns), pRange->CTX_SUFF(pvUser), GCPhys, pvValue, cbValue); 440 469 else 441 rc = iomMMIODoComplicatedRead(p Range, GCPhys, pvValue, cbValue);470 rc = iomMMIODoComplicatedRead(pVM, pRange, GCPhys, pvValue, cbValue); 442 471 } 443 472 else … … 1804 1833 pu32Value, (unsigned)cbValue); 1805 1834 else 1806 rc = iomMMIODoComplicatedRead(p Range, GCPhys, pu32Value, (unsigned)cbValue);1835 rc = iomMMIODoComplicatedRead(pVM, pRange, GCPhys, pu32Value, (unsigned)cbValue); 1807 1836 STAM_PROFILE_STOP(&pStats->CTX_SUFF_Z(ProfRead), a); 1808 1837 switch (VBOXSTRICTRC_VAL(rc)) … … 1933 1962 GCPhys, &u32Value, (unsigned)cbValue); 1934 1963 else 1935 rc = iomMMIODoComplicatedWrite(p Range, GCPhys, &u32Value, (unsigned)cbValue);1964 rc = iomMMIODoComplicatedWrite(pVM, pRange, GCPhys, &u32Value, (unsigned)cbValue); 1936 1965 STAM_PROFILE_STOP(&pStats->CTX_SUFF_Z(ProfWrite), a); 1937 1966 #ifndef IN_RING3 -
trunk/src/VBox/VMM/include/DBGFInternal.h
r37410 r39154 104 104 typedef struct DBGFINFO *PDBGFINFO; 105 105 106 #ifdef IN_RING3 106 107 /** 107 108 * Info structure. … … 160 161 char szName[1]; 161 162 } DBGFINFO; 163 #endif /* IN_RING3 */ 162 164 163 165 -
trunk/src/VBox/VMM/include/PGMInternal.h
r39078 r39154 3991 3991 int pgmGstLazyMapPml4(PVMCPU pVCpu, PX86PML4 *ppPml4); 3992 3992 3993 # if defined(VBOX_STRICT) && HC_ARCH_BITS == 64 3993 # if defined(VBOX_STRICT) && HC_ARCH_BITS == 64 && defined(IN_RING3) 3994 3994 DECLCALLBACK(int) pgmR3CmdCheckDuplicatePages(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PVM pVM, PCDBGCVAR paArgs, unsigned cArgs); 3995 3995 DECLCALLBACK(int) pgmR3CmdShowSharedModules(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PVM pVM, PCDBGCVAR paArgs, unsigned cArgs);
Note:
See TracChangeset
for help on using the changeset viewer.

