> -----Original Message----- > From: Aaron Ma <[email protected]> > Sent: 07 September 2026 17:22 > To: Nguyen, Anthony L <[email protected]>; Kitszel, Przemyslaw > <[email protected]>; Andrew Lunn <[email protected]>; David S. > Miller <[email protected]>; Eric Dumazet <[email protected]>; Jakub > Kicinski <[email protected]>; Paolo Abeni <[email protected]>; > [email protected]; [email protected] > Cc: Henry Tieman <[email protected]>; moderated list:INTEL ETHERNET > DRIVERS <[email protected]> > Subject: [PATCH v2 1/2] ice: restore DDP state during PFR recovery > > The firmware package and switch recipes are shared by all PFs of an adapter. > However, each PF rebuilds independently after system resume. The resulting > package downloads and recipe updates can interleave, causing firmware > timeouts and leaving interfaces unusable. > > PFR also clears package-derived firmware state on affected devices. The > existing PFR path only rebuilds the driver's block tables, so VLAN recipe > programming can fail after the reset. > > The failure is reported as: > > ice 0000:04:00.0: Update pkg failed: err -5 > ice 0000:04:00.0: package load failed, -12 > ice 0000:04:00.0: Rebuild failed, unload and reload driver > > This was observed on an Intel E810-XXV-2 adapter (PCI ID 8086:159b, revision > 02) with NVM package 1.0.0.18 and ICE OS Default DDP package 1.3.43.0. > > Serialize rebuilds across PFs of the same adapter, while allowing each PFR to > complete independently. Reload the DDP package from its cached copy and > restore the default DVM recipes before rebuilding the remaining PF state. > Abort recovery if either operation fails. > > In addition, stop the service task before tearing down resources in > ice_remove() so that an in-flight rebuild completes and cannot dereference > pf->adapter after ice_adapter_put(). > > Fixes: 462acf6aca85 ("ice: Enable DDP package download") > Reviewed-by: Przemek Kitszel <[email protected]> > Signed-off-by: Aaron Ma <[email protected]> > --- > v1 -> v2: > - Stop service task early in ice_remove() to prevent use-after-free on > pf->adapter if rebuild is in flight. > > drivers/net/ethernet/intel/ice/ice_adapter.c | 2 ++ > drivers/net/ethernet/intel/ice/ice_adapter.h | 3 ++ > drivers/net/ethernet/intel/ice/ice_main.c | 35 ++++++++++++++----- > .../net/ethernet/intel/ice/ice_vlan_mode.c | 2 +- > .../net/ethernet/intel/ice/ice_vlan_mode.h | 1 + > 5 files changed, 34 insertions(+), 9 deletions(-) >
Tested-by: Ayush Singh < [email protected] > (A Contingent worker at Intel)
