RE: Alpha: virt_to_bus/GFP_DMA problem

Jakma, Paul (Paul.Jakma@compaq.com)
Fri, 10 Dec 1999 15:16:31 -0000


> 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.
>

most of the PCI alpha's support scatter gather in the chipset. ie you can
dynamically setup multiple bus->phys windows in the chipset.

so you could map any part of pci bus address to anywhere in physical space.
With multiple windows you could even map a contigious pci bus space to a
fragmented range of physical addresses.

Tru64 uses this for scatter gather support, even to 4GB+ phys addresses.
However linux doesn't use this feature at all. On linux we just setup two
2GB static mappings.

> 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.
>

support for the 21172/21174 style hardware scatter gather would be nice and
generic.. :)

> Jes

paul jakma

-
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/