diff --git a/include/vki/vki-linux-drm.h b/include/vki/vki-linux-drm.h
new file mode 100644
index 0000000..8bd0746
--- /dev/null
+++ b/include/vki/vki-linux-drm.h
@@ -0,0 +1,810 @@
+/*
+ * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ * Copyright (c) 2003-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
+ * Copyright (c) 2007 Dave Airlie <airlied@linux.ie>
+ * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com>
+ * Copyright (c) 2007-2008 Intel Corporation
+ * Copyright (c) 2008 Red Hat Inc.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __VKI_LINUX_DRM_H
+#define __VKI_LINUX_DRM_H
+
+//----------------------------------------------------------------------
+// From include/drm/drm.h
+//----------------------------------------------------------------------
+
+typedef unsigned int vki_drm_context_t;
+typedef unsigned int vki_drm_drawable_t;
+typedef unsigned int vki_drm_magic_t;
+
+struct vki_drm_clip_rect {
+	unsigned short x1;
+	unsigned short y1;
+	unsigned short x2;
+	unsigned short y2;
+};
+struct vki_drm_version {
+	int version_major;	  /**< Major version */
+	int version_minor;	  /**< Minor version */
+	int version_patchlevel;	  /**< Patch level */
+	vki_size_t name_len;	  /**< Length of name buffer */
+	char __user *name;	  /**< Name of driver */
+	vki_size_t date_len;	  /**< Length of date buffer */
+	char __user *date;	  /**< User-space buffer to hold date */
+	vki_size_t desc_len;	  /**< Length of desc buffer */
+	char __user *desc;	  /**< User-space buffer to hold desc */
+};
+struct vki_drm_unique {
+	vki_size_t unique_len;	  /**< Length of unique */
+	char __user *unique;	  /**< Unique name for driver instantiation */
+};
+struct vki_drm_block {
+	int unused;
+};
+struct vki_drm_control {
+	enum {
+		VKI_DRM_ADD_COMMAND,
+		VKI_DRM_RM_COMMAND,
+		VKI_DRM_INST_HANDLER,
+		VKI_DRM_UNINST_HANDLER
+	} func;
+	int irq;
+};
+
+enum vki_drm_map_type {
+	_VKI_DRM_FRAME_BUFFER = 0,	  /**< WC (no caching), no core dump */
+	_VKI_DRM_REGISTERS = 1,	  /**< no caching, no core dump */
+	_VKI_DRM_SHM = 2,		  /**< shared, cached */
+	_VKI_DRM_AGP = 3,		  /**< AGP/GART */
+	_VKI_DRM_SCATTER_GATHER = 4,  /**< Scatter/gather memory for PCI DMA */
+	_VKI_DRM_CONSISTENT = 5,	  /**< Consistent memory for PCI DMA */
+	_VKI_DRM_GEM = 6,		  /**< GEM object */
+};
+enum vki_drm_map_flags {
+	_VKI_DRM_RESTRICTED = 0x01,	     /**< Cannot be mapped to user-virtual */
+	_VKI_DRM_READ_ONLY = 0x02,
+	_VKI_DRM_LOCKED = 0x04,	     /**< shared, cached, locked */
+	_VKI_DRM_KERNEL = 0x08,	     /**< kernel requires access */
+	_VKI_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */
+	_VKI_DRM_CONTAINS_LOCK = 0x20,   /**< SHM page that contains lock */
+	_VKI_DRM_REMOVABLE = 0x40,	     /**< Removable mapping */
+	_VKI_DRM_DRIVER = 0x80	     /**< Managed by driver */
+};
+struct vki_drm_ctx_priv_map {
+	unsigned int ctx_id;	 /**< Context requesting private mapping */
+	void *handle;		 /**< Handle of map */
+};
+struct vki_drm_map {
+	unsigned long offset;	 /**< Requested physical address (0 for SAREA)*/
+	unsigned long size;	 /**< Requested physical size (bytes) */
+	enum vki_drm_map_type type;	 /**< Type of memory to map */
+	enum vki_drm_map_flags flags;	 /**< Flags */
+	void *handle;		 /**< User-space: "Handle" to pass to mmap() */
+				 /**< Kernel-space: kernel-virtual address */
+	int mtrr;		 /**< MTRR slot used */
+	/*   Private data */
+};
+struct vki_drm_client {
+	int idx;		/**< Which client desired? */
+	int auth;		/**< Is client authenticated? */
+	unsigned long pid;	/**< Process ID */
+	unsigned long uid;	/**< User ID */
+	unsigned long magic;	/**< Magic */
+	unsigned long iocs;	/**< Ioctl count */
+};
+enum vki_drm_stat_type {
+	_VKI_DRM_STAT_LOCK,
+	_VKI_DRM_STAT_OPENS,
+	_VKI_DRM_STAT_CLOSES,
+	_VKI_DRM_STAT_IOCTLS,
+	_VKI_DRM_STAT_LOCKS,
+	_VKI_DRM_STAT_UNLOCKS,
+	_VKI_DRM_STAT_VALUE,	/**< Generic value */
+	_VKI_DRM_STAT_BYTE,		/**< Generic byte counter (1024bytes/K) */
+	_VKI_DRM_STAT_COUNT,	/**< Generic non-byte counter (1000/k) */
+
+	_VKI_DRM_STAT_IRQ,		/**< IRQ */
+	_VKI_DRM_STAT_PRIMARY,	/**< Primary DMA bytes */
+	_VKI_DRM_STAT_SECONDARY,	/**< Secondary DMA bytes */
+	_VKI_DRM_STAT_DMA,		/**< DMA */
+	_VKI_DRM_STAT_SPECIAL,	/**< Special DMA (e.g., priority or polled) */
+	_VKI_DRM_STAT_MISSED	/**< Missed DMA opportunity */
+	    /* Add to the *END* of the list */
+};
+struct vki_drm_stats {
+	unsigned long count;
+	struct {
+		unsigned long value;
+		enum vki_drm_stat_type type;
+	} data[15];
+};
+enum vki_drm_lock_flags {
+	_VKI_DRM_LOCK_READY = 0x01,	     /**< Wait until hardware is ready for DMA */
+	_VKI_DRM_LOCK_QUIESCENT = 0x02,  /**< Wait until hardware quiescent */
+	_VKI_DRM_LOCK_FLUSH = 0x04,	     /**< Flush this context's DMA queue first */
+	_VKI_DRM_LOCK_FLUSH_ALL = 0x08,  /**< Flush all DMA queues first */
+	/* These *HALT* flags aren't supported yet
+	   -- they will be used to support the
+	   full-screen DGA-like mode. */
+	_VKI_DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */
+	_VKI_DRM_HALT_CUR_QUEUES = 0x20  /**< Halt all current queues */
+};
+struct vki_drm_lock {
+	int context;
+	enum vki_drm_lock_flags flags;
+};
+enum vki_drm_dma_flags {
+	/* Flags for DMA buffer dispatch */
+	_VKI_DRM_DMA_BLOCK = 0x01,	      /**<
+				       * Block until buffer dispatched.
+				       *
+				       * \note The buffer may not yet have
+				       * been processed by the hardware --
+				       * getting a hardware lock with the
+				       * hardware quiescent will ensure
+				       * that the buffer has been
+				       * processed.
+				       */
+	_VKI_DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */
+	_VKI_DRM_DMA_PRIORITY = 0x04,     /**< High priority dispatch */
+
+	/* Flags for DMA buffer request */
+	_VKI_DRM_DMA_WAIT = 0x10,	      /**< Wait for free buffers */
+	_VKI_DRM_DMA_SMALLER_OK = 0x20,   /**< Smaller-than-requested buffers OK */
+	_VKI_DRM_DMA_LARGER_OK = 0x40     /**< Larger-than-requested buffers OK */
+};
+struct vki_drm_buf_desc {
+	int count;		 /**< Number of buffers of this size */
+	int size;		 /**< Size in bytes */
+	int low_mark;		 /**< Low water mark */
+	int high_mark;		 /**< High water mark */
+	enum {
+		_VKI_DRM_PAGE_ALIGN = 0x01,	/**< Align on page boundaries for DMA */
+		_VKI_DRM_AGP_BUFFER = 0x02,	/**< Buffer is in AGP space */
+		_VKI_DRM_SG_BUFFER = 0x04,	/**< Scatter/gather memory buffer */
+		_VKI_DRM_FB_BUFFER = 0x08,	/**< Buffer is in frame buffer */
+		_VKI_DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */
+	} flags;
+	unsigned long agp_start; /**<
+				  * Start address of where the AGP buffers are
+				  * in the AGP aperture
+				  */
+};
+struct vki_drm_buf_info {
+	int count;		/**< Entries in list */
+	struct vki_drm_buf_desc __user *list;
+};
+struct vki_drm_buf_free {
+	int count;
+	int __user *list;
+};
+
+struct vki_drm_buf_pub {
+	int idx;		       /**< Index into the master buffer list */
+	int total;		       /**< Buffer size */
+	int used;		       /**< Amount of buffer in use (for DMA) */
+	void __user *address;	       /**< Address of buffer */
+};
+struct vki_drm_buf_map {
+	int count;		/**< Length of the buffer list */
+	void __user *virtual;		/**< Mmap'd area in user-virtual */
+	struct vki_drm_buf_pub __user *list;	/**< Buffer information */
+};
+struct vki_drm_dma {
+	int context;			  /**< Context handle */
+	int send_count;			  /**< Number of buffers to send */
+	int __user *send_indices;	  /**< List of handles to buffers */
+	int __user *send_sizes;		  /**< Lengths of data to send */
+	enum vki_drm_dma_flags flags;	  /**< Flags */
+	int request_count;		  /**< Number of buffers requested */
+	int request_size;		  /**< Desired size for buffers */
+	int __user *request_indices;	  /**< Buffer information */
+	int __user *request_sizes;
+	int granted_count;		  /**< Number of buffers granted */
+};
+
+enum vki_drm_ctx_flags {
+	_VKI_DRM_CONTEXT_PRESERVED = 0x01,
+	_VKI_DRM_CONTEXT_2DONLY = 0x02
+};
+struct vki_drm_ctx {
+	vki_drm_context_t handle;
+	enum vki_drm_ctx_flags flags;
+};
+struct vki_drm_ctx_res {
+	int count;
+	struct vki_drm_ctx __user *contexts;
+};
+struct vki_drm_draw {
+	vki_drm_drawable_t handle;
+};
+typedef enum {
+	VKI_DRM_DRAWABLE_CLIPRECTS,
+} vki_drm_drawable_info_type_t;
+struct vki_drm_update_draw {
+	vki_drm_drawable_t handle;
+	unsigned int type;
+	unsigned int num;
+	unsigned long long data;
+};
+struct vki_drm_auth {
+	vki_drm_magic_t magic;
+};
+struct vki_drm_irq_busid {
+	int irq;	/**< IRQ number */
+	int busnum;	/**< bus number */
+	int devnum;	/**< device number */
+	int funcnum;	/**< function number */
+};
+enum vki_drm_vblank_seq_type {
+	_VKI_DRM_VBLANK_ABSOLUTE = 0x0,	/**< Wait for specific vblank sequence number */
+	_VKI_DRM_VBLANK_RELATIVE = 0x1,	/**< Wait for given number of vblanks */
+	_VKI_DRM_VBLANK_HIGH_CRTC_MASK = 0x0000003e,
+	_VKI_DRM_VBLANK_EVENT = 0x4000000,   /**< Send event instead of blocking */
+	_VKI_DRM_VBLANK_FLIP = 0x8000000,   /**< Scheduled buffer swap should flip */
+	_VKI_DRM_VBLANK_NEXTONMISS = 0x10000000,	/**< If missed, wait for next vblank */
+	_VKI_DRM_VBLANK_SECONDARY = 0x20000000,	/**< Secondary display controller */
+	_VKI_DRM_VBLANK_SIGNAL = 0x40000000	/**< Send signal instead of blocking, unsupported */
+};
+struct vki_drm_wait_vblank_request {
+	enum vki_drm_vblank_seq_type type;
+	unsigned int sequence;
+	unsigned long signal;
+};
+struct vki_drm_wait_vblank_reply {
+	enum vki_drm_vblank_seq_type type;
+	unsigned int sequence;
+	long tval_sec;
+	long tval_usec;
+};
+union vki_drm_wait_vblank {
+	struct vki_drm_wait_vblank_request request;
+	struct vki_drm_wait_vblank_reply reply;
+};
+struct vki_drm_modeset_ctl {
+	__vki_u32 crtc;
+	__vki_u32 cmd;
+};
+struct vki_drm_agp_mode {
+	unsigned long mode;	/**< AGP mode */
+};
+struct vki_drm_agp_buffer {
+	unsigned long size;	/**< In bytes -- will round to page boundary */
+	unsigned long handle;	/**< Used for binding / unbinding */
+	unsigned long type;	/**< Type of memory to allocate */
+	unsigned long physical;	/**< Physical used by i810 */
+};
+struct vki_drm_agp_binding {
+	unsigned long handle;	/**< From drm_agp_buffer */
+	unsigned long offset;	/**< In bytes -- will round to page boundary */
+};
+struct vki_drm_agp_info {
+	int agp_version_major;
+	int agp_version_minor;
+	unsigned long mode;
+	unsigned long aperture_base;	/* physical address */
+	unsigned long aperture_size;	/* bytes */
+	unsigned long memory_allowed;	/* bytes */
+	unsigned long memory_used;
+	unsigned short id_vendor;
+	unsigned short id_device;
+};
+struct vki_drm_scatter_gather {
+	unsigned long size;	/**< In bytes -- will round to page boundary */
+	unsigned long handle;	/**< Used for mapping / unmapping */
+};
+
+struct vki_drm_set_version {
+	int drm_di_major;
+	int drm_di_minor;
+	int drm_dd_major;
+	int drm_dd_minor;
+};
+struct vki_drm_gem_close {
+	__vki_u32 handle;
+	__vki_u32 pad;
+};
+struct vki_drm_gem_flink {
+	__vki_u32 handle;
+	__vki_u32 name;
+};
+struct vki_drm_gem_open {
+	__vki_u32 name;
+	__vki_u32 handle;
+	__vki_u64 size;
+};
+
+//----------------------------------------------------------------------
+// From include/drm/drm_mode.h
+//----------------------------------------------------------------------
+
+#define VKI_DRM_DISPLAY_MODE_LEN 32
+#define VKI_DRM_PROP_NAME_LEN 32
+struct vki_drm_mode_modeinfo {
+	__vki_u32 clock;
+	__vki_u16 hdisplay, hsync_start, hsync_end, htotal, hskew;
+	__vki_u16 vdisplay, vsync_start, vsync_end, vtotal, vscan;
+
+	__vki_u32 vrefresh; /* vertical refresh * 1000 */
+
+	__vki_u32 flags;
+	__vki_u32 type;
+	char name[VKI_DRM_DISPLAY_MODE_LEN];
+};
+struct vki_drm_mode_card_res {
+	__vki_u64 fb_id_ptr;
+	__vki_u64 crtc_id_ptr;
+	__vki_u64 connector_id_ptr;
+	__vki_u64 encoder_id_ptr;
+	__vki_u32 count_fbs;
+	__vki_u32 count_crtcs;
+	__vki_u32 count_connectors;
+	__vki_u32 count_encoders;
+	__vki_u32 min_width, max_width;
+	__vki_u32 min_height, max_height;
+};
+struct vki_drm_mode_crtc {
+	__vki_u64 set_connectors_ptr;
+	__vki_u32 count_connectors;
+
+	__vki_u32 crtc_id; /**< Id */
+	__vki_u32 fb_id; /**< Id of framebuffer */
+
+	__vki_u32 x, y; /**< Position on the frameuffer */
+
+	__vki_u32 gamma_size;
+	__vki_u32 mode_valid;
+	struct vki_drm_mode_modeinfo mode;
+};
+struct vki_drm_mode_get_encoder {
+	__vki_u32 encoder_id;
+	__vki_u32 encoder_type;
+
+	__vki_u32 crtc_id; /**< Id of crtc */
+
+	__vki_u32 possible_crtcs;
+	__vki_u32 possible_clones;
+};
+struct vki_drm_mode_get_property {
+	__vki_u64 values_ptr; /* values and blob lengths */
+	__vki_u64 enum_blob_ptr; /* enum and blob id ptrs */
+
+	__vki_u32 prop_id;
+	__vki_u32 flags;
+	char name[VKI_DRM_PROP_NAME_LEN];
+
+	__vki_u32 count_values;
+	__vki_u32 count_enum_blobs;
+};
+struct vki_drm_mode_connector_set_property {
+	__vki_u64 value;
+	__vki_u32 prop_id;
+	__vki_u32 connector_id;
+};
+struct vki_drm_mode_get_blob {
+	__vki_u32 blob_id;
+	__vki_u32 length;
+	__vki_u64 data;
+};
+struct vki_drm_mode_fb_cmd {
+	__vki_u32 fb_id;
+	__vki_u32 width, height;
+	__vki_u32 pitch;
+	__vki_u32 bpp;
+	__vki_u32 depth;
+	/* driver specific handle */
+	__vki_u32 handle;
+};
+struct vki_drm_mode_mode_cmd {
+	__vki_u32 connector_id;
+	struct vki_drm_mode_modeinfo mode;
+};
+struct vki_drm_mode_cursor {
+	__vki_u32 flags;
+	__vki_u32 crtc_id;
+	__vki_s32 x;
+	__vki_s32 y;
+	__vki_u32 width;
+	__vki_u32 height;
+	/* driver specific handle */
+	__vki_u32 handle;
+};
+struct vki_drm_mode_crtc_lut {
+	__vki_u32 crtc_id;
+	__vki_u32 gamma_size;
+
+	/* pointers to arrays */
+	__vki_u64 red;
+	__vki_u64 green;
+	__vki_u64 blue;
+};
+
+//----------------------------------------------------------------------
+// From include/drm/drm.h
+//----------------------------------------------------------------------
+
+#define VKI_DRM_IOCTL_BASE		'd'
+
+#define VKI_DRM_IO(nr)			_VKI_IO(VKI_DRM_IOCTL_BASE,nr)
+#define VKI_DRM_IOR(nr,type)		_VKI_IOR(VKI_DRM_IOCTL_BASE,nr,type)
+#define VKI_DRM_IOW(nr,type)		_VKI_IOW(VKI_DRM_IOCTL_BASE,nr,type)
+#define VKI_DRM_IOWR(nr,type)		_VKI_IOWR(VKI_DRM_IOCTL_BASE,nr,type)
+
+
+#define VKI_DRM_IOCTL_VERSION		VKI_DRM_IOWR(0x00, struct vki_drm_version)
+#define VKI_DRM_IOCTL_GET_UNIQUE	VKI_DRM_IOWR(0x01, struct vki_drm_unique)
+#define VKI_DRM_IOCTL_GET_MAGIC		VKI_DRM_IOR( 0x02, struct vki_drm_auth)
+#define VKI_DRM_IOCTL_IRQ_BUSID		VKI_DRM_IOWR(0x03, struct vki_drm_irq_busid)
+#define VKI_DRM_IOCTL_GET_MAP           VKI_DRM_IOWR(0x04, struct vki_drm_map)
+#define VKI_DRM_IOCTL_GET_CLIENT        VKI_DRM_IOWR(0x05, struct vki_drm_client)
+#define VKI_DRM_IOCTL_GET_STATS         VKI_DRM_IOR( 0x06, struct vki_drm_stats)
+#define VKI_DRM_IOCTL_SET_VERSION	VKI_DRM_IOWR(0x07, struct vki_drm_set_version)
+#define VKI_DRM_IOCTL_MODESET_CTL       VKI_DRM_IOW(0x08, struct vki_drm_modeset_ctl)
+#define VKI_DRM_IOCTL_GEM_CLOSE		VKI_DRM_IOW (0x09, struct vki_drm_gem_close)
+#define VKI_DRM_IOCTL_GEM_FLINK		VKI_DRM_IOWR(0x0a, struct vki_drm_gem_flink)
+#define VKI_DRM_IOCTL_GEM_OPEN		VKI_DRM_IOWR(0x0b, struct vki_drm_gem_open)
+
+#define VKI_DRM_IOCTL_SET_UNIQUE	VKI_DRM_IOW( 0x10, struct vki_drm_unique)
+#define VKI_DRM_IOCTL_AUTH_MAGIC	VKI_DRM_IOW( 0x11, struct vki_drm_auth)
+#define VKI_DRM_IOCTL_BLOCK		VKI_DRM_IOWR(0x12, struct vki_drm_block)
+#define VKI_DRM_IOCTL_UNBLOCK		VKI_DRM_IOWR(0x13, struct vki_drm_block)
+#define VKI_DRM_IOCTL_CONTROL		VKI_DRM_IOW( 0x14, struct vki_drm_control)
+#define VKI_DRM_IOCTL_ADD_MAP		VKI_DRM_IOWR(0x15, struct vki_drm_map)
+#define VKI_DRM_IOCTL_ADD_BUFS		VKI_DRM_IOWR(0x16, struct vki_drm_buf_desc)
+#define VKI_DRM_IOCTL_MARK_BUFS		VKI_DRM_IOW( 0x17, struct vki_drm_buf_desc)
+#define VKI_DRM_IOCTL_INFO_BUFS		VKI_DRM_IOWR(0x18, struct vki_drm_buf_info)
+#define VKI_DRM_IOCTL_MAP_BUFS		VKI_DRM_IOWR(0x19, struct vki_drm_buf_map)
+#define VKI_DRM_IOCTL_FREE_BUFS		VKI_DRM_IOW( 0x1a, struct vki_drm_buf_free)
+
+#define VKI_DRM_IOCTL_RM_MAP		VKI_DRM_IOW( 0x1b, struct vki_drm_map)
+
+#define VKI_DRM_IOCTL_SET_SAREA_CTX	VKI_DRM_IOW( 0x1c, struct vki_drm_ctx_priv_map)
+#define VKI_DRM_IOCTL_GET_SAREA_CTX 	VKI_DRM_IOWR(0x1d, struct vki_drm_ctx_priv_map)
+
+#define VKI_DRM_IOCTL_SET_MASTER        VKI_DRM_IO(0x1e)
+#define VKI_DRM_IOCTL_DROP_MASTER       VKI_DRM_IO(0x1f)
+
+#define VKI_DRM_IOCTL_ADD_CTX		VKI_DRM_IOWR(0x20, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_RM_CTX		VKI_DRM_IOWR(0x21, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_MOD_CTX		VKI_DRM_IOW( 0x22, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_GET_CTX		VKI_DRM_IOWR(0x23, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_SWITCH_CTX	VKI_DRM_IOW( 0x24, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_NEW_CTX		VKI_DRM_IOW( 0x25, struct vki_drm_ctx)
+#define VKI_DRM_IOCTL_RES_CTX		VKI_DRM_IOWR(0x26, struct vki_drm_ctx_res)
+#define VKI_DRM_IOCTL_ADD_DRAW		VKI_DRM_IOWR(0x27, struct vki_drm_draw)
+#define VKI_DRM_IOCTL_RM_DRAW		VKI_DRM_IOWR(0x28, struct vki_drm_draw)
+#define VKI_DRM_IOCTL_DMA		VKI_DRM_IOWR(0x29, struct vki_drm_dma)
+#define VKI_DRM_IOCTL_LOCK		VKI_DRM_IOW( 0x2a, struct vki_drm_lock)
+#define VKI_DRM_IOCTL_UNLOCK		VKI_DRM_IOW( 0x2b, struct vki_drm_lock)
+#define VKI_DRM_IOCTL_FINISH		VKI_DRM_IOW( 0x2c, struct vki_drm_lock)
+
+#define VKI_DRM_IOCTL_AGP_ACQUIRE	VKI_DRM_IO(  0x30)
+#define VKI_DRM_IOCTL_AGP_RELEASE	VKI_DRM_IO(  0x31)
+#define VKI_DRM_IOCTL_AGP_ENABLE	VKI_DRM_IOW( 0x32, struct vki_drm_agp_mode)
+#define VKI_DRM_IOCTL_AGP_INFO		VKI_DRM_IOR( 0x33, struct vki_drm_agp_info)
+#define VKI_DRM_IOCTL_AGP_ALLOC		VKI_DRM_IOWR(0x34, struct vki_drm_agp_buffer)
+#define VKI_DRM_IOCTL_AGP_FREE		VKI_DRM_IOW( 0x35, struct vki_drm_agp_buffer)
+#define VKI_DRM_IOCTL_AGP_BIND		VKI_DRM_IOW( 0x36, struct vki_drm_agp_binding)
+#define VKI_DRM_IOCTL_AGP_UNBIND	VKI_DRM_IOW( 0x37, struct vki_drm_agp_binding)
+
+#define VKI_DRM_IOCTL_SG_ALLOC		VKI_DRM_IOWR(0x38, struct vki_drm_scatter_gather)
+#define VKI_DRM_IOCTL_SG_FREE		VKI_DRM_IOW( 0x39, struct vki_drm_scatter_gather)
+
+#define VKI_DRM_IOCTL_WAIT_VBLANK	VKI_DRM_IOWR(0x3a, union vki_drm_wait_vblank)
+
+#define VKI_DRM_IOCTL_UPDATE_DRAW	VKI_DRM_IOW(0x3f, struct vki_drm_update_draw)
+
+#define VKI_DRM_IOCTL_MODE_GETRESOURCES	VKI_DRM_IOWR(0xA0, struct vki_drm_mode_card_res)
+#define VKI_DRM_IOCTL_MODE_GETCRTC	VKI_DRM_IOWR(0xA1, struct vki_drm_mode_crtc)
+#define VKI_DRM_IOCTL_MODE_SETCRTC	VKI_DRM_IOWR(0xA2, struct vki_drm_mode_crtc)
+#define VKI_DRM_IOCTL_MODE_CURSOR	VKI_DRM_IOWR(0xA3, struct vki_drm_mode_cursor)
+#define VKI_DRM_IOCTL_MODE_GETGAMMA	VKI_DRM_IOWR(0xA4, struct vki_drm_mode_crtc_lut)
+#define VKI_DRM_IOCTL_MODE_SETGAMMA	VKI_DRM_IOWR(0xA5, struct vki_drm_mode_crtc_lut)
+#define VKI_DRM_IOCTL_MODE_GETENCODER	VKI_DRM_IOWR(0xA6, struct vki_drm_mode_get_encoder)
+#define VKI_DRM_IOCTL_MODE_GETCONNECTOR	VKI_DRM_IOWR(0xA7, struct vki_drm_mode_get_connector)
+#define VKI_DRM_IOCTL_MODE_ATTACHMODE	VKI_DRM_IOWR(0xA8, struct vki_drm_mode_mode_cmd)
+#define VKI_DRM_IOCTL_MODE_DETACHMODE	VKI_DRM_IOWR(0xA9, struct vki_drm_mode_mode_cmd)
+
+#define VKI_DRM_IOCTL_MODE_GETPROPERTY	VKI_DRM_IOWR(0xAA, struct vki_drm_mode_get_property)
+#define VKI_DRM_IOCTL_MODE_SETPROPERTY	VKI_DRM_IOWR(0xAB, struct vki_drm_mode_connector_set_property)
+#define VKI_DRM_IOCTL_MODE_GETPROPBLOB	VKI_DRM_IOWR(0xAC, struct vki_drm_mode_get_blob)
+#define VKI_DRM_IOCTL_MODE_GETFB	VKI_DRM_IOWR(0xAD, struct vki_drm_mode_fb_cmd)
+#define VKI_DRM_IOCTL_MODE_ADDFB	VKI_DRM_IOWR(0xAE, struct vki_drm_mode_fb_cmd)
+#define VKI_DRM_IOCTL_MODE_RMFB		VKI_DRM_IOWR(0xAF, unsigned int)
+
+#define VKI_DRM_COMMAND_BASE            0x40
+#define VKI_DRM_COMMAND_END		0xA0
+
+//----------------------------------------------------------------------
+// From include/drm/i915_drm.h
+//----------------------------------------------------------------------
+
+typedef struct _vki_drm_i915_init {
+	enum {
+		VKI_I915_INIT_DMA = 0x01,
+		VKI_I915_CLEANUP_DMA = 0x02,
+		VKI_I915_RESUME_DMA = 0x03
+	} func;
+	unsigned int mmio_offset;
+	int sarea_priv_offset;
+	unsigned int ring_start;
+	unsigned int ring_end;
+	unsigned int ring_size;
+	unsigned int front_offset;
+	unsigned int back_offset;
+	unsigned int depth_offset;
+	unsigned int w;
+	unsigned int h;
+	unsigned int pitch;
+	unsigned int pitch_bits;
+	unsigned int back_pitch;
+	unsigned int depth_pitch;
+	unsigned int cpp;
+	unsigned int chipset;
+} vki_drm_i915_init_t;
+
+#define VKI_DRM_I915_INIT		    0x00
+#define VKI_DRM_I915_FLUSH		    0x01
+#define VKI_DRM_I915_FLIP		    0x02
+#define VKI_DRM_I915_BATCHBUFFER	    0x03
+#define VKI_DRM_I915_IRQ_EMIT		    0x04
+#define VKI_DRM_I915_IRQ_WAIT		    0x05
+#define VKI_DRM_I915_GETPARAM		    0x06
+#define VKI_DRM_I915_SETPARAM		    0x07
+#define VKI_DRM_I915_ALLOC		    0x08
+#define VKI_DRM_I915_FREE		    0x09
+#define VKI_DRM_I915_INIT_HEAP		    0x0a
+#define VKI_DRM_I915_CMDBUFFER		    0x0b
+#define VKI_DRM_I915_DESTROY_HEAP	    0x0c
+#define VKI_DRM_I915_SET_VBLANK_PIPE	    0x0d
+#define VKI_DRM_I915_GET_VBLANK_PIPE	    0x0e
+#define VKI_DRM_I915_VBLANK_SWAP	    0x0f
+#define VKI_DRM_I915_HWS_ADDR		    0x11
+#define VKI_DRM_I915_GEM_INIT		    0x13
+#define VKI_DRM_I915_GEM_EXECBUFFER	    0x14
+#define VKI_DRM_I915_GEM_PIN		    0x15
+#define VKI_DRM_I915_GEM_UNPIN		    0x16
+#define VKI_DRM_I915_GEM_BUSY		    0x17
+#define VKI_DRM_I915_GEM_THROTTLE	    0x18
+#define VKI_DRM_I915_GEM_ENTERVT	    0x19
+#define VKI_DRM_I915_GEM_LEAVEVT	    0x1a
+#define VKI_DRM_I915_GEM_CREATE		    0x1b
+#define VKI_DRM_I915_GEM_PREAD		    0x1c
+#define VKI_DRM_I915_GEM_PWRITE		    0x1d
+#define VKI_DRM_I915_GEM_MMAP		    0x1e
+#define VKI_DRM_I915_GEM_SET_DOMAIN	    0x1f
+#define VKI_DRM_I915_GEM_SW_FINISH	    0x20
+#define VKI_DRM_I915_GEM_SET_TILING	    0x21
+#define VKI_DRM_I915_GEM_GET_TILING	    0x22
+#define VKI_DRM_I915_GEM_GET_APERTURE	    0x23
+#define VKI_DRM_I915_GEM_MMAP_GTT	    0x24
+#define VKI_DRM_I915_GET_PIPE_FROM_CRTC_ID  0x25
+#define VKI_DRM_I915_GEM_MADVISE	    0x26
+#define VKI_DRM_I915_OVERLAY_PUT_IMAGE	    0x27
+#define VKI_DRM_I915_OVERLAY_ATTRS	    0x28
+#define VKI_DRM_I915_GEM_EXECBUFFER2	    0x29
+
+#define VKI_DRM_IOCTL_I915_INIT			    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_INIT, vki_drm_i915_init_t)
+#define VKI_DRM_IOCTL_I915_FLUSH		    VKI_DRM_IO ( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_FLUSH)
+#define VKI_DRM_IOCTL_I915_FLIP			    VKI_DRM_IO ( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_FLIP)
+#define VKI_DRM_IOCTL_I915_BATCHBUFFER		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_BATCHBUFFER, vki_drm_i915_batchbuffer_t)
+#define VKI_DRM_IOCTL_I915_IRQ_EMIT		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_IRQ_EMIT, vki_drm_i915_irq_emit_t)
+#define VKI_DRM_IOCTL_I915_IRQ_WAIT		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_IRQ_WAIT, vki_drm_i915_irq_wait_t)
+#define VKI_DRM_IOCTL_I915_GETPARAM		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GETPARAM, vki_drm_i915_getparam_t)
+#define VKI_DRM_IOCTL_I915_SETPARAM		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_SETPARAM, vki_drm_i915_setparam_t)
+#define VKI_DRM_IOCTL_I915_ALLOC		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_ALLOC, vki_drm_i915_mem_alloc_t)
+#define VKI_DRM_IOCTL_I915_FREE			    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_FREE, vki_drm_i915_mem_free_t)
+#define VKI_DRM_IOCTL_I915_INIT_HEAP		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_INIT_HEAP, vki_drm_i915_mem_init_heap_t)
+#define VKI_DRM_IOCTL_I915_CMDBUFFER		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_CMDBUFFER, vki_drm_i915_cmdbuffer_t)
+#define VKI_DRM_IOCTL_I915_DESTROY_HEAP		    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_DESTROY_HEAP, vki_drm_i915_mem_destroy_heap_t)
+#define VKI_DRM_IOCTL_I915_SET_VBLANK_PIPE	    VKI_DRM_IOW( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_SET_VBLANK_PIPE, vki_drm_i915_vblank_pipe_t)
+#define VKI_DRM_IOCTL_I915_GET_VBLANK_PIPE	    VKI_DRM_IOR( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GET_VBLANK_PIPE, vki_drm_i915_vblank_pipe_t)
+#define VKI_DRM_IOCTL_I915_VBLANK_SWAP		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_VBLANK_SWAP, vki_drm_i915_vblank_swap_t)
+#define VKI_DRM_IOCTL_I915_GEM_INIT		    VKI_DRM_IOW(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_INIT, struct vki_drm_i915_gem_init)
+#define VKI_DRM_IOCTL_I915_GEM_EXECBUFFER	    VKI_DRM_IOW(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_EXECBUFFER, struct vki_drm_i915_gem_execbuffer)
+#define VKI_DRM_IOCTL_I915_GEM_PIN		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_PIN, struct vki_drm_i915_gem_pin)
+#define VKI_DRM_IOCTL_I915_GEM_UNPIN		    VKI_DRM_IOW(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_UNPIN, struct vki_drm_i915_gem_unpin)
+#define VKI_DRM_IOCTL_I915_GEM_BUSY		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_BUSY, struct vki_drm_i915_gem_busy)
+#define VKI_DRM_IOCTL_I915_GEM_THROTTLE		    VKI_DRM_IO ( VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_THROTTLE)
+#define VKI_DRM_IOCTL_I915_GEM_ENTERVT		    VKI_DRM_IO(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_ENTERVT)
+#define VKI_DRM_IOCTL_I915_GEM_LEAVEVT		    VKI_DRM_IO(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_LEAVEVT)
+#define VKI_DRM_IOCTL_I915_GEM_CREATE		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_CREATE, struct vki_drm_i915_gem_create)
+#define VKI_DRM_IOCTL_I915_GEM_PREAD		    VKI_DRM_IOW (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_PREAD, struct vki_drm_i915_gem_pread)
+#define VKI_DRM_IOCTL_I915_GEM_PWRITE		    VKI_DRM_IOW (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_PWRITE, struct vki_drm_i915_gem_pwrite)
+#define VKI_DRM_IOCTL_I915_GEM_MMAP		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_MMAP, struct vki_drm_i915_gem_mmap)
+#define VKI_DRM_IOCTL_I915_GEM_MMAP_GTT		    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_MMAP_GTT, struct vki_drm_i915_gem_mmap_gtt)
+#define VKI_DRM_IOCTL_I915_GEM_SET_DOMAIN	    VKI_DRM_IOW (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_SET_DOMAIN, struct vki_drm_i915_gem_set_domain)
+#define VKI_DRM_IOCTL_I915_GEM_SW_FINISH	    VKI_DRM_IOW (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_SW_FINISH, struct vki_drm_i915_gem_sw_finish)
+#define VKI_DRM_IOCTL_I915_GEM_SET_TILING	    VKI_DRM_IOWR (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_SET_TILING, struct vki_drm_i915_gem_set_tiling)
+#define VKI_DRM_IOCTL_I915_GEM_GET_TILING	    VKI_DRM_IOWR (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_GET_TILING, struct vki_drm_i915_gem_get_tiling)
+#define VKI_DRM_IOCTL_I915_GEM_GET_APERTURE	    VKI_DRM_IOR  (VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GEM_GET_APERTURE, struct vki_drm_i915_gem_get_aperture)
+#define VKI_DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID    VKI_DRM_IOWR(VKI_DRM_COMMAND_BASE + VKI_DRM_I915_GET_PIPE_FROM_CRTC_ID, struct vki_drm_intel_get_pipe_from_crtc_id)
+
+typedef struct vki_drm_i915_batchbuffer {
+	int start;		/* agp offset */
+	int used;		/* nr bytes in use */
+	int DR1;		/* hw flags for GFX_OP_DRAWRECT_INFO */
+	int DR4;		/* window origin for GFX_OP_DRAWRECT_INFO */
+	int num_cliprects;	/* mulitpass with multiple cliprects? */
+	struct vki_drm_clip_rect __user *cliprects;	/* pointer to userspace cliprects */
+} vki_drm_i915_batchbuffer_t;
+typedef struct _vki_drm_i915_cmdbuffer {
+	char __user *buf;	/* pointer to userspace command buffer */
+	int sz;			/* nr bytes in buf */
+	int DR1;		/* hw flags for GFX_OP_DRAWRECT_INFO */
+	int DR4;		/* window origin for GFX_OP_DRAWRECT_INFO */
+	int num_cliprects;	/* mulitpass with multiple cliprects? */
+	struct vki_drm_clip_rect __user *cliprects;	/* pointer to userspace cliprects */
+} vki_drm_i915_cmdbuffer_t;
+typedef struct vki_drm_i915_irq_emit {
+	int __user *irq_seq;
+} vki_drm_i915_irq_emit_t;
+typedef struct vki_drm_i915_irq_wait {
+	int irq_seq;
+} vki_drm_i915_irq_wait_t;
+typedef struct vki_drm_i915_getparam {
+	int param;
+	int __user *value;
+} vki_drm_i915_getparam_t;
+typedef struct vki_drm_i915_setparam {
+	int param;
+	int value;
+} vki_drm_i915_setparam_t;
+typedef struct vki_drm_i915_mem_alloc {
+	int region;
+	int alignment;
+	int size;
+	int __user *region_offset;	/* offset from start of fb or agp */
+} vki_drm_i915_mem_alloc_t;
+typedef struct vki_drm_i915_mem_free {
+	int region;
+	int region_offset;
+} vki_drm_i915_mem_free_t;
+typedef struct vki_drm_i915_mem_init_heap {
+	int region;
+	int size;
+	int start;
+} vki_drm_i915_mem_init_heap_t;
+typedef struct vki_drm_i915_mem_destroy_heap {
+	int region;
+} vki_drm_i915_mem_destroy_heap_t;
+typedef struct vki_drm_i915_vblank_pipe {
+	int pipe;
+} vki_drm_i915_vblank_pipe_t;
+typedef struct vki_drm_i915_vblank_swap {
+	vki_drm_drawable_t drawable;
+	enum vki_drm_vblank_seq_type seqtype;
+	unsigned int sequence;
+} vki_drm_i915_vblank_swap_t;
+typedef struct vki_drm_i915_hws_addr {
+	__vki_u64 addr;
+} vki_drm_i915_hws_addr_t;
+struct vki_drm_i915_gem_init {
+	__vki_u64 gtt_start;
+	__vki_u64 gtt_end;
+};
+struct vki_drm_i915_gem_create {
+	__vki_u64 size;
+	__vki_u32 handle;
+	__vki_u32 pad;
+};
+struct vki_drm_i915_gem_pread {
+	__vki_u32 handle;
+	__vki_u32 pad;
+	__vki_u64 offset;
+	__vki_u64 size;
+	__vki_u64 data_ptr;
+};
+struct vki_drm_i915_gem_pwrite {
+	__vki_u32 handle;
+	__vki_u32 pad;
+	__vki_u64 offset;
+	__vki_u64 size;
+	__vki_u64 data_ptr;
+};
+struct vki_drm_i915_gem_mmap {
+	__vki_u32 handle;
+	__vki_u32 pad;
+	__vki_u64 offset;
+	__vki_u64 size;
+	__vki_u64 addr_ptr;
+};
+struct vki_drm_i915_gem_mmap_gtt {
+	__vki_u32 handle;
+	__vki_u32 pad;
+	__vki_u64 offset;
+};
+struct vki_drm_i915_gem_set_domain {
+	__vki_u32 handle;
+	__vki_u32 read_domains;
+	__vki_u32 write_domain;
+};
+struct vki_drm_i915_gem_sw_finish {
+	__vki_u32 handle;
+};
+struct vki_drm_i915_gem_relocation_entry {
+	__vki_u32 target_handle;
+	__vki_u32 delta;
+	__vki_u64 offset;
+	__vki_u64 presumed_offset;
+	__vki_u32 read_domains;
+	__vki_u32 write_domain;
+};
+struct vki_drm_i915_gem_exec_object {
+	__vki_u32 handle;
+	__vki_u32 relocation_count;
+	__vki_u64 relocs_ptr;
+	__vki_u64 alignment;
+	__vki_u64 offset;
+};
+struct vki_drm_i915_gem_execbuffer {
+	__vki_u64 buffers_ptr;
+	__vki_u32 buffer_count;
+	__vki_u32 batch_start_offset;
+	__vki_u32 batch_len;
+	__vki_u32 DR1;
+	__vki_u32 DR4;
+	__vki_u32 num_cliprects;
+	__vki_u64 cliprects_ptr;
+};
+struct vki_drm_i915_gem_pin {
+	__vki_u32 handle;
+	__vki_u32 pad;
+	__vki_u64 alignment;
+	__vki_u64 offset;
+};
+struct vki_drm_i915_gem_unpin {
+	__vki_u32 handle;
+	__vki_u32 pad;
+};
+struct vki_drm_i915_gem_busy {
+	__vki_u32 handle;
+	__vki_u32 busy;
+};
+struct vki_drm_i915_gem_set_tiling {
+	__vki_u32 handle;
+	__vki_u32 tiling_mode;
+	__vki_u32 stride;
+	__vki_u32 swizzle_mode;
+};
+struct vki_drm_i915_gem_get_tiling {
+	__vki_u32 handle;
+	__vki_u32 tiling_mode;
+	__vki_u32 swizzle_mode;
+};
+struct vki_drm_i915_gem_get_aperture {
+	__vki_u64 aper_size;
+	__vki_u64 aper_available_size;
+};
+struct vki_drm_i915_get_pipe_from_crtc_id {
+	__vki_u32 crtc_id;
+	__vki_u32 pipe;
+};
+
+#endif //__VKI_LINUX_DRM_H
+
+/*--------------------------------------------------------------------*/
+/*--- end                                                          ---*/
+/*--------------------------------------------------------------------*/
