diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2009-05-25 20:35:52 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2009-06-03 19:47:49 -0400 |
| commit | 6c51d1cfa0a370b48a157163340190cf5fd2346b (patch) | |
| tree | 0c77e9df84de710e18a6927e6972af12e3cdfd23 | |
| parent | 93c05f222413e3a16e8785f252db4726693abd71 (diff) | |
drm: don't associate _DRM_DRIVER maps with a master
A driver will use the _DRM_DRIVER map flag to indicate that it wants
to be responsible for removing the map itself, bypassing the DRM's
automagic cleanup code.
Since the multi-master changes this has been broken, resulting in some
drivers having their registers unmapped before it's finished with them.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/drm_bufs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c index 0411d912d82a..80a257554b30 100644 --- a/drivers/gpu/drm/drm_bufs.c +++ b/drivers/gpu/drm/drm_bufs.c | |||
| @@ -371,7 +371,8 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset, | |||
| 371 | list->user_token = list->hash.key << PAGE_SHIFT; | 371 | list->user_token = list->hash.key << PAGE_SHIFT; |
| 372 | mutex_unlock(&dev->struct_mutex); | 372 | mutex_unlock(&dev->struct_mutex); |
| 373 | 373 | ||
| 374 | list->master = dev->primary->master; | 374 | if (!(map->flags & _DRM_DRIVER)) |
| 375 | list->master = dev->primary->master; | ||
| 375 | *maplist = list; | 376 | *maplist = list; |
| 376 | return 0; | 377 | return 0; |
| 377 | } | 378 | } |
