Revert changes to drm_bufs.c and drmP.h to bring the Nouveau kernel tree in sync with drm-next.
The old changes are not necessary for Nouveau because: - nothing calls drm_find_matching_map() - nothing calls drm_addmap() or drm_rmmap() - nothing calls the drm ADD_MAP ioctl Signed-off-by: Pekka Paalanen <[email protected]> --- drivers/gpu/drm/drm_bufs.c | 28 +++++++++++++++++++++------- include/drm/drmP.h | 2 -- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index 436e2fe..6246e3f 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c @@ -51,24 +51,38 @@ resource_size_t drm_get_resource_len(struct drm_device *dev, unsigned int resour EXPORT_SYMBOL(drm_get_resource_len); -struct drm_map_list *drm_find_matching_map(struct drm_device *dev, - struct drm_local_map *map) +static struct drm_map_list *drm_find_matching_map(struct drm_device *dev, + struct drm_local_map *map) { struct drm_map_list *entry; list_for_each_entry(entry, &dev->maplist, head) { + /* + * Because the kernel-userspace ABI is fixed at a 32-bit offset + * while PCI resources may live above that, we ignore the map + * offset for maps of type _DRM_FRAMEBUFFER or _DRM_REGISTERS. + * It is assumed that each driver will have only one resource of + * each type. + */ if (!entry->map || map->type != entry->map->type || entry->master != dev->primary->master) continue; - - if (entry->map->offset == map->offset || - (map->type == _DRM_SHM && map->flags & _DRM_CONTAINS_LOCK)) + switch (map->type) { + case _DRM_SHM: + if (map->flags != _DRM_CONTAINS_LOCK) + break; + case _DRM_REGISTERS: + case _DRM_FRAME_BUFFER: + return entry; + default: /* Make gcc happy */ + ; + } + if (entry->map->offset == map->offset) return entry; } return NULL; } -EXPORT_SYMBOL(drm_find_matching_map); static int drm_map_handle(struct drm_device *dev, struct drm_hash_item *hash, unsigned long user_token, int hashed_handle, int shm) @@ -343,7 +357,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset, /* We do it here so that dev->struct_mutex protects the increment */ user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : map->offset; - ret = drm_map_handle(dev, &list->hash, user_token, 1, + ret = drm_map_handle(dev, &list->hash, user_token, 0, (map->type == _DRM_SHM)); if (ret) { if (map->type == _DRM_REGISTERS) diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 1345c39..eeefb63 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -1240,8 +1240,6 @@ extern void drm_idlelock_release(struct drm_lock_data *lock_data); extern int drm_i_have_hw_lock(struct drm_device *dev, struct drm_file *file_priv); /* Buffer management support (drm_bufs.h) */ -extern struct drm_map_list *drm_find_matching_map(struct drm_device *dev, - drm_local_map_t *map); extern int drm_addbufs_agp(struct drm_device *dev, struct drm_buf_desc * request); extern int drm_addbufs_pci(struct drm_device *dev, struct drm_buf_desc * request); extern int drm_addmap(struct drm_device *dev, resource_size_t offset, -- 1.6.3.3 _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
