From: Greg Kroah-Hartman Date: Fri, 26 Jul 2013 20:38:27 +0000 (-0700) Subject: 3.10-stable patches X-Git-Tag: v3.0.88~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7586b9b4699b3abc523c28bdaa88b25e44a848ba;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch alsa-usb-audio-6fire-return-correct-xrun-indication.patch arm-footbridge-fix-overlapping-pci-mappings.patch arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch ext4-fix-error-handling-in-ext4_ext_truncate.patch hrtimers-move-smp-function-call-to-thread-context.patch lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch media-saa7134-fix-unlocked-snd_pcm_stop-call.patch pm-sleep-avoid-autosleep-in-shutdown-progress.patch usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch usb-cp210x-support-sel-c662-vendor-device.patch usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch usb-option-add-tp-link-ma260.patch usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch usb-serial-option-add-olivetti-olicard-200.patch usb-serial-option-add-onyx-3g-device-support.patch usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch --- diff --git a/queue-3.10/alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch b/queue-3.10/alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch new file mode 100644 index 00000000000..b7dadc91166 --- /dev/null +++ b/queue-3.10/alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch @@ -0,0 +1,70 @@ +From 1ea9a69d1a36a5b62bf281ba8bb304fcac656dad Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 19 Jul 2013 07:58:02 +0200 +Subject: ALSA: hda - Fix EAPD GPIO control for Sigmatel codecs + +From: Takashi Iwai + +commit 1ea9a69d1a36a5b62bf281ba8bb304fcac656dad upstream. + +The EAPD GPIO is dynamically turned on/off for some machines with +Sigmatel codecs, but this didn't work as expected, and it resulted in +spontaneous lost of speaker outputs per HP plugging or power-saving. + +This patch fixes the bug by simply including spec->eapd_mask into +spec->gpio_mask and spec->gpio_data bits. + +Reported-and-tested-by: Eric Shattow +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_sigmatel.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- a/sound/pci/hda/patch_sigmatel.c ++++ b/sound/pci/hda/patch_sigmatel.c +@@ -417,9 +417,11 @@ static void stac_update_outputs(struct h + val &= ~spec->eapd_mask; + else + val |= spec->eapd_mask; +- if (spec->gpio_data != val) ++ if (spec->gpio_data != val) { ++ spec->gpio_data = val; + stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, + val); ++ } + } + } + +@@ -3608,20 +3610,18 @@ static int stac_parse_auto_config(struct + static int stac_init(struct hda_codec *codec) + { + struct sigmatel_spec *spec = codec->spec; +- unsigned int gpio; + int i; + + /* override some hints */ + stac_store_hints(codec); + + /* set up GPIO */ +- gpio = spec->gpio_data; + /* turn on EAPD statically when spec->eapd_switch isn't set. + * otherwise, unsol event will turn it on/off dynamically + */ + if (!spec->eapd_switch) +- gpio |= spec->eapd_mask; +- stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, gpio); ++ spec->gpio_data |= spec->eapd_mask; ++ stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); + + snd_hda_gen_init(codec); + +@@ -3921,6 +3921,7 @@ static void stac_setup_gpio(struct hda_c + { + struct sigmatel_spec *spec = codec->spec; + ++ spec->gpio_mask |= spec->eapd_mask; + if (spec->gpio_led) { + if (!spec->vref_mute_led_nid) { + spec->gpio_mask |= spec->gpio_led; diff --git a/queue-3.10/alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch b/queue-3.10/alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch new file mode 100644 index 00000000000..8f3db40f99b --- /dev/null +++ b/queue-3.10/alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch @@ -0,0 +1,39 @@ +From f3e351eef3a7fd1e36a3e18d4f2f069b00deb23c Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 19 Jul 2013 08:02:25 +0200 +Subject: ALSA: hda - Remove NO_PRESENCE bit override for Dell 1420n Laptop + +From: Takashi Iwai + +commit f3e351eef3a7fd1e36a3e18d4f2f069b00deb23c upstream. + +The quirk for Dell laptops with STAC9228 overrides the pin default +config of NID 0x0f to the value with AC_DEFCFG_MISC_NO_PRESENCE bit +on. I'm not quite sure why this was done so, but can guess that this +was introduced for avoiding this to be muted by another headphone +plug. Now, after transition to the generic parser, this workaround +rather causes a problem (notably as unexpected speaker mutes) because +the pin is seen as if it's always plugged in. + +Since the generic parser can handle multiple headphone plugging +gracefully, we can get rid of this override now. + +Reported-and-tested-by: Eric Shattow +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_sigmatel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/pci/hda/patch_sigmatel.c ++++ b/sound/pci/hda/patch_sigmatel.c +@@ -3227,7 +3227,7 @@ static const struct hda_fixup stac927x_f + /* configure the analog microphone on some laptops */ + { 0x0c, 0x90a79130 }, + /* correct the front output jack as a hp out */ +- { 0x0f, 0x0227011f }, ++ { 0x0f, 0x0221101f }, + /* correct the front input jack as a mic */ + { 0x0e, 0x02a79130 }, + {} diff --git a/queue-3.10/alsa-usb-audio-6fire-return-correct-xrun-indication.patch b/queue-3.10/alsa-usb-audio-6fire-return-correct-xrun-indication.patch new file mode 100644 index 00000000000..7ce736e6d30 --- /dev/null +++ b/queue-3.10/alsa-usb-audio-6fire-return-correct-xrun-indication.patch @@ -0,0 +1,34 @@ +From be2f93a4c4981b3646b6f98f477154411b8516cb Mon Sep 17 00:00:00 2001 +From: Eldad Zack +Date: Fri, 19 Jul 2013 18:26:53 +0200 +Subject: ALSA: usb-audio: 6fire: return correct XRUN indication + +From: Eldad Zack + +commit be2f93a4c4981b3646b6f98f477154411b8516cb upstream. + +Return SNDRV_PCM_POS_XRUN (snd_pcm_uframes_t) instead of +SNDRV_PCM_STATE_XRUN (snd_pcm_state_t) from the pointer +function of 6fire, as expected by snd_pcm_update_hw_ptr0(). + +Caught by sparse. + +Signed-off-by: Eldad Zack +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/6fire/pcm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/usb/6fire/pcm.c ++++ b/sound/usb/6fire/pcm.c +@@ -543,7 +543,7 @@ static snd_pcm_uframes_t usb6fire_pcm_po + snd_pcm_uframes_t ret; + + if (rt->panic || !sub) +- return SNDRV_PCM_STATE_XRUN; ++ return SNDRV_PCM_POS_XRUN; + + spin_lock_irqsave(&sub->lock, flags); + ret = sub->dma_off; diff --git a/queue-3.10/arm-footbridge-fix-overlapping-pci-mappings.patch b/queue-3.10/arm-footbridge-fix-overlapping-pci-mappings.patch new file mode 100644 index 00000000000..5dbe14d7d94 --- /dev/null +++ b/queue-3.10/arm-footbridge-fix-overlapping-pci-mappings.patch @@ -0,0 +1,51 @@ +From 6287e7319870ec949fb809e4eb4154c2b05b221f Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Thu, 27 Jun 2013 22:42:36 -0400 +Subject: ARM: footbridge: fix overlapping PCI mappings + +From: Mike Frysinger + +commit 6287e7319870ec949fb809e4eb4154c2b05b221f upstream. + +Commit 8ef6e6201b26cb9fde79c1baa08145af6aca2815 (ARM: footbridge: use +fixed PCI i/o mapping) broke booting on my netwinder. Before that, +everything boots fine. Since then, it crashes on boot. + +With earlyprintk, I see it BUG-ing like so: +kernel BUG at lib/ioremap.c:27! +Internal error: Oops - BUG: 0 [#1] ARM +... +[] (ioremap_page_range+0x128/0x154) from [] (dc21285_setup+0xd0/0x114) +[] (dc21285_setup+0xd0/0x114) from [] (pci_common_init+0xa0/0x298) +[] (pci_common_init+0xa0/0x298) from [] (netwinder_pci_init+0xc/0x18) +[] (netwinder_pci_init+0xc/0x18) from [] (do_one_initcall+0xb4/0x180) +... + +Russell points out it's because of overlapping PCI mappings that was +added with the aforementioned commit. Rob thought the code would re-use +the static mapping, but that turns out to not be the case and instead +hits the BUG further down. + +After deleting this hunk as suggested by Russel, the system boots up fine +again and all my PCI devices work (IDE, ethernet, the DC21285). + +Signed-off-by: Mike Frysinger +Acked-by: Rob Herring +Signed-off-by: Olof Johansson +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-footbridge/dc21285.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/arch/arm/mach-footbridge/dc21285.c ++++ b/arch/arm/mach-footbridge/dc21285.c +@@ -276,8 +276,6 @@ int __init dc21285_setup(int nr, struct + + sys->mem_offset = DC21285_PCI_MEM; + +- pci_ioremap_io(0, DC21285_PCI_IO); +- + pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset); + pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset); + diff --git a/queue-3.10/arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch b/queue-3.10/arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch new file mode 100644 index 00000000000..3a70f036c5e --- /dev/null +++ b/queue-3.10/arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch @@ -0,0 +1,246 @@ +From d817468c4b2892b9468e2a0c92116e38a3a61370 Mon Sep 17 00:00:00 2001 +From: Sylwester Nawrocki +Date: Wed, 24 Jul 2013 13:23:51 +0900 +Subject: ARM: S3C24XX: Add missing clkdev entries for s3c2440 UART + +From: Sylwester Nawrocki + +commit d817468c4b2892b9468e2a0c92116e38a3a61370 upstream. + +This patch restores serial port operation which has been broken since +commit 60e93575476f ("serial: samsung: enable clock before clearing +pending interrupts during init") + +That commit only uncovered the real issue which was missing clkdev +entries for the "uart" clocks on S3C2440. It went unnoticed so far +because return value of clk API calls were not being checked at all +in the samsung serial port driver. + +This patch should be backported to at least 3.10 stable kernel, since +the serial port has not been working on s3c2440 since 3.10-rc5. + +Signed-off-by: Sylwester Nawrocki +Cc: Chander Kashyap +[on S3C2440 SoC based Mini2440 board] +Tested-by: Sylwester Nawrocki +Reviewed-by: Tomasz Figa +Tested-by: Juergen Beisert +Signed-off-by: Kukjin Kim +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-s3c24xx/clock-s3c2410.c | 161 +++++++++++++++++------------ + arch/arm/mach-s3c24xx/clock-s3c2440.c | 3 + arch/arm/plat-samsung/include/plat/clock.h | 5 + 3 files changed, 106 insertions(+), 63 deletions(-) + +--- a/arch/arm/mach-s3c24xx/clock-s3c2410.c ++++ b/arch/arm/mach-s3c24xx/clock-s3c2410.c +@@ -119,66 +119,101 @@ static struct clk init_clocks_off[] = { + } + }; + +-static struct clk init_clocks[] = { +- { +- .name = "lcd", +- .parent = &clk_h, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_LCDC, +- }, { +- .name = "gpio", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_GPIO, +- }, { +- .name = "usb-host", +- .parent = &clk_h, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_USBH, +- }, { +- .name = "usb-device", +- .parent = &clk_h, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_USBD, +- }, { +- .name = "timers", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_PWMT, +- }, { +- .name = "uart", +- .devname = "s3c2410-uart.0", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_UART0, +- }, { +- .name = "uart", +- .devname = "s3c2410-uart.1", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_UART1, +- }, { +- .name = "uart", +- .devname = "s3c2410-uart.2", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_UART2, +- }, { +- .name = "rtc", +- .parent = &clk_p, +- .enable = s3c2410_clkcon_enable, +- .ctrlbit = S3C2410_CLKCON_RTC, +- }, { +- .name = "watchdog", +- .parent = &clk_p, +- .ctrlbit = 0, +- }, { +- .name = "usb-bus-host", +- .parent = &clk_usb_bus, +- }, { +- .name = "usb-bus-gadget", +- .parent = &clk_usb_bus, +- }, ++static struct clk clk_lcd = { ++ .name = "lcd", ++ .parent = &clk_h, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_LCDC, ++}; ++ ++static struct clk clk_gpio = { ++ .name = "gpio", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_GPIO, ++}; ++ ++static struct clk clk_usb_host = { ++ .name = "usb-host", ++ .parent = &clk_h, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_USBH, ++}; ++ ++static struct clk clk_usb_device = { ++ .name = "usb-device", ++ .parent = &clk_h, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_USBD, ++}; ++ ++static struct clk clk_timers = { ++ .name = "timers", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_PWMT, ++}; ++ ++struct clk s3c24xx_clk_uart0 = { ++ .name = "uart", ++ .devname = "s3c2410-uart.0", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_UART0, ++}; ++ ++struct clk s3c24xx_clk_uart1 = { ++ .name = "uart", ++ .devname = "s3c2410-uart.1", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_UART1, ++}; ++ ++struct clk s3c24xx_clk_uart2 = { ++ .name = "uart", ++ .devname = "s3c2410-uart.2", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_UART2, ++}; ++ ++static struct clk clk_rtc = { ++ .name = "rtc", ++ .parent = &clk_p, ++ .enable = s3c2410_clkcon_enable, ++ .ctrlbit = S3C2410_CLKCON_RTC, ++}; ++ ++static struct clk clk_watchdog = { ++ .name = "watchdog", ++ .parent = &clk_p, ++ .ctrlbit = 0, ++}; ++ ++static struct clk clk_usb_bus_host = { ++ .name = "usb-bus-host", ++ .parent = &clk_usb_bus, ++}; ++ ++static struct clk clk_usb_bus_gadget = { ++ .name = "usb-bus-gadget", ++ .parent = &clk_usb_bus, ++}; ++ ++static struct clk *init_clocks[] = { ++ &clk_lcd, ++ &clk_gpio, ++ &clk_usb_host, ++ &clk_usb_device, ++ &clk_timers, ++ &s3c24xx_clk_uart0, ++ &s3c24xx_clk_uart1, ++ &s3c24xx_clk_uart2, ++ &clk_rtc, ++ &clk_watchdog, ++ &clk_usb_bus_host, ++ &clk_usb_bus_gadget, + }; + + /* s3c2410_baseclk_add() +@@ -195,7 +230,6 @@ int __init s3c2410_baseclk_add(void) + { + unsigned long clkslow = __raw_readl(S3C2410_CLKSLOW); + unsigned long clkcon = __raw_readl(S3C2410_CLKCON); +- struct clk *clkp; + struct clk *xtal; + int ret; + int ptr; +@@ -207,8 +241,9 @@ int __init s3c2410_baseclk_add(void) + + /* register clocks from clock array */ + +- clkp = init_clocks; +- for (ptr = 0; ptr < ARRAY_SIZE(init_clocks); ptr++, clkp++) { ++ for (ptr = 0; ptr < ARRAY_SIZE(init_clocks); ptr++) { ++ struct clk *clkp = init_clocks[ptr]; ++ + /* ensure that we note the clock state */ + + clkp->usage = clkcon & clkp->ctrlbit ? 1 : 0; +--- a/arch/arm/mach-s3c24xx/clock-s3c2440.c ++++ b/arch/arm/mach-s3c24xx/clock-s3c2440.c +@@ -166,6 +166,9 @@ static struct clk_lookup s3c2440_clk_loo + CLKDEV_INIT(NULL, "clk_uart_baud1", &s3c24xx_uclk), + CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p), + CLKDEV_INIT(NULL, "clk_uart_baud3", &s3c2440_clk_fclk_n), ++ CLKDEV_INIT("s3c2440-uart.0", "uart", &s3c24xx_clk_uart0), ++ CLKDEV_INIT("s3c2440-uart.1", "uart", &s3c24xx_clk_uart1), ++ CLKDEV_INIT("s3c2440-uart.2", "uart", &s3c24xx_clk_uart2), + CLKDEV_INIT("s3c2440-camif", "camera", &s3c2440_clk_cam_upll), + }; + +--- a/arch/arm/plat-samsung/include/plat/clock.h ++++ b/arch/arm/plat-samsung/include/plat/clock.h +@@ -83,6 +83,11 @@ extern struct clk clk_ext; + extern struct clksrc_clk clk_epllref; + extern struct clksrc_clk clk_esysclk; + ++/* S3C24XX UART clocks */ ++extern struct clk s3c24xx_clk_uart0; ++extern struct clk s3c24xx_clk_uart1; ++extern struct clk s3c24xx_clk_uart2; ++ + /* S3C64XX specific clocks */ + extern struct clk clk_h2; + extern struct clk clk_27m; diff --git a/queue-3.10/ext4-fix-error-handling-in-ext4_ext_truncate.patch b/queue-3.10/ext4-fix-error-handling-in-ext4_ext_truncate.patch new file mode 100644 index 00000000000..a4ee9ac552b --- /dev/null +++ b/queue-3.10/ext4-fix-error-handling-in-ext4_ext_truncate.patch @@ -0,0 +1,45 @@ +From 8acd5e9b1217e58a57124d9e225afa12efeae20d Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Mon, 15 Jul 2013 00:09:19 -0400 +Subject: ext4: fix error handling in ext4_ext_truncate() + +From: Theodore Ts'o + +commit 8acd5e9b1217e58a57124d9e225afa12efeae20d upstream. + +Previously ext4_ext_truncate() was ignoring potential error returns +from ext4_es_remove_extent() and ext4_ext_remove_space(). This can +lead to the on-diks extent tree and the extent status tree cache +getting out of sync, which is particuarlly bad, and can lead to file +system corruption and potential data loss. + +Signed-off-by: "Theodore Ts'o" +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext4/extents.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/fs/ext4/extents.c ++++ b/fs/ext4/extents.c +@@ -4386,9 +4386,20 @@ void ext4_ext_truncate(handle_t *handle, + + last_block = (inode->i_size + sb->s_blocksize - 1) + >> EXT4_BLOCK_SIZE_BITS(sb); ++retry: + err = ext4_es_remove_extent(inode, last_block, + EXT_MAX_BLOCKS - last_block); ++ if (err == ENOMEM) { ++ cond_resched(); ++ congestion_wait(BLK_RW_ASYNC, HZ/50); ++ goto retry; ++ } ++ if (err) { ++ ext4_std_error(inode->i_sb, err); ++ return; ++ } + err = ext4_ext_remove_space(inode, last_block, EXT_MAX_BLOCKS - 1); ++ ext4_std_error(inode->i_sb, err); + } + + static void ext4_falloc_update_inode(struct inode *inode, diff --git a/queue-3.10/hrtimers-move-smp-function-call-to-thread-context.patch b/queue-3.10/hrtimers-move-smp-function-call-to-thread-context.patch new file mode 100644 index 00000000000..6f176e32b3a --- /dev/null +++ b/queue-3.10/hrtimers-move-smp-function-call-to-thread-context.patch @@ -0,0 +1,95 @@ +From 5ec2481b7b47a4005bb446d176e5d0257400c77d Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Fri, 5 Jul 2013 12:09:18 +0200 +Subject: hrtimers: Move SMP function call to thread context + +From: Thomas Gleixner + +commit 5ec2481b7b47a4005bb446d176e5d0257400c77d upstream. + +smp_call_function_* must not be called from softirq context. + +But clock_was_set() which calls on_each_cpu() is called from softirq +context to implement a delayed clock_was_set() for the timer interrupt +handler. Though that almost never gets invoked. A recent change in the +resume code uses the softirq based delayed clock_was_set to support +Xens resume mechanism. + +linux-next contains a new warning which warns if smp_call_function_* +is called from softirq context which gets triggered by that Xen +change. + +Fix this by moving the delayed clock_was_set() call to a work context. + +Reported-and-tested-by: Artem Savkov +Reported-by: Sasha Levin +Cc: David Vrabel +Cc: Ingo Molnar +Cc: H. Peter Anvin , +Cc: Konrad Wilk +Cc: John Stultz +Cc: xen-devel@lists.xen.org +Cc: stable@vger.kernel.org +Signed-off-by: Thomas Gleixner +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/hrtimer.c | 28 +++++++++++++--------------- + 1 file changed, 13 insertions(+), 15 deletions(-) + +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -721,17 +721,20 @@ static int hrtimer_switch_to_hres(void) + return 1; + } + ++static void clock_was_set_work(struct work_struct *work) ++{ ++ clock_was_set(); ++} ++ ++static DECLARE_WORK(hrtimer_work, clock_was_set_work); ++ + /* +- * Called from timekeeping code to reprogramm the hrtimer interrupt +- * device. If called from the timer interrupt context we defer it to +- * softirq context. ++ * Called from timekeeping and resume code to reprogramm the hrtimer ++ * interrupt device on all cpus. + */ + void clock_was_set_delayed(void) + { +- struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); +- +- cpu_base->clock_was_set = 1; +- __raise_softirq_irqoff(HRTIMER_SOFTIRQ); ++ schedule_work(&hrtimer_work); + } + + #else +@@ -780,8 +783,10 @@ void hrtimers_resume(void) + WARN_ONCE(!irqs_disabled(), + KERN_INFO "hrtimers_resume() called with IRQs enabled!"); + ++ /* Retrigger on the local CPU */ + retrigger_next_event(NULL); +- timerfd_clock_was_set(); ++ /* And schedule a retrigger for all others */ ++ clock_was_set_delayed(); + } + + static inline void timer_stats_hrtimer_set_start_info(struct hrtimer *timer) +@@ -1432,13 +1437,6 @@ void hrtimer_peek_ahead_timers(void) + + static void run_hrtimer_softirq(struct softirq_action *h) + { +- struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); +- +- if (cpu_base->clock_was_set) { +- cpu_base->clock_was_set = 0; +- clock_was_set(); +- } +- + hrtimer_peek_ahead_timers(); + } + diff --git a/queue-3.10/lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch b/queue-3.10/lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch new file mode 100644 index 00000000000..24833c911d6 --- /dev/null +++ b/queue-3.10/lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch @@ -0,0 +1,61 @@ +From 1c327d962fc420aea046c16215a552710bde8231 Mon Sep 17 00:00:00 2001 +From: David Jeffery +Date: Wed, 10 Jul 2013 13:19:50 -0400 +Subject: lockd: protect nlm_blocked access in nlmsvc_retry_blocked + +From: David Jeffery + +commit 1c327d962fc420aea046c16215a552710bde8231 upstream. + +In nlmsvc_retry_blocked, the check that the list is non-empty and acquiring +the pointer of the first entry is unprotected by any lock. This allows a rare +race condition when there is only one entry on the list. A function such as +nlmsvc_grant_callback() can be called, which will temporarily remove the entry +from the list. Between the list_empty() and list_entry(),the list may become +empty, causing an invalid pointer to be used as an nlm_block, leading to a +possible crash. + +This patch adds the nlm_block_lock around these calls to prevent concurrent +use of the nlm_blocked list. + +This was a regression introduced by +f904be9cc77f361d37d71468b13ff3d1a1823dea "lockd: Mostly remove BKL from +the server". + +Signed-off-by: David Jeffery +Cc: Bryan Schumaker +Signed-off-by: J. Bruce Fields +Signed-off-by: Greg Kroah-Hartman + +--- + fs/lockd/svclock.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/fs/lockd/svclock.c ++++ b/fs/lockd/svclock.c +@@ -939,6 +939,7 @@ nlmsvc_retry_blocked(void) + unsigned long timeout = MAX_SCHEDULE_TIMEOUT; + struct nlm_block *block; + ++ spin_lock(&nlm_blocked_lock); + while (!list_empty(&nlm_blocked) && !kthread_should_stop()) { + block = list_entry(nlm_blocked.next, struct nlm_block, b_list); + +@@ -948,6 +949,7 @@ nlmsvc_retry_blocked(void) + timeout = block->b_when - jiffies; + break; + } ++ spin_unlock(&nlm_blocked_lock); + + dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n", + block, block->b_when); +@@ -957,7 +959,9 @@ nlmsvc_retry_blocked(void) + retry_deferred_block(block); + } else + nlmsvc_grant_blocked(block); ++ spin_lock(&nlm_blocked_lock); + } ++ spin_unlock(&nlm_blocked_lock); + + return timeout; + } diff --git a/queue-3.10/media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch b/queue-3.10/media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch new file mode 100644 index 00000000000..6df0a382ba4 --- /dev/null +++ b/queue-3.10/media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch @@ -0,0 +1,56 @@ +From 414abbd2cd4c2618895f02ed3a76ec6647281436 Mon Sep 17 00:00:00 2001 +From: Soeren Moch +Date: Wed, 5 Jun 2013 21:26:23 -0300 +Subject: media: dmxdev: remove dvb_ringbuffer_flush() on writer side + +From: Soeren Moch + +commit 414abbd2cd4c2618895f02ed3a76ec6647281436 upstream. + +In dvb_ringbuffer lock-less synchronizationof reader and writer threads is done +with separateread and write pointers. Sincedvb_ringbuffer_flush() modifies the +read pointer, this function must not be called from the writer thread. +This patch removes the dvb_ringbuffer_flush() calls in the dmxdev ringbuffer +write functions, this fixes Oopses "Unable to handle kernel paging request" +I could observe for the call chaindvb_demux_read ->dvb_dmxdev_buffer_read -> +dvb_ringbuffer_read_user -> __copy_to_user (the reader side of the ringbuffer). +The flush calls at the write side are not necessary anyway since ringbuffer_flush +is also called in dvb_dmxdev_buffer_read() when an error condition is set in the +ringbuffer. +This patch should also be applied to stable kernels. + +Signed-off-by: Soeren Moch +Reviewed-by: Sakari Ailus +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/dvb-core/dmxdev.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- a/drivers/media/dvb-core/dmxdev.c ++++ b/drivers/media/dvb-core/dmxdev.c +@@ -377,10 +377,8 @@ static int dvb_dmxdev_section_callback(c + ret = dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2, + buffer2_len); + } +- if (ret < 0) { +- dvb_ringbuffer_flush(&dmxdevfilter->buffer); ++ if (ret < 0) + dmxdevfilter->buffer.error = ret; +- } + if (dmxdevfilter->params.sec.flags & DMX_ONESHOT) + dmxdevfilter->state = DMXDEV_STATE_DONE; + spin_unlock(&dmxdevfilter->dev->lock); +@@ -416,10 +414,8 @@ static int dvb_dmxdev_ts_callback(const + ret = dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len); + if (ret == buffer1_len) + ret = dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len); +- if (ret < 0) { +- dvb_ringbuffer_flush(buffer); ++ if (ret < 0) + buffer->error = ret; +- } + spin_unlock(&dmxdevfilter->dev->lock); + wake_up(&buffer->queue); + return 0; diff --git a/queue-3.10/media-saa7134-fix-unlocked-snd_pcm_stop-call.patch b/queue-3.10/media-saa7134-fix-unlocked-snd_pcm_stop-call.patch new file mode 100644 index 00000000000..7ac1e823996 --- /dev/null +++ b/queue-3.10/media-saa7134-fix-unlocked-snd_pcm_stop-call.patch @@ -0,0 +1,30 @@ +From e6355ad7b1c6f70e2f48ae159f5658b441ccff95 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 11 Jul 2013 18:00:59 +0200 +Subject: media: saa7134: Fix unlocked snd_pcm_stop() call + +From: Takashi Iwai + +commit e6355ad7b1c6f70e2f48ae159f5658b441ccff95 upstream. + +snd_pcm_stop() must be called in the PCM substream lock context. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/pci/saa7134/saa7134-alsa.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/media/pci/saa7134/saa7134-alsa.c ++++ b/drivers/media/pci/saa7134/saa7134-alsa.c +@@ -172,7 +172,9 @@ static void saa7134_irq_alsa_done(struct + dprintk("irq: overrun [full=%d/%d] - Blocks in %d\n",dev->dmasound.read_count, + dev->dmasound.bufsize, dev->dmasound.blocks); + spin_unlock(&dev->slock); ++ snd_pcm_stream_lock(dev->dmasound.substream); + snd_pcm_stop(dev->dmasound.substream,SNDRV_PCM_STATE_XRUN); ++ snd_pcm_stream_unlock(dev->dmasound.substream); + return; + } + diff --git a/queue-3.10/pm-sleep-avoid-autosleep-in-shutdown-progress.patch b/queue-3.10/pm-sleep-avoid-autosleep-in-shutdown-progress.patch new file mode 100644 index 00000000000..426f3fec8ef --- /dev/null +++ b/queue-3.10/pm-sleep-avoid-autosleep-in-shutdown-progress.patch @@ -0,0 +1,44 @@ +From e5248a111bf4048a9f3fab1a9c94c4630a10592a Mon Sep 17 00:00:00 2001 +From: Liu ShuoX +Date: Thu, 11 Jul 2013 16:03:45 +0800 +Subject: PM / Sleep: avoid 'autosleep' in shutdown progress + +From: Liu ShuoX + +commit e5248a111bf4048a9f3fab1a9c94c4630a10592a upstream. + +Prevent automatic system suspend from happening during system +shutdown by making try_to_suspend() check system_state and return +immediately if it is not SYSTEM_RUNNING. + +This prevents the following breakage from happening (scenario from +Zhang Yanmin): + + Kernel starts shutdown and calls all device driver's shutdown + callback. When a driver's shutdown is called, the last wakelock is + released and suspend-to-ram starts. However, as some driver's shut + down callbacks already shut down devices and disabled runtime pm, + the suspend-to-ram calls driver's suspend callback without noticing + that device is already off and causes crash. + +[rjw: Changelog] +Signed-off-by: Liu ShuoX +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/power/autosleep.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/power/autosleep.c ++++ b/kernel/power/autosleep.c +@@ -32,7 +32,8 @@ static void try_to_suspend(struct work_s + + mutex_lock(&autosleep_lock); + +- if (!pm_save_wakeup_count(initial_count)) { ++ if (!pm_save_wakeup_count(initial_count) || ++ system_state != SYSTEM_RUNNING) { + mutex_unlock(&autosleep_lock); + goto out; + } diff --git a/queue-3.10/series b/queue-3.10/series index 3ce1ca427b2..bf924924a0d 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -56,3 +56,24 @@ scsi-mpt3sas-infinite-loops-can-occur-if-mpi2_iocstatus_config_invalid_page-is-n scsi-mpt3sas-fix-for-kernel-panic-when-driver-loads-with-hba-conected-to-non-lun-0-configured-expander.patch scsi-megaraid_sas-fix-memory-leak-if-sgl-has-zero-length-entries.patch lib-kconfig.debug-restrict-frame_pointer-for-mips.patch +usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch +usb-option-add-tp-link-ma260.patch +usb-serial-option-add-olivetti-olicard-200.patch +usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch +usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch +usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch +usb-serial-option-add-onyx-3g-device-support.patch +arm-s3c24xx-add-missing-clkdev-entries-for-s3c2440-uart.patch +arm-footbridge-fix-overlapping-pci-mappings.patch +usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch +usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch +usb-cp210x-support-sel-c662-vendor-device.patch +ext4-fix-error-handling-in-ext4_ext_truncate.patch +pm-sleep-avoid-autosleep-in-shutdown-progress.patch +media-saa7134-fix-unlocked-snd_pcm_stop-call.patch +media-dmxdev-remove-dvb_ringbuffer_flush-on-writer-side.patch +lockd-protect-nlm_blocked-access-in-nlmsvc_retry_blocked.patch +hrtimers-move-smp-function-call-to-thread-context.patch +alsa-hda-remove-no_presence-bit-override-for-dell-1420n-laptop.patch +alsa-usb-audio-6fire-return-correct-xrun-indication.patch +alsa-hda-fix-eapd-gpio-control-for-sigmatel-codecs.patch diff --git a/queue-3.10/usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch b/queue-3.10/usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch new file mode 100644 index 00000000000..ac553efbf77 --- /dev/null +++ b/queue-3.10/usb-cp210x-add-mmb-and-pi-zigbee-usb-device-support.patch @@ -0,0 +1,32 @@ +From 7681156982026ebf7eafd7301eb0374d7648d068 Mon Sep 17 00:00:00 2001 +From: Sami Rahman +Date: Mon, 8 Jul 2013 14:28:55 -0400 +Subject: USB: cp210x: add MMB and PI ZigBee USB Device Support + +From: Sami Rahman + +commit 7681156982026ebf7eafd7301eb0374d7648d068 upstream. + +Added support for MMB Networks and Planet Innovation Ingeni ZigBee USB +devices using customized Silicon Labs' CP210x.c USB to UART bridge +drivers with PIDs: 88A4, 88A5. + +Signed-off-by: Sami Rahman +Tested-by: Sami Rahman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/cp210x.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -119,6 +119,8 @@ static const struct usb_device_id id_tab + { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ + { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ + { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ ++ { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ ++ { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ + { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ + { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ + { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ diff --git a/queue-3.10/usb-cp210x-support-sel-c662-vendor-device.patch b/queue-3.10/usb-cp210x-support-sel-c662-vendor-device.patch new file mode 100644 index 00000000000..6c3a1e73740 --- /dev/null +++ b/queue-3.10/usb-cp210x-support-sel-c662-vendor-device.patch @@ -0,0 +1,29 @@ +From b579fa52f6be0b4157ca9cc5e94d44a2c89a7e95 Mon Sep 17 00:00:00 2001 +From: Barry Grussling +Date: Fri, 19 Jul 2013 14:46:12 -0700 +Subject: usb: cp210x support SEL C662 Vendor/Device + +From: Barry Grussling + +commit b579fa52f6be0b4157ca9cc5e94d44a2c89a7e95 upstream. + +This patch adds support for the Schweitzer Engineering Laboratories +C662 USB cable based off the CP210x driver. + +Signed-off-by: Barry Grussling +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/cp210x.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -151,6 +151,7 @@ static const struct usb_device_id id_tab + { USB_DEVICE(0x17F4, 0xAAAA) }, /* Wavesense Jazz blood glucose meter */ + { USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */ + { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */ ++ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ + { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */ + { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */ + { USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */ diff --git a/queue-3.10/usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch b/queue-3.10/usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch new file mode 100644 index 00000000000..43d09b7331c --- /dev/null +++ b/queue-3.10/usb-option-add-d-link-dwm-152-c1-and-dwm-156-c1.patch @@ -0,0 +1,77 @@ +From ca24763588844b14f019ffc45c7df6d9e8f932c5 Mon Sep 17 00:00:00 2001 +From: "Alexandr \\\"Sky\\\" Ivanov" +Date: Tue, 23 Jul 2013 17:46:40 +0400 +Subject: USB: option: add D-Link DWM-152/C1 and DWM-156/C1 + +From: "Alexandr \\\"Sky\\\" Ivanov" + +commit ca24763588844b14f019ffc45c7df6d9e8f932c5 upstream. + +Adding support for D-Link DWM-152/C1 and DWM-156/C1 devices. + +DWM-152/C1: +T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 6 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=07d1 ProdID=3e01 Rev= 0.00 +S: Product=USB Configuration +S: SerialNumber=1234567890ABCDEF +C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA +I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage +E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +DWM-156/C1: +T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 8 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=07d1 ProdID=3e02 Rev= 0.00 +S: Product=DataCard Device +S: SerialNumber=1234567890ABCDEF +C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA +I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms +I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage +E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +Signed-off-by: Alexandr Ivanov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1339,6 +1339,8 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d02, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d03, 0xff, 0x00, 0x00) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ ++ { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ + { } /* Terminating entry */ + }; + MODULE_DEVICE_TABLE(usb, option_ids); diff --git a/queue-3.10/usb-option-add-tp-link-ma260.patch b/queue-3.10/usb-option-add-tp-link-ma260.patch new file mode 100644 index 00000000000..f62454cf43b --- /dev/null +++ b/queue-3.10/usb-option-add-tp-link-ma260.patch @@ -0,0 +1,27 @@ +From 94190301ffa059c2d127b3a67ec5d161d5c62681 Mon Sep 17 00:00:00 2001 +From: Bjørn Mork +Date: Fri, 28 Jun 2013 17:15:25 +0200 +Subject: usb: option: add TP-LINK MA260 + +From: Bjørn Mork + +commit 94190301ffa059c2d127b3a67ec5d161d5c62681 upstream. + +Signed-off-by: Bjørn Mork +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -1333,6 +1333,8 @@ static const struct usb_device_id option + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) }, + { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, ++ { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */ ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) }, + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x02, 0x01) }, /* D-Link DWM-156 (variant) */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x7d01, 0xff, 0x00, 0x00) }, /* D-Link DWM-156 (variant) */ diff --git a/queue-3.10/usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch b/queue-3.10/usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch new file mode 100644 index 00000000000..b80e2d0b4ba --- /dev/null +++ b/queue-3.10/usb-option-append-petatel-np10t-device-to-gsm-modems-list.patch @@ -0,0 +1,46 @@ +From c38e83b6cc2adf80e3f091fd92cfbeacc9748347 Mon Sep 17 00:00:00 2001 +From: Daniil Bolsun +Date: Fri, 19 Jul 2013 10:21:23 +0300 +Subject: USB: option: append Petatel NP10T device to GSM modems list + +From: Daniil Bolsun + +commit c38e83b6cc2adf80e3f091fd92cfbeacc9748347 upstream. + +This patch was tested on 3.10.1 kernel. + +Same models of Petatel NP10T modems have different device IDs. +Unfortunately they have no additional revision information on a board +which may treat them as different devices. Currently I've seen only +two NP10T devices with various IDs. Possibly Petatel NP10T list will +be appended upon devices with new IDs will appear. + +Signed-off-by: Daniil Bolsun +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -439,7 +439,8 @@ static void option_instat_callback(struc + + /* Hyundai Petatel Inc. products */ + #define PETATEL_VENDOR_ID 0x1ff4 +-#define PETATEL_PRODUCT_NP10T 0x600e ++#define PETATEL_PRODUCT_NP10T_600A 0x600a ++#define PETATEL_PRODUCT_NP10T_600E 0x600e + + /* TP-LINK Incorporated products */ + #define TPLINK_VENDOR_ID 0x2357 +@@ -1325,7 +1326,8 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) }, + { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) }, +- { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) }, ++ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) }, ++ { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) }, + { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(TPLINK_VENDOR_ID, 0x9000), /* TP-Link MA260 */ diff --git a/queue-3.10/usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch b/queue-3.10/usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch new file mode 100644 index 00000000000..b7339efbbf0 --- /dev/null +++ b/queue-3.10/usb-serial-cp210x-add-usb-id-for-netgear-switches-embedded-serial-adapter.patch @@ -0,0 +1,31 @@ +From 90625070c4253377025878c4e82feed8b35c7116 Mon Sep 17 00:00:00 2001 +From: Luiz Angelo Daros de Luca +Date: Mon, 1 Jul 2013 23:56:25 -0300 +Subject: usb: serial: cp210x: Add USB ID for Netgear Switches embedded serial adapter + +From: Luiz Angelo Daros de Luca + +commit 90625070c4253377025878c4e82feed8b35c7116 upstream. + +This adds NetGear Managed Switch M4100 series, M5300 series, M7100 series +USB ID (0846:0110) to the cp210x driver. Without this, the serial +adapter is not recognized in Linux. Description was obtained from +an Netgear Eng. + +Signed-off-by: Luiz Angelo Daros de Luca +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/cp210x.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -53,6 +53,7 @@ static const struct usb_device_id id_tab + { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ + { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ + { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */ ++ { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */ + { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ + { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */ + { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */ diff --git a/queue-3.10/usb-serial-option-add-olivetti-olicard-200.patch b/queue-3.10/usb-serial-option-add-olivetti-olicard-200.patch new file mode 100644 index 00000000000..8c387a500f3 --- /dev/null +++ b/queue-3.10/usb-serial-option-add-olivetti-olicard-200.patch @@ -0,0 +1,37 @@ +From 4cf76df06ecc852633ed927d91e01c83c33bc331 Mon Sep 17 00:00:00 2001 +From: Dan Williams +Date: Wed, 10 Jul 2013 12:25:02 -0500 +Subject: usb: serial: option: add Olivetti Olicard 200 + +From: Dan Williams + +commit 4cf76df06ecc852633ed927d91e01c83c33bc331 upstream. + +Speaks AT on interfaces 5 (command & PPP) and 3 (secondary), other +interface protocols are unknown. + +Signed-off-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -341,6 +341,7 @@ static void option_instat_callback(struc + #define OLIVETTI_VENDOR_ID 0x0b3c + #define OLIVETTI_PRODUCT_OLICARD100 0xc000 + #define OLIVETTI_PRODUCT_OLICARD145 0xc003 ++#define OLIVETTI_PRODUCT_OLICARD200 0xc005 + + /* Celot products */ + #define CELOT_VENDOR_ID 0x211f +@@ -1257,6 +1258,7 @@ static const struct usb_device_id option + + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) }, + { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ + { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ diff --git a/queue-3.10/usb-serial-option-add-onyx-3g-device-support.patch b/queue-3.10/usb-serial-option-add-onyx-3g-device-support.patch new file mode 100644 index 00000000000..027159fc9b0 --- /dev/null +++ b/queue-3.10/usb-serial-option-add-onyx-3g-device-support.patch @@ -0,0 +1,29 @@ +From 63b5df963f52ccbab6fabedf05b7ac6b465789a4 Mon Sep 17 00:00:00 2001 +From: Enrico Mioso +Date: Thu, 25 Jul 2013 02:01:39 +0200 +Subject: usb: serial: option: Add ONYX 3G device support + +From: Enrico Mioso + +commit 63b5df963f52ccbab6fabedf05b7ac6b465789a4 upstream. + +This patch adds support for the ONYX 3G device (version 1) from ALFA +NETWORK. + +Signed-off-by: Enrico Mioso +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -778,6 +778,7 @@ static const struct usb_device_id option + { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, + { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ ++ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, diff --git a/queue-3.10/usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch b/queue-3.10/usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch new file mode 100644 index 00000000000..c67d054d996 --- /dev/null +++ b/queue-3.10/usb-serial-option-blacklist-onda-mt689dc-qmi-interface.patch @@ -0,0 +1,31 @@ +From 3d1a69e726406ab662ab88fa30a3a05ed404334d Mon Sep 17 00:00:00 2001 +From: Enrico Mioso +Date: Sat, 29 Jun 2013 15:33:35 +0200 +Subject: usb: serial: option: blacklist ONDA MT689DC QMI interface + +From: Enrico Mioso + +commit 3d1a69e726406ab662ab88fa30a3a05ed404334d upstream. + +Prevent the option driver from binding itself to the QMI/WWAN interface, making +it unusable by the proper driver. + +Signed-off-by: enrico Mioso +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -817,7 +817,8 @@ static const struct usb_device_id option + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0017, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0018, 0xff, 0xff, 0xff) }, +- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0019, 0xff, 0xff, 0xff), ++ .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0020, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0021, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, diff --git a/queue-3.10/usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch b/queue-3.10/usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch new file mode 100644 index 00000000000..b52a85e2c72 --- /dev/null +++ b/queue-3.10/usb-serial-option.c-remove-onda-mt825up-product-id-fromdriver.patch @@ -0,0 +1,44 @@ +From 878c69aae986ae97084458c0183a8c0a059865b1 Mon Sep 17 00:00:00 2001 +From: Enrico Mioso +Date: Sat, 13 Jul 2013 18:54:14 +0200 +Subject: usb: serial: option.c: remove ONDA MT825UP product ID fromdriver + +From: Enrico Mioso + +commit 878c69aae986ae97084458c0183a8c0a059865b1 upstream. + +Some (very few) early devices like mine, where not exposting a proper CDC +descriptor. This was fixed with an immediate firmware update from the vendor, +and pre-installed on newer devices. +So actual devices can be driven by cdc_acm.c + cdc_ether.c. + +Signed-off-by: Enrico Mioso +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 7 ------- + 1 file changed, 7 deletions(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -347,12 +347,6 @@ static void option_instat_callback(struc + #define CELOT_VENDOR_ID 0x211f + #define CELOT_PRODUCT_CT680M 0x6801 + +-/* ONDA Communication vendor id */ +-#define ONDA_VENDOR_ID 0x1ee8 +- +-/* ONDA MT825UP HSDPA 14.2 modem */ +-#define ONDA_MT825UP 0x000b +- + /* Samsung products */ + #define SAMSUNG_VENDOR_ID 0x04e8 + #define SAMSUNG_PRODUCT_GT_B3730 0x6889 +@@ -1260,7 +1254,6 @@ static const struct usb_device_id option + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200) }, + { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ +- { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) },