linux-stable/arch
Paul Mackerras f39224a8c1 powerpc: Use correct sequence for putting CPU into nap mode
We weren't using the recommended sequence for putting the CPU into
nap mode.  When I changed the idle loop, for some reason 7447A cpus
started hanging when we put them into nap mode.  Changing to the
recommended sequence fixes that.

The complexity here is that the recommended sequence is a loop that
keeps putting the cpu back into nap mode.  Clearly we need some way
to break out of the loop when an interrupt (external interrupt,
decrementer, performance monitor) occurs.  Here we use a bit in
the thread_info struct to indicate that we need this, and the exception
entry code notices this and arranges for the exception to return
to the value in the link register, thus breaking out of the loop.
We use a new `local_flags' field in the thread_info which we can
alter without needing to use an atomic update sequence.

The PPC970 has the same recommended sequence, so we do the same thing
there too.

This also fixes a bug in the kernel stack overflow handling code on
32-bit, since it was causing a value that we needed in a register to
get trashed.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-04-18 21:49:11 +10:00
..
alpha Manual merge with Linus. 2006-04-02 00:08:05 -05:00
arm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2006-04-02 13:34:00 -07:00
arm26 [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
cris [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
frv [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
h8300 [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
i386 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-04-02 12:58:45 -07:00
ia64 [IA64] Avoid "u64 foo : 32;" for gcc3 vs. gcc4 compatibility 2006-03-31 10:28:29 -08:00
m32r [PATCH] unify PFN_* macros 2006-03-27 08:44:48 -08:00
m68k [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
m68knommu [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
mips Manual merge with Linus. 2006-04-02 00:08:05 -05:00
parisc [PARISC] Enabled some NLS modules in a500, b180 and c3000 defconfigs 2006-03-30 17:48:58 +00:00
powerpc powerpc: Use correct sequence for putting CPU into nap mode 2006-04-18 21:49:11 +10:00
ppc [PATCH] ppc32: Fix string comparing in platform_notify_map 2006-04-13 09:30:19 -07:00
s390 [PATCH] for_each_possible_cpu: s390 2006-03-31 12:18:52 -08:00
sh [PATCH] Don't pass boot parameters to argv_init[] 2006-03-31 12:18:53 -08:00
sh64 [PATCH] RTC: Remove some duplicate BCD definitions 2006-03-28 09:16:01 -08:00
sparc [SPARC]: Wire up sys_sync_file_range() into syscall tables. 2006-03-31 23:49:34 -08:00
sparc64 [SPARC]: Wire up sys_sync_file_range() into syscall tables. 2006-03-31 23:49:34 -08:00
um [PATCH] uml: check for differences in host support 2006-03-31 12:18:52 -08:00
v850 [PATCH] bitops: v850: use generic bitops 2006-03-26 08:57:14 -08:00
x86_64 [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
xtensa [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00