| Message ID | 20251205023757.1541228-2-aaron.ma@canonical.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series | [1/2] ice: Fix NULL pointer dereference in ice_vsi_set_napi_queues | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf > Of Aaron Ma > Sent: Friday, December 5, 2025 3:38 AM > To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Kitszel, > Przemyslaw <przemyslaw.kitszel@intel.com>; andrew+netdev@lunn.ch; > davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; intel-wired-lan@lists.osuosl.org; > netdev@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [Intel-wired-lan] [PATCH 2/2] ice: Initialize RDMA after > rebuild > > After wakeup from suspend, IRDMA is initialized with error: > > kernel: ice 0000:60:00.0: IRDMA hardware initialization FAILED > init_state=4 status=-110 > kernel: ice 0000:60:00.1: IRDMA hardware initialization FAILED > init_state=4 status=-110 > kernel: irdma.gen_2 ice.roce.1: probe with driver irdma.gen_2 failed > with error -110 > kernel: irdma.gen_2 ice.roce.2: probe with driver irdma.gen_2 failed > with error -110 > > IRDMA times out because the initialization before the schedule reset. > The ice_init_rdma() function already calls ice_plug_aux_dev() > internally, ensuring proper initialization order. > > Fixes: bc69ad74867db ("ice: avoid IRQ collision to fix init failure on > ACPI S3 resume") > Signed-off-by: Aaron Ma <aaron.ma@canonical.com> > --- > drivers/net/ethernet/intel/ice/ice_main.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_main.c > b/drivers/net/ethernet/intel/ice/ice_main.c > index 2533876f1a2fd..c6dd04d24ac09 100644 > --- a/drivers/net/ethernet/intel/ice/ice_main.c > +++ b/drivers/net/ethernet/intel/ice/ice_main.c > @@ -5677,11 +5677,6 @@ static int ice_resume(struct device *dev) > if (ret) > dev_err(dev, "Cannot restore interrupt scheme: %d\n", > ret); > > - ret = ice_init_rdma(pf); > - if (ret) > - dev_err(dev, "Reinitialize RDMA during resume failed: > %d\n", > - ret); > - > clear_bit(ICE_DOWN, pf->state); > /* Now perform PF reset and rebuild */ > reset_type = ICE_RESET_PFR; > @@ -7805,7 +7800,12 @@ static void ice_rebuild(struct ice_pf *pf, enum > ice_reset_req reset_type) > > ice_health_clear(pf); > > - ice_plug_aux_dev(pf); > + /* Initialize RDMA after control queues are ready */ > + err = ice_init_rdma(pf); > + if (err) > + dev_err(dev, "Reinitialize RDMA after rebuild failed: > %d\n", > + err); > + > if (ice_is_feature_supported(pf, ICE_F_SRIOV_LAG)) > ice_lag_rebuild(pf); > > -- > 2.43.0 Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 2533876f1a2fd..c6dd04d24ac09 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -5677,11 +5677,6 @@ static int ice_resume(struct device *dev) if (ret) dev_err(dev, "Cannot restore interrupt scheme: %d\n", ret); - ret = ice_init_rdma(pf); - if (ret) - dev_err(dev, "Reinitialize RDMA during resume failed: %d\n", - ret); - clear_bit(ICE_DOWN, pf->state); /* Now perform PF reset and rebuild */ reset_type = ICE_RESET_PFR; @@ -7805,7 +7800,12 @@ static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type) ice_health_clear(pf); - ice_plug_aux_dev(pf); + /* Initialize RDMA after control queues are ready */ + err = ice_init_rdma(pf); + if (err) + dev_err(dev, "Reinitialize RDMA after rebuild failed: %d\n", + err); + if (ice_is_feature_supported(pf, ICE_F_SRIOV_LAG)) ice_lag_rebuild(pf);
After wakeup from suspend, IRDMA is initialized with error: kernel: ice 0000:60:00.0: IRDMA hardware initialization FAILED init_state=4 status=-110 kernel: ice 0000:60:00.1: IRDMA hardware initialization FAILED init_state=4 status=-110 kernel: irdma.gen_2 ice.roce.1: probe with driver irdma.gen_2 failed with error -110 kernel: irdma.gen_2 ice.roce.2: probe with driver irdma.gen_2 failed with error -110 IRDMA times out because the initialization before the schedule reset. The ice_init_rdma() function already calls ice_plug_aux_dev() internally, ensuring proper initialization order. Fixes: bc69ad74867db ("ice: avoid IRQ collision to fix init failure on ACPI S3 resume") Signed-off-by: Aaron Ma <aaron.ma@canonical.com> --- drivers/net/ethernet/intel/ice/ice_main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)