linux-sg2042/arch/powerpc/platforms/pseries
Haren Myneni 81b73dd92b [POWERPC] Fix might-sleep warning on removing cpus
Noticing the following might_sleep warning (dump_stack()) during kdump
testing when CONFIG_DEBUG_SPINLOCK_SLEEP is enabled. All secondary CPUs
will be calling rtas_set_indicator with interrupts disabled to remove
them from global interrupt queue.

BUG: sleeping function called from invalid context at
arch/powerpc/kernel/rtas.c:463
in_atomic():1, irqs_disabled():1
Call Trace:
[C00000000FFFB970] [C000000000010234] .show_stack+0x68/0x1b0 (unreliable)
[C00000000FFFBA10] [C000000000059354] .__might_sleep+0xd8/0xf4
[C00000000FFFBA90] [C00000000001D1BC] .rtas_busy_delay+0x20/0x5c
[C00000000FFFBB20] [C00000000001D8A8] .rtas_set_indicator+0x6c/0xcc
[C00000000FFFBBC0] [C000000000048BF4] .xics_teardown_cpu+0x118/0x134
[C00000000FFFBC40] [C00000000004539C]
.pseries_kexec_cpu_down_xics+0x74/0x8c
[C00000000FFFBCC0] [C00000000002DF08] .crash_ipi_callback+0x15c/0x188
[C00000000FFFBD50] [C0000000000296EC] .smp_message_recv+0x84/0xdc
[C00000000FFFBDC0] [C000000000048E08] .xics_ipi_dispatch+0xf0/0x130
[C00000000FFFBE50] [C00000000009EF10] .handle_IRQ_event+0x7c/0xf8
[C00000000FFFBF00] [C0000000000A0A14] .handle_percpu_irq+0x90/0x10c
[C00000000FFFBF90] [C00000000002659C] .call_handle_irq+0x1c/0x2c
[C00000000058B9C0] [C00000000000CA10] .do_IRQ+0xf4/0x1a4
[C00000000058BA50] [C0000000000044EC] hardware_interrupt_entry+0xc/0x10
 --- Exception: 501 at .plpar_hcall_norets+0x14/0x1c
   LR = .pseries_dedicated_idle_sleep+0x190/0x1d4
[C00000000058BD40] [C00000000058BDE0] 0xc00000000058bde0 (unreliable)
[C00000000058BDF0] [C00000000001270C] .cpu_idle+0x10c/0x1e0
[C00000000058BE70] [C000000000009274] .rest_init+0x44/0x5c

To fix this issue, rtas_set_indicator_fast() is added so that will not
wait for RTAS 'busy' delay and this new function is used for kdump (in
xics_teardown_cpu()) and for CPU hotplug ( xics_migrate_irqs_away() and
xics_setup_cpu()).

Note that the platform architecture spec says that set-indicator
on the indicator we're using here is not permitted to return the
busy or extended busy status codes.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-08-08 16:00:11 +10:00
..
Kconfig powerpc: Disallow lparcfg being a module 2006-03-14 11:35:37 +11:00
Makefile [POWERPC] Optimise some TOC usage 2006-06-15 19:31:25 +10:00
eeh.c [PATCH] powerpc/pseries: bugfix: balance calls to pci_device_put 2006-04-13 09:34:15 -07:00
eeh_cache.c spelling fixes 2006-06-26 18:35:02 +02:00
eeh_driver.c typo fixes: occuring -> occurring 2006-06-30 18:27:16 +02:00
eeh_event.c [PATCH] spin/rwlock init cleanups 2006-06-27 17:32:39 -07:00
firmware.c [PATCH] powerpc: Rename and export ppc64_firmware_features 2006-03-28 16:45:20 +11:00
firmware.h [PATCH] powerpc: Move pSeries firmware feature setup into platforms/pseries 2006-02-10 16:52:03 +11:00
hvCall.S [PATCH] powerpc: Extends HCALL interface for InfiniBand usage 2006-04-01 22:37:00 +11:00
hvconsole.c [PATCH] powerpc/pseries: Change H_StudlyCaps to H_SHOUTING_CAPS 2006-04-01 22:36:57 +11:00
hvcserver.c [PATCH] powerpc/pseries: Change H_StudlyCaps to H_SHOUTING_CAPS 2006-04-01 22:36:57 +11:00
iommu.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
lpar.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
nvram.c powerpc: move pSeries files to arch/powerpc/platforms/pseries 2005-10-10 22:03:41 +10:00
pci.c [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
pci_dlpar.c [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
plpar_wrappers.h [PATCH] powerpc: Make ppc_md.set_dabr non 64-bit specific 2005-11-07 13:31:13 +11:00
ras.c [PATCH] powerpc: fix trigger handling in the new irq code 2006-07-10 13:24:20 -07:00
ras.h [PATCH] cell: enable pause(0) in cpu_idle 2006-01-09 15:44:32 +11:00
reconfig.c Merge ../linux-2.6 2006-03-29 13:24:50 +11:00
rtasd.c [PATCH] powerpc: Quiet rtasd output at boot 2006-04-22 18:46:07 +10:00
scanlog.c [POWERPC] RTAS delay, fix module build breaks 2006-06-21 15:01:27 +10:00
setup.c [POWERPC] fix PMU initialization on pseries lpar 2006-08-08 15:55:12 +10:00
smp.c [POWERPC] Add new interrupt mapping core and change platforms to use it 2006-07-03 21:36:01 +10:00
xics.c [POWERPC] Fix might-sleep warning on removing cpus 2006-08-08 16:00:11 +10:00
xics.h [POWERPC] Add new interrupt mapping core and change platforms to use it 2006-07-03 21:36:01 +10:00