Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cba313da authored by Paul Mackerras's avatar Paul Mackerras Committed by Benjamin Herrenschmidt
Browse files

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: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 33392640
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ BEGIN_FTR_SECTION
	lbz	r0,PACAPROCSTART(r13)
	cmpwi	r0,0x80
	bne	1f
	li	r0,0
	li	r0,1
	stb	r0,PACAPROCSTART(r13)
	b	kvm_start_guest
1:
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ int __devinit pnv_smp_kick_cpu(int nr)
	/* On OPAL v2 the CPU are still spinning inside OPAL itself,
	 * 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);
		rc = opal_start_cpu(pcpu, start_here);
		if (rc != OPAL_SUCCESS)