[POWERPC] Use H_CEDE on non-SMT

On the JS21 systems, they have the SPLPAR hypertas set, but are not SMT
capable. So, they are not making the H_CEDE call. This is causing the
hypervisor to have to queue up work for the hdecr, taking an excessive
amount of time in maintenance code, and causing jitter on the box.

Making the H_CEDE call helps alleviate that problem.

Signed-off-by: Jake Moilanen <moilanen@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

authored by Jake Moilanen and committed by Paul Mackerras 9b9b72fe 9fc0a92c

+4 -2
+4 -2
arch/powerpc/platforms/pseries/setup.c
··· 501 } 502 503 /* 504 - * Cede if the other thread is not idle, so that it can 505 * go single-threaded. If the other thread is idle, 506 * we ask the hypervisor if it has pending work it 507 * wants to do and cede if it does. Otherwise we keep ··· 515 * very low priority. The cede enables interrupts, which 516 * doesn't matter here. 517 */ 518 - if (!lppaca[cpu ^ 1].idle || poll_pending() == H_PENDING) 519 cede_processor(); 520 521 out:
··· 501 } 502 503 /* 504 + * If not SMT, cede processor. If CPU is running SMT 505 + * cede if the other thread is not idle, so that it can 506 * go single-threaded. If the other thread is idle, 507 * we ask the hypervisor if it has pending work it 508 * wants to do and cede if it does. Otherwise we keep ··· 514 * very low priority. The cede enables interrupts, which 515 * doesn't matter here. 516 */ 517 + if (!cpu_has_feature(CPU_FTR_SMT) || !lppaca[cpu ^ 1].idle 518 + || poll_pending() == H_PENDING) 519 cede_processor(); 520 521 out: