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