Messages in this thread | | | Subject | Re: Kernel 2.6.20.4 Unaligned address | From | Mathieu Chouquet-Stringer <> | Date | 11 Apr 2007 08:35:05 +0200 |
| |
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/
| |