[PATCH] Add rtas_set_indicator_fast() for RTAS call without extended delay

Haren Myneni haren at us.ibm.com
Fri Jul 28 07:29:00 EST 2006


Nathan Lynch wrote:

>Looks fine to me from a quick look, but we need to use
>rtas_set_indicator_fast in xics_setup_cpu as well (I think I neglected
>to mention I saw the warning in the cpu up path, sorry).
>
>  
>
Posting the modified patch based on Nathan's comment - using 
rtas_set_indicator_fast() in xics_setup_cpu(). If Ok, please send it to 
upstream.

Thanks
Haren

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()).

Signed-off-by: Haren Myneni <haren at us.ibm.com>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ppc64-add-rtas-set-indicator-fast.patch
Type: text/x-patch
Size: 2754 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20060727/1078e3e6/attachment.bin>


More information about the Linuxppc-dev mailing list