• Zumeng Chen's avatar
    gianfar: fix a flooded alignment reports because of padding issue. · 5eed0b7c
    Zumeng Chen authored
    BugLink: http://bugs.launchpad.net/bugs/1756866
    
    [ Upstream commit 58117672 ]
    
    According to LS1021A RM, the value of PAL can be set so that the start of the
    IP header in the receive data buffer is aligned to a 32-bit boundary. Normally,
    setting PAL = 2 provides minimal padding to ensure such alignment of the IP
    header.
    
    However every incoming packet's 8-byte time stamp will be inserted into the
    packet data buffer as padding alignment bytes when hardware time stamping is
    enabled.
    
    So we set the padding 8+2 here to avoid the flooded alignment faults:
    
    root@128:~# cat /proc/cpu/alignment
    User:           0
    System:         17539 (inet_gro_receive+0x114/0x2c0)
    Skipped:        0
    Half:           0
    Word:           0
    DWord:          0
    Multi:          17539
    User faults:    2 (fixup)
    
    Also shown when exception report enablement
    
    CPU: 0 PID: 161 Comm: irq/66-eth1_g0_ Not tainted 4.1.21-rt13-WR8.0.0.0_preempt-rt #16
    Hardware name: Freescale LS1021A
    [<8001b420>] (unwind_backtrace) from [<8001476c>] (show_stack+0x20/0x24)
    [<8001476c>] (show_stack) from [<807cfb48>] (dump_stack+0x94/0xac)
    [<807cfb48>] (dump_stack) from [<80025d70>] (do_alignment+0x720/0x958)
    [<80025d70>] (do_alignment) from [<80009224>] (do_DataAbort+0x40/0xbc)
    [<80009224>] (do_DataAbort) from [<80015398>] (__dabt_svc+0x38/0x60)
    Exception stack(0x86ad1cc0 to 0x86ad1d08)
    1cc0: f9b3e080 86b3d072 2d78d287 00000000 866816c0 86b3d05e 86e785d0 00000000
    1ce0: 00000011 0000000e 80840ab0 86ad1d3c 86ad1d08 86ad1d08 806d7fc0 806d806c
    1d00: 40070013 ffffffff
    [<80015398>] (__dabt_svc) from [<806d806c>] (inet_gro_receive+0x114/0x2c0)
    [<806d806c>] (inet_gro_receive) from [<80660eec>] (dev_gro_receive+0x21c/0x3c0)
    [<80660eec>] (dev_gro_receive) from [<8066133c>] (napi_gro_receive+0x44/0x17c)
    [<8066133c>] (napi_gro_receive) from [<804f0538>] (gfar_clean_rx_ring+0x39c/0x7d4)
    [<804f0538>] (gfar_clean_rx_ring) from [<804f0bf4>] (gfar_poll_rx_sq+0x58/0xe0)
    [<804f0bf4>] (gfar_poll_rx_sq) from [<80660b10>] (net_rx_action+0x27c/0x43c)
    [<80660b10>] (net_rx_action) from [<80033638>] (do_current_softirqs+0x1e0/0x3dc)
    [<80033638>] (do_current_softirqs) from [<800338c4>] (__local_bh_enable+0x90/0xa8)
    [<800338c4>] (__local_bh_enable) from [<8008025c>] (irq_forced_thread_fn+0x70/0x84)
    [<8008025c>] (irq_forced_thread_fn) from [<800805e8>] (irq_thread+0x16c/0x244)
    [<800805e8>] (irq_thread) from [<8004e490>] (kthread+0xe8/0x104)
    [<8004e490>] (kthread) from [<8000fda8>] (ret_from_fork+0x14/0x2c)
    Signed-off-by: default avatarZumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
    Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
    5eed0b7c
gianfar.c 97.4 KB