Current-Users archive

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

Re: Panic on yesterday's -current amd64



Hi,

> panic: kernel diagnostic assertion "offset < map->dm_mapsize" failed:
> file "/usr/src/sys/arch/x86/x86/bus_dma.c", line 826 bad offset 0x0 >=
> 0x0
> cpu0: Begin traceback...
> vpanic() at netbsd:vpanic+0x173
> kern_assert() at netbsd:kern_assert+0x4b
> bus_dmamap_sync() at netbsd:bus_dmamap_sync+0x326
> rge_rxeof() at netbsd:rge_rxeof+0x179

Looking at the diagnostic and the code [#], we are trying to sync a zero-
length region.  Wrapping the bus_dmamap_sync() and bus_dmamap_unload()
calls (lines 1242 to 1244) with `if (rxq->rxq_dmamap->dm_mapsize)` would
stop this panic, but it isn't immediately clear to me why we ended up with
it as zero size in the first place.

Regards,

Julian

[#] The diagnostic also fails on offset = 0 and length = 0:
  https://nxr.netbsd.org/xref/src/sys/arch/x86/x86/bus_dma.c#826
and we always have offset 0, therefore we must have length 0 here:
  https://nxr.netbsd.org/xref/src/sys/dev/pci/if_rge.c#1242
-- 


Home | Main Index | Thread Index | Old Index