tech-kern archive

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

_bus_dmamap_sync fires assertion



Hello

I am still working on ucom console. boot -a works, DDB works, exitting DDB
crashes.

There is an assertion in _bus_dmamap_sync() that fires:
829                     KASSERTMSG(len <= map->dm_mapsize - offset,
830                         "bad length 0x%"PRIxBUSADDR" + 0x%"PRIxBUSSIZE
831                         " > 0x%"PRIxBUSSIZE,
832                         offset, len, map->dm_mapsize);

Values are len = 472, map->dm_mapsize = 4096, offset = 3712.
I get there this way:
#22 0xffffffff8059cf58 in _bus_dmamap_sync (t=<optimized out>, ops=4, len=472, 
    offset=3712, map=0xffff85c4fbc16348)
    at /usr/src/sys/arch/x86/x86/bus_dma.c:829
#23 bus_dmamap_sync (t=<optimized out>, p=0xffff85c4fbc16348, o=3712, l=472, 
    ops=4) at /usr/src/sys/arch/x86/x86/bus_dma.c:1394
#24 0xffffffff804b2301 in usb_syncmem (p=<optimized out>, 
    offset=<optimized out>, len=<optimized out>, ops=<optimized out>)
    at /usr/src/sys/dev/usb/usb_mem.c:420
#25 0xffffffff806ff3ed in xhci_device_bulk_start (xfer=0xffff85c518812a38)
    at /usr/src/sys/dev/usb/xhci.c:4753

Here dma->udma_offs = 3712, len = 472. 
4753                    usb_syncmem(dma, 0, len,
4754                        isread ? BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE);

The 3712 comes from the USB xfer: ux_dmabuf.udma_offs = 3712
The error is cryptic. What am I doing wrong?

-- 
Emmanuel Dreyfus
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index