From patchwork Mon Aug 28 10:39:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 130785 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C2F4441B29; Mon, 28 Aug 2023 12:39:59 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5A44C4026D; Mon, 28 Aug 2023 12:39:59 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 2B7924021E for ; Mon, 28 Aug 2023 12:39:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693219197; x=1724755197; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qgNebBsOosyVDu+FPj4ppxhtB0ZcTILvc/ltQnDvxRs=; b=KQzJmccyfO2Y+b4Mfm4ZquC2FGkc+NxFAyCpzGv9JZUB0bg16eQNgi30 ybhIE5PpOwmi6x3cL8ql5x+y8Qd84mWGYJzrNvQHtJvlaV2O8YbKssGMO z/F4OjmSXvSbYnkyMyTK8jz6ZeNPMzo2AicQkZXUEJc8Ao+JKXF5zR7Uy DQiYyZezmsEsXqpdJq6tt2FqGX/ZNVk10peevgk8yjT3Omc/mA5pq8lG6 u98BKfiqtV5SH4Waojwdk/jIm1vIZVGQipbtCkrzNZRKVQPuEr7PgjdRj e5gO9gUmoaqBRWpWJE9B+nfihs56hTOpmKnJ0rQ6FkUdj7jnpLgPoKoXf A==; X-IronPort-AV: E=McAfee;i="6600,9927,10815"; a="354592770" X-IronPort-AV: E=Sophos;i="6.02,207,1688454000"; d="scan'208";a="354592770" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Aug 2023 03:39:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10815"; a="852797370" X-IronPort-AV: E=Sophos;i="6.02,207,1688454000"; d="scan'208";a="852797370" Received: from silpixa00401385.ir.intel.com ([10.237.214.152]) by fmsmga002.fm.intel.com with ESMTP; 28 Aug 2023 03:39:54 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , roretzla@linux.microsoft.com, =?utf-8?q?Morten_Br=C3=B8rup?= , David Marchand Subject: [PATCH v2] eal/x86: fix build on systems with WAITPKG support Date: Mon, 28 Aug 2023 11:39:33 +0100 Message-Id: <20230828103933.1047285-1-bruce.richardson@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230825152850.1107690-1-bruce.richardson@intel.com> References: <20230825152850.1107690-1-bruce.richardson@intel.com> MIME-Version: 1.0 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 When doing a build for a system with WAITPKG support and a modern compiler, we get build errors for the "_umonitor" intrinsic, due to the casting away of the "volatile" on the parameter. ../lib/eal/x86/rte_power_intrinsics.c: In function 'rte_power_monitor': ../lib/eal/x86/rte_power_intrinsics.c:113:22: error: passing argument 1 of '_umonitor' discards 'volatile' qualifier from pointer target type [-Werror=discarded-qualifiers] 113 | _umonitor(pmc->addr); | ~~~^~~~~~ We can avoid this issue by casting through "uintptr_t" and thereby remove the volatile without warning. We also ensure comments are correct for each leg of the ifdef..else..endif block. Fixes: 60943c04f3bc ("eal/x86: use intrinsics for power management") Cc: roretzla@linux.microsoft.com Signed-off-by: Bruce Richardson Acked-by: Morten Brørup Tested-by: David Marchand --- lib/eal/x86/rte_power_intrinsics.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/eal/x86/rte_power_intrinsics.c b/lib/eal/x86/rte_power_intrinsics.c index 4066d1392e..97202e42fc 100644 --- a/lib/eal/x86/rte_power_intrinsics.c +++ b/lib/eal/x86/rte_power_intrinsics.c @@ -103,15 +103,15 @@ rte_power_monitor(const struct rte_power_monitor_cond *pmc, rte_spinlock_lock(&s->lock); s->monitor_addr = pmc->addr; - /* - * we're using raw byte codes for now as only the newest compiler - * versions support this instruction natively. - */ - /* set address for UMONITOR */ #if defined(RTE_TOOLCHAIN_MSVC) || defined(__WAITPKG__) - _umonitor(pmc->addr); + /* cast away "volatile" when using the intrinsic */ + _umonitor((void *)(uintptr_t)pmc->addr); #else + /* + * we're using raw byte codes for compiler versions which + * don't support this instruction natively. + */ asm volatile(".byte 0xf3, 0x0f, 0xae, 0xf7;" : : "D"(pmc->addr));