From 6d8af0b06d8b6cf1655ef422cda82526737038d7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 1 Aug 2023 08:21:29 +0200 Subject: [PATCH] 5.10-stable patches added patches: asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch s390-dasd-fix-hanging-device-after-quiesce-resume.patch --- ...cache-for-wm8904_adc_test_0-register.patch | 40 +++++++++++++++++ ...-hanging-device-after-quiesce-resume.patch | 44 +++++++++++++++++++ queue-5.10/series | 2 + 3 files changed, 86 insertions(+) create mode 100644 queue-5.10/asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch create mode 100644 queue-5.10/s390-dasd-fix-hanging-device-after-quiesce-resume.patch diff --git a/queue-5.10/asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch b/queue-5.10/asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch new file mode 100644 index 00000000000..b43f55d6425 --- /dev/null +++ b/queue-5.10/asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch @@ -0,0 +1,40 @@ +From f061e2be8689057cb4ec0dbffa9f03e1a23cdcb2 Mon Sep 17 00:00:00 2001 +From: Mark Brown +Date: Sun, 23 Jul 2023 00:27:22 +0100 +Subject: ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register + +From: Mark Brown + +commit f061e2be8689057cb4ec0dbffa9f03e1a23cdcb2 upstream. + +The WM8904_ADC_TEST_0 register is modified as part of updating the OSR +controls but does not have a cache default, leading to errors when we try +to modify these controls in cache only mode with no prior read: + +wm8904 3-001a: ASoC: error at snd_soc_component_update_bits on wm8904.3-001a for register: [0x000000c6] -16 + +Add a read of the register to probe() to fill the cache and avoid both the +error messages and the misconfiguration of the chip which will result. + +Acked-by: Charles Keepax +Signed-off-by: Mark Brown +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20230723-asoc-fix-wm8904-adc-test-read-v1-1-2cdf2edd83fd@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/wm8904.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/sound/soc/codecs/wm8904.c ++++ b/sound/soc/codecs/wm8904.c +@@ -2306,6 +2306,9 @@ static int wm8904_i2c_probe(struct i2c_c + regmap_update_bits(wm8904->regmap, WM8904_BIAS_CONTROL_0, + WM8904_POBCTRL, 0); + ++ /* Fill the cache for the ADC test register */ ++ regmap_read(wm8904->regmap, WM8904_ADC_TEST_0, &val); ++ + /* Can leave the device powered off until we need it */ + regcache_cache_only(wm8904->regmap, true); + regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies); diff --git a/queue-5.10/s390-dasd-fix-hanging-device-after-quiesce-resume.patch b/queue-5.10/s390-dasd-fix-hanging-device-after-quiesce-resume.patch new file mode 100644 index 00000000000..78409ac5627 --- /dev/null +++ b/queue-5.10/s390-dasd-fix-hanging-device-after-quiesce-resume.patch @@ -0,0 +1,44 @@ +From 05f1d8ed03f547054efbc4d29bb7991c958ede95 Mon Sep 17 00:00:00 2001 +From: Stefan Haberland +Date: Fri, 21 Jul 2023 21:36:44 +0200 +Subject: s390/dasd: fix hanging device after quiesce/resume + +From: Stefan Haberland + +commit 05f1d8ed03f547054efbc4d29bb7991c958ede95 upstream. + +Quiesce and resume are functions that tell the DASD driver to stop/resume +issuing I/Os to a specific DASD. + +On resume dasd_schedule_block_bh() is called to kick handling of IO +requests again. This does unfortunately not cover internal requests which +are used for path verification for example. + +This could lead to a hanging device when a path event or anything else +that triggers internal requests occurs on a quiesced device. + +Fix by also calling dasd_schedule_device_bh() which triggers handling of +internal requests on resume. + +Fixes: 8e09f21574ea ("[S390] dasd: add hyper PAV support to DASD device driver, part 1") + +Cc: stable@vger.kernel.org +Signed-off-by: Stefan Haberland +Reviewed-by: Jan Hoeppner +Link: https://lore.kernel.org/r/20230721193647.3889634-2-sth@linux.ibm.com +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman +--- + drivers/s390/block/dasd_ioctl.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/s390/block/dasd_ioctl.c ++++ b/drivers/s390/block/dasd_ioctl.c +@@ -133,6 +133,7 @@ static int dasd_ioctl_resume(struct dasd + spin_unlock_irqrestore(get_ccwdev_lock(base->cdev), flags); + + dasd_schedule_block_bh(block); ++ dasd_schedule_device_bh(base); + return 0; + } + diff --git a/queue-5.10/series b/queue-5.10/series index ded087e7878..2515d3058a7 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -99,3 +99,5 @@ staging-rtl8712-use-constants-from-linux-ieee80211.h.patch staging-r8712-fix-memory-leak-in-_r8712_init_xmit_pr.patch btrfs-check-if-the-transaction-was-aborted-at-btrfs_.patch virtio-net-fix-race-between-set-queues-and-probe.patch +s390-dasd-fix-hanging-device-after-quiesce-resume.patch +asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch -- 2.47.3