[kernel/f16] More complete fix for rhbz#747129

Ben Skeggs bskeggs at fedoraproject.org
Wed Oct 19 04:46:43 UTC 2011


commit bb076be5901a704b5bbaf9c0a026c9325160e8df
Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Wed Oct 19 14:48:18 2011 +1000

    More complete fix for rhbz#747129

 drm-nouveau-updates-fix-nv40-pm.patch |   24 ------------------------
 drm-nouveau-updates.patch             |   24 +++++++++++++++++-------
 kernel.spec                           |    4 ----
 3 files changed, 17 insertions(+), 35 deletions(-)
---
diff --git a/drm-nouveau-updates.patch b/drm-nouveau-updates.patch
index d311d86..1e7c927 100644
--- a/drm-nouveau-updates.patch
+++ b/drm-nouveau-updates.patch
@@ -5146,10 +5146,10 @@ index ad03a0e..0000000
 -}
 diff --git a/drivers/gpu/drm/nouveau/nv40_pm.c b/drivers/gpu/drm/nouveau/nv40_pm.c
 new file mode 100644
-index 0000000..bbc0b9c
+index 0000000..e676b0d
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv40_pm.c
-@@ -0,0 +1,338 @@
+@@ -0,0 +1,348 @@
 +/*
 + * Copyright 2011 Red Hat Inc.
 + *
@@ -5209,12 +5209,14 @@ index 0000000..bbc0b9c
 +	int P = (ctrl & 0x00070000) >> 16;
 +	u32 ref = 27000, clk = 0;
 +
-+	if (ctrl & 0x80000000)
++	if ((ctrl & 0x80000000) && M1) {
 +		clk = ref * N1 / M1;
-+
-+	if (!(ctrl & 0x00000100)) {
-+		if (ctrl & 0x40000000)
-+			clk = clk * N2 / M2;
++		if ((ctrl & 0x40000100) == 0x40000000) {
++			if (M2)
++				clk = clk * N2 / M2;
++			else
++				clk = 0;
++		}
 +	}
 +
 +	return clk >> P;
@@ -5329,6 +5331,11 @@ index 0000000..bbc0b9c
 +	}
 +
 +	/* memory clock */
++	if (!perflvl->memory) {
++		info->mpll_ctrl = 0x00000000;
++		goto out;
++	}
++
 +	ret = nv40_calc_pll(dev, 0x004020, &pll, perflvl->memory,
 +			    &N1, &M1, &N2, &M2, &log2P);
 +	if (ret < 0)
@@ -5416,6 +5423,9 @@ index 0000000..bbc0b9c
 +	mdelay(5);
 +	nv_mask(dev, 0x00c040, 0x00000333, info->ctrl);
 +
++	if (!info->mpll_ctrl)
++		goto resume;
++
 +	/* wait for vblank start on active crtcs, disable memory access */
 +	for (i = 0; i < 2; i++) {
 +		if (!(crtc_mask & (1 << i)))
diff --git a/kernel.spec b/kernel.spec
index 4613f7e..5bb627a 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -680,8 +680,6 @@ Patch1500: fix_xen_guest_on_old_EC2.patch
 
 # nouveau + drm fixes
 Patch1810: drm-nouveau-updates.patch
-# fix divide by zero (rhbz #747129)
-Patch1811: drm-nouveau-updates-fix-nv40-pm.patch
 # intel drm is all merged upstream
 Patch1824: drm-intel-next.patch
 # make sure the lvds comes back on lid open
@@ -1322,8 +1320,6 @@ ApplyPatch fix_xen_guest_on_old_EC2.patch
 
 # Nouveau DRM
 ApplyOptionalPatch drm-nouveau-updates.patch
-# fix divide by zero (rhbz #747129)
-ApplyPatch drm-nouveau-updates-fix-nv40-pm.patch
 
 # Intel DRM
 ApplyOptionalPatch drm-intel-next.patch


More information about the scm-commits mailing list