panic in bus_dma_tag_destroy()

Chuck Tuffli chuck_tuffli at agilent.com
Sun Oct 10 19:46:13 PDT 2004


On Sun, Oct 10, 2004 at 12:13:53PM -0700, Matthew Dillon wrote:
. ..
> :Probably, this is a driver bug, which is fine by me, but there are a
> :couple of disk drivers which do something similar (adv_pci.c,
> :adw_pci.c, bt_pci.c, mpt_pci.c) and maybe some other non-disk drivers
> :(didn't look).
> 
>      No, these guys are doing something different.  Their malloc()'s,
>      are based on the maximum number of requests, which is some fairly
>      small number, not on the maximum size of the DMA space.
> 
>      e.g. the MPT driver:
. ..

No, I'm not refering to the malloc()'s in the driver. I'm refering to
the malloc that bus_dma_tag_create() does internally (i.e. the driver
has no visibility to this malloc). Take a look at line 158 in

src/sys/i386/i386/busdma_machdep.c

That is that malloc at issue. This is involked in the mpt driver on
line 504 in

src/sys/dev/disk/mpt/mpt_pci.c

with the 4th to the last argument causing the problem. I'm pretty sure
that mpt_pci.c will fail in the same way my driver did as I used
mpt_pci.c as a template :)
That said, I changed the bus_dma_tag_create() in my driver to look
like what isp does, and this problem goes away.

Would it be clearer if I submitted patches for the above 4 drivers? I
know what to do for the drivers, but not how best to protect
bus_dma_tag_create().

-- 
Chuck Tuffli
Agilent Technologies





More information about the Bugs mailing list