rpms/kernel/devel drm-radeon-fixes.patch, NONE, 1.1 drm-r600-kms.patch, 1.1, 1.2 kernel.spec, 1.1701, 1.1702

Dave Airlie airlied at fedoraproject.org
Fri Aug 7 10:47:28 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16148

Modified Files:
	drm-r600-kms.patch kernel.spec 
Added Files:
	drm-radeon-fixes.patch 
Log Message:
* Fri Aug 07 2009 Dave Airlie <airlied at redhat.com> 2.6.31-0.139.rc5.git3
- drm-r600-kms.patch - update r600 KMS
- drm-radeon-fixes.patch - patches for queue to Linus


drm-radeon-fixes.patch:
 drivers/gpu/drm/radeon/r600_cp.c       |   22 +++++++++++++++-------
 drivers/gpu/drm/radeon/radeon_device.c |    4 +++-
 drivers/gpu/drm/radeon/radeon_drv.h    |    1 +
 drivers/gpu/drm/radeon/radeon_object.c |    2 +-
 include/drm/drm_pciids.h               |    5 +++++
 5 files changed, 25 insertions(+), 9 deletions(-)

--- NEW FILE drm-radeon-fixes.patch ---
diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
index 146f357..20f1790 100644
--- a/drivers/gpu/drm/radeon/r600_cp.c
+++ b/drivers/gpu/drm/radeon/r600_cp.c
@@ -384,8 +384,9 @@ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
 		DRM_INFO("Loading RV670 PFP Microcode\n");
 		for (i = 0; i < PFP_UCODE_SIZE; i++)
 			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV670_pfp_microcode[i]);
-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) {
-		DRM_INFO("Loading RS780 CP Microcode\n");
+	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
+		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) {
+		DRM_INFO("Loading RS780/RS880 CP Microcode\n");
 		for (i = 0; i < PM4_UCODE_SIZE; i++) {
 			RADEON_WRITE(R600_CP_ME_RAM_DATA,
 				     RS780_cp_microcode[i][0]);
@@ -396,7 +397,7 @@ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
 		}
 
 		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
-		DRM_INFO("Loading RS780 PFP Microcode\n");
+		DRM_INFO("Loading RS780/RS880 PFP Microcode\n");
 		for (i = 0; i < PFP_UCODE_SIZE; i++)
 			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RS780_pfp_microcode[i]);
 	}
@@ -783,6 +784,7 @@ static void r600_gfx_init(struct drm_device *dev,
 		break;
 	case CHIP_RV610:
 	case CHIP_RS780:
+	case CHIP_RS880:
 	case CHIP_RV620:
 		dev_priv->r600_max_pipes = 1;
 		dev_priv->r600_max_tile_pipes = 1;
@@ -917,7 +919,8 @@ static void r600_gfx_init(struct drm_device *dev,
 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630) ||
 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) ||
 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) ||
-	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780))
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880))
 		RADEON_WRITE(R600_DB_DEBUG, R600_PREZ_MUST_WAIT_FOR_POSTZ_DONE);
 	else
 		RADEON_WRITE(R600_DB_DEBUG, 0);
@@ -935,7 +938,8 @@ static void r600_gfx_init(struct drm_device *dev,
 	sq_ms_fifo_sizes = RADEON_READ(R600_SQ_MS_FIFO_SIZES);
 	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) ||
 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) ||
-	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) {
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) {
 		sq_ms_fifo_sizes = (R600_CACHE_FIFO_SIZE(0xa) |
 				    R600_FETCH_FIFO_HIWATER(0xa) |
 				    R600_DONE_FIFO_HIWATER(0xe0) |
@@ -978,7 +982,8 @@ static void r600_gfx_init(struct drm_device *dev,
 					    R600_NUM_ES_STACK_ENTRIES(0));
 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) ||
 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) ||
-		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) {
+		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
+		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) {
 		/* no vertex cache */
 		sq_config &= ~R600_VC_ENABLE;
 
@@ -1035,7 +1040,8 @@ static void r600_gfx_init(struct drm_device *dev,
 
 	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) ||
 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) ||
