linux/arch
Ralf Baechle 4b3e975e4a [MIPS] Fix scheduling latency issue on 24K, 34K and 74K cores
The idle loop goes to sleep using the WAIT instruction if !need_resched().
This has is suffering from from a race condition that if if just after
need_resched has returned 0 an interrupt might set TIF_NEED_RESCHED but
we've just completed the test so go to sleep anyway.  This would be
trivial to fix by just disabling interrupts during that sequence as in:

        local_irq_disable();
        if (!need_resched())
                __asm__("wait");
        local_irq_enable();

but the processor architecture leaves it undefined if a processor calling
WAIT with interrupts disabled will ever restart its pipeline and indeed
some processors have made use of the freedom provided by the architecture
definition.  This has been resolved and the Config7.WII bit indicates that
the use of WAIT is safe on 24K, 24KE and 34K cores.  It also is safe on
74K starting revision 2.1.0 so enable the use of WAIT with interrupts
disabled for 74K based on a c0_prid of at least that.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2007-07-06 16:17:11 +01:00
..
alpha alpha: fix alignment problem in csum_ipv6_magic() 2007-06-24 08:59:11 -07:00
arm PM: introduce set_target method in pm_ops 2007-07-01 12:29:44 -07:00
arm26 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
avr32 [AVR32] Update defconfigs 2007-06-23 15:43:48 +02:00
blackfin Blackfin arch: update board defconfig files 2007-07-02 13:49:15 +08:00
cris Fix trivial typos in Kconfig* files 2007-05-09 07:12:20 +02:00
frv all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
h8300 h8300 trival patches 2007-06-01 08:18:29 -07:00
i386 Remove some unused variables 2007-07-03 18:27:53 -07:00
ia64 [IA64] Make SN2 PCI code use ioremap rather than manually mangle the address 2007-06-26 13:35:45 -07:00
m32r all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
m68k x86_64: Quieten Atari keyboard warnings in Kconfig 2007-06-20 14:27:26 -07:00
m68knommu m68knommu: fix ColdFire timer off by 1 2007-06-08 17:23:32 -07:00
mips [MIPS] Fix scheduling latency issue on 24K, 34K and 74K cores 2007-07-06 16:17:11 +01:00
parisc [PARISC] unwinder improvements 2007-06-21 17:46:22 -04:00
powerpc Fix VDSO gettimeofday() when called with NULL struct timeval. 2007-06-29 21:27:00 -07:00
ppc potential parse error in ifdef part 3 2007-06-08 17:23:33 -07:00
s390 [S390] Add oops_enter()/oops_exit() calls to die(). 2007-06-19 13:10:20 +02:00
sh sh: Handle -ERESTART_RESTARTBLOCK for restartable syscalls. 2007-06-19 12:33:21 +09:00
sh64 sh64: Handle -ERESTART_RESTARTBLOCK for restartable syscalls. 2007-06-19 12:41:32 +09:00
sparc [SPARC32]: Build fix. 2007-05-31 01:52:51 -07:00
sparc64 [SPARC64]: Need to set state to IDLE during sun4v IRQ enable. 2007-06-26 00:13:31 -07:00
um uml: remove PAGE_SIZE from libc code 2007-06-16 13:16:16 -07:00
v850 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
x86_64 x86_64 irq: use mask/unmask and proper locking in fixup_irqs() 2007-06-26 16:54:29 -07:00
xtensa [XTENSA] Remove non-rt signal handling 2007-05-31 17:49:32 -07:00