subfunction

e71383fb9cd1 net/mlx5: Light probe local SFs

kernel 6.5 merge了上面的commit后,SF的行为有了个变化,以前active local sf的时候,auxiliary sub-device就会创建,现在要等到devlink reload之后。

devlink port add pci/0000:08:00.0 flavour pcisf pfnum 0 sfnum 1
devlink port function set en8f0pf0sf1 state active
devlink dev param set auxiliary/mlx5_core.sf.2 name enable_eth value true cmode driverinit

devlink会传DEVLINK_PORT_FLAVOUR_PCI_SF到kernel,创建local sf

devlink_nl_cmd_port_new_doit
        mlx5_devlink_sf_port_new
                mlx5_sf_add
                        mlx5_sf_alloc
                                mlx5_sf_hw_table_sf_alloc
                                        mlx5_sf_hw_table_sf_alloc
                                                mlx5_cmd_alloc_sf
                                                mlx5_modify_vhca_sw_id
                        mlx5_eswitch_load_sf_vport
                                mlx5_esw_offloads_init_sf_rep
                                        mlx5_esw_offloads_sf_devlink_port_init
                                mlx5_eswitch_load_vport
                                        mlx5_esw_vport_enable
                                        mlx5_esw_offloads_load_rep
                                                mlx5_esw_offloads_devlink_port_register
                                                        devl_port_register_with_ops
                                                        devl_rate_leaf_create
                                                mlx5_esw_offloads_rep_load

# devlink port function set en8f0pf0sf1 state active

mlx5_devlink_sf_port_fn_state_set
        mlx5_sf_table_try_get
        mlx5_sf_lookup_by_index
        mlx5_sf_state_set
                mlx5_sf_activate
                        mlx5_cmd_sf_enable_hca
                mlx5_sf_inactivate
                        mlx5_cmd_sf_disable_hca

下面的notifier block函数会被连续调好几遍:

[Fri Oct 27 11:52:03 2023] mlx5_sf_vhca_event: called
[Fri Oct 27 11:52:03 2023] mlx5_sf_hw_vhca_event: called
[Fri Oct 27 11:52:03 2023] mlx5_sf_dev_state_change_handler: called
8.339618 135039  135039  kworker/u48:0   mlx5_sf_dev_probe
        b'mlx5_sf_dev_probe+0x5 [mlx5_core]'
        b'call_driver_probe+0x26 [kernel]'
        b'really_probe+0x1a6 [kernel]'
        b'__driver_probe_device+0x7e [kernel]'
        b'driver_probe_device+0x23 [kernel]'
        b'__device_attach_driver+0x92 [kernel]'
        b'bus_for_each_drv+0x8d [kernel]'
        b'__device_attach+0xc6 [kernel]'
        b'device_initial_probe+0x17 [kernel]'
        b'bus_probe_device+0xa8 [kernel]'
        b'device_add+0x431 [kernel]'
        b'__auxiliary_device_add+0x45 [kernel]'
        b'mlx5_sf_dev_add+0x10f [mlx5_core]'
        b'mlx5_sf_dev_state_change_handler+0x152 [mlx5_core]'
        b'notifier_call_chain+0x49 [kernel]'
        b'blocking_notifier_call_chain+0x4d [kernel]'
        b'mlx5_vhca_event_notify+0xf2 [mlx5_core]'
        b'mlx5_vhca_state_work_handler+0x22 [mlx5_core]'
        b'process_one_work+0x1f5 [kernel]'
        b'worker_thread+0x1cd [kernel]'
        b'kthread+0x10d [kernel]'
        b'ret_from_fork+0x3d [kernel]'
        b'ret_from_fork_asm+0x1b [kernel]'

    devlink dev reload auxiliary/mlx5_core.sf.2

12.00634 145115  145115  devlink         register_netdev
        b'register_netdev+0x5 [kernel]'
		mlx5e_probe
        b'auxiliary_bus_probe+0x42 [kernel]'
        b'call_driver_probe+0x26 [kernel]'
        b'really_probe+0x1a6 [kernel]'
        b'__driver_probe_device+0x7e [kernel]'
        b'driver_probe_device+0x23 [kernel]'
        b'__device_attach_driver+0x92 [kernel]'
        b'bus_for_each_drv+0x8d [kernel]'
        b'__device_attach+0xc6 [kernel]'
        b'device_initial_probe+0x17 [kernel]'
        b'bus_probe_device+0xa8 [kernel]'
        b'device_add+0x431 [kernel]'
        b'__auxiliary_device_add+0x45 [kernel]'
        b'add_adev+0x9e [mlx5_core]'
        b'add_drivers+0xa6 [mlx5_core]'
        b'mlx5_rescan_drivers_locked+0x4e [mlx5_core]'
        b'mlx5_register_device+0x40 [mlx5_core]'
        b'mlx5_init_one_devl_locked+0x114 [mlx5_core]'
        b'mlx5_devlink_reload_up+0xc8 [mlx5_core]'
        b'devlink_reload+0xfe [kernel]'
        b'devlink_nl_cmd_reload+0x12a [kernel]'
        b'genl_family_rcv_msg_doit+0xd7 [kernel]'
        b'genl_family_rcv_msg+0x148 [kernel]'
        b'genl_rcv_msg+0x50 [kernel]'
        b'netlink_rcv_skb+0x5d [kernel]'
        b'genl_rcv+0x2d [kernel]'
        b'netlink_unicast+0x1b6 [kernel]'
        b'netlink_sendmsg+0x25c [kernel]'
        b'sock_sendmsg+0xbb [kernel]'
        b'__sys_sendto+0x12b [kernel]'
        b'__x64_sys_sendto+0x2d [kernel]'
        b'do_syscall_64+0x3c [kernel]'
        b'entry_SYSCALL_64_after_hwframe+0x6e [kernel]'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值