Move DRM ioctl handlers to the right places. Fixes r13486 breakage.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14151 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
index f5608f0..f83b59f 100644
--- a/coregrind/m_syswrap/syswrap-linux.c
+++ b/coregrind/m_syswrap/syswrap-linux.c
@@ -5230,151 +5230,6 @@
PRE_MEM_WRITE("fcntl(F_GETOWN_EX)", ARG3, sizeof(struct vki_f_owner_ex));
break;
- case VKI_DRM_IOCTL_VERSION:
- if (ARG3) {
- struct vki_drm_version *data = (struct vki_drm_version *)ARG3;
- PRE_MEM_WRITE("ioctl(DRM_VERSION).version_major", (Addr)&data->version_major, sizeof(data->version_major));
- PRE_MEM_WRITE("ioctl(DRM_VERSION).version_minor", (Addr)&data->version_minor, sizeof(data->version_minor));
- PRE_MEM_WRITE("ioctl(DRM_VERSION).version_patchlevel", (Addr)&data->version_patchlevel, sizeof(data->version_patchlevel));
- PRE_MEM_READ("ioctl(DRM_VERSION).name_len", (Addr)&data->name_len, sizeof(data->name_len));
- PRE_MEM_READ("ioctl(DRM_VERSION).name", (Addr)&data->name, sizeof(data->name));
- PRE_MEM_WRITE("ioctl(DRM_VERSION).name", (Addr)data->name, data->name_len);
- PRE_MEM_READ("ioctl(DRM_VERSION).date_len", (Addr)&data->date_len, sizeof(data->date_len));
- PRE_MEM_READ("ioctl(DRM_VERSION).date", (Addr)&data->date, sizeof(data->date));
- PRE_MEM_WRITE("ioctl(DRM_VERSION).date", (Addr)data->date, data->date_len);
- PRE_MEM_READ("ioctl(DRM_VERSION).desc_len", (Addr)&data->desc_len, sizeof(data->desc_len));
- PRE_MEM_READ("ioctl(DRM_VERSION).desc", (Addr)&data->desc, sizeof(data->desc));
- PRE_MEM_WRITE("ioctl(DRM_VERSION).desc", (Addr)data->desc, data->desc_len);
- }
- break;
- case VKI_DRM_IOCTL_GET_UNIQUE:
- if (ARG3) {
- struct vki_drm_unique *data = (struct vki_drm_unique *)ARG3;
- PRE_MEM_READ("ioctl(DRM_GET_UNIQUE).unique_len", (Addr)&data->unique_len, sizeof(data->unique_len));
- PRE_MEM_READ("ioctl(DRM_GET_UNIQUE).unique", (Addr)&data->unique, sizeof(data->unique));
- PRE_MEM_WRITE("ioctl(DRM_GET_UNIQUE).unique", (Addr)data->unique, data->unique_len);
- }
- break;
- case VKI_DRM_IOCTL_GET_MAGIC:
- if (ARG3) {
- struct vki_drm_auth *data = (struct vki_drm_auth *)ARG3;
- PRE_MEM_WRITE("ioctl(DRM_GET_MAGIC).magic", (Addr)&data->magic, sizeof(data->magic));
- }
- break;
- case VKI_DRM_IOCTL_WAIT_VBLANK:
- if (ARG3) {
- union vki_drm_wait_vblank *data = (union vki_drm_wait_vblank *)ARG3;
- PRE_MEM_READ("ioctl(DRM_WAIT_VBLANK).request.type", (Addr)&data->request.type, sizeof(data->request.type));
- PRE_MEM_READ("ioctl(DRM_WAIT_VBLANK).request.sequence", (Addr)&data->request.sequence, sizeof(data->request.sequence));
- /* XXX: It seems request.signal isn't used */
- PRE_MEM_WRITE("ioctl(DRM_WAIT_VBLANK).reply", (Addr)&data->reply, sizeof(data->reply));
- }
- break;
- case VKI_DRM_IOCTL_GEM_CLOSE:
- if (ARG3) {
- struct vki_drm_gem_close *data = (struct vki_drm_gem_close *)ARG3;
- PRE_MEM_READ("ioctl(DRM_GEM_CLOSE).handle", (Addr)&data->handle, sizeof(data->handle));
- }
- break;
- case VKI_DRM_IOCTL_GEM_FLINK:
- if (ARG3) {
- struct vki_drm_gem_flink *data = (struct vki_drm_gem_flink *)ARG3;
- PRE_MEM_READ("ioctl(DRM_GEM_FLINK).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_WRITE("ioctl(DRM_GEM_FLINK).name", (Addr)&data->name, sizeof(data->name));
- }
- break;
- case VKI_DRM_IOCTL_GEM_OPEN:
- if (ARG3) {
- struct vki_drm_gem_open *data = (struct vki_drm_gem_open *)ARG3;
- PRE_MEM_READ("ioctl(DRM_GEM_OPEN).name", (Addr)&data->name, sizeof(data->name));
- PRE_MEM_WRITE("ioctl(DRM_GEM_OPEN).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_WRITE("ioctl(DRM_GEM_OPEN).size", (Addr)&data->size, sizeof(data->size));
- }
- break;
- case VKI_DRM_IOCTL_I915_GETPARAM:
- if (ARG3) {
- vki_drm_i915_getparam_t *data = (vki_drm_i915_getparam_t *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GETPARAM).param", (Addr)&data->param, sizeof(data->param));
- PRE_MEM_WRITE("ioctl(DRM_I915_GETPARAM).value", (Addr)data->value, sizeof(int));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_BUSY:
- if (ARG3) {
- struct vki_drm_i915_gem_busy *data = (struct vki_drm_i915_gem_busy *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_BUSY).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_BUSY).busy", (Addr)&data->busy, sizeof(data->busy));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_CREATE:
- if (ARG3) {
- struct vki_drm_i915_gem_create *data = (struct vki_drm_i915_gem_create *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_CREATE).size", (Addr)&data->size, sizeof(data->size));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_CREATE).handle", (Addr)&data->handle, sizeof(data->handle));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_PREAD:
- if (ARG3) {
- struct vki_drm_i915_gem_pread *data = (struct vki_drm_i915_gem_pread *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).offset", (Addr)&data->offset, sizeof(data->offset));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).size", (Addr)&data->size, sizeof(data->size));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).data_ptr", (Addr)&data->data_ptr, sizeof(data->data_ptr));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_PREAD).data_ptr", (Addr)data->data_ptr, data->size);
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_PWRITE:
- if (ARG3) {
- struct vki_drm_i915_gem_pwrite *data = (struct vki_drm_i915_gem_pwrite *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).offset", (Addr)&data->offset, sizeof(data->offset));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).size", (Addr)&data->size, sizeof(data->size));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).data_ptr", (Addr)&data->data_ptr, sizeof(data->data_ptr));
- /* PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).data_ptr", (Addr)data->data_ptr, data->size);
- * NB: the buffer is allowed to contain any amount of uninitialized data (e.g.
- * interleaved vertex attributes may have a wide stride with uninitialized data between
- * consecutive vertices) */
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_MMAP_GTT:
- if (ARG3) {
- struct vki_drm_i915_gem_mmap_gtt *data = (struct vki_drm_i915_gem_mmap_gtt *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_MMAP_GTT).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_MMAP_GTT).offset", (Addr)&data->offset, sizeof(data->offset));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_SET_DOMAIN:
- if (ARG3) {
- struct vki_drm_i915_gem_set_domain *data = (struct vki_drm_i915_gem_set_domain *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).read_domains", (Addr)&data->read_domains, sizeof(data->read_domains));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).write_domain", (Addr)&data->write_domain, sizeof(data->write_domain));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_SET_TILING:
- if (ARG3) {
- struct vki_drm_i915_gem_set_tiling *data = (struct vki_drm_i915_gem_set_tiling *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).tiling_mode", (Addr)&data->tiling_mode, sizeof(data->tiling_mode));
- PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).stride", (Addr)&data->stride, sizeof(data->stride));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_SET_TILING).swizzle_mode", (Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_GET_TILING:
- if (ARG3) {
- struct vki_drm_i915_gem_get_tiling *data = (struct vki_drm_i915_gem_get_tiling *)ARG3;
- PRE_MEM_READ("ioctl(DRM_I915_GEM_GET_TILING).handle", (Addr)&data->handle, sizeof(data->handle));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_TILING).tiling_mode", (Addr)&data->tiling_mode, sizeof(data->tiling_mode));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_TILING).swizzle_mode", (Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_GET_APERTURE:
- if (ARG3) {
- struct vki_drm_i915_gem_get_aperture *data = (struct vki_drm_i915_gem_get_aperture *)ARG3;
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_APERTURE).aper_size", (Addr)&data->aper_size, sizeof(data->aper_size));
- PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_APERTURE).aper_available_size", (Addr)&data->aper_available_size, sizeof(data->aper_available_size));
- }
- break;
-
default:
PRINT("sys_fcntl[UNKNOWN] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
I_die_here;
@@ -5570,104 +5425,6 @@
unsigned int, fd, unsigned int, request);
return;
- case VKI_DRM_IOCTL_VERSION:
- if (ARG3) {
- struct vki_drm_version *data = (struct vki_drm_version *)ARG3;
- POST_MEM_WRITE((Addr)&data->version_major, sizeof(data->version_major));
- POST_MEM_WRITE((Addr)&data->version_minor, sizeof(data->version_minor));
- POST_MEM_WRITE((Addr)&data->version_patchlevel, sizeof(data->version_patchlevel));
- POST_MEM_WRITE((Addr)&data->name_len, sizeof(data->name_len));
- POST_MEM_WRITE((Addr)data->name, data->name_len);
- POST_MEM_WRITE((Addr)&data->date_len, sizeof(data->date_len));
- POST_MEM_WRITE((Addr)data->date, data->date_len);
- POST_MEM_WRITE((Addr)&data->desc_len, sizeof(data->desc_len));
- POST_MEM_WRITE((Addr)data->desc, data->desc_len);
- }
- break;
- case VKI_DRM_IOCTL_GET_UNIQUE:
- if (ARG3) {
- struct vki_drm_unique *data = (struct vki_drm_unique *)ARG3;
- POST_MEM_WRITE((Addr)data->unique, sizeof(data->unique_len));
- }
- break;
- case VKI_DRM_IOCTL_GET_MAGIC:
- if (ARG3) {
- struct vki_drm_auth *data = (struct vki_drm_auth *)ARG3;
- POST_MEM_WRITE((Addr)&data->magic, sizeof(data->magic));
- }
- break;
- case VKI_DRM_IOCTL_WAIT_VBLANK:
- if (ARG3) {
- union vki_drm_wait_vblank *data = (union vki_drm_wait_vblank *)ARG3;
- POST_MEM_WRITE((Addr)&data->reply, sizeof(data->reply));
- }
- break;
- case VKI_DRM_IOCTL_GEM_FLINK:
- if (ARG3) {
- struct vki_drm_gem_flink *data = (struct vki_drm_gem_flink *)ARG3;
- POST_MEM_WRITE((Addr)&data->name, sizeof(data->name));
- }
- break;
- case VKI_DRM_IOCTL_GEM_OPEN:
- if (ARG3) {
- struct vki_drm_gem_open *data = (struct vki_drm_gem_open *)ARG3;
- POST_MEM_WRITE((Addr)&data->handle, sizeof(data->handle));
- POST_MEM_WRITE((Addr)&data->size, sizeof(data->size));
- }
- break;
- case VKI_DRM_IOCTL_I915_GETPARAM:
- if (ARG3) {
- vki_drm_i915_getparam_t *data = (vki_drm_i915_getparam_t *)ARG3;
- POST_MEM_WRITE((Addr)data->value, sizeof(int));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_BUSY:
- if (ARG3) {
- struct vki_drm_i915_gem_busy *data = (struct vki_drm_i915_gem_busy *)ARG3;
- POST_MEM_WRITE((Addr)&data->busy, sizeof(data->busy));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_CREATE:
- if (ARG3) {
- struct vki_drm_i915_gem_create *data = (struct vki_drm_i915_gem_create *)ARG3;
- POST_MEM_WRITE((Addr)&data->handle, sizeof(data->handle));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_PREAD:
- if (ARG3) {
- struct vki_drm_i915_gem_pread *data = (struct vki_drm_i915_gem_pread *)ARG3;
- POST_MEM_WRITE((Addr)data->data_ptr, data->size);
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_MMAP_GTT:
- if (ARG3) {
- struct vki_drm_i915_gem_mmap_gtt *data = (struct vki_drm_i915_gem_mmap_gtt *)ARG3;
- POST_MEM_WRITE((Addr)&data->offset, sizeof(data->offset));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_SET_TILING:
- if (ARG3) {
- struct vki_drm_i915_gem_set_tiling *data = (struct vki_drm_i915_gem_set_tiling *)ARG3;
- POST_MEM_WRITE((Addr)&data->tiling_mode, sizeof(data->tiling_mode));
- POST_MEM_WRITE((Addr)&data->stride, sizeof(data->stride));
- POST_MEM_WRITE((Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_GET_TILING:
- if (ARG3) {
- struct vki_drm_i915_gem_get_tiling *data = (struct vki_drm_i915_gem_get_tiling *)ARG3;
- POST_MEM_WRITE((Addr)&data->tiling_mode, sizeof(data->tiling_mode));
- POST_MEM_WRITE((Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
- }
- break;
- case VKI_DRM_IOCTL_I915_GEM_GET_APERTURE:
- if (ARG3) {
- struct vki_drm_i915_gem_get_aperture *data = (struct vki_drm_i915_gem_get_aperture *)ARG3;
- POST_MEM_WRITE((Addr)&data->aper_size, sizeof(data->aper_size));
- POST_MEM_WRITE((Addr)&data->aper_available_size, sizeof(data->aper_available_size));
- }
- break;
-
default:
PRINT("sys_ioctl ( %ld, 0x%lx, 0x%lx )",ARG1,ARG2,ARG3);
PRE_REG_READ3(long, "ioctl",
@@ -7089,6 +6846,151 @@
}
break;
+ case VKI_DRM_IOCTL_VERSION:
+ if (ARG3) {
+ struct vki_drm_version *data = (struct vki_drm_version *)ARG3;
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).version_major", (Addr)&data->version_major, sizeof(data->version_major));
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).version_minor", (Addr)&data->version_minor, sizeof(data->version_minor));
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).version_patchlevel", (Addr)&data->version_patchlevel, sizeof(data->version_patchlevel));
+ PRE_MEM_READ("ioctl(DRM_VERSION).name_len", (Addr)&data->name_len, sizeof(data->name_len));
+ PRE_MEM_READ("ioctl(DRM_VERSION).name", (Addr)&data->name, sizeof(data->name));
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).name", (Addr)data->name, data->name_len);
+ PRE_MEM_READ("ioctl(DRM_VERSION).date_len", (Addr)&data->date_len, sizeof(data->date_len));
+ PRE_MEM_READ("ioctl(DRM_VERSION).date", (Addr)&data->date, sizeof(data->date));
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).date", (Addr)data->date, data->date_len);
+ PRE_MEM_READ("ioctl(DRM_VERSION).desc_len", (Addr)&data->desc_len, sizeof(data->desc_len));
+ PRE_MEM_READ("ioctl(DRM_VERSION).desc", (Addr)&data->desc, sizeof(data->desc));
+ PRE_MEM_WRITE("ioctl(DRM_VERSION).desc", (Addr)data->desc, data->desc_len);
+ }
+ break;
+ case VKI_DRM_IOCTL_GET_UNIQUE:
+ if (ARG3) {
+ struct vki_drm_unique *data = (struct vki_drm_unique *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_GET_UNIQUE).unique_len", (Addr)&data->unique_len, sizeof(data->unique_len));
+ PRE_MEM_READ("ioctl(DRM_GET_UNIQUE).unique", (Addr)&data->unique, sizeof(data->unique));
+ PRE_MEM_WRITE("ioctl(DRM_GET_UNIQUE).unique", (Addr)data->unique, data->unique_len);
+ }
+ break;
+ case VKI_DRM_IOCTL_GET_MAGIC:
+ if (ARG3) {
+ struct vki_drm_auth *data = (struct vki_drm_auth *)ARG3;
+ PRE_MEM_WRITE("ioctl(DRM_GET_MAGIC).magic", (Addr)&data->magic, sizeof(data->magic));
+ }
+ break;
+ case VKI_DRM_IOCTL_WAIT_VBLANK:
+ if (ARG3) {
+ union vki_drm_wait_vblank *data = (union vki_drm_wait_vblank *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_WAIT_VBLANK).request.type", (Addr)&data->request.type, sizeof(data->request.type));
+ PRE_MEM_READ("ioctl(DRM_WAIT_VBLANK).request.sequence", (Addr)&data->request.sequence, sizeof(data->request.sequence));
+ /* XXX: It seems request.signal isn't used */
+ PRE_MEM_WRITE("ioctl(DRM_WAIT_VBLANK).reply", (Addr)&data->reply, sizeof(data->reply));
+ }
+ break;
+ case VKI_DRM_IOCTL_GEM_CLOSE:
+ if (ARG3) {
+ struct vki_drm_gem_close *data = (struct vki_drm_gem_close *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_GEM_CLOSE).handle", (Addr)&data->handle, sizeof(data->handle));
+ }
+ break;
+ case VKI_DRM_IOCTL_GEM_FLINK:
+ if (ARG3) {
+ struct vki_drm_gem_flink *data = (struct vki_drm_gem_flink *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_GEM_FLINK).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_WRITE("ioctl(DRM_GEM_FLINK).name", (Addr)&data->name, sizeof(data->name));
+ }
+ break;
+ case VKI_DRM_IOCTL_GEM_OPEN:
+ if (ARG3) {
+ struct vki_drm_gem_open *data = (struct vki_drm_gem_open *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_GEM_OPEN).name", (Addr)&data->name, sizeof(data->name));
+ PRE_MEM_WRITE("ioctl(DRM_GEM_OPEN).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_WRITE("ioctl(DRM_GEM_OPEN).size", (Addr)&data->size, sizeof(data->size));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GETPARAM:
+ if (ARG3) {
+ vki_drm_i915_getparam_t *data = (vki_drm_i915_getparam_t *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GETPARAM).param", (Addr)&data->param, sizeof(data->param));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GETPARAM).value", (Addr)data->value, sizeof(int));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_BUSY:
+ if (ARG3) {
+ struct vki_drm_i915_gem_busy *data = (struct vki_drm_i915_gem_busy *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_BUSY).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_BUSY).busy", (Addr)&data->busy, sizeof(data->busy));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_CREATE:
+ if (ARG3) {
+ struct vki_drm_i915_gem_create *data = (struct vki_drm_i915_gem_create *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_CREATE).size", (Addr)&data->size, sizeof(data->size));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_CREATE).handle", (Addr)&data->handle, sizeof(data->handle));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_PREAD:
+ if (ARG3) {
+ struct vki_drm_i915_gem_pread *data = (struct vki_drm_i915_gem_pread *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).offset", (Addr)&data->offset, sizeof(data->offset));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).size", (Addr)&data->size, sizeof(data->size));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PREAD).data_ptr", (Addr)&data->data_ptr, sizeof(data->data_ptr));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_PREAD).data_ptr", (Addr)data->data_ptr, data->size);
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_PWRITE:
+ if (ARG3) {
+ struct vki_drm_i915_gem_pwrite *data = (struct vki_drm_i915_gem_pwrite *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).offset", (Addr)&data->offset, sizeof(data->offset));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).size", (Addr)&data->size, sizeof(data->size));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).data_ptr", (Addr)&data->data_ptr, sizeof(data->data_ptr));
+ /* PRE_MEM_READ("ioctl(DRM_I915_GEM_PWRITE).data_ptr", (Addr)data->data_ptr, data->size);
+ * NB: the buffer is allowed to contain any amount of uninitialized data (e.g.
+ * interleaved vertex attributes may have a wide stride with uninitialized data between
+ * consecutive vertices) */
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_MMAP_GTT:
+ if (ARG3) {
+ struct vki_drm_i915_gem_mmap_gtt *data = (struct vki_drm_i915_gem_mmap_gtt *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_MMAP_GTT).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_MMAP_GTT).offset", (Addr)&data->offset, sizeof(data->offset));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_SET_DOMAIN:
+ if (ARG3) {
+ struct vki_drm_i915_gem_set_domain *data = (struct vki_drm_i915_gem_set_domain *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).read_domains", (Addr)&data->read_domains, sizeof(data->read_domains));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_DOMAIN).write_domain", (Addr)&data->write_domain, sizeof(data->write_domain));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_SET_TILING:
+ if (ARG3) {
+ struct vki_drm_i915_gem_set_tiling *data = (struct vki_drm_i915_gem_set_tiling *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).tiling_mode", (Addr)&data->tiling_mode, sizeof(data->tiling_mode));
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_SET_TILING).stride", (Addr)&data->stride, sizeof(data->stride));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_SET_TILING).swizzle_mode", (Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_GET_TILING:
+ if (ARG3) {
+ struct vki_drm_i915_gem_get_tiling *data = (struct vki_drm_i915_gem_get_tiling *)ARG3;
+ PRE_MEM_READ("ioctl(DRM_I915_GEM_GET_TILING).handle", (Addr)&data->handle, sizeof(data->handle));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_TILING).tiling_mode", (Addr)&data->tiling_mode, sizeof(data->tiling_mode));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_TILING).swizzle_mode", (Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_GET_APERTURE:
+ if (ARG3) {
+ struct vki_drm_i915_gem_get_aperture *data = (struct vki_drm_i915_gem_get_aperture *)ARG3;
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_APERTURE).aper_size", (Addr)&data->aper_size, sizeof(data->aper_size));
+ PRE_MEM_WRITE("ioctl(DRM_I915_GEM_GET_APERTURE).aper_available_size", (Addr)&data->aper_available_size, sizeof(data->aper_available_size));
+ }
+ break;
+
/* KVM ioctls that check for a numeric value as parameter */
case VKI_KVM_GET_API_VERSION:
case VKI_KVM_CREATE_VM:
@@ -8304,6 +8206,104 @@
}
break;
+ case VKI_DRM_IOCTL_VERSION:
+ if (ARG3) {
+ struct vki_drm_version *data = (struct vki_drm_version *)ARG3;
+ POST_MEM_WRITE((Addr)&data->version_major, sizeof(data->version_major));
+ POST_MEM_WRITE((Addr)&data->version_minor, sizeof(data->version_minor));
+ POST_MEM_WRITE((Addr)&data->version_patchlevel, sizeof(data->version_patchlevel));
+ POST_MEM_WRITE((Addr)&data->name_len, sizeof(data->name_len));
+ POST_MEM_WRITE((Addr)data->name, data->name_len);
+ POST_MEM_WRITE((Addr)&data->date_len, sizeof(data->date_len));
+ POST_MEM_WRITE((Addr)data->date, data->date_len);
+ POST_MEM_WRITE((Addr)&data->desc_len, sizeof(data->desc_len));
+ POST_MEM_WRITE((Addr)data->desc, data->desc_len);
+ }
+ break;
+ case VKI_DRM_IOCTL_GET_UNIQUE:
+ if (ARG3) {
+ struct vki_drm_unique *data = (struct vki_drm_unique *)ARG3;
+ POST_MEM_WRITE((Addr)data->unique, sizeof(data->unique_len));
+ }
+ break;
+ case VKI_DRM_IOCTL_GET_MAGIC:
+ if (ARG3) {
+ struct vki_drm_auth *data = (struct vki_drm_auth *)ARG3;
+ POST_MEM_WRITE((Addr)&data->magic, sizeof(data->magic));
+ }
+ break;
+ case VKI_DRM_IOCTL_WAIT_VBLANK:
+ if (ARG3) {
+ union vki_drm_wait_vblank *data = (union vki_drm_wait_vblank *)ARG3;
+ POST_MEM_WRITE((Addr)&data->reply, sizeof(data->reply));
+ }
+ break;
+ case VKI_DRM_IOCTL_GEM_FLINK:
+ if (ARG3) {
+ struct vki_drm_gem_flink *data = (struct vki_drm_gem_flink *)ARG3;
+ POST_MEM_WRITE((Addr)&data->name, sizeof(data->name));
+ }
+ break;
+ case VKI_DRM_IOCTL_GEM_OPEN:
+ if (ARG3) {
+ struct vki_drm_gem_open *data = (struct vki_drm_gem_open *)ARG3;
+ POST_MEM_WRITE((Addr)&data->handle, sizeof(data->handle));
+ POST_MEM_WRITE((Addr)&data->size, sizeof(data->size));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GETPARAM:
+ if (ARG3) {
+ vki_drm_i915_getparam_t *data = (vki_drm_i915_getparam_t *)ARG3;
+ POST_MEM_WRITE((Addr)data->value, sizeof(int));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_BUSY:
+ if (ARG3) {
+ struct vki_drm_i915_gem_busy *data = (struct vki_drm_i915_gem_busy *)ARG3;
+ POST_MEM_WRITE((Addr)&data->busy, sizeof(data->busy));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_CREATE:
+ if (ARG3) {
+ struct vki_drm_i915_gem_create *data = (struct vki_drm_i915_gem_create *)ARG3;
+ POST_MEM_WRITE((Addr)&data->handle, sizeof(data->handle));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_PREAD:
+ if (ARG3) {
+ struct vki_drm_i915_gem_pread *data = (struct vki_drm_i915_gem_pread *)ARG3;
+ POST_MEM_WRITE((Addr)data->data_ptr, data->size);
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_MMAP_GTT:
+ if (ARG3) {
+ struct vki_drm_i915_gem_mmap_gtt *data = (struct vki_drm_i915_gem_mmap_gtt *)ARG3;
+ POST_MEM_WRITE((Addr)&data->offset, sizeof(data->offset));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_SET_TILING:
+ if (ARG3) {
+ struct vki_drm_i915_gem_set_tiling *data = (struct vki_drm_i915_gem_set_tiling *)ARG3;
+ POST_MEM_WRITE((Addr)&data->tiling_mode, sizeof(data->tiling_mode));
+ POST_MEM_WRITE((Addr)&data->stride, sizeof(data->stride));
+ POST_MEM_WRITE((Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_GET_TILING:
+ if (ARG3) {
+ struct vki_drm_i915_gem_get_tiling *data = (struct vki_drm_i915_gem_get_tiling *)ARG3;
+ POST_MEM_WRITE((Addr)&data->tiling_mode, sizeof(data->tiling_mode));
+ POST_MEM_WRITE((Addr)&data->swizzle_mode, sizeof(data->swizzle_mode));
+ }
+ break;
+ case VKI_DRM_IOCTL_I915_GEM_GET_APERTURE:
+ if (ARG3) {
+ struct vki_drm_i915_gem_get_aperture *data = (struct vki_drm_i915_gem_get_aperture *)ARG3;
+ POST_MEM_WRITE((Addr)&data->aper_size, sizeof(data->aper_size));
+ POST_MEM_WRITE((Addr)&data->aper_available_size, sizeof(data->aper_available_size));
+ }
+ break;
+
/* KVM ioctls that only write the system call return value */
case VKI_KVM_GET_API_VERSION:
case VKI_KVM_CREATE_VM: