Push to branch refs/heads/master:
86a705267a2a502a3d62ef0797e449677b25835f -->
  76da2fb8c0f7ffe6dddbd209f8c0ab6a0f86eab5



diff --git a/Documentation/stable_kernel_rules.txt 
b/Documentation/stable_kernel_rules.txt
index 2e073d5..5effa5b 100644
--- a/Documentation/stable_kernel_rules.txt
+++ b/Documentation/stable_kernel_rules.txt
@@ -25,10 +25,10 @@ Rules on what kind of patches are accepted, and which ones 
are not, into the
 Procedure for submitting patches to the -stable tree:
 
  - Send the patch, after verifying that it follows the above rules, to
-   sta...@vger.kernel.org.
+   sta...@kernel.org.
  - To have the patch automatically included in the stable tree, add the
    the tag
-     Cc: sta...@vger.kernel.org
+     Cc: sta...@kernel.org
    in the sign-off area. Once the patch is merged it will be applied to
    the stable tree without anything else needing to be done by the author
    or subsystem maintainer.
@@ -36,10 +36,10 @@ Procedure for submitting patches to the -stable tree:
    cherry-picked than this can be specified in the following format in
    the sign-off area:
 
-     Cc: <sta...@vger.kernel.org> # .32.x: a1f84a3: sched: Check for idle
-     Cc: <sta...@vger.kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle
-     Cc: <sta...@vger.kernel.org> # .32.x: fd21073: sched: Fix affinity logic
-     Cc: <sta...@vger.kernel.org> # .32.x
+     Cc: <sta...@kernel.org> # .32.x: a1f84a3: sched: Check for idle
+     Cc: <sta...@kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle
+     Cc: <sta...@kernel.org> # .32.x: fd21073: sched: Fix affinity logic
+     Cc: <sta...@kernel.org> # .32.x
     Signed-off-by: Ingo Molnar <mi...@elte.hu>
 
    The tag sequence has the meaning of:
diff --git a/Makefile b/Makefile
index 2349341..7c40be6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 33
-EXTRAVERSION = .20
+EXTRAVERSION = .19
 NAME = Man-Eating Seals of Antiquity
 
 # *DOCUMENTATION*
diff --git a/arch/arm/mach-davinci/board-da850-evm.c 
b/arch/arm/mach-davinci/board-da850-evm.c
index 3ecd94b..07de8db 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -44,32 +44,6 @@
 
 #define DA850_MII_MDIO_CLKEN_PIN       GPIO_TO_PIN(2, 6)
 
