From nobody Sun May 24 20:33:07 2026 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 67E99423A9B for ; Fri, 22 May 2026 14:25:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779459956; cv=none; b=E8LIYJZYCN0yezIQkOfPmOj4B2Cn8VfnYq91or3fulyBFE/CTf+CrH1GvCFXpurvE0vAQK7u4RrWY9ue5ROp2GoWgTpXPUdFMFMVpf88Vpn7/fbqy1vi1dVHmA6hJVMQECblbnbKA0Kf8un6B/xXS2h5hI+ft7Gm/RJpgIA678I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779459956; c=relaxed/simple; bh=p4R7AdYgnpQrXWvTjnkiC+swEt56EoTqiSQYtt6zCYY=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=Y7Be8DpzHoIQK0Ftdgn85Vme1EUDsLAK2BAwvrhrI6FzlJqf6t0zVSAunsQh/ldlEUgiD0xe4Rdun9ZYAwwdMtvltdw+dmu8nFZcSNn3B8aVlE+MHAtdYn9PVaTTodpZspYfQJRLPk4pX4mlCy5Spsj3gQHyRQ3YN6XsK6uZCao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CqEkLykT; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CqEkLykT" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5a74ac8b40aso7759324e87.1 for ; Fri, 22 May 2026 07:25:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779459954; x=1780064754; darn=vger.kernel.org; h=mime-version:references:subject:cc:to:from:date:user-agent :message-id:from:to:cc:subject:date:message-id:reply-to; bh=f7YU/70ppJUKskEkIhiqn0JkkkPomh77HSx0vSTwI4M=; b=CqEkLykTxtLpLjLC1lP+YTRLKJZPC9UIXtHaNL7o8tW1Qs3SfvqT2NybWA/z3oZGQ/ 1SM8beWPTj+EyUZMdrTjruMp1UXfU9YxDf4bZVyKBv8N0q/80N5D1bdWAFXNHAqZ17OJ JgOdO3+eBFST4Px4JDCUxgmIiCbMfxv2ia09XfSjEqY2He/08wx5tzhGshc0K4x+FL2W 0Dck6JS2NoHdSlK06tIzoFpK5EUzDjSqDg3z7rfdq8fXT9GVOyiERVTnxXY9nUs6MHsF 2Fefn+WdaqG90i03rIS5aba137pditPAFYXMKT8sUUjPGkmcgwBW9bBjteexVQiXaA2i TOjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779459954; x=1780064754; h=mime-version:references:subject:cc:to:from:date:user-agent :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=f7YU/70ppJUKskEkIhiqn0JkkkPomh77HSx0vSTwI4M=; b=NGiA/2N6sxvf/1Zc5oArtwQ9hpQEYr9wGrhuCA45dQSAF6f/QhxI/0fitoyO2TvY1W 6zyfvOYdWH8c2P+xe8WTg+niiJGMSXqWSLgMEsp9xiXN8bYvmmaTA5/AkTTzx4QsX95v ydemcnTLvPKpdgYfiejcUTrezbtoqtAUAs9IQOTza3f07Bnn5RWRQ3KmF2LJ3cwMLjpP ZCYa53nbPpr3qeCDDO5gUwfKnbhNi+vY5Dp5+KvXZPYo4MlairwmLkUO/2R5uoJFDjZ2 Bs5mfxnbx9U1K+Usk0VYKKzDgPoZw2Eah7DoFfooaAorlq0lj/2sXvzB/heVB5gAPKP7 WA5g== X-Gm-Message-State: AOJu0YyshhIzWbVi1RbgmqW3whXf/RWvgJRiJSUsSj2SaHJ7go/OQTIW EkGJ7Hc5cxXRkJFZRoXueUEhvE6X8DEPwb1s2sQdhDvmmr+4RRa2pZ/G X-Gm-Gg: Acq92OFPDksNbCYojT6cW7Pegd9wZ7KNAHxS+KBvV6K3wXCfllpTaH3oNdYrwvX6v9y itLiZJ1oHq9h0BdIqZJ8Tol91zPq1ByJudN0YTcIzmgCj7LGMLcMUu2mdZYhne19Elpa7orOuFf 7fgZhtljg4x5RY3LeJs0YSabIP06VMJxnITzycmIe3ZApVxUF4H272RjvETdP//Ltfv6fRrT96o wnY5glibZgWEUgiHwm6t+2OHQN9iRGdzYrNN0/0a90VsLAzBvqUY6mlt3oSnll0zDklrTnKDYj2 LHk7rbQ7naX8zdCA2S9ArZ4BP9FRZU5EMPPecehWdfecRIJz4Fdj26qUUdl9ViEOBDXf+t1/WDK Kf0L0XA3DW85S53zLeX/cScClCPOdvhzh5UdZuV7GHRIq2R44Hj0Okc+4TBhha9XWOir7GxfCIt L1jPxLtP9KELb3ekFVpmkBbMoE X-Received: by 2002:a05:6512:4058:10b0:5a2:abe6:7bcd with SMTP id 2adb3069b0e04-5aa3237b9ebmr1055166e87.19.1779459953313; Fri, 22 May 2026 07:25:53 -0700 (PDT) Received: from grain.localdomain ([5.18.255.97]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5aa32cb379csm452765e87.3.2026.05.22.07.25.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 07:25:52 -0700 (PDT) Received: by grain.localdomain (Postfix, from userid 1000) id 558B05A0023; Fri, 22 May 2026 17:25:17 +0300 (MSK) Message-ID: <20260522142517.498632593@gmail.com> User-Agent: quilt/0.69 Date: Fri, 22 May 2026 17:22:40 +0300 From: Cyrill Gorcunov To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org Cc: Simon Horman , anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, Cyrill Gorcunov Subject: [patch 1/2] ice: Use ICE_FW_RECOVERY_MODE state to track recovery mode References: <20260522142239.628965142@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If card is in recovery mode and we remove it physically then during ice_remove() we read device register to fetch its state again which is wrong since the device is no longer present. Fix it marking the device state with ICE_FW_RECOVERY_MODE bit. Signed-off-by: Cyrill Gorcunov --- drivers/net/ethernet/intel/ice/ice.h | 1 + drivers/net/ethernet/intel/ice/ice_main.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) Index: linux-tip.git/drivers/net/ethernet/intel/ice/ice.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-tip.git.orig/drivers/net/ethernet/intel/ice/ice.h +++ linux-tip.git/drivers/net/ethernet/intel/ice/ice.h @@ -310,6 +310,7 @@ enum ice_pf_state { ICE_PHY_INIT_COMPLETE, ICE_FD_VF_FLUSH_CTX, /* set at FD Rx IRQ or timeout */ ICE_AUX_ERR_PENDING, + ICE_FW_RECOVERY_MODE, /* Firmware in recovery mode */ ICE_STATE_NBITS /* must be last */ }; =20 Index: linux-tip.git/drivers/net/ethernet/intel/ice/ice_main.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-tip.git.orig/drivers/net/ethernet/intel/ice/ice_main.c +++ linux-tip.git/drivers/net/ethernet/intel/ice/ice_main.c @@ -5121,6 +5121,8 @@ static int ice_probe_recovery_mode(struc =20 dev_err(dev, "Firmware recovery mode detected. Limiting functionality. Re= fer to the Intel(R) Ethernet Adapters and Devices User Guide for details on= firmware recovery mode\n"); =20 + set_bit(ICE_FW_RECOVERY_MODE, pf->state); + INIT_HLIST_HEAD(&pf->aq_wait_list); spin_lock_init(&pf->aq_wait_lock); init_waitqueue_head(&pf->aq_wait_queue); @@ -5366,7 +5368,12 @@ static void ice_remove(struct pci_dev *p msleep(100); } =20 - if (ice_is_recovery_mode(&pf->hw)) { + /* + * .remove() may be called when adapter is physically + * unplugged so we can't read the fw state but use + * the flag instead. + */ + if (test_bit(ICE_FW_RECOVERY_MODE, pf->state)) { ice_service_task_stop(pf); scoped_guard(devl, priv_to_devlink(pf)) { ice_deinit_devlink(pf); From nobody Sun May 24 20:33:07 2026 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2097244E037 for ; Fri, 22 May 2026 14:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779459967; cv=none; b=Bi/u+spj6npufTTyODlUo5ss5ePqvvfxNLpQokEcuVcGXIdd293lrU8OqfSX9PS4FedIpUg8X550bXacHUrg8XWbniMmJdYp+dKO9Hml740s3tkGDAs/jvCVokHIevdpgiQBZCHOaYmOqHrsOmEPAQnQ5OrfZfymOSA77B/9qvY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779459967; c=relaxed/simple; bh=4pCNnTeqyzf6VEl2hNsKTbPGOcUh3+iSlo4UZVG5I34=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=T+Pg6Mbc3AP+/8HLDpy78JpeD32PoYwaaEUzYiyRM/1uLbC7SgdYx5ec5xQdz5ZWoC/qRIOhr3hQEvV/6TZEiQJqgLdshlOGkEMLZ+49rVOFRbwvqBBUXNcLfHDJYjvjToKmHoY7m1yTvWRFPXmGBsekdlevtkZy32NRB7a8SdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=geTgqib3; arc=none smtp.client-ip=209.85.167.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="geTgqib3" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-5a88db610ccso7733283e87.2 for ; Fri, 22 May 2026 07:26:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779459964; x=1780064764; darn=vger.kernel.org; h=mime-version:references:subject:cc:to:from:date:user-agent :message-id:from:to:cc:subject:date:message-id:reply-to; bh=MpQaY3we4xrhiPbOjmoJPTIny3UGycHksSQkshrzJus=; b=geTgqib3rQF8cnANmvbSzleLZ+Y0tOl+6aQbHDhmPbiO6YlqEtybjvErhCIBBfEt0K 5KrzrhTCH4il5gfRCdZjugvUDligLxCDumvAlvy5Lny1aezhN1kNK+HIdI8qbO+v66+q Klmo0/+PfKsAAZt+gaj72mj9Xwbk5crFcfpSA/3ydb/rcPHIk30RUrQTxJYiq0dGzytD npBOS/3Cpq70NAtEsQsvtpcXwUNgKWCWujuCw6wJP2twtmdgHlFAVV95aO8cZ/NWIRpr a3BhJztc0y+DWDWS1QT1G+kWfqlTMWfoJ3GK0BJ1RJmx5uj0oAY9959UFz7CPW716BKN aGfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779459964; x=1780064764; h=mime-version:references:subject:cc:to:from:date:user-agent :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MpQaY3we4xrhiPbOjmoJPTIny3UGycHksSQkshrzJus=; b=Gf1eQC9qJrSo4T4Fx1TYB4pxqAUNEVjeQdJkW/VSiiQxoWHJTJ7BfPyaXg4NYKgRjG gVwx1izOIGlLrRmfqi7WgvZabYUKsNyUULgKUXylD/Dq+DMFRr//j2Q8ZCWolN8uJaSz NLbVz+LjVLnL3Ila760xHI+WJZcNHKZ/th5014oqgW6dDiWUTyboDRcZzFv7Lqp+Ye7b gEaAN/BwNalUh4+woeM4f2xxIIO3tNby0wVbqEzXfK2UhYJrc998jmnHxnmY5rk2pufR g4MHlCUinqP/3NeN25ow1YdrVLuPMUgUjDcXQSDXm9Qj5FwfQXb/ppERnr4AZSAkRRix sOew== X-Gm-Message-State: AOJu0Yw0oYvdHZUN0rty5aSrsn2J15QqmBH1gs5eHOIDTqdp6FRhDjq6 Wec91kPdFhZncBIx5vVHyy48a49GVubDz0Fi3UcytOiLcyLSrADDh/sX X-Gm-Gg: Acq92OEtqTGUm228kst3ghr8j+EraSCNZDnrlfrTMbJwE/4dgmGPLFIWBBPyCPQZ5l8 8cD2py8uf6UJk0eJoN183j+shSpjHfain8K2tC1/0dYx9x7UI2CHWKuqaRhJqnNvwi8CiltjqQA pajSLA/NawJfGmMuqvKpDw0kD5mGK0FHr1RGlaPLFFImaOJZTbmk1Dxv9wfY6SOdvqu7Xg5TICG dTIDbQjWhQ4QPSbFwEd8NObB/4tsH44qbo1HzHUVpfrwhglXyQQ1BYtaydpCIEE0fZDVcef5NN+ kVFSxk9RnQaixnUGQ981pt3JFyIodategRM/nToO1Vx6bp3HyRZf/kTseGLL+4eKIyuAbxZWy+5 3QvIQ0a249DPAuS8YXBJmW/Q4HceZbLTRbo2rwyiklhr4vJJ5W0uth78PtjB/IYyWe/WijIwV1S q1aBB2Itq35tkP9DThxzCHYRNP X-Received: by 2002:a05:6512:3b8a:b0:5a3:eb4b:37a7 with SMTP id 2adb3069b0e04-5aa3235d1abmr1336671e87.6.1779459964034; Fri, 22 May 2026 07:26:04 -0700 (PDT) Received: from grain.localdomain ([5.18.255.97]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5aa32ceb267sm445082e87.51.2026.05.22.07.26.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2026 07:26:03 -0700 (PDT) Received: by grain.localdomain (Postfix, from userid 1000) id 573E05A0048; Fri, 22 May 2026 17:25:17 +0300 (MSK) Message-ID: <20260522142517.550660367@gmail.com> User-Agent: quilt/0.69 Date: Fri, 22 May 2026 17:22:41 +0300 From: Cyrill Gorcunov To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org Cc: Simon Horman , anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, Cyrill Gorcunov Subject: [patch 2/2] ice: Fix wrong dsn read in ice_adapter_put References: <20260522142239.628965142@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When registering an adapter instance, we read the PCI configuration space to fetch the DSN and generate an adapter index for lookups. However, if the adapter has been physically unplugged, the PCI space is no longer accessible. Reading it returns a zero value, which results in either an incorrect adapter instance being put or the proper instance not being put at all. To fix this, we will use the previously known index instead. Signed-off-by: Cyrill Gorcunov --- drivers/net/ethernet/intel/ice/ice_adapter.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) Index: linux-tip.git/drivers/net/ethernet/intel/ice/ice_adapter.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-tip.git.orig/drivers/net/ethernet/intel/ice/ice_adapter.c +++ linux-tip.git/drivers/net/ethernet/intel/ice/ice_adapter.c @@ -40,10 +40,8 @@ static u64 ice_adapter_index(struct pci_ } } =20 -static unsigned long ice_adapter_xa_index(struct pci_dev *pdev) +static unsigned long xa_index_mangle(u64 index) { - u64 index =3D ice_adapter_index(pdev); - #if BITS_PER_LONG =3D=3D 64 return index; #else @@ -51,6 +49,11 @@ static unsigned long ice_adapter_xa_inde #endif } =20 +static unsigned long ice_adapter_xa_index(struct pci_dev *pdev) +{ + return xa_index_mangle(ice_adapter_index(pdev)); +} + static struct ice_adapter *ice_adapter_new(struct pci_dev *pdev) { struct ice_adapter *adapter; @@ -130,13 +133,17 @@ struct ice_adapter *ice_adapter_get(stru */ void ice_adapter_put(struct pci_dev *pdev) { + const struct ice_pf *pf =3D pci_get_drvdata(pdev); struct ice_adapter *adapter; unsigned long index; =20 - index =3D ice_adapter_xa_index(pdev); + if (WARN_ON(!pf->adapter)) + return; + scoped_guard(mutex, &ice_adapters_mutex) { + index =3D xa_index_mangle(pf->adapter->index); adapter =3D xa_load(&ice_adapters, index); - if (WARN_ON(!adapter)) + if (WARN_ON(!adapter || adapter !=3D pf->adapter)) return; if (!refcount_dec_and_test(&adapter->refcount)) return;