Re: Alpha: virt_to_bus/GFP_DMA problem

Jes Sorensen (Jes.Sorensen@cern.ch)
10 Dec 1999 15:35:43 +0100


>>>>> "Ingo" == Ingo Molnar <mingo@chiara.csoma.elte.hu> writes:

Ingo> On Fri, 10 Dec 1999, Thomas Sailer wrote:

>> Anyway, the following patch should safely disable recording when
>> virt_to_bus(kmalloc(GFP_DMA)) > 16M. Playback should still work, as
>> interestingly the playback controller has a full 32bit address
>> register.

Ingo> ack, now i understand, this is on the _Alpha_, stupid me. It
Ingo> should be really trivial to create a 16MB GFP_DMA zone on the
Ingo> Alpha (right now it creates one single zone). Could you try the
Ingo> attached patch?

How can this work, if the device only respects the lower 24 bit of the
address it is given? If it sets up a DMA cycle at that address,
whereas system memory as seen from the bus starts at say 1GB, then the
behavior of the machine is unspecified: it may reject the cycle (I
guess, need to check PCI docs for that) or allow the DMA data to go
somewhere random - hopefully just into blue air.

In this situation we simply have to say this device does not work in
this box and not allow it to be initialized.

Ingo> probably the right solution is to introduce an Alpha-specific
Ingo> DMA24BIT zone?

Hmmm, there are several devices out there that will only do 24bit,
30bit and 31bit DMA respectively - we need a generic solution I think.

Jes

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/