-#ifdef CONFIG_MTD
-static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
-{
-       char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
-       size_t retlen;
-
-       if (!strcmp(mtd->name, "MAC-Address")) {
-               mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
-               if (retlen == ETH_ALEN)
-                       pr_info("Read MAC addr from SPI Flash: %pM\n",
-                               mac_addr);
-       }
-}
-
-static struct mtd_notifier da850evm_spi_notifier = {
-       .add    = da850_evm_m25p80_notify_add,
-};
-
-static void da850_evm_setup_mac_addr(void)
-{
-       register_mtd_user(&da850evm_spi_notifier);
-}
-#else
-static void da850_evm_setup_mac_addr(void) { }
-#endif
-
 static struct mtd_partition da850_evm_norflash_partition[] = {
        {
                .name           = "NOR filesystem",
@@ -722,8 +696,6 @@ static __init void da850_evm_init(void)
        if (ret)
                pr_warning("da850_evm_init: cpuidle registration failed: %d\n",
                                ret);
-
-       da850_evm_setup_mac_addr();
 }
 
 #ifdef CONFIG_SERIAL_8250_CONSOLE
diff --git a/arch/arm/plat-mxc/include/mach/iomux-v3.h 
b/arch/arm/plat-mxc/include/mach/iomux-v3.h
index 657c252..1deda01 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-v3.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-v3.h
@@ -73,11 +73,11 @@ struct pad_desc {
 #define PAD_CTL_HYS                    (1 << 8)
 
 #define PAD_CTL_PKE                    (1 << 7)
-#define PAD_CTL_PUE                    (1 << 6 | PAD_CTL_PKE)
-#define PAD_CTL_PUS_100K_DOWN          (0 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_47K_UP             (1 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_100K_UP            (2 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_22K_UP             (3 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUE                    (1 << 6)
+#define PAD_CTL_PUS_100K_DOWN          (0 << 4)
+#define PAD_CTL_PUS_47K_UP             (1 << 4)
+#define PAD_CTL_PUS_100K_UP            (2 << 4)
+#define PAD_CTL_PUS_22K_UP             (3 << 4)
 
 #define PAD_CTL_ODE                    (1 << 3)
 
diff --git a/arch/mips/alchemy/mtx-1/platform.c 
b/arch/mips/alchemy/mtx-1/platform.c
index e30e42a..956f946 100644
--- a/arch/mips/alchemy/mtx-1/platform.c
+++ b/arch/mips/alchemy/mtx-1/platform.c
@@ -28,6 +28,8 @@
 #include <linux/mtd/physmap.h>
 #include <mtd/mtd-abi.h>
 
+#include <asm/mach-au1x00/au1xxx_eth.h>
+
 static struct gpio_keys_button mtx1_gpio_button[] = {
        {
                .gpio = 207,
@@ -140,10 +142,17 @@ static struct __initdata platform_device * mtx1_devs[] = {
        &mtx1_mtd,
 };
 
+static struct au1000_eth_platform_data mtx1_au1000_eth0_pdata = {
+       .phy_search_highest_addr        = 1,
+       .phy1_search_mac0               = 1,
+};
+
 static int __init mtx1_register_devices(void)
 {
        int rc;
 
+       au1xxx_override_eth_cfg(0, &mtx1_au1000_eth0_pdata);
+
        rc = gpio_request(mtx1_gpio_button[0].gpio,
                                        mtx1_gpio_button[0].desc);
        if (rc < 0) {
diff --git a/arch/powerpc/kernel/pci_of_scan.c 
b/arch/powerpc/kernel/pci_of_scan.c
index 5c3c8c9..4aa1740 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -310,8 +310,6 @@ static void __devinit __of_scan_bus(struct device_node 
*node,
        /* Scan direct children */
        for_each_child_of_node(node, child) {
                pr_debug("  * %s\n", child->full_name);
-               if (!of_device_is_available(child))
-                       continue;
                reg = of_get_property(child, "reg", &reglen);
                if (reg == NULL || reglen < 20)
                        continue;
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 60d78e7..e06d18c 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -309,17 +309,11 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
                                      unsigned int id)
 {
-       struct kvm_vcpu *vcpu;
-       int rc = -EINVAL;
-
-       if (id >= KVM_MAX_VCPUS)
-               goto out;
-
-       rc = -ENOMEM;
+       struct kvm_vcpu *vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
+       int rc = -ENOMEM;
 
-       vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
        if (!vcpu)
-               goto out;
+               goto out_nomem;
 
        vcpu->arch.sie_block = (struct kvm_s390_sie_block *)
                                        get_zeroed_page(GFP_KERNEL);
@@ -354,7 +348,7 @@ out_free_sie_block:
        free_page((unsigned long)(vcpu->arch.sie_block));
 out_free_cpu:
        kfree(vcpu);
-out:
+out_nomem:
        return ERR_PTR(rc);
 }
 
diff --git a/arch/sparc/include/asm/spinlock_32.h 
b/arch/sparc/include/asm/spinlock_32.h
index dc1355f..7f9b9db 100644
--- a/arch/sparc/include/asm/spinlock_32.h
+++ b/arch/sparc/include/asm/spinlock_32.h
@@ -130,15 +130,6 @@ static inline void arch_write_lock(arch_rwlock_t *rw)
        *(volatile __u32 *)&lp->lock = ~0U;
 }
 
-static void inline arch_write_unlock(arch_rwlock_t *lock)
-{
-       __asm__ __volatile__(
-"      st              %%g0, [%0]"
-       : /* no outputs */
-       : "r" (lock)
-       : "memory");
-}
-
 static inline int arch_write_trylock(arch_rwlock_t *rw)
 {
        unsigned int val;
@@ -183,6 +174,8 @@ static inline int __arch_read_trylock(arch_rwlock_t *rw)
        res; \
 })
 
+#define arch_write_unlock(rw)  do { (rw)->lock = 0; } while(0)
+
 #define arch_spin_lock_flags(lock, flags) arch_spin_lock(lock)
 #define arch_read_lock_flags(rw, flags)   arch_read_lock(rw)
 #define arch_write_lock_flags(rw, flags)  arch_write_lock(rw)
diff --git a/arch/sparc/include/asm/spinlock_64.h 
b/arch/sparc/include/asm/spinlock_64.h
index 9689176..073936a 100644
--- a/arch/sparc/include/asm/spinlock_64.h
+++ b/arch/sparc/include/asm/spinlock_64.h
@@ -210,8 +210,14 @@ static int inline arch_write_trylock(arch_rwlock_t *lock)
        return result;
 }
 
+#define arch_read_lock(p)      arch_read_lock(p)
 #define arch_read_lock_flags(p, f) arch_read_lock(p)
+#define arch_read_trylock(p)   arch_read_trylock(p)
+#define arch_read_unlock(p)    arch_read_unlock(p)
+#define arch_write_lock(p)     arch_write_lock(p)
 #define arch_write_lock_flags(p, f) arch_write_lock(p)
+#define arch_write_unlock(p)   arch_write_unlock(p)
+#define arch_write_trylock(p)  arch_write_trylock(p)
 
 #define arch_read_can_lock(rw)         (!((rw)->lock & 0x80000000UL))
 #define arch_write_can_lock(rw)        (!(rw)->lock)
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index c6ed432..4e2724e 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -349,8 +349,8 @@ int __init pcic_probe(void)
        strcpy(pbm->prom_name, namebuf);
 
        {
-               extern volatile int t_nmi[4];
-               extern int pcic_nmi_trap_patch[4];
+               extern volatile int t_nmi[1];
+               extern int pcic_nmi_trap_patch[1];
 
                t_nmi[0] = pcic_nmi_trap_patch[0];
                t_nmi[1] = pcic_nmi_trap_patch[1];
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 79d59af..7eb1dd7 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -767,29 +767,6 @@ extern unsigned long               
boot_option_idle_override;
 extern unsigned long           idle_halt;
 extern unsigned long           idle_nomwait;
 
-/*
- * on systems with caches, caches must be flashed as the absolute
- * last instruction before going into a suspended halt.  Otherwise,
- * dirty data can linger in the cache and become stale on resume,
- * leading to strange errors.
- *
- * perform a variety of operations to guarantee that the compiler
- * will not reorder instructions.  wbinvd itself is serializing
- * so the processor will not reorder.
- *
- * Systems without cache can just go into halt.
- */
-static inline void wbinvd_halt(void)
-{
-       mb();
-       /* check for clflush to determine if wbinvd is legal */
-       if (cpu_has_clflush)
-               asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory");
-       else
-               while (1)
-                       halt();
-}
-
 extern void enable_sep_cpu(void);
 extern int sysenter_setup(void);
 
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 0773533..e803550 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -1066,7 +1066,7 @@ static int alloc_new_range(struct dma_ops_domain *dma_dom,
                if (!pte || !IOMMU_PTE_PRESENT(*pte))
                        continue;
 
-               dma_ops_reserve_addresses(dma_dom, i >> PAGE_SHIFT, 1);
+               dma_ops_reserve_addresses(dma_dom, i << PAGE_SHIFT, 1);
        }
 
        update_domain(&dma_dom->domain);
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index f672f97..5b8c750 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -74,10 +74,8 @@ DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
        /*
         * Undefined/reserved opcodes, conditional jump, Opcode Extension
         * Groups, and some special opcodes can not boost.
-        * This is non-const to keep gcc from statically optimizing it out, as
-        * variable_test_bit makes gcc think only *(unsigned long*) is used.
         */
-static u32 twobyte_is_boostable[256 / 32] = {
+static const u32 twobyte_is_boostable[256 / 32] = {
        /*      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f          */
        /*      ----------------------------------------------          */
        W(0x00, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0) | /* 00 */
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index f9bdcdb..ea1ab22 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1329,11 +1329,94 @@ void play_dead_common(void)
        local_irq_disable();
 }
 
+#define MWAIT_SUBSTATE_MASK            0xf
+#define MWAIT_SUBSTATE_SIZE            4
+
+#define CPUID_MWAIT_LEAF               5
+#define CPUID5_ECX_EXTENSIONS_SUPPORTED 0x1
+
+/*
+ * We need to flush the caches before going to sleep, lest we have
+ * dirty data in our caches when we come back up.
+ */
+static inline void mwait_play_dead(void)
+{
+       unsigned int eax, ebx, ecx, edx;
+       unsigned int highest_cstate = 0;
+       unsigned int highest_subcstate = 0;
+       int i;
+       void *mwait_ptr;
+
+       if (!cpu_has(&current_cpu_data, X86_FEATURE_MWAIT))
+               return;
+       if (!cpu_has(&current_cpu_data, X86_FEATURE_CLFLSH))
+               return;
+       if (current_cpu_data.cpuid_level < CPUID_MWAIT_LEAF)
+               return;
+
+       eax = CPUID_MWAIT_LEAF;
+       ecx = 0;
+       native_cpuid(&eax, &ebx, &ecx, &edx);
+
+       /*
+        * eax will be 0 if EDX enumeration is not valid.
+        * Initialized below to cstate, sub_cstate value when EDX is valid.
+        */
+       if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED)) {
+               eax = 0;
+       } else {
+               edx >>= MWAIT_SUBSTATE_SIZE;
+               for (i = 0; i < 7 && edx; i++, edx >>= MWAIT_SUBSTATE_SIZE) {
+                       if (edx & MWAIT_SUBSTATE_MASK) {
+                               highest_cstate = i;
+                               highest_subcstate = edx & MWAIT_SUBSTATE_MASK;
+                       }
+               }
+               eax = (highest_cstate << MWAIT_SUBSTATE_SIZE) |
+                       (highest_subcstate - 1);
+       }
+
+       /*
+        * This should be a memory location in a cache line which is
+        * unlikely to be touched by other processors.  The actual
+        * content is immaterial as it is not actually modified in any way.
+        */
+       mwait_ptr = &current_thread_info()->flags;
+
+       wbinvd();
+
+       while (1) {
+               /*
+                * The CLFLUSH is a workaround for erratum AAI65 for
+                * the Xeon 7400 series.  It's not clear it is actually
+                * needed, but it should be harmless in either case.
+                * The WBINVD is insufficient due to the spurious-wakeup
+                * case where we return around the loop.
+                */
+               clflush(mwait_ptr);
+               __monitor(mwait_ptr, 0, 0);
+               mb();
+               __mwait(eax, 0);
+       }
+}
+
+static inline void hlt_play_dead(void)
+{
+       if (current_cpu_data.x86 >= 4)
+               wbinvd();
+
+       while (1) {
+               native_halt();
+       }
+}
+
 void native_play_dead(void)
 {
        play_dead_common();
        tboot_shutdown(TB_SHUTDOWN_WFS);
-       wbinvd_halt();
+
+       mwait_play_dead();      /* Only returns on failure */
+       hlt_play_dead();
 }
 
 #else /* ... !CONFIG_HOTPLUG_CPU */
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 6c6e733..ad5df67 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -30,7 +30,6 @@
 #include <xen/page.h>
 #include <xen/events.h>
 
-#include <xen/hvc-console.h>
 #include "xen-ops.h"
 #include "mmu.h"
 
@@ -181,15 +180,6 @@ static void __init xen_smp_prepare_cpus(unsigned int 
max_cpus)
 {
        unsigned cpu;
 
-       if (skip_ioapic_setup) {
-               char *m = (max_cpus == 0) ?
-                       "The nosmp parameter is incompatible with Xen; " \
-                       "use Xen dom0_max_vcpus=1 parameter" :
-                       "The noapic parameter is incompatible with Xen";
-
-               xen_raw_printk(m);
-               panic(m);
-       }
        xen_init_lock_cpu(0);
 
        smp_store_cpu_info(0);
diff --git a/arch/x86/xen/xen-asm_32.S b/arch/x86/xen/xen-asm_32.S
index 9a95a9c..88e15de 100644
--- a/arch/x86/xen/xen-asm_32.S
+++ b/arch/x86/xen/xen-asm_32.S
@@ -113,13 +113,11 @@ xen_iret_start_crit:
 
        /*
         * If there's something pending, mask events again so we can
-        * jump back into xen_hypervisor_callback. Otherwise do not
-        * touch XEN_vcpu_info_mask.
+        * jump back into xen_hypervisor_callback
         */
-       jne 1f
-       movb $1, XEN_vcpu_info_mask(%eax)
+       sete XEN_vcpu_info_mask(%eax)
 
-1:     popl %eax
+       popl %eax
 
        /*
         * From this point on the registers are restored and the stack
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index fd38ea9..198224b 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -2769,18 +2769,6 @@ static bool ahci_sb600_enable_64bit(struct pci_dev *pdev)
                                DMI_MATCH(DMI_BOARD_NAME, "MS-7376"),
                        },
                },
-               /*
-                * All BIOS versions for the Asus M3A support 64bit DMA.
-                * (all release versions from 0301 to 1206 were tested)
-                */
-               {
-                       .ident = "ASUS M3A",
-                       .matches = {
-                               DMI_MATCH(DMI_BOARD_VENDOR,
-                                         "ASUSTeK Computer INC."),
-                               DMI_MATCH(DMI_BOARD_NAME, "M3A"),
-                       },
-               },
                { }
        };
        const struct dmi_system_id *match;
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index ed39cb159..05a31e5 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -890,7 +890,7 @@ static void blkfront_connect(struct blkfront_info *info)
        }
 
        err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
-                           "feature-barrier", "%d", &info->feature_barrier,
+                           "feature-barrier", "%lu", &info->feature_barrier,
                            NULL);
        if (err)
                info->feature_barrier = 0;
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index 8894255..416d342 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -162,10 +162,8 @@ static void hvc_console_print(struct console *co, const 
char *b,
                } else {
                        r = cons_ops[index]->put_chars(vtermnos[index], c, i);
                        if (r <= 0) {
-                               /* throw away characters on error
-                                * but spin in case of -EAGAIN */
-                               if (r != -EAGAIN)
-                                       i = 0;
+                               /* throw away chars on error */
+                               i = 0;
                        } else if (r > 0) {
                                i -= r;
                                if (i > 0)
@@ -444,7 +442,7 @@ static int hvc_push(struct hvc_struct *hp)
 
        n = hp->ops->put_chars(hp->vtermno, hp->outbuf, hp->n_outbuf);
        if (n <= 0) {
-               if (n == 0 || n == -EAGAIN) {
+               if (n == 0) {
                        hp->do_wakeup = 1;
                        return 0;
                }
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
index 6fc2332..4b6c3ea 100644
--- a/drivers/char/tpm/tpm.c
+++ b/drivers/char/tpm/tpm.c
@@ -374,9 +374,6 @@ static ssize_t tpm_transmit(struct tpm_chip *chip, const 
char *buf,
        u32 count, ordinal;
        unsigned long stop;
 
-       if (bufsiz > TPM_BUFSIZE)
-               bufsiz = TPM_BUFSIZE;
-
        count = be32_to_cpu(*((__be32 *) (buf + 2)));
        ordinal = be32_to_cpu(*((__be32 *) (buf + 6)));
        if (count == 0)
@@ -1030,7 +1027,6 @@ ssize_t tpm_read(struct file *file, char __user *buf,
 {
        struct tpm_chip *chip = file->private_data;
        ssize_t ret_size;
-       int rc;
 
        del_singleshot_timer_sync(&chip->user_read_timer);
        flush_scheduled_work();
@@ -1041,11 +1037,8 @@ ssize_t tpm_read(struct file *file, char __user *buf,
                        ret_size = size;
 
                mutex_lock(&chip->buffer_mutex);
-               rc = copy_to_user(buf, chip->data_buffer, ret_size);
-               memset(chip->data_buffer, 0, ret_size);
-               if (rc)
+               if (copy_to_user(buf, chip->data_buffer, ret_size))
                        ret_size = -EFAULT;
-
                mutex_unlock(&chip->buffer_mutex);
        }
 
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index e9a160d..5ec8a79 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -389,9 +389,6 @@
 #define USB_VENDOR_ID_SAMSUNG          0x0419
 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE        0x0001
 
-#define USB_VENDOR_ID_SIGMA_MICRO      0x1c4f
-#define USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD     0x0002
-
 #define USB_VENDOR_ID_SONY                     0x054c
 #define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE      0x024b
 #define USB_DEVICE_ID_SONY_PS3_CONTROLLER      0x0268
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index 24d8704..38773dc 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -66,7 +66,6 @@ static const struct hid_blacklist {
        { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, 
HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, 
HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
 
-       { USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEYBOARD, 
HID_QUIRK_NO_INIT_REPORTS },
        { 0, 0 }
 };
 
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index a679d01..0dcaba9 100644
--- a/drivers/hwmon/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
@@ -1273,8 +1273,7 @@ static void w83627ehf_device_remove_files(struct device 
*dev)
 }
 
 /* Get the monitoring functions started */
-static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data,
-                                                  enum kinds kind)
+static inline void __devinit w83627ehf_init_device(struct w83627ehf_data *data)
 {
        int i;
        u8 tmp, diode;
@@ -1303,16 +1302,10 @@ static inline void __devinit 
w83627ehf_init_device(struct w83627ehf_data *data,
                w83627ehf_write_value(data, W83627EHF_REG_VBAT, tmp | 0x01);
 
        /* Get thermal sensor types */
-       switch (kind) {
-       case w83627ehf:
-               diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
-               break;
-       default:
-               diode = 0x70;
-       }
+       diode = w83627ehf_read_value(data, W83627EHF_REG_DIODE);
        for (i = 0; i < 3; i++) {
                if ((tmp & (0x02 << i)))
-                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3;
+                       data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 2;
                else
                        data->temp_type[i] = 4; /* thermistor */
        }
@@ -1360,7 +1353,7 @@ static int __devinit w83627ehf_probe(struct 
platform_device *pdev)
        }
 
        /* Initialize the chip */
-       w83627ehf_init_device(data, sio_data->kind);
+       w83627ehf_init_device(data);
 
        data->vrm = vid_which_vrm();
        superio_enter(sio_data->sioreg);
diff --git a/drivers/md/linear.h b/drivers/md/linear.h
index 2f2da05..0ce29b6 100644
--- a/drivers/md/linear.h
+++ b/drivers/md/linear.h
@@ -10,9 +10,9 @@ typedef struct dev_info dev_info_t;
 
 struct linear_private_data
 {
-       struct rcu_head         rcu;
        sector_t                array_sectors;
        dev_info_t              disks[0];
+       struct rcu_head         rcu;
 };
 
 
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 803f101..4610aa3 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -980,11 +980,8 @@ static int super_90_load(mdk_rdev_t *rdev, mdk_rdev_t 
*refdev, int minor_version
                        ret = 0;
        }
        rdev->sectors = rdev->sb_start;
-       /* Limit to 4TB as metadata cannot record more than that */
-       if (rdev->sectors >= (2ULL << 32))
-               rdev->sectors = (2ULL << 32) - 2;
 
-       if (rdev->sectors < ((sector_t)sb->size) * 2 && sb->level >= 1)
+       if (rdev->sectors < sb->size * 2 && sb->level > 1)
                /* "this cannot possibly happen" ... */
                ret = -EINVAL;
 
@@ -1019,7 +1016,7 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t 
*rdev)
                mddev->clevel[0] = 0;
                mddev->layout = sb->layout;
                mddev->raid_disks = sb->raid_disks;
-               mddev->dev_sectors = ((sector_t)sb->size) * 2;
+               mddev->dev_sectors = sb->size * 2;
                mddev->events = ev1;
                mddev->bitmap_info.offset = 0;
                mddev->bitmap_info.default_offset = MD_SB_BYTES >> 9;
@@ -1258,11 +1255,6 @@ super_90_rdev_size_change(mdk_rdev_t *rdev, sector_t 
num_sectors)
        rdev->sb_start = calc_dev_sboffset(rdev->bdev);
        if (!num_sectors || num_sectors > rdev->sb_start)
                num_sectors = rdev->sb_start;
-       /* Limit to 4TB as metadata cannot record more than that.
-        * 4TB == 2^32 KB, or 2*2^32 sectors.
-        */
-       if (num_sectors >= (2ULL << 32))
-               num_sectors = (2ULL << 32) - 2;
        md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size,
                       rdev->sb_page);
        md_super_wait(rdev->mddev);
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c 
b/drivers/media/video/cx23885/cx23885-dvb.c
index a4f03e8..e45d2df 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -741,7 +741,7 @@ static int dvb_register(struct cx23885_tsport *port)
                        static struct xc2028_ctrl ctl = {
                                .fname   = XC3028L_DEFAULT_FIRMWARE,
                                .max_len = 64,
-                               .demod   = XC3028_FE_DIBCOM52,
+                               .demod   = 5000,
                                /* This is true for all demods with
                                        v36 firmware? */
                                .type    = XC2028_D2633,
diff --git a/drivers/media/video/uvc/uvc_driver.c 
b/drivers/media/video/uvc/uvc_driver.c
index 860e823..86699b1 100644
--- a/drivers/media/video/uvc/uvc_driver.c
+++ b/drivers/media/video/uvc/uvc_driver.c
@@ -1891,7 +1891,7 @@ static int __uvc_resume(struct usb_interface *intf, int 
reset)
 
        list_for_each_entry(stream, &dev->streams, list) {
                if (stream->intf == intf)
-                       return uvc_video_resume(stream, reset);
+                       return uvc_video_resume(stream);
        }
 
        uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB interface "
diff --git a/drivers/media/video/uvc/uvc_video.c 
b/drivers/media/video/uvc/uvc_video.c
index a463b48..253eed8 100644
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -1045,18 +1045,10 @@ int uvc_video_suspend(struct uvc_streaming *stream)
  * buffers, making sure userspace applications are notified of the problem
  * instead of waiting forever.
  */
-int uvc_video_resume(struct uvc_streaming *stream, int reset)
+int uvc_video_resume(struct uvc_streaming *stream)
 {
        int ret;
 
-       /* If the bus has been reset on resume, set the alternate setting to 0.
-        * This should be the default value, but some devices crash or otherwise
-        * misbehave if they don't receive a SET_INTERFACE request before any
-        * other video control request.
-        */
-       if (reset)
-               usb_set_interface(stream->dev->udev, stream->intfnum, 0);
-
        stream->frozen = 0;
 
        ret = uvc_commit_video(stream, &stream->ctrl);
diff --git a/drivers/media/video/uvc/uvcvideo.h 
b/drivers/media/video/uvc/uvcvideo.h
index f5925f6..b6f6f38 100644
--- a/drivers/media/video/uvc/uvcvideo.h
+++ b/drivers/media/video/uvc/uvcvideo.h
@@ -604,7 +604,7 @@ extern const struct v4l2_file_operations uvc_fops;
 /* Video */
 extern int uvc_video_init(struct uvc_streaming *stream);
 extern int uvc_video_suspend(struct uvc_streaming *stream);
-extern int uvc_video_resume(struct uvc_streaming *stream, int reset);
+extern int uvc_video_resume(struct uvc_streaming *stream);
 extern int uvc_video_enable(struct uvc_streaming *stream, int enable);
 extern int uvc_probe_video(struct uvc_streaming *stream,
                struct uvc_streaming_control *probe);
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index cd43fbb..4332b3a 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -4520,7 +4520,7 @@ static int cnic_netdev_event(struct notifier_block *this, 
unsigned long event,
 
        dev = cnic_from_netdev(netdev);
 
-       if (!dev && (event == NETDEV_REGISTER || netif_running(netdev))) {
+       if (!dev && (event == NETDEV_REGISTER || event == NETDEV_UP)) {
                /* Check for the hot-plug device */
                dev = is_cnic_dev(netdev);
                if (dev) {
@@ -4536,7 +4536,7 @@ static int cnic_netdev_event(struct notifier_block *this, 
unsigned long event,
                else if (event == NETDEV_UNREGISTER)
                        cnic_ulp_exit(dev);
 
-               if (event == NETDEV_UP || (new_dev && netif_running(netdev))) {
+               if (event == NETDEV_UP) {
                        if (cnic_register_netdev(dev) != 0) {
                                cnic_put(dev);
                                goto done;
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index 0d82be0..8d7d87f 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -3842,12 +3842,6 @@ s32 e1000_validate_eeprom_checksum(struct e1000_hw *hw)
                checksum += eeprom_data;
        }
 
-#ifdef CONFIG_PARISC
-       /* This is a signature and not a checksum on HP c8000 */
-       if ((hw->subsystem_vendor_id == 0x103C) && (eeprom_data == 0x16d6))
-               return E1000_SUCCESS;
-
-#endif
        if (checksum == (u16) EEPROM_SUM)
                return E1000_SUCCESS;
        else {
diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c
index eeeca07..8f7d0d1 100644
--- a/drivers/net/irda/smsc-ircc2.c
+++ b/drivers/net/irda/smsc-ircc2.c
@@ -515,7 +515,7 @@ static const struct net_device_ops smsc_ircc_netdev_ops = {
  *    Try to open driver instance
  *
  */
-static int __devinit smsc_ircc_open(unsigned int fir_base, unsigned int 
sir_base, u8 dma, u8 irq)
+static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, 
u8 dma, u8 irq)
 {
        struct smsc_ircc_cb *self;
        struct net_device *dev;
diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
index ae88ce8..ede937e 100644
--- a/drivers/net/rionet.c
+++ b/drivers/net/rionet.c
@@ -87,8 +87,8 @@ static struct rio_dev **rionet_active;
 #define dev_rionet_capable(dev) \
        is_rionet_capable(dev->pef, dev->src_ops, dev->dst_ops)
 
-#define RIONET_MAC_MATCH(x)    (!memcmp((x), "\00\01\00\01", 4))
-#define RIONET_GET_DESTID(x)   ((*((u8 *)x + 4) << 8) | *((u8 *)x + 5))
+#define RIONET_MAC_MATCH(x)    (*(u32 *)x == 0x00010001)
+#define RIONET_GET_DESTID(x)   (*(u16 *)(x + 4))
 
 static int rionet_rx_clean(struct net_device *ndev)
 {
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index 4dfbc79..a516185 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -1441,10 +1441,6 @@ static const struct usb_device_id        products [] = {
        USB_DEVICE (0x04f1, 0x3008),
        .driver_info = (unsigned long) &ax8817x_info,
 }, {
-       // ASIX AX88772B 10/100
-       USB_DEVICE (0x0b95, 0x772b),
-       .driver_info = (unsigned long) &ax88772_info,
-}, {
        // ASIX AX88772 10/100
        USB_DEVICE (0x0b95, 0x7720),
        .driver_info = (unsigned long) &ax88772_info,
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index f16c136..9eb4f5e 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1526,8 +1526,7 @@ static void handle_irq_beacon(struct b43_wldev *dev)
        u32 cmd, beacon0_valid, beacon1_valid;
 
        if (!b43_is_mode(wl, NL80211_IFTYPE_AP) &&
-           !b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) &&
-           !b43_is_mode(wl, NL80211_IFTYPE_ADHOC))
+           !b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT))
                return;
 
        /* This is the bottom half of the asynchronous beacon update. */
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c 
b/drivers/net/wireless/rt2x00/rt2800lib.c
index 60f7ba4..9deae41 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1694,15 +1694,14 @@ static void rt2800_efuse_read(struct rt2x00_dev 
*rt2x00dev, unsigned int i)
        rt2800_regbusy_read(rt2x00dev, EFUSE_CTRL, EFUSE_CTRL_KICK, &reg);
 
        /* Apparently the data is read from end to start */
-       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA3, &reg);
-       /* The returned value is in CPU order, but eeprom is le */
-       rt2x00dev->eeprom[i] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA2, &reg);
-       *(u32 *)&rt2x00dev->eeprom[i + 2] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA1, &reg);
-       *(u32 *)&rt2x00dev->eeprom[i + 4] = cpu_to_le32(reg);
-       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA0, &reg);
-       *(u32 *)&rt2x00dev->eeprom[i + 6] = cpu_to_le32(reg);
+       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA3,
+                                       (u32 *)&rt2x00dev->eeprom[i]);
+       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA2,
+                                       (u32 *)&rt2x00dev->eeprom[i + 2]);
+       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA1,
+                                       (u32 *)&rt2x00dev->eeprom[i + 4]);
+       rt2800_register_read_lock(rt2x00dev, EFUSE_DATA0,
+                                       (u32 *)&rt2x00dev->eeprom[i + 6]);
 
        mutex_unlock(&rt2x00dev->csr_mutex);
 }
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c 
b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 3c3e1ec..0a751e7 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -705,8 +705,18 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, 
pm_message_t state)
 {
        struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
        struct rt2x00_dev *rt2x00dev = hw->priv;
+       int retval;
+
+       retval = rt2x00lib_suspend(rt2x00dev, state);
+       if (retval)
+               return retval;
 
-       return rt2x00lib_suspend(rt2x00dev, state);
+       /*
+        * Decrease usbdev refcount.
+        */
+       usb_put_dev(interface_to_usbdev(usb_intf));
+
+       return 0;
 }
 EXPORT_SYMBOL_GPL(rt2x00usb_suspend);
 
@@ -715,6 +725,8 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
        struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
        struct rt2x00_dev *rt2x00dev = hw->priv;
 
+       usb_get_dev(interface_to_usbdev(usb_intf));
+
        return rt2x00lib_resume(rt2x00dev);
 }
 EXPORT_SYMBOL_GPL(rt2x00usb_resume);
diff --git a/drivers/platform/x86/thinkpad_acpi.c 
b/drivers/platform/x86/thinkpad_acpi.c
index 6fa918c..e7b0c3b 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -122,9 +122,7 @@ enum {
 };
 
 /* ACPI HIDs */
-#define TPACPI_ACPI_IBM_HKEY_HID       "IBM0068"
-#define TPACPI_ACPI_LENOVO_HKEY_HID    "LEN0068"
-#define TPACPI_ACPI_EC_HID             "PNP0C09"
+#define TPACPI_ACPI_HKEY_HID           "IBM0068"
 
 /* Input IDs */
 #define TPACPI_HKEY_INPUT_PRODUCT      0x5054 /* "TP" */
@@ -3851,8 +3849,7 @@ errexit:
 }
 
 static const struct acpi_device_id ibm_htk_device_ids[] = {
-       {TPACPI_ACPI_IBM_HKEY_HID, 0},
-       {TPACPI_ACPI_LENOVO_HKEY_HID, 0},
+       {TPACPI_ACPI_HKEY_HID, 0},
        {"", 0},
 };
 
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c
index fcedb92..5f97ea2 100644
--- a/drivers/s390/cio/ccwgroup.c
+++ b/drivers/s390/cio/ccwgroup.c
@@ -66,12 +66,6 @@ __ccwgroup_remove_symlinks(struct ccwgroup_device *gdev)
        
 }
 
-static ssize_t ccwgroup_online_store(struct device *dev,
-                                    struct device_attribute *attr,
-                                    const char *buf, size_t count);
-static ssize_t ccwgroup_online_show(struct device *dev,
-                                   struct device_attribute *attr,
-                                   char *buf);
 /*
  * Provide an 'ungroup' attribute so the user can remove group devices no
  * longer needed or accidentially created. Saves memory :)
@@ -118,20 +112,6 @@ out:
 }
 
 static DEVICE_ATTR(ungroup, 0200, NULL, ccwgroup_ungroup_store);
-static DEVICE_ATTR(online, 0644, ccwgroup_online_show, ccwgroup_online_store);
-
-static struct attribute *ccwgroup_attrs[] = {
-       &dev_attr_online.attr,
-       &dev_attr_ungroup.attr,
-       NULL,
-};
-static struct attribute_group ccwgroup_attr_group = {
-       .attrs = ccwgroup_attrs,
-};
-static const struct attribute_group *ccwgroup_attr_groups[] = {
-       &ccwgroup_attr_group,
-       NULL,
-};
 
 static void
 ccwgroup_release (struct device *dev)
@@ -300,17 +280,25 @@ int ccwgroup_create_from_string(struct device *root, 
unsigned int creator_id,
        }
 
        dev_set_name(&gdev->dev, "%s", dev_name(&gdev->cdev[0]->dev));
-       gdev->dev.groups = ccwgroup_attr_groups;
+
        rc = device_add(&gdev->dev);
        if (rc)
                goto error;
        get_device(&gdev->dev);
+       rc = device_create_file(&gdev->dev, &dev_attr_ungroup);
+
+       if (rc) {
+               device_unregister(&gdev->dev);
+               goto error;
+       }
+
        rc = __ccwgroup_create_symlinks(gdev);
        if (!rc) {
                mutex_unlock(&gdev->reg_mutex);
                put_device(&gdev->dev);
                return 0;
        }
+       device_remove_file(&gdev->dev, &dev_attr_ungroup);
        device_unregister(&gdev->dev);
 error:
        for (i = 0; i < num_devices; i++)
@@ -420,7 +408,7 @@ ccwgroup_online_store (struct device *dev, struct 
device_attribute *attr, const
        int ret;
 
        if (!dev->driver)
-               return -EINVAL;
+               return -ENODEV;
 

_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
unionfs-cvs@fsl.cs.sunysb.edu
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to