powerpc/rtas: remove rtas_suspend_cpu()
rtas_suspend_cpu() no longer has users; remove it and __rtas_suspend_cpu() which now becomes unused as well. Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201207215200.1785968-22-nathanl@linux.ibm.com
This commit is contained in:
parent
796f9247b4
commit
395b2c0909
|
@ -256,7 +256,6 @@ extern bool rtas_indicator_present(int token, int *maxindex);
|
|||
extern int rtas_set_indicator(int indicator, int index, int new_value);
|
||||
extern int rtas_set_indicator_fast(int indicator, int index, int new_value);
|
||||
extern void rtas_progress(char *s, unsigned short hex);
|
||||
extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data);
|
||||
extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data);
|
||||
int rtas_ibm_suspend_me(int *fw_status);
|
||||
|
||||
|
|
|
@ -873,58 +873,6 @@ int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data)
|
|||
return __rtas_suspend_last_cpu(data, 0);
|
||||
}
|
||||
|
||||
static int __rtas_suspend_cpu(struct rtas_suspend_me_data *data, int wake_when_done)
|
||||
{
|
||||
long rc = H_SUCCESS;
|
||||
unsigned long msr_save;
|
||||
int cpu;
|
||||
|
||||
atomic_inc(&data->working);
|
||||
|
||||
/* really need to ensure MSR.EE is off for H_JOIN */
|
||||
msr_save = mfmsr();
|
||||
mtmsr(msr_save & ~(MSR_EE));
|
||||
|
||||
while (rc == H_SUCCESS && !atomic_read(&data->done) && !atomic_read(&data->error))
|
||||
rc = plpar_hcall_norets(H_JOIN);
|
||||
|
||||
mtmsr(msr_save);
|
||||
|
||||
if (rc == H_SUCCESS) {
|
||||
/* This cpu was prodded and the suspend is complete. */
|
||||
goto out;
|
||||
} else if (rc == H_CONTINUE) {
|
||||
/* All other cpus are in H_JOIN, this cpu does
|
||||
* the suspend.
|
||||
*/
|
||||
return __rtas_suspend_last_cpu(data, wake_when_done);
|
||||
} else {
|
||||
printk(KERN_ERR "H_JOIN on cpu %i failed with rc = %ld\n",
|
||||
smp_processor_id(), rc);
|
||||
atomic_set(&data->error, rc);
|
||||
}
|
||||
|
||||
if (wake_when_done) {
|
||||
atomic_set(&data->done, 1);
|
||||
|
||||
/* This cpu did the suspend or got an error; in either case,
|
||||
* we need to prod all other other cpus out of join state.
|
||||
* Extra prods are harmless.
|
||||
*/
|
||||
for_each_online_cpu(cpu)
|
||||
plpar_hcall_norets(H_PROD, get_hard_smp_processor_id(cpu));
|
||||
}
|
||||
out:
|
||||
if (atomic_dec_return(&data->working) == 0)
|
||||
complete(data->complete);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int rtas_suspend_cpu(struct rtas_suspend_me_data *data)
|
||||
{
|
||||
return __rtas_suspend_cpu(data, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* rtas_call_reentrant() - Used for reentrant rtas calls
|
||||
* @token: Token for desired reentrant RTAS call
|
||||
|
|
Loading…
Reference in New Issue