lkml.org 
[lkml]   [2007]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Kernel 2.6.20.4 Unaligned address
From
Date
        Hello,

davem@davemloft.net (David Miller) writes:
> Please report sparc platform bugs to sparclinux@vger.kernel.org next
> time, thank you.
>
> Meanwhile I'll take a look at this one.

I have a similar problem on an U5 [*] running 2.6.21-rc6-gbbef6181 :

Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0


Disassembling vmlinux gives me that:
0x006c993c <svc_udp_recvfrom+512>: call 0x5999c8 <clear_bit>
0x006c9940 <svc_udp_recvfrom+516>: clr %o0
0x006c9944 <svc_udp_recvfrom+520>: call 0x6c7d4c <svc_sock_enqueue>
0x006c9948 <svc_udp_recvfrom+524>: mov %l3, %o0
0x006c994c <svc_udp_recvfrom+528>: ld [ %l1 + 0x88 ], %g2
0x006c9950 <svc_udp_recvfrom+532>: ldx [ %l5 + 8 ], %g3
0x006c9954 <svc_udp_recvfrom+536>: mov 0x11, %g1
0x006c9958 <svc_udp_recvfrom+540>: add %g2, -8, %i0
0x006c995c <svc_udp_recvfrom+544>: st %g1, [ %l4 + 0xdc8 ]
0x006c9960 <svc_udp_recvfrom+548>: cmp %g3, 8
0x006c9964 <svc_udp_recvfrom+552>: be,pn %xcc, 0x6c999c<svc_udp_recvfrom+608>


The same stuff but using objdump this time:
21c4: R_SPARC_WDISP30 clear_bit
21c8: 90 10 20 00 clr %o0
21cc: 7f ff f9 02 call 5d4 <svc_sock_enqueue>
21d0: 90 10 00 13 mov %l3, %o0
21d4: c4 04 60 88 ld [ %l1 + 0x88 ], %g2
21d8: c6 5d 60 08 ldx [ %l5 + 8 ], %g3
21dc: 82 10 20 11 mov 0x11, %g1
21e0: b0 00 bf f8 add %g2, -8, %i0
21e4: c2 25 2d c8 st %g1, [ %l4 + 0xdc8 ]
21e8: 80 a0 e0 08 cmp %g3, 8
21ec: 02 60 00 0e be,pn %xcc, 2224 <svc_udp_recvfrom+0x260>
21f0: f0 25 21 24 st %i0, [ %l4 + 0x124 ]
21f4: 40 00 00 00 call 21f4 <svc_udp_recvfrom+0x230>
21f4: R_SPARC_WDISP30 net_ratelimit

Looking at svc_udp_recvfrom, it all comes down to this portion of code (I
believe, unless I got it wrong):

/*
* Maybe more packets - kick another thread ASAP.
*/
svc_sock_received(svsk);
len = skb->len - sizeof(struct udphdr);
rqstp->rq_arg.len = len; <=====================================
rqstp->rq_prot = IPPROTO_UDP;

if (cmh->cmsg_level != IPPROTO_IP ||
cmh->cmsg_type != IP_PKTINFO) {
if (net_ratelimit())
printk("rpcsvc: received unknown control message:"
"%d/%d\n",
cmh->cmsg_level, cmh->cmsg_type);
skb_free_datagram(svsk->sk_sk, skb);
return 0;
}
I won't have access to this box for quite some time: I'm just unsure when I
will be able to test again any kind of patches...

I hope I've forwarded enough information though.

Cheers,
Mathieu



[*] :
cpu : TI UltraSparc IIi (Sabre)
fpu : UltraSparc IIi integrated FPU
prom : OBP 3.31.0 2001/07/25 20:36
type : sun4u
ncpus probed : 1
ncpus active : 1
D$ parity tl1 : 0
I$ parity tl1 : 0
Cpu0Bogo : 720.40
Cpu0ClkTck : 0000000015752a00
MMU Type : Spitfire
Kernel got compiled with:
Using built-in specs.
Target: sparc-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-mpfr --with-cpu=v8
--enable-checking=release sparc-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)


--
Mathieu Chouquet-Stringer
The sun itself sees not till heaven clears.
-- William Shakespeare --
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-04-11 09:31    [from the cache]
©2003-2011 Jasper Spaans