From: Richard Fitzgerald <rf@opensource.cirrus.com>
To: <vkoul@kernel.org>, <yung-chuan.liao@linux.intel.com>,
<pierre-louis.bossart@linux.intel.com>, <sanyog.r.kale@intel.com>
Cc: <alsa-devel@alsa-project.org>, <linux-kernel@vger.kernel.org>,
<patches@opensource.cirrus.com>,
Richard Fitzgerald <rf@opensource.cirrus.com>
Subject: [PATCH v2 0/5] soundwire: Fixes for spurious and missing UNATTACH
Date: Wed, 7 Sep 2022 09:52:54 +0100 [thread overview]
Message-ID: <20220907085259.3602-1-rf@opensource.cirrus.com> (raw)
The bus and cadence code has several bugs that cause UNATTACH notifications
to either be sent spuriously or to be missed.
These can be seen occasionally with a single peripheral on the bus, but are
much more frequent with multiple peripherals, where several peripherals
could change state and report in consecutive PINGs.
The root of all of these bugs seems to be a code design flaw that assumed
every PING status change would be handled separately. However, PINGs are
handled by a workqueue function and there is no guarantee when that function
will be scheduled to run or how much CPU time it will receive. PINGs will
continue while the work function is handling a snapshot of a previous PING
so the code must take account that (a) status could change during the
work function and (b) there can be a backlog of changes before the IRQ work
function runs again.
Tested with 4 peripherals on 1 bus, and 8 peripherals on 2 buses.
CHANGES SINCE V1:
Patch #3 replaced with a better solution to the same bug.
Patches #4 and #5 added to fix some more bugs that were found.
Richard Fitzgerald (4):
soundwire: bus: Don't lose unattach notifications
soundwire: bus: Don't re-enumerate before status is UNATTACHED
soundwire: cadence: Fix lost ATTACHED interrupts when enumerating
soundwire: bus: Don't exit early if no device IDs were programmed
Simon Trimmer (1):
soundwire: cadence: fix updating slave status when a bus has multiple
peripherals
drivers/soundwire/bus.c | 40 +++++++++++-----
drivers/soundwire/cadence_master.c | 75 ++++++++++++++++--------------
2 files changed, 68 insertions(+), 47 deletions(-)
--
2.30.2
next reply other threads:[~2022-09-07 8:53 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-07 8:52 Richard Fitzgerald [this message]
2022-09-07 8:52 ` [PATCH v2 1/5] soundwire: cadence: fix updating slave status when a bus has multiple peripherals Richard Fitzgerald
2022-09-07 8:52 ` [PATCH v2 2/5] soundwire: bus: Don't lose unattach notifications Richard Fitzgerald
2022-09-07 8:52 ` [PATCH v2 3/5] soundwire: bus: Don't re-enumerate before status is UNATTACHED Richard Fitzgerald
2022-09-12 11:00 ` Pierre-Louis Bossart
2022-09-07 8:52 ` [PATCH v2 4/5] soundwire: cadence: Fix lost ATTACHED interrupts when enumerating Richard Fitzgerald
2022-09-12 11:05 ` Pierre-Louis Bossart
2022-09-12 12:36 ` Richard Fitzgerald
2022-09-07 8:52 ` [PATCH v2 5/5] soundwire: bus: Don't exit early if no device IDs were programmed Richard Fitzgerald
2022-09-12 11:43 ` Pierre-Louis Bossart
2022-09-12 12:25 ` Richard Fitzgerald
2022-09-12 17:09 ` Pierre-Louis Bossart
2022-09-13 15:30 ` Richard Fitzgerald
2022-09-13 17:59 ` Pierre-Louis Bossart
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=20220907085259.3602-1-rf@opensource.cirrus.com \
--to=rf@opensource.cirrus.com \
--cc=alsa-devel@alsa-project.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@opensource.cirrus.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=sanyog.r.kale@intel.com \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.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