Subject: 2.5 crash on boot

From: Brian Murphy <[email-masked]>
Date: Tue, 01 Jul 2003 19:56:39 +0200

Hi,

I get this now when my system (working well with 2.4) attempts to
read from the disk on my system:

Freeing unused kernel memory: 88k freed      
Unable to handle kernel paging request at virtual address 07cac000, epc 
== 8005c
Oops in arch/mips/mm/fault.c::do_page_fault, line 
205[#1]:                     
Cpu 0                                                     
$ 0 : 00000000 b0008400 00000000 fffffff4
$ 4 : 07cac000 00000000 00011000 000007df
$ 8 : 07cac000 801e4ab8 811375e0 00000001
$12 : 00000001 00100100 ffffffff 87fff284
$16 : 00000000 07cac000 00000000 87ce5e98
$20 : 00011000 ffffffbf 000007df 00008075
$24 : 87fff28c 00000001                  
$28 : 87ce4000 87ce5de8 87f1c720 80059e2c
Hi      : 00000000                       
Lo      : 00000000
epc   : 80059cb0    Not tainted
Status: b0008403               
Cause : 00001008
KERNEL EXL IE Process swapon (pid: 19, stackpage=87d22ac0)
Stack:  8004ee28 80106b68 811377e8 00000000 00000000 801d7c00 00011000 
ffc000000
        8006a2d8 87ce5e98 00000201 c0000000 801d7c00 c0011000 ffc00000 
87ce5e988
        87f0a120 00000044 87f0a120 87f0b4e0 00000011 000000d2 00000020 
000007df.
Call 
Trace:                                                                    
 [<8004ee28>] pte_alloc_kernel+0x74/0x158
 [<80106b68>] blk_remove_plug+0x78/0x98  
 [<80059e2c>] map_area_pmd+0x84/0xd0   
 [<8006a2d8>] blkdev_readpage+0x0/0x28
 [<80059f98>] map_vm_area+0x74/0xe0   
 [<8005a4f8>] __vmalloc+0x140/0x178
 [<800228c0>] autoremove_wake_function+0x0/0x44
 [<8006a150>] blkdev_get_block+0x0/0x74        
 [<8005a544>] vmalloc+0x14/0x20        
 [<8005e1bc>] sys_swapon+0x6ec/0x84c
 [<8005dee4>] sys_swapon+0x414/0x84c
 [<8021b000>] pci_scan_device+0xf0/0x1a8
 [<8000cc20>] stack_done+0x18/0x34      
 [<80008413>] handle_ades_int+0x27/0x34

Code: 8fb30040  3c140040  2415ffbf <8e220000> 8e630000  3c04801b  
2484cb6c  005

Any pointers? I'm running in 32 bit mode.

/Brian

---

From: "Kip Walker" <[email-masked]>
Date: Tue, 01 Jul 2003 11:05:04 -0700

This may be related to something I just found -- in pmd_populate_kernel,
a physical address is installed in the pmd instead of a virtual
address.  The patch I sent Ralf 30 minutes ago is attached :-)

Kip

> Any pointers? I'm running in 32 bit mode.

Index: include/asm-mips/pgalloc.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips/pgalloc.h,v
retrieving revision 1.27
diff -u -r1.27 pgalloc.h
--- include/asm-mips/pgalloc.h	26 Jun 2003 20:19:44 -0000	1.27
+++ include/asm-mips/pgalloc.h	1 Jul 2003 17:26:05 -0000
@@ -17,7 +17,7 @@
 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
 	pte_t *pte)
 {
-	set_pmd(pmd, __pmd(__pa(pte)));
+	set_pmd(pmd, __pmd((unsigned long)pte));
 }
 
 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
Index: include/asm-mips64/pgalloc.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips64/pgalloc.h,v
retrieving revision 1.29
diff -u -r1.29 pgalloc.h
--- include/asm-mips64/pgalloc.h	26 Jun 2003 20:19:44 -0000	1.29
+++ include/asm-mips64/pgalloc.h	1 Jul 2003 17:26:05 -0000
@@ -19,7 +19,7 @@
 static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
 	pte_t *pte)
 {
-	set_pmd(pmd, __pmd(__pa(pte)));
+	set_pmd(pmd, __pmd((unsigned long)pte));
 }
 
 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,

---

From: Brian Murphy <[email-masked]>
Date: Tue, 01 Jul 2003 22:36:08 +0200

J. Alexander Jacocks wrote:

> <snip>
> On what platform?
LASAT - VR5000 / 1M chip controlled second level cache.

/Brian

---

From: Brian Murphy <[email-masked]>
Date: Tue, 01 Jul 2003 22:55:00 +0200

>address.  The patch I sent Ralf 30 minutes ago is attached :-)
With your patch I get a hang instead of a short hang and then the crash.
On the other hand it manages to enable the swap partition before hanging:

EXT3-fs: mounted filesystem with ordered data 
mode.                            
VFS: Mounted root (ext3 filesystem) 
readonly.                                  
Freeing unused kernel memory: 88k 
freed                                        
Adding 131532k swap on /dev/hda1.  Priority:-1 extents:1

Has anyone booted 32 bit 2.5 fully into userspace?

/Brian

---

From: Brian Murphy <[email-masked]>
Date: Tue, 01 Jul 2003 23:32:35 +0200

>address.  The patch I sent Ralf 30 minutes ago is attached :-)
Now (with the latest source) I get:

kjournald starting.  Commit interval 5 
seconds                                 
EXT3-fs: mounted filesystem with ordered data 
mode.                            
VFS: Mounted root (ext3 filesystem) 
readonly.                                  
Freeing unused kernel memory: 88k 
freed                                        
Adding 131532k swap on /dev/hda1.  Priority:-1 
extents:1                       
EXT3 FS 2.4-0.9.16, 02 Dec 2001 on hda2, internal 
journal                      
mount: Exception at [<800e5650>] 
(800e5830)                                    
mount: Exception at [<800e5650>] 
(800e5830)                                    
mount: Exception at [<800e5650>] 
(800e5830)                                    
 
The error is in __copy_user (both_aligned), closer and closer...

/Brian

---

From: Ralf Baechle <[email-masked]>
Date: Wed, 2 Jul 2003 02:46:59 +0200

> Has anyone booted 32 bit 2.5 fully into userspace?

People have done it - but degree off success greatly varies.  I'm
optimistic to have 2.5 stable enough for basic use pretty soon.

  Ralf