public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* Re: ia64 uaccess changes?
@ 2005-02-04  9:33 Zou Nan hai
  2005-02-04  9:37 ` Andrew Morton
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Zou Nan hai @ 2005-02-04  9:33 UTC (permalink / raw)
  To: linux-ia64

On Fri, 2005-02-04 at 17:37, Andrew Morton 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.
> 

Hi Andrew,

I have tested both 2.6.11-rc3 and 2.6.11-rc2-mm2 on a Tiger.

They all boot fine.


Zou Nan hai
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* ia64 uaccess changes?
  2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
@ 2005-02-04  9:37 ` Andrew Morton
  2005-02-04  9:44 ` Keith Owens
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2005-02-04  9:37 UTC (permalink / raw)
  To: linux-ia64


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.

They look like this:

Pid: 1003, CPU 3, comm:                mount
psr : 0000101008026018 ifs : 8000000000000309 ip  : [<a000000100169070>]    Notd
ip is at exact_copy_from_user+0x70/0x120                                       
unat: 0000000000000000 pfs : 000000000000040b rsc : 0000000000000003
rnat: 800000000000058e bsps: 0000000000000000 pr  : 0000000000005559
ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c0270033f
csd : 0000000000000000 ssd : 0000000000000000                       
b0  : a0000001001691c0 b6  : a000000100002d70 b7  : a000000100002cd0
f6  : 1003e6db6db6db6db6db7 f7  : 000000000000000000000             
f8  : 1003e000000000000f1d4 f9  : 1003e0000000000069ccc
f10 : 000000000000000000000 f11 : 000000000000000000000
r1  : a000000100df22c0 r2  : e00000003f1f0d48 r3  : 00000fffffffbfff
r8  : 0000000000000000 r9  : 0000000000000000 r10 : a000000100c0ea70
r11 : e00000003c750000 r12 : e00000003f1f7e10 r13 : e00000003f1f0000
r14 : 9fffffffffffffff r15 : 000000000000f1d4 r16 : 6db6db6db6db6db7
r17 : 0000000000069ccc r18 : 000000000034e660 r19 : e000000004d61000
r20 : a000000100c0ea50 r21 : 000000000000ffb1 r22 : a000000100c2bc80
r23 : a000000100a3b200 r24 : a000000100c2bc80 r25 : 0000000000000000
r26 : 0000000000004000 r27 : 0000000000000000 r28 : 2000000000212680
r29 : 0000000000000008 r30 : 0000000000000009 r31 : 0000000000200200
                                                                    
Call Trace:
 [<a00000010000f360>] show_stack+0x80/0xa0
                                spà0000003f1f79d0 bspà0000003f1f1090
 [<a00000010000fbc0>] show_regs+0x7e0/0x800                             
                                spà0000003f1f7ba0 bspà0000003f1f1030
 [<a000000100033830>] die+0x150/0x1c0                                   
                                spà0000003f1f7bb0 bspà0000003f1f0fe8
 [<a000000100053890>] ia64_do_page_fault+0x370/0x980                    
                                spà0000003f1f7bb0 bspà0000003f1f0f80
 [<a00000010000a780>] ia64_leave_kernel+0x0/0x260                       
                                spà0000003f1f7c40 bspà0000003f1f0f80
 [<a000000100169070>] exact_copy_from_user+0x70/0x120                   
                                spà0000003f1f7e10 bspà0000003f1f0f38
 [<a0000001001691c0>] copy_mount_options+0xa0/0x160                     
                                spà0000003f1f7e10 bspà0000003f1f0ef8
 [<a000000100169c50>] sys_mount+0x30/0x1c0                              
                                spà0000003f1f7e10 bspà0000003f1f0e70
 [<a00000010000a600>] ia64_ret_from_syscall+0x0/0x20                    
                                spà0000003f1f7e30 bspà0000003f1f0e70
 <6>Adding 2024144k swap on /dev/sda2.  Priority:-1 extents:1           
Unable to handle kernel paging request at virtual address 6000000000018000

copy_mount_options() is a popular place for kernels to oops if there's
anything unusual in the uaccess handling.

Thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ia64 uaccess changes?
  2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
  2005-02-04  9:37 ` Andrew Morton
