From: Nathan Fontenot <nfont@linux.vnet.ibm.com>
To: Thomas Huth <thuth@redhat.com>,
linuxppc-dev@lists.ozlabs.org, mpe@ellerman.id.au
Cc: kvm-ppc@vger.kernel.org, anton@samba.org,
benh@kernel.crashing.org, paulus@samba.org
Subject: Re: [PATCH] powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers
Date: Mon, 20 Jul 2015 10:11:36 -0500 [thread overview]
Message-ID: <55AD0FA8.4070107@linux.vnet.ibm.com> (raw)
In-Reply-To: <1437130018-3430-1-git-send-email-thuth@redhat.com>
On 07/17/2015 05:46 AM, Thomas Huth wrote:
> The EPOW interrupt handler uses rtas_get_sensor(), which in turn
> uses rtas_busy_delay() to wait for RTAS becoming ready in case it
> is necessary. But rtas_busy_delay() is annotated with might_sleep()
> and thus may not be used by interrupts handlers like the EPOW handler!
> This leads to the following BUG when CONFIG_DEBUG_ATOMIC_SLEEP is
> enabled:
>
> BUG: sleeping function called from invalid context at arch/powerpc/kernel/rtas.c:496
> in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/1
> CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0-rc2-thuth #6
> Call Trace:
> [c00000007ffe7b90] [c000000000807670] dump_stack+0xa0/0xdc (unreliable)
> [c00000007ffe7bc0] [c0000000000e1f14] ___might_sleep+0x134/0x180
> [c00000007ffe7c20] [c00000000002aec0] rtas_busy_delay+0x30/0xd0
> [c00000007ffe7c50] [c00000000002bde4] rtas_get_sensor+0x74/0xe0
> [c00000007ffe7ce0] [c000000000083264] ras_epow_interrupt+0x44/0x450
> [c00000007ffe7d90] [c000000000120260] handle_irq_event_percpu+0xa0/0x300
> [c00000007ffe7e70] [c000000000120524] handle_irq_event+0x64/0xc0
> [c00000007ffe7eb0] [c000000000124dbc] handle_fasteoi_irq+0xec/0x260
> [c00000007ffe7ef0] [c00000000011f4f0] generic_handle_irq+0x50/0x80
> [c00000007ffe7f20] [c000000000010f3c] __do_irq+0x8c/0x200
> [c00000007ffe7f90] [c0000000000236cc] call_do_irq+0x14/0x24
> [c00000007e6f39e0] [c000000000011144] do_IRQ+0x94/0x110
> [c00000007e6f3a30] [c000000000002594] hardware_interrupt_common+0x114/0x180
>
> Fix this issue by introducing a new rtas_get_sensor_fast() function
> that does not use rtas_busy_delay() - and thus can only be used for
> sensors that do not cause a BUSY condition (which should be the case
> for the sensor that is queried by the EPOW IRQ handler).
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
> ---
> arch/powerpc/include/asm/rtas.h | 1 +
> arch/powerpc/kernel/rtas.c | 17 +++++++++++++++++
> arch/powerpc/platforms/pseries/ras.c | 3 ++-
> 3 files changed, 20 insertions(+), 1 deletion(-)
next prev parent reply other threads:[~2015-07-20 15:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-17 10:46 [PATCH] powerpc/rtas: Introduce rtas_get_sensor_fast() for IRQ handlers Thomas Huth
2015-07-20 15:11 ` Nathan Fontenot [this message]
2015-07-22 11:25 ` Michael Ellerman
2015-07-22 11:40 ` Thomas Huth
2015-07-29 12:13 ` [PATCH] " Thomas Huth
2015-08-03 1:35 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55AD0FA8.4070107@linux.vnet.ibm.com \
--to=nfont@linux.vnet.ibm.com \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).