| .. | .. |
|---|
| 23 | 23 | * Alon Levy |
|---|
| 24 | 24 | */ |
|---|
| 25 | 25 | |
|---|
| 26 | +#include <linux/pci.h> |
|---|
| 27 | +#include <linux/uaccess.h> |
|---|
| 28 | + |
|---|
| 26 | 29 | #include "qxl_drv.h" |
|---|
| 27 | 30 | #include "qxl_object.h" |
|---|
| 28 | 31 | |
|---|
| .. | .. |
|---|
| 33 | 36 | static int qxl_alloc_ioctl(struct drm_device *dev, void *data, |
|---|
| 34 | 37 | struct drm_file *file_priv) |
|---|
| 35 | 38 | { |
|---|
| 36 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 39 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 37 | 40 | struct drm_qxl_alloc *qxl_alloc = data; |
|---|
| 38 | 41 | int ret; |
|---|
| 39 | 42 | struct qxl_bo *qobj; |
|---|
| .. | .. |
|---|
| 61 | 64 | static int qxl_map_ioctl(struct drm_device *dev, void *data, |
|---|
| 62 | 65 | struct drm_file *file_priv) |
|---|
| 63 | 66 | { |
|---|
| 64 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 67 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 65 | 68 | struct drm_qxl_map *qxl_map = data; |
|---|
| 66 | 69 | |
|---|
| 67 | 70 | return qxl_mode_dumb_mmap(file_priv, &qdev->ddev, qxl_map->handle, |
|---|
| .. | .. |
|---|
| 85 | 88 | apply_reloc(struct qxl_device *qdev, struct qxl_reloc_info *info) |
|---|
| 86 | 89 | { |
|---|
| 87 | 90 | void *reloc_page; |
|---|
| 91 | + |
|---|
| 88 | 92 | reloc_page = qxl_bo_kmap_atomic_page(qdev, info->dst_bo, info->dst_offset & PAGE_MASK); |
|---|
| 89 | 93 | *(uint64_t *)(reloc_page + (info->dst_offset & ~PAGE_MASK)) = qxl_bo_physical_address(qdev, |
|---|
| 90 | 94 | info->src_bo, |
|---|
| .. | .. |
|---|
| 121 | 125 | qobj = gem_to_qxl_bo(gobj); |
|---|
| 122 | 126 | |
|---|
| 123 | 127 | ret = qxl_release_list_add(release, qobj); |
|---|
| 124 | | - drm_gem_object_put_unlocked(gobj); |
|---|
| 128 | + drm_gem_object_put(gobj); |
|---|
| 125 | 129 | if (ret) |
|---|
| 126 | 130 | return ret; |
|---|
| 127 | 131 | |
|---|
| .. | .. |
|---|
| 162 | 166 | if (cmd->command_size > PAGE_SIZE - sizeof(union qxl_release_info)) |
|---|
| 163 | 167 | return -EINVAL; |
|---|
| 164 | 168 | |
|---|
| 165 | | - if (!access_ok(VERIFY_READ, |
|---|
| 166 | | - u64_to_user_ptr(cmd->command), |
|---|
| 169 | + if (!access_ok(u64_to_user_ptr(cmd->command), |
|---|
| 167 | 170 | cmd->command_size)) |
|---|
| 168 | 171 | return -EFAULT; |
|---|
| 169 | 172 | |
|---|
| .. | .. |
|---|
| 189 | 192 | |
|---|
| 190 | 193 | { |
|---|
| 191 | 194 | struct qxl_drawable *draw = fb_cmd; |
|---|
| 195 | + |
|---|
| 192 | 196 | draw->mm_time = qdev->rom->mm_clock; |
|---|
| 193 | 197 | } |
|---|
| 194 | 198 | |
|---|
| .. | .. |
|---|
| 272 | 276 | static int qxl_execbuffer_ioctl(struct drm_device *dev, void *data, |
|---|
| 273 | 277 | struct drm_file *file_priv) |
|---|
| 274 | 278 | { |
|---|
| 275 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 279 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 276 | 280 | struct drm_qxl_execbuffer *execbuffer = data; |
|---|
| 277 | 281 | struct drm_qxl_command user_cmd; |
|---|
| 278 | 282 | int cmd_num; |
|---|
| .. | .. |
|---|
| 297 | 301 | static int qxl_update_area_ioctl(struct drm_device *dev, void *data, |
|---|
| 298 | 302 | struct drm_file *file) |
|---|
| 299 | 303 | { |
|---|
| 300 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 304 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 301 | 305 | struct drm_qxl_update_area *update_area = data; |
|---|
| 302 | 306 | struct qxl_rect area = {.left = update_area->left, |
|---|
| 303 | 307 | .top = update_area->top, |
|---|
| .. | .. |
|---|
| 318 | 322 | |
|---|
| 319 | 323 | qobj = gem_to_qxl_bo(gobj); |
|---|
| 320 | 324 | |
|---|
| 321 | | - ret = qxl_bo_reserve(qobj, false); |
|---|
| 325 | + ret = qxl_bo_reserve(qobj); |
|---|
| 322 | 326 | if (ret) |
|---|
| 323 | 327 | goto out; |
|---|
| 324 | 328 | |
|---|
| .. | .. |
|---|
| 340 | 344 | qxl_bo_unreserve(qobj); |
|---|
| 341 | 345 | |
|---|
| 342 | 346 | out: |
|---|
| 343 | | - drm_gem_object_put_unlocked(gobj); |
|---|
| 347 | + drm_gem_object_put(gobj); |
|---|
| 344 | 348 | return ret; |
|---|
| 345 | 349 | } |
|---|
| 346 | 350 | |
|---|
| 347 | 351 | static int qxl_getparam_ioctl(struct drm_device *dev, void *data, |
|---|
| 348 | 352 | struct drm_file *file_priv) |
|---|
| 349 | 353 | { |
|---|
| 350 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 354 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 351 | 355 | struct drm_qxl_getparam *param = data; |
|---|
| 352 | 356 | |
|---|
| 353 | 357 | switch (param->param) { |
|---|
| .. | .. |
|---|
| 366 | 370 | static int qxl_clientcap_ioctl(struct drm_device *dev, void *data, |
|---|
| 367 | 371 | struct drm_file *file_priv) |
|---|
| 368 | 372 | { |
|---|
| 369 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 373 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 370 | 374 | struct drm_qxl_clientcap *param = data; |
|---|
| 371 | 375 | int byte, idx; |
|---|
| 372 | 376 | |
|---|
| .. | .. |
|---|
| 387 | 391 | static int qxl_alloc_surf_ioctl(struct drm_device *dev, void *data, |
|---|
| 388 | 392 | struct drm_file *file) |
|---|
| 389 | 393 | { |
|---|
| 390 | | - struct qxl_device *qdev = dev->dev_private; |
|---|
| 394 | + struct qxl_device *qdev = to_qxl(dev); |
|---|
| 391 | 395 | struct drm_qxl_alloc_surf *param = data; |
|---|
| 392 | 396 | struct qxl_bo *qobj; |
|---|
| 393 | 397 | int handle; |
|---|