From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752993AbdDDIe7 (ORCPT ); Tue, 4 Apr 2017 04:34:59 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:41339 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751101AbdDDIdQ (ORCPT ); Tue, 4 Apr 2017 04:33:16 -0400 From: Lionel DEBIEVE To: Lee Jones , Sebastian Andrzej Siewior CC: Steven Rostedt , Jassi Brar , "linux-rt-users@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "tglx@linutronix.de" Subject: Re: [PATCH RT 1/1] remoteproc: Prevent schedule while atomic Thread-Topic: [PATCH RT 1/1] remoteproc: Prevent schedule while atomic Thread-Index: AQHSrR4UCiN9YjAkf0mcPB8te5fUYA== Date: Tue, 4 Apr 2017 08:33:05 +0000 Message-ID: <816a6cc4-bcd6-f2ad-d49c-26ec0f38a60a@st.com> References: <1490195923-9560-1-git-send-email-lionel.debieve@st.com> <20170322090558.72064144@vmware.local.home> <20170329160653.5fcyqiuxr7j36655@linutronix.de> <20170330075458.l2rofpy75fhzcgwn@dell> In-Reply-To: <20170330075458.l2rofpy75fhzcgwn@dell> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.48] Content-Type: text/plain; charset="utf-8" Content-ID: <84E390FC902774429A3D2E7F1628C028@st.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-04-04_07:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id v348eQxt025199 Hi, Looking at the thread discussion, except architecture discussion around the IRQF_ONESHOT, I think it could go to upstream too. I'll re-upload patch for upstream. Thanks for reviewing. BR, Lionel On 03/30/2017 09:54 AM, Lee Jones wrote: > On Wed, 29 Mar 2017, Sebastian Andrzej Siewior wrote: > >> On 2017-03-22 09:05:58 [-0700], Steven Rostedt wrote: >>> On Wed, 22 Mar 2017 16:18:43 +0100 >>> Lionel Debieve wrote: >>> >>>> Use raw_spin_lock in enable/disable channel as it comes from >>>> interrupt context. >>>> >>>> BUG: sleeping function called from invalid context at >>>> kernel/locking/rtmutex.c:995 >>>> in_atomic(): 1, irqs_disabled(): 128, pid: 307, name: pulseaudio >>>> Preemption disabled at: >>>> [] __handle_domain_irq+0x4c/0xec >>>> CPU: 0 PID: 307 Comm: pulseaudio >>>> Hardware name: STi SoC with Flattened Device Tree >>>> [] (unwind_backtrace) >>>> [] (show_stack) >>>> [] (dump_stack) >>>> [] (___might_sleep) >>>> [] (rt_spin_lock) >>>> [] (sti_mbox_disable_channel) >>>> [] (sti_mbox_irq_handler) >>>> [] (__handle_irq_event_percpu) >>>> [] (handle_irq_event_percpu) >>>> [] (handle_irq_event) >>>> [] (handle_fasteoi_irq) >>>> [] (generic_handle_irq) >>>> [] (__handle_domain_irq) >>>> [] (gic_handle_irq) >>>> >>>> Signed-off-by: Lionel Debieve >>> Looks fine to me. Should this go to mainline? >>> >>> Acked-by: Steven Rostedt (VMware) >> Could this be applied upstream, please? From looking at the thread there >> was no reason not to do so. > Acked-by: Lee Jones > >>>> --- >>>> drivers/mailbox/mailbox-sti.c | 12 ++++++------ >>>> 1 file changed, 6 insertions(+), 6 deletions(-) >>>> >>>> diff --git a/drivers/mailbox/mailbox-sti.c >>>> b/drivers/mailbox/mailbox-sti.c index 41bcd33..f9674ca 100644 >>>> --- a/drivers/mailbox/mailbox-sti.c >>>> +++ b/drivers/mailbox/mailbox-sti.c >>>> @@ -60,7 +60,7 @@ struct sti_mbox_device { >>>> void __iomem *base; >>>> const char *name; >>>> u32 enabled[STI_MBOX_INST_MAX]; >>>> - spinlock_t lock; >>>> + raw_spinlock_t lock; >>>> }; >>>> >>>> /** >>>> @@ -129,10 +129,10 @@ static void sti_mbox_enable_channel(struct >>>> mbox_chan *chan) unsigned long flags; >>>> void __iomem *base = MBOX_BASE(mdev, instance); >>>> >>>> - spin_lock_irqsave(&mdev->lock, flags); >>>> + raw_spin_lock_irqsave(&mdev->lock, flags); >>>> mdev->enabled[instance] |= BIT(channel); >>>> writel_relaxed(BIT(channel), base + STI_ENA_SET_OFFSET); >>>> - spin_unlock_irqrestore(&mdev->lock, flags); >>>> + raw_spin_unlock_irqrestore(&mdev->lock, flags); >>>> } >>>> >>>> static void sti_mbox_disable_channel(struct mbox_chan *chan) >>>> @@ -144,10 +144,10 @@ static void sti_mbox_disable_channel(struct >>>> mbox_chan *chan) unsigned long flags; >>>> void __iomem *base = MBOX_BASE(mdev, instance); >>>> >>>> - spin_lock_irqsave(&mdev->lock, flags); >>>> + raw_spin_lock_irqsave(&mdev->lock, flags); >>>> mdev->enabled[instance] &= ~BIT(channel); >>>> writel_relaxed(BIT(channel), base + STI_ENA_CLR_OFFSET); >>>> - spin_unlock_irqrestore(&mdev->lock, flags); >>>> + raw_spin_unlock_irqrestore(&mdev->lock, flags); >>>> } >>>> >>>> static void sti_mbox_clear_irq(struct mbox_chan *chan) >>>> @@ -450,7 +450,7 @@ static int sti_mbox_probe(struct platform_device >>>> *pdev) mdev->dev = &pdev->dev; >>>> mdev->mbox = mbox; >>>> >>>> - spin_lock_init(&mdev->lock); >>>> + raw_spin_lock_init(&mdev->lock); >>>> >>>> /* STi Mailbox does not have a Tx-Done or Tx-Ready IRQ */ >>>> mbox->txdone_irq = false; >> Sebastian