From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E63CCA04B6; Mon, 12 Oct 2020 11:26:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1569C1D5EA; Mon, 12 Oct 2020 11:26:33 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id EA96F1D5E5 for ; Mon, 12 Oct 2020 11:26:30 +0200 (CEST) IronPort-SDR: h2KXg0j0+aKWierL/X1LBL3qudtyH1aVGhiNhZ9XJcJsib9T64/pKZOz7sQ2MItC1FfVqjpM6x biR+/lzZvZhA== X-IronPort-AV: E=McAfee;i="6000,8403,9771"; a="227358764" X-IronPort-AV: E=Sophos;i="5.77,366,1596524400"; d="scan'208";a="227358764" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2020 02:26:29 -0700 IronPort-SDR: mzwJr/0jDAj86iZvxxOQaRk711mE3rV0YFqRLrCifw9jtTMX57qhZBZpVym6okKc1Am8b4YbtV OY4F5sqODvcQ== X-IronPort-AV: E=Sophos;i="5.77,366,1596524400"; d="scan'208";a="344812495" Received: from aburakov-mobl.ger.corp.intel.com (HELO [10.213.195.67]) ([10.213.195.67]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2020 02:26:26 -0700 To: Jerin Jacob Cc: dpdk-dev , Jan Viktorin , Ruifeng Wang , David Christensen , Ray Kinsella , Neil Horman , Bruce Richardson , Konstantin Ananyev , David Hunt , Liang Ma , Thomas Monjalon , "McDaniel, Timothy" , Gage Eads , chris.macnamara@intel.com References: <1601647919-25312-1-git-send-email-liang.j.ma@intel.com> <532f45c5d79b4c30a919553d322bb66e91534466.1602258833.git.anatoly.burakov@intel.com> From: "Burakov, Anatoly" Message-ID: <2e83021c-511d-1b2f-8528-71d0289b0940@intel.com> Date: Mon, 12 Oct 2020 10:26:24 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v5 03/10] eal: add intrinsics support check infrastructure X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 11-Oct-20 11:07 AM, Jerin Jacob wrote: > On Fri, Oct 9, 2020 at 9:32 PM Anatoly Burakov > wrote: >> >> Currently, it is not possible to check support for intrinsics that >> are platform-specific, cannot be abstracted in a generic way, or do not >> have support on all architectures. The CPUID flags can be used to some >> extent, but they are only defined for their platform, while intrinsics >> will be available to all code as they are in generic headers. >> >> This patch introduces infrastructure to check support for certain >> platform-specific intrinsics, and adds support for checking support for >> IA power management-related intrinsics for UMWAIT/UMONITOR and TPAUSE. >> >> Signed-off-by: Anatoly Burakov >> --- >> .../arm/include/rte_power_intrinsics.h | 8 ++++++ >> lib/librte_eal/arm/rte_cpuflags.c | 6 +++++ >> lib/librte_eal/include/generic/rte_cpuflags.h | 26 +++++++++++++++++++ >> .../include/generic/rte_power_intrinsics.h | 8 ++++++ >> .../ppc/include/rte_power_intrinsics.h | 8 ++++++ >> lib/librte_eal/ppc/rte_cpuflags.c | 6 +++++ >> lib/librte_eal/rte_eal_version.map | 1 + >> .../x86/include/rte_power_intrinsics.h | 8 ++++++ >> lib/librte_eal/x86/rte_cpuflags.c | 12 +++++++++ >> 9 files changed, 83 insertions(+) >> >> diff --git a/lib/librte_eal/arm/include/rte_power_intrinsics.h b/lib/librte_eal/arm/include/rte_power_intrinsics.h >> index 4aad44a0b9..055ec5877a 100644 >> --- a/lib/librte_eal/arm/include/rte_power_intrinsics.h >> +++ b/lib/librte_eal/arm/include/rte_power_intrinsics.h >> @@ -17,6 +17,10 @@ extern "C" { >> /** >> * This function is not supported on ARM. >> * >> + * @warning It is responsibility of the user to check if this function is >> + * supported at runtime using `rte_cpu_get_features()` API call. Failing to do >> + * so may result in an illegal CPU instruction error. > > See below > >> + * >> * @param p >> * Address to monitor for changes. Must be aligned on an 64-byte boundary. >> * @param expected_value >> @@ -43,6 +47,10 @@ static inline void rte_power_monitor(const volatile void *p, >> /** >> * This function is not supported on ARM. >> * >> + * @warning It is responsibility of the user to check if this function is >> + * supported at runtime using `rte_cpu_get_features()` API call. Failing to do >> + * so may result in an illegal CPU instruction error. >> + * > See below > > This patch looks to me. > > Since rte_power_monitor() API is public API, I think, only in the > generic header file, you need to have > these warnings and API documentation rather than repeating everywhere. > Great, will fix in v6 so. Thanks! -- Thanks, Anatoly