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