s390/bp: remove __bpon()

There is no point in changing branch prediction state of a cpu shortly
before it enters stop state. Therefore remove __bpon().

Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Heiko Carstens 2023-02-28 13:57:50 +01:00 committed by Vasily Gorbik
parent 9b63fd2fc8
commit 69a407bf81
4 changed files with 6 additions and 16 deletions

View File

@ -99,7 +99,6 @@ void cpu_detect_mhz_feature(void);
extern const struct seq_operations cpuinfo_op; extern const struct seq_operations cpuinfo_op;
extern void execve_tail(void); extern void execve_tail(void);
extern void __bpon(void);
unsigned long vdso_size(void); unsigned long vdso_size(void);
/* /*

View File

@ -159,21 +159,15 @@ _LPP_OFFSET = __LC_LPP
.section .kprobes.text, "ax" .section .kprobes.text, "ax"
.Ldummy: .Ldummy:
/* /*
* This nop exists only in order to avoid that __bpon starts at * The following nop exists only in order to avoid that the next
* the beginning of the kprobes text section. In that case we would * symbol starts at the beginning of the kprobes text section.
* have several symbols at the same address. E.g. objdump would take * In that case there would be several symbols at the same address.
* an arbitrary symbol name when disassembling this code. * E.g. objdump would take an arbitrary symbol when disassembling
* With the added nop in between the __bpon symbol is unique * the code.
* again. * With the added nop in between this cannot happen.
*/ */
nop 0 nop 0
ENTRY(__bpon)
.globl __bpon
BPON
BR_EX %r14
ENDPROC(__bpon)
/* /*
* Scheduler resume function, called by switch_to * Scheduler resume function, called by switch_to
* gpr2 = (task_struct *) prev * gpr2 = (task_struct *) prev

View File

@ -649,7 +649,6 @@ static struct kset *ipl_kset;
static void __ipl_run(void *unused) static void __ipl_run(void *unused)
{ {
__bpon();
diag308(DIAG308_LOAD_CLEAR, NULL); diag308(DIAG308_LOAD_CLEAR, NULL);
} }

View File

@ -348,7 +348,6 @@ static void pcpu_delegate(struct pcpu *pcpu,
abs_lc->restart_source = source_cpu; abs_lc->restart_source = source_cpu;
put_abs_lowcore(abs_lc); put_abs_lowcore(abs_lc);
} }
__bpon();
asm volatile( asm volatile(
"0: sigp 0,%0,%2 # sigp restart to target cpu\n" "0: sigp 0,%0,%2 # sigp restart to target cpu\n"
" brc 2,0b # busy, try again\n" " brc 2,0b # busy, try again\n"
@ -986,7 +985,6 @@ void __cpu_die(unsigned int cpu)
void __noreturn cpu_die(void) void __noreturn cpu_die(void)
{ {
idle_task_exit(); idle_task_exit();
__bpon();
pcpu_sigp_retry(pcpu_devices + smp_processor_id(), SIGP_STOP, 0); pcpu_sigp_retry(pcpu_devices + smp_processor_id(), SIGP_STOP, 0);
for (;;) ; for (;;) ;
} }