From: "Jérôme Pouiller" <jerome.pouiller@silabs.com>
To: linux-arm-kernel@lists.infradead.org
Cc: Marc Dorval <marc.dorval@silabs.com>,
Chen-Yu Tsai <wens@csie.org>, Maxime Ripard <mripard@kernel.org>
Subject: Possible race while masking IRQ on Allwinner A20
Date: Tue, 19 May 2020 10:59:26 +0200 [thread overview]
Message-ID: <11042983.UNsANRFJuY@pc-42> (raw)
Hello arm developers,
I have some trouble with integration of the wfx driver[1] on Allwinner
A20 platform.
The chip WF200 is connected to the SDIO bus. At the beginning, I tried
to use the IRQ provided by the SDIO bus. However, I have noticed I
received some IRQs twice. Since the IRQ line is multiplexed with the
data line, it is not very clear if it is a bug, or if the SDIO device
has to support that.
The chip WF200 allows to use a dedicated line for the IRQ (aka
"Out-Of-Band" IRQ). So I have enabled this feature with a edge triggered
IRQ. However, I missed some IRQs. Indeed, it seems that Allwinner use a
32KHz clock to sample the IRQs. It is not fast enough for us. I think it
explains why we miss some IRQs (using the attribute "input-debounce"[2],
I tried to enable the 24Mhz clock, but without success).
Nevermind, I tried to use a level triggered IRQ (and my request is on
this part). As you can see in the wfx driver (in bus_sdio.c and bh.c),
I use a threaded IRQ for that. Unfortunately, I receive some IRQs twice.
I traced the problem, I get:
QSGRenderThread-981 [000] d.h. 247.485524: irq_handler_entry: irq=80 name=wfx
QSGRenderThread-981 [000] d.h. 247.485547: irq_handler_exit: irq=80 ret=handled
QSGRenderThread-981 [000] d.h. 247.485600: irq_handler_entry: irq=80 name=wfx
QSGRenderThread-981 [000] d.h. 247.485606: irq_handler_exit: irq=80 ret=handled
irq/80-wfx-260 [001] .... 247.485828: io_read32: CONTROL: 0000f046
irq/80-wfx-260 [001] .... 247.486072: io_read32: CONTROL: 0000f046
kworker/1:1H-116 [001] .... 247.486214: io_read: QUEUE: 8b 00 84 18 00 00 00 00 01 00 15 82 2b 48 01 1e 88 42 30 00 08 6b d7 c3 53 e0 28 80 88 67 32 af ... (192 bytes)
kworker/1:1H-116 [001] .... 247.493097: io_read: QUEUE: 00 00 00 00 00 00 00 00 06 06 00 6a 3f 95 00 60 00 00 00 00 08 62 00 00 01 00 5e 00 00 07 28 80 ... (192 bytes)
[...]
On this trace, we can see:
- the hard IRQ handler
- the IRQ acknowledge from the thread irq/80-wfx-260
- the access to the data from kworker/1:1H-116
As far as I understand, the first call to the IRQ handler (at
247.485524) should mask the IRQ 80. So, the second IRQ (at 247.485600)
should not happen and the thread irq/80 should be triggered only once.
Do you have any idea of what is going wrong with this IRQ?
Thank you,
[1] available in drivers/staging/wfx of the staging-next branch of the
Greg KH's repository. Be sure you get the up-to-date version.
[2] see commit 7c926492d38a3feef4b4b29c91b7c03eb1b8b546 for detail about
the interactions between clock and debouncing.
--
Jérôme Pouiller
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2020-05-19 8:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 8:59 Jérôme Pouiller [this message]
2020-05-21 7:26 ` Possible race while masking IRQ on Allwinner A20 Maxime Ripard
2020-05-21 8:02 ` Marc Zyngier
2020-05-21 13:28 ` Jérôme Pouiller
2020-05-21 13:39 ` Marc Zyngier
2020-05-21 14:08 ` Jérôme Pouiller
2020-05-21 13:12 ` Jérôme Pouiller
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=11042983.UNsANRFJuY@pc-42 \
--to=jerome.pouiller@silabs.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.dorval@silabs.com \
--cc=mripard@kernel.org \
--cc=wens@csie.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.