rpms/kernel/devel drm-modesetting-radeon.patch, 1.6, 1.7 kernel.spec, 1.853, 1.854
Dave Airlie (airlied)
fedora-extras-commits at redhat.com
Wed Aug 6 06:08:00 UTC 2008
Author: airlied
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv4103
Modified Files:
drm-modesetting-radeon.patch kernel.spec
Log Message:
* Wed Aug 06 2008 Dave Airlie <airlied at redhat.com>
- fix modesetting introduced bugs on PCI radeon cards
drm-modesetting-radeon.patch:
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- drm-modesetting-radeon.patch 5 Aug 2008 07:00:27 -0000 1.6
+++ drm-modesetting-radeon.patch 6 Aug 2008 06:07:29 -0000 1.7
@@ -21,7 +21,7 @@
drm-$(CONFIG_COMPAT) += drm_ioc32.o
diff --git a/drivers/gpu/drm/ati_pcigart.c b/drivers/gpu/drm/ati_pcigart.c
-index c533d0c..fdc482e 100644
+index c533d0c..6b608af 100644
--- a/drivers/gpu/drm/ati_pcigart.c
+++ b/drivers/gpu/drm/ati_pcigart.c
@@ -34,9 +34,55 @@
@@ -86,7 +86,7 @@
if (gart_info->table_handle == NULL)
return -ENOMEM;
-+ memset(gart_info->table_handle, 0, gart_info->table_size);
++ memset(gart_info->table_handle->vaddr, 0, gart_info->table_size);
return 0;
}
+EXPORT_SYMBOL(drm_ati_alloc_pcigart_table);
@@ -154,7 +154,7 @@
for (i = 0; i < pages; i++) {
/* we need to support large memory configurations */
entry->busaddr[i] = pci_map_page(dev->pdev, entry->pagelist[i],
-@@ -146,25 +192,15 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+@@ -146,32 +192,18 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
bus_address = 0;
goto done;
}
@@ -183,8 +183,15 @@
+
ret = 1;
- #if defined(__i386__) || defined(__x86_64__)
-@@ -179,3 +215,145 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
+-#if defined(__i386__) || defined(__x86_64__)
+- wbinvd();
+-#else
+ mb();
+-#endif
+
+ done:
+ gart_info->addr = address;
+@@ -179,3 +211,141 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga
return ret;
}
EXPORT_SYMBOL(drm_ati_pcigart_init);
@@ -236,11 +243,7 @@
+ gart_insert_page_into_table(info, page_base, pci_gart + j);
+ }
+
-+#if defined(__i386__) || defined(__x86_64__)
-+ wbinvd();
-+#else
+ mb();
-+#endif
+
+ atipci_be->gart_flush_fn(atipci_be->dev);
+
@@ -26480,7 +26483,7 @@
+
diff --git a/drivers/gpu/drm/radeon/radeon_buffer.c b/drivers/gpu/drm/radeon/radeon_buffer.c
new file mode 100644
-index 0000000..dfd8cb9
+index 0000000..59643eb
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_buffer.c
@@ -0,0 +1,257 @@
@@ -26523,7 +26526,7 @@
+{
+ drm_radeon_private_t *dev_priv = dev->dev_private;
+
-+ if(dev_priv->flags & RADEON_IS_AGP)
++ if (dev_priv->flags & RADEON_IS_AGP)
+ return drm_agp_init_ttm(dev);
+ else
+ return ati_pcigart_init_ttm(dev, &dev_priv->gart_info, radeon_gart_flush);
@@ -26738,7 +26741,7 @@
+ case DRM_BO_MEM_TT:
+ return DRM_BO_FLAG_MEM_LOCAL;
+ default:
-+ return DRM_BO_FLAG_MEM_TT | DRM_BO_FLAG_CACHED;
++ return DRM_BO_FLAG_MEM_TT;
+ }
+}
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -27479,7 +27482,7 @@
+ return NULL;
+}
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
-index f0de81a..36b15f9 100644
+index f0de81a..199c09c 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -31,6 +31,7 @@
@@ -28583,7 +28586,7 @@
+ dev_priv->ring.tail_mask = (dev_priv->ring.size / sizeof(u32)) - 1;
+ dev_priv->ring.high_mark = RADEON_RING_HIGH_MARK;
+
-+ dev_priv->new_memmap = 1;
++ dev_priv->new_memmap = true;
+
+ r300_init_reg_flags(dev);
+
@@ -30024,7 +30027,7 @@
int radeon_no_wb;
+int radeon_dynclks = 1;
- MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers");
+ MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers\n");
module_param_named(no_wb, radeon_no_wb, int, 0444);
+unsigned int radeon_modeset = 0;
@@ -30101,7 +30104,7 @@
}
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 3f0eca9..77332b3 100644
+index 3f0eca9..e93ebe8 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -34,6 +34,8 @@
@@ -30198,6 +30201,8 @@
struct drm_file *file_priv;
};
+-typedef struct drm_radeon_private {
+- drm_radeon_ring_buffer_t ring;
+struct radeon_mm_obj {
+ struct drm_buffer_object *bo;
+ struct drm_bo_kmap_obj kmap;
@@ -30220,9 +30225,12 @@
+
+struct drm_radeon_master_private {
+ drm_local_map_t *sarea;
-+ drm_radeon_sarea_t *sarea_priv;
+ drm_radeon_sarea_t *sarea_priv;
+};
-+
+
+- u32 fb_location;
+- u32 fb_size;
+- int new_memmap;
+/* command submission struct */
+struct drm_radeon_cs_priv {
+ uint32_t id_wcnt;
@@ -30245,14 +30253,10 @@
+ uint32_t *reloc, uint32_t *offset);
+};
+
- typedef struct drm_radeon_private {
- drm_radeon_ring_buffer_t ring;
-- drm_radeon_sarea_t *sarea_priv;
++typedef struct drm_radeon_private {
++ drm_radeon_ring_buffer_t ring;
-- u32 fb_location;
-- u32 fb_size;
- int new_memmap;
--
++ bool new_memmap;
+ bool user_mm_enable; /* userspace enabled the memory manager */
int gart_size;
u32 gart_vm_start;
@@ -32735,10 +32739,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..5675bce
+index 0000000..048218f
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -0,0 +1,872 @@
+@@ -0,0 +1,874 @@
+/*
+ * Copyright 2008 Red Hat Inc.
+ *
@@ -33215,6 +33219,8 @@
+ /* setup a 32MB GART */
+ dev_priv->gart_size = dev_priv->mm.gart_size;
+
++ dev_priv->gart_info.table_size = RADEON_PCIGART_TABLE_SIZE;
++
+#if __OS_HAS_AGP
+ /* setup VRAM vs GART here */
+ if (dev_priv->flags & RADEON_IS_AGP) {
@@ -33276,8 +33282,8 @@
+ dev_priv->gart_info.gart_reg_if = DRM_ATI_GART_IGP;
+ else
+ dev_priv->gart_info.gart_reg_if = DRM_ATI_GART_PCI;
-+ dev_priv->gart_info.addr = NULL;
-+ dev_priv->gart_info.bus_addr = 0;
++ dev_priv->gart_info.addr = dev_priv->gart_info.table_handle->vaddr;
++ dev_priv->gart_info.bus_addr = dev_priv->gart_info.table_handle->busaddr;
+ }
+
+ /* gart values setup - start the GART */
@@ -33577,7 +33583,7 @@
+ if (!dev_priv->ib_objs)
+ goto free_all;
+
-+ for (i = 0; i < RADEON_NUM_IB; i++) {
++ for (i = 0; i < RADEON_NUM_IB; i++) {
+ dev_priv->ib_objs[i] = drm_calloc(1, sizeof(struct radeon_mm_obj), DRM_MEM_DRIVER);
+ if (!dev_priv->ib_objs[i])
+ goto free_all;
@@ -39353,7 +39359,7 @@
+
+#endif
diff --git a/drivers/gpu/drm/radeon/radeon_state.c b/drivers/gpu/drm/radeon/radeon_state.c
-index 11c146b..9adff62 100644
+index 11c146b..6ab431f 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 *
@@ -39986,18 +39992,19 @@
}
break;
case RADEON_SETPARAM_PCIGART_LOCATION:
-@@ -3101,6 +3133,10 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
+@@ -3101,6 +3133,11 @@ 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:
++ 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;
-@@ -3129,14 +3165,6 @@ void radeon_driver_preclose(struct drm_device *dev, struct drm_file *file_priv)
+@@ -3129,14 +3166,6 @@ void radeon_driver_preclose(struct drm_device *dev, struct drm_file *file_priv)
void radeon_driver_lastclose(struct drm_device *dev)
{
@@ -40012,7 +40019,7 @@
radeon_do_release(dev);
}
-@@ -3197,7 +3225,19 @@ struct drm_ioctl_desc radeon_ioctls[] = {
+@@ -3197,7 +3226,19 @@ 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),
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.853
retrieving revision 1.854
diff -u -r1.853 -r1.854
--- kernel.spec 5 Aug 2008 20:58:59 -0000 1.853
+++ kernel.spec 6 Aug 2008 06:07:29 -0000 1.854
@@ -1728,6 +1728,9 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Wed Aug 06 2008 Dave Airlie <airlied at redhat.com>
+- fix modesetting introduced bugs on PCI radeon cards
+
* Tue Aug 05 2008 Chuck Ebbert <cebbert at redhat.com>
- Allow building firmware during arch build (--with firmware).
More information about the fedora-extras-commits
mailing list