Re: USB transfer_buffer allocations on 64bit systems

From: Andi Kleen
Date: Mon Apr 12 2010 - 08:47:14 EST


On Mon, Apr 12, 2010 at 02:32:38PM +0200, Daniel Mack wrote:
> Another detail I can't explain is that on his machine, the kernel oopses
> when kmalloc() with GFP_DMA32 is used. The patch to try this also only
> touched the allocation in sound/usb/caiaq/audio.c.

Where did it oops?

>
> > > The only which solved this problem was the first patch sent to me by
> > > Daniel Mack. I've been using it for days straight and it works fine.
> >
> > Can you send a full boot log?
>
> He just did. I put it online here:
>
> http://caiaq.de/download/tmp/pedro-dmesg

The system seems to set up the soft iotlb correctly.

[ 0.468472] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.468539] Placing 64MB software IO TLB between ffff880020000000 - ffff880024000000
[ 0.468610] software IO TLB at phys 0x20000000 - 0x24000000

Also if that was wrong a lot more things would go wrong.

I would suspect the driver. Are you sure:

- it sets up it's dma_masks correctly?
- it uses pci_map_single/sg correctly for all transferred data?

-Andi

--
ak@xxxxxxxxxxxxxxx -- Speaking for myself only.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/