From: Greg Kroah-Hartman Date: Wed, 23 Jun 2010 20:37:33 +0000 (-0700) Subject: .32 patches X-Git-Tag: v2.6.31.14~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=df01d9bdc7d512e4f6a4ccae26e1cb783f78e069;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches --- diff --git a/queue-2.6.32/drm-edid-fix-1024x768-85hz.patch b/queue-2.6.32/drm-edid-fix-1024x768-85hz.patch new file mode 100644 index 00000000000..2d925ee945b --- /dev/null +++ b/queue-2.6.32/drm-edid-fix-1024x768-85hz.patch @@ -0,0 +1,32 @@ +From 61dd98fad58f945ed720ba132681acb58fcee015 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Thu, 13 May 2010 14:55:28 -0400 +Subject: drm/edid: Fix 1024x768@85Hz + +From: Adam Jackson + +commit 61dd98fad58f945ed720ba132681acb58fcee015 upstream. + +Having hsync both start and end on pixel 1072 ain't gonna work very +well. Matches the X server's list. + +Signed-off-by: Adam Jackson +Tested-By: Michael Tokarev +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/drm_edid.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/drm_edid.c ++++ b/drivers/gpu/drm/drm_edid.c +@@ -324,7 +324,7 @@ static struct drm_display_mode drm_dmt_m + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + /* 1024x768@85Hz */ + { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 94500, 1024, 1072, +- 1072, 1376, 0, 768, 769, 772, 808, 0, ++ 1168, 1376, 0, 768, 769, 772, 808, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + /* 1152x864@75Hz */ + { DRM_MODE("1152x864", DRM_MODE_TYPE_DRIVER, 108000, 1152, 1216, diff --git a/queue-2.6.32/drm-i915-configure-the-tv-sense-state-correctly-on-gm45-to-make-tv-detection-reliable.patch b/queue-2.6.32/drm-i915-configure-the-tv-sense-state-correctly-on-gm45-to-make-tv-detection-reliable.patch new file mode 100644 index 00000000000..bc414f7925b --- /dev/null +++ b/queue-2.6.32/drm-i915-configure-the-tv-sense-state-correctly-on-gm45-to-make-tv-detection-reliable.patch @@ -0,0 +1,49 @@ +From fb8b5a39b6310379d7b54c0c7113703a8eaf4a57 Mon Sep 17 00:00:00 2001 +From: Zhao Yakui +Date: Wed, 7 Apr 2010 17:11:19 +0800 +Subject: drm/i915: Configure the TV sense state correctly on GM45 to make TV detection reliable + +From: Zhao Yakui + +commit fb8b5a39b6310379d7b54c0c7113703a8eaf4a57 upstream. + +The TV detection logic is not reliable on the Cantiga platform. +Sometimes the TV will be misdetected as the following two cases: +- TV is misdetected on some laptops. e.g. There is no TV connector +port or no TV is attached. But the TV is shown as connected. +- TV connector type is misdetected. e.g. the component TV is +attached, but the TV is shown as S-video type. + +According to the hardware requirement, the TV sense state bits of TV DAC +register should be cleared to zero on Cantiga platfrom. + +https://bugzilla.kernel.org/show_bug.cgi?id=14792 + +Signed-off-by: Zhao Yakui +Tested-by: Santi +Signed-off-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/drivers/gpu/drm/i915/intel_tv.c ++++ b/drivers/gpu/drm/i915/intel_tv.c +@@ -1399,6 +1399,15 @@ intel_tv_detect_type (struct drm_crtc *c + DAC_A_0_7_V | + DAC_B_0_7_V | + DAC_C_0_7_V); ++ ++ /* ++ * The TV sense state should be cleared to zero on cantiga platform. Otherwise ++ * the TV is misdetected. This is hardware requirement. ++ */ ++ if (IS_GM45(dev)) ++ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL | ++ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL); ++ + I915_WRITE(TV_CTL, tv_ctl); + I915_WRITE(TV_DAC, tv_dac); + intel_wait_for_vblank(dev); diff --git a/queue-2.6.32/drm-radeon-kms-atom-fix-typo-in-lvds-panel-info-parsing.patch b/queue-2.6.32/drm-radeon-kms-atom-fix-typo-in-lvds-panel-info-parsing.patch new file mode 100644 index 00000000000..70e3b26ad73 --- /dev/null +++ b/queue-2.6.32/drm-radeon-kms-atom-fix-typo-in-lvds-panel-info-parsing.patch @@ -0,0 +1,31 @@ +From 1ff26a3604d0292988d4cade0e49ba9918dbfd46 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 18 May 2010 00:23:15 -0400 +Subject: drm/radeon/kms/atom: fix typo in LVDS panel info parsing + +From: Alex Deucher + +commit 1ff26a3604d0292988d4cade0e49ba9918dbfd46 upstream. + +Fixes LVDS issues on some laptops; notably laptops with +2048x1536 panels. + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/radeon/radeon_atombios.c ++++ b/drivers/gpu/drm/radeon/radeon_atombios.c +@@ -942,7 +942,7 @@ struct radeon_encoder_atom_dig *radeon_a + lvds->native_mode.vtotal = lvds->native_mode.vdisplay + + le16_to_cpu(lvds_info->info.sLCDTiming.usVBlanking_Time); + lvds->native_mode.vsync_start = lvds->native_mode.vdisplay + +- le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth); ++ le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncOffset); + lvds->native_mode.vsync_end = lvds->native_mode.vsync_start + + le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth); + lvds->panel_pwr_delay = diff --git a/queue-2.6.32/powerpc-fix-handling-of-strncmp-with-zero-len.patch b/queue-2.6.32/powerpc-fix-handling-of-strncmp-with-zero-len.patch new file mode 100644 index 00000000000..5ad73674c6c --- /dev/null +++ b/queue-2.6.32/powerpc-fix-handling-of-strncmp-with-zero-len.patch @@ -0,0 +1,49 @@ +From 637a99022fb119b90fb281715d13172f0394fc12 Mon Sep 17 00:00:00 2001 +From: Jeff Mahoney +Date: Wed, 17 Mar 2010 10:55:51 +0000 +Subject: powerpc: Fix handling of strncmp with zero len + +From: Jeff Mahoney + +commit 637a99022fb119b90fb281715d13172f0394fc12 upstream. + +Commit 0119536c, which added the assembly version of strncmp to +powerpc, mentions that it adds two instructions to the version from +boot/string.S to allow it to handle len=0. Unfortunately, it doesn't +always return 0 when that is the case. The length is passed in r5, but +the return value is passed back in r3. In certain cases, this will +happen to work. Otherwise it will pass back the address of the first +string as the return value. + +This patch lifts the len <= 0 handling code from memcpy to handle that +case. + +Reported by: Christian_Sellars@symantec.com +Signed-off-by: Jeff Mahoney +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/lib/string.S | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/lib/string.S ++++ b/arch/powerpc/lib/string.S +@@ -71,7 +71,7 @@ _GLOBAL(strcmp) + + _GLOBAL(strncmp) + PPC_LCMPI r5,0 +- beqlr ++ ble- 2f + mtctr r5 + addi r5,r3,-1 + addi r4,r4,-1 +@@ -82,6 +82,8 @@ _GLOBAL(strncmp) + beqlr 1 + bdnzt eq,1b + blr ++2: li r3,0 ++ blr + + _GLOBAL(strlen) + addi r4,r3,-1 diff --git a/queue-2.6.32/powerpc-oprofile-fix-potential-buffer-overrun-in-op_model_cell.c.patch b/queue-2.6.32/powerpc-oprofile-fix-potential-buffer-overrun-in-op_model_cell.c.patch new file mode 100644 index 00000000000..bd26d95ca4c --- /dev/null +++ b/queue-2.6.32/powerpc-oprofile-fix-potential-buffer-overrun-in-op_model_cell.c.patch @@ -0,0 +1,31 @@ +From 238c1a78c957f3dc7cb848b161dcf4805793ed56 Mon Sep 17 00:00:00 2001 +From: Denis Kirjanov +Date: Tue, 1 Jun 2010 15:43:34 -0400 +Subject: powerpc/oprofile: fix potential buffer overrun in op_model_cell.c + +From: Denis Kirjanov + +commit 238c1a78c957f3dc7cb848b161dcf4805793ed56 upstream. + +Fix potential initial_lfsr buffer overrun. +Writing past the end of the buffer could happen when index == ENTRIES + +Signed-off-by: Denis Kirjanov +Signed-off-by: Robert Richter +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/oprofile/op_model_cell.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/oprofile/op_model_cell.c ++++ b/arch/powerpc/oprofile/op_model_cell.c +@@ -1077,7 +1077,7 @@ static int calculate_lfsr(int n) + index = ENTRIES-1; + + /* make sure index is valid */ +- if ((index > ENTRIES) || (index < 0)) ++ if ((index >= ENTRIES) || (index < 0)) + index = ENTRIES-1; + + return initial_lfsr[index]; diff --git a/queue-2.6.32/powerpc-pseries-only-call-start-cpu-when-a-cpu-is-stopped.patch b/queue-2.6.32/powerpc-pseries-only-call-start-cpu-when-a-cpu-is-stopped.patch new file mode 100644 index 00000000000..e6431d49db2 --- /dev/null +++ b/queue-2.6.32/powerpc-pseries-only-call-start-cpu-when-a-cpu-is-stopped.patch @@ -0,0 +1,45 @@ +From aef40e87d866355ffd279ab21021de733242d0d5 Mon Sep 17 00:00:00 2001 +From: Michael Neuling +Date: Wed, 28 Apr 2010 13:39:41 +0000 +Subject: powerpc/pseries: Only call start-cpu when a CPU is stopped + +From: Michael Neuling + +commit aef40e87d866355ffd279ab21021de733242d0d5 upstream. + +Currently we always call start-cpu irrespective of if the CPU is +stopped or not. Unfortunatley on POWER7, firmware seems to not like +start-cpu being called when a cpu already been started. This was not +the case on POWER6 and earlier. + +This patch checks to see if the CPU is stopped or not via an +query-cpu-stopped-state call, and only calls start-cpu on CPUs which +are stopped. + +This fixes a bug with kexec on POWER7 on PHYP where only the primary +thread would make it to the second kernel. + +Reported-by: Ankita Garg +Signed-off-by: Michael Neuling +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/smp.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/arch/powerpc/platforms/pseries/smp.c ++++ b/arch/powerpc/platforms/pseries/smp.c +@@ -81,6 +81,12 @@ static inline int __devinit smp_startup_ + + pcpu = get_hard_smp_processor_id(lcpu); + ++ /* Check to see if the CPU out of FW already for kexec */ ++ if (smp_query_cpu_stopped(pcpu) == QCSS_NOT_STOPPED){ ++ cpu_set(lcpu, of_spin_map); ++ return 1; ++ } ++ + /* Fixup atomic count: it exited inside IRQ handler. */ + task_thread_info(paca[lcpu].__current)->preempt_count = 0; + diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 7fcfb473eed..d40ee32ad94 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -48,3 +48,10 @@ pci-quirks-disable-msi-on-amd-rs4xx-internal-gfx-bridges.patch pci-disable-msi-for-mcp55-on-p5n32-e-sli.patch virtio_net-make-delayed-refill-more-reliable.patch mm-hugetlb-fix-clear_huge_page.patch +drm-edid-fix-1024x768-85hz.patch +drm-radeon-kms-atom-fix-typo-in-lvds-panel-info-parsing.patch +drm-i915-configure-the-tv-sense-state-correctly-on-gm45-to-make-tv-detection-reliable.patch +powerpc-fix-handling-of-strncmp-with-zero-len.patch +powerpc-pseries-only-call-start-cpu-when-a-cpu-is-stopped.patch +powerpc-oprofile-fix-potential-buffer-overrun-in-op_model_cell.c.patch +writeback-disable-periodic-old-data-writeback-for-dirty_writeback_centisecs.patch diff --git a/queue-2.6.32/writeback-disable-periodic-old-data-writeback-for-dirty_writeback_centisecs.patch b/queue-2.6.32/writeback-disable-periodic-old-data-writeback-for-dirty_writeback_centisecs.patch new file mode 100644 index 00000000000..da62ad654b3 --- /dev/null +++ b/queue-2.6.32/writeback-disable-periodic-old-data-writeback-for-dirty_writeback_centisecs.patch @@ -0,0 +1,52 @@ +From 69b62d01ec44fe0d505d89917392347732135a4d Mon Sep 17 00:00:00 2001 +From: Jens Axboe +Date: Mon, 17 May 2010 12:51:03 +0200 +Subject: writeback: disable periodic old data writeback for !dirty_writeback_centisecs + +From: Jens Axboe + +commit 69b62d01ec44fe0d505d89917392347732135a4d upstream. + +Prior to 2.6.32, setting /proc/sys/vm/dirty_writeback_centisecs disabled +periodic dirty writeback from kupdate. This got broken and now causes +excessive sys CPU usage if set to zero, as we'll keep beating on +schedule(). + +Reported-by: Justin Maggard +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + fs/fs-writeback.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +--- a/fs/fs-writeback.c ++++ b/fs/fs-writeback.c +@@ -859,6 +859,12 @@ static long wb_check_old_data_flush(stru + unsigned long expired; + long nr_pages; + ++ /* ++ * When set to zero, disable periodic writeback ++ */ ++ if (!dirty_writeback_interval) ++ return 0; ++ + expired = wb->last_old_flush + + msecs_to_jiffies(dirty_writeback_interval * 10); + if (time_before(jiffies, expired)) +@@ -954,8 +960,12 @@ int bdi_writeback_task(struct bdi_writeb + break; + } + +- wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10); +- schedule_timeout_interruptible(wait_jiffies); ++ if (dirty_writeback_interval) { ++ wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10); ++ schedule_timeout_interruptible(wait_jiffies); ++ } else ++ schedule(); ++ + try_to_freeze(); + } +