Merge branch 'linux-3.4.35' into rel-17
Sachin Nikam [Wed, 6 Mar 2013 13:42:15 +0000 (18:42 +0530)]
Bug 1243631

Change-Id: I915826047b2e20f0ad0a7d75df295c6cbf6e5b0a

87 files changed:
1  2 
Documentation/kernel-parameters.txt
MAINTAINERS
Makefile
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/compressed/head.S
arch/arm/include/asm/pgtable.h
arch/arm/kernel/sched_clock.c
arch/arm/kernel/smp.c
arch/arm/kernel/traps.c
arch/arm/mach-imx/hotplug.c
arch/arm/mm/dma-mapping.c
arch/arm/mm/mm.h
arch/arm/mm/mmu.c
arch/arm/vfp/entry.S
arch/arm/vfp/vfpmodule.c
arch/x86/Kconfig
arch/x86/kernel/setup.c
block/genhd.c
block/partition-generic.c
drivers/acpi/processor_idle.c
drivers/base/power/main.c
drivers/base/power/qos.c
drivers/base/regmap/regmap-debugfs.c
drivers/i2c/busses/Kconfig
drivers/i2c/busses/Makefile
drivers/mmc/card/block.c
drivers/mmc/host/sdhci.c
drivers/net/ethernet/realtek/r8169.c
drivers/net/usb/usbnet.c
drivers/net/wireless/ath/ath9k/ar9003_phy.c
drivers/net/wireless/b43/main.c
drivers/pinctrl/pinctrl-tegra30.c
drivers/staging/android/binder.c
drivers/usb/class/cdc-acm.c
drivers/usb/gadget/f_rndis.c
drivers/usb/host/ehci-hub.c
drivers/usb/host/ehci-q.c
drivers/usb/host/ehci-sched.c
drivers/usb/host/xhci-hub.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h
drivers/usb/storage/unusual_devs.h
fs/eventpoll.c
fs/exec.c
fs/ext4/super.c
fs/fs-writeback.c
fs/fuse/dev.c
fs/proc/stat.c
include/linux/freezer.h
include/linux/mmc/card.h
include/linux/sched.h
include/net/cfg80211.h
include/net/tcp.h
kernel/cgroup.c
kernel/cpuset.c
kernel/debug/kdb/kdb_io.c
kernel/module.c
kernel/printk.c
kernel/sched/core.c
kernel/sched/rt.c
kernel/sched/sched.h
kernel/signal.c
kernel/time/timekeeping.c
kernel/workqueue.c
lib/genalloc.c
mm/compaction.c
mm/memory-failure.c
mm/memory_hotplug.c
mm/page_alloc.c
mm/shmem.c
net/bluetooth/hci_conn.c
net/bluetooth/hci_core.c
net/bluetooth/hci_event.c
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_sock.c
net/bluetooth/mgmt.c
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/mac80211/ieee80211_i.h
net/mac80211/scan.c
sound/pci/hda/hda_codec.c
sound/pci/hda/patch_hdmi.c
sound/soc/soc-dapm.c
sound/usb/card.c

Simple merge
diff --cc MAINTAINERS
Simple merge
diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -354,10 -267,9 +363,7 @@@ asmlinkage void __cpuinit secondary_sta
        atomic_inc(&mm->mm_count);
        current->active_mm = mm;
        cpumask_set_cpu(cpu, mm_cpumask(mm));
-       cpu_switch_mm(mm->pgd, mm);
-       enter_lazy_tlb(mm, current);
-       local_flush_tlb_all();
  
 -      printk("CPU%u: Booted secondary processor\n", cpu);
 -
        cpu_init();
        preempt_disable();
        trace_hardirqs_off();
Simple merge
@@@ -67,9 -51,17 +51,8 @@@ void imx_cpu_die(unsigned int cpu
  {
        cpu_enter_lowpower();
        imx_enable_cpu(cpu, false);
-       cpu_do_idle();
-       cpu_leave_lowpower();
  
-       /* We should never return from idle */
-       panic("cpu %d unexpectedly exit from shutdown\n", cpu);
+       /* spin here until hardware takes it down */
+       while (1)
+               ;
  }
 -
 -int platform_cpu_disable(unsigned int cpu)
 -{
 -      /*
 -       * we don't allow CPU 0 to be shutdown (it is still too special
 -       * e.g. clock tick interrupts)
 -       */
 -      return cpu == 0 ? -EPERM : 0;
 -}
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc block/genhd.c
Simple merge
Simple merge
@@@ -1011,11 -1018,66 +1011,14 @@@ static int acpi_processor_setup_cpuidle
                return -EINVAL;
        }
  
