On Wed, 5 Aug 2026 14:56:41 +0200
"Christophe Leroy (CS GROUP)" <[email protected]> wrote:

> 
> 
> Le 04/08/2026 à 15:40, FUJITA Tomonori a écrit :
>> [Vous ne recevez pas souvent de courriers de
>> [email protected]. D?couvrez pourquoi ceci est important ?
>> https://aka.ms/LearnAboutSenderIdentification ]
>> On Tue, 4 Aug 2026 12:11:57 +0200
>> Link Mauve <[email protected]> wrote:
>> 
>>> Hi,
>>>
>>> On Mon, Aug 03, 2026 at 12:27:13PM +0530, Madhavan Srinivasan wrote:
>>>> On Wed, 08 Jul 2026 13:54:47 +0530, Mukesh Kumar Chaurasiya (IBM)
>>>> wrote:
>>>>> Enable experimental rust support for ppc64le and ppc32be. The patch
>>>>> for
>>>>> ppc32 has been provided by Link Mauve[1] and ppc64le support[2] has
>>>>> been
>>>>> merged over it. ppc32 needs some toolchain fixes mentioned in the
>>>>> patch
>>>>> `rust: Add PowerPC support` and the discussion for that is done
>>>>> here[1].
>>>>>
>>>>> This has been tested on
>>>>> - powernv9 hardware
>>>>> - pseries P11 hardware
>>>>> - pseries(9, 10) qemu
>>>>> - powernv(9, 10) qemu
>>>>> - rustdoc on x86 and powerpc64le
>>>>> - rusttest on x86 and powerpc64le
>>>>>
>>>>> [...]
>>>>
>>>> Applied to powerpc/next.
>>>>
>>>> [1/7] rust: Fix "multiple candidates for rmeta dependency core" error
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2F00cdfd072c709c608606461d7d44d4613119bfa9&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617198585%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=4qQe1qS37TGv6%2Bf9H56kWVqMYSAHsWiDx5oz8WHZ8%2Bg%3D&reserved=0
>>>> [2/7] dma-resv: Fix undefined symbol when CONFIG_DMA_SHARED_BUFFER is
>>>> disabled
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2Fbe809b60cbb61aab96179f44ac3670242ae72996&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617235654%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=cw2l64D3ah%2FM3pxFmvMpUnNmcqcSvN3RFoDiYAIR76g%3D&reserved=0
>>>> [3/7] powerpc/jump_label: adjust inline asm to be consistent
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2F13244c0a40139fe66c4c5c5655f4d732a6002957&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617259593%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=xNvcH9k5RA5ktJupn90VdDuwx4YBvezuDcapqKlYfjs%3D&reserved=0
>>>> [4/7] rust/powerpc: Set min rustc version for powerpc
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2Fe299147cdc8e19c6421a6b7863dc82a35b09d967&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617280683%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=uNZA7AulROQGv%2B2l4M%2FqC5W4ncWktRoSRRp8eaF%2FcCY%3D&reserved=0
>>>> [5/7] rust: Make __udivdi3() and __umoddi3() panic
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2Fc93c194e4ee71a734986fd99a8b1ec9fbb7a9b8b&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617303292%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=znZPWXM7k5FpRlekIyUN1bHzmMyk1YESR56WsiwBuMA%3D&reserved=0
>>>> [6/7] rust: Add PowerPC support
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2F73b741adb264967093ef4eb59905618a7e0d0de0&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617326590%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=aFHGhd7RX%2Ft5%2BMjqt6pBmIKPKAKmFEQndKP1F%2F8HSxk%3D&reserved=0
>>>> [7/7] powerpc: Enable Rust for ppc64le
>>>>        
>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpowerpc%2Fc%2Fbc87cbdb952e9223616b839d64bdb4723aa2ed1d&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C34e4deafcc1d41c1738a08def22e01b0%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639214476617346994%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ITEFv9C1CSUVLqJNe5Y8sStUE3KoOVYVzSzbP0qis74%3D&reserved=0
>>>>
>>>> cheers
>>>>
>>>
>>> I just tested those again in linux-next, with the Wii support series
>>> on
>>> top, but now the kernel fails to build due to ARCH_WARN_ASM and
>>> ARCH_WARN_REACHABLE not being defined on PowerPC:
>>> ```
>>> error: no rules expected `ARCH_WARN_ASM`
>>>     --> 
>>> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_warn_asm.rs:1:28
>>>      |
>>>    1 | ::kernel::concat_literals!(ARCH_WARN_ASM("{file}", "{line}",
>>>    "{flags}", "{size}"))
>>>      |                            ^^^^^^^^^^^^^ no rules expected this 
>>> token in macro call
>>>      |
>>>     ::: ../rust/kernel/lib.rs:279:1
>>>      |
>>> 279 | macro_rules! concat_literals {
>>>      | ---------------------------- when calling this macro
>>>      |
>>>      = note: while trying to match sequence start
>>>
>>> error: no rules expected `ARCH_WARN_REACHABLE`
>>>     --> 
>>> /home/linkmauve/dev/linux/wii/rust/kernel/generated_arch_reachable_asm.rs:1:28
>>>      |
>>>    1 | ::kernel::concat_literals!(ARCH_WARN_REACHABLE)
>>>      |                            ^^^^^^^^^^^^^^^^^^^ no rules expected 
>>> this token in macro call
>>>      |
>>>     ::: ../rust/kernel/lib.rs:279:1
>>>      |
>>> 279 | macro_rules! concat_literals {
>>>      | ---------------------------- when calling this macro
>>>      |
>>>      = note: while trying to match sequence start
>>>
>>> error: aborting due to 2 previous errors
>>> ```
>>>
>>> This is in addition to the bindings::kvfree_call_rcu() call, but that
>>> one is already being handled in a different thread.
>> Looks like powerpc needs something like the followings:
>> diff --git a/arch/powerpc/include/asm/bug.h
>> b/arch/powerpc/include/asm/bug.h
>> index 0db48977c70c..8aba39e0cf26 100644
>> --- a/arch/powerpc/include/asm/bug.h
>> +++ b/arch/powerpc/include/asm/bug.h
>> @@ -32,34 +32,38 @@
>>   #endif /* verbose */
>>   #else /* !__ASSEMBLER__ */
>> -/* _EMIT_BUG_ENTRY expects args %0,%1,%2,%3 to be FILE, LINE, flags
>> -and
>> -   sizeof(struct bug_entry), respectively */
>>   #ifdef CONFIG_DEBUG_BUGVERBOSE
>> -#define _EMIT_BUG_ENTRY                                \
>> +#define _EMIT_BUG_ENTRY(file, line, flags)     \
>>          ".section __bug_table,\"aw\"\n"         \
>>          "2:     .4byte 1b - .\n"                \
>> -       "       .4byte %0 - .\n"                \
>> -       "       .short %1, %2\n"                \
>> -       ".org 2b+%3\n"                          \
>> -       ".previous\n"
>> +       "       .4byte " file " - .\n"          \
>> +       "       .short " line ", " flags "\n"
>>   #else
>> -#define _EMIT_BUG_ENTRY                                \
>> +#define _EMIT_BUG_ENTRY(file, line, flags)     \
>>          ".section __bug_table,\"aw\"\n"         \
>>          "2:     .4byte 1b - .\n"                \
>> -       "       .short %2\n"                    \
>> -       ".org 2b+%3\n"                          \
>> -       ".previous\n"
>> +       "       .short " flags "\n"
>>   #endif
>>   #define BUG_ENTRY(cond_str, insn, flags, ...)          \
>>          __asm__ __volatile__(                           \
>>                  "1:     " insn "\n"                     \
>> -               _EMIT_BUG_ENTRY                         \
>> +               _EMIT_BUG_ENTRY("%0", "%1", "%2")       \
>> +               ".org 2b+%3\n"                          \
>> +               ".previous\n"                           \
>>                  : : "i" (WARN_CONDITION_STR(cond_str) __FILE__), "i" 
>> (__LINE__), \
>>                    "i" (flags),                          \
>>                    "i" (sizeof(struct bug_entry)),       \
>>                    ##__VA_ARGS__)
>> +#define ARCH_WARN_ASM(file, line, flags, size)         \
>> +               "1:     twi 31, 0, 0\n"                 \
>> +               _EMIT_BUG_ENTRY(file, line, flags)      \
>> +               ".org 2b+" size "\n"                    \
>> +               ".previous\n"
> 
> Will this build ? Isn't ARCH_WARN_ASM() for use in ASM .S files ?

No. It's used by Rust code; the C preprocessor uses ARCH_WARN_ASM() to
generate the code for Rust inline assembly.


Reply via email to