On Thu, Jan 01, 2004 at 11:31:17PM +0100, Andi Kleen wrote: > Arjan van de Ven writes: > > > > This is the first time I've seen this bug (thanks again for reporting it) > > and it's clearly an API violation of the ONE API in linux which is very well > > documented so no other platform will have copied this bad bug... Adaptect > > It may be well documented, but ports do not follow the documentation > very well in that area. In particular i386 handles the consistent dma mask > completely different than all the 64bit ports. Small overview: > > Architecture pci_alloc_consistent uses > i386 normal dma mask .... but clipped to 32 bit > most 64bit archs/old x86-64 hardcoded 0xffffffff > newer IA64/some x86-64 consistent dma mask (2) > newest x86-64 normal dma mask & consistent dma mask (1) (2) > old redhat IA64 hardcoded 0xffffffffffffffff (?) not just old RH; At least one old SuSE too :0 (in fact I found a previous report claiming this only affected SuSE but it seems we're in the same boat now) > > (1) to be bug-to-bug compatible with i386, some drivers rely on that. > (2) consistent dma mask is normally equivalent to hardcoded 0xffffffff > because that is the default value > > It's quite a mess unfortunately. Due to (2) the 64bit architectures > are consistent, except for that old IA64. But i386 doing something > different is quite a problem. but i386 will *never* return > 32 bit at least.