NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-i386/49678: DRM errors with i386 i915drmkms on 82915GM (eeepc 900)
Date: Sun, 5 Apr 2015 16:20:12 -0400 (EDT)
From: mlh%goathill.org@localhost (MLH)
Taylor R Campbell wrote:
> Can you please CVS update to sys/dev/pci/agp_i810.c 1.118 and try
> again?
No change that I can see.
In that case, can you try the attached patch and send me the dmesg
output? You can revert the earlier one changing bus_space_map.
Index: sys/external/bsd/drm2/include/linux/pci.h
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/include/linux/pci.h,v
retrieving revision 1.15
diff -p -u -r1.15 pci.h
--- sys/external/bsd/drm2/include/linux/pci.h 6 Mar 2015 01:43:07 -0000 1.15
+++ sys/external/bsd/drm2/include/linux/pci.h 5 Apr 2015 21:44:22 -0000
@@ -481,15 +481,21 @@ pci_map_rom_md(struct pci_dev *pdev)
bus_space_handle_t rom_bsh;
int error;
- if (PCI_CLASS(pdev->pd_pa.pa_class) != PCI_CLASS_DISPLAY)
+ if (PCI_CLASS(pdev->pd_pa.pa_class) != PCI_CLASS_DISPLAY) {
+ printf("pci_map_rom_md: not display class\n");
return ENXIO;
- if (PCI_SUBCLASS(pdev->pd_pa.pa_class) != PCI_SUBCLASS_DISPLAY_VGA)
+ }
+ if (PCI_SUBCLASS(pdev->pd_pa.pa_class) != PCI_SUBCLASS_DISPLAY_VGA) {
+ printf("pci_map_rom_md: display class, not VGA subclass\n");
return ENXIO;
+ }
/* XXX Check whether this is the primary VGA card? */
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)
+ if (error) {
+ printf("pci_map_rom_md: failed to map 0x20000 @ 0xc0000\n");
return ENXIO;
+ }
pdev->pd_rom_bst = pdev->pd_pa.pa_memt;
pdev->pd_rom_bsh = rom_bsh;
@@ -513,13 +519,17 @@ pci_map_rom(struct pci_dev *pdev, size_t
(BUS_SPACE_MAP_PREFETCHABLE | BUS_SPACE_MAP_LINEAR),
&pdev->pd_rom_bst, &pdev->pd_rom_bsh, NULL, &pdev->pd_rom_size)
!= 0 &&
- pci_map_rom_md(pdev) != 0)
+ pci_map_rom_md(pdev) != 0) {
+ printf("pci_map_rom: failed to map ROM BAR\n");
+ printf("pci_map_rom: failed to map MD ROM\n");
return NULL;
+ }
pdev->pd_kludges |= NBPCI_KLUDGE_MAP_ROM;
/* 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)) {
+ printf("pci_map_rom: failed to find ROM\n");
pci_unmap_rom(pdev, NULL);
return NULL;
}
Index: sys/kern/subr_extent.c
===================================================================
RCS file: /cvsroot/src/sys/kern/subr_extent.c,v
retrieving revision 1.76
diff -p -u -r1.76 subr_extent.c
--- sys/kern/subr_extent.c 10 Jul 2014 21:13:52 -0000 1.76
+++ sys/kern/subr_extent.c 5 Apr 2015 21:44:22 -0000
@@ -600,6 +600,7 @@ extent_alloc_region(struct extent *ex, u
* The allocated region is aligned to "alignment", which must be
* a power of 2.
*/
+#include <ddb/ddb.h>
int
extent_alloc_subregion1(struct extent *ex, u_long substart, u_long subend,
u_long size, u_long alignment, u_long skew, u_long boundary,
@@ -968,6 +969,12 @@ skip:
*/
extent_insert_and_optimize(ex, newstart, size, flags, last, myrp);
mutex_exit(&ex->ex_lock);
+ if (newstart <= 0xc0000 && 0xc0000 - newstart < size) {
+ printf("%s: extent allocing vga rom: [%lu, %lu)",
+ __func__, newstart, newstart + size);
+ db_stack_trace_print((db_expr_t)(intptr_t)
+ __builtin_frame_address(0), true, 65536, "", printf);
+ }
*result = newstart;
return (0);
}
Home |
Main Index |
Thread Index |
Old Index