diff mbox series

ice: rearm other interrupt cause register after enabling VFs

Message ID 20210712115425.214965-1-paul.greenwalt@intel.com
State Accepted
Delegated to: Anthony Nguyen
Headers show
Series ice: rearm other interrupt cause register after enabling VFs | expand

Commit Message

Paul Greenwalt July 12, 2021, 11:54 a.m. UTC
The other interrupt cause register (OICR), global interrupt 0, is
disabled when enabling VFs to prevent handling VFLR. If the OICR is
not rearmed then the VF cannot communicate with the PF.

Rearm the OICR after enabling VFs.

Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Brelinski, Tony Nov. 2, 2021, 11:04 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Greenwalt, Paul
> Sent: Monday, July 12, 2021 4:54 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH] ice: rearm other interrupt cause register
> after enabling VFs
> 
> The other interrupt cause register (OICR), global interrupt 0, is disabled when
> enabling VFs to prevent handling VFLR. If the OICR is not rearmed then the
> VF cannot communicate with the PF.
> 
> Rearm the OICR after enabling VFs.
> 
> Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 4 ++++
>  1 file changed, 4 insertions(+)

Tested-by: Tony Brelinski <tony.brelinski@intel.com>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
index 501331b6f70b..0a2e0b2c9227 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
@@ -1952,6 +1952,10 @@  static int ice_ena_vfs(struct ice_pf *pf, u16 num_vfs)
 	if (ice_eswitch_configure(pf))
 		goto err_unroll_sriov;
 
+	/* rearm global interrupts */
+	if (test_and_clear_bit(ICE_OICR_INTR_DIS, pf->state))
+		ice_irq_dynamic_ena(hw, NULL, NULL);
+
 	return 0;
 
 err_unroll_sriov: