- Timestamp:
- Nov 21, 2019 12:26:38 PM (5 years ago)
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 2 edited
-
DevVGA.cpp (modified) (9 diffs)
-
DevVGA.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r82076 r82078 58 58 59 59 /** Check buffer if an VRAM offset is within the right range or not. */ 60 #if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) 60 #if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) || (defined(IN_RING0) && defined(VGA_WITH_PARTIAL_RING0_MAPPING)) 61 61 # define VERIFY_VRAM_WRITE_OFF_RETURN(pThis, off) \ 62 62 do { \ … … 79 79 80 80 /** Check buffer if an VRAM offset is within the right range or not. */ 81 #if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) 81 #if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) || (defined(IN_RING0) && defined(VGA_WITH_PARTIAL_RING0_MAPPING)) 82 82 # define VERIFY_VRAM_READ_OFF_RETURN(pThis, off, rcVar) \ 83 83 do { \ … … 1219 1219 return VINF_SUCCESS; 1220 1220 } 1221 #endif 1221 1222 #endif /* CONFIG_BOCHS_VBE */ 1222 1223 1223 1224 /* called for accesses between 0xa0000 and 0xc0000 */ … … 6634 6635 Log(("!!WARNING!!: pThis->dev.uDevFn=%d (ignore if testcase or not started by Main)\n", pPciDev->uDevFn)); 6635 6636 6636 # ifdef VBOX_WITH_VMSVGA6637 # ifdef VBOX_WITH_VMSVGA 6637 6638 pThis->hIoPortVmSvga = NIL_IOMIOPORTHANDLE; 6638 6639 pThis->hMmio2VmSvgaFifo = NIL_PGMMMIO2HANDLE; … … 6653 6654 pPciDev->pfnRegionLoadChangeHookR3 = vgaR3PciRegionLoadChangeHook; 6654 6655 } 6655 # endif /* VBOX_WITH_VMSVGA */6656 # endif /* VBOX_WITH_VMSVGA */ 6656 6657 6657 6658 /* … … 6663 6664 AssertLogRelRCReturn(rc, PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS, 6664 6665 N_("Failed to allocate %u bytes of VRAM"), pThis->vram_size)); 6665 pThis->vram_ptrR0 = (RTR0PTR)pThis->vram_ptrR3; /** @todo @bugref{1865} Map parts into R0 or just use PGM access (Mac only). */ 6666 # ifndef VGA_WITH_PARTIAL_RING0_MAPPING 6667 pThis->vram_ptrR0 = (RTR0PTR)pThis->vram_ptrR3; 6668 # endif 6666 6669 6667 6670 /* … … 6678 6681 * Register I/O ports. 6679 6682 */ 6680 # define REG_PORT(a_uPort, a_cPorts, a_pfnWrite, a_pfnRead, a_szDesc, a_phIoPort) do { \6683 # define REG_PORT(a_uPort, a_cPorts, a_pfnWrite, a_pfnRead, a_szDesc, a_phIoPort) do { \ 6681 6684 rc = PDMDevHlpIoPortCreateFlagsAndMap(pDevIns, a_uPort, a_cPorts, IOM_IOPORT_F_ABS, \ 6682 6685 a_pfnWrite, a_pfnRead, "VGA - " a_szDesc, NULL /*paExtDescs*/, a_phIoPort); \ … … 6697 6700 REG_PORT(0x3da, 1, vgaIoPortCgaFcrWrite, vgaIoPortCgaStRead, "CGA Feature / status", &pThis->hIoPortCgaFcrSt); 6698 6701 6699 # ifdef CONFIG_BOCHS_VBE6702 # ifdef CONFIG_BOCHS_VBE 6700 6703 REG_PORT(0x1ce, 1, vgaIoPortWriteVbeIndex, vgaIoPortReadVbeIndex, "VBE Index", &pThis->hIoPortVbeIndex); 6701 6704 REG_PORT(0x1cf, 1, vgaIoPortWriteVbeData, vgaIoPortReadVbeData, "VBE Data", &pThis->hIoPortVbeData); 6702 # endif /* CONFIG_BOCHS_VBE */6703 6704 # ifdef VBOX_WITH_HGSMI6705 # endif /* CONFIG_BOCHS_VBE */ 6706 6707 # ifdef VBOX_WITH_HGSMI 6705 6708 /* Use reserved VGA IO ports for HGSMI. */ 6706 6709 REG_PORT(VGA_PORT_HGSMI_HOST, 4, vgaR3IOPortHgsmiWrite, vgaR3IOPortHgmsiRead, "HGSMI host (3b0-3b3)", &pThis->hIoPortHgsmiHost); 6707 6710 REG_PORT(VGA_PORT_HGSMI_GUEST, 4, vgaR3IOPortHgsmiWrite, vgaR3IOPortHgmsiRead, "HGSMI guest (3d0-3d3)", &pThis->hIoPortHgsmiGuest); 6708 # endif /* VBOX_WITH_HGSMI */6709 6710 # undef REG_PORT6711 # endif /* VBOX_WITH_HGSMI */ 6712 6713 # undef REG_PORT 6711 6714 6712 6715 /* vga mmio */ … … 7388 7391 * Map the start of the VRAM into this context. 7389 7392 */ 7390 # if defined(VBOX_WITH_2X_4GB_ADDR_SPACE) 7393 # if defined(VBOX_WITH_2X_4GB_ADDR_SPACE) || (defined(IN_RING0) && defined(VGA_WITH_PARTIAL_RING0_MAPPING)) 7391 7394 rc = PDMDevHlpMmio2SetUpContext(pDevIns, pThis->hMmio2VRam, 0 /* off */, VGA_MAPPING_SIZE, (void **)&pThis->CTX_SUFF(vram_ptr)); 7392 7395 AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMmio2SetUpContext(,VRAM,0,%#x,) -> %Rrc\n", VGA_MAPPING_SIZE, rc), rc); -
trunk/src/VBox/Devices/Graphics/DevVGA.h
r82076 r82078 74 74 #endif 75 75 76 /** The size of the VGA GC mapping. 76 /** The size of the VGA ring-0 and raw-mode mapping. 77 * 77 78 * This is supposed to be all the VGA memory accessible to the guest. 78 79 * The initial value was 256KB but NTAllInOne.iso appears to access more … … 82 83 */ 83 84 #define VGA_MAPPING_SIZE _512K 84 85 /** Enables partially mapping the VRAM into ring-0 rather than using the ring-3. 86 * The VGA_MAPPING_SIZE define sets the number of bytes that will be mapped. */ 87 #define VGA_WITH_PARTIAL_RING0_MAPPING 85 88 86 89 #define MSR_COLOR_EMULATION 0x01
Note:
See TracChangeset
for help on using the changeset viewer.

