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.
I'm working on a MIPS SEAD-2 board using Linux kernel 2.4.3 MIPS
Anybody has some ideas about the problem? Or are there other
convenient methods to allocate DMA'able memory?
Atmel Multimedia & Communications
3800 Gateway Centre, Suite 311
Morrisville, NC 27560