1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/ethernet/intel/ice
Arkadiusz Kubalewski fc7fd1a10a ice: fix dpll and dpll_pin data access on PF reset
Do not allow to acquire data or alter configuration of dpll and pins
through firmware if PF reset is in progress, this would cause confusing
netlink extack errors as the firmware cannot respond or process the
request properly during the reset time.

Return (-EBUSY) and extack error for the user who tries access/modify
the config of dpll/pin through firmware during the reset time.

The PF reset and kernel access to dpll data are both asynchronous. It is
not possible to guard all the possible reset paths with any determinictic
approach. I.e., it is possible that reset starts after reset check is
performed (or if the reset would be checked after mutex is locked), but at
the same time it is not possible to wait for dpll mutex unlock in the
reset flow.
This is best effort solution to at least give a clue to the user
what is happening in most of the cases, knowing that there are possible
race conditions where the user could see a different error received
from firmware due to reset unexpectedly starting.

Test by looping execution of below steps until netlink error appears:
- perform PF reset
$ echo 1 > /sys/class/net/<ice PF>/device/reset
- i.e. try to alter/read dpll/pin config:
$ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \
	--dump pin-get

Fixes: d7999f5ea6 ("ice: implement dpll interface to control cgu")
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2024-02-20 10:24:44 -08:00
..
ice.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -08:00
ice_adminq_cmd.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-01-04 18:06:46 -08:00
ice_arfs.c ice: add individual interrupt allocation 2023-05-16 09:38:38 -07:00
ice_arfs.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_base.c ice: update xdp_rxq_info::frag_size for ZC enabled Rx queue 2024-01-24 16:24:07 -08:00
ice_base.h ice: ice_base.c: Add const modifier to params and vars 2024-01-02 11:18:32 -08:00
ice_cgu_regs.h ice: ensure the hardware Clock Generation Unit is configured 2021-12-21 09:11:40 -08:00
ice_common.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-01-04 18:06:46 -08:00
ice_common.h ice: remove FW logging code 2023-12-14 09:43:04 -08:00
ice_controlq.c ice: remove null checks before devm_kfree() calls 2023-06-22 10:30:34 -07:00
ice_controlq.h ice: reduce initial wait for control queue messages 2023-06-22 10:23:44 -07:00
ice_dcb.c ice: cleanup inconsistent code 2023-12-18 11:20:43 -08:00
ice_dcb.h ice: Handle LLDP MIB Pending change 2023-01-19 08:18:03 -08:00
ice_dcb_lib.c ice: field prep conversion 2023-12-18 11:20:26 -08:00
ice_dcb_lib.h ice: Prevent set_channel from changing queues while RDMA active 2023-01-27 11:32:18 -08:00
ice_dcb_nl.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_dcb_nl.h ice: use static inline for dummy functions 2021-06-07 08:59:01 -07:00
ice_ddp.c ice: fix DDP package download for packages without signature segment 2023-11-13 10:56:58 -08:00
ice_ddp.h ice: Add support for E830 DDP package segment 2023-10-26 20:32:39 -07:00
ice_debugfs.c ice: add ability to read and configure FW log data 2023-12-14 09:50:58 -08:00
ice_devids.h ice: Add E830 device IDs, MAC type and registers 2023-10-26 20:32:38 -07:00
ice_devlink.c ice: add CGU info to devlink info callback 2023-12-05 11:40:12 +01:00
ice_devlink.h ice: set Tx topology every time new repr is added 2023-11-13 11:42:14 -08:00
ice_dpll.c ice: fix dpll and dpll_pin data access on PF reset 2024-02-20 10:24:44 -08:00
ice_dpll.h ice: dpll: fix check for dpll input priority range 2023-11-13 10:02:15 -08:00
ice_eswitch.c ice: field prep conversion 2023-12-18 11:20:26 -08:00
ice_eswitch.h ice: reserve number of CP queues 2023-11-13 11:42:15 -08:00
ice_eswitch_br.c ice: make representor code generic 2023-11-13 11:42:14 -08:00
ice_eswitch_br.h ice: implement static version of ageing 2023-07-24 08:53:42 -07:00
ice_ethtool.c ice: remove rx_len_errors statistic 2024-01-02 11:18:32 -08:00
ice_ethtool.h ice: Add 200G speed/phy type use 2023-10-26 20:32:38 -07:00
ice_ethtool_fdir.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_fdir.c ice: field prep conversion 2023-12-18 11:20:26 -08:00
ice_fdir.h ice: Add flow director support for channel mode 2021-12-30 13:16:07 +00:00
ice_flex_pipe.c ice: field prep conversion 2023-12-18 11:20:26 -08:00
ice_flex_pipe.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flex_type.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flow.c ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_flow.h ice: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_fltr.c ice: sync netdev filters after clearing VSI 2023-02-03 09:54:18 -08:00
ice_fltr.h ice: Introduce ice_vlan struct 2022-02-09 09:24:45 -08:00
ice_fw_update.c ice: split ice_aq_wait_for_event() func into two 2023-08-17 13:59:46 -07:00
ice_fw_update.h ice: support immediate firmware activation via devlink reload 2021-12-15 08:40:38 -08:00
ice_fwlog.c ice: add ability to read and configure FW log data 2023-12-14 09:50:58 -08:00
ice_fwlog.h ice: add ability to read and configure FW log data 2023-12-14 09:50:58 -08:00
ice_gnss.c ice: check netlist before enabling ICE_F_GNSS 2023-09-18 11:27:33 -07:00
ice_gnss.h ice: make writes to /dev/gnssX synchronous 2023-06-07 10:51:58 +01:00
ice_hw_autogen.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -08:00
ice_hwmon.c ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00
ice_hwmon.h ice: read internal temperature sensor 2023-12-05 11:40:12 +01:00
ice_idc.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_idc_int.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_irq.c ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_irq.h ice: add dynamic interrupt allocation 2023-05-16 09:38:38 -07:00
ice_lag.c ice: Add check for lport extraction to LAG init 2024-02-14 17:58:45 -08:00
ice_lag.h ice: Add check for lport extraction to LAG init 2024-02-14 17:58:45 -08:00
ice_lan_tx_rx.h ice: Support RX hash XDP hint 2023-12-13 16:16:40 -08:00
ice_lib.c Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 2023-12-22 12:09:52 +00:00
ice_lib.h ice: Add support in the driver for associating queue with napi 2023-12-04 18:04:05 -08:00
ice_main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-01-04 18:06:46 -08:00
ice_nvm.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_nvm.h ice: Add additional flags to ice_nvm_write_activate 2022-08-24 08:45:54 -07:00
ice_osdep.h net: intel: fix old compiler regressions 2024-02-07 09:15:27 -08:00
ice_pf_vsi_vlan_ops.c ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_pf_vsi_vlan_ops.h ice: Add outer_vlan_ops and VSI specific VLAN ops implementations 2022-02-09 09:24:45 -08:00
ice_protocol_type.h ice: Rename enum ice_pkt_flags values 2023-08-07 13:01:29 -07:00
ice_ptp.c ice: Fix some null pointer dereference issues in ice_ptp.c 2024-01-02 11:18:32 -08:00
ice_ptp.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -08:00
ice_ptp_consts.h ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp_hw.c ice: Rename E822 to E82X 2023-12-05 11:40:12 +01:00
ice_ptp_hw.h ice: Enable SW interrupt from FW for LL TS 2024-01-02 11:18:32 -08:00
ice_repr.c ice: add VF representors one by one 2023-11-13 11:42:14 -08:00
ice_repr.h ice: add VF representors one by one 2023-11-13 11:42:14 -08:00
ice_sbq_cmd.h ice: add support for sideband messages 2021-06-11 07:38:00 -07:00
ice_sched.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_sched.h ice: drop two params of ice_aq_move_sched_elems() 2023-10-03 12:17:11 -07:00
ice_sriov.c ice: replace ice_vf_recreate_vsi() with ice_vf_reconfig_vsi() 2024-01-02 11:18:32 -08:00
ice_sriov.h ice: set MSI-X vector count on VF 2023-10-20 12:53:05 +01:00
ice_switch.c ice: Add support for packet mirroring using hardware in switchdev mode 2024-01-02 11:18:32 -08:00
ice_switch.h ice: remove unused methods 2023-08-17 10:43:06 -07:00
ice_tc_lib.c ice: Add support for packet mirroring using hardware in switchdev mode 2024-01-02 11:18:32 -08:00
ice_tc_lib.h ice: Fix tx queue rate limit when TCs are configured 2023-07-05 09:29:37 -07:00
ice_trace.h ice: add tracepoints for the switchdev bridge 2023-07-24 08:53:49 -07:00
ice_txrx.c ice: remove redundant xdp_rxq_info registration 2024-01-24 16:24:06 -08:00
ice_txrx.h ice: work on pre-XDP prog frag count 2024-01-24 16:24:06 -08:00
ice_txrx_lib.c ice: use VLAN proto from ring packet context in skb path 2023-12-13 16:16:41 -08:00
ice_txrx_lib.h ice: work on pre-XDP prog frag count 2024-01-24 16:24:06 -08:00
ice_type.h net: intel: fix old compiler regressions 2024-02-07 09:15:27 -08:00
ice_vf_lib.c ice: replace ice_vf_recreate_vsi() with ice_vf_reconfig_vsi() 2024-01-02 11:18:32 -08:00
ice_vf_lib.h ice: replace ice_vf_recreate_vsi() with ice_vf_reconfig_vsi() 2024-01-02 11:18:32 -08:00
ice_vf_lib_private.h ice: replace ice_vf_recreate_vsi() with ice_vf_reconfig_vsi() 2024-01-02 11:18:32 -08:00
ice_vf_mbx.c ice: merge ice_mbx_report_malvf with ice_mbx_vf_state_handler 2023-03-13 11:00:10 -07:00
ice_vf_mbx.h ice: initialize mailbox snapshot earlier in PF init 2023-03-13 11:06:05 -07:00
ice_vf_vsi_vlan_ops.c ice: Restore fix disabling RX VLAN filtering 2023-12-05 10:51:22 -08:00
ice_vf_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_virtchnl.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_virtchnl.h iavf: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_virtchnl_allowlist.c iavf: enable symmetric-xor RSS for Toeplitz hash function 2023-12-13 22:07:17 -08:00
ice_virtchnl_allowlist.h ice: Allow ignoring opcodes on specific VF 2021-04-22 09:26:22 -07:00
ice_virtchnl_fdir.c ice: field get conversion 2023-12-18 11:20:43 -08:00
ice_virtchnl_fdir.h ice: introduce ice_vf_lib.c, ice_vf_lib.h, and ice_vf_lib_private.h 2022-03-15 13:22:13 -07:00
ice_vlan.h ice: Use the proto argument for VLAN ops 2022-02-09 09:24:45 -08:00
ice_vlan_mode.c ice: define meta data to match in switch 2023-05-19 08:57:43 -07:00
ice_vlan_mode.h ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_vsi_vlan_lib.c ice: fix pre-shifted bit usage 2023-12-18 11:20:43 -08:00
ice_vsi_vlan_lib.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_vsi_vlan_ops.c ice: Add outer_vlan_ops and VSI specific VLAN ops implementations 2022-02-09 09:24:45 -08:00
ice_vsi_vlan_ops.h ice: implement bridge port vlan 2023-07-24 08:53:35 -07:00
ice_xsk.c intel: xsk: initialize skb_frag_t::bv_offset in ZC drivers 2024-01-24 16:24:07 -08:00
ice_xsk.h ice: xsk: change batched Tx descriptor cleaning 2022-09-27 08:11:02 -07:00
Makefile ice: configure FW logging 2023-12-14 09:50:48 -08:00