+       if (!dev)
+               return -EINVAL;
        dev->cpu = pr->id;
 -
 -      if (max_cstate == 0)
 -              max_cstate = 1;
 -
 -      for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) {
 -              cx = &pr->power.states[i];
 -              state_usage = &dev->states_usage[count];
 -
 -              if (!cx->valid)
 -                      continue;
 -
 -#ifdef CONFIG_HOTPLUG_CPU
 -              if ((cx->type != ACPI_STATE_C1) && (num_online_cpus() > 1) &&
 -                  !pr->flags.has_cst &&
 -                  !(acpi_gbl_FADT.flags & ACPI_FADT_C2_MP_SUPPORTED))
 -                      continue;
 -#endif
 -
 -              cpuidle_set_statedata(state_usage, cx);
 -
 -              count++;
 -              if (count == CPUIDLE_STATE_MAX)
 -                      break;
 -      }
 -
 -      dev->state_count = count;
 -
 -      if (!count)
 -              return -EINVAL;
 -
 -      return 0;
 -}
 -
 -/**
 - * acpi_processor_setup_cpuidle states- prepares and configures cpuidle
 - * global state data i.e. idle routines
 - *
 - * @pr: the ACPI processor
 - */
 -static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
 -{
 -      int i, count = CPUIDLE_DRIVER_STATE_START;
 -      struct acpi_processor_cx *cx;
 -      struct cpuidle_state *state;
 -      struct cpuidle_driver *drv = &acpi_idle_driver;
 -
 -      if (!pr->flags.power_setup_done)
 -              return -EINVAL;
 -
 -      if (pr->flags.power == 0)
 -              return -EINVAL;
 -
 -      drv->safe_state_index = -1;
 +      dev->safe_state_index = -1;
        for (i = 0; i < CPUIDLE_STATE_MAX; i++) {
 -              drv->states[i].name[0] = '\0';
 -              drv->states[i].desc[0] = '\0';
 +              dev->states[i].name[0] = '\0';
 +              dev->states[i].desc[0] = '\0';
        }
  
        if (max_cstate == 0)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -633,7 -612,11 +633,7 @@@ ehci_hub_status_data (struct usb_hcd *h
                        status = STS_PCD;
                }
        }
-       /* FIXME autosuspend idle root hubs */
 -      /* If a resume is in progress, make sure it can finish */
 -      if (ehci->resuming_ports)
 -              mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(25));
 -
        spin_unlock_irqrestore (&ehci->lock, flags);
        return status ? retval : 0;
  }
