merged.

Bruce

In message: [linux-yocto][linux-yocto v5.4/standard/nxp-s32g2xx][PATCH] can: 
flexcan: drop repetitive execution can_rx_offload_add_timestamp
on 03/12/2020 Xulin Sun wrote:

> To fix below call trace:
> [ 5748.193968] list_add double add: new=ffffff886ba61010, 
> prev=ffffff886ba60060, next=ffffff886ba61010.
> [ 5748.203102] WARNING: CPU: 3 PID: 20775 at lib/list_debug.c:29 
> __list_add_valid+0x94/0xa0
> [ 5748.210900] Modules linked in: xt_nat xt_tcpudp xt_conntrack xt_MASQUERADE
> [ 5748.238942] CPU: 3 PID: 20775 Comm: ip Tainted: G        W         
> 5.4.78-yocto-standard #1
> [ 5748.247268] Hardware name: Freescale S32G274 (DT)
> [ 5748.251958] pstate: 20000005 (nzCv daif -PAN -UAO)
> [ 5748.256732] pc : __list_add_valid+0x94/0xa0
> [ 5748.260898] lr : __list_add_valid+0x94/0xa0
> [ 5748.265061] sp : ffffffc0173232d0
> [ 5748.268359] x29: ffffffc0173232d0 x28: ffffffc010ffb8c8
> [ 5748.273654] x27: ffffff8855b34a10 x26: 000000000000000c
> [ 5748.278949] x25: 000000000000000c x24: 0000000000000030
> [ 5748.284243] x23: ffffff886ba60060 x22: ffffff886ba61010
> [ 5748.289539] x21: ffffff886ba61010 x20: ffffff886ba60000
> [ 5748.294833] x19: ffffff886ba60eb0 x18: 0000000000000030
> [ 5748.300128] x17: 0000000000000000 x16: 0000000000000000
> [ 5748.305423] x15: ffffff885c172270 x14: 3036303036616236
> [ 5748.310717] x13: 3838666666666666 x12: 3d76657270202c30
> [ 5748.316013] x11: 3130313661623638 x10: 0000000000001720
> [ 5748.321307] x9 : 0000000000000000 x8 : ffffffc011702000
> [ 5748.326601] x7 : 0000000000000000 x6 : ffffffc011701000
> [ 5748.331897] x5 : ffffffc011701558 x4 : 0000000000000000
> [ 5748.337191] x3 : 0000000000000000 x2 : ffffff885c171d40
> [ 5748.342486] x1 : ff4d4c22b9328000 x0 : 0000000000000000
> [ 5748.347782] Call trace:
> [ 5748.350216]  __list_add_valid+0x94/0xa0
> [ 5748.354036]  netif_napi_add+0x100/0x164
> [ 5748.357855]  can_rx_offload_init_queue+0x90/0xf0
> [ 5748.362452]  can_rx_offload_add_timestamp+0x60/0x80
> [ 5748.367315]  flexcan_open+0x234/0x3d0
> [ 5748.370962]  __dev_open+0x108/0x1b0
> [ 5748.374432]  __dev_change_flags+0x1b4/0x220
> [ 5748.378598]  dev_change_flags+0x40/0x80
> [ 5748.382419]  do_setlink+0x1f8/0x930
> [ 5748.385888]  __rtnl_newlink+0x51c/0x7c4
> [ 5748.389708]  rtnl_newlink+0x58/0x80
> [ 5748.393179]  rtnetlink_rcv_msg+0x18c/0x490
> [ 5748.397263]  netlink_rcv_skb+0x60/0x120
> [ 5748.401082]  rtnetlink_rcv+0x2c/0x3c
> [ 5748.404638]  netlink_unicast+0x184/0x224
> [ 5748.408544]  netlink_sendmsg+0x1a0/0x340
> [ 5748.412453]  ____sys_sendmsg+0x1c8/0x214
> [ 5748.416356]  ___sys_sendmsg+0x94/0xec
> [ 5748.420001]  __sys_sendmsg+0x7c/0xd0
> [ 5748.423559]  __arm64_sys_sendmsg+0x30/0x3c
> [ 5748.427643]  el0_svc_common.constprop.0+0x78/0x13c
> [ 5748.432413]  el0_svc_handler+0x54/0xc0
> [ 5748.436148]  el0_svc+0x8/0x208
> [ 5748.439183] irq event stamp: 0
> [ 5748.442224] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
> [ 5748.448476] hardirqs last disabled at (0): [<ffffffc0100b23e4>] 
> copy_process+0x2e4/0x1000
> [ 5748.456633] softirqs last  enabled at (0): [<ffffffc0100b23e4>] 
> copy_process+0x2e4/0x1000
> [ 5748.464790] softirqs last disabled at (0): [<0000000000000000>] 0x0
> [ 5748.471038] ---[ end trace 790f7c34ea6cae43 ]---
> 
> In the function flexcan_open(), can_rx_offload_add_timestamp() and others 
> code are called
> two times and caused the above call trace, keeping one time is enough.
> 
> Signed-off-by: Xulin Sun <[email protected]>
> ---
>  drivers/net/can/flexcan.c | 39 ---------------------------------------
>  1 file changed, 39 deletions(-)
> 
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 650165745fbe..540a43e666e0 100755
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1635,45 +1635,6 @@ static int flexcan_open(struct net_device *dev)
>                                             FLEXCAN_NAPI_WEIGHT);
>       }
>  
> -     if (err)
> -             goto out_free_irq;
> -
> -     priv->mb_size = sizeof(struct flexcan_mb) + CAN_MAX_DLEN;
> -     priv->mb_count = (sizeof(priv->regs->mb[0]) / priv->mb_size) +
> -                      (sizeof(priv->regs->mb[1]) / priv->mb_size);
> -
> -     if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP)
> -             priv->tx_mb_reserved =
> -                     flexcan_get_mb(priv, 
> FLEXCAN_TX_MB_RESERVED_OFF_TIMESTAMP);
> -     else
> -             priv->tx_mb_reserved =
> -                     flexcan_get_mb(priv, FLEXCAN_TX_MB_RESERVED_OFF_FIFO);
> -     priv->tx_mb_idx = priv->mb_count - 1;
> -     priv->tx_mb = flexcan_get_mb(priv, priv->tx_mb_idx);
> -
> -     priv->reg_imask1_default = 0;
> -     priv->reg_imask2_default = FLEXCAN_IFLAG_MB(priv->tx_mb_idx);
> -
> -     priv->offload.mailbox_read = flexcan_mailbox_read;
> -
> -     if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) {
> -             u64 imask;
> -
> -             priv->offload.mb_first = FLEXCAN_RX_MB_OFF_TIMESTAMP_FIRST;
> -             priv->offload.mb_last = priv->mb_count - 2;
> -
> -             imask = GENMASK_ULL(priv->offload.mb_last,
> -                                 priv->offload.mb_first);
> -             priv->reg_imask1_default |= imask;
> -             priv->reg_imask2_default |= imask >> 32;
> -
> -             err = can_rx_offload_add_timestamp(dev, &priv->offload);
> -     } else {
> -             priv->reg_imask1_default |= FLEXCAN_IFLAG_RX_FIFO_OVERFLOW |
> -                     FLEXCAN_IFLAG_RX_FIFO_AVAILABLE;
> -             err = can_rx_offload_add_fifo(dev, &priv->offload,
> -                                           FLEXCAN_NAPI_WEIGHT);
> -     }
>       if (err)
>               goto out_free_irq;
>  
> -- 
> 2.17.1
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#9226): 
https://lists.yoctoproject.org/g/linux-yocto/message/9226
Mute This Topic: https://lists.yoctoproject.org/mt/78676223/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to