From: Greg Kroah-Hartman Date: Fri, 7 Aug 2015 21:14:25 +0000 (-0700) Subject: 3.10-stable patches X-Git-Tag: v4.1.5~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=99cf92253fa0c94a01d74a17554daf4ecb1b54c5;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: alsa-hda-fix-macbook-pro-5-2-quirk.patch alsa-usb-audio-add-db-range-mapping-for-some-devices.patch alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch --- diff --git a/queue-3.10/alsa-hda-fix-macbook-pro-5-2-quirk.patch b/queue-3.10/alsa-hda-fix-macbook-pro-5-2-quirk.patch new file mode 100644 index 00000000000..c1e9400ec23 --- /dev/null +++ b/queue-3.10/alsa-hda-fix-macbook-pro-5-2-quirk.patch @@ -0,0 +1,34 @@ +From 649ccd08534ee26deb2e5b08509800d0e95167f5 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 30 Jul 2015 22:30:29 +0200 +Subject: ALSA: hda - Fix MacBook Pro 5,2 quirk + +From: Takashi Iwai + +commit 649ccd08534ee26deb2e5b08509800d0e95167f5 upstream. + +MacBook Pro 5,2 with ALC889 codec had already a fixup entry, but this +seems not working correctly, a fix for pin NID 0x15 is needed in +addition. It's equivalent with the fixup for MacBook Air 1,1, so use +this instead. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=102131 +Reported-and-tested-by: Jeffery Miller +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -2204,7 +2204,7 @@ static const struct snd_pci_quirk alc882 + SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF), + SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF), + SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF), +- SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF), ++ SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_MBA11_VREF), + + SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD), + SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD), diff --git a/queue-3.10/alsa-usb-audio-add-db-range-mapping-for-some-devices.patch b/queue-3.10/alsa-usb-audio-add-db-range-mapping-for-some-devices.patch new file mode 100644 index 00000000000..985e8ed365d --- /dev/null +++ b/queue-3.10/alsa-usb-audio-add-db-range-mapping-for-some-devices.patch @@ -0,0 +1,59 @@ +From 2d1cb7f658fb9c3ba8f9dab8aca297d4dfdec835 Mon Sep 17 00:00:00 2001 +From: Yao-Wen Mao +Date: Wed, 29 Jul 2015 15:13:54 +0800 +Subject: ALSA: usb-audio: add dB range mapping for some devices + +From: Yao-Wen Mao + +commit 2d1cb7f658fb9c3ba8f9dab8aca297d4dfdec835 upstream. + +Add the correct dB ranges of Bose Companion 5 and Drangonfly DAC 1.2. + +Signed-off-by: Yao-Wen Mao +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/mixer_maps.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +--- a/sound/usb/mixer_maps.c ++++ b/sound/usb/mixer_maps.c +@@ -330,6 +330,20 @@ static const struct usbmix_name_map scms + { 0 } + }; + ++/* Bose companion 5, the dB conversion factor is 16 instead of 256 */ ++static struct usbmix_dB_map bose_companion5_dB = {-5006, -6}; ++static struct usbmix_name_map bose_companion5_map[] = { ++ { 3, NULL, .dB = &bose_companion5_dB }, ++ { 0 } /* terminator */ ++}; ++ ++/* Dragonfly DAC 1.2, the dB conversion factor is 1 instead of 256 */ ++static struct usbmix_dB_map dragonfly_1_2_dB = {0, 5000}; ++static struct usbmix_name_map dragonfly_1_2_map[] = { ++ { 7, NULL, .dB = &dragonfly_1_2_dB }, ++ { 0 } /* terminator */ ++}; ++ + /* + * Control map entries + */ +@@ -432,6 +446,16 @@ static struct usbmix_ctl_map usbmix_ctl_ + .id = USB_ID(0x25c4, 0x0003), + .map = scms_usb3318_map, + }, ++ { ++ /* Bose Companion 5 */ ++ .id = USB_ID(0x05a7, 0x1020), ++ .map = bose_companion5_map, ++ }, ++ { ++ /* Dragonfly DAC 1.2 */ ++ .id = USB_ID(0x21b4, 0x0081), ++ .map = dragonfly_1_2_map, ++ }, + { 0 } /* terminator */ + }; + diff --git a/queue-3.10/alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch b/queue-3.10/alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch new file mode 100644 index 00000000000..a372a69e486 --- /dev/null +++ b/queue-3.10/alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch @@ -0,0 +1,107 @@ +From 0689a86ae814f39af94a9736a0a5426dd82eb107 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= +Date: Tue, 30 Jun 2015 17:41:33 +0200 +Subject: ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= + +commit 0689a86ae814f39af94a9736a0a5426dd82eb107 upstream. + +The Steinberg MI2 and MI4 interfaces are compatible with the USB class +audio spec, but the MIDI part of the devices is reported as a vendor +specific interface. + +This patch adds entries to quirks-table.h to recognize the MIDI +endpoints. Audio functionality was already working and is unaffected by +this change. + +Signed-off-by: Dominic Sacré +Signed-off-by: Albert Huitsing +Acked-by: Clemens Ladisch +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/quirks-table.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +--- a/sound/usb/quirks-table.h ++++ b/sound/usb/quirks-table.h +@@ -2773,6 +2773,74 @@ YAMAHA_DEVICE(0x7010, "UB99"), + } + }, + ++/* Steinberg devices */ ++{ ++ /* Steinberg MI2 */ ++ USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040), ++ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { ++ .ifnum = QUIRK_ANY_INTERFACE, ++ .type = QUIRK_COMPOSITE, ++ .data = & (const struct snd_usb_audio_quirk[]) { ++ { ++ .ifnum = 0, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 1, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 2, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 3, ++ .type = QUIRK_MIDI_FIXED_ENDPOINT, ++ .data = &(const struct snd_usb_midi_endpoint_info) { ++ .out_cables = 0x0001, ++ .in_cables = 0x0001 ++ } ++ }, ++ { ++ .ifnum = -1 ++ } ++ } ++ } ++}, ++{ ++ /* Steinberg MI4 */ ++ USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040), ++ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { ++ .ifnum = QUIRK_ANY_INTERFACE, ++ .type = QUIRK_COMPOSITE, ++ .data = & (const struct snd_usb_audio_quirk[]) { ++ { ++ .ifnum = 0, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 1, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 2, ++ .type = QUIRK_AUDIO_STANDARD_INTERFACE ++ }, ++ { ++ .ifnum = 3, ++ .type = QUIRK_MIDI_FIXED_ENDPOINT, ++ .data = &(const struct snd_usb_midi_endpoint_info) { ++ .out_cables = 0x0001, ++ .in_cables = 0x0001 ++ } ++ }, ++ { ++ .ifnum = -1 ++ } ++ } ++ } ++}, ++ + /* TerraTec devices */ + { + USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), diff --git a/queue-3.10/genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch b/queue-3.10/genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch new file mode 100644 index 00000000000..c40a82b0216 --- /dev/null +++ b/queue-3.10/genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch @@ -0,0 +1,58 @@ +From 75a06189fc508a2acf470b0b12710362ffb2c4b1 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Thu, 16 Jul 2015 14:10:17 +0200 +Subject: genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Thomas Gleixner + +commit 75a06189fc508a2acf470b0b12710362ffb2c4b1 upstream. + +The resend mechanism happily calls the interrupt handler of interrupts +which are marked IRQ_NESTED_THREAD from softirq context. This can +result in crashes because the interrupt handler is not the proper way +to invoke the device handlers. They must be invoked via +handle_nested_irq. + +Prevent the resend even if the interrupt has no valid parent irq +set. Its better to have a lost interrupt than a crashing machine. + +Reported-by: Uwe Kleine-König +Signed-off-by: Thomas Gleixner +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/irq/resend.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +--- a/kernel/irq/resend.c ++++ b/kernel/irq/resend.c +@@ -75,13 +75,21 @@ void check_irq_resend(struct irq_desc *d + !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { + #ifdef CONFIG_HARDIRQS_SW_RESEND + /* +- * If the interrupt has a parent irq and runs +- * in the thread context of the parent irq, +- * retrigger the parent. ++ * If the interrupt is running in the thread ++ * context of the parent irq we need to be ++ * careful, because we cannot trigger it ++ * directly. + */ +- if (desc->parent_irq && +- irq_settings_is_nested_thread(desc)) ++ if (irq_settings_is_nested_thread(desc)) { ++ /* ++ * If the parent_irq is valid, we ++ * retrigger the parent, otherwise we ++ * do nothing. ++ */ ++ if (!desc->parent_irq) ++ return; + irq = desc->parent_irq; ++ } + /* Set it pending and activate the softirq: */ + set_bit(irq, irqs_resend); + tasklet_schedule(&resend_tasklet); diff --git a/queue-3.10/series b/queue-3.10/series index d4825318958..6c3ec645e47 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -2,3 +2,7 @@ mm-avoid-setting-up-anonymous-pages-into-file-mapping.patch freeing-unlinked-file-indefinitely-delayed.patch s390-sclp-clear-upper-register-halves-in-_sclp_print_early.patch arc-make-sure-instruction_pointer-returns-unsigned-value.patch +genirq-prevent-resend-to-interrupts-marked-irq_nested_thread.patch +alsa-usb-audio-add-midi-support-for-steinberg-mi2-mi4.patch +alsa-usb-audio-add-db-range-mapping-for-some-devices.patch +alsa-hda-fix-macbook-pro-5-2-quirk.patch