linux/arch/sparc
David S. Miller cb3042d609 sparc64: Make sure %pil interrupts are enabled during hypervisor yield.
In arch_cpu_idle() we must enable %pil based interrupts before
potentially invoking the hypervisor cpu yield call.

As per the Hypervisor API documentation for cpu_yield:

	Interrupts which are blocked by some mechanism other that
	pstate.ie (for example %pil) are not guaranteed to cause
	a return from this service.

It seems that only first generation Niagara chips are hit by this
bug.  My best guess is that later chips implement this in hardware
and wake up anyways from %pil events, whereas in first generation
chips the yield is implemented completely in hypervisor code and
requires %pil to be enabled in order to wake properly from this
call.

Fixes: 87fa05aeb3 ("sparc: Use generic idle loop")
Reported-by: Fabio M. Di Nitto <fabbione@fabbione.net>
Reported-by: Jan Engelhardt <jengelh@inai.de>
Tested-by: Jan Engelhardt <jengelh@inai.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-24 14:45:12 -04:00
..
boot sparc: Fix piggyback with newer binutils. 2012-12-03 11:24:25 -08:00
configs perf: Remove PERF_COUNTERS config option 2012-04-26 13:52:52 +02:00
crypto sparc64: Set CRYPTO_TFM_REQ_MAY_SLEEP consistently in CAMELLIA code. 2012-12-19 15:44:31 -08:00
include sparc: Hook up sched_setattr and sched_getattr syscalls. 2014-01-29 00:45:06 -08:00
kernel sparc64: Make sure %pil interrupts are enabled during hypervisor yield. 2014-03-24 14:45:12 -04:00
lib sparc64: Make PAGE_OFFSET variable. 2013-11-12 15:22:34 -08:00
math-emu sparc64: Make montmul/montsqr/mpmul usable in 32-bit threads. 2012-10-26 15:18:37 -07:00
mm sparc64:tsb.c:use array size macro rather than number 2014-03-17 15:55:49 -04:00
net bpf: do not use reciprocal divide 2014-01-15 17:02:08 -08:00
oprofile
power sparc64: Hibernation support 2013-03-20 11:06:54 -07:00
prom sparc: delete non-required instances of include <linux/init.h> 2014-01-28 23:38:23 -08:00
Kbuild sparc64: Add SHA1 driver making use of the 'sha1' instruction. 2012-08-20 15:08:49 -07:00
Kconfig sparc32: fix build failure for arch_jump_label_transform 2014-02-19 19:49:48 -05:00
Kconfig.debug
Makefile sparc64: Hibernation support 2013-03-20 11:06:54 -07:00