public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Charles Keepax <ckeepax@opensource.cirrus.com>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
	patches@opensource.cirrus.com
Subject: [PATCH AUTOSEL 4.14 07/32] ASoC: wm_adsp: Add locking to wm_adsp2_bus_error
Date: Fri, 26 Apr 2019 21:41:58 -0400	[thread overview]
Message-ID: <20190427014224.8274-7-sashal@kernel.org> (raw)
In-Reply-To: <20190427014224.8274-1-sashal@kernel.org>

From: Charles Keepax <ckeepax@opensource.cirrus.com>

[ Upstream commit a2225a6d155fcb247fe4c6d87f7c91807462966d ]

Best to lock across handling the bus error to ensure the DSP doesn't
change power state as we are reading the status registers.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/codecs/wm_adsp.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index 67330b6ab204..d632a0511d62 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -3711,11 +3711,13 @@ irqreturn_t wm_adsp2_bus_error(struct wm_adsp *dsp)
 	struct regmap *regmap = dsp->regmap;
 	int ret = 0;
 
+	mutex_lock(&dsp->pwr_lock);
+
 	ret = regmap_read(regmap, dsp->base + ADSP2_LOCK_REGION_CTRL, &val);
 	if (ret) {
 		adsp_err(dsp,
 			"Failed to read Region Lock Ctrl register: %d\n", ret);
-		return IRQ_HANDLED;
+		goto error;
 	}
 
 	if (val & ADSP2_WDT_TIMEOUT_STS_MASK) {
@@ -3734,7 +3736,7 @@ irqreturn_t wm_adsp2_bus_error(struct wm_adsp *dsp)
 			adsp_err(dsp,
 				 "Failed to read Bus Err Addr register: %d\n",
 				 ret);
-			return IRQ_HANDLED;
+			goto error;
 		}
 
 		adsp_err(dsp, "bus error address = 0x%x\n",
@@ -3747,7 +3749,7 @@ irqreturn_t wm_adsp2_bus_error(struct wm_adsp *dsp)
 			adsp_err(dsp,
 				 "Failed to read Pmem Xmem Err Addr register: %d\n",
 				 ret);
-			return IRQ_HANDLED;
+			goto error;
 		}
 
 		adsp_err(dsp, "xmem error address = 0x%x\n",
@@ -3760,6 +3762,9 @@ irqreturn_t wm_adsp2_bus_error(struct wm_adsp *dsp)
 	regmap_update_bits(regmap, dsp->base + ADSP2_LOCK_REGION_CTRL,
 			   ADSP2_CTRL_ERR_EINT, ADSP2_CTRL_ERR_EINT);
 
+error:
+	mutex_unlock(&dsp->pwr_lock);
+
 	return IRQ_HANDLED;
 }
 EXPORT_SYMBOL_GPL(wm_adsp2_bus_error);
-- 
2.19.1


  parent reply	other threads:[~2019-04-27  1:47 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-27  1:41 [PATCH AUTOSEL 4.14 01/32] ASoC: hdmi-codec: fix S/PDIF DAI Sasha Levin
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 02/32] ASoC: ab8500: Mark expected switch fall-through Sasha Levin
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 03/32] ASoC:soc-pcm:fix a codec fixup issue in TDM case Sasha Levin
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 04/32] ASoC: nau8824: fix the issue of the widget with prefix name Sasha Levin
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 05/32] ASoC: nau8810: fix the issue of widget with prefixed name Sasha Levin
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 06/32] ASoC: samsung: odroid: Fix clock configuration for 44100 sample rate Sasha Levin
2019-04-27  1:41 ` Sasha Levin [this message]
2019-04-27  1:41 ` [PATCH AUTOSEL 4.14 08/32] ASoC: cs4270: Set auto-increment bit for register writes Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 09/32] IB/hfi1: Eliminate opcode tests on mr deref Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 10/32] MIPS: KGDB: fix kgdb support for SMP platforms Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 11/32] ASoC: tlv320aic32x4: Fix Common Pins Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 12/32] drm/mediatek: Fix an error code in mtk_hdmi_dt_parse_pdata() Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 13/32] perf/x86/intel: Fix handling of wakeup_events for multi-entry PEBS Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 14/32] perf/x86/intel: Initialize TFA MSR Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 15/32] linux/kernel.h: Use parentheses around argument in u64_to_user_ptr() Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 16/32] xtensa: fix initialization of pt_regs::syscall in start_thread Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 17/32] ASoC: rockchip: pdm: fix regmap_ops hang issue Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 18/32] slab: fix a crash by reading /proc/slab_allocators Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 19/32] ASoC: stm32: fix sai driver name initialisation Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 20/32] virtio_pci: fix a NULL pointer reference in vp_del_vqs Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 21/32] RDMA/vmw_pvrdma: Fix memory leak on pvrdma_pci_remove Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 22/32] scsi: csiostor: fix missing data copy in csio_scsi_err_handler() Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 23/32] drm/mediatek: fix possible object reference leak Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 24/32] Bluetooth: btusb: request wake pin with NOAUTOEN Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 25/32] ASoC: Intel: kbl: fix wrong number of channels Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 26/32] virtio-blk: limit number of hw queues by nr_cpu_ids Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 27/32] clk: x86: Add system specific quirk to mark clocks as critical Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 28/32] platform/x86: pmc_atom: Drop __initconst on dmi table Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 29/32] NFS: Forbid setting AF_INET6 to "struct sockaddr_in"->sin_family Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 30/32] iommu/amd: Set exclusion range correctly Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 31/32] mm: make page ref count overflow check tighter and more explicit Sasha Levin
2019-04-27  1:42 ` [PATCH AUTOSEL 4.14 32/32] mm: add 'try_get_page()' helper function Sasha Levin

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=20190427014224.8274-7-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@opensource.cirrus.com \
    --cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox