mirror_ubuntu-kernels/drivers/net/ethernet/intel/ice
Brett Creeley 0e04e8e14b ice: fix issue where host reboots on unload when iommu=on
Currently if the kernel has the intel_iommu=on parameter set, on some
platforms removing the driver causes a system reboot. In initialization
we associate the control queue interrupts with the pf->hw_oicr_idx and
enable the interrupts by setting the CAUSE_ENA bit. The problem comes
on teardown because we are not clearing the CAUSE_ENA bit for the
control queues, but the vector at pf->hw_oicr_idx (miscellaneous
interrupt vector) gets disabled.

Fix this by clearing the CAUSE_ENA bit in the appropriate control queue
registers on when freeing the miscellaneous interrupt vector. Also,
move the call to ice_free_irq_msix_misc() to after ice_deinit_sw() in
ice_remove() because ice_deinit_sw() makes an AQ call, but
ice_free_irq_msix_misc() disables the miscellaneous vector and it's
associated interrupts.

Also, create two small helper functions to enable and disable the
control queue interrupts respectively.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2019-02-25 08:56:01 -08:00
..
ice_adminq_cmd.h ice: Add support for new PHY types 2019-01-15 12:38:44 -08:00
ice_common.c ice: add const qualifier to mac_addr parameter 2019-01-15 12:42:38 -08:00
ice_common.h ice: add const qualifier to mac_addr parameter 2019-01-15 12:42:38 -08:00
ice_controlq.c ice: Use Tx|Rx in comments 2018-11-20 11:39:04 -08:00
ice_controlq.h ice: Update expected FW version 2018-10-24 13:56:37 -07:00
ice_devids.h ice: Change device ID define names to align with branding string 2018-10-24 13:53:30 -07:00
ice_ethtool.c ice: sizeof(<type>) should be avoided 2019-02-25 08:56:01 -08:00
ice_hw_autogen.h ice: Add support for adaptive interrupt moderation 2019-01-15 11:29:16 -08:00
ice_lan_tx_rx.h ice: Add support for new PHY types 2019-01-15 12:38:44 -08:00
ice_lib.c ice: fix stack hogs from struct ice_vsi_ctx structures 2019-02-25 08:56:01 -08:00
ice_lib.h ice: Rework queue management code for reuse 2019-01-15 11:11:10 -08:00
ice_main.c ice: fix issue where host reboots on unload when iommu=on 2019-02-25 08:56:01 -08:00
ice_nvm.c ice: Implement support for normal get_eeprom[_len] ethtool ops 2019-01-15 10:20:43 -08:00
ice_osdep.h ice: Start hardware initialization 2018-03-26 09:59:08 -07:00
ice_sched.c ice: sizeof(<type>) should be avoided 2019-02-25 08:56:01 -08:00
ice_sched.h ice: Move aggregator list into ice_hw instance 2019-01-15 11:21:13 -08:00
ice_sriov.c ice: Add support for new PHY types 2019-01-15 12:38:44 -08:00
ice_sriov.h ice: Add handlers for VF netdevice operations 2018-10-03 07:42:30 -07:00
ice_status.h ice: Add support for VF reset events 2018-10-03 07:42:30 -07:00
ice_switch.c ice: fix ice_remove_rule_internal vsi_list handling 2019-02-25 08:56:01 -08:00
ice_switch.h ice: Free VSI contexts during for unload 2018-11-06 12:46:47 -08:00
ice_txrx.c ice: sizeof(<type>) should be avoided 2019-02-25 08:56:01 -08:00
ice_txrx.h ice: Implement getting and setting ethtool coalesce 2019-01-15 11:50:05 -08:00
ice_type.h ice: Add support for new PHY types 2019-01-15 12:38:44 -08:00
ice_virtchnl_pf.c ice: fix stack hogs from struct ice_vsi_ctx structures 2019-02-25 08:56:01 -08:00
ice_virtchnl_pf.h ice: Cosmetic formatting changes 2018-11-20 11:39:04 -08:00
ice.h ice: Fix the calculation of ICE_MAX_MTU 2019-02-25 08:56:01 -08:00
Makefile ice: Add support for VF reset events 2018-10-03 07:42:30 -07:00