From: Greg Kroah-Hartman Date: Thu, 11 Mar 2010 20:05:41 +0000 (-0800) Subject: .32 patches X-Git-Tag: v2.6.32.10~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=620f17b9e46a9e659c78200ca6a6d2050dbac1f7;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches --- diff --git a/queue-2.6.32/drm-i915-use-a-dmi-quirk-to-skip-a-broken-sdvo-tv-output.patch b/queue-2.6.32/drm-i915-use-a-dmi-quirk-to-skip-a-broken-sdvo-tv-output.patch new file mode 100644 index 00000000000..9dd08759f21 --- /dev/null +++ b/queue-2.6.32/drm-i915-use-a-dmi-quirk-to-skip-a-broken-sdvo-tv-output.patch @@ -0,0 +1,70 @@ +From 6070a4a928f8c92b9fae7d6717ebbb05f425d6b2 Mon Sep 17 00:00:00 2001 +From: Zhao Yakui +Date: Mon, 8 Feb 2010 21:35:12 +0800 +Subject: drm/i915: Use a dmi quirk to skip a broken SDVO TV output. + +From: Zhao Yakui + +commit 6070a4a928f8c92b9fae7d6717ebbb05f425d6b2 upstream. + +This IBM system has a multi-function SDVO card that reports both VGA +and TV, but the system has no TV connector. The TV connector always +reported as connected, which would lead to poor modesetting choices. + +https://bugs.freedesktop.org/show_bug.cgi?id=25787 + +Signed-off-by: Zhao Yakui +Tested-by: Vance +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_sdvo.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/i915/intel_sdvo.c ++++ b/drivers/gpu/drm/i915/intel_sdvo.c +@@ -35,6 +35,7 @@ + #include "i915_drm.h" + #include "i915_drv.h" + #include "intel_sdvo_regs.h" ++#include + + #undef SDVO_DEBUG + +@@ -2289,6 +2290,25 @@ intel_sdvo_get_slave_addr(struct drm_dev + return 0x72; + } + ++static int intel_sdvo_bad_tv_callback(const struct dmi_system_id *id) ++{ ++ DRM_DEBUG_KMS("Ignoring bad SDVO TV connector for %s\n", id->ident); ++ return 1; ++} ++ ++static struct dmi_system_id intel_sdvo_bad_tv[] = { ++ { ++ .callback = intel_sdvo_bad_tv_callback, ++ .ident = "IntelG45/ICH10R/DME1737", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "IBM CORPORATION"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "4800784"), ++ }, ++ }, ++ ++ { } /* terminating entry */ ++}; ++ + static bool + intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags) + { +@@ -2329,7 +2349,8 @@ intel_sdvo_output_setup(struct intel_out + (1 << INTEL_SDVO_NON_TV_CLONE_BIT) | + (1 << INTEL_ANALOG_CLONE_BIT); + } +- } else if (flags & SDVO_OUTPUT_SVID0) { ++ } else if ((flags & SDVO_OUTPUT_SVID0) && ++ !dmi_check_system(intel_sdvo_bad_tv)) { + + sdvo_priv->controlled_output = SDVO_OUTPUT_SVID0; + encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; diff --git a/queue-2.6.32/drm-ttm-handle-oom-in-ttm_tt_swapout.patch b/queue-2.6.32/drm-ttm-handle-oom-in-ttm_tt_swapout.patch new file mode 100644 index 00000000000..13bb914b6e2 --- /dev/null +++ b/queue-2.6.32/drm-ttm-handle-oom-in-ttm_tt_swapout.patch @@ -0,0 +1,91 @@ +From 290e55056ec3d25c72088628245d8cae037b30db Mon Sep 17 00:00:00 2001 +From: Maarten Maathuis +Date: Sat, 20 Feb 2010 03:22:21 +0100 +Subject: drm/ttm: handle OOM in ttm_tt_swapout + +From: Maarten Maathuis + +commit 290e55056ec3d25c72088628245d8cae037b30db upstream. + +- Without this change I get a general protection fault. +- Also use PTR_ERR where applicable. + +Signed-off-by: Maarten Maathuis +Reviewed-by: Dave Airlie +Acked-by: Thomas Hellstrom +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/ttm/ttm_tt.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +--- a/drivers/gpu/drm/ttm/ttm_tt.c ++++ b/drivers/gpu/drm/ttm/ttm_tt.c +@@ -466,7 +466,7 @@ static int ttm_tt_swapin(struct ttm_tt * + void *from_virtual; + void *to_virtual; + int i; +- int ret; ++ int ret = -ENOMEM; + + if (ttm->page_flags & TTM_PAGE_FLAG_USER) { + ret = ttm_tt_set_user(ttm, ttm->tsk, ttm->start, +@@ -485,8 +485,10 @@ static int ttm_tt_swapin(struct ttm_tt * + + for (i = 0; i < ttm->num_pages; ++i) { + from_page = read_mapping_page(swap_space, i, NULL); +- if (IS_ERR(from_page)) ++ if (IS_ERR(from_page)) { ++ ret = PTR_ERR(from_page); + goto out_err; ++ } + to_page = __ttm_tt_get_page(ttm, i); + if (unlikely(to_page == NULL)) + goto out_err; +@@ -509,7 +511,7 @@ static int ttm_tt_swapin(struct ttm_tt * + return 0; + out_err: + ttm_tt_free_alloced_pages(ttm); +- return -ENOMEM; ++ return ret; + } + + int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistant_swap_storage) +@@ -521,6 +523,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, s + void *from_virtual; + void *to_virtual; + int i; ++ int ret = -ENOMEM; + + BUG_ON(ttm->state != tt_unbound && ttm->state != tt_unpopulated); + BUG_ON(ttm->caching_state != tt_cached); +@@ -543,7 +546,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, s + 0); + if (unlikely(IS_ERR(swap_storage))) { + printk(KERN_ERR "Failed allocating swap storage.\n"); +- return -ENOMEM; ++ return PTR_ERR(swap_storage); + } + } else + swap_storage = persistant_swap_storage; +@@ -555,9 +558,10 @@ int ttm_tt_swapout(struct ttm_tt *ttm, s + if (unlikely(from_page == NULL)) + continue; + to_page = read_mapping_page(swap_space, i, NULL); +- if (unlikely(to_page == NULL)) ++ if (unlikely(IS_ERR(to_page))) { ++ ret = PTR_ERR(to_page); + goto out_err; +- ++ } + preempt_disable(); + from_virtual = kmap_atomic(from_page, KM_USER0); + to_virtual = kmap_atomic(to_page, KM_USER1); +@@ -581,5 +585,5 @@ out_err: + if (!persistant_swap_storage) + fput(swap_storage); + +- return -ENOMEM; ++ return ret; + } diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 912c4be0d07..62be4a83352 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -125,6 +125,10 @@ usb-ftdi_sio-new-device-id-for-papouch-ad4usb.patch usb-ftdi_sio-add-device-ids-several-elv-one-mindstorms-nxt.patch usb-add-new-ftdi_sio-device-ids.patch usb-serial-ftdi-add-contec-vendor-and-product-id.patch +usb-cp210x-add-81e8-zephyr-bioharness.patch +usb-unusual_devs-add-support-for-multiple-option-3g-sticks.patch +drm-i915-use-a-dmi-quirk-to-skip-a-broken-sdvo-tv-output.patch +drm-ttm-handle-oom-in-ttm_tt_swapout.patch sched-fix-sched_mv_power_savings-for-smt.patch sched-fix-smt-scheduler-regression-in-find_busiest_queue.patch sched-don-t-use-possibly-stale-sched_class.patch diff --git a/queue-2.6.32/usb-cp210x-add-81e8-zephyr-bioharness.patch b/queue-2.6.32/usb-cp210x-add-81e8-zephyr-bioharness.patch new file mode 100644 index 00000000000..2e11a188444 --- /dev/null +++ b/queue-2.6.32/usb-cp210x-add-81e8-zephyr-bioharness.patch @@ -0,0 +1,35 @@ +From bd07c551aae5d2200c7b195142e5ba63f26424da Mon Sep 17 00:00:00 2001 +From: Alan Cox +Date: Mon, 8 Feb 2010 10:10:44 +0000 +Subject: USB: cp210x: Add 81E8 (Zephyr Bioharness) + +From: Alan Cox + +commit bd07c551aae5d2200c7b195142e5ba63f26424da upstream. + +As reported in +http://bugzilla.kernel.org/show_bug.cgi?id=10980 + +Signed-off-by: Alan Cox +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/cp210x.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -91,11 +91,12 @@ static struct usb_device_id id_table [] + { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ + { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ + { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */ ++ { USB_DEVICE(0x10C4, 0x81E8) }, /* Zephyr Bioharness */ + { USB_DEVICE(0x10C4, 0x81F2) }, /* C1007 HF band RFID controller */ + { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ + { USB_DEVICE(0x10C4, 0x822B) }, /* Modem EDGE(GSM) Comander 2 */ + { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demostration module */ +- { USB_DEVICE(0x10c4, 0x8293) }, /* Telegesys ETRX2USB */ ++ { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesys ETRX2USB */ + { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */ + { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ + { USB_DEVICE(0x10C4, 0x8382) }, /* Cygnal Integrated Products, Inc. */ diff --git a/queue-2.6.32/usb-unusual_devs-add-support-for-multiple-option-3g-sticks.patch b/queue-2.6.32/usb-unusual_devs-add-support-for-multiple-option-3g-sticks.patch new file mode 100644 index 00000000000..a16769326d8 --- /dev/null +++ b/queue-2.6.32/usb-unusual_devs-add-support-for-multiple-option-3g-sticks.patch @@ -0,0 +1,126 @@ +From 46216e4fbe8c62059b5440dec0b236f386248a41 Mon Sep 17 00:00:00 2001 +From: Jan Dumon +Date: Tue, 5 Jan 2010 15:53:26 +0100 +Subject: USB: unusual_devs: Add support for multiple Option 3G sticks + +From: Jan Dumon + +commit 46216e4fbe8c62059b5440dec0b236f386248a41 upstream. + +Enable the SD-Card interface on multiple Option 3G sticks. +The unusual_devs.h entry is necessary because the device descriptor is +vendor-specific. That prevents usb-storage from binding to it as an interface +driver. + +Signed-off-by: Jan Dumon +Signed-off-by: Phil Dibowitz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 88 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 86 insertions(+), 2 deletions(-) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1147,8 +1147,8 @@ UNUSUAL_DEV( 0x0af0, 0x7401, 0x0000, 0x0 + 0 ), + + /* Reported by Jan Dumon +- * This device (wrongly) has a vendor-specific device descriptor. +- * The entry is needed so usb-storage can bind to it's mass-storage ++ * These devices (wrongly) have a vendor-specific device descriptor. ++ * These entries are needed so usb-storage can bind to their mass-storage + * interface as an interface driver */ + UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0000, + "Option", +@@ -1156,6 +1156,90 @@ UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0 + US_SC_DEVICE, US_PR_DEVICE, NULL, + 0 ), + ++UNUSUAL_DEV( 0x0af0, 0x7701, 0x0000, 0x0000, ++ "Option", ++ "GI 0451 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x7706, 0x0000, 0x0000, ++ "Option", ++ "GI 0451 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x7901, 0x0000, 0x0000, ++ "Option", ++ "GI 0452 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x7A01, 0x0000, 0x0000, ++ "Option", ++ "GI 0461 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x7A05, 0x0000, 0x0000, ++ "Option", ++ "GI 0461 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x8300, 0x0000, 0x0000, ++ "Option", ++ "GI 033x SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x8302, 0x0000, 0x0000, ++ "Option", ++ "GI 033x SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0x8304, 0x0000, 0x0000, ++ "Option", ++ "GI 033x SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xc100, 0x0000, 0x0000, ++ "Option", ++ "GI 070x SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xd057, 0x0000, 0x0000, ++ "Option", ++ "GI 1505 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xd058, 0x0000, 0x0000, ++ "Option", ++ "GI 1509 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xd157, 0x0000, 0x0000, ++ "Option", ++ "GI 1515 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xd257, 0x0000, 0x0000, ++ "Option", ++ "GI 1215 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ ++UNUSUAL_DEV( 0x0af0, 0xd357, 0x0000, 0x0000, ++ "Option", ++ "GI 1505 SD-Card", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ 0 ), ++ + /* Reported by Ben Efros */ + UNUSUAL_DEV( 0x0bc2, 0x3010, 0x0000, 0x0000, + "Seagate",