On Tue, Oct 09, 2001 at 04:23:49PM -0500, Shuanglin Wang wrote: > I tried to use the pci_alloc_consistent() to allocate one-page DMA'able > memory for my device driver. But, when booting up the system, it was > always failed to execute the pci_alloc_consistent() by showing some > memory errors. > > I traced the code to the function __alloc_page() in the file > mm/page_alloc.c, and found the system called "wakeup_kswapd()". But at > that time, the kswapd process pointer is a NULL pointer and the > wakeup-related codes don't check the pointer is NULL or not, so the > system was stopped because of dereferencing the null pointer. This sounds like either memory corruption has overwritten the kernel pointer or you're trying to use pci_alloc_consistent before the memory managment is initialized. > Anybody has some ideas about the problem? Or are there other convenient > methods to allocate DMA'able memory? Anything else than the pci_alloc_* functions isn't portable. Ralf