.. | .. |
---|
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; |
---|