rpms/kernel/F-12 patch-2.6.32.8-rc1.bz2.sign, NONE, 1.1 .cvsignore, 1.1144, 1.1145 kernel.spec, 1.2002, 1.2003 linux-2.6-upstream-reverts.patch, 1.6, 1.7 sources, 1.1102, 1.1103 upstream, 1.1016, 1.1017 block-fix-bugs-in-bio-integrity-mempool-usage.patch, 1.1, NONE linux-2.6-userspace_kvmclock_offset.patch, 1.1, NONE

Chuck Ebbert cebbert at fedoraproject.org
Thu Feb 4 19:06:35 UTC 2010


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24273

Modified Files:
	.cvsignore kernel.spec linux-2.6-upstream-reverts.patch 
	sources upstream 
Added Files:
	patch-2.6.32.8-rc1.bz2.sign 
Removed Files:
	block-fix-bugs-in-bio-integrity-mempool-usage.patch 
	linux-2.6-userspace_kvmclock_offset.patch 
Log Message:
Linux 2.6.32.8-rc1
Revert three DRM patches from 2.6.32.8:
  drm-i915-only-enable-hotplug-for-detected-outputs.patch : already in
  drm-i915-reload-hangcheck-timer-too-for-ironlake.patch : conflicts
  drm-i915-selectively-enable-self-reclaim.patch : already in
Drop patches merged in -stable:
  linux-2.6-userspace_kvmclock_offset.patch
  block-fix-bugs-in-bio-integrity-mempool-usage.patch


--- NEW FILE patch-2.6.32.8-rc1.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBLawHxyGugalF9Dw4RAqvFAKCICe+jPQq6zxbX3Tm3wmHVMhm5AwCglIrD
ej+05/naiQuAjljTUdi31os=
=Rwmc
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/.cvsignore,v
retrieving revision 1.1144
retrieving revision 1.1145
diff -u -p -r1.1144 -r1.1145
--- .cvsignore	29 Jan 2010 02:44:17 -0000	1.1144
+++ .cvsignore	4 Feb 2010 19:06:34 -0000	1.1145
@@ -6,3 +6,4 @@ temp-*
 kernel-2.6.32
 linux-2.6.32.tar.bz2
 patch-2.6.32.7.bz2
+patch-2.6.32.8-rc1.bz2


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.2002
retrieving revision 1.2003
diff -u -p -r1.2002 -r1.2003
--- kernel.spec	3 Feb 2010 21:06:31 -0000	1.2002
+++ kernel.spec	4 Feb 2010 19:06:34 -0000	1.2003
@@ -40,9 +40,9 @@ Summary: The Linux kernel
 %if 0%{?released_kernel}
 
 # Do we have a -stable update to apply?
-%define stable_update 7
+%define stable_update 8
 # Is it a -stable RC?
-%define stable_rc 0
+%define stable_rc 1
 # Set rpm version accordingly
 %if 0%{?stable_update}
 %define stablerev .%{stable_update}
@@ -684,7 +684,6 @@ Patch1520: crystalhd-2.6.34-staging.patc
 
 # virt + ksm patches
 Patch1551: linux-2.6-ksm-kvm.patch
-Patch1552: linux-2.6-userspace_kvmclock_offset.patch
 
 # fbdev multi-card fix
 Patch1700: linux-2.6-x86-64-fbdev-primary.patch
@@ -753,9 +752,6 @@ Patch12102: wmi-check-wmi-get-event-data
 
 Patch12200: add-appleir-usb-driver.patch
 
-# fix possible oops in bio-integrity
-Patch12300: block-fix-bugs-in-bio-integrity-mempool-usage.patch
-
 Patch12301: fix-conntrack-bug-with-namespaces.patch
 Patch12302: prevent-runtime-conntrack-changes.patch
 
@@ -1340,7 +1336,6 @@ ApplyPatch crystalhd-2.6.34-staging.patc
 #ApplyPatch linux-2.6-ksm-kvm.patch
 
 # Assorted Virt Fixes
