rpms/kernel/devel kernel.spec, 1.593, 1.594 linux-2.6-drm-i915-modeset.patch, 1.7, 1.8 nouveau-drm.patch, 1.10, 1.11
Dave Airlie (airlied)
fedora-extras-commits at redhat.com
Tue Apr 8 05:55:45 UTC 2008
Author: airlied
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27668
Modified Files:
kernel.spec linux-2.6-drm-i915-modeset.patch nouveau-drm.patch
Log Message:
* Tue Apr 08 2008 Dave Airlie <airlied at redhat.com>
- drm fixes, should fix radeon mappings problem and nouveau crashes
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.593
retrieving revision 1.594
diff -u -r1.593 -r1.594
--- kernel.spec 8 Apr 2008 04:21:12 -0000 1.593
+++ kernel.spec 8 Apr 2008 05:54:57 -0000 1.594
@@ -1758,6 +1758,9 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
%changelog
+* Tue Apr 08 2008 Dave Airlie <airlied at redhat.com>
+- drm fixes, should fix radeon mappings problem and nouveau crashes
+
* Tue Apr 08 2008 Chuck Ebbert <cebbert at redhat.com>
- Remove pata_ali ATAPI DMA disable patch, now upstream.
- Fix build of pvrusb2 driver.
linux-2.6-drm-i915-modeset.patch:
Index: linux-2.6-drm-i915-modeset.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-drm-i915-modeset.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- linux-2.6-drm-i915-modeset.patch 31 Mar 2008 16:57:48 -0000 1.7
+++ linux-2.6-drm-i915-modeset.patch 8 Apr 2008 05:54:57 -0000 1.8
@@ -6606,10 +6606,10 @@
mutex_lock(&dev->struct_mutex);
diff --git a/drivers/char/drm/drm_stub.c b/drivers/char/drm/drm_stub.c
-index af0105c..4d7e7b3 100644
+index af0105c..3b797b5 100644
--- a/drivers/char/drm/drm_stub.c
+++ b/drivers/char/drm/drm_stub.c
-@@ -36,38 +36,127 @@
+@@ -36,38 +36,135 @@
#include "drmP.h"
#include "drm_core.h"
@@ -6693,6 +6693,7 @@
+{
+ struct drm_magic_entry *pt, *next;
+ struct drm_device *dev = master->minor->dev;
++ struct drm_map_list *r_list, *list_t;
+
+ list_del(&master->head);
+
@@ -6721,6 +6722,13 @@
+ wake_up_interruptible(&master->lock.lock_queue);
+ }
+
++ list_for_each_entry_safe(r_list, list_t, &dev->maplist, head) {
++ if (!(r_list->map->flags & _DRM_DRIVER) && (r_list->master == master)) {
++ drm_rmmap_locked(dev, r_list->map);
++ r_list = NULL;
++ }
++ }
++
+ drm_free(master, sizeof(*master), DRM_MEM_DRIVER);
+}
+
@@ -6744,7 +6752,7 @@
init_timer(&dev->timer);
mutex_init(&dev->struct_mutex);
mutex_init(&dev->ctxlist_mutex);
-@@ -83,6 +172,7 @@ static int drm_fill_in_dev(struct drm_device * dev, struct pci_dev *pdev,
+@@ -83,6 +180,7 @@ static int drm_fill_in_dev(struct drm_device * dev, struct pci_dev *pdev,
dev->hose = pdev->sysdata;
#endif
dev->irq = pdev->irq;
@@ -6752,7 +6760,7 @@
if (drm_ht_create(&dev->map_hash, DRM_MAP_HASH_ORDER)) {
return -ENOMEM;
-@@ -129,10 +219,6 @@ static int drm_fill_in_dev(struct drm_device * dev, struct pci_dev *pdev,
+@@ -129,10 +227,6 @@ static int drm_fill_in_dev(struct drm_device * dev, struct pci_dev *pdev,
}
}
@@ -6763,7 +6771,7 @@
retcode = drm_ctxbitmap_init(dev);
if (retcode) {
DRM_ERROR("Cannot allocate memory for context bitmap.\n");
-@@ -159,48 +245,61 @@ error_out_unreg:
+@@ -159,48 +253,61 @@ error_out_unreg:
* create the proc init entry via proc_init(). This routines assigns
* minor numbers to secondary heads of multi-headed cards
*/
@@ -6859,7 +6867,7 @@
return ret;
}
-@@ -229,28 +328,45 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
+@@ -229,28 +336,45 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
ret = pci_enable_device(pdev);
if (ret)
@@ -6914,7 +6922,7 @@
/**
* Put a device minor number.
-@@ -266,11 +382,6 @@ int drm_put_dev(struct drm_device * dev)
+@@ -266,11 +390,6 @@ int drm_put_dev(struct drm_device * dev)
{
DRM_DEBUG("release primary %s\n", dev->driver->pci_driver.name);
@@ -6926,7 +6934,7 @@
if (dev->devname) {
drm_free(dev->devname, strlen(dev->devname) + 1,
DRM_MEM_DRIVER);
-@@ -290,18 +401,18 @@ int drm_put_dev(struct drm_device * dev)
+@@ -290,18 +409,18 @@ int drm_put_dev(struct drm_device * dev)
* last minor released.
*
*/
@@ -7088,10 +7096,10 @@
+ device_unregister(&minor->kdev);
}
diff --git a/drivers/char/drm/drm_vm.c b/drivers/char/drm/drm_vm.c
-index 6184b98..832c927 100644
+index 77576e3..a249023 100644
--- a/drivers/char/drm/drm_vm.c
+++ b/drivers/char/drm/drm_vm.c
-@@ -83,7 +83,7 @@ static pgprot_t drm_io_prot(uint32_t map_type, struct vm_area_struct *vma)
+@@ -94,7 +94,7 @@ static pgprot_t drm_dma_prot(uint32_t map_type, struct vm_area_struct *vma)
static int drm_do_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7100,7 +7108,7 @@
struct drm_map *map = NULL;
struct drm_map_list *r_list;
struct drm_hash_item *hash;
-@@ -200,7 +200,7 @@ static int drm_do_vm_shm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -211,7 +211,7 @@ static int drm_do_vm_shm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
static void drm_vm_shm_close(struct vm_area_struct *vma)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7109,7 +7117,7 @@
struct drm_vma_entry *pt, *temp;
struct drm_map *map;
struct drm_map_list *r_list;
-@@ -282,7 +282,7 @@ static void drm_vm_shm_close(struct vm_area_struct *vma)
+@@ -293,7 +293,7 @@ static void drm_vm_shm_close(struct vm_area_struct *vma)
static int drm_do_vm_dma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7118,7 +7126,7 @@
struct drm_device_dma *dma = dev->dma;
unsigned long offset;
unsigned long page_nr;
-@@ -317,7 +317,7 @@ static int drm_do_vm_sg_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -328,7 +328,7 @@ static int drm_do_vm_sg_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct drm_map *map = (struct drm_map *) vma->vm_private_data;
struct drm_file *priv = vma->vm_file->private_data;
@@ -7127,7 +7135,7 @@
struct drm_sg_mem *entry = dev->sg;
unsigned long offset;
unsigned long map_offset;
-@@ -398,7 +398,7 @@ static struct vm_operations_struct drm_vm_sg_ops = {
+@@ -409,7 +409,7 @@ static struct vm_operations_struct drm_vm_sg_ops = {
static void drm_vm_open_locked(struct vm_area_struct *vma)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7136,7 +7144,7 @@
struct drm_vma_entry *vma_entry;
DRM_DEBUG("0x%08lx,0x%08lx\n",
-@@ -416,7 +416,7 @@ static void drm_vm_open_locked(struct vm_area_struct *vma)
+@@ -427,7 +427,7 @@ static void drm_vm_open_locked(struct vm_area_struct *vma)
static void drm_vm_open(struct vm_area_struct *vma)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7145,7 +7153,7 @@
mutex_lock(&dev->struct_mutex);
drm_vm_open_locked(vma);
-@@ -434,7 +434,7 @@ static void drm_vm_open(struct vm_area_struct *vma)
+@@ -445,7 +445,7 @@ static void drm_vm_open(struct vm_area_struct *vma)
static void drm_vm_close(struct vm_area_struct *vma)
{
struct drm_file *priv = vma->vm_file->private_data;
@@ -7154,7 +7162,7 @@
struct drm_vma_entry *pt, *temp;
DRM_DEBUG("0x%08lx,0x%08lx\n",
-@@ -469,7 +469,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
+@@ -480,7 +480,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
struct drm_device_dma *dma;
unsigned long length = vma->vm_end - vma->vm_start;
@@ -7163,7 +7171,7 @@
dma = dev->dma;
DRM_DEBUG("start = 0x%lx, end = 0x%lx, page offset = 0x%lx\n",
vma->vm_start, vma->vm_end, vma->vm_pgoff);
-@@ -539,7 +539,7 @@ EXPORT_SYMBOL(drm_core_get_reg_ofs);
+@@ -550,7 +550,7 @@ EXPORT_SYMBOL(drm_core_get_reg_ofs);
static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
{
struct drm_file *priv = filp->private_data;
@@ -7172,7 +7180,7 @@
struct drm_map *map = NULL;
unsigned long offset = 0;
struct drm_hash_item *hash;
-@@ -660,7 +660,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
+@@ -670,7 +670,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
int drm_mmap(struct file *filp, struct vm_area_struct *vma)
{
struct drm_file *priv = filp->private_data;
@@ -7181,7 +7189,7 @@
int ret;
mutex_lock(&dev->struct_mutex);
-@@ -679,8 +679,8 @@ EXPORT_SYMBOL(drm_mmap);
+@@ -689,8 +689,8 @@ EXPORT_SYMBOL(drm_mmap);
* \c Pagefault method for buffer objects.
*
* \param vma Virtual memory area.
@@ -7192,7 +7200,7 @@
*
* It's important that pfns are inserted while holding the bo->mutex lock.
* otherwise we might race with unmap_mapping_range() which is always
-@@ -692,7 +692,8 @@ EXPORT_SYMBOL(drm_mmap);
+@@ -702,7 +702,8 @@ EXPORT_SYMBOL(drm_mmap);
* protected by the bo->mutex lock.
*/
@@ -7202,7 +7210,7 @@
{
struct drm_buffer_object *bo = (struct drm_buffer_object *) vma->vm_private_data;
unsigned long page_offset;
-@@ -704,22 +705,25 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -714,22 +715,25 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
unsigned long bus_base;
unsigned long bus_offset;
unsigned long bus_size;
@@ -7232,7 +7240,7 @@
goto out_unlock;
}
-@@ -734,7 +738,7 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -744,7 +748,7 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
DRM_BO_FLAG_FORCE_MAPPABLE;
err = drm_bo_move_buffer(bo, new_flags, 0, 0);
if (err) {
@@ -7241,7 +7249,7 @@
goto out_unlock;
}
}
-@@ -743,12 +747,11 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -753,12 +757,11 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
&bus_size);
if (err) {
@@ -7256,7 +7264,7 @@
if (bus_size) {
struct drm_mem_type_manager *man = &dev->bm.man[bo->mem.mem_type];
-@@ -761,7 +764,7 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -771,7 +774,7 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
drm_ttm_fixup_caching(ttm);
page = drm_ttm_get_page(ttm, page_offset);
if (!page) {
@@ -7265,7 +7273,7 @@
goto out_unlock;
}
pfn = page_to_pfn(page);
-@@ -770,9 +773,9 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -780,9 +783,9 @@ static int drm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
drm_io_prot(_DRM_TTM, vma);
}
@@ -7277,7 +7285,7 @@
goto out_unlock;
}
out_unlock:
-@@ -827,7 +830,7 @@ static void drm_bo_vm_close(struct vm_area_struct *vma)
+@@ -837,7 +840,7 @@ static void drm_bo_vm_close(struct vm_area_struct *vma)
}
static struct vm_operations_struct drm_bo_vm_ops = {
@@ -7354,7 +7362,7 @@
DRM_ERROR("Unsupported memory type %u\n", (unsigned)type);
return -EINVAL;
diff --git a/drivers/char/drm/i915_dma.c b/drivers/char/drm/i915_dma.c
-index d2b7d3f..9ca655d 100644
+index f3d0dd1..9ca655d 100644
--- a/drivers/char/drm/i915_dma.c
+++ b/drivers/char/drm/i915_dma.c
@@ -38,8 +38,8 @@
@@ -7788,11 +7796,11 @@
{
- drm_i915_private_t *dev_priv = dev->dev_private;
- int i, planes, num_pages = dev_priv->sarea_priv->third_handle ? 3 : 2;
--
-- DRM_DEBUG("%s\n", __FUNCTION__);
+ struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
+ int i, planes, num_pages;
+- DRM_DEBUG("%s\n", __FUNCTION__);
+-
- for (i = 0, planes = 0; i < 2; i++)
- if (dev_priv->sarea_priv->pf_current_page & (0x3 << (2 * i))) {
- dev_priv->sarea_priv->pf_current_page =
@@ -7848,7 +7856,7 @@
drm_i915_hws_addr_t *hws = data;
if (!I915_NEED_GFX_HWS(dev))
-@@ -1540,84 +1556,6 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
+@@ -1538,84 +1556,6 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
return 0;
}
@@ -7933,7 +7941,7 @@
struct drm_ioctl_desc i915_ioctls[] = {
DRM_IOCTL_DEF(DRM_I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
DRM_IOCTL_DEF(DRM_I915_FLUSH, i915_flush_ioctl, DRM_AUTH),
-@@ -1654,8 +1596,3 @@ int i915_driver_device_is_agp(struct drm_device *dev)
+@@ -1658,8 +1598,3 @@ int i915_driver_device_is_agp(struct drm_device *dev)
return 1;
}
@@ -8954,10 +8962,10 @@
int ret;
diff --git a/drivers/char/drm/i915_init.c b/drivers/char/drm/i915_init.c
new file mode 100644
-index 0000000..1234ac0
+index 0000000..4a53fc8
--- /dev/null
+++ b/drivers/char/drm/i915_init.c
-@@ -0,0 +1,408 @@
+@@ -0,0 +1,411 @@
+/*
+ * Copyright (c) 2007 Intel Corporation
+ * Jesse Barnes <jesse.barnes at intel.com>
@@ -9349,6 +9357,9 @@
+{
+ struct drm_i915_private *dev_priv = dev->dev_private;
+
++ if (!dev_priv)
++ return;
++
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
+ return;
+
@@ -16322,7 +16333,7 @@
return ret;
}
diff --git a/drivers/char/drm/radeon_state.c b/drivers/char/drm/radeon_state.c
-index 6f75512..8e4a494 100644
+index 6f75512..3cd3972 100644
--- a/drivers/char/drm/radeon_state.c
+++ b/drivers/char/drm/radeon_state.c
@@ -3012,7 +3012,7 @@ static int radeon_cp_getparam(struct drm_device *dev, void *data, struct drm_fil
@@ -16334,3 +16345,20 @@
break;
#endif
case RADEON_PARAM_GART_TEX_HANDLE:
+@@ -3067,12 +3067,14 @@ static int radeon_cp_setparam(struct drm_device *dev, void *data, struct drm_fil
+ DRM_DEBUG("color tiling disabled\n");
+ dev_priv->front_pitch_offset &= ~RADEON_DST_TILE_MACRO;
+ dev_priv->back_pitch_offset &= ~RADEON_DST_TILE_MACRO;
+- dev_priv->sarea_priv->tiling_enabled = 0;
++ if (dev_priv->sarea_priv)
++ dev_priv->sarea_priv->tiling_enabled = 0;
+ } else if (sp->value == 1) {
+ DRM_DEBUG("color tiling enabled\n");
+ dev_priv->front_pitch_offset |= RADEON_DST_TILE_MACRO;
+ dev_priv->back_pitch_offset |= RADEON_DST_TILE_MACRO;
+- dev_priv->sarea_priv->tiling_enabled = 1;
++ if (dev_priv->sarea_priv)
++ dev_priv->sarea_priv->tiling_enabled = 1;
+ }
+ break;
+ case RADEON_SETPARAM_PCIGART_LOCATION:
nouveau-drm.patch:
Index: nouveau-drm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/nouveau-drm.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- nouveau-drm.patch 20 Mar 2008 06:06:41 -0000 1.10
+++ nouveau-drm.patch 8 Apr 2008 05:54:57 -0000 1.11
@@ -6242,7 +6242,7 @@
+ DRM_ERROR("Unable to initialize the mmio mapping (%d). "
+ "Please report your setup to " DRIVER_EMAIL "\n",
+ ret);
-+ return 1;
++ return -EINVAL;
+ }
+ DRM_DEBUG("regs mapped ok at 0x%lx\n", dev_priv->mmio->offset);
+
More information about the fedora-extras-commits
mailing list