From nobody Thu Apr 9 17:19:55 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012071.outbound.protection.outlook.com [52.101.48.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC7B237FF7F; Fri, 6 Mar 2026 12:11:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772799080; cv=fail; b=KHdMTjyQvF8Vqgne+PQaUog0sRyeNqo4vy20Y9Bd17baLqHbKKWENQaSPNPDVQvgBPbotfwCElkEJF0ia13eIA8rNFWwEa8HDm5jS1sfSKPV4qY3Foo1qDhBemo3Tdn/aj1z9D54umCPuwQcU3loUs3mT8NH2VPHlTP79y3mh/4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772799080; c=relaxed/simple; bh=LO1SP7HTQWWnAz67t/XXf6q4w17eyXZC2dbY+ID4uX8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=RmOLvXH1XRgnu663ROpcmdrQOXxxm1LaM3H/cmw3/7whMhBsX2TQFmrRZHeLLwORNMF21petAksHv2jS1qkDmFHbMtzo34IUPOpkVvvwXGRJD423MJ8ZcnwW/4bRVmfU3gEvupJnNB9+7o8P+oAWR/WEdEm7XCu7+OVofdrwe9s= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=xNWq6SGq; arc=fail smtp.client-ip=52.101.48.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="xNWq6SGq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uTT8q1gUIZbldw0Fj5ewNkv0n2x+GJ6x7k05+0eGaNJ/mLu3ruRrPk6lK2SmN3CEZz1ngihoeZd5AZQDywRilGaB8z2gEj0wqCZl+QbUXSOPnDULRrbcLLUYLICocEJ3u9zsJk2ycqDsxDvVpi5f44ZGqBtFChnvrxHPtBMIkeyoBPqrHD5UCInlf0QlIfve6by9yaC7nWb9fJEkt7nZiy22dGIBy+knpTxoaOX+hlif0RhQxlgjZx/r7BTdhUxLRE9F0qicErzELrljQ8eaPCq/X4LsdE9tbwBVraKetUAXWIs8JY0cjmCMI+lwmwE8h+S8JTcYYYBnXfotTuSHHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PbdCZf3D2cSZOTjrQ0f32zYWHz9akhQ9PgcRgXeJBps=; b=ecVF/xo+iy4SAIERJZhQdvtyIBeSnfHAMsENNEd8c2MQCVyhN99PwPWa80lUHW2i68l7wTyStvBIfgfs+x15jCmkpT29PlcVMflSik7bPZEOoba+TZV/pKibdlo0SIRja7brQ+Eq0TEWvBR+ZZLUeaRv9mAZ8VA7lOrD7NdSc0nnMltMtqKnQA3mpJ9dmPoKtNSdmTpL4Jg++kMOnGr4HaVqIcpa+riGe5CfpkHunVWy3noPYlFTMgc5Wmu73HmLTUwqMNA/mmDdLO+rRyKx6R3kPjr+PQEpVLEEt3B1hcbwn+y3JCqO2rqrtVolxE8EoNFquGxfrnWMUfSOmRZ84Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PbdCZf3D2cSZOTjrQ0f32zYWHz9akhQ9PgcRgXeJBps=; b=xNWq6SGqQJXghBNjoJFUxUoFqPF3j7iRBiT4lPa9WZLBRhgIlsDSVHoFQ07NB/wIiXosBCc/dbfHT01tU/k3TEUk9x+x4vkjO1t+N3oT3SV5f04wq4V/ZVeOIriEGxR2m0+UxOhzsa8JMzJS423N+wKIu0fAxMgNsm0V7MS3Q1I= Received: from DM6PR10CA0014.namprd10.prod.outlook.com (2603:10b6:5:60::27) by DM4PR12MB6614.namprd12.prod.outlook.com (2603:10b6:8:bb::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.5; Fri, 6 Mar 2026 12:11:13 +0000 Received: from CH3PEPF00000016.namprd21.prod.outlook.com (2603:10b6:5:60:cafe::39) by DM6PR10CA0014.outlook.office365.com (2603:10b6:5:60::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.19 via Frontend Transport; Fri, 6 Mar 2026 12:11:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by CH3PEPF00000016.mail.protection.outlook.com (10.167.244.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.0 via Frontend Transport; Fri, 6 Mar 2026 12:11:13 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 6 Mar 2026 06:11:13 -0600 Received: from airavat.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 6 Mar 2026 04:11:10 -0800 From: Raju Rangoju To: CC: , , , , , , "Raju Rangoju" Subject: [PATCH net-next 1/2] amd-xgbe: Simplify powerdown/powerup paths Date: Fri, 6 Mar 2026 17:40:46 +0530 Message-ID: <20260306121047.1231755-2-Raju.Rangoju@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260306121047.1231755-1-Raju.Rangoju@amd.com> References: <20260306121047.1231755-1-Raju.Rangoju@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PEPF00000016:EE_|DM4PR12MB6614:EE_ X-MS-Office365-Filtering-Correlation-Id: e0116cd8-8a31-47c4-928f-08de7b7975ec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700016|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: C/iXYBbaYtIRoGgK/RjKFVbssj1vYtshj0Fv7HDx/Uz9vREimbGtF8fAxC+IeiJFHtfJcYb3Ke7CkGrO+eMFepMC+dVsWiOngnkqBcDpwlT8YRMl44NQaeSUkURxdus4dHkGGhYl5IGI3pnbnTQtE5aQWQeaiWZYZ6lSlkC80FQInhiq/ZCza8AcfZPvtJaLgaK2mODdeJCR62ZG0SfUAWAvRFcY0LsQu2UH42lg03fb5FZ8ZnXbpwJC8FcnOnTS2ty2QXD6q+TTXEuiB2x2wg8mLam4UDb/Qs68M80dGnjFYNuvhrRQDnhlF316w+PIBnne091XUVJh4bKzGQufjPH0ozXCf95maAcErBVFgbsLIhn0TyEpSnG0l972YEHZxILVyMU/tWlnoi7l2MpbFbxbN9dw2KoI2ekwaSkFwShkps0ccql0atoogEL0prrf/iH4ay9yd/Eu7sEryhAKvlXhRoysKzChLPeE/LxpTyR1hRidQkrXrdE6RkMU8LUK7XAu/zSuBnp/UuWX2/qltl5nTxdDu0VLlm/NZR/zqGiDiHny2uqextmpBduKTGd1EedClQG6kDmJlBDfumAxhZVdH5YV+IqQE6ve1G+FKsfQh5A7KPqY7I5oqJoukiyDLZKklXxIx+ng0tYu134/QgRkACCZG3uV4+2dkAMy7e6AJVvVNADChik8zyX+SA2Wkyg+8q7MvexXtVqHK3s7pAOEp+5S6TdBOxKTWmFGKQ2CPK6+UzulbohUB+PkG9aor26q7JW3hQuPYsi0rNNHWA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb08.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700016)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6QtydX2257FDyYDwmzM8fiAMdQf/s6KsBXwyVoAZtHmXYR2/QEDlZQfWbb2TA+CQFz59C/sCRc0D7EVwasjkdRvASDV9aFU45C0rfJk55wH7fv0oKS+cdBNzIEOH5HPqIbYW/CLMMjoQpiwy1PVdTXl5OPJu7h3wjelUeZa5hwGr/LNwyFdAJundScXCNtIhusST5RILbfss0hccK/Y+kT41Hz6XayIOnjrn6PhqCjY1E21GnmApUanAGcygtXhkdAD5HfwQMiFxl119w5J+vA/Zv2M6eFLSSlU2SzmUFbbXFcCS8MWtHYIpvyl9auR/HenthJBahy94lMYSyhicem89gO133qHVE02TnbNiHubsiIzB4LCtzYDQiJwbPaFFm/XmoXxhSTxaFu3+QuncLUH8PW9xR+N4XPLO9if1vUfESNuCZv+IxsJs/llEu28k X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2026 12:11:13.2344 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0116cd8-8a31-47c4-928f-08de7b7975ec X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CH3PEPF00000016.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6614 Content-Type: text/plain; charset="utf-8" The caller parameter in xgbe_powerdown() and xgbe_powerup() was intended to differentiate between driver and ioctl contexts, but the only remaining usage is from the driver suspend/resume path. Simplify this by: - Removing the unused XGMAC_DRIVER_CONTEXT and XGMAC_IOCTL_CONTEXT macros - Dropping the now-unused caller parameter - Reordering operations in xgbe_powerdown() to disable NAPI before stopping TX/RX, matching the order used in xgbe_stop() This makes the powerdown/powerup paths easier to follow and keeps the ordering consistent with the rest of the driver. Signed-off-by: Raju Rangoju --- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 47 ++++++++----------- drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 8 ++-- drivers/net/ethernet/amd/xgbe/xgbe-platform.c | 4 +- drivers/net/ethernet/amd/xgbe/xgbe.h | 8 +--- 4 files changed, 28 insertions(+), 39 deletions(-) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/etherne= t/amd/xgbe/xgbe-drv.c index 8b79d88480db..d57daf6306e1 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1116,69 +1116,62 @@ static int xgbe_phy_reset(struct xgbe_prv_data *pda= ta) return pdata->phy_if.phy_reset(pdata); } =20 -int xgbe_powerdown(struct net_device *netdev, unsigned int caller) +int xgbe_powerdown(struct net_device *netdev) { struct xgbe_prv_data *pdata =3D netdev_priv(netdev); struct xgbe_hw_if *hw_if =3D &pdata->hw_if; =20 - DBGPR("-->xgbe_powerdown\n"); - - if (!netif_running(netdev) || - (caller =3D=3D XGMAC_IOCTL_CONTEXT && pdata->power_down)) { - netdev_alert(netdev, "Device is already powered down\n"); - DBGPR("<--xgbe_powerdown\n"); + if (!netif_running(netdev)) { + netdev_dbg(netdev, "Device is not running, skipping powerdown\n"); return -EINVAL; } =20 - if (caller =3D=3D XGMAC_DRIVER_CONTEXT) - netif_device_detach(netdev); + if (pdata->power_down) { + netdev_dbg(netdev, "Device is already powered down\n"); + return -EINVAL; + } =20 + netif_device_detach(netdev); netif_tx_stop_all_queues(netdev); =20 xgbe_stop_timers(pdata); flush_workqueue(pdata->dev_workqueue); =20 + xgbe_napi_disable(pdata, 0); + hw_if->powerdown_tx(pdata); hw_if->powerdown_rx(pdata); =20 - xgbe_napi_disable(pdata, 0); - pdata->power_down =3D 1; =20 - DBGPR("<--xgbe_powerdown\n"); - return 0; } =20 -int xgbe_powerup(struct net_device *netdev, unsigned int caller) +int xgbe_powerup(struct net_device *netdev) { struct xgbe_prv_data *pdata =3D netdev_priv(netdev); struct xgbe_hw_if *hw_if =3D &pdata->hw_if; =20 - DBGPR("-->xgbe_powerup\n"); - - if (!netif_running(netdev) || - (caller =3D=3D XGMAC_IOCTL_CONTEXT && !pdata->power_down)) { - netdev_alert(netdev, "Device is already powered up\n"); - DBGPR("<--xgbe_powerup\n"); + if (!netif_running(netdev)) { + netdev_dbg(netdev, "Device is not running, skipping powerup\n"); return -EINVAL; } =20 - pdata->power_down =3D 0; - - xgbe_napi_enable(pdata, 0); + if (!pdata->power_down) { + netdev_dbg(netdev, "Device is already powered up\n"); + return -EINVAL; + } =20 hw_if->powerup_tx(pdata); hw_if->powerup_rx(pdata); =20 - if (caller =3D=3D XGMAC_DRIVER_CONTEXT) - netif_device_attach(netdev); + xgbe_napi_enable(pdata, 0); =20 netif_tx_start_all_queues(netdev); - xgbe_start_timers(pdata); + netif_device_attach(netdev); =20 - DBGPR("<--xgbe_powerup\n"); + pdata->power_down =3D 0; =20 return 0; } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/etherne= t/amd/xgbe/xgbe-pci.c index f54a5040a493..d8c1037dec45 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c @@ -360,14 +360,14 @@ static void xgbe_pci_remove(struct pci_dev *pdev) xgbe_free_pdata(pdata); } =20 -static int __maybe_unused xgbe_pci_suspend(struct device *dev) +static int xgbe_pci_suspend(struct device *dev) { struct xgbe_prv_data *pdata =3D dev_get_drvdata(dev); struct net_device *netdev =3D pdata->netdev; int ret =3D 0; =20 if (netif_running(netdev)) - ret =3D xgbe_powerdown(netdev, XGMAC_DRIVER_CONTEXT); + ret =3D xgbe_powerdown(netdev); =20 pdata->lpm_ctrl =3D XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1); pdata->lpm_ctrl |=3D MDIO_CTRL1_LPOWER; @@ -376,7 +376,7 @@ static int __maybe_unused xgbe_pci_suspend(struct devic= e *dev) return ret; } =20 -static int __maybe_unused xgbe_pci_resume(struct device *dev) +static int xgbe_pci_resume(struct device *dev) { struct xgbe_prv_data *pdata =3D dev_get_drvdata(dev); struct net_device *netdev =3D pdata->netdev; @@ -388,7 +388,7 @@ static int __maybe_unused xgbe_pci_resume(struct device= *dev) XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); =20 if (netif_running(netdev)) { - ret =3D xgbe_powerup(netdev, XGMAC_DRIVER_CONTEXT); + ret =3D xgbe_powerup(netdev); =20 /* Schedule a restart in case the link or phy state changed * while we were powered down. diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-platform.c b/drivers/net/et= hernet/amd/xgbe/xgbe-platform.c index 47d53e59ccf6..98b03a3f3a95 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-platform.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-platform.c @@ -384,7 +384,7 @@ static int xgbe_platform_suspend(struct device *dev) DBGPR("-->xgbe_suspend\n"); =20 if (netif_running(netdev)) - ret =3D xgbe_powerdown(netdev, XGMAC_DRIVER_CONTEXT); + ret =3D xgbe_powerdown(netdev); =20 pdata->lpm_ctrl =3D XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1); pdata->lpm_ctrl |=3D MDIO_CTRL1_LPOWER; @@ -407,7 +407,7 @@ static int xgbe_platform_resume(struct device *dev) XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); =20 if (netif_running(netdev)) { - ret =3D xgbe_powerup(netdev, XGMAC_DRIVER_CONTEXT); + ret =3D xgbe_powerup(netdev); =20 /* Schedule a restart in case the link or phy state changed * while we were powered down. diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/am= d/xgbe/xgbe.h index 4333d269ee84..3b9345506c2b 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -146,10 +146,6 @@ #define XGBE_MAX_PPS_OUT 4 #define XGBE_MAX_AUX_SNAP 4 =20 -/* Driver PMT macros */ -#define XGMAC_DRIVER_CONTEXT 1 -#define XGMAC_IOCTL_CONTEXT 2 - #define XGMAC_FIFO_MIN_ALLOC 2048 #define XGMAC_FIFO_UNIT 256 #define XGMAC_FIFO_ALIGN(_x) \ @@ -1309,8 +1305,8 @@ void xgbe_dump_rx_desc(struct xgbe_prv_data *, struct= xgbe_ring *, unsigned int); void xgbe_print_pkt(struct net_device *, struct sk_buff *, bool); void xgbe_get_all_hw_features(struct xgbe_prv_data *); -int xgbe_powerup(struct net_device *, unsigned int); -int xgbe_powerdown(struct net_device *, unsigned int); +int xgbe_powerup(struct net_device *netdev); +int xgbe_powerdown(struct net_device *netdev); void xgbe_init_rx_coalesce(struct xgbe_prv_data *); void xgbe_init_tx_coalesce(struct xgbe_prv_data *); void xgbe_restart_dev(struct xgbe_prv_data *pdata); --=20 2.34.1 From nobody Thu Apr 9 17:19:55 2026 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012052.outbound.protection.outlook.com [40.93.195.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D58B38E13B; Fri, 6 Mar 2026 12:11:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772799085; cv=fail; b=EeHU/Dn45Q5FaFiSdX83JR/y4DbeqQXXlfIJ2zPQgzNDRnPaziIV5/xoSiRPZ0u44vOTG0mykPtU3d2mM+u9o3mh9mTAqgfoOSa4H/j+0P9k7soLva6jhabvi7RyuaUHJExe1D9ongO8pvYRing+rbn1y3wieKxBLy+WlKJ1Qrk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772799085; c=relaxed/simple; bh=XbU1YZ0YYPsLH+cRdxznjWjgyc9HXutGDorZgTfqT6M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QgKPisqs/71c0AoqDSZYQd+px60ei71OxZCtXPdl1+1hSHw0vwQ0TgOn/RsBqdbjCX9gU2+5k6/j1DsqPWvgLbOtr5qN6k9TCjIuMHZc+mstv1B5tp+bS3Q66Ao4EEjTioHFBV1UPUvga62SL8csnJPBa616va9Irp8MHgc7rug= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=K9vpO9JO; arc=fail smtp.client-ip=40.93.195.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="K9vpO9JO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ylvBH7504pBw+y8Ga3BV/YbhBt4ploT2GlUgDjHQDRubds8k48zPKWNbfZtfUCeILhDaiX0KDEp5MQJxgRBi4TywqNt8MQAJT250iaGkStNMAUfjxp1y/SZjRKqYxnTDobr/qQT2s3FTLm7YmfVtP+grw5F5zHfRlzVDggPhPEaaZYrYRga1XwDOK1gzLzLXhp4N5XKh8KkyxaHpRyJuEWqyZC+BGj7CNn+P7+NgGOk/0NzGjvhmHLFMehQhLhAtTAOGl7h4tEqPNgXeFYtOk/GU/oXINdVLnzp36vMq0fKvyRcCua5pYYP7y3jpHf4vg6nPWUqLOjiMrRw+AdVHxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BQSdTi7ZH3eOCBx3FFjy2tHpOsJVO46rQamEQFO2Umw=; b=I1G8JvF47VwettwljtNmkZIK6+6LE+qTv+hgCKvOw46rHs8uvtQeRlqs46F2NnKMi/1p1xXW/z3WZMeh8dOjp2K3FL2xHW+LHIO5vvy1v6P+TWfFGh6yKQEP5s+YXkGq6XOE/MqNv9Vk31xlyLdk6QxiYxQIpsdpYhf8uIWCoVx0g/e3flDSt4h+PmL8H52sQjmKMK8QJi2EFxZT66nmGJIKelDL8z+0SB4uNEKUbaVUf/J+D+wyyX1c5Zkn3iuvG1sUYaIbTVRihNFGLWNU+2HdgXERiwDI6oGTdGANoY3SPv45Gtqj8BsQDYj2z4uxK9U1nctdLI08XxOpldnSLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BQSdTi7ZH3eOCBx3FFjy2tHpOsJVO46rQamEQFO2Umw=; b=K9vpO9JOVaukQtwyLH+bmNwsWxBCHsg1MHCsLiWAhuYu8y5tM1QbpnC0M8zOrq84Z8Urg7XBg0XXmRoXaCvpFytSJGCP23FqWRJ0GvQFBCHhKKY2xry0LEQBYumieo56VL++3OkJ640PmbGlw5EDVv6PJaj2NFvwNbCuLlRQmKg= Received: from BL1PR13CA0238.namprd13.prod.outlook.com (2603:10b6:208:2bf::33) by BL1PR12MB5947.namprd12.prod.outlook.com (2603:10b6:208:39a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.5; Fri, 6 Mar 2026 12:11:19 +0000 Received: from BL6PEPF0002256E.namprd02.prod.outlook.com (2603:10b6:208:2bf:cafe::7d) by BL1PR13CA0238.outlook.office365.com (2603:10b6:208:2bf::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.19 via Frontend Transport; Fri, 6 Mar 2026 12:11:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by BL6PEPF0002256E.mail.protection.outlook.com (10.167.249.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Fri, 6 Mar 2026 12:11:19 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 6 Mar 2026 06:11:19 -0600 Received: from airavat.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Fri, 6 Mar 2026 04:11:16 -0800 From: Raju Rangoju To: CC: , , , , , , "Raju Rangoju" Subject: [PATCH net-next 2/2] amd-xgbe: add PCI power management for S0i3 support Date: Fri, 6 Mar 2026 17:40:47 +0530 Message-ID: <20260306121047.1231755-3-Raju.Rangoju@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260306121047.1231755-1-Raju.Rangoju@amd.com> References: <20260306121047.1231755-1-Raju.Rangoju@amd.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 X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0002256E:EE_|BL1PR12MB5947:EE_ X-MS-Office365-Filtering-Correlation-Id: 6520c527-afcf-41f1-d8d0-08de7b7979a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: cEtA2R0VWLb6NcxPxfV8+U9opXXVJUbZdXRiGngbs7h+I/3ow+YqfK2QXuoiqE+qmYlkIvXdQoshtYn9kFe/iBABk4Y99fhFjwx2qos8+KDVPLowvuju2UkZSYgn43zg/yzly6zfqFeaSOjF8vahj6as1WBpJ7phdS0xgsRrVoZAuABW451cJ895CfzcqYkbM0wBfykqhm9OLF7fLicVYAJ5HTBk5oJJmVPb4QQ84FhE/p3icfxOOa1zZkwFpCYJMM79ozhkK6Oiv07RAz9LCkhnU7oB0rlYbMLZyArmQ38sok82rNhyaYKkPJYJcNOcJlPT3UaFSXWXy1nxRdD1vj6KMUpv655vWRIyPmExDcazx/XRINzukDsAPAOAVTX9OIDKrHrZPkUNXiUeEi5VO/HImEHepHCeLev4wFxa8DFJ2NmEnXExp8hNuLZ/fXeCifoACtHoddm76LEuwanxpbe+dSL9I9w3yRWySuJ+nQ6rxEbAcos9dBJzv/cyS2pnarIN0bnA3F0PFNJ00IWMrRj353/JyEHy5F377oD3OKO66cRUTR6tAwYFxuGbDWPORDB/6MvIOGFMDDmMXsjusgklmdYVUvgDxg1FsH/i7+8P0x3HzoiGbVJbR9PJ3dnq7oiaMfewXL2IsNMtcKMS804sIoGJgbj/1+b7y22eoEsOZ4LZfPo8h1AHSVNkQ+uzspBl4WHxTvlLpXQbg9tb5tdgWA+QWig4CujJD+gsZowZ6Oz5dzcali1DVpKwoT2SUZVCBfFRL0wg4mBTXRzUOQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XJekJxGWSlDOzypatc7bUEgvGB9SkvSPF9lrSCesf1yY0gFzJTv0tbJTcHvRlk9/xv20gOKAovm15UGX2Egk09lFLzlA6EylfevS0qRTiKMPPMVQ8o1A3UJ955at2d+rIbRL9cG/qsDCZ5mOGmzqQM27lS3JjrEYVSLubO2d+1Ip3dNB6azmKl51oe5dISkOMonAUiWyvdCM7hfGIdL/iH7ELqxDIkQ34Y8aEfdisKuQOegaSuw7Uj1CS/PVRo0slNj8SvEhEuPbkb6u/DRCUebfxFt8tpB9VAdWQtpigX+fXBTaeUcgAvjIf8+hXj5DM83Jgm2TOewND96iq3uzvwwjb3pMYvweXBlPVRIEzadfhI/UfeQc/2KFFF/C+oAtGvVj3PWX1TbeuMX1McxuMuc1K+5QiHdONPuUOKGOX+S9LUJ2NkKY6YNXkcHvT+Tl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2026 12:11:19.5126 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6520c527-afcf-41f1-d8d0-08de7b7979a8 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0002256E.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5947 Content-Type: text/plain; charset="utf-8" The current suspend/resume implementation does not correctly handle PCI device power state transitions, which prevents AMD platforms from reaching the deepest suspend state (S0i3) when the amd-xgbe driver is enabled. In particular, the amd_pmc driver reports: "Last suspend didn't reach deepest state" when this device is present. Implement proper PCI power management operations following the standard PCI PM model so that the device can be cleanly powered down and resumed. Suspend path: - Power down the network interface - Put the PHY into low-power mode - Disable bus mastering to prevent DMA activity - Save PCI configuration space - Disable the PCI device - Disable wake from D3 (S0i3 does not require Wake-on-LAN) - Set the device to D3hot Resume path: - Restore the PCI power state to D0 - Restore PCI configuration space - Enable the PCI device - Re-enable bus mastering - Re-enable device interrupts - Clear the PHY low-power mode - Power up the network interface This allows systems using amd-xgbe to reach the deepest suspend state when entering modern standby (S0i3). Signed-off-by: Raju Rangoju --- drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/etherne= t/amd/xgbe/xgbe-pci.c index d8c1037dec45..061dfc9f75e3 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c @@ -364,15 +364,31 @@ static int xgbe_pci_suspend(struct device *dev) { struct xgbe_prv_data *pdata =3D dev_get_drvdata(dev); struct net_device *netdev =3D pdata->netdev; + struct pci_dev *pdev =3D to_pci_dev(dev); int ret =3D 0; =20 if (netif_running(netdev)) ret =3D xgbe_powerdown(netdev); =20 + /* Disable all device interrupts to prevent spurious wakeups */ + XP_IOWRITE(pdata, XP_INT_EN, 0x0); + + /* Set PHY to low-power mode */ pdata->lpm_ctrl =3D XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1); pdata->lpm_ctrl |=3D MDIO_CTRL1_LPOWER; XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); =20 + /* Disable bus mastering to prevent DMA activity */ + pci_clear_master(pdev); + + /* Save PCI configuration state and disable device */ + pci_save_state(pdev); + pci_disable_device(pdev); + + /* Disable wake from D3 - required for S0i3 deep sleep */ + pci_wake_from_d3(pdev, false); + pci_set_power_state(pdev, PCI_D3hot); + return ret; } =20 @@ -380,10 +396,27 @@ static int xgbe_pci_resume(struct device *dev) { struct xgbe_prv_data *pdata =3D dev_get_drvdata(dev); struct net_device *netdev =3D pdata->netdev; + struct pci_dev *pdev =3D to_pci_dev(dev); int ret =3D 0; =20 + /* Restore PCI power state */ + pci_set_power_state(pdev, PCI_D0); + + /* Restore PCI configuration state */ + pci_restore_state(pdev); + + /* Enable PCI device */ + ret =3D pci_enable_device(pdev); + if (ret) + return ret; + + /* Re-enable bus mastering */ + pci_set_master(pdev); + + /* Re-enable all device interrupts */ XP_IOWRITE(pdata, XP_INT_EN, 0x1fffff); =20 + /* Clear PHY low-power mode */ pdata->lpm_ctrl &=3D ~MDIO_CTRL1_LPOWER; XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); =20 --=20 2.34.1