mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 19:50:12 +01:00
drm: Add _DRM_DRIVER map flag.
This flag indicates that the driver is responsible for the map.
This commit is contained in:
parent
83e62be6f4
commit
d6295cc9ff
4 changed files with 11 additions and 7 deletions
|
|
@ -484,10 +484,10 @@ static int drm_lastclose(drm_device_t *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
TAILQ_FOREACH_SAFE(map, &dev->maplist, link, mapsave) {
|
TAILQ_FOREACH_SAFE(map, &dev->maplist, link, mapsave) {
|
||||||
|
if (!(map->flags & _DRM_DRIVER))
|
||||||
drm_rmmap(dev, map);
|
drm_rmmap(dev, map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
drm_dma_takedown(dev);
|
drm_dma_takedown(dev);
|
||||||
if ( dev->lock.hw_lock ) {
|
if ( dev->lock.hw_lock ) {
|
||||||
dev->lock.hw_lock = NULL; /* SHM removed */
|
dev->lock.hw_lock = NULL; /* SHM removed */
|
||||||
|
|
|
||||||
|
|
@ -246,9 +246,11 @@ int drm_lastclose(struct drm_device * dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry_safe(r_list, list_t, &dev->maplist, head) {
|
list_for_each_entry_safe(r_list, list_t, &dev->maplist, head) {
|
||||||
|
if (!(r_list->map->flags & _DRM_DRIVER)) {
|
||||||
drm_rmmap_locked(dev, r_list->map);
|
drm_rmmap_locked(dev, r_list->map);
|
||||||
r_list = NULL;
|
r_list = NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (drm_core_check_feature(dev, DRIVER_DMA_QUEUE) && dev->queuelist) {
|
if (drm_core_check_feature(dev, DRIVER_DMA_QUEUE) && dev->queuelist) {
|
||||||
for (i = 0; i < dev->queue_count; i++) {
|
for (i = 0; i < dev->queue_count; i++) {
|
||||||
|
|
|
||||||
|
|
@ -249,7 +249,8 @@ enum drm_map_flags {
|
||||||
_DRM_KERNEL = 0x08, /**< kernel requires access */
|
_DRM_KERNEL = 0x08, /**< kernel requires access */
|
||||||
_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
|
_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
|
||||||
_DRM_CONTAINS_LOCK = 0x20, /**< SHM page that contains lock */
|
_DRM_CONTAINS_LOCK = 0x20, /**< SHM page that contains lock */
|
||||||
_DRM_REMOVABLE = 0x40 /**< Removable mapping */
|
_DRM_REMOVABLE = 0x40, /**< Removable mapping */
|
||||||
|
_DRM_DRIVER = 0x80 /**< Managed by driver */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct drm_ctx_priv_map {
|
struct drm_ctx_priv_map {
|
||||||
|
|
|
||||||
|
|
@ -1320,14 +1320,15 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
|
||||||
base = drm_get_resource_start(dev, mmio_bar);
|
base = drm_get_resource_start(dev, mmio_bar);
|
||||||
size = drm_get_resource_len(dev, mmio_bar);
|
size = drm_get_resource_len(dev, mmio_bar);
|
||||||
|
|
||||||
ret = drm_addmap(dev, base, size, _DRM_REGISTERS, _DRM_KERNEL,
|
ret = drm_addmap(dev, base, size, _DRM_REGISTERS,
|
||||||
&dev_priv->mmio_map);
|
_DRM_KERNEL | _DRM_DRIVER, &dev_priv->mmio_map);
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
|
||||||
intel_init_chipset_flush_compat(dev);
|
intel_init_chipset_flush_compat(dev);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue