On Friday 09 January 2004 04:03 am, Ulrich Harttig wrote: > But again I ran into a problem: Once a day I would get the > following error kernel message (20 to 30 of them). > kernel: pci_map_sg failed: could not allocate dma page tables > kernel: isp0: unable to dma map request > > Afterwards the machine would work without any more of these > messages. But tonight the machine would hang after the dma > problem and had to be rebooted > > Does anyone have an idea what the cause of the dma allocation > problem could be ? Faulty harddrives, faulty controller ??
Hmm. It looks like the driver tried to do mapping as if the machine had a 32-bit address space. IIRC what it's supposed to do is when it grabs some memory for PCI DMA mapping, it's supposed to pass a flag signifying that the DMA region should be accessible via 32-bit physical addressing. Otherwise PCI devices would likely have some trouble getting to it! Apparently that flag didn't get passed somewhere, and the prospective DMA buffer got allocated way high in the 64-bit address space. So it couldn't be set up as a DMA buffer, and the kernel's PCI DMA mapper spit it back. By my understanding, that's a fairly common mistake when porting kernel drivers to 64-bit architectures. I'll take a look at the source code this afternoon and see what I can spot. -- Kelledin "If a server crashes in a server farm and no one pings it, does it still cost four figures to fix?"

