Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

current kernel boot problem



Hi

Latest my kenrel based on 2009/06/27 23:29 UTC, boot failed with
KASSERT((boundary & (boundary - 1)) == 0) in uvm_pglistalloc().

After checking stack trace, the problem seems to come from:
drm_pci_alloc() in sys/external/bsd/drm/dist/bsd-core/drm_pci.c.

drm_pci_alloc() calls bus_dmamem_alloc() with fourth parameter
(boundary) as maxaddr which is 0xffffffff in i915_init_phys_hws() in
sys/external/bsd/drm/dist/shared-core/i915_dma.c.

Reverting "boundary" parameter to 0 fix the crash though I don't know
it is the right fix.

Index: external/bsd/drm/dist/bsd-core/drm_pci.c
===================================================================
RCS file: /cvs/src/sys/external/bsd/drm/dist/bsd-core/drm_pci.c,v
retrieving revision 1.1.1.1.2.3
diff -u -r1.1.1.1.2.3 drm_pci.c
--- external/bsd/drm/dist/bsd-core/drm_pci.c    21 Jun 2009 08:34:46 -0000      
1.1.1.1.2.3
+++ external/bsd/drm/dist/bsd-core/drm_pci.c    28 Jun 2009 04:18:16 -0000
@@ -112,7 +112,7 @@
 #elif   defined(__NetBSD__)
        dmah->tag = dev->pa.pa_dmat;
 
-       if ((ret = bus_dmamem_alloc(dmah->tag, size, align, maxaddr,
+       if ((ret = bus_dmamem_alloc(dmah->tag, size, align, 0,
            dmah->segs, 1, &nsegs, BUS_DMA_WAITOK)) != 0) {
                printf("drm: Unable to allocate %zu bytes of DMA, error %d\n",
                    size, ret);


Best regards.

-- 
Takahiro Kambe <taca%back-street.net@localhost>


Home | Main Index | Thread Index | Old Index