Re: DECstation crashes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 9 Feb 2001, Karsten Merker wrote:

> Do other Linux/MIPS-targets besides the DECstations show similar problems
> (kernel crash due to NULL-pointer dereference in __free_pages_ok just
> after mounting the rootfs) or is this a decstation-specific effect? The
> problems happens both on R3k and R4k (tested on 5000/20 and 5000/150).

 The following patch should fix it.  Hmm, I wonder how it worked before at
all...  There is a related small fix for ARC included.  Ralf, please apply
these changes.

 Still 2.4.1 is rather unstable here -- it crashes silently under moderate
system activity after boot.  If nothing gets executed the system survives
for long.  A single `ls -la' is able to kill it if unfortunate enough,
though.  I'm still using 2.4.0-test12 taken on Jan 10, which is rock solid
apart from a single libtool script which kills it repeatedly always at the
same point (currently investigating it).

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

patch-mips-2.4.1-20010208-mem_map-43
diff -up --recursive --new-file linux-mips-2.4.1-20010208.macro/arch/mips/arc/memory.c linux-mips-2.4.1-20010208/arch/mips/arc/memory.c
--- linux-mips-2.4.1-20010208.macro/arch/mips/arc/memory.c	Wed Jan 17 05:25:58 2001
+++ linux-mips-2.4.1-20010208/arch/mips/arc/memory.c	Sun Feb 11 11:19:37 2001
@@ -145,7 +145,7 @@ prom_free_prom_memory (void)
 			      + boot_mem_map.map[i].size) {
 			ClearPageReserved(virt_to_page(__va(addr)));
 			set_page_count(virt_to_page(__va(addr)), 1);
-			free_page(__va(addr));
+			free_page((unsigned long)__va(addr));
 			addr += PAGE_SIZE;
 			freed += PAGE_SIZE;
 		}
diff -up --recursive --new-file linux-mips-2.4.1-20010208.macro/arch/mips/dec/prom/memory.c linux-mips-2.4.1-20010208/arch/mips/dec/prom/memory.c
--- linux-mips-2.4.1-20010208.macro/arch/mips/dec/prom/memory.c	Tue Dec 12 05:26:20 2000
+++ linux-mips-2.4.1-20010208/arch/mips/dec/prom/memory.c	Sun Feb 11 11:41:12 2001
@@ -108,10 +108,10 @@ void __init prom_meminit(unsigned int ma
 		rex_setup_memory_region();
 }
 
-void prom_free_prom_memory (void)
+void __init prom_free_prom_memory (void)
 {
 	unsigned long addr, end;
-	extern	char _ftext;
+	extern char _ftext;
 
 	/*
 	 * Free everything below the kernel itself but leave
@@ -126,16 +126,16 @@ void prom_free_prom_memory (void)
 	 * XXX: save this address for use in dec_lance.c?
 	 */
 	if (IOASIC)
-		end = PHYSADDR(&_ftext) - 0x00020000;
+		end = __pa(&_ftext) - 0x00020000;
 	else
 #endif
-		end = PHYSADDR(&_ftext);
+		end = __pa(&_ftext);
 
 	addr = PAGE_SIZE;
 	while (addr < end) {
-		ClearPageReserved(virt_to_page(addr));
-		set_page_count(virt_to_page(addr), 1);
-		free_page(addr);
+		ClearPageReserved(virt_to_page(__va(addr)));
+		set_page_count(virt_to_page(__va(addr)), 1);
+		free_page((unsigned long)__va(addr));
 		addr += PAGE_SIZE;
 	}
 



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux