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 499F042616; Fri, 22 Sep 2023 11:47:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1F927402CB; Fri, 22 Sep 2023 11:47:20 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 02E5640150 for ; Fri, 22 Sep 2023 11:47:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695376038; x=1726912038; h=date:from:to:cc:subject:message-id:references: in-reply-to:mime-version; bh=u2BIK0SQey0ax1V5KfEsL/3pnBY1L3CHaK5yLuYcuYc=; b=UQdoz3OpMExRL88/H8kZ8tvbSi5uQ6BeemC3zTt3oHiPxtz7VZAjgxUM eRTOEaXPZnTbUAXVSDkXSLAZIXar9wpC9kdcoYHmTPLjnLb9FcCrrezOU FLYSkkU0d4uIDOVVPI+Ni9aRYAEASCsaAvd+/WMBqGmjN4ggUZHqETrGL gTc4PM6tikiLG3SORIDB4VGUum37rAiPRTnG5scX1T1/EYjBdQdMDbEYq 39DrZ8BOnKaFAUyUngjuQLWbx0QB8FlRWvRGA2yB6LHUmTHcGlVUWyx79 9OIjPJeWD7Y8EfF3JUPX/Rsx6v3DNbevQeG0TPJHenVBxa+y3L4Gi9b3v g==; X-IronPort-AV: E=McAfee;i="6600,9927,10840"; a="411726119" X-IronPort-AV: E=Sophos;i="6.03,167,1694761200"; d="scan'208";a="411726119" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2023 02:47:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10840"; a="776789384" X-IronPort-AV: E=Sophos;i="6.03,167,1694761200"; d="scan'208";a="776789384" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 Sep 2023 02:47:15 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 22 Sep 2023 02:47:15 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Fri, 22 Sep 2023 02:47:15 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.104) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Fri, 22 Sep 2023 02:47:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JFkjYkNj2gno3bGUpNLh4kcobmQyTPRd7VGB6OTY948gvu7g5Wrw/NA3PHzsnek+HEjGzEGAOuw+QbUc6NCQpLTIQPth0WaEepjpdxHRxmCTCvCRUZG5Mak9gumA0X0Od2w1xKoCw2a7LU4xRhzVaOESMDFiCOedcrQhGM7xJpHV00Y2z/eGPiSLXiJvmsb2tlV9Z027TAgDydekgOT9MVhPibgb1jb/4tZeSkp2OoGtrjB2tTV+K9Tok2WDw4OiKKqUqag8FUGDbzzMrM4mgnw9qzQ2tf+1vL3+84m3GxevC1rLtbV2qJT8OYKVhVCIUesK45qt3MO9SUBvN7eEFA== 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=FFDd/drtjXyKNMYPgZ4hBwGpfH9SjNTQxquk2f9XdPM=; b=a5AizWUHUXPoJrT/2OCTS/6ccVtwhovcueDJeeD4c2Bt2rH7YrONBa8CppM2qERJ/5k6iT8g1KufH1X/2ahnJwsLETjjWZ9c4DC/S6K0hI5siF16MfBhZXNHN0LB2lIzGfcV1WI1nHcTSaghPG2BsNnCPK7Znu4ZrTmibLWXso94qEJTVLxWJ4VvoZNADeDt8ZefHIhIfthR9T76OYTcpnE5sCHHJAIatbTDN4GQV12smjrDOOFhpRL6TbPbWwULpxWpQzfnxuwPXx0q3smhWRj/liVIcuN8EnfSyQsaZjoHYA47psCjz0ubf7Bf7jA+d2bZ17YvA48weYgo+oMVtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) by SA0PR11MB4768.namprd11.prod.outlook.com (2603:10b6:806:71::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.20; Fri, 22 Sep 2023 09:47:07 +0000 Received: from DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::43d1:af60:464:347]) by DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::43d1:af60:464:347%5]) with mapi id 15.20.6768.029; Fri, 22 Sep 2023 09:47:06 +0000 Date: Fri, 22 Sep 2023 10:46:58 +0100 From: Bruce Richardson To: David Marchand CC: , , , , , , , , Subject: Re: [PATCH 1/2] eal: introduce x86 processor identification Message-ID: References: <20230922093722.2057688-1-david.marchand@redhat.com> <20230922093722.2057688-2-david.marchand@redhat.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20230922093722.2057688-2-david.marchand@redhat.com> X-ClientProxiedBy: DB9PR01CA0017.eurprd01.prod.exchangelabs.com (2603:10a6:10:1d8::22) To DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7309:EE_|SA0PR11MB4768:EE_ X-MS-Office365-Filtering-Correlation-Id: f4ff4c36-0435-4cef-2b0b-08dbbb50e1a3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: i3MMWgKxYYC3Us2PHdHt8b7hM4G8MtB87HkB1ryiTp9bLID9nCnP3AWwdnitaaeYHSJesnxh8Sm0Q3hT+ItPaNljAlQcy2bkNxZQEqrzIRw6QrcI5sJ27JBbhYq9FahnqLtkEIh7nFrQ9OgdCbZLhqKsLe5orCrfZfNjYvo1bLeN0bu07/oJBdb78uZVy2JwgEElrnfeLWsFrx+Yh+q6RHhVrqM9HsXEepZ44lAynx9baC/WX1+sX5mTpdmyf6QehfEzQJ85tF0+/8m/W3BT22dvXmNvqO7SKI3PnneHCqSDauMjwOoXtBRYHoci8VOZa8LSFtrGxvH5ZpyghYPjw9w0lAWvURcW11UXAVtRXNmUQnXPHbOgtOZecnXmlEF7GSorbaRAtOHetcZ69Y8FlYa7r14YjF/lV6AfYhj/w07/kPN2W1qbSJe4OcbkeKcncAck+MnYfU44A1AGlDvoELNP7UsL531j7vFh+I7hKhJS0NDKTIqPJFWX0n/A7VOIIEP5bo+KX1A47eq6InKfhcV5bqV0zCzWp44EO8DFBsNkowllNbEhWvvad5RPv9mT X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7309.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(376002)(396003)(39860400002)(346002)(186009)(451199024)(1800799009)(66476007)(5660300002)(2906002)(4326008)(7416002)(38100700002)(41300700001)(8936002)(8676002)(44832011)(316002)(82960400001)(66946007)(66556008)(6916009)(86362001)(26005)(83380400001)(6512007)(6506007)(6486002)(478600001)(6666004); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?insmF8zHifJxiHxb/zDqYRRinaQDluAnXqcRIPRB+YAC9bWnKR16kly6POCe?= =?us-ascii?Q?W4Ob+hBKDJAo3U5/b1GCg8Q7fccEtKoOdpAahRUlXq1gcHCs/QCGIkRbkqZ/?= =?us-ascii?Q?kQduOIR3c0YCz9uB4rYm53FZ/u33OWo8AptfLaJHXAG7oycVuOg0u0D2U2hT?= =?us-ascii?Q?hKZL1zgRg7HjsxSXfAHfgKjWTxRHW4O0gyQTPJW+tIkwI4NHqRfxn7cZCkrX?= =?us-ascii?Q?UUzntFnmFitJb3pz+wUkFKh6CgXTmoUbk7TL0WBVoyjC/RVmgTOGD1MRaH+a?= =?us-ascii?Q?S39OwPyxTLRJIskFB1DqptxB2/WhLczuVtUWxijzTXaJgP2H/Am2GwSYbZVt?= =?us-ascii?Q?x90XpKRxi3ntUtDR/39ArtYVHQI41rC02UTYpV4dvTveNgLHK2RBBY6tyPcX?= =?us-ascii?Q?kg+8J8WTRnHRZsOKfNXv3ss+hTnd/0s7jF9D4JIlrS1GrUHODszcDf/GNddj?= =?us-ascii?Q?8nFlbAYFr4Y24YUb/HasG+Q80g45/OwJgm1i/LDnMYBzTtkR1rz4nE4HhfzQ?= =?us-ascii?Q?ydcRozGS43aTokaExe2WHeUqnX9tr6HvVoDp0u4cef3oNRQ7mzDJZ5dwJ6H6?= =?us-ascii?Q?l/OiebhvJ1238c1fTh2HdUMLQuCC8Xcq5K0Aj3WRuOCfC21g+1uoznHfqvYj?= =?us-ascii?Q?Oo4CKcn7JLxGUA/cKECr8X0xdShmSABz7Ww01WPvj55IOaFXHXN7j/329VRe?= =?us-ascii?Q?RVO5EZ1LBFLhk+DD6kI0TUQd5rSD/sndM+CD3rKQM2FMDxkuDKa86CoVdIww?= =?us-ascii?Q?pUKy/EI2x4sFfOHq7/mYyVXP7L8j1eTwEhNLGMUlRbDgY3LwNeAN4W/KL5ZF?= =?us-ascii?Q?hFZWNkQInIKxjdgt+9NKOCmRhQ+Gn5Kn+lARttRpsAY0Eex3X/uJm9YBn7q1?= =?us-ascii?Q?EMV3ItPBA9bdBORjIwV/2XOMDpw2x/VLd0/q0se6dynl5FhJHAUfpU2gVToi?= =?us-ascii?Q?NOc9GDQD4tJuJo7WEv8+zqr4e/6wpsMHa2q2SfuIcDs2w2lUUVYUSWoEy+cy?= =?us-ascii?Q?MspPkZgNh9lROeNUxmilZ7am//7cE9/HnsPRqaU0KZe74iLtTaMTzfmmXMrW?= =?us-ascii?Q?10t1tx70xOMOiXu1RYPVI6ChL19QvwNxnqKKp67xjflqGbW4a5Le8iMkaCEG?= =?us-ascii?Q?WoJsYT4wBFWi5FfKFCipPOHOffnOPBFT3mKpW/4udNSGk/JRo9A8okyCdCDz?= =?us-ascii?Q?vqDZCBOpSIjiRHJ5E96+sYGqvBE8jMkZufWgNptMf4f+oTeQH1lt1VSr5rNR?= =?us-ascii?Q?PtvGstqNrK5mx7nxbJNlBY6H1JsJVix1Ab7XxN6tcgjprs9M4NF5mc2URrIb?= =?us-ascii?Q?ss3VDEW3Zfq5YpuvBvxCFOocO2Rkb+yNce1+qLnYAMQgkHzTycZXfZwB/TxI?= =?us-ascii?Q?EXvbXvFB9IIcuEy8qr/UAJ32hZAYUSoYAndalMChCLC7fSwRgyTabMpBGpQX?= =?us-ascii?Q?MtDPSwZePfAiknB6utHIoXOpZaFqPzqUC6c/dVTS7GtSVN5BkQGKlboea3tT?= =?us-ascii?Q?MLZfZmKTjx7+3BvD8eHzTazx4RP12XxTtQRAY5uKnQFKbfDZwLDbPQisrS1O?= =?us-ascii?Q?JRtI+d0fAKaEiU0WrwluXAVm9rl/9j/RZznEVyqq+Qg0hgpIww66wEPGYudj?= =?us-ascii?Q?8w=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: f4ff4c36-0435-4cef-2b0b-08dbbb50e1a3 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7309.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2023 09:47:06.2390 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RLH3yJnKiObId8rz1UJvmoDHT3b0l7CahELAWBllthyKG5ntckuNMWHdrRUYxuBiIfyEzEaKgF2q8RmUAJmnxUE+qTMza4XbB3uIZXoUEJk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4768 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Fri, Sep 22, 2023 at 11:37:20AM +0200, David Marchand wrote: > In some really specific cases, it may be needed to get a detailed > information on the processor running a DPDK application for drivers to > achieve better performance, or for matters that concern only them. > > Those information are highly arch-specific and require a specific API. > > Introduce a set of functions to get brand, family and model of a x86 > processor. > Those functions do not make sense on other arches and a > driver must first check rte_cpu_is_x86() before anything else. > > Signed-off-by: David Marchand > --- > MAINTAINERS | 1 + > app/test/meson.build | 1 + > app/test/test_cpu.c | 37 +++++++++ > lib/eal/common/eal_common_cpu.c | 141 ++++++++++++++++++++++++++++++++ > lib/eal/common/eal_cpu.h | 77 +++++++++++++++++ > lib/eal/common/meson.build | 1 + > lib/eal/version.map | 6 ++ > 7 files changed, 264 insertions(+) > create mode 100644 app/test/test_cpu.c > create mode 100644 lib/eal/common/eal_common_cpu.c > create mode 100644 lib/eal/common/eal_cpu.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 698608cdb2..b87d47a1e4 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -158,6 +158,7 @@ F: app/test/test_barrier.c > F: app/test/test_bitcount.c > F: app/test/test_byteorder.c > F: app/test/test_common.c > +F: app/test/test_cpu.c > F: app/test/test_cpuflags.c > F: app/test/test_cycles.c > F: app/test/test_debug.c > diff --git a/app/test/meson.build b/app/test/meson.build > index 05bae9216d..4b37ad02fa 100644 > --- a/app/test/meson.build > +++ b/app/test/meson.build > @@ -44,6 +44,7 @@ source_file_deps = { > 'test_cmdline_string.c': [], > 'test_common.c': [], > 'test_compressdev.c': ['compressdev'], > + 'test_cpu.c': [], > 'test_cpuflags.c': [], > 'test_crc.c': ['net'], > 'test_cryptodev.c': test_cryptodev_deps, > diff --git a/app/test/test_cpu.c b/app/test/test_cpu.c > new file mode 100644 > index 0000000000..40d8bd94eb > --- /dev/null > +++ b/app/test/test_cpu.c > @@ -0,0 +1,37 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2023 Red Hat, Inc. > + */ > + > +#include > +#include > + > +#include "eal_cpu.h" > + > +#include "test.h" > + > +static int > +test_cpu(void) > +{ > +#ifndef RTE_ARCH_X86 > + RTE_TEST_ASSERT(!rte_cpu_is_x86(), "rte_cpu_is_x86() returned true on " RTE_STR(RTE_ARCH)); > +#else > + const char *vendor; > + > + RTE_TEST_ASSERT(rte_cpu_is_x86(), "rte_cpu_is_x86() returned false"); > + > + if (rte_cpu_x86_is_amd()) > + vendor = "AMD"; > + else if (rte_cpu_x86_is_intel()) > + vendor = "Intel"; > + else > + vendor = "unknown"; > + > + printf("The processor running this program is a x86 %s processor, brand=0x%" > + PRIx8", family=0x%"PRIx8", model=0x%"PRIx8"\n", vendor, rte_cpu_x86_brand(), > + rte_cpu_x86_family(), rte_cpu_x86_model()); > +#endif > + > + return TEST_SUCCESS; > +} > + > +REGISTER_FAST_TEST(cpu_autotest, true, true, test_cpu); > diff --git a/lib/eal/common/eal_common_cpu.c b/lib/eal/common/eal_common_cpu.c > new file mode 100644 > index 0000000000..18cdb27f75 > --- /dev/null > +++ b/lib/eal/common/eal_common_cpu.c > @@ -0,0 +1,141 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2023 Red Hat, Inc. > + */ > + > +#include > + > +#include "eal_cpu.h" > + > +#ifdef RTE_ARCH_X86 > +#ifndef RTE_TOOLCHAIN_MSVC > +#include > +#endif > + > +static void > +x86_cpuid(uint32_t leaf, uint32_t subleaf, uint32_t *eax, uint32_t *ebx, > + uint32_t *ecx, uint32_t *edx) > +{ > + uint32_t regs[4] = { 0 }; > + > +#ifdef RTE_TOOLCHAIN_MSVC > + __cpuidex(regs, leaf, subleaf); > +#else > + __cpuid_count(leaf, subleaf, regs[0], regs[1], regs[2], regs[3]); > +#endif > + > + *eax = regs[0]; > + *ebx = regs[1]; > + *ecx = regs[2]; > + *edx = regs[3]; > +} > +#endif /* RTE_ARCH_X86 */ >From a readability perspective, I think it would be better to expand the scope of this ifdef and have two copies of each function in the file, rather than a single copy of each with #ifdefs. WDYT? /Bruce