From nobody Sun May 12 17:03:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1676593223; cv=none; d=zohomail.com; s=zohoarc; b=Qi/tyhfmyTAMlmoYJZcrWlTfmN0nyKUINWx4gB3hhfwCQHKYAMwBVImvO9PFo5V477Ku7OWOCMwdBKRmFAFlZhcMRLW2lsfdv9Vt2nlFMM7QsRQ6bOkTfkPLkhHgv4Qtwk7alRI9bs5/XclEkN0ennIdFS41dg3iugn4N2kLrpg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1676593223; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=VcCBOXVe3bpEqJDyXSebXymcg9Wh5S9/zGSIrc+8q1M=; b=VYS2PkAmnMgzrxoJZcmKYThs26sNRGINWU5CX7Lfmwmqd7W2MLQ8Q1KIdj99Urv3iCJyGxGZV2fg5Mta/3mTlM/cga3TF3bM+W2ibBeRYeA8AUM2z2FZUXq0uCf9LPSitvgfiEKQouN8q3a9wn+7C5quZPOnOV5/La8ziQkL4YA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1676593223936250.42908448825108; Thu, 16 Feb 2023 16:20:23 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.496828.767738 (Exim 4.92) (envelope-from ) id 1pSoTR-0008DD-4I; Fri, 17 Feb 2023 00:19:37 +0000 Received: by outflank-mailman (output) from mailman id 496828.767738; Fri, 17 Feb 2023 00:19:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pSoTR-0008D6-1l; Fri, 17 Feb 2023 00:19:37 +0000 Received: by outflank-mailman (input) for mailman id 496828; Fri, 17 Feb 2023 00:19:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pSoTP-0008Af-Dx for xen-devel@lists.xenproject.org; Fri, 17 Feb 2023 00:19:35 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id bf611a63-ae58-11ed-933c-83870f6b2ba8; Fri, 17 Feb 2023 01:19:33 +0100 (CET) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: bf611a63-ae58-11ed-933c-83870f6b2ba8 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1676593173; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=c1MpPmImsROOv47GTA2v+z6JFWIRXg8PJdk+O+CI6mo=; b=hO/gH5Fp+hkeOLWmj93slUE4GwHlVEzsH0SE0CcPTcrwB72kx7PScMeC cqwUTtwKbDT4NPS6fHVnyS6XwysZFYXHCIZrW4Pv46SZtCc2+si7JSd1h C3fTD+ReWr8yF3y0o30xSvNFa3Fk/DM8GGzBGD169VHa48cwWTy9OJ2EL c=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none X-SBRS: 4.0 X-MesageID: 97307914 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.123 X-Policy: $RELAYED IronPort-Data: A9a23:Xc43UKqzZS3SLF/eYWbwpdE6a25eBmIOZRIvgKrLsJaIsI4StFCzt garIBmDOv3fZTP8LtkjO9+19x8B6JSEzNJiGldlqXxhRiwX9ZuZCYyVIHmrMnLJJKUvbq7FA +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbKCYWYpA1c/Ek/NsDo788YhmIlknNOlNA2Ev NL2sqX3NUSsnjV5KQr40YrawP9UlKm06WxwUmAWP6gR5weEzidNV/rzGInqR5fGatgMdgKFb 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay RAXAA9TQRWku7Pu+oCYQ/VmgOlgJ+r7AbpK7xmMzRmBZRonaZXKQqGM7t5ExjYgwMtJGJ4yZ eJAN2ApNk6ZJUQSZBFOUslWcOSA3xETdxVxrl6PqLVxyG/U1AFri5DmMcbPe8zMTsJQ9qqdj jOZpDymU0hGXDCZ4TC9yyLvh87Tpw7YRNoTJuOJp6VRumTGkwT/DzVJDADm8JFVkHWWRNZ3O 0ESvC00osAa5EGtC9XwQRC8iHqFpQIHHcpdFfUg7wOAwbaS5ByWbkAmZDNcbN0ttOctWCcnk FSOmrvU6SdH6ePPDyjHr/HN8G30YHJORYMfWcMaZTRbzNzEnNBrtCDsR8ppFoP2hf7lJAill lhmsxMCr7kUiMcK0YCy8lbGny+gq/D1c+Il2unEdjn7t10kPeZJc6TtsAGGtqgYcO51W3Hb5 BA5d96iAPfi5H1nvAiEW60zEb6g/J5p2xWM0Ac0T/HNG9lAkkNPnLy8AhkkeC+F0e5eI1cFh XM/XisIvfdu0IOCN/MfXm5II51CIVLcPdrkTOvISdFFf4J8cgSKlAk3OxHOgj+3zBB8yvpvU Xt+TSpLJSxHYZmLMRLsH7tNuVPV7n5WKZzvqWDTkE38jOv2iI+9QrYZKlqeBt3VH4vdyDg5B +13bpPQoz0GCb2WX8Ui2dJLRbz8BSRhVM+eRg0+XrLrHzeK70l6W6SBnOl4K9ENcmY8vr6gw 0xRk3RwkDLX7UAr4y3TMBiPtJuHsU5DkE8G IronPort-HdrOrdr: A9a23:pHxEva413kcCFQcwvwPXwMbXdLJyesId70hD6qhwISY1TiX+rb HJoB17726StN9/YgBCpTntAsa9qBDnhPpICOsqTNWftWDd0QPCRuwP0WKL+UyYJ8SUzI5gPM lbHZSWcOeAaGRHsQ== X-IronPort-AV: E=Sophos;i="5.97,304,1669093200"; d="scan'208";a="97307914" From: Andrew Cooper To: Xen-devel CC: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH RFC] xen: Work around Clang-IAS macro expansion bug. Date: Fri, 17 Feb 2023 00:19:14 +0000 Message-ID: <20230217001914.762929-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1676593226287100001 https://github.com/llvm/llvm-project/issues/60792 RFC. I very much dislike this patch, but it does work for me. Why the parameter name of foo? Turns out I found a different Clang-IAS bug/misfeature when trying to name the parameter uniq. In file included from arch/x86/asm-macros.c:3: ./arch/x86/include/asm/spec_ctrl_asm.h:139:5: error: \u used with no foll= owing hex digits; treating as '\' followed by identifier [-Werror,-Wunicode] .L\@\uniq\()fill_rsb_loop: ^ It appears you can't have any macro parameters beginning with a u. Signed-off-by: Andrew Cooper --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: Wei Liu --- xen/arch/x86/include/asm/spec_ctrl.h | 4 ++-- xen/arch/x86/include/asm/spec_ctrl_asm.h | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/as= m/spec_ctrl.h index 3cf8a7d304d4..cd727be7c689 100644 --- a/xen/arch/x86/include/asm/spec_ctrl.h +++ b/xen/arch/x86/include/asm/spec_ctrl.h @@ -83,7 +83,7 @@ static always_inline void spec_ctrl_new_guest_context(voi= d) wrmsrl(MSR_PRED_CMD, PRED_CMD_IBPB); =20 /* (ab)use alternative_input() to specify clobbers. */ - alternative_input("", "DO_OVERWRITE_RSB", X86_BUG_IBPB_NO_RET, + alternative_input("", "DO_OVERWRITE_RSB foo=3D%=3D", X86_BUG_IBPB_NO_R= ET, : "rax", "rcx"); } =20 @@ -172,7 +172,7 @@ static always_inline void spec_ctrl_enter_idle(struct c= pu_info *info) * * (ab)use alternative_input() to specify clobbers. */ - alternative_input("", "DO_OVERWRITE_RSB", X86_FEATURE_SC_RSB_IDLE, + alternative_input("", "DO_OVERWRITE_RSB foo=3D%=3D", X86_FEATURE_SC_RS= B_IDLE, : "rax", "rcx"); } =20 diff --git a/xen/arch/x86/include/asm/spec_ctrl_asm.h b/xen/arch/x86/includ= e/asm/spec_ctrl_asm.h index fab27ff5532b..06455c5663bb 100644 --- a/xen/arch/x86/include/asm/spec_ctrl_asm.h +++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h @@ -117,7 +117,7 @@ .L\@_done: .endm =20 -.macro DO_OVERWRITE_RSB tmp=3Drax +.macro DO_OVERWRITE_RSB tmp=3Drax foo=3D /* * Requires nothing * Clobbers \tmp (%rax by default), %rcx @@ -136,27 +136,27 @@ mov $16, %ecx /* 16 iterations, two calls per loop */ mov %rsp, %\tmp /* Store the current %rsp */ =20 -.L\@_fill_rsb_loop: +.L\@\foo\()fill_rsb_loop: =20 .irp n, 1, 2 /* Unrolled twice. */ - call .L\@_insert_rsb_entry_\n /* Create an RSB entry. */ + call .L\@\foo\()insert_rsb_entry_\n /* Create an RSB entry. */ int3 /* Halt rogue speculation. */ =20 -.L\@_insert_rsb_entry_\n: +.L\@\foo\()insert_rsb_entry_\n: .endr =20 sub $1, %ecx - jnz .L\@_fill_rsb_loop + jnz .L\@\foo\()fill_rsb_loop mov %\tmp, %rsp /* Restore old %rsp */ =20 #ifdef CONFIG_XEN_SHSTK mov $1, %ecx rdsspd %ecx cmp $1, %ecx - je .L\@_shstk_done + je .L\@\foo\()shstk_done mov $64, %ecx /* 64 * 4 bytes, given incsspd */ incsspd %ecx /* Restore old SSP */ -.L\@_shstk_done: +.L\@\foo\()shstk_done: #endif .endm =20 --=20 2.30.2