Alpha: virt_to_bus/GFP_DMA problem

Thomas Sailer (sailer@ife.ee.ethz.ch)
Fri, 10 Dec 1999 12:19:33 +0100


The ESS Solo1 PCI sound chip only implements a 24bit BMDMA
address register for recording. The driver basically does
virt_to_bus(kmalloc(..,GFP_DMA)) to get its DMA buffer,
however eg. Pyxis virt_to_bus

__EXTERN_INLINE unsigned long pyxis_virt_to_bus(void * address)
{
return virt_to_phys(address) + PYXIS_DMA_WIN_BASE;
}

#define PYXIS_DMA_WIN_BASE (1UL*1024*1024*1024)
#define PYXIS_DMA_WIN_SIZE (2UL*1024*1024*1024)

makes it clear that the resulting address will never be
below 16M. Currently, the driver panics (because
it asked for memory whose bus address is below 16M,
what the meaning of GFP_DMA is, but got something else).
What should the driver do?

Tom

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