From: Greg Kroah-Hartman Date: Wed, 25 Sep 2019 05:06:41 +0000 (+0200) Subject: 5.3-stable patches X-Git-Tag: v5.3.2~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cab4513862fa502ce9dcc0ad6bd77c2d1786246b;p=thirdparty%2Fkernel%2Fstable-queue.git 5.3-stable patches added patches: alsa-dice-fix-wrong-packet-parameter-for-alesis-io26.patch alsa-hda-add-laptop-imic-fixup-for-asus-m9v-laptop.patch alsa-hda-apply-amd-controller-workaround-for-raven-platform.patch alsa-usb-audio-add-dsd-support-for-evga-nu-audio.patch alsa-usb-audio-add-hiby-device-family-to-quirks-for-native-dsd-support.patch platform-x86-i2c-multi-instantiate-derive-the-device-name-from-parent.patch revert-mm-z3fold.c-fix-race-between-migration-and-destruction.patch --- diff --git a/queue-5.3/alsa-dice-fix-wrong-packet-parameter-for-alesis-io26.patch b/queue-5.3/alsa-dice-fix-wrong-packet-parameter-for-alesis-io26.patch new file mode 100644 index 00000000000..bdb4aed8d3c --- /dev/null +++ b/queue-5.3/alsa-dice-fix-wrong-packet-parameter-for-alesis-io26.patch @@ -0,0 +1,46 @@ +From 3a9236e97207f2469254b4098995159b80174d95 Mon Sep 17 00:00:00 2001 +From: Takashi Sakamoto +Date: Mon, 16 Sep 2019 19:18:51 +0900 +Subject: ALSA: dice: fix wrong packet parameter for Alesis iO26 + +From: Takashi Sakamoto + +commit 3a9236e97207f2469254b4098995159b80174d95 upstream. + +At higher sampling rate (e.g. 192.0 kHz), Alesis iO26 transfers 4 data +channels per data block in CIP. + +Both iO14 and iO26 have the same contents in their configuration ROM. +For this reason, ALSA Dice driver attempts to distinguish them according +to the value of TX0_AUDIO register at probe callback. Although the way is +valid at lower and middle sampling rate, it's lastly invalid at higher +sampling rate because because the two models returns the same value for +read transaction to the register. + +In the most cases, users just plug-in the device and ALSA dice driver +detects it. In the case, the device runs at lower sampling rate and +the driver detects expectedly. For this reason, this commit leaves the +way to detect as is. + +Fixes: 28b208f600a3 ("ALSA: dice: add parameters of stream formats for models produced by Alesis") +Cc: # v4.18+ +Signed-off-by: Takashi Sakamoto +Link: https://lore.kernel.org/r/20190916101851.30409-1-o-takashi@sakamocchi.jp +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/firewire/dice/dice-alesis.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/firewire/dice/dice-alesis.c ++++ b/sound/firewire/dice/dice-alesis.c +@@ -15,7 +15,7 @@ alesis_io14_tx_pcm_chs[MAX_STREAMS][SND_ + + static const unsigned int + alesis_io26_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = { +- {10, 10, 8}, /* Tx0 = Analog + S/PDIF. */ ++ {10, 10, 4}, /* Tx0 = Analog + S/PDIF. */ + {16, 8, 0}, /* Tx1 = ADAT1 + ADAT2. */ + }; + diff --git a/queue-5.3/alsa-hda-add-laptop-imic-fixup-for-asus-m9v-laptop.patch b/queue-5.3/alsa-hda-add-laptop-imic-fixup-for-asus-m9v-laptop.patch new file mode 100644 index 00000000000..1a39cacfaf2 --- /dev/null +++ b/queue-5.3/alsa-hda-add-laptop-imic-fixup-for-asus-m9v-laptop.patch @@ -0,0 +1,32 @@ +From 7b485d175631be676424aedb8cd2f66d0c93da78 Mon Sep 17 00:00:00 2001 +From: "Shih-Yuan Lee (FourDollars)" +Date: Fri, 20 Sep 2019 21:40:53 +0800 +Subject: ALSA: hda - Add laptop imic fixup for ASUS M9V laptop + +From: Shih-Yuan Lee (FourDollars) + +commit 7b485d175631be676424aedb8cd2f66d0c93da78 upstream. + +The same fixup to enable laptop imic is needed for ASUS M9V with AD1986A +codec like another HP machine. + +Signed-off-by: Shih-Yuan Lee (FourDollars) +Cc: +Link: https://lore.kernel.org/r/20190920134052.GA8035@localhost +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_analog.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_analog.c ++++ b/sound/pci/hda/patch_analog.c +@@ -357,6 +357,7 @@ static const struct hda_fixup ad1986a_fi + + static const struct snd_pci_quirk ad1986a_fixup_tbl[] = { + SND_PCI_QUIRK(0x103c, 0x30af, "HP B2800", AD1986A_FIXUP_LAPTOP_IMIC), ++ SND_PCI_QUIRK(0x1043, 0x1153, "ASUS M9V", AD1986A_FIXUP_LAPTOP_IMIC), + SND_PCI_QUIRK(0x1043, 0x1443, "ASUS Z99He", AD1986A_FIXUP_EAPD), + SND_PCI_QUIRK(0x1043, 0x1447, "ASUS A8JN", AD1986A_FIXUP_EAPD), + SND_PCI_QUIRK_MASK(0x1043, 0xff00, 0x8100, "ASUS P5", AD1986A_FIXUP_3STACK), diff --git a/queue-5.3/alsa-hda-apply-amd-controller-workaround-for-raven-platform.patch b/queue-5.3/alsa-hda-apply-amd-controller-workaround-for-raven-platform.patch new file mode 100644 index 00000000000..00b197c2063 --- /dev/null +++ b/queue-5.3/alsa-hda-apply-amd-controller-workaround-for-raven-platform.patch @@ -0,0 +1,37 @@ +From d2c63b7dfd06788a466d5ec8a850491f084c5fc2 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 20 Sep 2019 09:30:40 +0200 +Subject: ALSA: hda - Apply AMD controller workaround for Raven platform + +From: Takashi Iwai + +commit d2c63b7dfd06788a466d5ec8a850491f084c5fc2 upstream. + +It's reported that the garbled sound on HP Envy x360 13z-ag000 (Ryzen +Laptop) is fixed by the same workaround applied to other AMD chips. +Update the driver_data entry for Raven (1022:15e3) to use the newly +introduced preset, AZX_DCAPS_PRESET_AMD_SB. Since it already contains +AZX_DCAPS_PM_RUNTIME, we can drop that bit, too. + +Reported-and-tested-by: Dennis Padiernos +Cc: +Link: https://lore.kernel.org/r/20190920073040.31764-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_intel.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -2517,8 +2517,7 @@ static const struct pci_device_id azx_id + AZX_DCAPS_PM_RUNTIME }, + /* AMD Raven */ + { PCI_DEVICE(0x1022, 0x15e3), +- .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB | +- AZX_DCAPS_PM_RUNTIME }, ++ .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_AMD_SB }, + /* ATI HDMI */ + { PCI_DEVICE(0x1002, 0x0002), + .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS }, diff --git a/queue-5.3/alsa-usb-audio-add-dsd-support-for-evga-nu-audio.patch b/queue-5.3/alsa-usb-audio-add-dsd-support-for-evga-nu-audio.patch new file mode 100644 index 00000000000..35603f63af9 --- /dev/null +++ b/queue-5.3/alsa-usb-audio-add-dsd-support-for-evga-nu-audio.patch @@ -0,0 +1,32 @@ +From f41f900568d9ffd896cc941db7021eb14bd55910 Mon Sep 17 00:00:00 2001 +From: Jussi Laako +Date: Tue, 24 Sep 2019 10:11:43 +0300 +Subject: ALSA: usb-audio: Add DSD support for EVGA NU Audio + +From: Jussi Laako + +commit f41f900568d9ffd896cc941db7021eb14bd55910 upstream. + +EVGA NU Audio is actually a USB audio device on a PCIexpress card, +with it's own USB controller. It supports both PCM and DSD. + +Signed-off-by: Jussi Laako +Cc: +Link: https://lore.kernel.org/r/20190924071143.30911-1-jussi@sonarnerd.net +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/quirks.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/usb/quirks.c ++++ b/sound/usb/quirks.c +@@ -1655,6 +1655,7 @@ u64 snd_usb_interface_dsd_format_quirks( + case 0x152a: /* Thesycon devices */ + case 0x25ce: /* Mytek devices */ + case 0x2ab6: /* T+A devices */ ++ case 0x3842: /* EVGA */ + case 0xc502: /* HiBy devices */ + if (fp->dsd_raw) + return SNDRV_PCM_FMTBIT_DSD_U32_BE; diff --git a/queue-5.3/alsa-usb-audio-add-hiby-device-family-to-quirks-for-native-dsd-support.patch b/queue-5.3/alsa-usb-audio-add-hiby-device-family-to-quirks-for-native-dsd-support.patch new file mode 100644 index 00000000000..eb28579f31c --- /dev/null +++ b/queue-5.3/alsa-usb-audio-add-hiby-device-family-to-quirks-for-native-dsd-support.patch @@ -0,0 +1,32 @@ +From 029d2c0fd61eac74700fb4ffff36fc63bfff7e5e Mon Sep 17 00:00:00 2001 +From: Ilya Pshonkin +Date: Tue, 17 Sep 2019 10:49:34 +0300 +Subject: ALSA: usb-audio: Add Hiby device family to quirks for native DSD support + +From: Ilya Pshonkin + +commit 029d2c0fd61eac74700fb4ffff36fc63bfff7e5e upstream. + +This patch adds quirk VID ID for Hiby portable players family with +native DSD playback support. + +Signed-off-by: Ilya Pshonkin +Cc: +Link: https://lore.kernel.org/r/20190917074937.157802-1-ilya.pshonkin@netforce.ua +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/quirks.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/usb/quirks.c ++++ b/sound/usb/quirks.c +@@ -1655,6 +1655,7 @@ u64 snd_usb_interface_dsd_format_quirks( + case 0x152a: /* Thesycon devices */ + case 0x25ce: /* Mytek devices */ + case 0x2ab6: /* T+A devices */ ++ case 0xc502: /* HiBy devices */ + if (fp->dsd_raw) + return SNDRV_PCM_FMTBIT_DSD_U32_BE; + break; diff --git a/queue-5.3/platform-x86-i2c-multi-instantiate-derive-the-device-name-from-parent.patch b/queue-5.3/platform-x86-i2c-multi-instantiate-derive-the-device-name-from-parent.patch new file mode 100644 index 00000000000..dbbb93d324f --- /dev/null +++ b/queue-5.3/platform-x86-i2c-multi-instantiate-derive-the-device-name-from-parent.patch @@ -0,0 +1,41 @@ +From 24a8d78a9affb63e5ced313ccde6888fe96edc6e Mon Sep 17 00:00:00 2001 +From: Heikki Krogerus +Date: Fri, 20 Sep 2019 13:02:33 +0300 +Subject: platform/x86: i2c-multi-instantiate: Derive the device name from parent + +From: Heikki Krogerus + +commit 24a8d78a9affb63e5ced313ccde6888fe96edc6e upstream. + +When naming the new devices, instead of using the ACPI ID in +the name as base, using the parent device's name. That makes +it possible to support multiple multi-instance i2c devices +of the same type in the same system. + +This fixes an issue seen on some Intel Kaby Lake based +boards: + +sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-INT3515-tps6598x.0' + +Fixes: 2336dfadfb1e ("platform/x86: i2c-multi-instantiate: Allow to have same slaves") +Cc: stable@vger.kernel.org +Signed-off-by: Heikki Krogerus +Reviewed-by: Hans de Goede +Signed-off-by: Andy Shevchenko +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/i2c-multi-instantiate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/platform/x86/i2c-multi-instantiate.c ++++ b/drivers/platform/x86/i2c-multi-instantiate.c +@@ -92,7 +92,7 @@ static int i2c_multi_inst_probe(struct p + for (i = 0; i < multi->num_clients && inst_data[i].type; i++) { + memset(&board_info, 0, sizeof(board_info)); + strlcpy(board_info.type, inst_data[i].type, I2C_NAME_SIZE); +- snprintf(name, sizeof(name), "%s-%s.%d", match->id, ++ snprintf(name, sizeof(name), "%s-%s.%d", dev_name(dev), + inst_data[i].type, i); + board_info.dev_name = name; + switch (inst_data[i].flags & IRQ_RESOURCE_TYPE) { diff --git a/queue-5.3/revert-mm-z3fold.c-fix-race-between-migration-and-destruction.patch b/queue-5.3/revert-mm-z3fold.c-fix-race-between-migration-and-destruction.patch new file mode 100644 index 00000000000..22a528eda9c --- /dev/null +++ b/queue-5.3/revert-mm-z3fold.c-fix-race-between-migration-and-destruction.patch @@ -0,0 +1,203 @@ +From 6e73fd25e2c7510b7dfadbaf701f31d4bff9c75b Mon Sep 17 00:00:00 2001 +From: Vitaly Wool +Date: Mon, 23 Sep 2019 15:32:56 -0700 +Subject: Revert "mm/z3fold.c: fix race between migration and destruction" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Vitaly Wool + +commit 6e73fd25e2c7510b7dfadbaf701f31d4bff9c75b upstream. + +With the original commit applied, z3fold_zpool_destroy() may get blocked +on wait_event() for indefinite time. Revert this commit for the time +being to get rid of this problem since the issue the original commit +addresses is less severe. + +Link: http://lkml.kernel.org/r/20190910123142.7a9c8d2de4d0acbc0977c602@gmail.com +Fixes: d776aaa9895eb6eb77 ("mm/z3fold.c: fix race between migration and destruction") +Reported-by: Agustín Dall'Alba +Signed-off-by: Vitaly Wool +Cc: Vlastimil Babka +Cc: Vitaly Wool +Cc: Shakeel Butt +Cc: Jonathan Adams +Cc: Henry Burns +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + mm/z3fold.c | 90 ------------------------------------------------------------ + 1 file changed, 90 deletions(-) + +--- a/mm/z3fold.c ++++ b/mm/z3fold.c +@@ -41,7 +41,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -146,8 +145,6 @@ struct z3fold_header { + * @release_wq: workqueue for safe page release + * @work: work_struct for safe page release + * @inode: inode for z3fold pseudo filesystem +- * @destroying: bool to stop migration once we start destruction +- * @isolated: int to count the number of pages currently in isolation + * + * This structure is allocated at pool creation time and maintains metadata + * pertaining to a particular z3fold pool. +@@ -166,11 +163,8 @@ struct z3fold_pool { + const struct zpool_ops *zpool_ops; + struct workqueue_struct *compact_wq; + struct workqueue_struct *release_wq; +- struct wait_queue_head isolate_wait; + struct work_struct work; + struct inode *inode; +- bool destroying; +- int isolated; + }; + + /* +@@ -775,7 +769,6 @@ static struct z3fold_pool *z3fold_create + goto out_c; + spin_lock_init(&pool->lock); + spin_lock_init(&pool->stale_lock); +- init_waitqueue_head(&pool->isolate_wait); + pool->unbuddied = __alloc_percpu(sizeof(struct list_head)*NCHUNKS, 2); + if (!pool->unbuddied) + goto out_pool; +@@ -815,15 +808,6 @@ out: + return NULL; + } + +-static bool pool_isolated_are_drained(struct z3fold_pool *pool) +-{ +- bool ret; +- +- spin_lock(&pool->lock); +- ret = pool->isolated == 0; +- spin_unlock(&pool->lock); +- return ret; +-} + /** + * z3fold_destroy_pool() - destroys an existing z3fold pool + * @pool: the z3fold pool to be destroyed +@@ -833,22 +817,6 @@ static bool pool_isolated_are_drained(st + static void z3fold_destroy_pool(struct z3fold_pool *pool) + { + kmem_cache_destroy(pool->c_handle); +- /* +- * We set pool-> destroying under lock to ensure that +- * z3fold_page_isolate() sees any changes to destroying. This way we +- * avoid the need for any memory barriers. +- */ +- +- spin_lock(&pool->lock); +- pool->destroying = true; +- spin_unlock(&pool->lock); +- +- /* +- * We need to ensure that no pages are being migrated while we destroy +- * these workqueues, as migration can queue work on either of the +- * workqueues. +- */ +- wait_event(pool->isolate_wait, !pool_isolated_are_drained(pool)); + + /* + * We need to destroy pool->compact_wq before pool->release_wq, +@@ -1339,28 +1307,6 @@ static u64 z3fold_get_pool_size(struct z + return atomic64_read(&pool->pages_nr); + } + +-/* +- * z3fold_dec_isolated() expects to be called while pool->lock is held. +- */ +-static void z3fold_dec_isolated(struct z3fold_pool *pool) +-{ +- assert_spin_locked(&pool->lock); +- VM_BUG_ON(pool->isolated <= 0); +- pool->isolated--; +- +- /* +- * If we have no more isolated pages, we have to see if +- * z3fold_destroy_pool() is waiting for a signal. +- */ +- if (pool->isolated == 0 && waitqueue_active(&pool->isolate_wait)) +- wake_up_all(&pool->isolate_wait); +-} +- +-static void z3fold_inc_isolated(struct z3fold_pool *pool) +-{ +- pool->isolated++; +-} +- + static bool z3fold_page_isolate(struct page *page, isolate_mode_t mode) + { + struct z3fold_header *zhdr; +@@ -1387,34 +1333,6 @@ static bool z3fold_page_isolate(struct p + spin_lock(&pool->lock); + if (!list_empty(&page->lru)) + list_del(&page->lru); +- /* +- * We need to check for destruction while holding pool->lock, as +- * otherwise destruction could see 0 isolated pages, and +- * proceed. +- */ +- if (unlikely(pool->destroying)) { +- spin_unlock(&pool->lock); +- /* +- * If this page isn't stale, somebody else holds a +- * reference to it. Let't drop our refcount so that they +- * can call the release logic. +- */ +- if (unlikely(kref_put(&zhdr->refcount, +- release_z3fold_page_locked))) { +- /* +- * If we get here we have kref problems, so we +- * should freak out. +- */ +- WARN(1, "Z3fold is experiencing kref problems\n"); +- z3fold_page_unlock(zhdr); +- return false; +- } +- z3fold_page_unlock(zhdr); +- return false; +- } +- +- +- z3fold_inc_isolated(pool); + spin_unlock(&pool->lock); + z3fold_page_unlock(zhdr); + return true; +@@ -1483,10 +1401,6 @@ static int z3fold_page_migrate(struct ad + + queue_work_on(new_zhdr->cpu, pool->compact_wq, &new_zhdr->work); + +- spin_lock(&pool->lock); +- z3fold_dec_isolated(pool); +- spin_unlock(&pool->lock); +- + page_mapcount_reset(page); + put_page(page); + return 0; +@@ -1506,14 +1420,10 @@ static void z3fold_page_putback(struct p + INIT_LIST_HEAD(&page->lru); + if (kref_put(&zhdr->refcount, release_z3fold_page_locked)) { + atomic64_dec(&pool->pages_nr); +- spin_lock(&pool->lock); +- z3fold_dec_isolated(pool); +- spin_unlock(&pool->lock); + return; + } + spin_lock(&pool->lock); + list_add(&page->lru, &pool->lru); +- z3fold_dec_isolated(pool); + spin_unlock(&pool->lock); + z3fold_page_unlock(zhdr); + } diff --git a/queue-5.3/series b/queue-5.3/series index 4e275f69fbc..32fdada85fd 100644 --- a/queue-5.3/series +++ b/queue-5.3/series @@ -15,3 +15,10 @@ hid-add-quirk-for-hp-x500-pixart-oem-mouse.patch mtd-cfi_cmdset_0002-use-chip_good-to-retry-in-do_write_oneword.patch crypto-talitos-fix-missing-break-in-switch-statement.patch clk-imx-imx8mm-fix-audio-pll-setting.patch +revert-mm-z3fold.c-fix-race-between-migration-and-destruction.patch +alsa-usb-audio-add-hiby-device-family-to-quirks-for-native-dsd-support.patch +alsa-usb-audio-add-dsd-support-for-evga-nu-audio.patch +alsa-dice-fix-wrong-packet-parameter-for-alesis-io26.patch +alsa-hda-add-laptop-imic-fixup-for-asus-m9v-laptop.patch +alsa-hda-apply-amd-controller-workaround-for-raven-platform.patch +platform-x86-i2c-multi-instantiate-derive-the-device-name-from-parent.patch