-	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780))
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) ||
+	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880))
 		RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_TC_ONLY));
 	else
 		RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_VC_AND_TC));
@@ -1078,6 +1084,7 @@ static void r600_gfx_init(struct drm_device *dev,
 		break;
 	case CHIP_RV610:
 	case CHIP_RS780:
+	case CHIP_RS880:
 	case CHIP_RV620:
 		gs_prim_buffer_depth = 32;
 		break;
@@ -1123,6 +1130,7 @@ static void r600_gfx_init(struct drm_device *dev,
 	switch (dev_priv->flags & RADEON_FAMILY_MASK) {
 	case CHIP_RV610:
 	case CHIP_RS780:
+	case CHIP_RS880:
 	case CHIP_RV620:
 		tc_cntl = R600_TC_L2_SIZE(8);
 		break;
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index a162ade..9ff6dcb 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -152,7 +152,9 @@ int radeon_mc_setup(struct radeon_device *rdev)
 		}
 	} else {
 		rdev->mc.vram_location = 0;
-		rdev->mc.gtt_location = rdev->mc.mc_vram_size;
+		tmp = rdev->mc.mc_vram_size;
+		tmp = (tmp + rdev->mc.gtt_size - 1) & ~(rdev->mc.gtt_size - 1);
+		rdev->mc.gtt_location = tmp;
 	}
 	DRM_INFO("radeon: VRAM %uM\n", rdev->mc.real_vram_size >> 20);
 	DRM_INFO("radeon: VRAM from 0x%08X to 0x%08X\n",
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
index 127d045..3933f82 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -143,6 +143,7 @@ enum radeon_family {
 	CHIP_RV635,
 	CHIP_RV670,
 	CHIP_RS780,
+	CHIP_RS880,
 	CHIP_RV770,
 	CHIP_RV730,
 	CHIP_RV710,
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
index dd9ac2f..e98cae3 100644
--- a/drivers/gpu/drm/radeon/radeon_object.c
+++ b/drivers/gpu/drm/radeon/radeon_object.c
@@ -106,7 +106,7 @@ static inline uint32_t radeon_object_flags_from_domain(uint32_t domain)
 		flags |= TTM_PL_FLAG_VRAM | TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED;
 	}
 	if (domain & RADEON_GEM_DOMAIN_GTT) {
-		flags |= TTM_PL_FLAG_TT | TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED;
+		flags |= TTM_PL_FLAG_TT | TTM_PL_MASK_CACHING;
 	}
 	if (domain & RADEON_GEM_DOMAIN_CPU) {
 		flags |= TTM_PL_FLAG_SYSTEM | TTM_PL_MASK_CACHING;
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 9d4c004..8535084 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -370,6 +370,11 @@
 	{0x1002, 0x9614, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
 	{0x1002, 0x9615, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
 	{0x1002, 0x9616, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
+	{0x1002, 0x9710, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
+	{0x1002, 0x9711, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
+	{0x1002, 0x9712, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
+	{0x1002, 0x9713, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
+	{0x1002, 0x9714, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
 	{0, 0, 0}
 
 #define r128_PCI_IDS \

drm-r600-kms.patch:
 b/drivers/gpu/drm/radeon/Makefile        |    3 
 b/drivers/gpu/drm/radeon/atombios_crtc.c |    1 
 b/drivers/gpu/drm/radeon/avivod.h        |   60 +
 b/drivers/gpu/drm/radeon/r100.c          |   69 +
 b/drivers/gpu/drm/radeon/r300.c          |    2 
 b/drivers/gpu/drm/radeon/r600.c          | 1243 +++++++++++++++++++++++++++++--
 b/drivers/gpu/drm/radeon/r600d.h         |  349 ++++++++
 b/drivers/gpu/drm/radeon/radeon.h        |   51 +
 b/drivers/gpu/drm/radeon/radeon_asic.h   |  139 +++
 b/drivers/gpu/drm/radeon/radeon_clocks.c |   10 
 b/drivers/gpu/drm/radeon/radeon_device.c |  340 ++++----
 b/drivers/gpu/drm/radeon/radeon_ring.c   |   63 -
 b/drivers/gpu/drm/radeon/radeon_share.h  |   66 +
 b/drivers/gpu/drm/radeon/radeon_ttm.c    |    6 
 b/drivers/gpu/drm/radeon/rs400.c         |    2 
 b/drivers/gpu/drm/radeon/rv770.c         |  981 +++++++++++++++++++++++-
 b/drivers/gpu/drm/radeon/rv770d.h        |  341 ++++++++
 drivers/gpu/drm/radeon/r300.h            |   36 
 drivers/gpu/drm/radeon/rs780.c           |  102 --
 19 files changed, 3366 insertions(+), 498 deletions(-)

Index: drm-r600-kms.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-r600-kms.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- drm-r600-kms.patch	5 Aug 2009 00:18:52 -0000	1.1
+++ drm-r600-kms.patch	7 Aug 2009 10:47:28 -0000	1.2
@@ -1,12 +1,14 @@
-From 6599b4a047d80cd7b8715b5ad74e0735e6d4b941 Mon Sep 17 00:00:00 2001
+From 00f3a05a622d6888af3ba284e7115f3a08035a3e Mon Sep 17 00:00:00 2001
 From: Jerome Glisse <jglisse at redhat.com>
 Date: Fri, 24 Jul 2009 19:42:23 +0200
 Subject: [PATCH] radeon: add basic KMS support for r6xx & r7xx chipset.
 
 This only provide a kms drm fb device for this hw and allow X
 to run with no acceleration.
+
+Signed-off-by: Jerome Glisse <jglisse at redhat.com>
 ---
- drivers/gpu/drm/radeon/Makefile        |    2 +-
+ drivers/gpu/drm/radeon/Makefile        |    3 +-
  drivers/gpu/drm/radeon/atombios_crtc.c |    1 +
  drivers/gpu/drm/radeon/avivod.h        |   60 ++
  drivers/gpu/drm/radeon/r100.c          |   69 ++
@@ -15,18 +17,17 @@ to run with no acceleration.
  drivers/gpu/drm/radeon/r600.c          | 1243 ++++++++++++++++++++++++++++++--
  drivers/gpu/drm/radeon/r600d.h         |  349 +++++++++
  drivers/gpu/drm/radeon/radeon.h        |   51 ++-
- drivers/gpu/drm/radeon/radeon_asic.h   |  137 ++++-
+ drivers/gpu/drm/radeon/radeon_asic.h   |  139 ++++-
  drivers/gpu/drm/radeon/radeon_clocks.c |   10 +-
- drivers/gpu/drm/radeon/radeon_device.c |  338 +++++----
- drivers/gpu/drm/radeon/radeon_drv.h    |    1 +
+ drivers/gpu/drm/radeon/radeon_device.c |  340 +++++----
  drivers/gpu/drm/radeon/radeon_ring.c   |   63 +--
  drivers/gpu/drm/radeon/radeon_share.h  |   66 ++
  drivers/gpu/drm/radeon/radeon_ttm.c    |    6 +-
  drivers/gpu/drm/radeon/rs400.c         |    2 +-
  drivers/gpu/drm/radeon/rs780.c         |  102 ---
- drivers/gpu/drm/radeon/rv770.c         |  980 +++++++++++++++++++++++--
+ drivers/gpu/drm/radeon/rv770.c         |  981 ++++++++++++++++++++++++--
  drivers/gpu/drm/radeon/rv770d.h        |  340 +++++++++
- 20 files changed, 3364 insertions(+), 494 deletions(-)
+ 19 files changed, 3366 insertions(+), 497 deletions(-)
  create mode 100644 drivers/gpu/drm/radeon/avivod.h
  delete mode 100644 drivers/gpu/drm/radeon/r300.h
  create mode 100644 drivers/gpu/drm/radeon/r600d.h
@@ -34,18 +35,19 @@ to run with no acceleration.
  create mode 100644 drivers/gpu/drm/radeon/rv770d.h
 
 diff --git a/drivers/gpu/drm/radeon/Makefile b/drivers/gpu/drm/radeon/Makefile
-index 013d380..7384cad 100644
+index 013d380..308416f 100644
 --- a/drivers/gpu/drm/radeon/Makefile
 +++ b/drivers/gpu/drm/radeon/Makefile
-@@ -13,7 +13,7 @@ radeon-$(CONFIG_DRM_RADEON_KMS) += radeon_device.o radeon_kms.o \
+@@ -13,8 +13,7 @@ radeon-$(CONFIG_DRM_RADEON_KMS) += radeon_device.o radeon_kms.o \
  	radeon_encoders.o radeon_display.o radeon_cursor.o radeon_i2c.o \
  	radeon_clocks.o radeon_fb.o radeon_gem.o radeon_ring.o radeon_irq_kms.o \
  	radeon_cs.o radeon_bios.o radeon_benchmark.o r100.o r300.o r420.o \
 -	rs400.o rs600.o rs690.o rv515.o r520.o r600.o rs780.o rv770.o \
-+	rs400.o rs600.o rs690.o rv515.o r520.o r600.o rv770.o \
- 	radeon_test.o
+-	radeon_test.o
++	rs400.o rs600.o rs690.o rv515.o r520.o r600.o rv770.o radeon_test.o
  
  radeon-$(CONFIG_COMPAT) += radeon_ioc32.o
+ 
 diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
 index 74d034f..629d7c8 100644
 --- a/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -264,7 +266,7 @@ index 8486b4d..0000000
 -
 -#endif
 diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
-index 538cd90..ae3a9e9 100644
+index 538cd90..46c9ffd 100644
 --- a/drivers/gpu/drm/radeon/r600.c
 +++ b/drivers/gpu/drm/radeon/r600.c
 @@ -25,12 +25,17 @@
@@ -618,8 +620,8 @@ index 538cd90..ae3a9e9 100644
 +	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
 +	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
 +	/* Setup GPU memory space */
++	rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE);
 +	rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE);
-+	rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
 +	if (rdev->flags & RADEON_IS_AGP) {
 +		r = radeon_agp_init(rdev);
 +		if (r)
@@ -688,25 +690,22 @@ index 538cd90..ae3a9e9 100644
 +	rdev->pm.sclk.full = rfixed_const(rdev->clock.default_sclk);
 +	rdev->pm.sclk.full = rfixed_div(rdev->pm.sclk, a);
 +	return 0;
- }
- 
--void r600_vram_info(struct radeon_device *rdev)
++}
++
 +int r600_gpu_reset(struct radeon_device *rdev)
- {
--	r600_vram_get_type(rdev);
--	rdev->mc.real_vram_size = RREG32(R600_CONFIG_MEMSIZE);
--	rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
++{
 +	/* FIXME: implement */
 +	return 0;
-+}
+ }
  
--	/* Could aper size report 0 ? */
--	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
--	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
+-void r600_vram_info(struct radeon_device *rdev)
 +static u32 r600_get_tile_pipe_to_backend_map(u32 num_tile_pipes,
 +					     u32 num_backends,
 +					     u32 backend_disable_mask)
-+{
+ {
+-	r600_vram_get_type(rdev);
+-	rdev->mc.real_vram_size = RREG32(R600_CONFIG_MEMSIZE);
+-	rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
 +	u32 backend_map = 0;
 +	u32 enabled_backends_mask;
 +	u32 enabled_backends_count;
@@ -714,7 +713,10 @@ index 538cd90..ae3a9e9 100644
 +	u32 swizzle_pipe[R6XX_MAX_PIPES];
 +	u32 cur_backend;
 +	u32 i;
-+
+ 
+-	/* Could aper size report 0 ? */
+-	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
+-	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
 +	if (num_tile_pipes > R6XX_MAX_PIPES)
 +		num_tile_pipes = R6XX_MAX_PIPES;
 +	if (num_tile_pipes < 1)
@@ -821,8 +823,8 @@ index 538cd90..ae3a9e9 100644
 +		val >>= 1;
 +	}
 +	return ret;
-+}
-+
+ }
+ 
 +void r600_gpu_init(struct radeon_device *rdev)
 +{
 +	u32 tiling_config;
@@ -1091,8 +1093,8 @@ index 538cd90..ae3a9e9 100644
 +		break;
 +	}
 +	WREG32(TC_CNTL, tmp);
- }
- 
++}
++
 +
  /*
   * Indirect registers accessor
@@ -1351,7 +1353,11 @@ index 538cd90..ae3a9e9 100644
 +		  uint64_t dst_offset,
 +		  unsigned num_pages,
 +		  struct radeon_fence *fence)
-+{
+ {
+-	WREG32(R600_PCIE_PORT_INDEX, ((reg) & 0xff));
+-	(void)RREG32(R600_PCIE_PORT_INDEX);
+-	WREG32(R600_PCIE_PORT_DATA, (v));
+-	(void)RREG32(R600_PCIE_PORT_DATA);
 +	/* FIXME: implement */
 +	return 0;
 +}
@@ -1371,11 +1377,7 @@ index 538cd90..ae3a9e9 100644
 +int r600_set_surface_reg(struct radeon_device *rdev, int reg,
 +			 uint32_t tiling_flags, uint32_t pitch,
 +			 uint32_t offset, uint32_t obj_size)
- {
--	WREG32(R600_PCIE_PORT_INDEX, ((reg) & 0xff));
--	(void)RREG32(R600_PCIE_PORT_INDEX);
--	WREG32(R600_PCIE_PORT_DATA, (v));
--	(void)RREG32(R600_PCIE_PORT_DATA);
++{
 +	/* FIXME: implement */
 +	return 0;
 +}
@@ -1933,7 +1935,7 @@ index 0000000..3337227
 +
 +#endif
 diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
-index b1d945b..542131c 100644
+index b1d945b..0c5c63a 100644
 --- a/drivers/gpu/drm/radeon/radeon.h
 +++ b/drivers/gpu/drm/radeon/radeon.h
 @@ -50,8 +50,8 @@
@@ -1997,20 +1999,20 @@ index b1d945b..542131c 100644
 -	unsigned		gtt_location;
 -	unsigned		gtt_size;
 -	unsigned		vram_location;
+ 	/* for some chips with <= 32MB we need to lie
+ 	 * about vram size near mc fb location */
+-	unsigned		mc_vram_size;
++	u64			mc_vram_size;
 +	u64			gtt_location;
 +	u64			gtt_size;
 +	u64			gtt_start;
 +	u64			gtt_end;
 +	u64			vram_location;
- 	/* for some chips with <= 32MB we need to lie
- 	 * about vram size near mc fb location */
--	unsigned		mc_vram_size;
-+	u64			mc_vram_size;
 +	u64			vram_start;
 +	u64			vram_end;
-+	u64			real_vram_size;
  	unsigned		vram_width;
 -	unsigned		real_vram_size;
++	u64			real_vram_size;
  	int			vram_mtrr;
  	bool			vram_is_ddr;
  };
@@ -2095,7 +2097,7 @@ index b1d945b..542131c 100644
  #define radeon_irq_process(rdev) (rdev)->asic->irq_process((rdev))
  #define radeon_fence_ring_emit(rdev, fence) (rdev)->asic->fence_ring_emit((rdev), (fence))
 diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
-index 9a75876..6c30d11 100644
+index 9a75876..7e9bb12 100644
 --- a/drivers/gpu/drm/radeon/radeon_asic.h
 +++ b/drivers/gpu/drm/radeon/radeon_asic.h
 @@ -58,6 +58,7 @@ int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
@@ -2181,15 +2183,18 @@ index 9a75876..6c30d11 100644
  	.irq_set = &rs600_irq_set,
  	.irq_process = &r100_irq_process,
  	.fence_ring_emit = &r300_fence_ring_emit,
-@@ -380,6 +401,7 @@ static struct radeon_asic rv515_asic = {
+@@ -380,7 +401,10 @@ static struct radeon_asic rv515_asic = {
  	.cp_init = &r100_cp_init,
  	.cp_fini = &r100_cp_fini,
  	.cp_disable = &r100_cp_disable,
 +	.cp_commit = &r100_cp_commit,
  	.ring_start = &rv515_ring_start,
++	.ring_ib_execute = &r100_ring_ib_execute,
++	.ib_test = &r100_ib_test,
  	.irq_set = &r100_irq_set,
  	.irq_process = &r100_irq_process,
-@@ -422,7 +444,10 @@ static struct radeon_asic r520_asic = {
+ 	.fence_ring_emit = &r300_fence_ring_emit,
+@@ -422,7 +446,10 @@ static struct radeon_asic r520_asic = {
  	.cp_init = &r100_cp_init,
  	.cp_fini = &r100_cp_fini,
  	.cp_disable = &r100_cp_disable,
@@ -2200,7 +2205,7 @@ index 9a75876..6c30d11 100644
  	.irq_set = &r100_irq_set,
  	.irq_process = &r100_irq_process,
  	.fence_ring_emit = &r300_fence_ring_emit,
-@@ -440,9 +465,119 @@ static struct radeon_asic r520_asic = {
+@@ -440,9 +467,119 @@ static struct radeon_asic r520_asic = {
  };
  
  /*
@@ -2343,7 +2348,7 @@ index a37cbce..152eef1 100644
  			mpll->reference_div = spll->reference_div;
  	} else {
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index a162ade..532074e 100644
+index 9ff6dcb..d4c804d 100644
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
 @@ -37,7 +37,7 @@
@@ -2364,20 +2369,20 @@ index a162ade..532074e 100644
  {
  	int i;
  
-@@ -154,16 +154,16 @@ int radeon_mc_setup(struct radeon_device *rdev)
- 		rdev->mc.vram_location = 0;
- 		rdev->mc.gtt_location = rdev->mc.mc_vram_size;
+@@ -156,16 +156,14 @@ int radeon_mc_setup(struct radeon_device *rdev)
+ 		tmp = (tmp + rdev->mc.gtt_size - 1) & ~(rdev->mc.gtt_size - 1);
+ 		rdev->mc.gtt_location = tmp;
  	}
 -	DRM_INFO("radeon: VRAM %uM\n", rdev->mc.real_vram_size >> 20);
-+	DRM_INFO("radeon: VRAM %uM\n", (unsigned)(rdev->mc.real_vram_size >> 20));
++	DRM_INFO("radeon: VRAM %uM\n", (unsigned)(rdev->mc.mc_vram_size >> 20));
  	DRM_INFO("radeon: VRAM from 0x%08X to 0x%08X\n",
 -		 rdev->mc.vram_location,
 -		 rdev->mc.vram_location + rdev->mc.mc_vram_size - 1);
+-	if (rdev->mc.real_vram_size != rdev->mc.mc_vram_size)
+-		DRM_INFO("radeon: VRAM less than aperture workaround enabled\n");
+-	DRM_INFO("radeon: GTT %uM\n", rdev->mc.gtt_size >> 20);
 +		 (unsigned)rdev->mc.vram_location,
 +		 (unsigned)(rdev->mc.vram_location + rdev->mc.mc_vram_size - 1));
- 	if (rdev->mc.real_vram_size != rdev->mc.mc_vram_size)
- 		DRM_INFO("radeon: VRAM less than aperture workaround enabled\n");
--	DRM_INFO("radeon: GTT %uM\n", rdev->mc.gtt_size >> 20);
 +	DRM_INFO("radeon: GTT %uM\n", (unsigned)(rdev->mc.gtt_size >> 20));
  	DRM_INFO("radeon: GTT from 0x%08X to 0x%08X\n",
 -		 rdev->mc.gtt_location,
@@ -2387,7 +2392,7 @@ index a162ade..532074e 100644
  	return 0;
  }
  
-@@ -203,6 +203,31 @@ static bool radeon_card_posted(struct radeon_device *rdev)
+@@ -205,6 +203,31 @@ static bool radeon_card_posted(struct radeon_device *rdev)
  
  }
  
@@ -2397,7 +2402,7 @@ index a162ade..532074e 100644
 +	if (rdev->dummy_page.page == NULL)
 +		return -ENOMEM;
 +	rdev->dummy_page.addr = pci_map_page(rdev->pdev, rdev->dummy_page.page,
-+					0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
++					0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);	
 +	if (!rdev->dummy_page.addr) {
 +		__free_page(rdev->dummy_page.page);
 +		rdev->dummy_page.page = NULL;
@@ -2419,7 +2424,7 @@ index a162ade..532074e 100644
  
  /*
   * Registers accessors functions.
-@@ -328,9 +353,15 @@ int radeon_asic_init(struct radeon_device *rdev)
+@@ -330,9 +353,15 @@ int radeon_asic_init(struct radeon_device *rdev)
  	case CHIP_RV635:
  	case CHIP_RV670:
  	case CHIP_RS780:
@@ -2435,7 +2440,7 @@ index a162ade..532074e 100644
  	default:
  		/* FIXME: not supported yet */
  		return -EINVAL;
-@@ -453,7 +484,7 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -455,7 +484,7 @@ int radeon_device_init(struct radeon_device *rdev,
  		       struct pci_dev *pdev,
  		       uint32_t flags)
  {
@@ -2444,7 +2449,7 @@ index a162ade..532074e 100644
  	int dma_bits;
  
  	DRM_INFO("radeon: Initializing kernel modesetting.\n");
-@@ -492,10 +523,6 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -494,10 +523,6 @@ int radeon_device_init(struct radeon_device *rdev,
  	if (r) {
  		return r;
  	}
@@ -2455,7 +2460,7 @@ index a162ade..532074e 100644
  
  	/* set DMA mask + need_dma32 flags.
  	 * PCIE - can handle 40-bits.
-@@ -526,111 +553,118 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -528,111 +553,118 @@ int radeon_device_init(struct radeon_device *rdev,
  	DRM_INFO("register mmio base: 0x%08X\n", (uint32_t)rdev->rmmio_base);
  	DRM_INFO("register mmio size: %u\n", (unsigned)rdev->rmmio_size);
  
@@ -2531,7 +2536,7 @@ index a162ade..532074e 100644
 +		rdev->mc.vram_mtrr = mtrr_add(rdev->mc.aper_base, rdev->mc.aper_size,
 +				MTRR_TYPE_WRCOMB, 1);
 +		DRM_INFO("Detected VRAM RAM=%uM, BAR=%uM\n",
-+				(unsigned)(rdev->mc.real_vram_size >> 20),
++				(unsigned)(rdev->mc.mc_vram_size >> 20),
 +				(unsigned)(rdev->mc.aper_size >> 20));
 +		DRM_INFO("RAM width %dbits %cDR\n",
 +				rdev->mc.vram_width, rdev->mc.vram_is_ddr ? 'D' : 'S');
@@ -2663,7 +2668,7 @@ index a162ade..532074e 100644
  	r = radeon_modeset_init(rdev);
  	if (r) {
  		return r;
-@@ -656,26 +690,29 @@ void radeon_device_fini(struct radeon_device *rdev)
+@@ -658,26 +690,29 @@ void radeon_device_fini(struct radeon_device *rdev)
  	rdev->shutdown = true;
  	/* Order matter so becarefull if you rearrange anythings */
  	radeon_modeset_fini(rdev);
@@ -2709,7 +2714,7 @@ index a162ade..532074e 100644
  	iounmap(rdev->rmmio);
  	rdev->rmmio = NULL;
  }
-@@ -713,9 +750,12 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
+@@ -715,9 +750,12 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
  	/* wait for gpu to finish processing current batch */
  	radeon_fence_wait_last(rdev);
  
@@ -2725,7 +2730,7 @@ index a162ade..532074e 100644
  	/* evict remaining vram memory */
  	radeon_object_evict_vram(rdev);
  
-@@ -751,33 +791,37 @@ int radeon_resume_kms(struct drm_device *dev)
+@@ -753,33 +791,37 @@ int radeon_resume_kms(struct drm_device *dev)
  	if (radeon_gpu_reset(rdev)) {
  		/* FIXME: what do we want to do here ? */
  	}
@@ -2789,18 +2794,6 @@ index a162ade..532074e 100644
  	}
  out:
  	fb_set_suspend(rdev->fbdev_info, 0);
-diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 127d045..3933f82 100644
---- a/drivers/gpu/drm/radeon/radeon_drv.h
-+++ b/drivers/gpu/drm/radeon/radeon_drv.h
-@@ -143,6 +143,7 @@ enum radeon_family {
- 	CHIP_RV635,
- 	CHIP_RV670,
- 	CHIP_RS780,
-+	CHIP_RS880,
- 	CHIP_RV770,
- 	CHIP_RV730,
- 	CHIP_RV710,
 diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
 index 60d1593..37d0958 100644
 --- a/drivers/gpu/drm/radeon/radeon_ring.c
@@ -2973,7 +2966,7 @@ index 63a7735..365d4bc 100644
 +
  #endif
 diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
-index 15c3531..d2799cc 100644
+index 15c3531..d2aff30 100644
 --- a/drivers/gpu/drm/radeon/radeon_ttm.c
 +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
 @@ -352,7 +352,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo,
@@ -2990,7 +2983,7 @@ index 15c3531..d2799cc 100644
  	}
  	DRM_INFO("radeon: %uM of VRAM memory ready\n",
 -		 rdev->mc.real_vram_size / (1024 * 1024));
-+		 (unsigned)(rdev->mc.real_vram_size / (1024 * 1024)));
++		 (unsigned)rdev->mc.real_vram_size / (1024 * 1024));
  	r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_TT, 0,
  			   ((rdev->mc.gtt_size) >> PAGE_SHIFT));
  	if (r) {
@@ -3125,10 +3118,10 @@ index 0affcff..0000000
 -	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
 -}
 diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
-index 21d8ffd..08ce913 100644
+index 21d8ffd..3e12447 100644
 --- a/drivers/gpu/drm/radeon/rv770.c
 +++ b/drivers/gpu/drm/radeon/rv770.c
-@@ -26,99 +26,963 @@
+@@ -26,99 +26,964 @@
   *          Jerome Glisse
   */
  #include "drmP.h"
@@ -3964,7 +3957,8 @@ index 21d8ffd..08ce913 100644
 +	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
 +	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
 +	/* Setup GPU memory space */
-+	rdev->mc.real_vram_size = rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE);
++	rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE);
++	rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE);
 +	if (rdev->flags & RADEON_IS_AGP) {
 +		r = radeon_agp_init(rdev);
 +		if (r)
@@ -4497,5 +4491,5 @@ index 0000000..b0a4354
 +
 +#endif
 -- 
-1.6.2.5
+1.6.0.6
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1701
retrieving revision 1.1702
diff -u -p -r1.1701 -r1.1702
--- kernel.spec	6 Aug 2009 20:48:38 -0000	1.1701
+++ kernel.spec	7 Aug 2009 10:47:28 -0000	1.1702
@@ -670,6 +670,7 @@ Patch1550: linux-2.6-ksm.patch
 Patch1551: linux-2.6-ksm-kvm.patch
 
 # nouveau + drm fixes
+Patch1810: drm-radeon-fixes.patch
 Patch1813: drm-radeon-pm.patch
 Patch1814: drm-nouveau.patch
 Patch1818: drm-i915-resume-force-mode.patch
@@ -1286,6 +1287,7 @@ ApplyPatch linux-2.6-block-silently-erro
 ApplyPatch linux-2.6-e1000-ich9.patch
 
 # Nouveau DRM + drm fixes
+ApplyPatch drm-radeon-fixes.patch
 ApplyPatch drm-r600-kms.patch
 ApplyPatch drm-hush-vblank-warning.patch
 
@@ -1957,6 +1959,10 @@ fi
 # and build.
 
 %changelog
+* Fri Aug 07 2009 Dave Airlie <airlied at redhat.com> 2.6.31-0.139.rc5.git3
+- drm-r600-kms.patch - update r600 KMS
+- drm-radeon-fixes.patch - patches for queue to Linus
+
 * Thu Aug 06 2009 Justin M. Forbes <jforbes at redhat.com> 2.6.31-0.138.rc5.git3
 - Fix kvm virtio_blk errors (#514901)
 




More information about the fedora-extras-commits mailing list