mirror of https://gitee.com/openkylin/linux.git
powerpc/powernv: Fix problems in onlining CPUs
At present, on the powernv platform, if you off-line a CPU that was online, and then try to on-line it again, the kernel generates a warning message "OPAL Error -1 starting CPU n". Furthermore, if the CPU is a secondary thread that was used by KVM while it was off-line, the CPU fails to come online. The first problem is fixed by only calling OPAL to start the CPU the first time it is on-lined, as indicated by the cpu_start field of its PACA being zero. The second problem is fixed by restoring the cpu_start field to 1 instead of 0 when using the CPU within KVM. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
3339264042
commit
cba313da5c
|
@ -65,7 +65,7 @@ BEGIN_FTR_SECTION
|
||||||
lbz r0,PACAPROCSTART(r13)
|
lbz r0,PACAPROCSTART(r13)
|
||||||
cmpwi r0,0x80
|
cmpwi r0,0x80
|
||||||
bne 1f
|
bne 1f
|
||||||
li r0,0
|
li r0,1
|
||||||
stb r0,PACAPROCSTART(r13)
|
stb r0,PACAPROCSTART(r13)
|
||||||
b kvm_start_guest
|
b kvm_start_guest
|
||||||
1:
|
1:
|
||||||
|
|
|
@ -75,7 +75,7 @@ int __devinit pnv_smp_kick_cpu(int nr)
|
||||||
/* On OPAL v2 the CPU are still spinning inside OPAL itself,
|
/* On OPAL v2 the CPU are still spinning inside OPAL itself,
|
||||||
* get them back now
|
* get them back now
|
||||||
*/
|
*/
|
||||||
if (firmware_has_feature(FW_FEATURE_OPALv2)) {
|
if (!paca[nr].cpu_start && firmware_has_feature(FW_FEATURE_OPALv2)) {
|
||||||
pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", nr, pcpu);
|
pr_devel("OPAL: Starting CPU %d (HW 0x%x)...\n", nr, pcpu);
|
||||||
rc = opal_start_cpu(pcpu, start_here);
|
rc = opal_start_cpu(pcpu, start_here);
|
||||||
if (rc != OPAL_SUCCESS)
|
if (rc != OPAL_SUCCESS)
|
||||||
|
|
Loading…
Reference in New Issue