Re: ia64 uaccess changes?

From: Bob Picco <bob.picco_at_hp.com>
Date: 2005-02-04 22:35:33
Keith Owens wrote:	[Fri Feb 04 2005, 04:44:29AM EST]
> On Fri, 4 Feb 2005 01:37:24 -0800, 
> Andrew Morton <akpm@osdl.org> wrote:
> >
> >Did something changed with the ia64 uaccess functions a few weeks ago?
> >
> >Because a couple of weeks ago I was seeing repeatable oopses in Linus's
> >tree early in boot in create_elf_tables(), here:
> >
> >	/* Now, let's put argc (and argv, envp if appropriate) on the stack */
> >	if (__put_user(argc, sp++))
> >		return -EFAULT;
> >
> >that shouldn't happen.
> >
> >
> >Now, Linus's tree works OK, but I'm seeing repeatable oopses late in boot
> >with this patch applied: 
> >
> >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.11-rc2/2.6.11-rc2-mm2/broken-out/add-do_proc_doulonglongvec_minmax-to-sysctl-functions.patch
> >
> >which is crazy - that code isn't even executed.
> 
> 2.6.11-rc3 also breaks on SN2 in create_elf_tables().
> 
> Freeing unused kernel memory: 352kB freed
> init[1]: IA-64 Illegal operation fault 0 [1]
> Modules linked in:
>     
> Pid: 1, CPU 1, comm:                 init
> psr : 0000101008026018 ifs : 8000000000000710 ip  : [<a0000001001ae120>]    Not tainted
> ip is at create_elf_tables+0x3c0/0x800
> unat: 0000000000000000 pfs : 0000000000000000 rsc : 0000000000000000
> rnat: 0000000000000000 bsps: e00000b07a850e70 pr  : 000000000000801b
> ldrs: 0000000000880000 ccv : 0000000000000000 fpsr: 0009804c8a70433f
> csd : 0000000000000000 ssd : 0000000000000000
> f6  : 000000000000000000000 f7  : 000000000000000000000
> f8  : 000000000000000000000 f9  : 000000000000000000000
> f10 : 000000000000000000000 f11 : 000000000000000000000
> r1  : a000000100ce0720 r2  : e00000b07a857d10 r3  : 0000000000000308                                                                          r8  : 0000000000000000 r9  : 0000000000000000 r10 : 0000000000000000                                                                          r11 : 0000000000000000 r12 : 60000fffffffbdf0 r13 : e00000b07a850000                                                                          r14 : 0000000000000000 r15 : 0000000000000409 r16 : e00000b07a850e70                                                                          r17 : ffffffffffffffc1 r18 : 0000000000000040 r19 : 0000000000000000                                                                          r20 : 0009804c0270033f r21 : a000000100009290 r22 : 0000000000000000                                                                          r23 : 60000fff7fffc000 r24 : 0000000000000000 r25 : 0000000000000000                                                                      
>      r26 : 0000000000000186 r27 : 000000000000000f r28 : 4000000000000200                                                                          r29 : 00001013085a6000 r30 : 0000000000000003 r31 : 0000000000005541
> 
> Call Trace: 
>  [<a000000100010220>] show_stack+0x80/0xa0
>                                 sp=e00000b07a857b30 bsp=e00000b07a850f58
>  [<a000000100010b00>] show_regs+0x860/0x880 
>                                 sp=e00000b07a857d00 bsp=e00000b07a850ef8
>  [<a000000100036050>] die+0x170/0x220
>                                 sp=e00000b07a857d10 bsp=e00000b07a850ec0
>  [<a000000100036140>] die_if_kernel+0x40/0x60
>                                 sp=e00000b07a857d10 bsp=e00000b07a850e98
>  [<a000000100036c60>] ia64_illegal_op_fault+0x60/0x140
>                                 sp=e00000b07a857d10 bsp=e00000b07a850e78
>  [<a000000100003f20>] dispatch_illegal_op_fault+0x300/0x800
>                                 sp=e00000b07a857e30 bsp=e00000b07a850e78
> 
> The code in create_elf_tables is good.  Single stepping through the
> offending region works, but as soon as the kernel is allowed to run
> again it dies at a different place in create_elf_tables.
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Well I was seeing the same problem with 2.6.11-rc2-mm1-mhp1.  
This fixed it for me.  I thought a patch had been sent upstream to Tony.
I'm not proposing this as a patch.  I believe it was already done.

bob


diff -ruNp -X /home/picco/losl/dontdiff linux-2.6.11-rc2-mm1-mhp1-orig/arch/ia64/kernel/entry.S linux-2.6.11-rc2-mm1-mhp1/arch/ia64/kernel/entry.S
--- linux-2.6.11-rc2-mm1-mhp1-orig/arch/ia64/kernel/entry.S	2005-01-26 15:29:06.000000000 -0500
+++ linux-2.6.11-rc2-mm1-mhp1/arch/ia64/kernel/entry.S	2005-01-27 14:30:41.000000000 -0500
@@ -987,7 +987,7 @@ dont_preserve_current_frame:
 	shladd in0=loc1,3,r17
 	mov in1=0
 	;;
-	.align 32
+	TEXT_ALIGN(32)
 rse_clear_invalid:
 #ifdef CONFIG_ITANIUM
 	// cycle 0


-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Fri Feb 4 06:33:59 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:35 EST