Subject: kernel hang indigo2 current cvs more specific

From: Florian Lohoff <[email-masked]>
Date: Tue, 4 Apr 2000 01:54:30 +0200

Ok,
i debugged a bit arround and found that the current CVS kernel
hang at "alloc_page.c" (For SGI_IP22)

        lmem_map = (struct page *) alloc_bootmem_node(nid, map_size);

I had a small look into the function alloc_bootmem_node/core but didnt
understand a word.

Flo
-- 
Florian Lohoff		[email-masked]		      	+49-5241-470566
"Technology is a constant battle between manufacturers producing bigger and
more idiot-proof systems and nature producing bigger and better idiots."

---

From: Florian Lohoff <[email-masked]>
Date: Tue, 4 Apr 2000 10:22:52 +0200

> I had a small look into the function alloc_bootmem_node/core but didnt

Reduced it even more - At the end of alloc_bootmem_core the memset is
the fault - It seems to overwrite something and/or does not return.

My suspicion is that the memory map(s) are not correct and initializing
existing memory causes this fault.

Flo

---

From: Geert Uytterhoeven <[email-masked]>
Date: Tue, 4 Apr 2000 10:59:43 +0200 (MET DST)

> existing memory causes this fault.

Perhaps this helps: the bootmem stuff in arch/mips/ddb5074/prom.c works fine.
The DDB5074 has 64 MB of fixed non-upgradable memory at physical 0x00000000
virtual 0x80000000.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven ------------- Sony Software Development Center Europe (SDCE)
[email-masked] ------------------- Sint-Stevens-Woluwestraat 55
Voice +32-2-7248638 Fax +32-2-7262686 ---------------- B-1130 Brussels, Belgium

---

From: Florian Lohoff <[email-masked]>
Date: Tue, 4 Apr 2000 21:02:57 +0200

> The DDB5074 has 64 MB of fixed non-upgradable memory at physical 0x00000000

Do you or anyone else have a clue why i cant find anything like this

    bootmap_size = init_bootmem(start_pfn, mem_size >> PAGE_SHIFT);

    /* Free the entire available memory after the _end symbol.  */
    free_start += bootmap_size;
    free_bootmem(free_start, free_end-free_start);

in the arch/mips/sgi/kernel/ directory ? Could it be that this structure
is new and has never been implemented for the IP22 ?

Yep - Thats it - In 2.3.21 this init_bootmem thing doesnt exists - And though
dec hasnt got it - In 2.3.99pre3 the dec has it - But not the sgi *grrrrr*

Flo

---

From: Florian Lohoff <[email-masked]>
Date: Tue, 4 Apr 2000 21:11:17 +0200

> dec hasnt got it - In 2.3.99pre3 the dec has it - But not the sgi *grrrrr*

Ops - Better look around before writing mails - arc ... 

Flo

---

From: Florian Lohoff <[email-masked]>
Date: Tue, 4 Apr 2000 22:34:15 +0200

> The DDB5074 has 64 MB of fixed non-upgradable memory at physical 0x00000000

IIRC the Virtual/Physical mapping is on the Mips cpus 1:1 on bootup right ?
So what would one pass to init_bootmem and co ?

At the moment i see start 0x8800 and size 0xff85 

Then - A bit later - the bitmap gets allocated (Free all - allocate/reserve
back - Changed that - Not the fault) ~0x1ff4 bytes ~2 Pages - I tried
to increase this (bootmap_size*4) but still in the mm/bootmem.c
the machine crashes in the memset as it trys to memset to 0
from 88002000 and ~4MB ... The most interesting thing is that even
if i increase the bootmap_size (*4) the memset begins at the same address - 
It seems that it doesnt care on allocation.

I had a look at the end of mm/bootmem.c:__alloc_bootmem_core
and saw that it trys to memset from 0x88002000.

So currently i think i lost the overview and something very obvious goes
on ...

Flo