diff --git a/sys/arch/x86/x86/bus_space.c b/sys/arch/x86/x86/bus_space.c index f06321b..c9d4ca3 100644 --- a/sys/arch/x86/x86/bus_space.c +++ b/sys/arch/x86/x86/bus_space.c @@ -153,6 +153,8 @@ x86_bus_space_mallocok(void) ioport_malloc_safe = 1; } +#include + int bus_space_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, int flags, bus_space_handle_t *bshp) @@ -161,6 +163,12 @@ bus_space_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, bus_space_tag_t it; int error; + if ((bpa <= 0xc0000 && 0xc0000 - bpa < size )) { + printf("%s: mapping vga rom\n", __func__); + db_stack_trace_print((db_expr_t)(intptr_t) + __builtin_frame_address(0), true, 65536, "", printf); + } + if ((t->bst_exists & BUS_SPACE_OVERRIDE_MAP) == 0) ; /* skip override */ else for (it = t; it != NULL; it = it->bst_super) { @@ -169,11 +177,19 @@ bus_space_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, return (*it->bst_ov->ov_space_map)(it->bst_ctx, t, bpa, size, flags, bshp); } + if ((bpa <= 0xc0000 && 0xc0000 - bpa < size )) + aprint_normal("%s: %s:%d %08x %08x %08x %08x %08x\n", + __func__, __FILE__,__LINE__, + (unsigned int) t, (unsigned int) bpa, + size, flags, (unsigned int) &bsr); error = bus_space_reserve(t, bpa, size, flags, &bsr); if (error != 0) return error; + if ((bpa <= 0xc0000 && 0xc0000 - bpa < size )) + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); + error = bus_space_reservation_map(t, &bsr, flags, bshp); if (error != 0) bus_space_release(t, &bsr); diff --git a/sys/external/bsd/drm2/dist/drm/drm_stub.c b/sys/external/bsd/drm2/dist/drm/drm_stub.c index 550a653..767751e 100644 --- a/sys/external/bsd/drm2/dist/drm/drm_stub.c +++ b/sys/external/bsd/drm2/dist/drm/drm_stub.c @@ -42,7 +42,7 @@ #include #include -unsigned int drm_debug = 0; /* 1 to enable debug output */ +unsigned int drm_debug = 4; /* 1 to enable debug output */ EXPORT_SYMBOL(drm_debug); unsigned int drm_rnodes = 0; /* 1 to enable experimental render nodes API */ diff --git a/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c b/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c index b7b7ffd..e9e5ab8 100644 --- a/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c +++ b/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c @@ -936,11 +936,13 @@ intel_parse_bios(struct drm_device *dev) dev_priv->opregion.vbt = NULL; } + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); if (bdb == NULL) { struct vbt_header *vbt = NULL; size_t size; int i; + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); bios = pci_map_rom(pdev, &size); if (!bios) return -1; diff --git a/sys/external/bsd/drm2/include/linux/pci.h b/sys/external/bsd/drm2/include/linux/pci.h index b0425cd..ad8c007 100644 --- a/sys/external/bsd/drm2/include/linux/pci.h +++ b/sys/external/bsd/drm2/include/linux/pci.h @@ -475,6 +475,8 @@ pci_unmap_rom(struct pci_dev *pdev, void __pci_rom_iomem *vaddr __unused) static int pci_map_rom_md(struct pci_dev *pdev) { +aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); + #if defined(__i386__) || defined(__x86_64__) || defined(__ia64__) const bus_addr_t rom_base = 0xc0000; const bus_size_t rom_size = 0x20000; @@ -486,11 +488,25 @@ pci_map_rom_md(struct pci_dev *pdev) if (PCI_SUBCLASS(pdev->pd_pa.pa_class) != PCI_SUBCLASS_DISPLAY_VGA) return ENXIO; /* XXX Check whether this is the primary VGA card? */ + + aprint_normal("%s: %s:%d %08lx bsh(%08lx) size(%08lx)\n", + __func__, __FILE__,__LINE__, + (long unsigned int) pdev->pd_pa.pa_memt, + (long unsigned int) rom_bsh, + (long unsigned int) rom_size + ); error = bus_space_map(pdev->pd_pa.pa_memt, rom_base, rom_size, (BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE), &rom_bsh); if (error) return ENXIO; + aprint_normal("%s: %s:%d %08lx bsh(%08lx) size(%08lx)\n", + __func__, __FILE__,__LINE__, + (long unsigned int) pdev->pd_pa.pa_memt, + (long unsigned int) rom_bsh, + (long unsigned int) rom_size + ); + pdev->pd_rom_bst = pdev->pd_pa.pa_memt; pdev->pd_rom_bsh = rom_bsh; pdev->pd_rom_size = rom_size; @@ -507,6 +523,7 @@ pci_map_rom(struct pci_dev *pdev, size_t *sizep) bus_space_handle_t bsh; bus_size_t size; + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); KASSERT(!ISSET(pdev->pd_kludges, NBPCI_KLUDGE_MAP_ROM)); if (pci_mapreg_map(&pdev->pd_pa, PCI_MAPREG_ROM, PCI_MAPREG_TYPE_ROM, @@ -517,6 +534,8 @@ pci_map_rom(struct pci_dev *pdev, size_t *sizep) return NULL; pdev->pd_kludges |= NBPCI_KLUDGE_MAP_ROM; + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); + /* XXX This type is obviously wrong in general... */ if (pci_find_rom(&pdev->pd_pa, pdev->pd_rom_bst, pdev->pd_rom_bsh, pdev->pd_rom_size, PCI_ROM_CODE_TYPE_X86, &bsh, &size)) { @@ -524,9 +543,15 @@ pci_map_rom(struct pci_dev *pdev, size_t *sizep) return NULL; } + aprint_normal("%s: %s:%d\n",__func__, __FILE__,__LINE__); KASSERT(size <= SIZE_T_MAX); *sizep = size; pdev->pd_rom_vaddr = bus_space_vaddr(pdev->pd_rom_bst, bsh); + aprint_normal("%s: %s:%d size(%08x) rom_size(%08x)\n", + __func__, __FILE__,__LINE__, + size, + pdev->pd_rom_size + ); return pdev->pd_rom_vaddr; }