Simple merge
Simple merge
Simple merge
@@@ -1227,6 -1227,17 +1227,16 @@@ static void xhci_cmd_to_noop(struct xhc
        /* find the current segment of command ring */
        cur_seg = find_trb_seg(xhci->cmd_ring->first_seg,
                        xhci->cmd_ring->dequeue, &cycle_state);
 -
+       if (!cur_seg) {
+               xhci_warn(xhci, "Command ring mismatch, dequeue = %p %llx (dma)\n",
+                               xhci->cmd_ring->dequeue,
+                               (unsigned long long)
+                               xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg,
+                                       xhci->cmd_ring->dequeue));
+               xhci_debug_ring(xhci, xhci->cmd_ring);
+               xhci_dbg_ring_ptrs(xhci, xhci->cmd_ring);
+               return;
+       }
  
        /* find the command trb matched by cd from command ring */
        for (cmd_trb = xhci->cmd_ring->dequeue;
Simple merge
Simple merge
@@@ -1509,343 -1515,12 +1515,18 @@@ UNUSUAL_DEV(  0x1210, 0x0003, 0x0100, 0
  /* Reported by fangxiaozhi <huananhu@huawei.com>
   * This brings the HUAWEI data card devices into multi-port mode
   */
- UNUSUAL_DEV(  0x12d1, 0x1001, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1003, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1004, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1401, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1402, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1403, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1404, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1405, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1406, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1407, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1408, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1409, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140A, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140B, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140C, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140D, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140E, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x140F, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1410, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1411, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1412, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1413, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1414, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1415, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1416, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1417, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1418, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1419, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141A, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141B, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141C, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141D, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141E, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x141F, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1420, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1421, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1422, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1423, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1424, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1425, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1426, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1427, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1428, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1429, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142A, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142B, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142C, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142D, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142E, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x142F, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1430, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1431, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1432, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1433, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1434, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1435, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1436, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1437, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1438, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x1439, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143A, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143B, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143C, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143D, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143E, 0x0000, 0x0000,
-               "HUAWEI MOBILE",
-               "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
-               0),
- UNUSUAL_DEV(  0x12d1, 0x143F, 0x0000, 0x0000,
+ UNUSUAL_VENDOR_INTF(0x12d1, 0x08, 0x06, 0x50,
                "HUAWEI MOBILE",
                "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
+               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init,
                0),
  
 +UNUSUAL_DEV(  0x12d1, 0x1446, 0x0000, 0x0000,
 +              "HUAWEI MOBILE",
 +              "Mass Storage",
-               USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init,
++              USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init,
 +              0),
 +
  /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */
  UNUSUAL_DEV(  0x132b, 0x000b, 0x0001, 0x0001,
                "Minolta",
diff --cc fs/eventpoll.c
@@@ -1285,17 -1226,31 +1285,37 @@@ static int ep_modify(struct eventpoll *
         * otherwise we might miss an event that happens between the
         * f_op->poll() call and the new event set registering.
         */
-       epi->event.events = event->events;
+       epi->event.events = event->events; /* need barrier below */
        pt._key = event->events;
        epi->event.data = event->data; /* protected by mtx */
 +      if (epi->event.events & EPOLLWAKEUP) {
 +              if (!epi->ws)
 +                      ep_create_wakeup_source(epi);
 +      } else if (epi->ws) {
 +              ep_destroy_wakeup_source(epi);
 +      }
  
        /*
+        * The following barrier has two effects:
+        *
+        * 1) Flush epi changes above to other CPUs.  This ensures
+        *    we do not miss events from ep_poll_callback if an
+        *    event occurs immediately after we call f_op->poll().
+        *    We need this because we did not take ep->lock while
+        *    changing epi above (but ep_poll_callback does take
+        *    ep->lock).
+        *
+        * 2) We also need to ensure we do not miss _past_ events
+        *    when calling f_op->poll().  This barrier also
+        *    pairs with the barrier in wq_has_sleeper (see
+        *    comments for wq_has_sleeper).
+        *
+        * This barrier will now guarantee ep_poll_callback or f_op->poll
+        * (or both) will notice the readiness of an item.
+        */
+       smp_mb();
+       /*
         * Get current event bits. We can safely use the file* here because
         * its usage count has been increased by the caller of this function.
         */
diff --cc fs/exec.c
Simple merge
diff --cc fs/ext4/super.c
Simple merge
Simple merge
diff --cc fs/fuse/dev.c
Simple merge
diff --cc fs/proc/stat.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/cgroup.c
@@@ -386,31 -378,28 +386,43 @@@ static void free_css_set_work(struct wo
                struct cgroup *cgrp = link->cgrp;
                list_del(&link->cg_link_list);
                list_del(&link->cgrp_link_list);
-               if (atomic_dec_and_test(&cgrp->count)) {
++
+               /*
+                * We may not be holding cgroup_mutex, and if cgrp->count is
+                * dropped to 0 the cgroup can be destroyed at any time, hence
+                * rcu_read_lock is used to keep it alive.
+                */
+               rcu_read_lock();
+               if (atomic_dec_and_test(&cgrp->count) &&
+                   notify_on_release(cgrp)) {
 -                      if (taskexit)
 -                              set_bit(CGRP_RELEASABLE, &cgrp->flags);
                        check_for_release(cgrp);
 +                      cgroup_wakeup_rmdir_waiter(cgrp);
                }
++
+               rcu_read_unlock();
                kfree(link);
        }
 -
        write_unlock(&css_set_lock);
 -      kfree_rcu(cg, rcu_head);
 +
 +      kfree(cg);
 +}
 +
 +static void free_css_set_rcu(struct rcu_head *obj)
 +{
 +      struct css_set *cg = container_of(obj, struct css_set, rcu_head);
 +
 +      INIT_WORK(&cg->work, free_css_set_work);
 +      schedule_work(&cg->work);
  }
  
 +/* We don't maintain the lists running through each css_set to its
 + * task until after the first call to cgroup_iter_start(). This
 + * reduces the fork()/exit() overhead for people who have cgroups
 + * compiled into their kernel but not actually in use */
 +static int use_task_css_set_links __read_mostly;
 +
  /*
   * refcounted get/put for css_set objects
   */
diff --cc kernel/cpuset.c
Simple merge
Simple merge
diff --cc kernel/module.c
Simple merge
diff --cc kernel/printk.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/signal.c
Simple merge
Simple merge
@@@ -1979,16 -1862,11 +1979,18 @@@ __acquires(&gcwq->lock
        if (unlikely(cpu_intensive))
                worker_set_flags(worker, WORKER_CPU_INTENSIVE, true);
  
 +      /*
 +       * Unbound gcwq isn't concurrency managed and work items should be
 +       * executed ASAP.  Wake up another worker if necessary.
 +       */
 +      if ((worker->flags & WORKER_UNBOUND) && need_more_worker(pool))
 +              wake_up_worker(pool);
 +
        spin_unlock_irq(&gcwq->lock);
  
+       smp_wmb();      /* paired with test_and_set_bit(PENDING) */
        work_clear_pending(work);
        lock_map_acquire_read(&cwq->wq->lockdep_map);
        lock_map_acquire(&lockdep_map);
        trace_workqueue_execute_start(work);
diff --cc lib/genalloc.c
Simple merge
diff --cc mm/compaction.c
Simple merge
Simple merge
Simple merge
diff --cc mm/page_alloc.c
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
Simple merge
@@@ -653,14 -629,9 +653,10 @@@ static void ieee80211_scan_state_suspen
        local->scan_channel = NULL;
        ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
  
-       /*
-        * Re-enable vifs and beaconing.  Leave PS
-        * in off-channel state..will put that back
-        * on-channel at the end of scanning.
-        */
-       ieee80211_offchannel_return(local, false);
+       /* disable PS */
+       ieee80211_offchannel_return(local);
  
 +#ifndef CONFIG_MAC80211_SCAN_ABORT
        *next_delay = HZ / 5;
        /* afterwards, resume scan & go to next channel */
        local->next_scan_state = SCAN_RESUME;
Simple merge
@@@ -959,11 -921,15 +959,15 @@@ static int hdmi_pcm_open(struct hda_pcm
        hinfo->maxbps = per_cvt->maxbps;
  
        /* Restrict capabilities by ELD if this isn't disabled */
 -      if (!static_hdmi_pcm && eld->eld_valid) {
 +      if (!static_hdmi_pcm && (eld->eld_valid || eld->lpcm_sad_ready)) {
                snd_hdmi_eld_update_pcm_info(eld, hinfo);
                if (hinfo->channels_min > hinfo->channels_max ||
-                   !hinfo->rates || !hinfo->formats)
+                   !hinfo->rates || !hinfo->formats) {
+                       per_cvt->assigned = 0;
+                       hinfo->nid = 0;
+                       snd_hda_spdif_ctls_unassign(codec, pin_idx);
                        return -ENODEV;
+               }
        }
  
        /* Store the updated parameters */
Simple merge
@@@ -575,15 -555,12 +575,17 @@@ static void snd_usb_audio_disconnect(st
                return;
  
        card = chip->card;
-       mutex_lock(&register_mutex);
-       mutex_lock(&chip->shutdown_mutex);
+       down_write(&chip->shutdown_rwsem);
        chip->shutdown = 1;
+       up_write(&chip->shutdown_rwsem);
+       mutex_lock(&register_mutex);
        chip->num_interfaces--;
 +
 +#ifdef CONFIG_SWITCH
 +      switch_set_state(&usb_switch_dev, STATE_DISCONNECTED);
 +#endif
 +
        if (chip->num_interfaces <= 0) {
                snd_card_disconnect(card);
                /* release the pcm resources */