From: Greg Kroah-Hartman Date: Tue, 24 Apr 2012 17:52:44 +0000 (-0700) Subject: 3.3-stable patches X-Git-Tag: v3.0.30~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=556f9dcf398dc82d4e376972d52b934e89ea874a;p=thirdparty%2Fkernel%2Fstable-queue.git 3.3-stable patches added patches: bluetooth-add-support-for-atheros.patch dell-laptop-add-3-machines-that-has-touchpad-led.patch dell-laptop-touchpad-led-should-persist-its-status-after-s3.patch ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch kvm-unmap-pages-from-the-iommu-when-slots-are-removed.patch --- diff --git a/queue-3.3/bluetooth-add-support-for-atheros.patch b/queue-3.3/bluetooth-add-support-for-atheros.patch new file mode 100644 index 00000000000..988ffb14dd7 --- /dev/null +++ b/queue-3.3/bluetooth-add-support-for-atheros.patch @@ -0,0 +1,60 @@ +From 55ed7d4d1469eafbe3ad7e8fcd44f5af27845a81 Mon Sep 17 00:00:00 2001 +From: AceLan Kao +Date: Wed, 28 Mar 2012 10:25:36 +0800 +Subject: Bluetooth: Add support for Atheros [04ca:3005] + +From: AceLan Kao + +commit 55ed7d4d1469eafbe3ad7e8fcd44f5af27845a81 upstream. + +Add another vendor specific ID for Atheros AR3012 device. +This chip is wrapped by Lite-On Technology Corp. + +output of usb-devices: +T: Bus=04 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 +D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1 +P: Vendor=04ca ProdID=3005 Rev=00.02 +S: Manufacturer=Atheros Communications +S: Product=Bluetooth USB Host Controller +S: SerialNumber=Alaska Day 2006 +C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA +I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb +I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb + +Signed-off-by: AceLan Kao +Signed-off-by: Gustavo Padovan +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/bluetooth/ath3k.c | 2 ++ + drivers/bluetooth/btusb.c | 1 + + 2 files changed, 3 insertions(+) + +--- a/drivers/bluetooth/ath3k.c ++++ b/drivers/bluetooth/ath3k.c +@@ -74,6 +74,7 @@ static struct usb_device_id ath3k_table[ + { USB_DEVICE(0x0CF3, 0x3004) }, + { USB_DEVICE(0x0CF3, 0x311D) }, + { USB_DEVICE(0x13d3, 0x3375) }, ++ { USB_DEVICE(0x04CA, 0x3005) }, + + /* Atheros AR5BBU12 with sflash firmware */ + { USB_DEVICE(0x0489, 0xE02C) }, +@@ -92,6 +93,7 @@ static struct usb_device_id ath3k_blist_ + { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, ++ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, + + { } /* Terminating entry */ + }; +--- a/drivers/bluetooth/btusb.c ++++ b/drivers/bluetooth/btusb.c +@@ -130,6 +130,7 @@ static struct usb_device_id blacklist_ta + { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, ++ { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, + + /* Atheros AR5BBU12 with sflash firmware */ + { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, diff --git a/queue-3.3/dell-laptop-add-3-machines-that-has-touchpad-led.patch b/queue-3.3/dell-laptop-add-3-machines-that-has-touchpad-led.patch new file mode 100644 index 00000000000..fe47a62f4c3 --- /dev/null +++ b/queue-3.3/dell-laptop-add-3-machines-that-has-touchpad-led.patch @@ -0,0 +1,56 @@ +From 2a748853ca395c48ea75baa250f7cea6f0f23dbf Mon Sep 17 00:00:00 2001 +From: AceLan Kao +Date: Thu, 17 Nov 2011 15:30:42 +0800 +Subject: dell-laptop: add 3 machines that has touchpad LED + +From: AceLan Kao + +commit 2a748853ca395c48ea75baa250f7cea6f0f23dbf upstream. + +Add "Vostro 3555", "Inspiron N311z", and "Inspiron M5110" into quirks, +so that they could have touchpad LED function work. + +Signed-off-by: AceLan Kao +Signed-off-by: Matthew Garrett +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/dell-laptop.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- a/drivers/platform/x86/dell-laptop.c ++++ b/drivers/platform/x86/dell-laptop.c +@@ -184,6 +184,33 @@ static struct dmi_system_id __devinitdat + }, + .driver_data = &quirk_dell_vostro_v130, + }, ++ { ++ .callback = dmi_matched, ++ .ident = "Dell Vostro 3555", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 3555"), ++ }, ++ .driver_data = &quirk_dell_vostro_v130, ++ }, ++ { ++ .callback = dmi_matched, ++ .ident = "Dell Inspiron N311z", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron N311z"), ++ }, ++ .driver_data = &quirk_dell_vostro_v130, ++ }, ++ { ++ .callback = dmi_matched, ++ .ident = "Dell Inspiron M5110", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron M5110"), ++ }, ++ .driver_data = &quirk_dell_vostro_v130, ++ }, + }; + + static struct calling_interface_buffer *buffer; diff --git a/queue-3.3/dell-laptop-touchpad-led-should-persist-its-status-after-s3.patch b/queue-3.3/dell-laptop-touchpad-led-should-persist-its-status-after-s3.patch new file mode 100644 index 00000000000..3206ec3c0bd --- /dev/null +++ b/queue-3.3/dell-laptop-touchpad-led-should-persist-its-status-after-s3.patch @@ -0,0 +1,31 @@ +From 2d5de9e84928e35b4d9b46b4d8d5dcaac1cff1fa Mon Sep 17 00:00:00 2001 +From: AceLan Kao +Date: Tue, 17 Jan 2012 16:18:06 +0800 +Subject: dell-laptop: touchpad LED should persist its status after S3 + +From: AceLan Kao + +commit 2d5de9e84928e35b4d9b46b4d8d5dcaac1cff1fa upstream. + +Touchpad LED will not turn on after S3, it will make the touchpad status +doesn't consist with the LED. +By adding one flag to let the LED device restore it's status. + +Signed-off-by: AceLan Kao +Signed-off-by: Matthew Garrett +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/platform/x86/dell-laptop.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/platform/x86/dell-laptop.c ++++ b/drivers/platform/x86/dell-laptop.c +@@ -642,6 +642,7 @@ static void touchpad_led_set(struct led_ + static struct led_classdev touchpad_led = { + .name = "dell-laptop::touchpad", + .brightness_set = touchpad_led_set, ++ .flags = LED_CORE_SUSPENDRESUME, + }; + + static int __devinit touchpad_led_init(struct device *dev) diff --git a/queue-3.3/ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch b/queue-3.3/ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch new file mode 100644 index 00000000000..2b989af6ddb --- /dev/null +++ b/queue-3.3/ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch @@ -0,0 +1,31 @@ +From af1584f570b19b0285e4402a0b54731495d31784 Mon Sep 17 00:00:00 2001 +From: Al Viro +Date: Thu, 12 Apr 2012 20:32:25 -0400 +Subject: ext4: fix endianness breakage in ext4_split_extent_at() + +From: Al Viro + +commit af1584f570b19b0285e4402a0b54731495d31784 upstream. + +->ee_len is __le16, so assigning cpu_to_le32() to it is going to do +Bad Things(tm) on big-endian hosts... + +Signed-off-by: Al Viro +Cc: Ted Ts'o +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext4/extents.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/ext4/extents.c ++++ b/fs/ext4/extents.c +@@ -2811,7 +2811,7 @@ static int ext4_split_extent_at(handle_t + if (err) + goto fix_extent_len; + /* update the extent length and mark as initialized */ +- ex->ee_len = cpu_to_le32(ee_len); ++ ex->ee_len = cpu_to_le16(ee_len); + ext4_ext_try_to_merge(inode, path, ex); + err = ext4_ext_dirty(handle, inode, path + depth); + goto out; diff --git a/queue-3.3/kvm-unmap-pages-from-the-iommu-when-slots-are-removed.patch b/queue-3.3/kvm-unmap-pages-from-the-iommu-when-slots-are-removed.patch new file mode 100644 index 00000000000..0b7601db2f7 --- /dev/null +++ b/queue-3.3/kvm-unmap-pages-from-the-iommu-when-slots-are-removed.patch @@ -0,0 +1,96 @@ +From 32f6daad4651a748a58a3ab6da0611862175722f Mon Sep 17 00:00:00 2001 +From: Alex Williamson +Date: Wed, 11 Apr 2012 09:51:49 -0600 +Subject: KVM: unmap pages from the iommu when slots are removed + +From: Alex Williamson + +commit 32f6daad4651a748a58a3ab6da0611862175722f upstream. + +We've been adding new mappings, but not destroying old mappings. +This can lead to a page leak as pages are pinned using +get_user_pages, but only unpinned with put_page if they still +exist in the memslots list on vm shutdown. A memslot that is +destroyed while an iommu domain is enabled for the guest will +therefore result in an elevated page reference count that is +never cleared. + +Additionally, without this fix, the iommu is only programmed +with the first translation for a gpa. This can result in +peer-to-peer errors if a mapping is destroyed and replaced by a +new mapping at the same gpa as the iommu will still be pointing +to the original, pinned memory address. + +Signed-off-by: Alex Williamson +Signed-off-by: Marcelo Tosatti +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/kvm_host.h | 6 ++++++ + virt/kvm/iommu.c | 7 ++++++- + virt/kvm/kvm_main.c | 5 +++-- + 3 files changed, 15 insertions(+), 3 deletions(-) + +--- a/include/linux/kvm_host.h ++++ b/include/linux/kvm_host.h +@@ -593,6 +593,7 @@ void kvm_free_irq_source_id(struct kvm * + + #ifdef CONFIG_IOMMU_API + int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot); ++void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot); + int kvm_iommu_map_guest(struct kvm *kvm); + int kvm_iommu_unmap_guest(struct kvm *kvm); + int kvm_assign_device(struct kvm *kvm, +@@ -606,6 +607,11 @@ static inline int kvm_iommu_map_pages(st + return 0; + } + ++static inline void kvm_iommu_unmap_pages(struct kvm *kvm, ++ struct kvm_memory_slot *slot) ++{ ++} ++ + static inline int kvm_iommu_map_guest(struct kvm *kvm) + { + return -ENODEV; +--- a/virt/kvm/iommu.c ++++ b/virt/kvm/iommu.c +@@ -310,6 +310,11 @@ static void kvm_iommu_put_pages(struct k + } + } + ++void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot) ++{ ++ kvm_iommu_put_pages(kvm, slot->base_gfn, slot->npages); ++} ++ + static int kvm_iommu_unmap_memslots(struct kvm *kvm) + { + int idx; +@@ -320,7 +325,7 @@ static int kvm_iommu_unmap_memslots(stru + slots = kvm_memslots(kvm); + + kvm_for_each_memslot(memslot, slots) +- kvm_iommu_put_pages(kvm, memslot->base_gfn, memslot->npages); ++ kvm_iommu_unmap_pages(kvm, memslot); + + srcu_read_unlock(&kvm->srcu, idx); + +--- a/virt/kvm/kvm_main.c ++++ b/virt/kvm/kvm_main.c +@@ -873,12 +873,13 @@ skip_lpage: + if (r) + goto out_free; + +- /* map the pages in iommu page table */ ++ /* map/unmap the pages in iommu page table */ + if (npages) { + r = kvm_iommu_map_pages(kvm, &new); + if (r) + goto out_free; +- } ++ } else ++ kvm_iommu_unmap_pages(kvm, &old); + + r = -ENOMEM; + slots = kmemdup(kvm->memslots, sizeof(struct kvm_memslots), diff --git a/queue-3.3/series b/queue-3.3/series index 25675e250e3..6e80fc311d3 100644 --- a/queue-3.3/series +++ b/queue-3.3/series @@ -45,3 +45,8 @@ usb-gadget-eliminate-null-pointer-dereference-bugfix.patch usb-musb-omap-fix-crash-when-musb-glue-omap-gets-initialized.patch usb-musb-omap-fix-the-error-check-for-pm_runtime_get_sync.patch pci-add-quirk-for-still-enabled-interrupts-on-intel-sandy-bridge-gpus.patch +ext4-fix-endianness-breakage-in-ext4_split_extent_at.patch +kvm-unmap-pages-from-the-iommu-when-slots-are-removed.patch +dell-laptop-add-3-machines-that-has-touchpad-led.patch +dell-laptop-touchpad-led-should-persist-its-status-after-s3.patch +bluetooth-add-support-for-atheros.patch