powerpc/code-patching: Use jump_label for testing freed initmem
Once init is done, initmem is freed forever so no need to test system_state at every call to patch_instruction(). Use jump_label. This reduces by 2% the time needed to activate ftrace on an 8xx. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/0aee964721cab7316cffde21a2ca223cee14d373.1647962456.git.christophe.leroy@csgroup.eu
This commit is contained in:
committed by
Michael Ellerman
parent
cb3ac45214
commit
b033767848
@@ -8,6 +8,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/cpuhotplug.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/jump_label.h>
|
||||
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/page.h>
|
||||
@@ -188,10 +189,12 @@ static int do_patch_instruction(u32 *addr, ppc_inst_t instr)
|
||||
|
||||
#endif /* CONFIG_STRICT_KERNEL_RWX */
|
||||
|
||||
__ro_after_init DEFINE_STATIC_KEY_FALSE(init_mem_is_free);
|
||||
|
||||
int patch_instruction(u32 *addr, ppc_inst_t instr)
|
||||
{
|
||||
/* Make sure we aren't patching a freed init section */
|
||||
if (system_state >= SYSTEM_FREEING_INITMEM && init_section_contains(addr, 4))
|
||||
if (static_branch_likely(&init_mem_is_free) && init_section_contains(addr, 4))
|
||||
return 0;
|
||||
|
||||
return do_patch_instruction(addr, instr);
|
||||
|
||||
Reference in New Issue
Block a user