Hi, Thanks for the info. You mentioned that modern kernels should be allocating DMA-safe buffers from a region in RAM known to be safe from this bug. I'm actually getting that warning, but I'm using linux 2.4.5-rmk6-np1 kernel, on an assabet/neponset-like board. Do you know where the kernel allocates this region, or how I could get around this problem? Thanks again, Neil -----Original Message----- From: John Dorsey [mailto:[EMAIL PROTECTED]] Sent: Thursday, June 28, 2001 9:33 PM To: Yang, Neil L Cc: Linux-Arm-Kernel-Mailing-List (E-Mail); '[EMAIL PROTECTED]' Subject: Re: What does this code snippet check for? On Thursday, June 28, 2001, at 09:19 PM, Yang, Neil L wrote: > if( (((unsigned long)td->hwCBP) & 0x100000) ) { > printk("td_fill() hwCBP %p, a20!\n", (void *)td->hwCBP); > > } See the SA-1111 specification update. DMA transfers having a particular address bit set generate an erroneous SDRAM AUTOPRECHARGE command, which can result in corruption. (The bit is always A10 on the SDRAM, but from the perspective of software, the bit can be in different locations depending on the SDRAM row/column geometry.) Testing just for A20 is insufficient; I think sa1111_check_dma_bug() in dma-sa1111.c is more thorough. In modern kernels, SA-1111 drivers should be allocating DMA-safe buffers from a region in low SDRAM known to have immunity from this bug. -jd _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: http://lists.sourceforge.net/lists/listinfo/linux-usb-devel