On Mon, Apr 24, 2000 at 03:49:21AM -0700, Ulf Carlsson wrote:
> > Modified files:
> > arch/mips/arc : memory.c
> > Log message:
> > Fix early crash on SGI_IP22 due to not reserving kernel
> > pages in the boomem setup
> This breaks on my Indy. What machine are you using? Do we know whether the
> part of memory where the kernel is loaded is reported as free memory from the
> prom or should we add some tests?
Indigo2 - I had the problem that the first alloc_bootmem i think
got back pages in the kernel marked as "free" - The resulting memset
let the kernel crash. My solution was to mark the kernel pages
BTW: What does break on indy ? Does it crash ? Does it hang in SCSI Detection ?
The SCSI detection is a different thing - The problem is that the kernel
gets loaded in a area which is from the MAX_DMA_ADDRESS DMAable memory.
Afterwards no pages are left for DMA and the generic scsi layer is not
able to get dma able pages (from zone 0 GFP_DMA) which results in error
messages in the scsi layer. I solved this by changing mm/init.c
to put ALL pages into zone 0 as from my understanding the MAX_DMA_ADDRESS
is only aplicable to PC style DMA Controllers which the indy/indigo2 hopefully
dont have. For this patch i didnt apply to CVS nobody gave back
and usefull comment.
Here is the fix i am using:
RCS file: /cvs/linux/arch/mips/mm/init.c,v
retrieving revision 1.27
diff -u -r1.27 init.c
--- init.c 2000/02/23 01:33:56 1.27
+++ init.c 2000/04/24 11:29:51
@@ -256,13 +256,16 @@
max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
low = max_low_pfn;
+#if defined(CONFIG_ISA) || defined(CONFIG_PCI)
if (low < max_dma)
zones_size[ZONE_DMA] = low;
zones_size[ZONE_DMA] = max_dma;
zones_size[ZONE_NORMAL] = low - max_dma;
+ zones_size[ZONE_DMA] = low;
Florian Lohoff email@example.com +49-subject-2-change
"Technology is a constant battle between manufacturers producing bigger and
more idiot-proof systems and nature producing bigger and better idiots."