rpms/kernel/F-11 drm-modesetting-radeon.patch, 1.68, 1.69 drm-next.patch, 1.12, 1.13 drm-nouveau.patch, 1.33, 1.34 kernel.spec, 1.1513, 1.1514 drm-radeon-reorder-bm.patch, 1.1, NONE
Dave Airlie
airlied at fedoraproject.org
Mon Apr 6 05:30:09 UTC 2009
- Previous message: [pkgdb] control-center: whot has requested commit
- Next message: rpms/xorg-x11-drv-ati/devel radeon-6.12.0-git-fixes.patch, 1.2, 1.3 radeon-modeset.patch, 1.42, 1.43 radeon.xinf, 1.11, 1.12 xorg-x11-drv-ati.spec, 1.166, 1.167 radeon-r6xx-fix.patch, 1.5, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: airlied
Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv18360
Modified Files:
drm-modesetting-radeon.patch drm-next.patch drm-nouveau.patch
kernel.spec
Removed Files:
drm-radeon-reorder-bm.patch
Log Message:
* Mon Apr 06 2009 Dave Airlie <airlied at redhat.com>
- radeon: bust APIs and move to what we want in the end.
drm-modesetting-radeon.patch:
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-modesetting-radeon.patch,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- drm-modesetting-radeon.patch 18 Mar 2009 07:13:54 -0000 1.68
+++ drm-modesetting-radeon.patch 6 Apr 2009 05:30:06 -0000 1.69
@@ -1,3 +1,48 @@
+commit 280d9ff29dead8e85ed603110ed431d99f07fb99
+Merge: 0221c81 54ed280
+Author: Dave Airlie <airlied at redhat.com>
+Date: Mon Apr 6 14:35:32 2009 +1000
+
+ Merge branch 'drm-rawhide' into drm-f11
+
+ Conflicts:
+ drivers/gpu/drm/radeon/r300_cmdbuf.c
+ drivers/gpu/drm/radeon/radeon_cp.c
+
+commit 54ed2800977d314d8af6c1c47cd718d82f734cb6
+Author: Jerome Glisse <glisse at freedesktop.org>
+Date: Fri Apr 3 15:01:31 2009 +0200
+
+ radeon: cleanup userspace API
+
+ Remove old userspace API we don't want to use and
+ rename wait_rendering to wait_idle
+ change mmap to using userspace mmap call
+
+commit 71c5ad46842fcd214a8e926eb9528e084622d488
+Author: Jerome Glisse <glisse at freedesktop.org>
+Date: Fri Apr 3 13:48:20 2009 +0200
+
+ radeon: remove pin/unpin userspace ioctl
+
+commit 7628d2d9b66fc891fc0b030772a0ebae8e695561
+Author: Dave Airlie <airlied at redhat.com>
+Date: Fri Apr 3 14:56:19 2009 +1000
+
+ radeon: fix two issues with uncached allocs on PCIE systems
+
+commit 79a5ca0c53c2a149f51f71352a6bbf73bcdc40df
+Author: Dave Airlie <airlied at redhat.com>
+Date: Wed Apr 1 22:34:53 2009 +1000
+
+ radeon: reorder bm enable vs mode set
+
+commit c9e19d53bafaacd883ad9eafd3090eb6bc4e4837
+Author: Dave Airlie <airlied at redhat.com>
+Date: Wed Mar 25 21:49:49 2009 +1000
+
+ radeon: add vram limit for testing lower vram
+
commit dea27f6e83efabdc3e37bc5a91d29d6dab893853
Author: Dave Airlie <airlied at redhat.com>
Date: Wed Mar 18 17:07:07 2009 +1000
@@ -1749,7 +1794,7 @@
drm: import TTM basic objects
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
-index e0ab173..69de2db 100644
+index 640339e..fdc60ea 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -30,6 +30,7 @@
@@ -5283,10 +5328,10 @@
out:
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
-index 1c3a8c5..3b78927 100644
+index a04639d..0e46972 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
-@@ -840,6 +840,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
+@@ -868,6 +868,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
set->x, set->y, old_fb);
if (ret != 0)
goto fail_set_mode;
@@ -5295,7 +5340,7 @@
}
kfree(save_encoders);
-@@ -980,3 +982,30 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
+@@ -1007,3 +1009,30 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
return 0;
}
EXPORT_SYMBOL(drm_helper_resume_force_mode);
@@ -5359,7 +5404,7 @@
/**
* Free a buffer.
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-index c26ee08..7687cc8 100644
+index c4ada8b..5d12e8d 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -167,8 +167,12 @@ int drm_lastclose(struct drm_device * dev)
@@ -5957,10 +6002,10 @@
+}
+
diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
-index f52663e..4f1a405 100644
+index 09a3571..71da516 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
-@@ -481,6 +481,10 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -478,6 +478,10 @@ int drm_release(struct inode *inode, struct file *filp)
}
mutex_unlock(&dev->ctxlist_mutex);
@@ -5971,7 +6016,7 @@
mutex_lock(&dev->struct_mutex);
if (file_priv->is_master) {
-@@ -514,6 +518,7 @@ int drm_release(struct inode *inode, struct file *filp)
+@@ -511,6 +515,7 @@ int drm_release(struct inode *inode, struct file *filp)
/* drop the reference held my the file priv */
drm_master_put(&file_priv->master);
file_priv->is_master = 0;
@@ -5980,7 +6025,7 @@
mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/drm_info.c b/drivers/gpu/drm/drm_info.c
-index 60a1b6c..c6bde4c 100644
+index f0f6c6b..dfe452e 100644
--- a/drivers/gpu/drm/drm_info.c
+++ b/drivers/gpu/drm/drm_info.c
@@ -35,6 +35,7 @@
@@ -6886,7 +6931,7 @@
+}
+EXPORT_SYMBOL(drm_ttm_bind);
diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
-index 22f7656..9cd3605 100644
+index 22f7656..e6bbf0e 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -37,9 +37,15 @@
@@ -6947,6 +6992,15 @@
static void drm_vm_open(struct vm_area_struct *vma)
{
struct drm_file *priv = vma->vm_file->private_data;
+@@ -572,7 +592,7 @@ int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
+ return drm_mmap_dma(filp, vma);
+
+ if (drm_ht_find_item(&dev->map_hash, vma->vm_pgoff, &hash)) {
+- DRM_ERROR("Could not find map\n");
++ DRM_ERROR("Could not find map %08x\n", vma->vm_pgoff);
+ return -EINVAL;
+ }
+
@@ -652,6 +672,8 @@ int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
vma->vm_flags |= VM_RESERVED;
vma->vm_page_prot = drm_dma_prot(map->type, vma);
@@ -7145,10 +7199,10 @@
+ return 0;
+}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index 87b6b60..fb548e0 100644
+index ee7ce7b..95422bb 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -374,7 +374,8 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr)
+@@ -397,7 +397,8 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr)
return ret;
}
@@ -7159,10 +7213,10 @@
int i915_irq_emit(struct drm_device *dev, void *data,
struct drm_file *file_priv)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index a283427..1f159ce 100644
+index 64773ce..178386d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -446,12 +446,18 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
+@@ -763,12 +763,18 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
if (!master_priv->sarea_priv)
return 0;
@@ -7185,7 +7239,7 @@
}
return 0;
-@@ -574,12 +580,12 @@ static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
+@@ -891,12 +897,12 @@ static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
switch (pipe) {
case 0:
@@ -14793,7 +14847,7 @@
+}
+
diff --git a/drivers/gpu/drm/radeon/r300_cmdbuf.c b/drivers/gpu/drm/radeon/r300_cmdbuf.c
-index 3efa633..e093532 100644
+index cb2e470..9489a05 100644
--- a/drivers/gpu/drm/radeon/r300_cmdbuf.c
+++ b/drivers/gpu/drm/radeon/r300_cmdbuf.c
@@ -35,6 +35,7 @@
@@ -14826,16 +14880,16 @@
#define ADD_RANGE(reg, count) ADD_RANGE_MARK(reg, count, MARK_SAFE)
-@@ -207,7 +207,7 @@ void r300_init_reg_flags(struct drm_device *dev)
- ADD_RANGE(0x42C0, 2);
- ADD_RANGE(R300_RS_CNTL_0, 2);
+@@ -211,7 +211,7 @@ void r300_init_reg_flags(struct drm_device *dev)
+ if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530)
+ ADD_RANGE(RV530_FG_ZBREG_DEST, 1);
- ADD_RANGE(R300_SC_HYPERZ, 2);
+ ADD_RANGE(0x43A4, 2);
ADD_RANGE(0x43E8, 1);
ADD_RANGE(0x46A4, 5);
-@@ -226,12 +226,14 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -230,12 +230,15 @@ void r300_init_reg_flags(struct drm_device *dev)
ADD_RANGE(0x4E50, 9);
ADD_RANGE(0x4E88, 1);
ADD_RANGE(0x4EA0, 2);
@@ -14853,10 +14907,11 @@
+ ADD_RANGE(0x4F30, 2);
+ ADD_RANGE(0x4F44, 1);
+ ADD_RANGE(0x4F54, 1);
++
+ ADD_RANGE(R300_ZB_ZPASS_DATA, 2); /* ZB_ZPASS_DATA, ZB_ZPASS_ADDR */
ADD_RANGE(R300_TX_FILTER_0, 16);
- ADD_RANGE(R300_TX_FILTER1_0, 16);
-@@ -244,11 +246,16 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -249,11 +252,16 @@ void r300_init_reg_flags(struct drm_device *dev)
ADD_RANGE(R300_TX_BORDER_COLOR_0, 16);
/* Sporadic registers used as primitives are emitted */
@@ -14874,7 +14929,7 @@
if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) {
ADD_RANGE(R500_VAP_INDEX_OFFSET, 1);
ADD_RANGE(R500_US_CONFIG, 2);
-@@ -258,7 +265,10 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -263,7 +271,10 @@ void r300_init_reg_flags(struct drm_device *dev)
ADD_RANGE(R500_RS_INST_0, 16);
ADD_RANGE(R500_RB3D_COLOR_CLEAR_VALUE_AR, 2);
ADD_RANGE(R500_RB3D_CONSTANT_COLOR_AR, 2);
@@ -14886,7 +14941,7 @@
} else {
ADD_RANGE(R300_PFS_CNTL_0, 3);
ADD_RANGE(R300_PFS_NODE_0, 4);
-@@ -270,10 +280,125 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -275,10 +286,125 @@ void r300_init_reg_flags(struct drm_device *dev)
ADD_RANGE(R300_RS_INTERP_0, 8);
ADD_RANGE(R300_RS_ROUTE_0, 8);
@@ -15013,7 +15068,7 @@
{
int i;
if (reg & ~0xffff)
-@@ -284,6 +409,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
+@@ -289,6 +415,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
return 0;
}
@@ -15028,7 +15083,7 @@
dev_priv,
drm_radeon_kcmd_buffer_t
diff --git a/drivers/gpu/drm/radeon/r300_reg.h b/drivers/gpu/drm/radeon/r300_reg.h
-index ee6f811..12f4abb 100644
+index bdbc95f..906c534 100644
--- a/drivers/gpu/drm/radeon/r300_reg.h
+++ b/drivers/gpu/drm/radeon/r300_reg.h
@@ -126,15 +126,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -15347,7 +15402,7 @@
/* BEGIN: Vertex program instruction set */
diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
-index 9d14eee..a379ead 100644
+index bc9d09d..c3f12e6 100644
--- a/drivers/gpu/drm/radeon/r600_cp.c
+++ b/drivers/gpu/drm/radeon/r600_cp.c
@@ -1720,7 +1720,7 @@ static void r600_cp_init_ring_buffer(struct drm_device *dev,
@@ -16402,10 +16457,10 @@
+}
diff --git a/drivers/gpu/drm/radeon/radeon_buffer.c b/drivers/gpu/drm/radeon/radeon_buffer.c
new file mode 100644
-index 0000000..86ab054
+index 0000000..6ea52a8
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_buffer.c
-@@ -0,0 +1,457 @@
+@@ -0,0 +1,464 @@
+/**************************************************************************
+ *
+ * Copyright 2007 Dave Airlie
@@ -16855,12 +16910,19 @@
+ */
+uint64_t radeon_evict_flags(struct drm_buffer_object *bo)
+{
++ struct drm_device *dev = bo->dev;
++ drm_radeon_private_t *dev_priv = dev->dev_private;
++ int cached = 0;
++
++ if (!(dev_priv->flags & RADEON_IS_AGP))
++ cached = DRM_BO_FLAG_CACHED;
++
+ switch (bo->mem.mem_type) {
+ case DRM_BO_MEM_LOCAL:
+ case DRM_BO_MEM_TT:
-+ return DRM_BO_FLAG_MEM_LOCAL;
++ return DRM_BO_FLAG_MEM_LOCAL | cached;
+ default:
-+ return DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_MEM_LOCAL;
++ return DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_MEM_LOCAL | cached;
+ }
+}
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -19251,7 +19313,7 @@
+ kfree(connector);
+}
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index 6f579a8..ac31d0b 100644
+index 77a7a4d..2028a52 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -46,8 +46,12 @@ static void radeon_do_cp_start(drm_radeon_private_t * dev_priv);
@@ -19580,7 +19642,7 @@
if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) {
- RADEON_WRITE_PLL(R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4));
+ RADEON_WRITE_PLL(dev_priv, R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4));
- RADEON_WRITE(R500_SU_REG_DEST, ((1 << dev_priv->num_gb_pipes) - 1));
+ RADEON_WRITE(R300_SU_REG_DEST, ((1 << dev_priv->num_gb_pipes) - 1));
}
RADEON_WRITE(R300_GB_TILE_CONFIG, gb_tile_config);
@@ -547,7 +684,6 @@ static void radeon_do_cp_flush(drm_radeon_private_t * dev_priv)
@@ -21288,10 +21350,10 @@
+}
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
new file mode 100644
-index 0000000..d4d9110
+index 0000000..5c1082f
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
-@@ -0,0 +1,687 @@
+@@ -0,0 +1,681 @@
+/*
+ * Copyright 2008 Jerome Glisse.
+ * All Rights Reserved.
@@ -21393,11 +21455,6 @@
+ if (parser.chunks[i].chunk_id == RADEON_CHUNK_ID_IB)
+ parser.ib_index = i;
+
-+ if (parser.chunks[i].chunk_id == RADEON_CHUNK_ID_OLD) {
-+ parser.ib_index = i;
-+ parser.reloc_index = -1;
-+ }
-+
+ parser.chunks[i].length_dw = user_chunk.length_dw;
+ parser.chunks[i].chunk_data = (uint32_t *)(unsigned long)user_chunk.chunk_data;
+
@@ -21406,7 +21463,6 @@
+
+ switch(parser.chunks[i].chunk_id) {
+ case RADEON_CHUNK_ID_IB:
-+ case RADEON_CHUNK_ID_OLD:
+ if (size == 0) {
+ r = -EINVAL;
+ goto out;
@@ -22878,7 +22934,7 @@
+ if (!ret)
+ return ret;
+
-+ drm_helper_initial_config(dev, false);
++ drm_helper_initial_config(dev);
+
+ return 0;
+}
@@ -22897,10 +22953,10 @@
+ drm_mode_config_cleanup(dev);
+}
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
-index 13a60f4..fcb05a4 100644
+index 13a60f4..8207f33 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -35,48 +35,97 @@
+@@ -35,48 +35,101 @@
#include "radeon_drv.h"
#include "drm_pciids.h"
@@ -22912,6 +22968,7 @@
+int radeon_agpmode = 0;
+int radeon_vram_zero = 0;
+int radeon_gart_size = 512; /* default gart size */
++int radeon_vram_limit = -1;
MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers");
module_param_named(no_wb, radeon_no_wb, int, 0444);
@@ -22944,6 +23001,9 @@
- RADEON_WRITE(R500_DxMODE_INT_MASK, 0);
- RADEON_WRITE(RADEON_GEN_INT_CNTL, 0);
- return 0;
++MODULE_PARM_DESC(vramlimit, "Restrict VRAM vfor testing");
++module_param_named(vramlimit, radeon_vram_limit, int, 0600);
++
+static struct drm_driver driver;
+
+static struct pci_device_id pciidlist[] = {
@@ -23020,7 +23080,7 @@
.dev_priv_size = sizeof(drm_radeon_buf_priv_t),
.load = radeon_driver_load,
.firstopen = radeon_driver_firstopen,
-@@ -92,6 +141,10 @@ static struct drm_driver driver = {
+@@ -92,6 +145,10 @@ static struct drm_driver driver = {
.disable_vblank = radeon_disable_vblank,
.master_create = radeon_master_create,
.master_destroy = radeon_master_destroy,
@@ -23031,7 +23091,7 @@
.irq_preinstall = radeon_driver_irq_preinstall,
.irq_postinstall = radeon_driver_irq_postinstall,
.irq_uninstall = radeon_driver_irq_uninstall,
-@@ -100,7 +153,11 @@ static struct drm_driver driver = {
+@@ -100,7 +157,11 @@ static struct drm_driver driver = {
.get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = radeon_ioctls,
@@ -23043,7 +23103,7 @@
.fops = {
.owner = THIS_MODULE,
.open = drm_open,
-@@ -117,8 +174,15 @@ static struct drm_driver driver = {
+@@ -117,8 +178,15 @@ static struct drm_driver driver = {
.pci_driver = {
.name = DRIVER_NAME,
.id_table = pciidlist,
@@ -23059,7 +23119,7 @@
.name = DRIVER_NAME,
.desc = DRIVER_DESC,
.date = DRIVER_DATE,
-@@ -130,6 +194,29 @@ static struct drm_driver driver = {
+@@ -130,6 +198,29 @@ static struct drm_driver driver = {
static int __init radeon_init(void)
{
driver.num_ioctls = radeon_max_ioctl;
@@ -23090,7 +23150,7 @@
}
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 7091aaf..186e2bc 100644
+index ed4d27e..84f0a8c 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -34,6 +34,8 @@
@@ -23332,7 +23392,7 @@
} drm_radeon_private_t;
typedef struct drm_radeon_buf_priv {
-@@ -362,8 +488,14 @@ typedef struct drm_radeon_kcmd_buffer {
+@@ -362,8 +488,15 @@ typedef struct drm_radeon_kcmd_buffer {
} drm_radeon_kcmd_buffer_t;
extern int radeon_no_wb;
@@ -23344,10 +23404,11 @@
+extern int radeon_modeset;
+extern int radeon_vram_zero;
+extern int radeon_gart_size;
++extern int radeon_vram_limit;
extern u32 radeon_get_ring_head(drm_radeon_private_t *dev_priv);
extern void radeon_set_ring_head(drm_radeon_private_t *dev_priv, u32 val);
-@@ -397,7 +529,7 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
+@@ -397,7 +530,7 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
extern int radeon_fullscreen(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv);
@@ -23356,7 +23417,7 @@
extern void radeon_write_agp_base(drm_radeon_private_t *dev_priv, u64 agp_base);
extern u32 RADEON_READ_MM(drm_radeon_private_t *dev_priv, int addr);
-@@ -406,12 +538,9 @@ extern struct drm_buf *radeon_freelist_get(struct drm_device * dev);
+@@ -406,12 +539,9 @@ extern struct drm_buf *radeon_freelist_get(struct drm_device * dev);
extern int radeon_wait_ring(drm_radeon_private_t * dev_priv, int n);
@@ -23370,7 +23431,7 @@
extern int radeon_mem_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int radeon_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int radeon_mem_init_heap(struct drm_device *dev, void *data, struct drm_file *file_priv);
-@@ -443,13 +572,13 @@ extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value);
+@@ -443,13 +573,13 @@ extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value);
extern int radeon_driver_load(struct drm_device *dev, unsigned long flags);
extern int radeon_driver_unload(struct drm_device *dev);
extern int radeon_driver_firstopen(struct drm_device *dev);
@@ -23388,7 +23449,7 @@
extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg);
-@@ -478,6 +607,12 @@ extern int r600_cp_dispatch_indirect(struct drm_device *dev,
+@@ -478,6 +608,12 @@ extern int r600_cp_dispatch_indirect(struct drm_device *dev,
extern int r600_page_table_init(struct drm_device *dev);
extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info);
@@ -23401,7 +23462,7 @@
/* Flags for stats.boxes
*/
#define RADEON_BOX_DMA_IDLE 0x1
-@@ -486,12 +621,17 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -486,12 +622,17 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
#define RADEON_BOX_WAIT_IDLE 0x8
#define RADEON_BOX_TEXTURE_LOAD 0x10
@@ -23419,7 +23480,7 @@
#define RADEON_AGP_COMMAND 0x0f60
#define RADEON_AGP_COMMAND_PCI_CONFIG 0x0060 /* offset in PCI config */
# define RADEON_AGP_ENABLE (1<<8)
-@@ -667,16 +807,6 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -667,16 +808,6 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
#define R520_MC_IND_WR_EN (1 << 24)
#define R520_MC_IND_DATA 0x74
@@ -23436,7 +23497,7 @@
#define RADEON_MPP_TB_CONFIG 0x01c0
#define RADEON_MEM_CNTL 0x0140
#define RADEON_MEM_SDRAM_MODE_REG 0x0158
-@@ -741,6 +871,7 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -740,6 +871,7 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
#define RADEON_SCRATCH_REG3 0x15ec
#define RADEON_SCRATCH_REG4 0x15f0
#define RADEON_SCRATCH_REG5 0x15f4
@@ -23444,7 +23505,7 @@
#define RADEON_SCRATCH_UMSK 0x0770
#define RADEON_SCRATCH_ADDR 0x0774
-@@ -763,6 +894,12 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -762,6 +894,12 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define R600_SCRATCHOFF(x) (R600_SCRATCH_REG_OFFSET + 4*(x))
@@ -23457,7 +23518,7 @@
#define RADEON_GEN_INT_CNTL 0x0040
# define RADEON_CRTC_VBLANK_MASK (1 << 0)
# define RADEON_CRTC2_VBLANK_MASK (1 << 9)
-@@ -780,10 +917,13 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -779,10 +917,13 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
# define RADEON_SW_INT_FIRE (1 << 26)
# define R500_DISPLAY_INT_STATUS (1 << 0)
@@ -23475,7 +23536,7 @@
#define RADEON_ISYNC_CNTL 0x1724
# define RADEON_ISYNC_ANY2D_IDLE3D (1 << 0)
-@@ -822,12 +962,17 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -821,12 +962,17 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define RADEON_PP_TXFILTER_1 0x1c6c
#define RADEON_PP_TXFILTER_2 0x1c84
@@ -23499,7 +23560,7 @@
#define RADEON_RB3D_CNTL 0x1c3c
# define RADEON_ALPHA_BLEND_ENABLE (1 << 0)
# define RADEON_PLANE_MASK_ENABLE (1 << 1)
-@@ -854,11 +999,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -853,11 +999,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
# define R300_ZC_FLUSH (1 << 0)
# define R300_ZC_FREE (1 << 1)
# define R300_ZC_BUSY (1 << 31)
@@ -23511,7 +23572,7 @@
#define R300_RB3D_DSTCACHE_CTLSTAT 0x4e4c
# define R300_RB3D_DC_FLUSH (2 << 0)
# define R300_RB3D_DC_FREE (2 << 2)
-@@ -866,15 +1006,15 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -865,15 +1006,15 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define RADEON_RB3D_ZSTENCILCNTL 0x1c2c
# define RADEON_Z_TEST_MASK (7 << 4)
# define RADEON_Z_TEST_ALWAYS (7 << 4)
@@ -23531,7 +23592,7 @@
#define RADEON_RBBM_SOFT_RESET 0x00f0
# define RADEON_SOFT_RESET_CP (1 << 0)
# define RADEON_SOFT_RESET_HI (1 << 1)
-@@ -1052,6 +1192,7 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1051,6 +1192,7 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
# define RADEON_PRE_WRITE_LIMIT_SHIFT 23
#define RADEON_CP_IB_BASE 0x0738
@@ -23539,7 +23600,7 @@
#define RADEON_CP_CSQ_CNTL 0x0740
# define RADEON_CSQ_CNT_PRIMARY_MASK (0xff << 0)
-@@ -1062,6 +1203,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1061,6 +1203,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
# define RADEON_CSQ_PRIBM_INDBM (4 << 28)
# define RADEON_CSQ_PRIPIO_INDPIO (15 << 28)
@@ -23548,7 +23609,7 @@
#define RADEON_AIC_CNTL 0x01d0
# define RADEON_PCIGART_TRANSLATE_EN (1 << 0)
# define RS400_MSI_REARM (1 << 3)
-@@ -1144,27 +1287,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1143,27 +1287,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define RADEON_NUM_VERTICES_SHIFT 16
#define RADEON_COLOR_FORMAT_CI8 2
@@ -23576,7 +23637,7 @@
#define R200_PP_TXCBLEND_0 0x2f00
#define R200_PP_TXCBLEND_1 0x2f10
-@@ -1275,16 +1397,44 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1274,16 +1397,44 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define R200_SE_TCL_POINT_SPRITE_CNTL 0x22c4
@@ -23623,7 +23684,7 @@
#define R500_D1CRTC_STATUS 0x609c
#define R500_D2CRTC_STATUS 0x689c
#define R500_CRTC_V_BLANK (1<<0)
-@@ -1746,6 +1896,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1745,6 +1896,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
#define RADEON_RING_HIGH_MARK 128
#define RADEON_PCIGART_TABLE_SIZE (32*1024)
@@ -23632,7 +23693,7 @@
#define RADEON_READ(reg) DRM_READ32( dev_priv->mmio, (reg) )
#define RADEON_WRITE(reg, val) \
-@@ -1760,11 +1912,24 @@ do { \
+@@ -1759,11 +1912,24 @@ do { \
#define RADEON_READ8(reg) DRM_READ8( dev_priv->mmio, (reg) )
#define RADEON_WRITE8(reg,val) DRM_WRITE8( dev_priv->mmio, (reg), (val) )
@@ -23662,7 +23723,7 @@
} while (0)
#define RADEON_WRITE_PCIE(addr, val) \
-@@ -1802,15 +1967,18 @@ do { \
+@@ -1801,15 +1967,18 @@ do { \
RADEON_WRITE(RS600_MC_DATA, val); \
} while (0)
@@ -23684,7 +23745,7 @@
} while (0)
#define CP_PACKET0( reg, n ) \
-@@ -1831,7 +1999,7 @@ do { \
+@@ -1830,7 +1999,7 @@ do { \
#define RADEON_WAIT_UNTIL_2D_IDLE() do { \
OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) ); \
OUT_RING( (RADEON_WAIT_2D_IDLECLEAN | \
@@ -23693,7 +23754,7 @@
} while (0)
#define RADEON_WAIT_UNTIL_3D_IDLE() do { \
-@@ -2036,4 +2204,161 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
+@@ -2035,4 +2204,158 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
write &= mask; \
} while (0)
@@ -23760,9 +23821,6 @@
+
+ if (dev->primary->master) {
+ master_priv = dev->primary->master->driver_priv;
-+
-+ if (master_priv->sarea_priv)
-+ master_priv->sarea_priv->last_fence = dev_priv->counter;
+ }
+ return dev_priv->counter;
+}
@@ -26644,10 +26702,10 @@
+
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
new file mode 100644
-index 0000000..ebb763d
+index 0000000..2f0c54a
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -0,0 +1,1577 @@
+@@ -0,0 +1,1457 @@
+/*
+ * Copyright 2008 Red Hat Inc.
+ *
@@ -26711,11 +26769,8 @@
+ struct drm_radeon_private *dev_priv = dev->dev_private;
+ struct drm_radeon_gem_info *args = data;
+
-+ args->vram_start = dev_priv->mm.vram_offset;
+ args->vram_size = dev_priv->mm.vram_size;
+ args->vram_visible = dev_priv->mm.vram_visible;
-+
-+ args->gart_start = dev_priv->mm.gart_start;
+ args->gart_size = dev_priv->mm.gart_useable;
+
+ return 0;
@@ -26781,11 +26836,12 @@
+ struct drm_gem_object *obj;
+ int ret = 0;
+ int handle;
++ bool no_backing_store = !!(args->flags & RADEON_GEM_NO_BACKING_STORE);
+
+ /* create a gem object to contain this object in */
+ args->size = roundup(args->size, PAGE_SIZE);
+
-+ obj = radeon_gem_object_alloc(dev, args->size, args->alignment, args->initial_domain, args->no_backing_store);
++ obj = radeon_gem_object_alloc(dev, args->size, args->alignment, args->initial_domain, no_backing_store);
+ if (!obj)
+ return -EINVAL;
+
@@ -26964,7 +27020,6 @@
+ struct drm_gem_object *obj;
+ struct drm_radeon_gem_object *obj_priv;
+ loff_t offset;
-+ unsigned long addr;
+
+ obj = drm_gem_object_lookup(dev, file_priv, args->handle);
+ if (obj == NULL)
@@ -26972,10 +27027,8 @@
+
+ offset = args->offset;
+
-+ DRM_DEBUG("got here %p\n", obj);
+ obj_priv = obj->driver_private;
+
-+ DRM_DEBUG("got here %p %p %lld %ld\n", obj, obj_priv->bo, args->size, obj_priv->bo->num_pages);
+ if (!obj_priv->bo) {
+ mutex_lock(&dev->struct_mutex);
+ drm_gem_object_unreference(obj);
@@ -26983,93 +27036,13 @@
+ return -EINVAL;
+ }
+
-+ down_write(¤t->mm->mmap_sem);
-+ addr = do_mmap_pgoff(file_priv->filp, 0, args->size,
-+ PROT_READ | PROT_WRITE, MAP_SHARED,
-+ obj_priv->bo->map_list.hash.key);
-+ up_write(¤t->mm->mmap_sem);
++ args->addr_ptr = (uint64_t)obj_priv->bo->map_list.hash.key << PAGE_SHIFT;
+
-+ DRM_DEBUG("got here %p %d\n", obj, obj_priv->bo->mem.mem_type);
+ mutex_lock(&dev->struct_mutex);
+ drm_gem_object_unreference(obj);
+ mutex_unlock(&dev->struct_mutex);
-+ if (IS_ERR((void *)addr))
-+ return addr;
-+
-+ args->addr_ptr = (uint64_t) addr;
+
+ return 0;
-+
-+}
-+
-+int radeon_gem_pin_ioctl(struct drm_device *dev, void *data,
-+ struct drm_file *file_priv)
-+{
-+ struct drm_radeon_gem_pin *args = data;
-+ struct drm_gem_object *obj;
-+ struct drm_radeon_gem_object *obj_priv;
-+ int ret;
-+ int flags = DRM_BO_FLAG_NO_EVICT;
-+ int mask = DRM_BO_FLAG_NO_EVICT;
-+
-+ /* check for valid args */
-+ if (args->pin_domain) {
-+ mask |= DRM_BO_MASK_MEM;
-+ if (args->pin_domain == RADEON_GEM_DOMAIN_GTT)
-+ flags |= DRM_BO_FLAG_MEM_TT;
-+ else if (args->pin_domain == RADEON_GEM_DOMAIN_VRAM)
-+ flags |= DRM_BO_FLAG_MEM_VRAM;
-+ else /* hand back the offset we currently have if no args supplied
-+ - this is to allow old mesa to work - its a hack */
-+ flags = 0;
-+ }
-+
-+ obj = drm_gem_object_lookup(dev, file_priv, args->handle);
-+ if (obj == NULL)
-+ return -EINVAL;
-+
-+ obj_priv = obj->driver_private;
-+
-+ /* validate into a pin with no fence */
-+ DRM_DEBUG("got here %p %p %d\n", obj, obj_priv->bo, atomic_read(&obj_priv->bo->usage));
-+ if (flags && !(obj_priv->bo->type != drm_bo_type_kernel && !DRM_SUSER(DRM_CURPROC))) {
-+ ret = drm_bo_do_validate(obj_priv->bo, flags, mask,
-+ DRM_BO_HINT_DONT_FENCE, 0);
-+ } else
-+ ret = 0;
-+
-+ args->offset = obj_priv->bo->offset;
-+ DRM_DEBUG("got here %p %p %lx\n", obj, obj_priv->bo, obj_priv->bo->offset);
-+
-+ mutex_lock(&dev->struct_mutex);
-+ drm_gem_object_unreference(obj);
-+ mutex_unlock(&dev->struct_mutex);
-+ return ret;
-+}
-+
-+int radeon_gem_unpin_ioctl(struct drm_device *dev, void *data,
-+ struct drm_file *file_priv)
-+{
-+ struct drm_radeon_gem_unpin *args = data;
-+ struct drm_gem_object *obj;
-+ struct drm_radeon_gem_object *obj_priv;
-+ int ret;
-+
-+ obj = drm_gem_object_lookup(dev, file_priv, args->handle);
-+ if (obj == NULL)
-+ return -EINVAL;
-+
-+ obj_priv = obj->driver_private;
-+
-+ /* validate into a pin with no fence */
-+
-+ ret = drm_bo_do_validate(obj_priv->bo, 0, DRM_BO_FLAG_NO_EVICT,
-+ DRM_BO_HINT_DONT_FENCE, 0);
-+
-+ mutex_lock(&dev->struct_mutex);
-+ drm_gem_object_unreference(obj);
-+ mutex_unlock(&dev->struct_mutex);
-+ return ret;
+}
+
+int radeon_gem_busy(struct drm_device *dev, void *data,
@@ -27081,7 +27054,7 @@
+int radeon_gem_wait_rendering(struct drm_device *dev, void *data,
+ struct drm_file *file_priv)
+{
-+ struct drm_radeon_gem_wait_rendering *args = data;
++ struct drm_radeon_gem_wait_idle *args = data;
+ struct drm_gem_object *obj;
+ struct drm_radeon_gem_object *obj_priv;
+ int ret;
@@ -27192,6 +27165,14 @@
+ if (accessible > bar_size)
+ accessible = bar_size;
+
++ if (radeon_vram_limit > 0) {
++ if ((radeon_vram_limit * 1024) < vram) {
++ DRM_INFO("Forcing VRAM limit from %dK to %dK\n",
++ vram, radeon_vram_limit * 1024);
++ vram = radeon_vram_limit * 1024;
++ }
++ }
++
+ if (accessible > vram)
+ accessible = vram;
+
@@ -27316,11 +27297,15 @@
+{
+ drm_radeon_private_t *dev_priv = dev->dev_private;
+ int ret;
++ int cached = 0;
++
++ if (!(dev_priv->flags & RADEON_IS_AGP))
++ cached = DRM_BO_FLAG_CACHED;
+
+ ret = drm_buffer_object_create(dev, RADEON_DEFAULT_RING_SIZE,
+ drm_bo_type_kernel,
+ DRM_BO_FLAG_READ | DRM_BO_FLAG_MEM_TT |
-+ DRM_BO_FLAG_MAPPABLE | DRM_BO_FLAG_NO_EVICT,
++ DRM_BO_FLAG_MAPPABLE | DRM_BO_FLAG_NO_EVICT | cached,
+ 0, 1, 0, &dev_priv->mm.ring.bo);
+ if (ret) {
+ if (dev_priv->flags & RADEON_IS_AGP)
@@ -27340,7 +27325,7 @@
+ ret = drm_buffer_object_create(dev, PAGE_SIZE,
+ drm_bo_type_kernel,
+ DRM_BO_FLAG_WRITE |DRM_BO_FLAG_READ | DRM_BO_FLAG_MEM_TT |
-+ DRM_BO_FLAG_MAPPABLE | DRM_BO_FLAG_NO_EVICT,
++ DRM_BO_FLAG_MAPPABLE | DRM_BO_FLAG_NO_EVICT | cached,
+ 0, 1, 0, &dev_priv->mm.ring_read.bo);
+ if (ret) {
+ DRM_ERROR("failed to allocate ring read\n");
@@ -28178,53 +28163,6 @@
+ radeon_gem_ib_destroy(dev);
+ return -ENOMEM;
+}
-+
-+static struct drm_gem_object *gem_object_get(struct drm_device *dev, uint32_t name)
-+{
-+ struct drm_gem_object *obj;
-+
-+ spin_lock(&dev->object_name_lock);
-+ obj = idr_find(&dev->object_name_idr, name);
-+ if (obj)
-+ drm_gem_object_reference(obj);
-+ spin_unlock(&dev->object_name_lock);
-+ return obj;
-+}
-+
-+void radeon_gem_update_offsets(struct drm_device *dev, struct drm_master *master)
-+{
-+ drm_radeon_private_t *dev_priv = dev->dev_private;
-+ struct drm_radeon_master_private *master_priv = master->driver_priv;
-+ drm_radeon_sarea_t *sarea_priv = master_priv->sarea_priv;
-+ struct drm_gem_object *obj;
-+ struct drm_radeon_gem_object *obj_priv;
-+
-+ /* update front_pitch_offset and back_pitch_offset */
-+ obj = gem_object_get(dev, sarea_priv->front_handle);
-+ if (obj) {
-+ obj_priv = obj->driver_private;
-+
-+ dev_priv->front_offset = obj_priv->bo->offset;
-+ dev_priv->front_pitch_offset = (((sarea_priv->front_pitch / 64) << 22) |
-+ ((obj_priv->bo->offset
-+ + dev_priv->fb_location) >> 10));
-+ drm_gem_object_unreference(obj);
-+ }
-+
-+ obj = gem_object_get(dev, sarea_priv->back_handle);
-+ if (obj) {
-+ obj_priv = obj->driver_private;
-+ dev_priv->back_offset = obj_priv->bo->offset;
-+ dev_priv->back_pitch_offset = (((sarea_priv->back_pitch / 64) << 22) |
-+ ((obj_priv->bo->offset
-+ + dev_priv->fb_location) >> 10));
-+ drm_gem_object_unreference(obj);
-+ }
-+ dev_priv->color_fmt = RADEON_COLOR_FORMAT_ARGB8888;
-+
-+}
-+
-+
diff --git a/drivers/gpu/drm/radeon/radeon_gem_debugfs.c b/drivers/gpu/drm/radeon/radeon_gem_debugfs.c
new file mode 100644
index 0000000..93f36ce
@@ -31550,10 +31488,10 @@
+#endif
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
new file mode 100644
-index 0000000..ac7bc0a
+index 0000000..0d2f4a5
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
-@@ -0,0 +1,257 @@
+@@ -0,0 +1,258 @@
+/*
+ * Copyright 2007-8 Advanced Micro Devices, Inc.
+ * Copyright 2008 Red Hat Inc.
@@ -31667,8 +31605,6 @@
+ if (pci_enable_device(dev->pdev))
+ return -1;
+
-+ /* Turn on bus mastering -todo fix properly */
-+ radeon_enable_bm(dev_priv);
+
+ DRM_ERROR("\n");
+ /* on atom cards re init the whole card
@@ -31681,7 +31617,6 @@
+ radeon_combios_asic_init(dev);
+ }
+
-+ pci_set_master(dev->pdev);
+
+ for (i = 0; i < 8; i++)
+ RADEON_WRITE(RADEON_BIOS_0_SCRATCH + (i * 4), dev_priv->pmregs.bios_scratch[i]);
@@ -31706,6 +31641,10 @@
+
+ radeon_init_memory_map(dev);
+
++ pci_set_master(dev->pdev);
++ /* Turn on bus mastering -todo fix properly */
++ radeon_enable_bm(dev_priv);
++
+ if (dev_priv->flags & RADEON_IS_PCIE) {
+ memcpy_toio(dev_priv->mm.pcie_table.kmap.virtual, dev_priv->mm.pcie_table_backup, dev_priv->gart_info.table_size);
+ }
@@ -37162,7 +37101,7 @@
+
+#endif
diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
-index fa728ec..6d96e7e 100644
+index fa728ec..ebc5d6c 100644
--- a/drivers/gpu/drm/radeon/radeon_state.c
+++ b/drivers/gpu/drm/radeon/radeon_state.c
@@ -305,8 +305,9 @@ static __inline__ int radeon_check_and_fixup_packet3(drm_radeon_private_t *
@@ -37268,17 +37207,7 @@
/* Update the input parameters for next time */
image->y += height;
image->height -= height;
-@@ -2213,6 +2216,9 @@ static int radeon_cp_swap(struct drm_device *dev, void *data, struct drm_file *f
- if (sarea_priv->nbox > RADEON_NR_SAREA_CLIPRECTS)
- sarea_priv->nbox = RADEON_NR_SAREA_CLIPRECTS;
-
-+ if (dev_priv->mm.vram_offset)
-+ radeon_gem_update_offsets(dev, file_priv->master);
-+
- radeon_cp_dispatch_swap(dev, file_priv->master);
- sarea_priv->ctx_owner = 0;
-
-@@ -2610,8 +2616,8 @@ static int radeon_emit_packets(drm_radeon_private_t * dev_priv,
+@@ -2610,8 +2613,8 @@ static int radeon_emit_packets(drm_radeon_private_t * dev_priv,
if (id >= RADEON_MAX_STATE_PACKETS)
return -EINVAL;
@@ -37289,7 +37218,7 @@
if (sz * sizeof(int) > cmdbuf->bufsz) {
DRM_ERROR("Packet size provided larger than data provided\n");
-@@ -2879,7 +2885,7 @@ static int radeon_cp_cmdbuf(struct drm_device *dev, void *data, struct drm_file
+@@ -2879,7 +2882,7 @@ static int radeon_cp_cmdbuf(struct drm_device *dev, void *data, struct drm_file
orig_nbox = cmdbuf->nbox;
@@ -37298,20 +37227,17 @@
int temp;
temp = r300_do_cp_cmdbuf(dev, file_priv, cmdbuf);
-@@ -3081,6 +3087,12 @@ static int radeon_cp_getparam(struct drm_device *dev, void *data, struct drm_fil
+@@ -3081,6 +3084,9 @@ static int radeon_cp_getparam(struct drm_device *dev, void *data, struct drm_fil
case RADEON_PARAM_NUM_GB_PIPES:
value = dev_priv->num_gb_pipes;
break;
-+ case RADEON_PARAM_KERNEL_MM:
-+ value = dev_priv->mm_enabled;
-+ break;
+ case RADEON_PARAM_DEVICE_ID:
+ value = dev->pci_device; /* just return the PCI device ID */
+ break;
default:
DRM_DEBUG("Invalid parameter %d\n", param->param);
return -EINVAL;
-@@ -3103,11 +3115,17 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
+@@ -3103,11 +3109,17 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
switch (sp->param) {
case RADEON_SETPARAM_FB_LOCATION:
@@ -37329,7 +37255,7 @@
if (sp->value == 0) {
DRM_DEBUG("color tiling disabled\n");
dev_priv->front_pitch_offset &= ~RADEON_DST_TILE_MACRO;
-@@ -3123,13 +3141,21 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
+@@ -3123,13 +3135,21 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
}
break;
case RADEON_SETPARAM_PCIGART_LOCATION:
@@ -37351,22 +37277,7 @@
dev_priv->gart_info.table_size = sp->value;
if (dev_priv->gart_info.table_size < RADEON_PCIGART_TABLE_SIZE)
dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
-@@ -3137,6 +3163,14 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
- case RADEON_SETPARAM_VBLANK_CRTC:
- return radeon_vblank_crtc_set(dev, sp->value);
- break;
-+ case RADEON_SETPARAM_MM_INIT:
-+ if (drm_core_check_feature(dev, DRIVER_MODESET))
-+ return 0;
-+
-+ dev_priv->new_memmap = true;
-+ dev_priv->user_mm_enable = true;
-+ return radeon_gem_mm_init(dev);
-+ break;
- default:
- DRM_DEBUG("Invalid parameter %d\n", sp->param);
- return -EINVAL;
-@@ -3226,7 +3260,19 @@ struct drm_ioctl_desc radeon_ioctls[] = {
+@@ -3226,7 +3246,17 @@ struct drm_ioctl_desc radeon_ioctls[] = {
DRM_IOCTL_DEF(DRM_RADEON_IRQ_WAIT, radeon_irq_wait, DRM_AUTH),
DRM_IOCTL_DEF(DRM_RADEON_SETPARAM, radeon_cp_setparam, DRM_AUTH),
DRM_IOCTL_DEF(DRM_RADEON_SURF_ALLOC, radeon_surface_alloc, DRM_AUTH),
@@ -37377,21 +37288,19 @@
+ DRM_IOCTL_DEF(DRM_RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH),
+
+ DRM_IOCTL_DEF(DRM_RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH),
-+ DRM_IOCTL_DEF(DRM_RADEON_GEM_PIN, radeon_gem_pin_ioctl, DRM_AUTH),
-+ DRM_IOCTL_DEF(DRM_RADEON_GEM_UNPIN, radeon_gem_unpin_ioctl, DRM_AUTH),
+ DRM_IOCTL_DEF(DRM_RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH),
+ DRM_IOCTL_DEF(DRM_RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH),
+ DRM_IOCTL_DEF(DRM_RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH),
-+ DRM_IOCTL_DEF(DRM_RADEON_GEM_WAIT_RENDERING, radeon_gem_wait_rendering, DRM_AUTH),
++ DRM_IOCTL_DEF(DRM_RADEON_GEM_WAIT_IDLE, radeon_gem_wait_rendering, DRM_AUTH),
+ DRM_IOCTL_DEF(DRM_RADEON_CS, radeon_cs_ioctl, DRM_AUTH),
};
int radeon_max_ioctl = DRM_ARRAY_SIZE(radeon_ioctls);
diff --git a/include/drm/drm.h b/include/drm/drm.h
-index 8e77357..17a1e2c 100644
+index 7cb50bd..fcaef63 100644
--- a/include/drm/drm.h
+++ b/include/drm/drm.h
-@@ -174,6 +174,7 @@ enum drm_map_type {
+@@ -173,6 +173,7 @@ enum drm_map_type {
_DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */
_DRM_CONSISTENT = 5, /**< Consistent memory for PCI DMA */
_DRM_GEM = 6, /**< GEM object */
@@ -37400,7 +37309,7 @@
/**
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
-index ccbcd13..b61b0c6 100644
+index c8c4221..04fbd1e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -147,9 +147,23 @@ struct drm_device;
@@ -37596,10 +37505,10 @@
#endif /* __KERNEL__ */
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
-index c7d4b2e..3091fc3 100644
+index ec073d8..32ac55d 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
-@@ -122,4 +122,6 @@ static inline void drm_connector_helper_add(struct drm_connector *connector,
+@@ -121,4 +121,6 @@ static inline void drm_connector_helper_add(struct drm_connector *connector,
}
extern int drm_helper_resume_force_mode(struct drm_device *dev);
@@ -38526,139 +38435,101 @@
+#endif
+#endif
diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
-index 937a275..f716e0a 100644
+index fe3e3a4..ed15ce2 100644
--- a/include/drm/radeon_drm.h
+++ b/include/drm/radeon_drm.h
-@@ -455,6 +455,15 @@ typedef struct {
- int pfCurrentPage; /* which buffer is being displayed? */
- int crtc2_base; /* CRTC2 frame offset */
- int tiling_enabled; /* set by drm, read by 2d + 3d clients */
-+
-+ unsigned int last_fence;
-+
-+ uint32_t front_handle;
-+ uint32_t back_handle;
-+ uint32_t depth_handle;
-+ uint32_t front_pitch;
-+ uint32_t back_pitch;
-+ uint32_t depth_pitch;
- } drm_radeon_sarea_t;
-
- /* WARNING: If you change any of these defines, make sure to change the
-@@ -495,6 +504,18 @@ typedef struct {
+@@ -496,6 +496,16 @@ typedef struct {
+ #define DRM_RADEON_SETPARAM 0x19
#define DRM_RADEON_SURF_ALLOC 0x1a
#define DRM_RADEON_SURF_FREE 0x1b
++/* KMS ioctl */
++#define DRM_RADEON_GEM_INFO 0x1c
++#define DRM_RADEON_GEM_CREATE 0x1d
++#define DRM_RADEON_GEM_MMAP 0x1e
++#define DRM_RADEON_GEM_PREAD 0x21
++#define DRM_RADEON_GEM_PWRITE 0x22
++#define DRM_RADEON_GEM_SET_DOMAIN 0x23
++#define DRM_RADEON_GEM_WAIT_IDLE 0x24
++#define DRM_RADEON_CS 0x26
++#define DRM_RADEON_INFO 0x27
-+#define DRM_RADEON_GEM_INFO 0x1c
-+#define DRM_RADEON_GEM_CREATE 0x1d
-+#define DRM_RADEON_GEM_MMAP 0x1e
-+#define DRM_RADEON_GEM_PIN 0x1f
-+#define DRM_RADEON_GEM_UNPIN 0x20
-+#define DRM_RADEON_GEM_PREAD 0x21
-+#define DRM_RADEON_GEM_PWRITE 0x22
-+#define DRM_RADEON_GEM_SET_DOMAIN 0x23
-+#define DRM_RADEON_GEM_WAIT_RENDERING 0x24
-+
-+#define DRM_RADEON_CS 0x26
-+
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t)
#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START)
- #define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
-@@ -523,6 +544,18 @@ typedef struct {
+@@ -524,6 +534,17 @@ typedef struct {
+ #define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t)
#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t)
#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t)
-
-+#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
-+#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
-+#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
-+#define DRM_IOCTL_RADEON_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PIN, struct drm_radeon_gem_pin)
-+#define DRM_IOCTL_RADEON_GEM_UNPIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_UNPIN, struct drm_radeon_gem_unpin)
-+#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
-+#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
-+#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
-+#define DRM_IOCTL_RADEON_GEM_WAIT_RENDERING DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_RENDERING, struct drm_radeon_gem_wait_rendering)
-+#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
-+
++/* KMS */
++#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info)
++#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create)
++#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap)
++#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread)
++#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
++#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
++#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
++#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs)
++#define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info)
+
+
typedef struct drm_radeon_init {
enum {
- RADEON_INIT_CP = 0x01,
-@@ -680,6 +713,8 @@ typedef struct drm_radeon_indirect {
+@@ -682,6 +703,7 @@ typedef struct drm_radeon_indirect {
#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */
#define RADEON_PARAM_FB_LOCATION 14 /* FB location */
#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */
-+#define RADEON_PARAM_KERNEL_MM 16
-+#define RADEON_PARAM_DEVICE_ID 17
++#define RADEON_PARAM_DEVICE_ID 16
typedef struct drm_radeon_getparam {
int param;
-@@ -734,6 +769,7 @@ typedef struct drm_radeon_setparam {
- #define RADEON_SETPARAM_NEW_MEMMAP 4 /* Use new memory map */
- #define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */
- #define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */
-+#define RADEON_SETPARAM_MM_INIT 7 /* DDX wants memory manager but has no modesetting */
- /* 1.14: Clients can allocate/free a surface
- */
- typedef struct drm_radeon_surface_alloc {
-@@ -749,4 +785,106 @@ typedef struct drm_radeon_surface_free {
+@@ -751,4 +773,112 @@ typedef struct drm_radeon_surface_free {
#define DRM_RADEON_VBLANK_CRTC1 1
#define DRM_RADEON_VBLANK_CRTC2 2
-+#define RADEON_GEM_DOMAIN_CPU 0x1 // Cached CPU domain
-+#define RADEON_GEM_DOMAIN_GTT 0x2 // GTT or cache flushed
-+#define RADEON_GEM_DOMAIN_VRAM 0x4 // VRAM domain
++/*
++ * Kernel modesetting world below.
++ */
++#define RADEON_GEM_DOMAIN_CPU 0x1
++#define RADEON_GEM_DOMAIN_GTT 0x2
++#define RADEON_GEM_DOMAIN_VRAM 0x4
+
-+/* return to userspace start/size of gtt and vram apertures */
+struct drm_radeon_gem_info {
-+ uint64_t gart_start;
-+ uint64_t gart_size;
-+ uint64_t vram_start;
-+ uint64_t vram_size;
-+ uint64_t vram_visible;
++ uint64_t gart_size;
++ uint64_t vram_size;
++ uint64_t vram_visible;
+};
+
++#define RADEON_GEM_NO_BACKING_STORE 1
++
+struct drm_radeon_gem_create {
-+ uint64_t size;
-+ uint64_t alignment;
-+ uint32_t handle;
-+ uint32_t initial_domain; // to allow VRAM to be created
-+ uint32_t no_backing_store; // for VRAM objects - select whether they need backing store
-+ // pretty much front/back/depth don't need it - other things do
++ uint64_t size;
++ uint64_t alignment;
++ uint32_t handle;
++ uint32_t initial_domain;
++ uint32_t flags;
+};
+
+struct drm_radeon_gem_mmap {
-+ uint32_t handle;
-+ uint32_t pad;
-+ uint64_t offset;
-+ uint64_t size;
-+ uint64_t addr_ptr;
++ uint32_t handle;
++ uint32_t pad;
++ uint64_t offset;
++ uint64_t size;
++ uint64_t addr_ptr;
+};
+
+struct drm_radeon_gem_set_domain {
-+ uint32_t handle;
-+ uint32_t read_domains;
-+ uint32_t write_domain;
++ uint32_t handle;
++ uint32_t read_domains;
++ uint32_t write_domain;
+};
+
-+struct drm_radeon_gem_wait_rendering {
-+ uint32_t handle;
-+};
-+
-+struct drm_radeon_gem_pin {
-+ uint32_t handle;
-+ uint32_t pin_domain;
-+ uint64_t alignment;
-+ uint64_t offset;
-+};
-+
-+struct drm_radeon_gem_unpin {
-+ uint32_t handle;
-+ uint32_t pad;
++struct drm_radeon_gem_wait_idle {
++ uint32_t handle;
++ uint32_t pad;
+};
+
+struct drm_radeon_gem_busy {
-+ uint32_t handle;
-+ uint32_t busy;
++ uint32_t handle;
++ uint32_t busy;
+};
+
+struct drm_radeon_gem_pread {
@@ -38670,7 +38541,8 @@
+ /** Length of data to read */
+ uint64_t size;
+ /** Pointer to write the data into. */
-+ uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */
++ /* void *, but pointers are not 32/64 compatible */
++ uint64_t data_ptr;
+};
+
+struct drm_radeon_gem_pwrite {
@@ -38682,28 +38554,43 @@
+ /** Length of data to write */
+ uint64_t size;
+ /** Pointer to read the data from. */
-+ uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */
++ /* void *, but pointers are not 32/64 compatible */
++ uint64_t data_ptr;
+};
+
-+
-+/* New interface which obsolete all previous interface.
-+ */
-+#define RADEON_CHUNK_ID_RELOCS 0x01
-+#define RADEON_CHUNK_ID_IB 0x02
-+#define RADEON_CHUNK_ID_OLD 0xff
++#define RADEON_CHUNK_ID_RELOCS 0x01
++#define RADEON_CHUNK_ID_IB 0x02
+
+struct drm_radeon_cs_chunk {
-+ uint32_t chunk_id;
-+ uint32_t length_dw;
-+ uint64_t chunk_data;
++ uint32_t chunk_id;
++ uint32_t length_dw;
++ uint64_t chunk_data;
+};
+
-+struct drm_radeon_cs {
-+ uint32_t num_chunks;
-+ uint32_t cs_id;
-+ uint64_t chunks; /* this points to uint64_t * which point to
-+ cs chunks */
++struct drm_radeon_cs_reloc {
++ uint32_t handle;
++ uint32_t read_domains;
++ uint32_t write_domain;
++ uint32_t flags;
+};
+
++struct drm_radeon_cs {
++ uint32_t num_chunks;
++ uint32_t cs_id;
++ /* this points to uint64_t * which point to cs chunks */
++ uint64_t chunks;
++ /* updates to the limits after this CS ioctl */
++ uint64_t gart_limit;
++ uint64_t vram_limit;
++};
++
++#define RADEON_INFO_DEVICE_ID 0x00
++#define RADEON_INFO_NUM_GB_PIPES 0x01
++
++struct drm_radeon_info {
++ uint32_t request;
++ uint32_t pad;
++ uint64_t value;
++};
+
#endif
drm-next.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.12 -r 1.13 drm-next.patch
Index: drm-next.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-next.patch,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- drm-next.patch 18 Mar 2009 06:47:16 -0000 1.12
+++ drm-next.patch 6 Apr 2009 05:30:06 -0000 1.13
@@ -1,659 +1,3 @@
-commit 41f13fe81dd1b08723ab9f3fc3c7f29cfa81f1a5
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Mon Mar 16 15:37:02 2009 -0400
-
- drm/radeon: fix logic in r600_page_table_init() to match ati_gart
-
- This fixes page table init on rs600.
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 06f0a488c1b642d3cd7769da66600e5148c3fad8
-Author: Dave Airlie <airlied at redhat.com>
-Date: Fri Mar 13 09:35:32 2009 +1000
-
- drm/radeon: r600 ptes are 64-bit, cleanup cleanup function.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 03efb8853c35aff51c7b901bf412f32765fe0fd9
-Author: Dave Airlie <airlied at redhat.com>
-Date: Tue Mar 10 18:36:38 2009 +1000
-
- drm/radeon: don't call irq changes on r600 suspend/resume
-
- Until we sort out r600 IRQs don't do this.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit d02f7fa77d97a28a4276939f35e44ae995ad13d7
-Author: Dave Airlie <airlied at redhat.com>
-Date: Tue Mar 10 18:34:23 2009 +1000
-
- drm/radeon: fix r600 writeback across suspend/resume
-
- This update was done in mainline radeon, but not in the r600.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 6546bf6d6cbf1f9ac350fd278a1d937d4bb9ad06
-Author: Dave Airlie <airlied at redhat.com>
-Date: Mon Mar 9 15:31:20 2009 +1000
-
- drm/radeon: fix r600 writeback setup.
-
- This fixes 2 bugs:
- 1. the AGP calculation wasn't consistent with the PCI(E) calc for the
- RPTR_ADDR registers. This consolidates the writes and fixes it up.
-
- 2. The scratch address was being incorrectly calculated, this breaks
- it out into a lot more linear steps.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 1847a549ac4db1272dea13d86331c492a2640b3b
-Author: Dave Airlie <airlied at redhat.com>
-Date: Mon Mar 9 12:47:18 2009 +1000
-
- drm: fix warnings about new mappings in info code.
-
- This fixes up the warnings in the debugfs code that conflicted
- with the mapping fixups.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 8f497aade8df2a619eacda927a43ebe82167a84c
-Author: Hannes Eder <hannes at hanneseder.net>
-Date: Thu Mar 5 20:14:18 2009 +0100
-
- drm/radeon: NULL noise: drivers/gpu/drm/radeon/radeon_*.c
-
- Fix this sparse warning:
- drivers/gpu/drm/radeon/r600_cp.c:1811:52: warning: Using plain integer as NULL pointer
- drivers/gpu/drm/radeon/radeon_cp.c:1363:52: warning: Using plain integer as NULL pointer
- drivers/gpu/drm/radeon/radeon_state.c:1983:61: warning: Using plain integer as NULL pointer
-
- Signed-off-by: Hannes Eder <hannes at hanneseder.net>
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit a763d7dc0adb1159c1a52d43e566409da9fa59f0
-Author: Dave Airlie <airlied at redhat.com>
-Date: Mon Mar 9 12:17:08 2009 +1000
-
- drm/radeon: fix r600 pci mapping calls.
-
- This realigns the r600 pci mapping calls with the ati pcigart ones,
- fixing the direction and using the correct interface.
-
- Suggested by Jerome Glisse.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 08932156cc2d4f8807dc5ca5c3d6ccd85080610a
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Sat Mar 7 18:21:21 2009 -0500
-
- drm/radeon: r6xx/r7xx: fix possible oops in r600_page_table_cleanup()
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 53c379e9462b59d4e166429ff064aaf0e7743795
-Author: Dave Airlie <airlied at redhat.com>
-Date: Mon Mar 9 12:12:28 2009 +1000
-
- radeon: call the correct idle function, logic got inverted.
-
- This calls the correct idle function for the R600 and previous chips.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 800b69951174f7de294da575d7e7921041a7e783
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Fri Mar 6 11:47:54 2009 -0500
-
- drm/radeon: RS600: fix interrupt handling
-
- the checks weren't updated when RS600 support
- was added.
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
- Signed-off-by: Dave Airlie <airlied at linux.ie>
-
-commit a7d13ad0e2c1b0572492fd53ca1a090794e2f8e2
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Feb 26 10:15:24 2009 +1000
-
- drm/r600: fix rptr address along lines of previous fixes to radeon.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit eb1d91954ededc00ddcfb51e2626f114ff351524
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Feb 26 10:14:40 2009 +1000
-
- drm/r600: fixup r600 gart table accessor like ati_pcigart.c
-
- This attempts to fixup the r600 GART accessors so they work on other arches.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 6abf66018f7fe231720e50f9a47b142182388869
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Feb 26 10:13:47 2009 +1000
-
- drm/ati_pcigart: use memset_io to reset the memory
-
- Also don't setup pci_gart if we aren't going to need it.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 87f0da55353e23826a54bff57c457a13b97d18f1
-Author: Dave Airlie <airlied at redhat.com>
-Date: Thu Feb 26 10:12:10 2009 +1000
-
- drm: add DRM_READ/WRITE64 wrappers around readq/writeq.
-
- The readq/writeq stuff is from Dave Miller, and he
- warns users to be careful about using these. Plans are only
- r600 to use it so far.
-
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 8ced9c75160947d2235fba75de9413e087e1171a
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Feb 25 17:02:19 2009 -0500
-
- radeon: add RS600 pci ids
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit c1556f71513f2e660fb2bbdc29344361b1ebff35
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Feb 25 16:57:49 2009 -0500
-
- radeon: add support for rs600 GPUs
-
- RS600s are an AMD IGP for Intel CPUs, that look like RS690s from
- a lot of perspectives but look like r600s from a memory controller
- point of view.
-
- Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
- Signed-off-by: Dave Airlie <airlied at redhat.com>
-
-commit 7659e9804b7a66047433182d86393d38ba4eff79
-Author: Alex Deucher <alexdeucher at gmail.com>
-Date: Wed Feb 25 15:55:01 2009 -0500
-
- radeon: fix r600 AGP support
-
[...6070 lines suppressed...]
+ #define DRM_IOCTL_MGA_DMA_BOOTSTRAP DRM_IOWR(DRM_COMMAND_BASE + DRM_MGA_DMA_BOOTSTRAP, drm_mga_dma_bootstrap_t)
+
+ typedef struct _drm_mga_warp_index {
+@@ -310,7 +312,7 @@ typedef struct drm_mga_dma_bootstrap {
+ */
+ /*@{ */
+ unsigned long texture_handle; /**< Handle used to map AGP textures. */
+- uint32_t texture_size; /**< Size of the AGP texture region. */
++ __u32 texture_size; /**< Size of the AGP texture region. */
+ /*@} */
+
+ /**
+@@ -319,7 +321,7 @@ typedef struct drm_mga_dma_bootstrap {
+ * On return from the DRM_MGA_DMA_BOOTSTRAP ioctl, this field will be
+ * filled in with the actual AGP mode. If AGP was not available
+ */
+- uint32_t primary_size;
++ __u32 primary_size;
+
+ /**
+ * Requested number of secondary DMA buffers.
+@@ -329,7 +331,7 @@ typedef struct drm_mga_dma_bootstrap {
+ * allocated. Particularly when PCI DMA is used, this may be
+ * (subtantially) less than the number requested.
+ */
+- uint32_t secondary_bin_count;
++ __u32 secondary_bin_count;
+
+ /**
+ * Requested size of each secondary DMA buffer.
+@@ -338,7 +340,7 @@ typedef struct drm_mga_dma_bootstrap {
+ * dma_mga_dma_bootstrap::secondary_bin_count, it is \b not allowed
+ * to reduce dma_mga_dma_bootstrap::secondary_bin_size.
+ */
+- uint32_t secondary_bin_size;
++ __u32 secondary_bin_size;
+
+ /**
+ * Bit-wise mask of AGPSTAT2_* values. Currently only \c AGPSTAT2_1X,
+@@ -350,12 +352,12 @@ typedef struct drm_mga_dma_bootstrap {
+ * filled in with the actual AGP mode. If AGP was not available
+ * (i.e., PCI DMA was used), this value will be zero.
+ */
+- uint32_t agp_mode;
++ __u32 agp_mode;
+
+ /**
+ * Desired AGP GART size, measured in megabytes.
+ */
+- uint8_t agp_size;
++ __u8 agp_size;
+ } drm_mga_dma_bootstrap_t;
+
+ typedef struct drm_mga_clear {
diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
-index 73ff51f..937a275 100644
+index 73ff51f..fe3e3a4 100644
--- a/include/drm/radeon_drm.h
+++ b/include/drm/radeon_drm.h
-@@ -304,6 +304,8 @@ typedef union {
+@@ -33,6 +33,8 @@
+ #ifndef __RADEON_DRM_H__
+ #define __RADEON_DRM_H__
+
++#include <linux/types.h>
++
+ /* WARNING: If you change any of these defines, make sure to change the
+ * defines in the X server file (radeon_sarea.h)
+ */
+@@ -304,6 +306,8 @@ typedef union {
#define RADEON_SCRATCH_REG_OFFSET 32
@@ -31890,7 +36314,7 @@
#define RADEON_NR_SAREA_CLIPRECTS 12
/* There are 2 heaps (local/GART). Each region within a heap is a
-@@ -526,7 +528,8 @@ typedef struct drm_radeon_init {
+@@ -526,7 +530,8 @@ typedef struct drm_radeon_init {
RADEON_INIT_CP = 0x01,
RADEON_CLEANUP_CP = 0x02,
RADEON_INIT_R200_CP = 0x03,
@@ -31900,3 +36324,117 @@
} func;
unsigned long sarea_priv_offset;
int is_pci;
+@@ -722,7 +727,7 @@ typedef struct drm_radeon_irq_wait {
+
+ typedef struct drm_radeon_setparam {
+ unsigned int param;
+- int64_t value;
++ __s64 value;
+ } drm_radeon_setparam_t;
+
+ #define RADEON_SETPARAM_FB_LOCATION 1 /* determined framebuffer location */
+diff --git a/include/drm/via_drm.h b/include/drm/via_drm.h
+index a3b5c10..170786e 100644
+--- a/include/drm/via_drm.h
++++ b/include/drm/via_drm.h
+@@ -24,6 +24,8 @@
+ #ifndef _VIA_DRM_H_
+ #define _VIA_DRM_H_
+
++#include <linux/types.h>
++
+ /* WARNING: These defines must be the same as what the Xserver uses.
+ * if you change them, you must change the defines in the Xserver.
+ */
+@@ -114,19 +116,19 @@
+ #define VIA_MEM_UNKNOWN 4
+
+ typedef struct {
+- uint32_t offset;
+- uint32_t size;
++ __u32 offset;
++ __u32 size;
+ } drm_via_agp_t;
+
+ typedef struct {
+- uint32_t offset;
+- uint32_t size;
++ __u32 offset;
++ __u32 size;
+ } drm_via_fb_t;
+
+ typedef struct {
+- uint32_t context;
+- uint32_t type;
+- uint32_t size;
++ __u32 context;
++ __u32 type;
++ __u32 size;
+ unsigned long index;
+ unsigned long offset;
+ } drm_via_mem_t;
+@@ -148,9 +150,9 @@ typedef struct _drm_via_futex {
+ VIA_FUTEX_WAIT = 0x00,
+ VIA_FUTEX_WAKE = 0X01
+ } func;
+- uint32_t ms;
+- uint32_t lock;
+- uint32_t val;
++ __u32 ms;
++ __u32 lock;
++ __u32 val;
+ } drm_via_futex_t;
+
+ typedef struct _drm_via_dma_init {
+@@ -211,7 +213,7 @@ typedef struct _drm_via_cmdbuf_size {
+ VIA_CMDBUF_LAG = 0x02
+ } func;
+ int wait;
+- uint32_t size;
++ __u32 size;
+ } drm_via_cmdbuf_size_t;
+
+ typedef enum {
+@@ -236,8 +238,8 @@ enum drm_via_irqs {
+ struct drm_via_wait_irq_request {
+ unsigned irq;
+ via_irq_seq_type_t type;
+- uint32_t sequence;
+- uint32_t signal;
++ __u32 sequence;
++ __u32 signal;
+ };
+
+ typedef union drm_via_irqwait {
+@@ -246,7 +248,7 @@ typedef union drm_via_irqwait {
+ } drm_via_irqwait_t;
+
+ typedef struct drm_via_blitsync {
+- uint32_t sync_handle;
++ __u32 sync_handle;
+ unsigned engine;
+ } drm_via_blitsync_t;
+
+@@ -257,16 +259,16 @@ typedef struct drm_via_blitsync {
+ */
+
+ typedef struct drm_via_dmablit {
+- uint32_t num_lines;
+- uint32_t line_length;
++ __u32 num_lines;
++ __u32 line_length;
+
+- uint32_t fb_addr;
+- uint32_t fb_stride;
++ __u32 fb_addr;
++ __u32 fb_stride;
+
+ unsigned char *mem_addr;
+- uint32_t mem_stride;
++ __u32 mem_stride;
+
+- uint32_t flags;
++ __u32 flags;
+ int to_fb;
+
+ drm_via_blitsync_t sync;
drm-nouveau.patch:
Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-nouveau.patch,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- drm-nouveau.patch 5 Apr 2009 13:46:53 -0000 1.33
+++ drm-nouveau.patch 6 Apr 2009 05:30:07 -0000 1.34
@@ -17127,7 +17127,7 @@
+ dev_priv->init_state = NOUVEAU_CARD_INIT_DONE;
+
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
-+ drm_helper_initial_config(dev, false);
++ drm_helper_initial_config(dev);
+
+ return 0;
+}
@@ -23927,7 +23927,7 @@
+ }
+
+ if (connector->i2c_chan)
-+ edid = (struct edid *)drm_do_probe_ddc_edid(&connector->i2c_chan->adapter);
++ edid = drm_get_edid(&connector->base, &connector->i2c_chan->adapter);
+ drm_mode_connector_update_edid_property(drm_connector, edid);
+
+ if (edid) {
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1513
retrieving revision 1.1514
diff -u -r1.1513 -r1.1514
--- kernel.spec 5 Apr 2009 13:46:56 -0000 1.1513
+++ kernel.spec 6 Apr 2009 05:30:08 -0000 1.1514
@@ -677,7 +677,6 @@
Patch1816: drm-no-gem-on-i8xx.patch
Patch1818: drm-i915-resume-force-mode.patch
Patch1819: drm-intel-big-hammer.patch
-Patch1820: drm-radeon-reorder-bm.patch
Patch1821: drm-intel-lying-systems-without-lvds.patch
# kludge to make ich9 e1000 work
@@ -1290,7 +1289,6 @@
ApplyPatch drm-no-gem-on-i8xx.patch
ApplyPatch drm-i915-resume-force-mode.patch
ApplyPatch drm-intel-big-hammer.patch
-ApplyPatch drm-radeon-reorder-bm.patch
ApplyPatch drm-intel-lying-systems-without-lvds.patch
# linux1394 git patches
@@ -1905,6 +1903,9 @@
# and build.
%changelog
+* Mon Apr 06 2009 Dave Airlie <airlied at redhat.com>
+- radeon: bust APIs and move to what we want in the end.
+
* Sun Apr 05 2009 Ben Skeggs <bskeggs at redhat.com>
- drm-nouveau.patch: big update. mostly cleanups, few functional changes
Big code cleanup (the scary looking, but hopefully harmless part)
--- drm-radeon-reorder-bm.patch DELETED ---
- Previous message: [pkgdb] control-center: whot has requested commit
- Next message: rpms/xorg-x11-drv-ati/devel radeon-6.12.0-git-fixes.patch, 1.2, 1.3 radeon-modeset.patch, 1.42, 1.43 radeon.xinf, 1.11, 1.12 xorg-x11-drv-ati.spec, 1.166, 1.167 radeon-r6xx-fix.patch, 1.5, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list