From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4C331431D5 for ; Sun, 22 Oct 2023 16:31:42 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45E93402C5; Sun, 22 Oct 2023 16:31:42 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2066.outbound.protection.outlook.com [40.107.95.66]) by mails.dpdk.org (Postfix) with ESMTP id 6A4B1402C5 for ; Sun, 22 Oct 2023 16:31:39 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CzarjEVg9OtPUdViNgNngu9QUdngTFeUzmbBe/R8vQK7OwOjeGU9vK15hKiHu/41PklFxOnwm9Wzh8ECQRJm6eAhn/6j2/3KVg3Cry21H4E6W+VX+mB9chA74Fch6cPdUjFXVc7Y1IU+H7AIXJxvv4U6TnD0TskOKSQIET/+1Dtdxz9pp/kZXbQ6DFbttNAGW/vgCKdXZYnqEQJ1Op1IHEwtPaMiI4IL1uCGcnHaDKHxWwJEXs3k/qnhtMO5Xwq/1CSDibIIbVbB5EUwuFojPpZMicz16achH0jHAfxMkW/+u8AC1i5AhU+bavev3851yrS7qzrj8CoypyTiEbbGvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=aL/K1h+IotOt40D64u9jpWw/l3GMnph4oyvO/CPO86M=; b=nuKczabN6SBkzAftSjfK2uL4SN8h2/HDeLUUNm+ytz0hyXOD4giQgspLiNbq1aObpW7tKoyhip3r4CryUuinbkkgB0J7CJX7zUPkW7UVBnJ3odKtCTUYbot+OfLEkuPe7Ii3F3OOIESK4W2+dmVi69CnBAayR00mISJU2SapUFO+brq1l0yOmrChISNeDNexcXN70ZkBs36rZD3YALnUoKpbTJreXjCNmfBhRIL407QHm0s2fRGZ1dWA3kxz13Ozdd7ipSZ9FuobFvVRYhEdaWa8sewfVKcd4oCUg2nWulpLEQvmV9my9S75K1b61IT+/exS5IDg8i5cp5VbVFwEng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=amd.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aL/K1h+IotOt40D64u9jpWw/l3GMnph4oyvO/CPO86M=; b=Nm620GXp/R9PSUZ+c4vupO8m+eSBhvWliT4GzG/7v/h6Jo04fa0QLsEML1SeVFKkAs32ReB+sFyLofDKXAAyXbCjlENVnP7Ae0rru6vuc2sO+odp0zUlj3Ug/gCDtPbF3fl+94ZPgl/N1TLbR6d3tq4SMw7bYFdEgj45HU5ZQcWBioGxonweaTLW2s7IBKqn5bD3Gij2Ozl4Kut68FIgAktaPs8aWNLiVDK/SnpKkRwsP663B4sgAbuWzmDNHC4CAr9FmbVj79BGxM910dfzA9gsGDPEVoQzCRzabCV1EzFtdrh45edlcjkaD6e3oqkEDKWY5afr+B/SSaXu8bNYTA== Received: from BLAPR03CA0091.namprd03.prod.outlook.com (2603:10b6:208:32a::6) by MN6PR12MB8490.namprd12.prod.outlook.com (2603:10b6:208:470::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.26; Sun, 22 Oct 2023 14:31:36 +0000 Received: from BL02EPF0001A0FA.namprd03.prod.outlook.com (2603:10b6:208:32a:cafe::47) by BLAPR03CA0091.outlook.office365.com (2603:10b6:208:32a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.33 via Frontend Transport; Sun, 22 Oct 2023 14:31:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A0FA.mail.protection.outlook.com (10.167.242.101) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.15 via Frontend Transport; Sun, 22 Oct 2023 14:31:36 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Sun, 22 Oct 2023 07:31:23 -0700 Received: from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Sun, 22 Oct 2023 07:31:21 -0700 From: Xueming Li To: Selwin Sebastian CC: Ferruh Yigit , dpdk stable Subject: patch 'net/axgbe: identify CPU with cpuid' has been queued to stable release 22.11.4 Date: Sun, 22 Oct 2023 22:22:05 +0800 Message-ID: <20231022142250.10324-97-xuemingl@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231022142250.10324-1-xuemingl@nvidia.com> References: <20231022142250.10324-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FA:EE_|MN6PR12MB8490:EE_ X-MS-Office365-Filtering-Correlation-Id: 09a2ff91-6ca6-4d87-91d9-08dbd30b98d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wea+r9m4jn/6xV16xvHubRw/GHv2tqmv2xtG3QhDfD+jdW2d7W22sV9RrxdCL/veBM5YR/WEmc6HMiwWxw7fWhq82Iab49Dh+ugYOc0yEd6dvX3ToVK7T2UVxNd8RPuwx0/KdYPXqkfzaoEuxsJR3e8NBBnph/yYTJxkbmT5BE/OZ+hoJHgaK8+KY/a6ChLuqmkiaxKH2UPQ2D0PsLO5EhIU3m0phqImp+PsCje0UV1hmlql6Y4MQCpuMBK6DFIWlRJ9ZzHfIjeuOVIQNgcUQUICM1n9sdrP/rpxGuj04jAd+MraZL9GiunvQt1ynHQ5jUFCYMhIpq0uicfwagDhJBg+0jvRrRSfTang7XYUPoDXbx5XGIhxhTNwMtUk2KCWU8qgVRQ+ftyf5uofLoKUypbGUHtHLuuxSglAGs7mcf/uKxb3EwdzUkD95xOzcdG/BETFE5tzlg04Ha8jF00JwWRfWQuYyAaBY7cvlr71db93RBlThnirHCGb0jLgGB98c78sI038vI/c1WnuCLK4Y1uaGZBwLa3JY3hPnL8UyJDqpuXiS8fIuiQlrHnNUisxijfLpspbJ+ve7irUtFj6jqFgn2xyj2c73r/HminTTMv0QmKsFZKg4A8YA3WLJ28t9hgXYSNBIOpaZaUATV89OarJZ0tPKyJRgMmaAVDHRDdxoa6nUx3nZEZBhdTf0xtVJiJwDMMJXA6OCBb18uskoKlmBodjI3311lXKzIFWk9PkCmYJn4eN/yxYf4eEaBE5 X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230031)(4636009)(396003)(39850400004)(376002)(346002)(136003)(230922051799003)(82310400011)(64100799003)(186009)(1800799009)(451199024)(36840700001)(46966006)(36860700001)(83380400001)(6286002)(53546011)(336012)(2616005)(426003)(26005)(1076003)(16526019)(7696005)(6666004)(36756003)(86362001)(356005)(7636003)(82740400003)(47076005)(966005)(4326008)(41300700001)(8936002)(8676002)(5660300002)(478600001)(40480700001)(2906002)(4001150100001)(70206006)(54906003)(70586007)(6916009)(55016003)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2023 14:31:36.3613 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 09a2ff91-6ca6-4d87-91d9-08dbd30b98d8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0001A0FA.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8490 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 22.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/15/23. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://git.dpdk.org/dpdk-stable/log/?h=22.11-staging This queued commit can be viewed at: https://git.dpdk.org/dpdk-stable/commit/?h=22.11-staging&id=b796460bce754d25377a4e8b3a52c0d0ad7d47c4 Thanks. Xueming Li --- >From b796460bce754d25377a4e8b3a52c0d0ad7d47c4 Mon Sep 17 00:00:00 2001 From: Selwin Sebastian Date: Wed, 4 Oct 2023 15:37:54 +0530 Subject: [PATCH] net/axgbe: identify CPU with cpuid Cc: Xueming Li [ upstream commit a27ff9cac18cdc5800d8b1c181ddf2a8c92aaac2 ] Using root complex to identify CPU will not work for VM passthrough. cpuid is used to get family and model id to identify CPU. Fixes: b0db927b5eba ("net/axgbe: use PCI root complex device to distinguish device") Signed-off-by: Selwin Sebastian Acked-by: Ferruh Yigit --- drivers/net/axgbe/axgbe_ethdev.c | 106 ++++++++++++++++++------------- 1 file changed, 63 insertions(+), 43 deletions(-) diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c index b071e4e460..da48a3ac42 100644 --- a/drivers/net/axgbe/axgbe_ethdev.c +++ b/drivers/net/axgbe/axgbe_ethdev.c @@ -12,6 +12,12 @@ #include "eal_filesystem.h" +#ifdef RTE_ARCH_X86 +#include +#else +#define __cpuid(n, a, b, c, d) +#endif + static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev); static int axgbe_dev_configure(struct rte_eth_dev *dev); static int axgbe_dev_start(struct rte_eth_dev *dev); @@ -172,9 +178,14 @@ static const struct axgbe_xstats axgbe_xstats_strings[] = { /* The set of PCI devices this driver supports */ #define AMD_PCI_VENDOR_ID 0x1022 -#define AMD_PCI_RV_ROOT_COMPLEX_ID 0x15d0 -#define AMD_PCI_YC_ROOT_COMPLEX_ID 0x14b5 -#define AMD_PCI_SNOWY_ROOT_COMPLEX_ID 0x1450 + +#define Fam17h 0x17 +#define Fam19h 0x19 + +#define CPUID_VENDOR_AuthenticAMD_ebx 0x68747541 +#define CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163 +#define CPUID_VENDOR_AuthenticAMD_edx 0x69746e65 + #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458 #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459 @@ -2122,29 +2133,6 @@ static void axgbe_default_config(struct axgbe_port *pdata) pdata->power_down = 0; } -/* - * Return PCI root complex device id on success else 0 - */ -static uint16_t -get_pci_rc_devid(void) -{ - char pci_sysfs[PATH_MAX]; - const struct rte_pci_addr pci_rc_addr = {0, 0, 0, 0}; - unsigned long device_id; - - snprintf(pci_sysfs, sizeof(pci_sysfs), "%s/" PCI_PRI_FMT "/device", - rte_pci_get_sysfs_path(), pci_rc_addr.domain, - pci_rc_addr.bus, pci_rc_addr.devid, pci_rc_addr.function); - - /* get device id */ - if (eal_parse_sysfs_value(pci_sysfs, &device_id) < 0) { - PMD_INIT_LOG(ERR, "Error in reading PCI sysfs\n"); - return 0; - } - - return (uint16_t)device_id; -} - /* * It returns 0 on success. */ @@ -2158,6 +2146,9 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) uint32_t len; int ret; + unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0; + unsigned char cpu_family = 0, cpu_model = 0; + eth_dev->dev_ops = &axgbe_eth_dev_ops; eth_dev->rx_descriptor_status = axgbe_dev_rx_descriptor_status; @@ -2196,26 +2187,55 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) pdata->vdata = &axgbe_v2b; /* - * Use PCI root complex device ID to identify the CPU + * Use CPUID to get Family and model ID to identify the CPU */ - switch (get_pci_rc_devid()) { - case AMD_PCI_RV_ROOT_COMPLEX_ID: - pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF; - pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT; - break; - case AMD_PCI_YC_ROOT_COMPLEX_ID: - pdata->xpcs_window_def_reg = PCS_V2_YC_WINDOW_DEF; - pdata->xpcs_window_sel_reg = PCS_V2_YC_WINDOW_SELECT; - /* Yellow Carp devices do not need cdr workaround */ - pdata->vdata->an_cdr_workaround = 0; + __cpuid(0x0, eax, ebx, ecx, edx); + + if (ebx == CPUID_VENDOR_AuthenticAMD_ebx && + edx == CPUID_VENDOR_AuthenticAMD_edx && + ecx == CPUID_VENDOR_AuthenticAMD_ecx) { + int unknown_cpu = 0; + eax = 0, ebx = 0, ecx = 0, edx = 0; + + __cpuid(0x1, eax, ebx, ecx, edx); + + cpu_family = ((GET_BITS(eax, 8, 4)) + (GET_BITS(eax, 20, 8))); + cpu_model = ((GET_BITS(eax, 4, 4)) | (((GET_BITS(eax, 16, 4)) << 4) & 0xF0)); + + switch (cpu_family) { + case Fam17h: + /* V1000/R1000 */ + if (cpu_model >= 0x10 && cpu_model <= 0x1F) { + pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF; + pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT; + /* EPYC 3000 */ + } else if (cpu_model >= 0x01 && cpu_model <= 0x0F) { + pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; + pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; + } else { + unknown_cpu = 1; + } break; - case AMD_PCI_SNOWY_ROOT_COMPLEX_ID: - pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; - pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; + case Fam19h: + /* V3000 (Yellow Carp) */ + if (cpu_model >= 0x44 && cpu_model <= 0x47) { + pdata->xpcs_window_def_reg = PCS_V2_YC_WINDOW_DEF; + pdata->xpcs_window_sel_reg = PCS_V2_YC_WINDOW_SELECT; + + /* Yellow Carp devices do not need cdr workaround */ + pdata->vdata->an_cdr_workaround = 0; + } else { + unknown_cpu = 1; + } break; - default: - PMD_DRV_LOG(ERR, "No supported devices found\n"); - return -ENODEV; + default: + unknown_cpu = 1; + break; + } + if (unknown_cpu) { + PMD_DRV_LOG(ERR, "Unknown CPU family, no supported axgbe device found\n"); + return -ENODEV; + } } /* Configure the PCS indirect addressing support */ -- 2.25.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2023-10-22 22:17:37.900686300 +0800 +++ 0096-net-axgbe-identify-CPU-with-cpuid.patch 2023-10-22 22:17:34.366723700 +0800 @@ -1 +1 @@ -From a27ff9cac18cdc5800d8b1c181ddf2a8c92aaac2 Mon Sep 17 00:00:00 2001 +From b796460bce754d25377a4e8b3a52c0d0ad7d47c4 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Xueming Li + +[ upstream commit a27ff9cac18cdc5800d8b1c181ddf2a8c92aaac2 ] @@ -10 +12,0 @@ -Cc: stable@dpdk.org @@ -19 +21 @@ -index 48714eebe6..d08ea4893c 100644 +index b071e4e460..da48a3ac42 100644 @@ -53 +55 @@ -@@ -2111,29 +2122,6 @@ static void axgbe_default_config(struct axgbe_port *pdata) +@@ -2122,29 +2133,6 @@ static void axgbe_default_config(struct axgbe_port *pdata) @@ -80,2 +82,2 @@ - /* Used in dev_start by primary process and then - * in dev_init by secondary process when attaching to an existing ethdev. + /* + * It returns 0 on success. @@ -83 +85 @@ -@@ -2186,6 +2174,9 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) +@@ -2158,6 +2146,9 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) @@ -93 +95 @@ -@@ -2230,26 +2221,55 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) +@@ -2196,26 +2187,55 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)