Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3357341iob; Mon, 16 May 2022 20:33:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzTUmlbmTV1NYP1PpxuGkSvd7xcoUs0QUKEjqEN/QOmkv9c6qy4do7ZnSXstzVL5tbaOfQm X-Received: by 2002:a05:6402:354f:b0:418:849a:c66a with SMTP id f15-20020a056402354f00b00418849ac66amr16568424edd.234.1652758396459; Mon, 16 May 2022 20:33:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652758396; cv=none; d=google.com; s=arc-20160816; b=VRqJk91e5nraUZeJWeY/TRPXKisct+oBtXor0sJzuPUCT9vuoxzh51c/gWneC/LEv2 565cqSn/W5LN7rk0vjuaU96wAqsB916lfAbu1l4udpiNuioOorIueblvUJRxVKgNnabJ iJK1jZ1h4c2tCB9u2C2nM9kncnlUTbdrPKg0/nUH/lBIbGFrRbhjw4B50sfl5tbouQtk igFbyR1XjiRGZcaxKwuk35QFI7fSlvquWJOPToft/o4k9Zb9c3h3SDmoHGeO09KD4i2X c9DMAVZGniGqIT0rIf68ZPygKmlfTpiBhHPV1N6CVvZFbgdE+0VULPRlQxoxi+iU4Z+w QjPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=3irn5qU5YlfJRJtJBygwy3D2rh/9LZg5+9qxsWTbdJg=; b=TS87frofxJrkFFQyyRqYi+lwwjBSHZ2M+HOYR87pqJX7LLlAKduYZ+HNlqtfRzflbg pg7woRoWpyOyB9X2yTnuZnqO0rQRO8Ff0H+bcMzdhQTI1hO+lhH2FzDaCL2j91Gdb65+ S1le0IScN+0f+5PLEbSIjgSNkp0cRdcK1ggs097YDARnHHtvJW00CLtOPT4vDhHIeXTM Itnebv8HlW66KAdr79n/HiFaNBTc4XieLYQ+nrzby47FUVtedN8NqTluXhfKpMPiQdfb TYMxh9jj8yGCpeiVDLV/5793MRPi8HhG/nCJExM2VSjqx/zQzLokIgJQsvxvxfP6W9dQ fcVw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e7-20020a17090658c700b006e1442ff695si1429309ejs.590.2022.05.16.20.32.51; Mon, 16 May 2022 20:33:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349489AbiEPV4M (ORCPT + 99 others); Mon, 16 May 2022 17:56:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349471AbiEPV4F (ORCPT ); Mon, 16 May 2022 17:56:05 -0400 Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3D2995 for ; Mon, 16 May 2022 14:56:00 -0700 (PDT) Received: from ip5b412258.dynamic.kabel-deutschland.de ([91.65.34.88] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nqigu-0006Sd-3x; Mon, 16 May 2022 23:55:48 +0200 From: Heiko =?ISO-8859-1?Q?St=FCbner?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou , Nathan Chancellor Cc: Nick Desaulniers , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, patches@lists.linux.dev, Nathan Chancellor , kernel test robot Subject: Re: [PATCH] riscv: Move alternative length validation into subsection Date: Mon, 16 May 2022 23:55:47 +0200 Message-ID: <2827138.e9J7NaK4W3@diego> In-Reply-To: <20220516214520.3252074-1-nathan@kernel.org> References: <20220516214520.3252074-1-nathan@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_NONE, T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Am Montag, 16. Mai 2022, 23:45:21 CEST schrieb Nathan Chancellor: > After commit 49b290e430d3 ("riscv: prevent compressed instructions in > alternatives"), builds with LLVM's integrated assembler fail: the commit in question didn't change anything there, so I guess the issue itself was present before that already and the commit only triggered the different buildbots? > In file included from arch/riscv/mm/init.c:10: > In file included from ./include/linux/mm.h:29: > In file included from ./include/linux/pgtable.h:6: > In file included from ./arch/riscv/include/asm/pgtable.h:108: > ./arch/riscv/include/asm/tlbflush.h:23:2: error: expected assembly-time absolute expression > ALT_FLUSH_TLB_PAGE(__asm__ __volatile__ ("sfence.vma %0" : : "r" (addr) : "memory")); > ^ > ./arch/riscv/include/asm/errata_list.h:33:5: note: expanded from macro 'ALT_FLUSH_TLB_PAGE' > asm(ALTERNATIVE("sfence.vma %0", "sfence.vma", SIFIVE_VENDOR_ID, \ > ^ > ./arch/riscv/include/asm/alternative-macros.h:187:2: note: expanded from macro 'ALTERNATIVE' > _ALTERNATIVE_CFG(old_content, new_content, vendor_id, errata_id, CONFIG_k) > ^ > ./arch/riscv/include/asm/alternative-macros.h:113:2: note: expanded from macro '_ALTERNATIVE_CFG' > __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, IS_ENABLED(CONFIG_k)) > ^ > ./arch/riscv/include/asm/alternative-macros.h:110:2: note: expanded from macro '__ALTERNATIVE_CFG' > ALT_NEW_CONTENT(vendor_id, errata_id, enable, new_c) > ^ > ./arch/riscv/include/asm/alternative-macros.h:99:3: note: expanded from macro 'ALT_NEW_CONTENT' > ".org . - (889b - 888b) + (887b - 886b)\n" \ > ^ > :26:6: note: instantiated into assembly here > .org . - (889b - 888b) + (887b - 886b) > ^ > > This error happens because LLVM's integrated assembler has a one-pass > design, which means it cannot figure out the instruction lengths when > the .org directive is outside of the subsection that contains the > instructions, which was changed by the .option directives added by the > above change. > > Move the .org directives before the .previous directive so that these > directives are always within the same subsection, which resolves the > failures and does not introduce any new issues with GNU as. This was > done for arm64 in commit 966a0acce2fc ("arm64/alternatives: move length > validation inside the subsection") and commit 22315a2296f4 ("arm64: > alternatives: Move length validation in alternative_{insn, endif}"). > > While there is no error from the assembly versions of the macro, they > appear to have the same problem so just make the same change there as > well so that there are no problems in the future. > > Link: https://github.com/ClangBuiltLinux/linux/issues/1640 > Reported-by: kernel test robot > Signed-off-by: Nathan Chancellor In any case, on my svpbmt testcases (qemu + d1-nezha): Tested-by: Heiko Stuebner Reviewed-by: Heiko Stuebner Thanks for looking into that Heiko > --- > arch/riscv/include/asm/alternative-macros.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/riscv/include/asm/alternative-macros.h b/arch/riscv/include/asm/alternative-macros.h > index e13b1f6bb400..ec2f3f1b836f 100644 > --- a/arch/riscv/include/asm/alternative-macros.h > +++ b/arch/riscv/include/asm/alternative-macros.h > @@ -27,9 +27,9 @@ > \new_c > .option pop > 889 : > - .previous > .org . - (889b - 888b) + (887b - 886b) > .org . - (887b - 886b) + (889b - 888b) > + .previous > .endif > .endm > > @@ -94,9 +94,9 @@ > new_c "\n" \ > ".option pop\n" \ > "889 :\n" \ > - ".previous\n" \ > ".org . - (887b - 886b) + (889b - 888b)\n" \ > ".org . - (889b - 888b) + (887b - 886b)\n" \ > + ".previous\n" \ > ".endif\n" > > #define __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, enable) \ > > base-commit: 93c0651617a62a69717299f1464dda798af8bebb >