Patch "riscv: jump_label: mark arguments as const to satisfy asm constraints" has been added to the 6.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    riscv: jump_label: mark arguments as const to satisfy asm constraints

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     riscv-jump_label-mark-arguments-as-const-to-satisfy-.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 7064ee7fac10c82d1404e269762c24cd6619061f
Author: Jisheng Zhang <jszhang@xxxxxxxxxx>
Date:   Sat Oct 8 22:54:37 2022 +0800

    riscv: jump_label: mark arguments as const to satisfy asm constraints
    
    [ Upstream commit 89fd4a1df829187d4d35f6a520cc531de622e6f0 ]
    
    Samuel reported that the static branch usage in cpu_relax() breaks
    building with CONFIG_CC_OPTIMIZE_FOR_SIZE:
    
    In file included from <command-line>:
    ./arch/riscv/include/asm/jump_label.h: In function 'cpu_relax':
    ././include/linux/compiler_types.h:285:33: warning: 'asm' operand 0
    probably does not match constraints
      285 | #define asm_volatile_goto(x...) asm goto(x)
          |                                 ^~~
    ./arch/riscv/include/asm/jump_label.h:41:9: note: in expansion of macro
    'asm_volatile_goto'
       41 |         asm_volatile_goto(
          |         ^~~~~~~~~~~~~~~~~
    ././include/linux/compiler_types.h:285:33: error: impossible constraint
    in 'asm'
      285 | #define asm_volatile_goto(x...) asm goto(x)
          |                                 ^~~
    ./arch/riscv/include/asm/jump_label.h:41:9: note: in expansion of macro
    'asm_volatile_goto'
       41 |         asm_volatile_goto(
          |         ^~~~~~~~~~~~~~~~~
    make[1]: *** [scripts/Makefile.build:249:
    arch/riscv/kernel/vdso/vgettimeofday.o] Error 1
    make: *** [arch/riscv/Makefile:128: vdso_prepare] Error 2
    
    Maybe "-Os" prevents GCC from detecting that the key/branch arguments
    can be treated as constants and used as immediate operands. Inspired
    by x86's commit 864b435514b2("x86/jump_label: Mark arguments as const to
    satisfy asm constraints"), and as pointed out by Steven: "The "i"
    constraint needs to be a constant.", let's do similar modifications to
    riscv.
    
    Tested by CC_OPTIMIZE_FOR_SIZE + gcc and CC_OPTIMIZE_FOR_SIZE + clang.
    
    Link: https://lore.kernel.org/linux-riscv/20220922060958.44203-1-samuel@xxxxxxxxxxxx/
    Link: https://lore.kernel.org/all/20210212094059.5f8d05e8@xxxxxxxxxxxxxxxxxx/
    Fixes: 8eb060e10185 ("arch/riscv: add Zihintpause support")
    Reported-by: Samuel Holland <samuel@xxxxxxxxxxxx>
    Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxx>
    Reviewed-by: Andrew Jones <ajones@xxxxxxxxxxxxxxxx>
    Tested-by: Heiko Stuebner <heiko@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20221008145437.491-1-jszhang@xxxxxxxxxx
    Signed-off-by: Palmer Dabbelt <palmer@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/riscv/include/asm/jump_label.h b/arch/riscv/include/asm/jump_label.h
index 38af2ec7b9bf..6d58bbb5da46 100644
--- a/arch/riscv/include/asm/jump_label.h
+++ b/arch/riscv/include/asm/jump_label.h
@@ -14,8 +14,8 @@
 
 #define JUMP_LABEL_NOP_SIZE 4
 
-static __always_inline bool arch_static_branch(struct static_key *key,
-					       bool branch)
+static __always_inline bool arch_static_branch(struct static_key * const key,
+					       const bool branch)
 {
 	asm_volatile_goto(
 		"	.option push				\n\t"
@@ -35,8 +35,8 @@ static __always_inline bool arch_static_branch(struct static_key *key,
 	return true;
 }
 
-static __always_inline bool arch_static_branch_jump(struct static_key *key,
-						    bool branch)
+static __always_inline bool arch_static_branch_jump(struct static_key * const key,
+						    const bool branch)
 {
 	asm_volatile_goto(
 		"	.option push				\n\t"



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux