From: yangyingliang@huawei•com (Yang Yingliang)
To: linux-arm-kernel@lists•infradead.org
Subject: A problem about SPI Interrupt Configuration
Date: Wed, 20 Jan 2016 10:38:13 +0800 [thread overview]
Message-ID: <569EF315.2060203@huawei.com> (raw)
Hi, Marc
I got some error messages "RWP timeout, gone fishing".
The case is :
CPU0 CPU1
acquire desc->lock in __setup_irq()
enable irq in __setup_irq()
read iar in gic_handle_irq()
waiting for desc->lock in handle_fasteoi_irq()
call gic_set_affinity() from setup_affinity()
waiting for the irq deactive in gic_do_wait_for_rwp()
The hardware will not clear GICD_CTLR.RWP until the interrupt is not
active. The interrupt is keeping active while it's waiting for
desc->lock on cpu0. But the lock is hold by cpu1 while it's waiting for
the interrupt is not active. It causes a deadlock here in 1s.
And the GICv3 SPEC says:
4.5.5 SPI Interrupt Configuration
To configure an SPI interrupt, to ensure that interrupts are never
distributed using partially updated configuration
information, software must:
o Ensure the interrupt is not active
o Ensure that the interrupt is disabled
o This might be done either by writing to GICD_CTLR to clear the enables
for a group, or
o By writing to GICD_ICENABLERn to clear the Enable bit of the interrupt
(see section 5.3.11).
o In both cases, software must poll GICD_CTLR.RWP to ensure the effects
are visible (see section
5.3.20).
o Program the routing (if appropriate), priority and group
o Enable the interrupt (if required)
Because it says "Ensure the interrupt is not active", so I can not tell
it is a hardware or software problem.
Can you please give some advice?
Thanks,
Yang
next reply other threads:[~2016-01-20 2:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-20 2:38 Yang Yingliang [this message]
2016-01-22 7:57 ` A problem about SPI Interrupt Configuration Marc Zyngier
2016-01-28 2:32 ` Yang Yingliang
2016-01-28 8:50 ` Marc Zyngier
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=569EF315.2060203@huawei.com \
--to=yangyingliang@huawei$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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