Rev 5271 | Rev 6104 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5271 | Rev 5346 | ||
---|---|---|---|
Line 227... | Line 227... | ||
227 | up_read(&rdev->exclusive_lock); |
227 | up_read(&rdev->exclusive_lock); |
228 | r = radeon_gem_handle_lockup(robj->rdev, r); |
228 | r = radeon_gem_handle_lockup(robj->rdev, r); |
229 | return r; |
229 | return r; |
230 | } |
230 | } |
Line 231... | Line 231... | ||
231 | 231 | ||
232 | static int radeon_mode_mmap(struct drm_file *filp, |
232 | int radeon_mode_dumb_mmap(struct drm_file *filp, |
233 | struct drm_device *dev, |
- | |
234 | uint32_t handle, bool dumb, |
233 | struct drm_device *dev, |
235 | uint64_t *offset_p) |
234 | uint32_t handle, uint64_t *offset_p) |
236 | { |
235 | { |
237 | struct drm_gem_object *gobj; |
236 | struct drm_gem_object *gobj; |
Line 238... | Line 237... | ||
238 | struct radeon_bo *robj; |
237 | struct radeon_bo *robj; |
239 | 238 | ||
240 | gobj = drm_gem_object_lookup(dev, filp, handle); |
239 | gobj = drm_gem_object_lookup(dev, filp, handle); |
241 | if (gobj == NULL) { |
240 | if (gobj == NULL) { |
242 | return -ENOENT; |
- | |
243 | } |
- | |
244 | - | ||
245 | /* |
- | |
246 | * We don't allow dumb mmaps on objects created using another |
- | |
247 | * interface. |
- | |
248 | */ |
- | |
249 | WARN_ONCE(dumb && !(gobj->dumb || gobj->import_attach), |
- | |
250 | "Illegal dumb map of GPU buffer.\n"); |
241 | return -ENOENT; |
251 | 242 | } |
|
252 | robj = gem_to_radeon_bo(gobj); |
243 | robj = gem_to_radeon_bo(gobj); |
253 | *offset_p = radeon_bo_mmap_offset(robj); |
244 | *offset_p = radeon_bo_mmap_offset(robj); |
254 | drm_gem_object_unreference_unlocked(gobj); |
245 | drm_gem_object_unreference_unlocked(gobj); |
Line 258... | Line 249... | ||
258 | int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data, |
249 | int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data, |
259 | struct drm_file *filp) |
250 | struct drm_file *filp) |
260 | { |
251 | { |
261 | struct drm_radeon_gem_mmap *args = data; |
252 | struct drm_radeon_gem_mmap *args = data; |
Line 262... | Line 253... | ||
262 | 253 | ||
263 | return radeon_mode_mmap(filp, dev, args->handle, false, |
- | |
264 | &args->addr_ptr); |
254 | return radeon_mode_dumb_mmap(filp, dev, args->handle, &args->addr_ptr); |
Line 265... | Line 255... | ||
265 | } |
255 | } |
266 | 256 | ||
267 | int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, |
257 | int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, |