-ApplyPatch linux-2.6-userspace_kvmclock_offset.patch
 
 # Fix block I/O errors in KVM
 #ApplyPatch linux-2.6-block-silently-error-unsupported-empty-barriers-too.patch
@@ -1387,9 +1382,6 @@ ApplyPatch add-appleir-usb-driver.patch
 ApplyPatch wmi-free-the-allocated-acpi-objects.patch
 ApplyPatch wmi-check-wmi-get-event-data-return-value.patch
 
-# fix possible oops in bio-integrity
-ApplyPatch block-fix-bugs-in-bio-integrity-mempool-usage.patch
-
 ApplyPatch fix-conntrack-bug-with-namespaces.patch
 ApplyPatch prevent-runtime-conntrack-changes.patch
 
@@ -2048,6 +2040,16 @@ fi
 # and build.
 
 %changelog
+* Thu Feb 04 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.8-43.rc1
+- Linux 2.6.32.8-rc1
+- Revert three DRM patches from 2.6.32.8:
+  drm-i915-only-enable-hotplug-for-detected-outputs.patch : already in
+  drm-i915-reload-hangcheck-timer-too-for-ironlake.patch : conflicts
+  drm-i915-selectively-enable-self-reclaim.patch : already in
+- Drop patches merged in -stable:
+  linux-2.6-userspace_kvmclock_offset.patch
+  block-fix-bugs-in-bio-integrity-mempool-usage.patch
+
 * Wed Feb 03 2010 Kyle McMartin <kyle at redhat.com>
 - Fix another conntrack issue pointed out by jcm.
 - Fix utrace header. (rhbz#561536)

linux-2.6-upstream-reverts.patch:
 drm_gem.c            |   13 --------
 i915/i915_debugfs.c  |    2 -
 i915/i915_dma.c      |    4 +-
 i915/i915_drv.h      |    2 -
 i915/i915_gem.c      |   54 +++++++++++-------------------------
 i915/i915_irq.c      |   75 ++++++++++++++++++++++++++-------------------------
 i915/i915_reg.h      |    8 -----
 i915/intel_crt.c     |    2 +
 i915/intel_display.c |   26 +++++++++++++----
 i915/intel_dp.c      |    6 ++++
 i915/intel_hdmi.c    |    5 +++
 i915/intel_sdvo.c    |    3 ++
 i915/intel_tv.c      |    2 +
 13 files changed, 98 insertions(+), 104 deletions(-)

Index: linux-2.6-upstream-reverts.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/linux-2.6-upstream-reverts.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- linux-2.6-upstream-reverts.patch	23 Jan 2010 03:04:34 -0000	1.6
+++ linux-2.6-upstream-reverts.patch	4 Feb 2010 19:06:34 -0000	1.7
@@ -1,3 +1,521 @@
+From b01f2c3a4a37d09a47ad73ccbb46d554d21cfeb0 Mon Sep 17 00:00:00 2001
+From: Jesse Barnes <jbarnes at virtuousgeek.org>
+Date: Fri, 11 Dec 2009 11:07:17 -0800
+Subject: drm/i915: only enable hotplug for detected outputs
+
+From: Jesse Barnes <jbarnes at virtuousgeek.org>
+
+commit b01f2c3a4a37d09a47ad73ccbb46d554d21cfeb0 upstream.
+
+This patch changes around our hotplug enable code a bit to only enable
+it for ports we actually detect and initialize.  This prevents problems
+with stuck or spurious interrupts on outputs that aren't actually wired
+up, and is generally more correct.
+
+Fixes FDO bug #23183.
+
+Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_dma.c      |    4 ++--
+ drivers/gpu/drm/i915/i915_irq.c      |   30 +++++++++++++++++++-----------
+ drivers/gpu/drm/i915/i915_reg.h      |    8 --------
+ drivers/gpu/drm/i915/intel_crt.c     |    2 ++
+ drivers/gpu/drm/i915/intel_display.c |   26 ++++++++++++++++++++------
+ drivers/gpu/drm/i915/intel_dp.c      |    6 ++++++
+ drivers/gpu/drm/i915/intel_hdmi.c    |    5 +++++
+ drivers/gpu/drm/i915/intel_sdvo.c    |    3 +++
+ drivers/gpu/drm/i915/intel_tv.c      |    2 ++
+ 9 files changed, 59 insertions(+), 27 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_dma.c
++++ b/drivers/gpu/drm/i915/i915_dma.c
+@@ -1252,6 +1252,8 @@ static int i915_load_modeset_init(struct
+ 	if (ret)
+ 		goto destroy_ringbuffer;
+ 
++	intel_modeset_init(dev);
++
+ 	ret = drm_irq_install(dev);
+ 	if (ret)
+ 		goto destroy_ringbuffer;
+@@ -1266,8 +1268,6 @@ static int i915_load_modeset_init(struct
+ 
+ 	I915_WRITE(INSTPM, (1 << 5) | (1 << 21));
+ 
+-	intel_modeset_init(dev);
+-
+ 	drm_helper_initial_config(dev);
+ 
+ 	return 0;
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -1044,6 +1044,10 @@ void i915_driver_irq_preinstall(struct d
+ 	(void) I915_READ(IER);
+ }
+ 
++/*
++ * Must be called after intel_modeset_init or hotplug interrupts won't be
++ * enabled correctly.
++ */
+ int i915_driver_irq_postinstall(struct drm_device *dev)
+ {
+ 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+@@ -1066,19 +1070,23 @@ int i915_driver_irq_postinstall(struct d
+ 	if (I915_HAS_HOTPLUG(dev)) {
+ 		u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN);
+ 
+-		/* Leave other bits alone */
+-		hotplug_en |= HOTPLUG_EN_MASK;
++		/* Note HDMI and DP share bits */
++		if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS)
++			hotplug_en |= HDMIB_HOTPLUG_INT_EN;
++		if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS)
++			hotplug_en |= HDMIC_HOTPLUG_INT_EN;
++		if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS)
++			hotplug_en |= HDMID_HOTPLUG_INT_EN;
++		if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS)
++			hotplug_en |= SDVOC_HOTPLUG_INT_EN;
++		if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS)
++			hotplug_en |= SDVOB_HOTPLUG_INT_EN;
++		if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS)
++			hotplug_en |= CRT_HOTPLUG_INT_EN;
++		/* Ignore TV since it's buggy */
++
+ 		I915_WRITE(PORT_HOTPLUG_EN, hotplug_en);
+ 
+-		dev_priv->hotplug_supported_mask = CRT_HOTPLUG_INT_STATUS |
+-			TV_HOTPLUG_INT_STATUS | SDVOC_HOTPLUG_INT_STATUS |
+-			SDVOB_HOTPLUG_INT_STATUS;
+-		if (IS_G4X(dev)) {
+-			dev_priv->hotplug_supported_mask |=
+-				HDMIB_HOTPLUG_INT_STATUS |
+-				HDMIC_HOTPLUG_INT_STATUS |
+-				HDMID_HOTPLUG_INT_STATUS;
+-		}
+ 		/* Enable in IER... */
+ 		enable_mask |= I915_DISPLAY_PORT_INTERRUPT;
+ 		/* and unmask in IMR */
+--- a/drivers/gpu/drm/i915/i915_reg.h
++++ b/drivers/gpu/drm/i915/i915_reg.h
+@@ -863,14 +863,6 @@
+ #define CRT_HOTPLUG_DETECT_VOLTAGE_475MV	(1 << 2)
+ #define CRT_HOTPLUG_MASK			(0x3fc) /* Bits 9-2 */
+ #define CRT_FORCE_HOTPLUG_MASK			0xfffffe1f
+-#define HOTPLUG_EN_MASK (HDMIB_HOTPLUG_INT_EN | \
+-			 HDMIC_HOTPLUG_INT_EN |	  \
+-			 HDMID_HOTPLUG_INT_EN |	  \
+-			 SDVOB_HOTPLUG_INT_EN |	  \
+-			 SDVOC_HOTPLUG_INT_EN |	  \
+-			 TV_HOTPLUG_INT_EN |	  \
+-			 CRT_HOTPLUG_INT_EN)
+-
+ 
+ #define PORT_HOTPLUG_STAT	0x61114
+ #define   HDMIB_HOTPLUG_INT_STATUS		(1 << 29)
+--- a/drivers/gpu/drm/i915/intel_crt.c
++++ b/drivers/gpu/drm/i915/intel_crt.c
+@@ -576,4 +576,6 @@ void intel_crt_init(struct drm_device *d
+ 	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
+ 
+ 	drm_sysfs_connector_add(connector);
++
++	dev_priv->hotplug_supported_mask |= CRT_HOTPLUG_INT_STATUS;
+ }
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -4068,29 +4068,43 @@ static void intel_setup_outputs(struct d
+ 		bool found = false;
+ 
+ 		if (I915_READ(SDVOB) & SDVO_DETECTED) {
++			DRM_DEBUG_KMS("probing SDVOB\n");
+ 			found = intel_sdvo_init(dev, SDVOB);
+-			if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
++			if (!found && SUPPORTS_INTEGRATED_HDMI(dev)) {
++				DRM_DEBUG_KMS("probing HDMI on SDVOB\n");
+ 				intel_hdmi_init(dev, SDVOB);
++			}
+ 
+-			if (!found && SUPPORTS_INTEGRATED_DP(dev))
++			if (!found && SUPPORTS_INTEGRATED_DP(dev)) {
++				DRM_DEBUG_KMS("probing DP_B\n");
+ 				intel_dp_init(dev, DP_B);
++			}
+ 		}
+ 
+ 		/* Before G4X SDVOC doesn't have its own detect register */
+ 
+-		if (I915_READ(SDVOB) & SDVO_DETECTED)
++		if (I915_READ(SDVOB) & SDVO_DETECTED) {
++			DRM_DEBUG_KMS("probing SDVOC\n");
+ 			found = intel_sdvo_init(dev, SDVOC);
++		}
+ 
+ 		if (!found && (I915_READ(SDVOC) & SDVO_DETECTED)) {
+ 
+-			if (SUPPORTS_INTEGRATED_HDMI(dev))
++			if (SUPPORTS_INTEGRATED_HDMI(dev)) {
++				DRM_DEBUG_KMS("probing HDMI on SDVOC\n");
+ 				intel_hdmi_init(dev, SDVOC);
+-			if (SUPPORTS_INTEGRATED_DP(dev))
++			}
++			if (SUPPORTS_INTEGRATED_DP(dev)) {
++				DRM_DEBUG_KMS("probing DP_C\n");
+ 				intel_dp_init(dev, DP_C);
++			}
+ 		}
+ 
+-		if (SUPPORTS_INTEGRATED_DP(dev) && (I915_READ(DP_D) & DP_DETECTED))
++		if (SUPPORTS_INTEGRATED_DP(dev) &&
++		    (I915_READ(DP_D) & DP_DETECTED)) {
++			DRM_DEBUG_KMS("probing DP_D\n");
+ 			intel_dp_init(dev, DP_D);
++		}
+ 	} else if (IS_I8XX(dev))
+ 		intel_dvo_init(dev);
+ 
+--- a/drivers/gpu/drm/i915/intel_dp.c
++++ b/drivers/gpu/drm/i915/intel_dp.c
+@@ -1290,14 +1290,20 @@ intel_dp_init(struct drm_device *dev, in
+ 			break;
+ 		case DP_B:
+ 		case PCH_DP_B:
++			dev_priv->hotplug_supported_mask |=
++				HDMIB_HOTPLUG_INT_STATUS;
+ 			name = "DPDDC-B";
+ 			break;
+ 		case DP_C:
+ 		case PCH_DP_C:
++			dev_priv->hotplug_supported_mask |=
++				HDMIC_HOTPLUG_INT_STATUS;
+ 			name = "DPDDC-C";
+ 			break;
+ 		case DP_D:
+ 		case PCH_DP_D:
++			dev_priv->hotplug_supported_mask |=
++				HDMID_HOTPLUG_INT_STATUS;
+ 			name = "DPDDC-D";
+ 			break;
+ 	}
+--- a/drivers/gpu/drm/i915/intel_hdmi.c
++++ b/drivers/gpu/drm/i915/intel_hdmi.c
+@@ -254,21 +254,26 @@ void intel_hdmi_init(struct drm_device *
+ 	if (sdvox_reg == SDVOB) {
+ 		intel_output->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT);
+ 		intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB");
++		dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
+ 	} else if (sdvox_reg == SDVOC) {
+ 		intel_output->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT);
+ 		intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC");
++		dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
+ 	} else if (sdvox_reg == HDMIB) {
+ 		intel_output->clone_mask = (1 << INTEL_HDMID_CLONE_BIT);
+ 		intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE,
+ 								"HDMIB");
++		dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
+ 	} else if (sdvox_reg == HDMIC) {
+ 		intel_output->clone_mask = (1 << INTEL_HDMIE_CLONE_BIT);
+ 		intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD,
+ 								"HDMIC");
++		dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
+ 	} else if (sdvox_reg == HDMID) {
+ 		intel_output->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT);
+ 		intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF,
+ 								"HDMID");
++		dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
+ 	}
+ 	if (!intel_output->ddc_bus)
+ 		goto err_connector;
+--- a/drivers/gpu/drm/i915/intel_sdvo.c
++++ b/drivers/gpu/drm/i915/intel_sdvo.c
+@@ -2743,6 +2743,7 @@ static void intel_sdvo_create_enhance_pr
+ 
+ bool intel_sdvo_init(struct drm_device *dev, int output_device)
+ {
++	struct drm_i915_private *dev_priv = dev->dev_private;
+ 	struct drm_connector *connector;
+ 	struct intel_output *intel_output;
+ 	struct intel_sdvo_priv *sdvo_priv;
+@@ -2789,10 +2790,12 @@ bool intel_sdvo_init(struct drm_device *
+ 		intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOB DDC BUS");
+ 		sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA,
+ 						"SDVOB/VGA DDC BUS");
++		dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS;
+ 	} else {
+ 		intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "SDVOC DDC BUS");
+ 		sdvo_priv->analog_ddc_bus = intel_i2c_create(dev, GPIOA,
+ 						"SDVOC/VGA DDC BUS");
++		dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS;
+ 	}
+ 
+ 	if (intel_output->ddc_bus == NULL)
+--- a/drivers/gpu/drm/i915/intel_tv.c
++++ b/drivers/gpu/drm/i915/intel_tv.c
+@@ -1801,6 +1801,8 @@ intel_tv_init(struct drm_device *dev)
+ 	drm_connector_attach_property(connector,
+ 				   dev->mode_config.tv_bottom_margin_property,
+ 				   tv_priv->margin[TV_MARGIN_BOTTOM]);
++
++	dev_priv->hotplug_supported_mask |= TV_HOTPLUG_INT_STATUS;
+ out:
+ 	drm_sysfs_connector_add(connector);
+ }
+From c566ec49159b806db95a90fd8f37448376cd0ad2 Mon Sep 17 00:00:00 2001
+From: Zhenyu Wang <zhenyuw at linux.intel.com>
+Date: Thu, 17 Dec 2009 16:12:56 +0800
+Subject: drm/i915: Reload hangcheck timer too for Ironlake
+
+From: Zhenyu Wang <zhenyuw at linux.intel.com>
+
+commit c566ec49159b806db95a90fd8f37448376cd0ad2 upstream.
+
+Make sure hangcheck timer won't beat us unexpectedly on Ironlake.
+
+Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+
+---
+ drivers/gpu/drm/i915/i915_irq.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -282,6 +282,8 @@ irqreturn_t igdng_irq_handler(struct drm
+ 		dev_priv->mm.irq_gem_seqno = seqno;
+ 		trace_i915_gem_request_complete(dev, seqno);
+ 		DRM_WAKEUP(&dev_priv->irq_queue);
++		dev_priv->hangcheck_count = 0;
++		mod_timer(&dev_priv->hangcheck_timer, jiffies + DRM_I915_HANGCHECK_PERIOD);
+ 	}
+ 
+ 	I915_WRITE(GTIIR, gt_iir);
+From 4bdadb9785696439c6e2b3efe34aa76df1149c83 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Wed, 27 Jan 2010 13:36:32 +0000
+Subject: drm/i915: Selectively enable self-reclaim
+
+From: Chris Wilson <chris at chris-wilson.co.uk>
+
+commit 4bdadb9785696439c6e2b3efe34aa76df1149c83 upstream.
+
+Having missed the ENOMEM return via i915_gem_fault(), there are probably
+other paths that I also missed. By not enabling NORETRY by default these
+paths can run the shrinker and take memory from the system (but not from
+our own inactive lists because our shrinker can not run whilst we hold
+the struct mutex) and this may allow the system to survive a little longer
+whilst our drivers consume all available memory.
+
+References:
+  OOM killer unexpectedly called with kernel 2.6.32
+  http://bugzilla.kernel.org/show_bug.cgi?id=14933
+
+v2: Pass gfp into page mapping.
+v3: Use new read_cache_page_gfp() instead of open-coding.
+
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+Cc: KOSAKI Motohiro <kosaki.motohiro at jp.fujitsu.com>
+Cc: Hugh Dickins <hugh.dickins at tiscali.co.uk>
+Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
+Cc: Eric Anholt <eric at anholt.net>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+
+---
+ drivers/gpu/drm/drm_gem.c           |   13 --------
+ drivers/gpu/drm/i915/i915_debugfs.c |    2 -
+ drivers/gpu/drm/i915/i915_drv.h     |    2 -
+ drivers/gpu/drm/i915/i915_gem.c     |   54 +++++++++++-------------------------
+ 4 files changed, 19 insertions(+), 52 deletions(-)
+
+--- a/drivers/gpu/drm/drm_gem.c
++++ b/drivers/gpu/drm/drm_gem.c
+@@ -142,19 +142,6 @@ drm_gem_object_alloc(struct drm_device *
+ 	if (IS_ERR(obj->filp))
+ 		goto free;
+ 
+-	/* Basically we want to disable the OOM killer and handle ENOMEM
+-	 * ourselves by sacrificing pages from cached buffers.
+-	 * XXX shmem_file_[gs]et_gfp_mask()
+-	 */
+-	mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping,
+-			     GFP_HIGHUSER |
+-			     __GFP_COLD |
+-			     __GFP_FS |
+-			     __GFP_RECLAIMABLE |
+-			     __GFP_NORETRY |
+-			     __GFP_NOWARN |
+-			     __GFP_NOMEMALLOC);
+-
+ 	kref_init(&obj->refcount);
+ 	kref_init(&obj->handlecount);
+ 	obj->size = size;
+--- a/drivers/gpu/drm/i915/i915_debugfs.c
++++ b/drivers/gpu/drm/i915/i915_debugfs.c
+@@ -288,7 +288,7 @@ static int i915_batchbuffer_info(struct 
+ 	list_for_each_entry(obj_priv, &dev_priv->mm.active_list, list) {
+ 		obj = obj_priv->obj;
+ 		if (obj->read_domains & I915_GEM_DOMAIN_COMMAND) {
+-		    ret = i915_gem_object_get_pages(obj);
++		    ret = i915_gem_object_get_pages(obj, 0);
+ 		    if (ret) {
+ 			    DRM_ERROR("Failed to get pages: %d\n", ret);
+ 			    spin_unlock(&dev_priv->mm.active_list_lock);
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -822,7 +822,7 @@ int i915_gem_attach_phys_object(struct d
+ void i915_gem_detach_phys_object(struct drm_device *dev,
+ 				 struct drm_gem_object *obj);
+ void i915_gem_free_all_phys_object(struct drm_device *dev);
+-int i915_gem_object_get_pages(struct drm_gem_object *obj);
++int i915_gem_object_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);
+ void i915_gem_object_put_pages(struct drm_gem_object *obj);
+ void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv);
+ 
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -277,7 +277,7 @@ i915_gem_shmem_pread_fast(struct drm_dev
+ 
+ 	mutex_lock(&dev->struct_mutex);
+ 
+-	ret = i915_gem_object_get_pages(obj);
++	ret = i915_gem_object_get_pages(obj, 0);
+ 	if (ret != 0)
+ 		goto fail_unlock;
+ 
+@@ -321,40 +321,24 @@ fail_unlock:
+ 	return ret;
+ }
+ 
+-static inline gfp_t
+-i915_gem_object_get_page_gfp_mask (struct drm_gem_object *obj)
+-{
+-	return mapping_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping);
+-}
+-
+-static inline void
+-i915_gem_object_set_page_gfp_mask (struct drm_gem_object *obj, gfp_t gfp)
+-{
+-	mapping_set_gfp_mask(obj->filp->f_path.dentry->d_inode->i_mapping, gfp);
+-}
+-
+ static int
+ i915_gem_object_get_pages_or_evict(struct drm_gem_object *obj)
+ {
+ 	int ret;
+ 
+-	ret = i915_gem_object_get_pages(obj);
++	ret = i915_gem_object_get_pages(obj, __GFP_NORETRY | __GFP_NOWARN);
+ 
+ 	/* If we've insufficient memory to map in the pages, attempt
+ 	 * to make some space by throwing out some old buffers.
+ 	 */
+ 	if (ret == -ENOMEM) {
+ 		struct drm_device *dev = obj->dev;
+-		gfp_t gfp;
+ 
+ 		ret = i915_gem_evict_something(dev, obj->size);
+ 		if (ret)
+ 			return ret;
+ 
+-		gfp = i915_gem_object_get_page_gfp_mask(obj);
+-		i915_gem_object_set_page_gfp_mask(obj, gfp & ~__GFP_NORETRY);
+-		ret = i915_gem_object_get_pages(obj);
+-		i915_gem_object_set_page_gfp_mask (obj, gfp);
++		ret = i915_gem_object_get_pages(obj, 0);
+ 	}
+ 
+ 	return ret;
+@@ -790,7 +774,7 @@ i915_gem_shmem_pwrite_fast(struct drm_de
+ 
+ 	mutex_lock(&dev->struct_mutex);
+ 
+-	ret = i915_gem_object_get_pages(obj);
++	ret = i915_gem_object_get_pages(obj, 0);
+ 	if (ret != 0)
+ 		goto fail_unlock;
+ 
+@@ -2219,7 +2203,8 @@ i915_gem_evict_something(struct drm_devi
+ }
+ 
+ int
+-i915_gem_object_get_pages(struct drm_gem_object *obj)
++i915_gem_object_get_pages(struct drm_gem_object *obj,
++			  gfp_t gfpmask)
+ {
+ 	struct drm_i915_gem_object *obj_priv = obj->driver_private;
+ 	int page_count, i;
+@@ -2245,7 +2230,10 @@ i915_gem_object_get_pages(struct drm_gem
+ 	inode = obj->filp->f_path.dentry->d_inode;
+ 	mapping = inode->i_mapping;
+ 	for (i = 0; i < page_count; i++) {
+-		page = read_mapping_page(mapping, i, NULL);
++		page = read_cache_page_gfp(mapping, i,
++					   mapping_gfp_mask (mapping) |
++					   __GFP_COLD |
++					   gfpmask);
+ 		if (IS_ERR(page)) {
+ 			ret = PTR_ERR(page);
+ 			i915_gem_object_put_pages(obj);
+@@ -2568,7 +2556,7 @@ i915_gem_object_bind_to_gtt(struct drm_g
+ 	drm_i915_private_t *dev_priv = dev->dev_private;
+ 	struct drm_i915_gem_object *obj_priv = obj->driver_private;
+ 	struct drm_mm_node *free_space;
+-	bool retry_alloc = false;
++	gfp_t gfpmask =  __GFP_NORETRY | __GFP_NOWARN;
+ 	int ret;
+ 
+ 	if (obj_priv->madv != I915_MADV_WILLNEED) {
+@@ -2612,15 +2600,7 @@ i915_gem_object_bind_to_gtt(struct drm_g
+ 	DRM_INFO("Binding object of size %zd at 0x%08x\n",
+ 		 obj->size, obj_priv->gtt_offset);
+ #endif
+-	if (retry_alloc) {
+-		i915_gem_object_set_page_gfp_mask (obj,
+-						   i915_gem_object_get_page_gfp_mask (obj) & ~__GFP_NORETRY);
+-	}
+-	ret = i915_gem_object_get_pages(obj);
+-	if (retry_alloc) {
+-		i915_gem_object_set_page_gfp_mask (obj,
+-						   i915_gem_object_get_page_gfp_mask (obj) | __GFP_NORETRY);
+-	}
++	ret = i915_gem_object_get_pages(obj, gfpmask);
+ 	if (ret) {
+ 		drm_mm_put_block(obj_priv->gtt_space);
+ 		obj_priv->gtt_space = NULL;
+@@ -2630,9 +2610,9 @@ i915_gem_object_bind_to_gtt(struct drm_g
+ 			ret = i915_gem_evict_something(dev, obj->size);
+ 			if (ret) {
+ 				/* now try to shrink everyone else */
+-				if (! retry_alloc) {
+-				    retry_alloc = true;
+-				    goto search_free;
++				if (gfpmask) {
++					gfpmask = 0;
++					goto search_free;
+ 				}
+ 
+ 				return ret;
+@@ -4695,7 +4675,7 @@ void i915_gem_detach_phys_object(struct 
+ 	if (!obj_priv->phys_obj)
+ 		return;
+ 
+-	ret = i915_gem_object_get_pages(obj);
++	ret = i915_gem_object_get_pages(obj, 0);
+ 	if (ret)
+ 		goto out;
+ 
+@@ -4753,7 +4733,7 @@ i915_gem_attach_phys_object(struct drm_d
+ 	obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1];
+ 	obj_priv->phys_obj->cur_obj = obj;
+ 
+-	ret = i915_gem_object_get_pages(obj);
++	ret = i915_gem_object_get_pages(obj, 0);
+ 	if (ret) {
+ 		DRM_ERROR("failed to get page list\n");
+ 		goto out;
 From c7c85101afd0cb8ce497456d12ee1cad4aad152f Mon Sep 17 00:00:00 2001
 From: Zou Nan hai <Nanhai.zou at intel.com>
 Date: Fri, 15 Jan 2010 10:29:06 +0800


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/sources,v
retrieving revision 1.1102
retrieving revision 1.1103
diff -u -p -r1.1102 -r1.1103
--- sources	29 Jan 2010 02:44:17 -0000	1.1102
+++ sources	4 Feb 2010 19:06:34 -0000	1.1103
@@ -1,2 +1,3 @@
 260551284ac224c3a43c4adac7df4879  linux-2.6.32.tar.bz2
 a68305d3e77dddc9555ba58f678a1ce2  patch-2.6.32.7.bz2
+f08f0f92f515c5849b8b83168dc9c9f5  patch-2.6.32.8-rc1.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/upstream,v
retrieving revision 1.1016
retrieving revision 1.1017
diff -u -p -r1.1016 -r1.1017
--- upstream	29 Jan 2010 02:44:17 -0000	1.1016
+++ upstream	4 Feb 2010 19:06:35 -0000	1.1017
@@ -1,2 +1,3 @@
 linux-2.6.32.tar.bz2
 patch-2.6.32.7.bz2
+patch-2.6.32.8-rc1.bz2


--- block-fix-bugs-in-bio-integrity-mempool-usage.patch DELETED ---


--- linux-2.6-userspace_kvmclock_offset.patch DELETED ---



More information about the scm-commits mailing list