From nobody Tue Apr 28 09:10:09 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 069B1C433EF for ; Thu, 2 Jun 2022 11:27:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234193AbiFBL1t (ORCPT ); Thu, 2 Jun 2022 07:27:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230241AbiFBL1q (ORCPT ); Thu, 2 Jun 2022 07:27:46 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E4BD1AF12 for ; Thu, 2 Jun 2022 04:27:44 -0700 (PDT) Received: from kwepemi500013.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4LDNxz0M3PzjXBp; Thu, 2 Jun 2022 19:26:31 +0800 (CST) Received: from M910t (10.110.54.157) by kwepemi500013.china.huawei.com (7.221.188.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 2 Jun 2022 19:27:41 +0800 Date: Thu, 2 Jun 2022 19:27:34 +0800 From: Changbin Du To: Paul Walmsley , Palmer Dabbelt , Albert Ou CC: , Nathan Chancellor , Nick Desaulniers , Tom Rix , Hui Wang , , , Subject: riscv: alternatives: move length validation inside the subsection Message-ID: <20220602112734.it2bzlqaismotjof@M910t> MIME-Version: 1.0 Content-Disposition: inline X-Originating-IP: [10.110.54.157] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemi500013.china.huawei.com (7.221.188.120) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Apply the same fix from commit 966a0acce2fc ("arm64/alternatives: move length validation inside the subsection") to riscv. Due to the one-pass design of LLVM's integrated assembler, it can not compute the length of instructions if the .org directive is outside of the subsection that these instructions are in. Here is the build error reported by llvm: In file included from ./arch/riscv/include/asm/pgtable.h:108: ./arch/riscv/include/asm/tlbflush.h:23:2: error: expected assembly-time abs= olute expression ALT_FLUSH_TLB_PAGE(__asm__ __volatile__ ("sfence.vma %0" : : "r" (a= ddr) : "memory")); ^ ./arch/riscv/include/asm/errata_list.h:41: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 ma= cro 'ALTERNATIVE' _ALTERNATIVE_CFG(old_content, new_content, vendor_id, errata_id, CO= NFIG_k) ^ ./arch/riscv/include/asm/alternative-macros.h:113:2: note: expanded from ma= cro '_ALTERNATIVE_CFG' __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, IS_ENABLED(CO= NFIG_k)) ^ ./arch/riscv/include/asm/alternative-macros.h:110:2: note: expanded from ma= cro '__ALTERNATIVE_CFG' ALT_NEW_CONTENT(vendor_id, errata_id, enable, new_c) ^ ./arch/riscv/include/asm/alternative-macros.h:98:3: note: expanded from mac= ro 'ALT_NEW_CONTENT' ".org . - (887b - 886b) + (889b - 888b)\n" \ ^ :25:6: note: instantiated into assembly here .org . - (887b - 886b) + (889b - 888b) ^ Signed-off-by: Changbin Du --- arch/riscv/include/asm/alternative-macros.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/alternative-macros.h b/arch/riscv/inclu= de/asm/alternative-macros.h index e13b1f6bb400..c7d7f1945768 100644 --- a/arch/riscv/include/asm/alternative-macros.h +++ b/arch/riscv/include/asm/alternative-macros.h @@ -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" =20 #define __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, enable) \ --=20 2.26.2