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    [W:0.026 / U:1.496 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site