2011-02-01 05:22:29

by FUJITA Tomonori

[permalink] [raw]
Subject: Re: b44 driver causes panic when using swiotlb

On Mon, 31 Jan 2011 21:22:23 -0600
Robert Hancock <[email protected]> wrote:

> > Some ideas to implement something that works for such device were
> > discussed. Seems that the conclusion is that it's doesn't worth making
> > the common code complicated for such minor and insane devices.
>
> I don't think this is the only device that has sub-32-bit DMA
> restrictions, this will just lead to a bunch of duplicated code.

Yeah, not only device but not many.

The block layer has the own bouncing mechanism. Some network drivers
have the similar bouncing code. I don't know if there are other kinds
of drivers that have the own bouncing code.

I thought that we can make mm/bounce.c (used for block drivers now)
work any drivers without complicating it. We could make swiotlb to do
but it's too complicated and it doesn't worth.


> In
> particular, how is LPC DMA supposed to work?

LPC DMA can't do 32bit dma?


> At the very least we should be allowing the driver to deal with the
> failure instead of panicing the system. Otherwise we are just leaving a
> land mine for people to trip over.

Agreed. swiotlb shouldn't panic in this case. I'll take care of it.


2011-02-15 00:47:43

by Robert Hancock

[permalink] [raw]
Subject: Re: b44 driver causes panic when using swiotlb

On 01/31/2011 11:22 PM, FUJITA Tomonori wrote:
> On Mon, 31 Jan 2011 21:22:23 -0600
> Robert Hancock<[email protected]> wrote:
>
>>> Some ideas to implement something that works for such device were
>>> discussed. Seems that the conclusion is that it's doesn't worth making
>>> the common code complicated for such minor and insane devices.
>>
>> I don't think this is the only device that has sub-32-bit DMA
>> restrictions, this will just lead to a bunch of duplicated code.
>
> Yeah, not only device but not many.
>
> The block layer has the own bouncing mechanism. Some network drivers
> have the similar bouncing code. I don't know if there are other kinds
> of drivers that have the own bouncing code.
>
> I thought that we can make mm/bounce.c (used for block drivers now)
> work any drivers without complicating it. We could make swiotlb to do
> but it's too complicated and it doesn't worth.
>
>
>> In
>> particular, how is LPC DMA supposed to work?
>
> LPC DMA can't do 32bit dma?

At least not if it's using ISA-style 3rd-party DMA. Some devices may do
bus-mastering and be able to do 32-bit DMA, but I've never seen one, at
least.

>
>
>> At the very least we should be allowing the driver to deal with the
>> failure instead of panicing the system. Otherwise we are just leaving a
>> land mine for people to trip over.
>
> Agreed. swiotlb shouldn't panic in this case. I'll take care of it.