diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-02 12:04:23 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-02 12:04:23 -0700 |
commit | f63c580d89ac6d9801c1e05a0b476c945566c3f7 (patch) | |
tree | 899d5371b1503589b803bb4b67c004ab28ecf951 | |
parent | 3bbb6f7996cefe358965b7f22b3ea2c0a4c17cb8 (diff) | |
download | longterm-queue-2.6.32-f63c580d89ac6d9801c1e05a0b476c945566c3f7.tar.gz |
.32 patches
18 files changed, 855 insertions, 0 deletions
diff --git a/queue-2.6.32/asoc-ak4535-fixup-cache-register-table.patch b/queue-2.6.32/asoc-ak4535-fixup-cache-register-table.patch new file mode 100644 index 0000000..e6e71c2 --- /dev/null +++ b/queue-2.6.32/asoc-ak4535-fixup-cache-register-table.patch @@ -0,0 +1,38 @@ +From 7c04241acbdaf97f1448dcccd27ea0fcd1a57684 Mon Sep 17 00:00:00 2001 +From: Axel Lin <axel.lin@gmail.com> +Date: Thu, 13 Oct 2011 17:17:06 +0800 +Subject: ASoC: ak4535: fixup cache register table + +From: Axel Lin <axel.lin@gmail.com> + +commit 7c04241acbdaf97f1448dcccd27ea0fcd1a57684 upstream. + +ak4535_reg should be 8bit, but cache table is defined as 16bit. + +Signed-off-by: Axel Lin <axel.lin@gmail.com> +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/codecs/ak4535.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/sound/soc/codecs/ak4535.c ++++ b/sound/soc/codecs/ak4535.c +@@ -40,11 +40,11 @@ struct ak4535_priv { + /* + * ak4535 register cache + */ +-static const u16 ak4535_reg[AK4535_CACHEREGNUM] = { +- 0x0000, 0x0080, 0x0000, 0x0003, +- 0x0002, 0x0000, 0x0011, 0x0001, +- 0x0000, 0x0040, 0x0036, 0x0010, +- 0x0000, 0x0000, 0x0057, 0x0000, ++static const u8 ak4535_reg[AK4535_CACHEREGNUM] = { ++ 0x00, 0x80, 0x00, 0x03, ++ 0x02, 0x00, 0x11, 0x01, ++ 0x00, 0x40, 0x36, 0x10, ++ 0x00, 0x00, 0x57, 0x00, + }; + + /* diff --git a/queue-2.6.32/asoc-ak4642-fixup-cache-register-table.patch b/queue-2.6.32/asoc-ak4642-fixup-cache-register-table.patch new file mode 100644 index 0000000..a0037da --- /dev/null +++ b/queue-2.6.32/asoc-ak4642-fixup-cache-register-table.patch @@ -0,0 +1,51 @@ +From 19b115e523208a926813751aac8934cf3fc6085e Mon Sep 17 00:00:00 2001 +From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> +Date: Thu, 13 Oct 2011 02:03:54 -0700 +Subject: ASoC: ak4642: fixup cache register table + +From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> + +commit 19b115e523208a926813751aac8934cf3fc6085e upstream. + +ak4642 register was 8bit, but cache table was defined as 16bit. +ak4642 doesn't work correctry without this patch. + +Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/codecs/ak4642.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +--- a/sound/soc/codecs/ak4642.c ++++ b/sound/soc/codecs/ak4642.c +@@ -93,17 +93,17 @@ static struct snd_soc_codec *ak4642_code + /* + * ak4642 register cache + */ +-static const u16 ak4642_reg[AK4642_CACHEREGNUM] = { +- 0x0000, 0x0000, 0x0001, 0x0000, +- 0x0002, 0x0000, 0x0000, 0x0000, +- 0x00e1, 0x00e1, 0x0018, 0x0000, +- 0x00e1, 0x0018, 0x0011, 0x0008, +- 0x0000, 0x0000, 0x0000, 0x0000, +- 0x0000, 0x0000, 0x0000, 0x0000, +- 0x0000, 0x0000, 0x0000, 0x0000, +- 0x0000, 0x0000, 0x0000, 0x0000, +- 0x0000, 0x0000, 0x0000, 0x0000, +- 0x0000, ++static const u8 ak4642_reg[AK4642_CACHEREGNUM] = { ++ 0x00, 0x00, 0x01, 0x00, ++ 0x02, 0x00, 0x00, 0x00, ++ 0xe1, 0xe1, 0x18, 0x00, ++ 0xe1, 0x18, 0x11, 0x08, ++ 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, ++ 0x00, + }; + + /* diff --git a/queue-2.6.32/asoc-wm8940-properly-set-codec-dapm.bias_level.patch b/queue-2.6.32/asoc-wm8940-properly-set-codec-dapm.bias_level.patch new file mode 100644 index 0000000..a81ebb1 --- /dev/null +++ b/queue-2.6.32/asoc-wm8940-properly-set-codec-dapm.bias_level.patch @@ -0,0 +1,29 @@ +From 5927f94700e860ae27ff24e7f3bc9e4f7b9922eb Mon Sep 17 00:00:00 2001 +From: Axel Lin <axel.lin@gmail.com> +Date: Wed, 26 Oct 2011 09:53:41 +0800 +Subject: ASoC: wm8940: Properly set codec->dapm.bias_level + +From: Axel Lin <axel.lin@gmail.com> + +commit 5927f94700e860ae27ff24e7f3bc9e4f7b9922eb upstream. + +Reported-by: Chris Paulson-Ellis <chris@edesix.com> +Signed-off-by: Axel Lin <axel.lin@gmail.com> +Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + sound/soc/codecs/wm8940.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/soc/codecs/wm8940.c ++++ b/sound/soc/codecs/wm8940.c +@@ -473,6 +473,8 @@ static int wm8940_set_bias_level(struct + break; + } + ++ codec->dapm.bias_level = level; ++ + return ret; + } + diff --git a/queue-2.6.32/carminefb-fix-module-parameters-permissions.patch b/queue-2.6.32/carminefb-fix-module-parameters-permissions.patch new file mode 100644 index 0000000..eddc20e --- /dev/null +++ b/queue-2.6.32/carminefb-fix-module-parameters-permissions.patch @@ -0,0 +1,61 @@ +From c84c14224bbca6ec60d5851fcc87be0e34df2f44 Mon Sep 17 00:00:00 2001 +From: Jean Delvare <jdelvare@suse.de> +Date: Fri, 8 Jul 2011 11:04:38 +0200 +Subject: carminefb: Fix module parameters permissions + +From: Jean Delvare <jdelvare@suse.de> + +commit c84c14224bbca6ec60d5851fcc87be0e34df2f44 upstream. + +The third parameter of module_param is supposed to be an octal value. +The missing leading "0" causes the following: + +$ ls -l /sys/module/carminefb/parameters/ +total 0 +-rw-rwxr-- 1 root root 4096 Jul 8 08:55 fb_displays +-rw-rwxr-- 1 root root 4096 Jul 8 08:55 fb_mode +-rw-rwxr-- 1 root root 4096 Jul 8 08:55 fb_mode_str + +After fixing the perm parameter, we get the expected: + +$ ls -l /sys/module/carminefb/parameters/ +total 0 +-r--r--r-- 1 root root 4096 Jul 8 08:56 fb_displays +-r--r--r-- 1 root root 4096 Jul 8 08:56 fb_mode +-r--r--r-- 1 root root 4096 Jul 8 08:56 fb_mode_str + +Signed-off-by: Jean Delvare <jdelvare@suse.de> +Cc: Paul Mundt <lethal@linux-sh.org> +Cc: Sebastian Siewior <bigeasy@linutronix.de> +Signed-off-by: Paul Mundt <lethal@linux-sh.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/video/carminefb.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/video/carminefb.c ++++ b/drivers/video/carminefb.c +@@ -31,11 +31,11 @@ + #define CARMINEFB_DEFAULT_VIDEO_MODE 1 + + static unsigned int fb_mode = CARMINEFB_DEFAULT_VIDEO_MODE; +-module_param(fb_mode, uint, 444); ++module_param(fb_mode, uint, 0444); + MODULE_PARM_DESC(fb_mode, "Initial video mode as integer."); + + static char *fb_mode_str; +-module_param(fb_mode_str, charp, 444); ++module_param(fb_mode_str, charp, 0444); + MODULE_PARM_DESC(fb_mode_str, "Initial video mode in characters."); + + /* +@@ -45,7 +45,7 @@ MODULE_PARM_DESC(fb_mode_str, "Initial v + * 0b010 Display 1 + */ + static int fb_displays = CARMINE_USE_DISPLAY0 | CARMINE_USE_DISPLAY1; +-module_param(fb_displays, int, 444); ++module_param(fb_displays, int, 0444); + MODULE_PARM_DESC(fb_displays, "Bit mode, which displays are used"); + + struct carmine_hw { diff --git a/queue-2.6.32/ccwgroup-move-attributes-to-attribute-group.patch b/queue-2.6.32/ccwgroup-move-attributes-to-attribute-group.patch new file mode 100644 index 0000000..7bbfbfb --- /dev/null +++ b/queue-2.6.32/ccwgroup-move-attributes-to-attribute-group.patch @@ -0,0 +1,125 @@ +From dbdf1afcaaabe83dea15a3cb9b9013e73ae3b1ad Mon Sep 17 00:00:00 2001 +From: Sebastian Ott <sebott@linux.vnet.ibm.com> +Date: Sun, 30 Oct 2011 15:16:52 +0100 +Subject: [S390] ccwgroup: move attributes to attribute group + +From: Sebastian Ott <sebott@linux.vnet.ibm.com> + +commit dbdf1afcaaabe83dea15a3cb9b9013e73ae3b1ad upstream. + +Put sysfs attributes of ccwgroup devices in an attribute group to +ensure that these attributes are actually present when userspace +is notified via uevents. + +Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> +Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/s390/cio/ccwgroup.c | 42 ++++++++++++++++++++++-------------------- + 1 file changed, 22 insertions(+), 20 deletions(-) + +--- a/drivers/s390/cio/ccwgroup.c ++++ b/drivers/s390/cio/ccwgroup.c +@@ -66,6 +66,12 @@ __ccwgroup_remove_symlinks(struct ccwgro + + } + ++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 :) +@@ -112,6 +118,20 @@ 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) +@@ -280,25 +300,17 @@ int ccwgroup_create_from_string(struct d + } + + 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++) +@@ -408,7 +420,7 @@ ccwgroup_online_store (struct device *de + int ret; + + if (!dev->driver) +- return -ENODEV; ++ return -EINVAL; + + gdev = to_ccwgroupdev(dev); + gdrv = to_ccwgroupdrv(dev->driver); +@@ -441,8 +453,6 @@ ccwgroup_online_show (struct device *dev + return sprintf(buf, online ? "1\n" : "0\n"); + } + +-static DEVICE_ATTR(online, 0644, ccwgroup_online_show, ccwgroup_online_store); +- + static int + ccwgroup_probe (struct device *dev) + { +@@ -454,12 +464,7 @@ ccwgroup_probe (struct device *dev) + gdev = to_ccwgroupdev(dev); + gdrv = to_ccwgroupdrv(dev->driver); + +- if ((ret = device_create_file(dev, &dev_attr_online))) +- return ret; +- + ret = gdrv->probe ? gdrv->probe(gdev) : -ENODEV; +- if (ret) +- device_remove_file(dev, &dev_attr_online); + + return ret; + } +@@ -470,9 +475,6 @@ ccwgroup_remove (struct device *dev) + struct ccwgroup_device *gdev; + struct ccwgroup_driver *gdrv; + +- device_remove_file(dev, &dev_attr_online); +- device_remove_file(dev, &dev_attr_ungroup); +- + if (!dev->driver) + return 0; + diff --git a/queue-2.6.32/iommu-amd-fix-wrong-shift-direction.patch b/queue-2.6.32/iommu-amd-fix-wrong-shift-direction.patch new file mode 100644 index 0000000..05435ec --- /dev/null +++ b/queue-2.6.32/iommu-amd-fix-wrong-shift-direction.patch @@ -0,0 +1,30 @@ +From fcd0861db1cf4e6ed99f60a815b7b72c2ed36ea4 Mon Sep 17 00:00:00 2001 +From: Joerg Roedel <joerg.roedel@amd.com> +Date: Tue, 11 Oct 2011 17:41:32 +0200 +Subject: iommu/amd: Fix wrong shift direction + +From: Joerg Roedel <joerg.roedel@amd.com> + +commit fcd0861db1cf4e6ed99f60a815b7b72c2ed36ea4 upstream. + +The shift direction was wrong because the function takes a +page number and i is the address is the loop. + +Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + arch/x86/kernel/amd_iommu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/amd_iommu.c ++++ b/arch/x86/kernel/amd_iommu.c +@@ -842,7 +842,7 @@ static int alloc_new_range(struct amd_io + 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/queue-2.6.32/kmod-prevent-kmod_loop_msg-overflow-in-__request_module.patch b/queue-2.6.32/kmod-prevent-kmod_loop_msg-overflow-in-__request_module.patch new file mode 100644 index 0000000..6019d89 --- /dev/null +++ b/queue-2.6.32/kmod-prevent-kmod_loop_msg-overflow-in-__request_module.patch @@ -0,0 +1,40 @@ +From 37252db6aa576c34fd794a5a54fb32d7a8b3a07a Mon Sep 17 00:00:00 2001 +From: Jiri Kosina <jkosina@suse.cz> +Date: Wed, 26 Oct 2011 13:10:39 +1030 +Subject: kmod: prevent kmod_loop_msg overflow in __request_module() + +From: Jiri Kosina <jkosina@suse.cz> + +commit 37252db6aa576c34fd794a5a54fb32d7a8b3a07a upstream. + +Due to post-increment in condition of kmod_loop_msg in __request_module(), +the system log can be spammed by much more than 5 instances of the 'runaway +loop' message if the number of events triggering it makes the kmod_loop_msg +to overflow. + +Fix that by making sure we never increment it past the threshold. + +Signed-off-by: Jiri Kosina <jkosina@suse.cz> +Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + kernel/kmod.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/kernel/kmod.c ++++ b/kernel/kmod.c +@@ -106,10 +106,12 @@ int __request_module(bool wait, const ch + atomic_inc(&kmod_concurrent); + if (atomic_read(&kmod_concurrent) > max_modprobes) { + /* We may be blaming an innocent here, but unlikely */ +- if (kmod_loop_msg++ < 5) ++ if (kmod_loop_msg < 5) { + printk(KERN_ERR + "request_module: runaway loop modprobe %s\n", + module_name); ++ kmod_loop_msg++; ++ } + atomic_dec(&kmod_concurrent); + return -ENOMEM; + } diff --git a/queue-2.6.32/kobj_uevent-ignore-if-some-listeners-cannot-handle-message.patch b/queue-2.6.32/kobj_uevent-ignore-if-some-listeners-cannot-handle-message.patch new file mode 100644 index 0000000..584f252 --- /dev/null +++ b/queue-2.6.32/kobj_uevent-ignore-if-some-listeners-cannot-handle-message.patch @@ -0,0 +1,37 @@ +From ebf4127cd677e9781b450e44dfaaa1cc595efcaa Mon Sep 17 00:00:00 2001 +From: Milan Broz <mbroz@redhat.com> +Date: Mon, 22 Aug 2011 15:51:34 +0200 +Subject: kobj_uevent: Ignore if some listeners cannot handle message + +From: Milan Broz <mbroz@redhat.com> + +commit ebf4127cd677e9781b450e44dfaaa1cc595efcaa upstream. + +kobject_uevent() uses a multicast socket and should ignore +if one of listeners cannot handle messages or nobody is +listening at all. + +Easily reproducible when a process in system is cloned +with CLONE_NEWNET flag. + +(See also http://article.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/5256) + +Signed-off-by: Milan Broz <mbroz@redhat.com> +Acked-by: Kay Sievers <kay.sievers@vrfy.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + lib/kobject_uevent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/lib/kobject_uevent.c ++++ b/lib/kobject_uevent.c +@@ -235,7 +235,7 @@ int kobject_uevent_env(struct kobject *k + retval = netlink_broadcast(uevent_sock, skb, 0, 1, + GFP_KERNEL); + /* ENOBUFS should be handled in userspace */ +- if (retval == -ENOBUFS) ++ if (retval == -ENOBUFS || retval == -ESRCH) + retval = 0; + } else + retval = -ENOMEM; diff --git a/queue-2.6.32/kvm-s390-check-cpu_id-prior-to-using-it.patch b/queue-2.6.32/kvm-s390-check-cpu_id-prior-to-using-it.patch new file mode 100644 index 0000000..c941a7a --- /dev/null +++ b/queue-2.6.32/kvm-s390-check-cpu_id-prior-to-using-it.patch @@ -0,0 +1,53 @@ +From 4d47555a80495657161a7e71ec3014ff2021e450 Mon Sep 17 00:00:00 2001 +From: Carsten Otte <cotte@de.ibm.com> +Date: Tue, 18 Oct 2011 12:27:12 +0200 +Subject: KVM: s390: check cpu_id prior to using it + +From: Carsten Otte <cotte@de.ibm.com> + +commit 4d47555a80495657161a7e71ec3014ff2021e450 upstream. + +We use the cpu id provided by userspace as array index here. Thus we +clearly need to check it first. Ooops. + +Signed-off-by: Carsten Otte <cotte@de.ibm.com> +Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> +Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + arch/s390/kvm/kvm-s390.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +--- a/arch/s390/kvm/kvm-s390.c ++++ b/arch/s390/kvm/kvm-s390.c +@@ -308,11 +308,17 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu + struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, + unsigned int id) + { +- struct kvm_vcpu *vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL); +- int rc = -ENOMEM; ++ struct kvm_vcpu *vcpu; ++ int rc = -EINVAL; + ++ if (id >= KVM_MAX_VCPUS) ++ goto out; ++ ++ rc = -ENOMEM; ++ ++ vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL); + if (!vcpu) +- goto out_nomem; ++ goto out; + + vcpu->arch.sie_block = (struct kvm_s390_sie_block *) + get_zeroed_page(GFP_KERNEL); +@@ -347,7 +353,7 @@ out_free_sie_block: + free_page((unsigned long)(vcpu->arch.sie_block)); + out_free_cpu: + kfree(vcpu); +-out_nomem: ++out: + return ERR_PTR(rc); + } + diff --git a/queue-2.6.32/nfsd4-ignore-want-bits-in-open-downgrade.patch b/queue-2.6.32/nfsd4-ignore-want-bits-in-open-downgrade.patch new file mode 100644 index 0000000..8fbad21 --- /dev/null +++ b/queue-2.6.32/nfsd4-ignore-want-bits-in-open-downgrade.patch @@ -0,0 +1,30 @@ +From c30e92df30d7d5fe65262fbce5d1b7de675fe34e Mon Sep 17 00:00:00 2001 +From: "J. Bruce Fields" <bfields@redhat.com> +Date: Mon, 10 Oct 2011 17:34:31 -0400 +Subject: nfsd4: ignore WANT bits in open downgrade + +From: "J. Bruce Fields" <bfields@redhat.com> + +commit c30e92df30d7d5fe65262fbce5d1b7de675fe34e upstream. + +We don't use WANT bits yet--and sending them can probably trigger a +BUG() further down. + +Signed-off-by: J. Bruce Fields <bfields@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/nfsd/nfs4state.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/nfsd/nfs4state.c ++++ b/fs/nfsd/nfs4state.c +@@ -3079,6 +3079,8 @@ nfsd4_open_downgrade(struct svc_rqst *rq + if (!access_valid(od->od_share_access, cstate->minorversion) + || !deny_valid(od->od_share_deny)) + return nfserr_inval; ++ /* We don't yet support WANT bits: */ ++ od->od_share_access &= NFS4_SHARE_ACCESS_MASK; + + nfs4_lock_state(); + if ((status = nfs4_preprocess_seqid_op(cstate, diff --git a/queue-2.6.32/nfsd4-remove-check-for-a-32-bit-cookie-in-nfsd4_readdir.patch b/queue-2.6.32/nfsd4-remove-check-for-a-32-bit-cookie-in-nfsd4_readdir.patch new file mode 100644 index 0000000..314c08f --- /dev/null +++ b/queue-2.6.32/nfsd4-remove-check-for-a-32-bit-cookie-in-nfsd4_readdir.patch @@ -0,0 +1,34 @@ +From 832023bffb4b493f230be901f681020caf3ed1f8 Mon Sep 17 00:00:00 2001 +From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> +Date: Mon, 8 Aug 2011 17:38:08 +0200 +Subject: nfsd4: Remove check for a 32-bit cookie in nfsd4_readdir() + +From: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> + +commit 832023bffb4b493f230be901f681020caf3ed1f8 upstream. + +Fan Yong <yong.fan@whamcloud.com> noticed setting +FMODE_32bithash wouldn't work with nfsd v4, as +nfsd4_readdir() checks for 32 bit cookies. However, according to RFC 3530 +cookies have a 64 bit type and cookies are also defined as u64 in +'struct nfsd4_readdir'. So remove the test for >32-bit values. + +Signed-off-by: Bernd Schubert <bernd.schubert@itwm.fraunhofer.de> +Signed-off-by: J. Bruce Fields <bfields@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/nfsd/nfs4proc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/nfsd/nfs4proc.c ++++ b/fs/nfsd/nfs4proc.c +@@ -688,7 +688,7 @@ nfsd4_readdir(struct svc_rqst *rqstp, st + readdir->rd_bmval[1] &= nfsd_suppattrs1(cstate->minorversion); + readdir->rd_bmval[2] &= nfsd_suppattrs2(cstate->minorversion); + +- if ((cookie > ~(u32)0) || (cookie == 1) || (cookie == 2) || ++ if ((cookie == 1) || (cookie == 2) || + (cookie == 0 && memcmp(readdir->rd_verf.data, zeroverf.data, NFS4_VERIFIER_SIZE))) + return nfserr_bad_cookie; + diff --git a/queue-2.6.32/plat-mxc-iomux-v3.h-implicitly-enable-pull-up-down-when-that-s-desired.patch b/queue-2.6.32/plat-mxc-iomux-v3.h-implicitly-enable-pull-up-down-when-that-s-desired.patch new file mode 100644 index 0000000..1c025b6 --- /dev/null +++ b/queue-2.6.32/plat-mxc-iomux-v3.h-implicitly-enable-pull-up-down-when-that-s-desired.patch @@ -0,0 +1,52 @@ +From 6571534b600b8ca1936ff5630b9e0947f21faf16 Mon Sep 17 00:00:00 2001 +From: Paul Fertser <fercerpav@gmail.com> +Date: Mon, 10 Oct 2011 11:19:23 +0400 +Subject: plat-mxc: iomux-v3.h: implicitly enable pull-up/down when that's desired + +From: Paul Fertser <fercerpav@gmail.com> + +commit 6571534b600b8ca1936ff5630b9e0947f21faf16 upstream. + +To configure pads during the initialisation a set of special constants +is used, e.g. +#define MX25_PAD_FEC_MDIO__FEC_MDIO IOMUX_PAD(0x3c4, 0x1cc, 0x10, 0, 0, PAD_CTL_HYS | PAD_CTL_PUS_22K_UP) + +The problem is that no pull-up/down is getting activated unless both +PAD_CTL_PUE (pull-up enable) and PAD_CTL_PKE (pull/keeper module +enable) set. This is clearly stated in the i.MX25 datasheet and is +confirmed by the measurements on hardware. This leads to some rather +hard to understand bugs such as misdetecting an absent ethernet PHY (a +real bug i had), unstable data transfer etc. This might affect mx25, +mx35, mx50, mx51 and mx53 SoCs. + +It's reasonable to expect that if the pullup value is specified, the +intention was to have it actually active, so we implicitly add the +needed bits. + +Signed-off-by: Paul Fertser <fercerpav@gmail.com> +Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + arch/arm/plat-mxc/include/mach/iomux-v3.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- 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) +-#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_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_ODE (1 << 3) + diff --git a/queue-2.6.32/qe-fhci-fixed-the-control-bug.patch b/queue-2.6.32/qe-fhci-fixed-the-control-bug.patch new file mode 100644 index 0000000..3d61dd2 --- /dev/null +++ b/queue-2.6.32/qe-fhci-fixed-the-control-bug.patch @@ -0,0 +1,64 @@ +From 273d23574f9dacd9c63c80e7d63639a669aad441 Mon Sep 17 00:00:00 2001 +From: Jerry Huang <r66093@freescale.com> +Date: Tue, 18 Oct 2011 13:09:48 +0800 +Subject: QE/FHCI: fixed the CONTROL bug + +From: Jerry Huang <r66093@freescale.com> + +commit 273d23574f9dacd9c63c80e7d63639a669aad441 upstream. + +For USB CONTROL transaction, when the data length is zero, +the IN package is needed to finish this transaction in status stage. + +Signed-off-by: Jerry Huang <r66093@freescale.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/fhci-sched.c | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +--- a/drivers/usb/host/fhci-sched.c ++++ b/drivers/usb/host/fhci-sched.c +@@ -1,7 +1,7 @@ + /* + * Freescale QUICC Engine USB Host Controller Driver + * +- * Copyright (c) Freescale Semicondutor, Inc. 2006. ++ * Copyright (c) Freescale Semicondutor, Inc. 2006, 2011. + * Shlomi Gridish <gridish@freescale.com> + * Jerry Huang <Chang-Ming.Huang@freescale.com> + * Copyright (c) Logic Product Development, Inc. 2007 +@@ -810,9 +810,11 @@ void fhci_queue_urb(struct fhci_hcd *fhc + ed->dev_addr = usb_pipedevice(urb->pipe); + ed->max_pkt_size = usb_maxpacket(urb->dev, urb->pipe, + usb_pipeout(urb->pipe)); ++ /* setup stage */ + td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, FHCI_TA_SETUP, + USB_TD_TOGGLE_DATA0, urb->setup_packet, 8, 0, 0, true); + ++ /* data stage */ + if (data_len > 0) { + td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, + usb_pipeout(urb->pipe) ? FHCI_TA_OUT : +@@ -820,9 +822,18 @@ void fhci_queue_urb(struct fhci_hcd *fhc + USB_TD_TOGGLE_DATA1, data, data_len, 0, 0, + true); + } +- td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, +- usb_pipeout(urb->pipe) ? FHCI_TA_IN : FHCI_TA_OUT, +- USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true); ++ ++ /* status stage */ ++ if (data_len > 0) ++ td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, ++ (usb_pipeout(urb->pipe) ? FHCI_TA_IN : ++ FHCI_TA_OUT), ++ USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true); ++ else ++ td = fhci_td_fill(fhci, urb, urb_priv, ed, cnt++, ++ FHCI_TA_IN, ++ USB_TD_TOGGLE_DATA1, data, 0, 0, 0, true); ++ + urb_state = US_CTRL_SETUP; + break; + case FHCI_TF_ISO: diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 2df0a11..3d7f381 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -64,3 +64,20 @@ usb-add-reset_resume-for-webcams-shown-to-be-quirky.patch usb-pl2303-add-id-for-smart-device.patch usb-ftdi_sio-add-pid-for-sony-ericsson-urban.patch usb-ftdi_sio-support-ti-luminary-micro-stellaris-bd-icdi.patch +qe-fhci-fixed-the-control-bug.patch +update-email-address-for-stable-patch-submission.patch +kobj_uevent-ignore-if-some-listeners-cannot-handle-message.patch +kmod-prevent-kmod_loop_msg-overflow-in-__request_module.patch +time-change-jiffies_to_clock_t-argument-type-to-unsigned-long.patch +nfsd4-remove-check-for-a-32-bit-cookie-in-nfsd4_readdir.patch +nfsd4-ignore-want-bits-in-open-downgrade.patch +asoc-wm8940-properly-set-codec-dapm.bias_level.patch +asoc-ak4642-fixup-cache-register-table.patch +asoc-ak4535-fixup-cache-register-table.patch +kvm-s390-check-cpu_id-prior-to-using-it.patch +ccwgroup-move-attributes-to-attribute-group.patch +iommu-amd-fix-wrong-shift-direction.patch +carminefb-fix-module-parameters-permissions.patch +uvcvideo-set-alternate-setting-0-on-resume-if-the-bus-has-been-reset.patch +tuner_xc2028-allow-selection-of-the-frequency-adjustment-code-for-xc3028.patch +plat-mxc-iomux-v3.h-implicitly-enable-pull-up-down-when-that-s-desired.patch diff --git a/queue-2.6.32/time-change-jiffies_to_clock_t-argument-type-to-unsigned-long.patch b/queue-2.6.32/time-change-jiffies_to_clock_t-argument-type-to-unsigned-long.patch new file mode 100644 index 0000000..c68edb9 --- /dev/null +++ b/queue-2.6.32/time-change-jiffies_to_clock_t-argument-type-to-unsigned-long.patch @@ -0,0 +1,50 @@ +From cbbc719fccdb8cbd87350a05c0d33167c9b79365 Mon Sep 17 00:00:00 2001 +From: hank <pyu@redhat.com> +Date: Tue, 20 Sep 2011 13:53:39 -0700 +Subject: time: Change jiffies_to_clock_t() argument type to unsigned long + +From: hank <pyu@redhat.com> + +commit cbbc719fccdb8cbd87350a05c0d33167c9b79365 upstream. + +The parameter's origin type is long. On an i386 architecture, it can +easily be larger than 0x80000000, causing this function to convert it +to a sign-extended u64 type. + +Change the type to unsigned long so we get the correct result. + +Signed-off-by: hank <pyu@redhat.com> +Cc: John Stultz <john.stultz@linaro.org> +[ build fix ] +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Ingo Molnar <mingo@elte.hu> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + include/linux/jiffies.h | 2 +- + kernel/time.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/include/linux/jiffies.h ++++ b/include/linux/jiffies.h +@@ -303,7 +303,7 @@ extern void jiffies_to_timespec(const un + extern unsigned long timeval_to_jiffies(const struct timeval *value); + extern void jiffies_to_timeval(const unsigned long jiffies, + struct timeval *value); +-extern clock_t jiffies_to_clock_t(long x); ++extern clock_t jiffies_to_clock_t(unsigned long x); + extern unsigned long clock_t_to_jiffies(unsigned long x); + extern u64 jiffies_64_to_clock_t(u64 x); + extern u64 nsec_to_clock_t(u64 x); +--- a/kernel/time.c ++++ b/kernel/time.c +@@ -593,7 +593,7 @@ EXPORT_SYMBOL(jiffies_to_timeval); + /* + * Convert jiffies/jiffies_64 to clock_t and back. + */ +-clock_t jiffies_to_clock_t(long x) ++clock_t jiffies_to_clock_t(unsigned long x) + { + #if (TICK_NSEC % (NSEC_PER_SEC / USER_HZ)) == 0 + # if HZ < USER_HZ diff --git a/queue-2.6.32/tuner_xc2028-allow-selection-of-the-frequency-adjustment-code-for-xc3028.patch b/queue-2.6.32/tuner_xc2028-allow-selection-of-the-frequency-adjustment-code-for-xc3028.patch new file mode 100644 index 0000000..fe41e24 --- /dev/null +++ b/queue-2.6.32/tuner_xc2028-allow-selection-of-the-frequency-adjustment-code-for-xc3028.patch @@ -0,0 +1,32 @@ +From 9bed77ee2fb46b74782d0d9d14b92e9d07f3df6e Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab <mchehab@redhat.com> +Date: Thu, 28 Jul 2011 16:38:54 -0300 +Subject: [media] tuner_xc2028: Allow selection of the frequency adjustment code for XC3028 + +From: Mauro Carvalho Chehab <mchehab@redhat.com> + +commit 9bed77ee2fb46b74782d0d9d14b92e9d07f3df6e upstream. + +This device is not using the proper demod IF. Instead of using the +IF macro, it is specifying a IF frequency. This doesn't work, as xc3028 +needs to load an specific SCODE for the tuner. In this case, there's +no IF table for 5 MHz. + +Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/media/video/cx23885/cx23885-dvb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/media/video/cx23885/cx23885-dvb.c ++++ b/drivers/media/video/cx23885/cx23885-dvb.c +@@ -693,7 +693,7 @@ static int dvb_register(struct cx23885_t + static struct xc2028_ctrl ctl = { + .fname = XC3028L_DEFAULT_FIRMWARE, + .max_len = 64, +- .demod = 5000, ++ .demod = XC3028_FE_DIBCOM52, + /* This is true for all demods with + v36 firmware? */ + .type = XC2028_D2633, diff --git a/queue-2.6.32/update-email-address-for-stable-patch-submission.patch b/queue-2.6.32/update-email-address-for-stable-patch-submission.patch new file mode 100644 index 0000000..2ae27cd --- /dev/null +++ b/queue-2.6.32/update-email-address-for-stable-patch-submission.patch @@ -0,0 +1,38 @@ +From 5fa224295f0e0358c8bc0e5390702338df889def Mon Sep 17 00:00:00 2001 +From: Josh Boyer <jwboyer@redhat.com> +Date: Mon, 17 Oct 2011 21:16:39 -0400 +Subject: Update email address for stable patch submission + +From: Josh Boyer <jwboyer@redhat.com> + +commit 5fa224295f0e0358c8bc0e5390702338df889def upstream. + +The stable@kernel.org email address has been replaced with the +stable@vger.kernel.org mailing list. Change the stable kernel rules to +reference the new list instead of the semi-defunct email alias. + +Signed-off-by: Josh Boyer <jwboyer@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + Documentation/stable_kernel_rules.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/Documentation/stable_kernel_rules.txt ++++ b/Documentation/stable_kernel_rules.txt +@@ -25,13 +25,13 @@ Rules on what kind of patches are accept + Procedure for submitting patches to the -stable tree: + + - Send the patch, after verifying that it follows the above rules, to +- stable@kernel.org. ++ stable@vger.kernel.org. + - The sender will receive an ACK when the patch has been accepted into the + queue, or a NAK if the patch is rejected. This response might take a few + days, according to the developer's schedules. + - If accepted, the patch will be added to the -stable queue, for review by + other developers and by the relevant subsystem maintainer. +- - If the stable@kernel.org address is added to a patch, when it goes into ++ - If the stable@vger.kernel.org address is added to a patch, when it goes into + Linus's tree it will automatically be emailed to the stable team. + - Security patches should not be sent to this alias, but instead to the + documented security@kernel.org address. diff --git a/queue-2.6.32/uvcvideo-set-alternate-setting-0-on-resume-if-the-bus-has-been-reset.patch b/queue-2.6.32/uvcvideo-set-alternate-setting-0-on-resume-if-the-bus-has-been-reset.patch new file mode 100644 index 0000000..f9acc38 --- /dev/null +++ b/queue-2.6.32/uvcvideo-set-alternate-setting-0-on-resume-if-the-bus-has-been-reset.patch @@ -0,0 +1,74 @@ +From d59a7b1dbce8b972ec2dc9fcaaae0bfa23687423 Mon Sep 17 00:00:00 2001 +From: Ming Lei <tom.leiming@gmail.com> +Date: Sat, 16 Jul 2011 00:51:00 -0300 +Subject: [media] uvcvideo: Set alternate setting 0 on resume if the bus has been reset + +From: Ming Lei <tom.leiming@gmail.com> + +commit d59a7b1dbce8b972ec2dc9fcaaae0bfa23687423 upstream. + +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. + +Microdia's 0c45:6437 camera has been found to require this change or it +will stop sending video data after resume. + +uvc_video.c] + +Signed-off-by: Ming Lei <ming.lei@canonical.com> +Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/media/video/uvc/uvc_driver.c | 2 +- + drivers/media/video/uvc/uvc_video.c | 10 +++++++++- + drivers/media/video/uvc/uvcvideo.h | 2 +- + 3 files changed, 11 insertions(+), 3 deletions(-) + +--- a/drivers/media/video/uvc/uvc_driver.c ++++ b/drivers/media/video/uvc/uvc_driver.c +@@ -1889,7 +1889,7 @@ static int __uvc_resume(struct usb_inter + + list_for_each_entry(stream, &dev->streams, list) { + if (stream->intf == intf) +- return uvc_video_resume(stream); ++ return uvc_video_resume(stream, reset); + } + + uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB interface " +--- a/drivers/media/video/uvc/uvc_video.c ++++ b/drivers/media/video/uvc/uvc_video.c +@@ -1024,10 +1024,18 @@ int uvc_video_suspend(struct uvc_streami + * buffers, making sure userspace applications are notified of the problem + * instead of waiting forever. + */ +-int uvc_video_resume(struct uvc_streaming *stream) ++int uvc_video_resume(struct uvc_streaming *stream, int reset) + { + 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); +--- a/drivers/media/video/uvc/uvcvideo.h ++++ b/drivers/media/video/uvc/uvcvideo.h +@@ -608,7 +608,7 @@ extern const struct v4l2_file_operations + /* 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); ++extern int uvc_video_resume(struct uvc_streaming *stream, int reset); + 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); |