mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-25 12:16:47 +00:00
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> |
||
|---|---|---|
| .. | ||
| ice_adminq_cmd.h | ||
| ice_common.c | ||
| ice_common.h | ||
| ice_controlq.c | ||
| ice_controlq.h | ||
| ice_devids.h | ||
| ice_ethtool.c | ||
| ice_hw_autogen.h | ||
| ice_lan_tx_rx.h | ||
| ice_lib.c | ||
| ice_lib.h | ||
| ice_main.c | ||
| ice_nvm.c | ||
| ice_osdep.h | ||
| ice_sched.c | ||
| ice_sched.h | ||
| ice_sriov.c | ||
| ice_sriov.h | ||
| ice_status.h | ||
| ice_switch.c | ||
| ice_switch.h | ||
| ice_txrx.c | ||
| ice_txrx.h | ||
| ice_type.h | ||
| ice_virtchnl_pf.c | ||
| ice_virtchnl_pf.h | ||
| ice.h | ||
| Makefile | ||