From patchwork Wed Apr 9 06:57:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: FUJITA Tomonori X-Patchwork-Id: 14044168 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1695FC36002 for ; Wed, 9 Apr 2025 07:02:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=RIfDOjq9qhHckyXryae5MbYL+xPZ6FAVHhgspJGsYWI=; b=qAWZZVQuu+dH3MVrpHFqoGXrJO G2ZU5onGIbJDwsv6xtiJmZ7s2YNMsKH1ZKwEHranzB2DihLZFCiV2G9rMxQv+z6IrNVR+h3O85pyC XzZ1Ng3xkLkSckaSvYNOThCzqA7a05fS1i/PfixvFtIDGQjOcklXi+8voAtg/7SrvABM6m2MvLuCQ cbNWWZ/lqP8FVmCvl20COx10c5n2Sp6iqFvZNQr9N3ra0sNMqMbtb5t+j9Q6foqy73YL7u8pIEj8B eihJgS08he0hj0banGuexc7ObZnKeQSyhseY+A0eYIFn1MRT8ks0Cc4AA2dDdnW7Lhrfdt16RuJ65 xr+FiaFw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PS7-00000006MEw-40Lt; Wed, 09 Apr 2025 07:02:27 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PPB-00000006LXw-2pjM; Wed, 09 Apr 2025 06:59:26 +0000 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-224191d92e4so60807015ad.3; Tue, 08 Apr 2025 23:59:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744181965; x=1744786765; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RIfDOjq9qhHckyXryae5MbYL+xPZ6FAVHhgspJGsYWI=; b=QjNe4hdktiqCff7bE/wu8omMkSghs1WavlwKmo1aRd4HQcqOPuTdjDHmlH8cN+QI3D fMoCkGZlCnqe8WuSsYSE2haCbkGmx+XNfwj5qKP4WxQVzNaVBj/n187nHOCt+6QFaBh8 mte0scevcgbEBbqSVSwVGORA7o9d/r7fLW3l/x2Etoiy3f1wU59z1oTZZnLevXo/zeBo 8SlQIK/ZEf/GJ59RujxZG/MmwrBGuTIAMTHdN/e2p+hhx7ZLASZHGdYqNU95C40j+FSk /d+cJiWkbd9GKlPmINW6IqjRVxqwq/T6MNdK6/s4HRBEH0A9pltdBJ5QpBof2gVG2pTs xNFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744181965; x=1744786765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RIfDOjq9qhHckyXryae5MbYL+xPZ6FAVHhgspJGsYWI=; b=mts7DhPjDfiwYpkyvfWQaXAw24T2AOF5EGtto4AerV69OLiXthLRce1PQYNtB/6apR 1jlg+MkaoR1tD4zYxbxyyKhNRx7d3+QFIhi/RWDo2ku3U++fY6lGaRhvuv6I1Y3+ZYSi ZkWqkE3FBlzjY+DicbLMi7EdOtRbs5Zi447o1AX1vVzMUSOKZphsgU4dFERJKxnagUU9 lMk3UJrXZq7FWsQxOpDkaDPWX4rlVJMrXJfDI2pJb3RvgIMaSVX+vkwHFmHur/5oSBNT W9TLX1igioUEbF+nh1KQfkEaZo6scvKWp5H80uB8CwSnraHoSyuIcNE+fhY+lRQYkbpH re2Q== X-Forwarded-Encrypted: i=1; AJvYcCVgjJIqVd8CMlzCDVap0QsH4Or5ld5NDpiTpTbsmopQPXIoZ130jyDepa8m4QIjuENj0p8TQLLjsAqVKTk=@lists.infradead.org, AJvYcCWa4Kwu+kf4gfpbs5S1TA+kBG/HYA9fzqnKDZoj6wLzWVMnXTavz/GPM0Uecc3FXL7byQ5mmjOG1vaKWj6VXVp5@lists.infradead.org X-Gm-Message-State: AOJu0Yz7NVha6cA3OJjl65k7XlBwSnF/hPuiIHX8BIdt9ybw1aWnxaXT Ltk8W2/4qqh5EkYG4bR4IiI6krEx6gDu9z1WgDZbVODd0J+3O+iX X-Gm-Gg: ASbGncubXK2Ys3i+zRgGRIaqOZuisLyo5dw1Kd9XQ+uVh53YnsEclaLdFl39WhYhgg6 6xK7HCfCnOMNw48bt3tobnfukBq0I5Qt6RNiwWCluhTAiKiE3uVEi74czlm369QQEqvFOV4qRlv VthDuJoxNbs/JFnsEfiDoNWp6vh4ROg8YKXu5OCwwDNIxclf0k5QexICpz26qhzenjJUvNabnHr qHb2kYA1YDrdYavnrBULWf0ealgg5+S30ITX15Bj+Zjfv++aYJnMPuK9A8GT+930PIxm8LtEMPM jtv8gcIk7Zg8yQMl/vDzexpJa7PJdGwyOHN2085hVyHzC4r8sjy4Z7mv+xC6Au0WpcjXaM/YT7Y g8QVcE20+Z1vDk6zuDQNrgsp4xP9w X-Google-Smtp-Source: AGHT+IH3bX9bz4NSeffRNUm1cA4jaTwLt7BuSbxQGS6DHGZ0kp+vhH5H4LqkKJt7qc/lkXgGcXJQYg== X-Received: by 2002:a17:903:1c4:b0:224:93e:b5d7 with SMTP id d9443c01a7336-22ac3fefc81mr20504865ad.34.1744181965015; Tue, 08 Apr 2025 23:59:25 -0700 (PDT) Received: from mew.. (p4204131-ipxg22701hodogaya.kanagawa.ocn.ne.jp. [153.160.176.131]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22ac7ccb596sm4407815ad.220.2025.04.08.23.59.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 23:59:24 -0700 (PDT) From: FUJITA Tomonori To: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org Cc: Peter Zijlstra , x86@kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org, kernel@xen0n.name, tangyouling@loongson.cn, hejinyang@loongson.cn, yangtiezhu@loongson.cn, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu Subject: [PATCH v5 1/4] x86/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust Date: Wed, 9 Apr 2025 15:57:58 +0900 Message-ID: <20250409065802.136971-2-fujita.tomonori@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250409065802.136971-1-fujita.tomonori@gmail.com> References: <20250409065802.136971-1-fujita.tomonori@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_235925_713007_29B5ABE8 X-CRM114-Status: GOOD ( 10.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with Rust to avoid the duplication. No functional changes. Acked-by: Peter Zijlstra (Intel) Signed-off-by: FUJITA Tomonori --- arch/x86/include/asm/bug.h | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h index f0e9acf72547..be5aef1aff9e 100644 --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h @@ -32,45 +32,42 @@ #ifdef CONFIG_GENERIC_BUG #ifdef CONFIG_X86_32 -# define __BUG_REL(val) ".long " __stringify(val) +# define __BUG_REL(val) ".long " val #else -# define __BUG_REL(val) ".long " __stringify(val) " - ." +# define __BUG_REL(val) ".long " val " - ." #endif #ifdef CONFIG_DEBUG_BUGVERBOSE +#define __BUG_ENTRY(file, line, flags) \ + "2:\t" __BUG_REL("1b") "\t# bug_entry::bug_addr\n" \ + "\t" __BUG_REL(file) "\t# bug_entry::file\n" \ + "\t.word " line "\t# bug_entry::line\n" \ + "\t.word " flags "\t# bug_entry::flags\n" +#else +#define __BUG_ENTRY(file, ine, flags) \ + "2:\t" __BUG_REL("1b") "\t# bug_entry::bug_addr\n" \ + "\t.word " flags "\t# bug_entry::flags\n" +#endif + +#define _BUG_FLAGS_ASM(ins, file, line, flags, size, extra) \ + "1:\t" ins "\n" \ + ".pushsection __bug_table,\"aw\"\n" \ + __BUG_ENTRY(file, line, flags) \ + "\t.org 2b + " size "\n" \ + ".popsection\n" \ + extra #define _BUG_FLAGS(ins, flags, extra) \ do { \ - asm_inline volatile("1:\t" ins "\n" \ - ".pushsection __bug_table,\"aw\"\n" \ - "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ - "\t" __BUG_REL(%c0) "\t# bug_entry::file\n" \ - "\t.word %c1" "\t# bug_entry::line\n" \ - "\t.word %c2" "\t# bug_entry::flags\n" \ - "\t.org 2b+%c3\n" \ - ".popsection\n" \ - extra \ + asm_inline volatile(_BUG_FLAGS_ASM(ins, "%c0", \ + "%c1", "%c2", "%c3", extra) \ : : "i" (__FILE__), "i" (__LINE__), \ "i" (flags), \ "i" (sizeof(struct bug_entry))); \ } while (0) -#else /* !CONFIG_DEBUG_BUGVERBOSE */ - -#define _BUG_FLAGS(ins, flags, extra) \ -do { \ - asm_inline volatile("1:\t" ins "\n" \ - ".pushsection __bug_table,\"aw\"\n" \ - "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ - "\t.word %c0" "\t# bug_entry::flags\n" \ - "\t.org 2b+%c1\n" \ - ".popsection\n" \ - extra \ - : : "i" (flags), \ - "i" (sizeof(struct bug_entry))); \ -} while (0) - -#endif /* CONFIG_DEBUG_BUGVERBOSE */ +#define ARCH_WARN_ASM(file, line, flags, size) \ + _BUG_FLAGS_ASM(ASM_UD2, file, line, flags, size, "") #else @@ -92,11 +89,14 @@ do { \ * were to trigger, we'd rather wreck the machine in an attempt to get the * message out than not know about it. */ + +#define ARCH_WARN_REACHABLE ANNOTATE_REACHABLE(1b) + #define __WARN_FLAGS(flags) \ do { \ __auto_type __flags = BUGFLAG_WARNING|(flags); \ instrumentation_begin(); \ - _BUG_FLAGS(ASM_UD2, __flags, ANNOTATE_REACHABLE(1b)); \ + _BUG_FLAGS(ASM_UD2, __flags, ARCH_WARN_REACHABLE); \ instrumentation_end(); \ } while (0) From patchwork Wed Apr 9 06:57:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: FUJITA Tomonori X-Patchwork-Id: 14044169 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 00EADC36002 for ; Wed, 9 Apr 2025 07:04:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qp8W9ben9rFX3CxZ0d32TQyshtC6obDRIzvh0yrVOfk=; b=jyaU5vZjjOirrW79Kt1AMJB+Ad oI9Wxm04VDvyaF4IoxgFtR5ailm6YhL0U6+3rEpJ+OK5dWgSUOrUTBQqGhLx6DFBZ6oNC/PVjZXZJ oL2yxQavfOJKJmmLpeELQK+yzlclvsVKiQ0XDIPBWsjTTmu43WUdCCtCA+zbVOak+g24qoRnaEtwh pIOLx7Gjgl9gGmz3WRFN+AzCF1lsK20q89h5MW7JRM5g+ur7NVelWXG1FvRKMsyNRb+aYE0ZvQ+93 aVOtmSZLYwSYSD1DnktUtgScHbxq6R15r25Is8/c4n2opuaMT4DQveWxFSqsa6OpV4toqGNh6q7U1 aZSWcHWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PTt-00000006Mfu-1FaZ; Wed, 09 Apr 2025 07:04:17 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PPI-00000006LZs-1Aos; Wed, 09 Apr 2025 06:59:33 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-22548a28d0cso91143255ad.3; Tue, 08 Apr 2025 23:59:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744181971; x=1744786771; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qp8W9ben9rFX3CxZ0d32TQyshtC6obDRIzvh0yrVOfk=; b=XbCO5epsgAItKpvencnoothOzRJrudnD3IryP2lFiE5db6FGU3pkkTJhOIBLYDR6rJ Poygzj31lEX2mrAtms3TR4qZ49zMjXd62Zrf94QalQX+CyKhwqM5QHkcDMwyQQ4OSiUm oEhH6jRYgEVCKygWciUYBStRRviNd6mQCvlwWf5gq3R9n7g/nNslDXfFY8g1eMM2O4LR Ev8tkw7X24kR4leCbR2gC3K7iB7SqhXafQAgD9PaboXHUGkwSTU5iBDkkvtIt7bUuuqk C0ka9gwgZHqs8U7l4G2lVJcuXKavZlaUUPbHs+bbpKT0mazjKV29iUoA5swExjS2AkR0 wtAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744181971; x=1744786771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qp8W9ben9rFX3CxZ0d32TQyshtC6obDRIzvh0yrVOfk=; b=fuU2ruYXke7GWDbTvM+kr5mUA0FS0gtNjSuLxUyjVZmphKrOyBON/lyquQoUQawA8C ku855lAWmawbVtyI7lq4pDPuB4MStgacv8I7xYRDESvxGvQlFiCqcLnJ1zsnz91cszKH Bosh3q9ewzVpK1B8wF9UdgHg1CdIlpzCeaNoY1SvCGlnniVAOSnEQ65WwGMa9CVDp57F /PDvEIAolsbq4kauZhQjn8fMzDD6JaOuGDGKHtLoyNRZsbrzGZY7eRrz6ViDlBjKgJgD pShrDa4i+3dZTApnV74QrC45P5TidxMtTSUeKc3yRkUecO8AhB4bJ91lVE7DHqlDC8Ge esWA== X-Forwarded-Encrypted: i=1; AJvYcCXSZ2TBujDep0QtXiJA4wQPanGzTmLprvh7zHX/l+dYbhspaDXRsTkI9h6tHuwsjRxAlTQanDCc3Y9LO4I=@lists.infradead.org, AJvYcCXeuNCYTlcfur60fw8Mf27LBj3xGPrqSgLdOphxX97pTWmACmvWGz1/bzAMnWNAHfB5ry8xhs8dbnn8v9iaMI/S@lists.infradead.org X-Gm-Message-State: AOJu0YzQPfz7WQpIZ7hUGZZ3t12RYUK7t0bz9MhRfNazoII/mZR2kZ8u +QKqtC0Q45Hwjig6VSjJfHAtjVnv6H5DM/OGZ/pgkhT6XeH1rLTP X-Gm-Gg: ASbGncsMypP5I8xCUfRYY3LKUyhRAJtVAXMO6CN+gLTyJmXPYMzg+H4AqROdY9AxvYp q4nT7izMvpAv5xtmFEpAujESy0cS13w7ZI9UI+BSAyx3jq7Y9keSJcHbNDha91WM3g7MLrxMvtJ SxmT/NU0mGrxg/vYaolDPPg2YXV0IkjON1qFdaVsaJ2iixbcUFLpQtf/KXP7OHCMnDXvlMg/KJU c9qiKACUYedjvQb8GA7YlrcjxMk2JEB90461ZFpv+NYwjeyZbqSEZZIkiWYDGayOJt8pSydXCuz yrEcpR31zKTc6JakXxpCutQiy9Jj3guoU1cDafuBbqW/fo/Zn/b4wTuiCbnLq1JVhclpPCFZAb9 XS+mI46Aww1Bmndw2cg== X-Google-Smtp-Source: AGHT+IEZwYUbsTySsEIFtv1t72KELbYqxAXDutiQgzwO8B7QSQ1bxP4LPNczP+kdX8pWrESjGbTSiA== X-Received: by 2002:a17:903:2b0c:b0:223:52fc:a15a with SMTP id d9443c01a7336-22ac2a1a9c8mr28742785ad.33.1744181971392; Tue, 08 Apr 2025 23:59:31 -0700 (PDT) Received: from mew.. (p4204131-ipxg22701hodogaya.kanagawa.ocn.ne.jp. [153.160.176.131]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22ac7ccb596sm4407815ad.220.2025.04.08.23.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 23:59:31 -0700 (PDT) From: FUJITA Tomonori To: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org Cc: Alexandre Ghiti , x86@kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, peterz@infradead.org, hpa@zytor.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org, kernel@xen0n.name, tangyouling@loongson.cn, hejinyang@loongson.cn, yangtiezhu@loongson.cn, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu Subject: [PATCH v5 2/4] riscv/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust Date: Wed, 9 Apr 2025 15:57:59 +0900 Message-ID: <20250409065802.136971-3-fujita.tomonori@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250409065802.136971-1-fujita.tomonori@gmail.com> References: <20250409065802.136971-1-fujita.tomonori@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_235932_315063_A25F5D6A X-CRM114-Status: UNSURE ( 9.48 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with Rust to avoid the duplication. No functional changes. Acked-by: Alexandre Ghiti Signed-off-by: FUJITA Tomonori --- arch/riscv/include/asm/bug.h | 37 +++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/arch/riscv/include/asm/bug.h b/arch/riscv/include/asm/bug.h index 1aaea81fb141..6ab13b56feb0 100644 --- a/arch/riscv/include/asm/bug.h +++ b/arch/riscv/include/asm/bug.h @@ -31,40 +31,45 @@ typedef u32 bug_insn_t; #ifdef CONFIG_GENERIC_BUG_RELATIVE_POINTERS #define __BUG_ENTRY_ADDR RISCV_INT " 1b - ." -#define __BUG_ENTRY_FILE RISCV_INT " %0 - ." +#define __BUG_ENTRY_FILE(file) RISCV_INT " " file " - ." #else #define __BUG_ENTRY_ADDR RISCV_PTR " 1b" -#define __BUG_ENTRY_FILE RISCV_PTR " %0" +#define __BUG_ENTRY_FILE(file) RISCV_PTR " " file #endif #ifdef CONFIG_DEBUG_BUGVERBOSE -#define __BUG_ENTRY \ +#define __BUG_ENTRY(file, line, flags) \ __BUG_ENTRY_ADDR "\n\t" \ - __BUG_ENTRY_FILE "\n\t" \ - RISCV_SHORT " %1\n\t" \ - RISCV_SHORT " %2" + __BUG_ENTRY_FILE(file) "\n\t" \ + RISCV_SHORT " " line "\n\t" \ + RISCV_SHORT " " flags #else -#define __BUG_ENTRY \ - __BUG_ENTRY_ADDR "\n\t" \ - RISCV_SHORT " %2" +#define __BUG_ENTRY(file, line, flags) \ + __BUG_ENTRY_ADDR "\n\t" \ + RISCV_SHORT " " flags #endif #ifdef CONFIG_GENERIC_BUG -#define __BUG_FLAGS(flags) \ -do { \ - __asm__ __volatile__ ( \ + +#define ARCH_WARN_ASM(file, line, flags, size) \ "1:\n\t" \ "ebreak\n" \ ".pushsection __bug_table,\"aw\"\n\t" \ "2:\n\t" \ - __BUG_ENTRY "\n\t" \ - ".org 2b + %3\n\t" \ - ".popsection" \ + __BUG_ENTRY(file, line, flags) "\n\t" \ + ".org 2b + " size "\n\t" \ + ".popsection\n" \ + +#define __BUG_FLAGS(flags) \ +do { \ + __asm__ __volatile__ ( \ + ARCH_WARN_ASM("%0", "%1", "%2", "%3") \ : \ : "i" (__FILE__), "i" (__LINE__), \ "i" (flags), \ "i" (sizeof(struct bug_entry))); \ } while (0) + #else /* CONFIG_GENERIC_BUG */ #define __BUG_FLAGS(flags) do { \ __asm__ __volatile__ ("ebreak\n"); \ @@ -78,6 +83,8 @@ do { \ #define __WARN_FLAGS(flags) __BUG_FLAGS(BUGFLAG_WARNING|(flags)) +#define ARCH_WARN_REACHABLE + #define HAVE_ARCH_BUG #include From patchwork Wed Apr 9 06:58:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: FUJITA Tomonori X-Patchwork-Id: 14044184 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 49E8BC36002 for ; Wed, 9 Apr 2025 07:06:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=t/DonzYY8ky0NPr6wCGSqroH7cDtAqrs9o10+/q7fXY=; b=QdknEl6deKZwDo7EjOLsMhDPE4 i+jgJ8LltaVivMgIOayU9SBZkwbQSfAsRfX/GrZSU13dlBXJwFXFRAaXNZjxW+NztQa89YLSlRGiB 44orboOKRYyGo3FUW3gZFzEnhx1eGX4utxctsVjyU/KhmKaerKCYTPi2k9oeVKxiRU7TpGiYBC1kx yJWqvEU93KMmUrclLHI+gamFqkvvvfVY9LvZtF6Qj56RlRwOFLNKEK0th/ohAPS8ESX27bL2F1UAV kN/L2tlzMQ+I7kb42jJJeqBfspTxW/8hjQzWaVuLtLrxVgi3ePAERpRUszoOhX+DpC98De7Na2c3w +qpQ7OCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PVd-00000006MzV-28lK; Wed, 09 Apr 2025 07:06:05 +0000 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PPO-00000006LcM-0jFy; Wed, 09 Apr 2025 06:59:39 +0000 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2241053582dso82190715ad.1; Tue, 08 Apr 2025 23:59:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744181977; x=1744786777; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t/DonzYY8ky0NPr6wCGSqroH7cDtAqrs9o10+/q7fXY=; b=S4HWM99b6va8SAInaQT5La5h20t8FRHF4f4uSZ5mY8yORaRkqsMlWb9/9DNggG5O/W krjQHkzrymVeAlndtBZoSnEHhv9hKAfqehz6Gaor+oJpB1FFKLItlf+IF5v9SIL5NXfg YcUt/MS5ZcNXgUG2eqCBn19uRtz8QPMfkj+dtzeF/IZlVjvEURIk2BorZGoFeJxv2iTE 5sTm6sH1pgj8W2KgKIFgD0g6OdMBOOAsg2zkgL1rw0q7NLBUyE5CSG5hmNvI4TN0pIBO 1CfyyFGD/9X+5mJ4bmYix7EqdZddSMiNpVslBm8sUyf+HXRkzglRlmOl0GxYa1XtC4St f+sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744181977; x=1744786777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t/DonzYY8ky0NPr6wCGSqroH7cDtAqrs9o10+/q7fXY=; b=SjcP6mzaXd47SSpRqsCdj2roZy8G82TBCaa7ZxvAUM2V3BTmQK7jvlHQBU9bAc4SNE b7RJvsqFeFdSoCsasvSDIZtxefXBsR0uZHi7Sowwe0ztG0nt46zR7pk4lAuhOpVQkffG w6gCaAesiWx4SjKSa5mx+u20DB4fqUF6aWJdsUSYvjpIOpdMvRWEPGUcQGo16CuNkBEK fmeamkNQRLitkxBT6EZj2l5I1IsjYr7X/olu2Y5MbSUwbffqhNrkrlUoam858aYqwpYY CipoWra2bxBgPogt7WtolHjb0siPF28yUk1bbFhUhEF+s0p0HuKZ4G4pMd71iScP6o3M Q1xQ== X-Forwarded-Encrypted: i=1; AJvYcCU9adkio4B0tupDzlQgeS8f3TMzaTK5R7U2bpxY1MTS4d9wXdtFqOMxB0KXCmQyntxJsO0RvRwJVFp15iw=@lists.infradead.org, AJvYcCXNlXg+PzLgejzoXRQ+WvdLoNS8IycSiX6kLkZXOgTiBoax7nB8iksQypu+4qO9Rr/H3dlunA7d7Fk7l/sR4rze@lists.infradead.org X-Gm-Message-State: AOJu0YxtFySqiUxLxJ0olpuKqCVtc/oFiJmkLjxJ4tw+v086NYXYrTNT aF4y04VwqG60NmOIzThOE8JX9s6iE85cR5IGJxzktbhhvhB5aUvV X-Gm-Gg: ASbGncvjWENIqBMi9lpSP8fjd8yITvbh5YeH9AwRuFpFJoeID0ZjZbeov2u1O3B5QBI IWSDs39BLu0Fbq7J7EQrGnrWIhaero0mAQp2xjC84xTvHICyQvYzNDU725DP5NamRZyu0CW6ZIj YpWLlqct+zL7qMDN73LtZuoHBT6Xw2cBz4WtaG8tHl/3qXhZ12Y0IfeP1m7UIYjhLF2uGjmdkOx Yx5DB5KUUiNTWk92ov/aympfne6YGSJ7aaWzJphaSKH8ql4g9eErSzVIoTx0uvjw1yOFoVLG844 EuW+5ktp8tdXj9mZbttcg/jb7f4cZ3pOjqN4XC4/nECqwuBH5+t13KHe8/u+lvFrdt3+CWLs9jw 8EviYW7Lcy6y54PHsNQ== X-Google-Smtp-Source: AGHT+IF2Tbyqa8jlbF8mK3RKpXeeOmZUaQjjm5vh3ODXS1zPKWwm1EPLzxRklzhDHZPXhNC/FLbkog== X-Received: by 2002:a17:902:db08:b0:220:be86:a421 with SMTP id d9443c01a7336-22ac3fe6feemr26628755ad.38.1744181977595; Tue, 08 Apr 2025 23:59:37 -0700 (PDT) Received: from mew.. (p4204131-ipxg22701hodogaya.kanagawa.ocn.ne.jp. [153.160.176.131]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22ac7ccb596sm4407815ad.220.2025.04.08.23.59.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 23:59:37 -0700 (PDT) From: FUJITA Tomonori To: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org Cc: Catalin Marinas , x86@kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, peterz@infradead.org, hpa@zytor.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, will@kernel.org, chenhuacai@kernel.org, kernel@xen0n.name, tangyouling@loongson.cn, hejinyang@loongson.cn, yangtiezhu@loongson.cn, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu Subject: [PATCH v5 3/4] arm64/bug: Add ARCH_WARN_ASM macro for BUG/WARN asm code sharing with Rust Date: Wed, 9 Apr 2025 15:58:00 +0900 Message-ID: <20250409065802.136971-4-fujita.tomonori@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250409065802.136971-1-fujita.tomonori@gmail.com> References: <20250409065802.136971-1-fujita.tomonori@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_235938_209937_6656B1D2 X-CRM114-Status: UNSURE ( 9.58 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add new ARCH_WARN_ASM macro for BUG/WARN assembly code sharing with Rust to avoid the duplication. No functional changes. Acked-by: Catalin Marinas Signed-off-by: FUJITA Tomonori --- arch/arm64/include/asm/asm-bug.h | 33 ++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/asm-bug.h b/arch/arm64/include/asm/asm-bug.h index 6e73809f6492..a5f13801b784 100644 --- a/arch/arm64/include/asm/asm-bug.h +++ b/arch/arm64/include/asm/asm-bug.h @@ -21,16 +21,21 @@ #endif #ifdef CONFIG_GENERIC_BUG - -#define __BUG_ENTRY(flags) \ +#define __BUG_ENTRY_START \ .pushsection __bug_table,"aw"; \ .align 2; \ 14470: .long 14471f - .; \ -_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ - .short flags; \ + +#define __BUG_ENTRY_END \ .align 2; \ .popsection; \ 14471: + +#define __BUG_ENTRY(flags) \ + __BUG_ENTRY_START \ +_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ + .short flags; \ + __BUG_ENTRY_END #else #define __BUG_ENTRY(flags) #endif @@ -41,4 +46,24 @@ _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ #define ASM_BUG() ASM_BUG_FLAGS(0) +#ifdef CONFIG_DEBUG_BUGVERBOSE +#define __BUG_LOCATION_STRING(file, line) \ + ".long " file "- .;" \ + ".short " line ";" +#else +#define __BUG_LOCATION_STRING(file, line) +#endif + +#define __BUG_ENTRY_STRING(file, line, flags) \ + __stringify(__BUG_ENTRY_START) \ + __BUG_LOCATION_STRING(file, line) \ + ".short " flags ";" \ + __stringify(__BUG_ENTRY_END) + +#define ARCH_WARN_ASM(file, line, flags, size) \ + __BUG_ENTRY_STRING(file, line, flags) \ + __stringify(brk BUG_BRK_IMM) + +#define ARCH_WARN_REACHABLE + #endif /* __ASM_ASM_BUG_H */ From patchwork Wed Apr 9 06:58:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: FUJITA Tomonori X-Patchwork-Id: 14044185 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 34B56C36002 for ; Wed, 9 Apr 2025 07:08:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=F2pbd0UXlj8lTX4R24mljIUMw3V77RSQ2B9I8eYN8Ew=; b=zbUM6PqVhNZOhtpsuai7YI1wCQ 1J1uCg3vq9X9oIr3KKdSp0f/877+8oZ6YF2HEAovnV6zks2Ku8UxyM09vHqTJ7Wl3LNt681MBTjOy e783SDu9qYcyI6Wheix83DI5BntpE+ITSf3SG/6s+gHPMfw2i2Q01+HefwtvTrphMhCFy3+aZvxMz +YHADKKFWbhyjB1TMQoIdgifBTmPwHgv1KS8iKDoWHMQs6tdqRJuufAvJqLMJj4ex/126DDm6j8D5 inxTQiGpS8Y18hEN9B+Jt6/B/vgz8WopofYCuptvNwTiBs9XZFWrYIJz1lLQtfwVI0D3dqgxYngOw 9AB6vKUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PXO-00000006NNa-3pUd; Wed, 09 Apr 2025 07:07:55 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2PPU-00000006LeJ-3pxX; Wed, 09 Apr 2025 06:59:46 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-224341bbc1dso56675875ad.3; Tue, 08 Apr 2025 23:59:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744181984; x=1744786784; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F2pbd0UXlj8lTX4R24mljIUMw3V77RSQ2B9I8eYN8Ew=; b=DZzM+Imn/lj8P9MTPiD90oJDZ5ZMSVzMMeUBw9Hq2+ReBOb0Srdtkzqt9zaZFw/I7B j+jMRKgfIkma1O7/b156ESd/wkSpRy6bKPJx6AXz90efOxTa4RBwAkrqeozxCTEeSrW9 lWCIOmtfHP7z+ssQXu8CA1Tc4goyeaapBBSI9cLg38fARV0v3v/IFwN79oSfuJ6Y73b0 LKyMwX+cdMgA7nHEwNhZWxDH3wSmKO7lnheI7z2SMXgdYmaIYOFG/FnZGfHG58qspe+c ptqlx9Tkzc6yQWVGJsU3mJBc1tM4Aijx03xNLnhfIPzbp3KNjmm3HSLFF8KJ8kekjomk P9pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744181984; x=1744786784; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F2pbd0UXlj8lTX4R24mljIUMw3V77RSQ2B9I8eYN8Ew=; b=A+BQrmHPSh/7Xbkmk9C8OHDscotz/0REufvNuqmNC19S55zeY9gS5z8+DSIdrWSiMg 8tpfykaLefaEVMiaJz4Al3O25Gvm6q/QJrBPr4eAUyDaGx/UpWWLnP05Gcdmz1Et++G6 90w7T7C8HqqHqL0CP6AI0ZHE1gPxizI+vkgOQw8FLL+x2dTLdnUUDHepMXAqhNcj5/kd cFvmXNDfKWjbK4UtZcwA0/Uokm5ia1qPAN8S7u+e9VFUv1OYICxYHibeBsvehhR16UR6 mcJDqVd3BzVGDVgWGFT9vzuKC+6KekCLSeYpBtsco29dRvCHK/+Fl4JDh2+eXEx37M7p vYIQ== X-Forwarded-Encrypted: i=1; AJvYcCXWr5THSKoAO0RM5acOidWOO5xe+fI8VuPa8fLNll0Fa/nIYo2OhT3AMeD+/i1aKhlnaesC7lPpYd+qBA4=@lists.infradead.org, AJvYcCXm/HJWxK1uhO5TM5l9BL+Qhma6bfJBmwAYmUjng//A5LXGzYrC4x3IMgRk9RXS2t13vwMAKo8mhv636DWe/D2i@lists.infradead.org X-Gm-Message-State: AOJu0Yx0eTMOPs5dincifKGedYfBW6KNeCF28h+GlYZ5hhlumuKAS3wn m+/4KZ6Qc8nbuiAHepAyCJfpHnN2mN7H+rfdVxwlyy8rFhlgU+Zb X-Gm-Gg: ASbGncvAvbau73BjdmulyzrG4J3qAkQy6QBUduGRg/qkhxJQGTDozbJkTCMH1CN8VZa j3A9NVOUEaOn3fyoSsN8fv84Umi5ADji7L52dzXfoweZEYkatcn25QOOGv/0i78yN/np8aDE/Dd tv5l+MTRiJmZBEnrObUUY5BCMIN5uARqJ6ncv5x0lGciF62vQwXtiU47eq2k2p+yeGFYNhiB4se nIX/XIX361xQW0auVIiT53cDoRCz378rSBjHysoyIFMKCQ/ItXzFTukeJFqOB4rwOHzre8lqWwD RdLGC+RVA/d9NjLj91ATGSeLr3JadYcSFKWC/7IOKuCAMLC/Hx/qqrZS5B/G82+qXR3SQtPnkkH +GB/wDSyVULvpwvzL3ttitB3bFIyq X-Google-Smtp-Source: AGHT+IFL9TT6QHLOFKEcpZF9HUypYUw7Ycu6go8EQ/Dq6j+9vVp6HhyJwtriYGJC2NztmRjbeXt+qw== X-Received: by 2002:a17:903:1c7:b0:223:5ada:88ff with SMTP id d9443c01a7336-22ac29be057mr34017775ad.24.1744181983864; Tue, 08 Apr 2025 23:59:43 -0700 (PDT) Received: from mew.. (p4204131-ipxg22701hodogaya.kanagawa.ocn.ne.jp. [153.160.176.131]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22ac7ccb596sm4407815ad.220.2025.04.08.23.59.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 23:59:43 -0700 (PDT) From: FUJITA Tomonori To: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org Cc: x86@kernel.org, linux-riscv@lists.infradead.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, peterz@infradead.org, hpa@zytor.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, catalin.marinas@arm.com, will@kernel.org, chenhuacai@kernel.org, kernel@xen0n.name, tangyouling@loongson.cn, hejinyang@loongson.cn, yangtiezhu@loongson.cn, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu Subject: [PATCH v5 4/4] rust: Add warn_on macro Date: Wed, 9 Apr 2025 15:58:01 +0900 Message-ID: <20250409065802.136971-5-fujita.tomonori@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250409065802.136971-1-fujita.tomonori@gmail.com> References: <20250409065802.136971-1-fujita.tomonori@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_235944_955674_1AB61516 X-CRM114-Status: GOOD ( 19.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add warn_on macro, uses the BUG/WARN feature (lib/bug.c) via assembly for x86_64/arm64/riscv. The current Rust code simply wraps BUG() macro but doesn't provide the proper debug information. The BUG/WARN feature can only be used from assembly. This uses the assembly code exported by the C side via ARCH_WARN_ASM macro. To avoid duplicating the assembly code, this approach follows the same strategy as the static branch code: it generates the assembly code for Rust using the C preprocessor at compile time. Similarly, ARCH_WARN_REACHABLE is also used at compile time to generate the assembly code; objtool's reachable anotation code. It's used for only architectures that use objtool. For now, Loongarch and arm32 just use a wrapper for WARN macro. UML doesn't use the assembly BUG/WARN feature; just wrapping generic BUG/WARN functions implemented in C works. Signed-off-by: FUJITA Tomonori --- rust/Makefile | 8 ++ rust/helpers/bug.c | 5 + rust/kernel/.gitignore | 2 + rust/kernel/bug.rs | 114 ++++++++++++++++++ rust/kernel/generated_arch_reachable_asm.rs.S | 7 ++ rust/kernel/generated_arch_warn_asm.rs.S | 7 ++ rust/kernel/lib.rs | 1 + 7 files changed, 144 insertions(+) create mode 100644 rust/kernel/bug.rs create mode 100644 rust/kernel/generated_arch_reachable_asm.rs.S create mode 100644 rust/kernel/generated_arch_warn_asm.rs.S diff --git a/rust/Makefile b/rust/Makefile index fa0eea8a9eca..25f498607d1b 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -34,6 +34,9 @@ obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.o obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.o always-$(subst y,$(CONFIG_RUST),$(CONFIG_JUMP_LABEL)) += kernel/generated_arch_static_branch_asm.rs +ifndef CONFIG_UML +always-$(subst y,$(CONFIG_RUST),$(CONFIG_BUG)) += kernel/generated_arch_warn_asm.rs kernel/generated_arch_reachable_asm.rs +endif # Avoids running `$(RUSTC)` when it may not be available. ifdef CONFIG_RUST @@ -536,5 +539,10 @@ $(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/build_error.o $(obj)/pin_init.o \ ifdef CONFIG_JUMP_LABEL $(obj)/kernel.o: $(obj)/kernel/generated_arch_static_branch_asm.rs endif +ifndef CONFIG_UML +ifdef CONFIG_BUG +$(obj)/kernel.o: $(obj)/kernel/generated_arch_warn_asm.rs $(obj)/kernel/generated_arch_reachable_asm.rs +endif +endif endif # CONFIG_RUST diff --git a/rust/helpers/bug.c b/rust/helpers/bug.c index e2d13babc737..a62c96f507d1 100644 --- a/rust/helpers/bug.c +++ b/rust/helpers/bug.c @@ -6,3 +6,8 @@ __noreturn void rust_helper_BUG(void) { BUG(); } + +bool rust_helper_WARN_ON(bool cond) +{ + return WARN_ON(cond); +} diff --git a/rust/kernel/.gitignore b/rust/kernel/.gitignore index 6ba39a178f30..f636ad95aaf3 100644 --- a/rust/kernel/.gitignore +++ b/rust/kernel/.gitignore @@ -1,3 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 /generated_arch_static_branch_asm.rs +/generated_arch_warn_asm.rs +/generated_arch_reachable_asm.rs diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs new file mode 100644 index 000000000000..761f0c49ae04 --- /dev/null +++ b/rust/kernel/bug.rs @@ -0,0 +1,114 @@ +// SPDX-License-Identifier: GPL-2.0 + +// Copyright (C) 2024, 2025 FUJITA Tomonori + +//! Support for BUG and WARN functionality. +//! +//! C header: [`include/asm-generic/bug.h`](srctree/include/asm-generic/bug.h) + +#[macro_export] +#[doc(hidden)] +#[cfg(all(CONFIG_BUG, not(CONFIG_UML), not(CONFIG_LOONGARCH), not(CONFIG_ARM)))] +#[cfg(CONFIG_DEBUG_BUGVERBOSE)] +macro_rules! warn_flags { + ($flags:expr) => { + const FLAGS: u32 = $crate::bindings::BUGFLAG_WARNING | $flags; + const _FILE: &[u8] = file!().as_bytes(); + // Plus one for null-terminator. + static FILE: [u8; _FILE.len() + 1] = { + let mut bytes = [0; _FILE.len() + 1]; + let mut i = 0; + while i < _FILE.len() { + bytes[i] = _FILE[i]; + i += 1; + } + bytes + }; + // SAFETY: Just an FFI call. + unsafe { + $crate::asm!( + concat!( + "/* {size} */", + include!(concat!(env!("OBJTREE"), "/rust/kernel/generated_arch_warn_asm.rs")), + include!(concat!(env!("OBJTREE"), "/rust/kernel/generated_arch_reachable_asm.rs"))); + file = sym FILE, + line = const line!(), + flags = const FLAGS, + size = const ::core::mem::size_of::<$crate::bindings::bug_entry>(), + ); + } + } +} + +#[macro_export] +#[doc(hidden)] +#[cfg(all(CONFIG_BUG, not(CONFIG_UML), not(CONFIG_LOONGARCH), not(CONFIG_ARM)))] +#[cfg(not(CONFIG_DEBUG_BUGVERBOSE))] +macro_rules! warn_flags { + ($flags:expr) => { + const FLAGS: u32 = $crate::bindings::BUGFLAG_WARNING | $flags; + // SAFETY: Just an FFI call. + unsafe { + $crate::asm!( + concat!( + "/* {size} */", + include!(concat!(env!("OBJTREE"), "/rust/kernel/generated_arch_warn_asm.rs")), + include!(concat!(env!("OBJTREE"), "/rust/kernel/generated_arch_reachable_asm.rs"))); + flags = const FLAGS, + size = const ::core::mem::size_of::<$crate::bindings::bug_entry>(), + ); + } + } +} + +#[macro_export] +#[doc(hidden)] +#[cfg(all(CONFIG_BUG, CONFIG_UML))] +macro_rules! warn_flags { + ($flags:expr) => { + // SAFETY: Just an FFI call. + unsafe { + $crate::bindings::warn_slowpath_fmt( + $crate::c_str!(::core::file!()).as_ptr() as *const $crate::ffi::c_char, + line!() as i32, + $flags as u32, + ::core::ptr::null() as *const $crate::ffi::c_char, + ); + } + }; +} + +#[macro_export] +#[doc(hidden)] +#[cfg(all(CONFIG_BUG, any(CONFIG_LOONGARCH, CONFIG_ARM)))] +macro_rules! warn_flags { + ($flags:expr) => { + // SAFETY: Just an FFI call. + unsafe { $crate::bindings::WARN_ON(true) } + }; +} + +#[macro_export] +#[doc(hidden)] +#[cfg(not(CONFIG_BUG))] +macro_rules! warn_flags { + ($flags:expr) => {}; +} + +#[doc(hidden)] +pub const fn bugflag_taint(value: u32) -> u32 { + value << 8 +} + +/// Report a warning if `cond` is true and return the condition's evaluation result. +#[macro_export] +macro_rules! warn_on { + ($cond:expr) => {{ + if $cond { + const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN); + + $crate::warn_flags!(WARN_ON_FLAGS); + } + $cond + }}; +} diff --git a/rust/kernel/generated_arch_reachable_asm.rs.S b/rust/kernel/generated_arch_reachable_asm.rs.S new file mode 100644 index 000000000000..3886a9ad3a99 --- /dev/null +++ b/rust/kernel/generated_arch_reachable_asm.rs.S @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include + +// Cut here. + +::kernel::concat_literals!(ARCH_WARN_REACHABLE) diff --git a/rust/kernel/generated_arch_warn_asm.rs.S b/rust/kernel/generated_arch_warn_asm.rs.S new file mode 100644 index 000000000000..409eb4c2d3a1 --- /dev/null +++ b/rust/kernel/generated_arch_warn_asm.rs.S @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include + +// Cut here. + +::kernel::concat_literals!(ARCH_WARN_ASM("{file}", "{line}", "{flags}", "{size}")) diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs index de07aadd1ff5..bc13e92bdb1e 100644 --- a/rust/kernel/lib.rs +++ b/rust/kernel/lib.rs @@ -40,6 +40,7 @@ pub mod alloc; #[cfg(CONFIG_BLOCK)] pub mod block; +pub mod bug; #[doc(hidden)] pub mod build_assert; pub mod cred;