mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 10:32:35 +00:00
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:
parent
9b63fd2fc8
commit
69a407bf81
@ -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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 (;;) ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user