@ 2005-02-04  9:44 ` Keith Owens
  2005-02-04 11:35 ` Bob Picco
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Keith Owens @ 2005-02-04  9:44 UTC (permalink / raw)
  To: linux-ia64

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à0000b07a857b30 bspà0000b07a850f58
 [<a000000100010b00>] show_regs+0x860/0x880 
                                spà0000b07a857d00 bspà0000b07a850ef8
 [<a000000100036050>] die+0x170/0x220
                                spà0000b07a857d10 bspà0000b07a850ec0
 [<a000000100036140>] die_if_kernel+0x40/0x60
                                spà0000b07a857d10 bspà0000b07a850e98
 [<a000000100036c60>] ia64_illegal_op_fault+0x60/0x140
                                spà0000b07a857d10 bspà0000b07a850e78
 [<a000000100003f20>] dispatch_illegal_op_fault+0x300/0x800
                                spà0000b07a857e30 bspà0000b07a850e78

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.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ia64 uaccess changes?
  2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
  2005-02-04  9:37 ` Andrew Morton
  2005-02-04  9:44 ` Keith Owens
@ 2005-02-04 11:35 ` Bob Picco
  2005-02-04 11:39 ` Andrew Morton
  2005-02-04 11:51 ` Bob Picco
  4 siblings, 0 replies; 6+ messages in thread
From: Bob Picco @ 2005-02-04 11:35 UTC (permalink / raw)
  To: linux-ia64

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à0000b07a857b30 bspà0000b07a850f58
>  [<a000000100010b00>] show_regs+0x860/0x880 
>                                 spà0000b07a857d00 bspà0000b07a850ef8
>  [<a000000100036050>] die+0x170/0x220
>                                 spà0000b07a857d10 bspà0000b07a850ec0
>  [<a000000100036140>] die_if_kernel+0x40/0x60
>                                 spà0000b07a857d10 bspà0000b07a850e98
>  [<a000000100036c60>] ia64_illegal_op_fault+0x60/0x140
>                                 spà0000b07a857d10 bspà0000b07a850e78
>  [<a000000100003f20>] dispatch_illegal_op_fault+0x300/0x800
>                                 spà0000b07a857e30 bspà0000b07a850e78
> 
> 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



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ia64 uaccess changes?
  2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
                   ` (2 preceding siblings ...)
  2005-02-04 11:35 ` Bob Picco
@ 2005-02-04 11:39 ` Andrew Morton
  2005-02-04 11:51 ` Bob Picco
  4 siblings, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2005-02-04 11:39 UTC (permalink / raw)
  To: linux-ia64

Bob Picco <bob.picco@hp.com> wrote:
>
> 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

That's already in Linus's tree.  And mine.  So it's something else.

Were you seeing the same oops?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ia64 uaccess changes?
  2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
                   ` (3 preceding siblings ...)
  2005-02-04 11:39 ` Andrew Morton
@ 2005-02-04 11:51 ` Bob Picco
  4 siblings, 0 replies; 6+ messages in thread
From: Bob Picco @ 2005-02-04 11:51 UTC (permalink / raw)
  To: linux-ia64

Andrew Morton wrote:	[Fri Feb 04 2005, 06:39:44AM EST]
> Bob Picco <bob.picco@hp.com> wrote:
> >
> > 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
> 
> That's already in Linus's tree.  And mine.  So it's something else.
> 
> Were you seeing the same oops?
> 
I was seeing the one in create_elf_tables.  So this doesn't sound the same
as your problem.  Sorry.

bob

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-02-04 11:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-04  9:33 ia64 uaccess changes? Zou Nan hai
2005-02-04  9:37 ` Andrew Morton
2005-02-04  9:44 ` Keith Owens
2005-02-04 11:35 ` Bob Picco
2005-02-04 11:39 ` Andrew Morton
2005-02-04 11:51 ` Bob Picco

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox