summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-drivers/xf86-video-intel/files')
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.21.15-handle-updates-to-DamageUnregister-API.patch24
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.905-fix-randr.patch56
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.906-server-crash.patch37
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.907-invalidation.patch46
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.911-sna-pixmap-migration.patch102
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.912-disable-dri3.patch22
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-libdrm-kernel-4_0-crash.patch65
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-sna-udev-fstat.patch57
-rw-r--r--x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-uxa-udev-fstat.patch27
9 files changed, 436 insertions, 0 deletions
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.21.15-handle-updates-to-DamageUnregister-API.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.21.15-handle-updates-to-DamageUnregister-API.patch
new file mode 100644
index 000000000000..1dc79baea57b
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.21.15-handle-updates-to-DamageUnregister-API.patch
@@ -0,0 +1,24 @@
+From 524a45da56e2a052ffafa3887891caa90ba39f76 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sat, 05 Oct 2013 17:42:24 +0000
+Subject: compat-api: Map changes of DamageUnregister API in 1.14.99.2
+
+Reported-by: Emmanuel Benisty <benisty.e@gmail.com>
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 8eb46ef..244a486 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -162,4 +162,8 @@ static inline void FreePixmap(PixmapPtr pixmap)
+ if ((d)->pScreen->SourceValidate) (d)->pScreen->SourceValidate(d, x, y, w, h)
+ #endif
+
++#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,14,99,2,0)
++#define DamageUnregister(d, dd) DamageUnregister(dd)
++#endif
++
+ #endif
+--
+cgit v0.9.0.2-2-gbebe
+
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.905-fix-randr.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.905-fix-randr.patch
new file mode 100644
index 000000000000..fc5c97ef3f0c
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.905-fix-randr.patch
@@ -0,0 +1,56 @@
+From 8e44b1f5543f6d36c33c743f1ba2143514f8afbf Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 24 Oct 2013 13:05:16 +0100
+Subject: [PATCH] sna: Fix canonical mode name to correctly use asprintf
+
+Whoops. Only the kernel sprintf() accepts NULL as a valid target string,
+not libc's.
+
+Reported-by: Jay Little <jaylittle@jaylittle.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70835
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+ src/sna/sna_display.c | 23 ++++++-----------------
+ 1 file changed, 6 insertions(+), 17 deletions(-)
+
+diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
+index 7fcade6..3c39305 100644
+--- a/src/sna/sna_display.c
++++ b/src/sna/sna_display.c
+@@ -2095,27 +2095,16 @@ sna_output_panel_edid(xf86OutputPtr output, DisplayModePtr modes)
+ return xf86ModesAdd(modes, m);
+ }
+
+-static int _canonical_mode_name(DisplayModePtr mode, char *str)
+-{
+- return sprintf(str, "%dx%d%s",
+- mode->HDisplay, mode->VDisplay,
+- mode->Flags & V_INTERLACE ? "i" : "");
+-}
+-
+ static char *canonical_mode_name(DisplayModePtr mode)
+ {
+- char *str;
+- int len;
+-
+- len = _canonical_mode_name(mode, NULL);
+- if (len < 0)
+- return NULL;
++ char *str;
+
+- str = malloc(len + 1);
+- if (str != NULL)
+- _canonical_mode_name(mode, str);
++ if (asprintf(&str, "%dx%d%s",
++ mode->HDisplay, mode->VDisplay,
++ mode->Flags & V_INTERLACE ? "i" : "") < 0)
++ return NULL;
+
+- return str;
++ return str;
+ }
+
+ static DisplayModePtr
+--
+1.8.4.2
+
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.906-server-crash.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.906-server-crash.patch
new file mode 100644
index 000000000000..00c44b51e3af
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.906-server-crash.patch
@@ -0,0 +1,37 @@
+From 6e9a8c5ae2883ca21d117ac672dd8a55b3429dc1 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 14 Nov 2013 16:14:09 +0000
+Subject: sna: Add the missing braces around the conditional block
+
+Fixes regression from
+commit f3225fcb38686f3b9701725bf3a11ecf1c100c3f
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue Nov 5 08:38:22 2013 +0000
+
+ sna: Be move conservative with tiling sizes for older fenced gen
+
+Reported-by: Jay Little <jaylittle@jaylittle.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71605
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
+index 693fedc..63153b7 100644
+--- a/src/sna/sna_blt.c
++++ b/src/sna/sna_blt.c
+@@ -3285,12 +3285,13 @@ bool sna_blt_copy_boxes(struct sna *sna, uint8_t alu,
+ !kgem_check_reloc(kgem, 2) ||
+ !kgem_check_many_bo_fenced(kgem, dst_bo, src_bo, NULL)) {
+ kgem_submit(kgem);
+- if (!kgem_check_many_bo_fenced(kgem, dst_bo, src_bo, NULL))
++ if (!kgem_check_many_bo_fenced(kgem, dst_bo, src_bo, NULL)) {
+ DBG(("%s: not enough room in aperture, fallback to tiling copy\n", __FUNCTION__));
+ return sna_tiling_blt_copy_boxes(sna, alu,
+ src_bo, src_dx, src_dy,
+ dst_bo, dst_dx, dst_dy,
+ bpp, box, nbox);
++ }
+ _kgem_set_mode(kgem, KGEM_BLT);
+ }
+
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.907-invalidation.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.907-invalidation.patch
new file mode 100644
index 000000000000..e78d5bf336b0
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.907-invalidation.patch
@@ -0,0 +1,46 @@
+From 4d8f78bc95f8dd36693f74365dbc3c442fbbf8a9 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 02 Jan 2014 15:01:38 +0000
+Subject: sna/gen7+: Emit invalidate between operations if rendering to source/mask
+
+Fixes regression from
+commit c79cb18407273dc7798618390bd0b7d69b0f80d6 [2.99.907]
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Nov 20 11:17:20 2013 +0000
+
+ sna/gen7: Try to reduce flushes between primitive continuations
+
+Reported-by: Simon Munton <simon.j.munton@gmail.com>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73208
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
+index 572e3e3..e45555b 100644
+--- a/src/sna/gen7_render.c
++++ b/src/sna/gen7_render.c
+@@ -1114,8 +1114,7 @@ gen7_emit_state(struct sna *sna,
+
+ need_stall = sna->render_state.gen7.surface_table != wm_binding_table;
+
+- need_invalidate = need_stall &&
+- (kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo));
++ need_invalidate = kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo);
+ if (ALWAYS_INVALIDATE)
+ need_invalidate = true;
+
+diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
+index a8b4ea8..309398d 100644
+--- a/src/sna/gen8_render.c
++++ b/src/sna/gen8_render.c
+@@ -1130,8 +1130,7 @@ gen8_emit_state(struct sna *sna,
+
+ need_stall = sna->render_state.gen8.surface_table != wm_binding_table;
+
+- need_invalidate = need_stall &&
+- (kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo));
++ need_invalidate = kgem_bo_is_dirty(op->src.bo) || kgem_bo_is_dirty(op->mask.bo);
+ if (ALWAYS_INVALIDATE)
+ need_invalidate = true;
+
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.911-sna-pixmap-migration.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.911-sna-pixmap-migration.patch
new file mode 100644
index 000000000000..a69e0a213270
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.911-sna-pixmap-migration.patch
@@ -0,0 +1,102 @@
+From 3310ee89c1f1a663de5f5b12b8125809a213996f Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sat, 05 Apr 2014 11:18:31 +0000
+Subject: sna: Avoid discarding damage when applying WHOLE hint to pixmap migration
+
+Once again, we must be careful when promoting from a region to whole
+pixmap migration that we do not discard required damage.
+
+Fixes regression from
+commit 27ac9f574f65cbd535751c925e9b2e2d7c8a6b3a [2.99.911]
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu Feb 27 08:33:52 2014 +0000
+
+ sna: Avoid promoting region-to-whole migration and discarding damage
+
+Reported-by: gedgon@gmail.com
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77063
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+---
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 0116d54..71ba34d 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -2500,7 +2500,10 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
+ flags |= MOVE_INPLACE_HINT;
+ }
+
+- if (flags & MOVE_WHOLE_HINT && priv->gpu_damage == NULL)
++ if ((flags & (MOVE_WHOLE_HINT | MOVE_READ)) == (MOVE_WHOLE_HINT | MOVE_READ))
++ return _sna_pixmap_move_to_cpu(pixmap, flags);
++
++ if (flags & MOVE_WHOLE_HINT && priv->gpu_damage == NULL && priv->cpu_damage == NULL)
+ return _sna_pixmap_move_to_cpu(pixmap, flags);
+
+ if (priv->gpu_damage == NULL &&
+@@ -2527,22 +2530,18 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
+ return _sna_pixmap_move_to_cpu(pixmap, flags);
+ }
+
+- if ((flags & MOVE_READ) == 0 &&
+- priv->gpu_damage &&
+- region_subsumes_damage(region, priv->gpu_damage)) {
+- DBG(("%s: region [(%d, %d), (%d, %d)] subsumes damage [(%d,%d), (%d, %d)]\n",
++ if (flags & MOVE_WHOLE_HINT) {
++ DBG(("%s: region (%d, %d), (%d, %d) marked with WHOLE hint, pixmap %dx%d\n",
+ __FUNCTION__,
+ region->extents.x1,
+ region->extents.y1,
+ region->extents.x2,
+ region->extents.y2,
+- priv->gpu_damage->extents.x1,
+- priv->gpu_damage->extents.y1,
+- priv->gpu_damage->extents.x2,
+- priv->gpu_damage->extents.y2));
++ pixmap->drawable.width,
++ pixmap->drawable.height));
+ if (dx | dy)
+ RegionTranslate(region, -dx, -dy);
+- return _sna_pixmap_move_to_cpu(pixmap, flags);
++ return _sna_pixmap_move_to_cpu(pixmap, flags | MOVE_READ);
+ }
+
+ if (priv->move_to_gpu && !priv->move_to_gpu(sna, priv, MOVE_READ)) {
+@@ -4471,17 +4470,19 @@ try_upload_tiled_x(PixmapPtr pixmap, RegionRec *region,
+ if (wedged(sna))
+ return false;
+
+- DBG(("%s: bo? %d, can map? %d\n", __FUNCTION__,
+- priv->gpu_bo != NULL,
+- priv->gpu_bo ? kgem_bo_can_map__cpu(&sna->kgem, priv->gpu_bo, true) : 0));
+-
+ replaces = region->data == NULL &&
+ w >= pixmap->drawable.width &&
+ h >= pixmap->drawable.height;
+
++ DBG(("%s: bo? %d, can map? %d, replaces? %d\n", __FUNCTION__,
++ priv->gpu_bo != NULL,
++ priv->gpu_bo ? kgem_bo_can_map__cpu(&sna->kgem, priv->gpu_bo, true) : 0,
++ replaces));
++
+ if (priv->gpu_bo && (replaces || priv->gpu_bo->proxy)) {
+ DBG(("%s: discarding cached upload proxy\n", __FUNCTION__));
+ sna_pixmap_free_gpu(sna, priv);
++ replaces = true; /* Mark it all GPU damaged afterwards */
+ }
+ assert(priv->gpu_bo == NULL || priv->gpu_bo->proxy == NULL);
+
+@@ -4616,8 +4617,11 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
+ return true;
+
+ hint = MOVE_WRITE;
+- if (w == pixmap->drawable.width && h*stride > 4096)
++ if (w == pixmap->drawable.width && (h+1)*stride > 65536) {
++ DBG(("%s: large upload (%d bytes), marking WHOLE_HINT\n",
++ __FUNCTION__, h*stride));
+ hint |= MOVE_WHOLE_HINT;
++ }
+
+ if (!sna_drawable_move_region_to_cpu(&pixmap->drawable, region, hint))
+ return false;
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.912-disable-dri3.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.912-disable-dri3.patch
new file mode 100644
index 000000000000..97780f8af8fa
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.912-disable-dri3.patch
@@ -0,0 +1,22 @@
+--- configure.old 2014-06-18 08:36:47.151142539 +0200
++++ configure 2014-06-18 09:05:13.568360179 +0200
+@@ -20769,7 +20769,7 @@
+ DRI3_LIBS=$pkg_cv_DRI3_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+- DRI3=$DRI
++ DRI3=no
+ fi
+ fi
+ if test "x$DRI3" != "xno"; then
+@@ -20850,10 +20850,6 @@
+ $as_echo "#define HAVE_DRI3 1" >>confdefs.h
+
+ dri_msg="$dri_msg DRI3"
+-else
+- if test "x$DRI" = "xyes" -a "x$KMS" = "xyes"; then
+- as_fn_error $? "DRI3 requested but prerequisites not found" "$LINENO" 5
+- fi
+ fi
+
+ for ac_header in X11/extensions/dpmsconst.h
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-libdrm-kernel-4_0-crash.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-libdrm-kernel-4_0-crash.patch
new file mode 100644
index 000000000000..ea3aa30ed13c
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-libdrm-kernel-4_0-crash.patch
@@ -0,0 +1,65 @@
+From 7fe2b2948652443ff43d907855bd7a051d54d309 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 19 Mar 2015 23:14:17 +0000
+Subject: sna: Protect against ABI breakage in recent versions of libdrm
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/sna/kgem.c b/src/sna/kgem.c
+index 11f0828..6f16cba 100644
+--- a/src/sna/kgem.c
++++ b/src/sna/kgem.c
+@@ -182,6 +182,15 @@ struct local_i915_gem_caching {
+ #define LOCAL_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + LOCAL_I915_GEM_SET_CACHING, struct local_i915_gem_caching)
+ #define LOCAL_IOCTL_I915_GEM_GET_CACHING DRM_IOW(DRM_COMMAND_BASE + LOCAL_I915_GEM_GET_CACHING, struct local_i915_gem_caching)
+
++struct local_i915_gem_mmap {
++ uint32_t handle;
++ uint32_t pad;
++ uint64_t offset;
++ uint64_t size;
++ uint64_t addr_ptr;
++};
++#define LOCAL_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct local_i915_gem_mmap)
++
+ struct local_i915_gem_mmap2 {
+ uint32_t handle;
+ uint32_t pad;
+@@ -514,15 +523,15 @@ retry_wc:
+
+ static void *__kgem_bo_map__cpu(struct kgem *kgem, struct kgem_bo *bo)
+ {
+- struct drm_i915_gem_mmap mmap_arg;
++ struct local_i915_gem_mmap arg;
+ int err;
+
+ retry:
+- VG_CLEAR(mmap_arg);
+- mmap_arg.handle = bo->handle;
+- mmap_arg.offset = 0;
+- mmap_arg.size = bytes(bo);
+- if ((err = do_ioctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg))) {
++ VG_CLEAR(arg);
++ arg.handle = bo->handle;
++ arg.offset = 0;
++ arg.size = bytes(bo);
++ if ((err = do_ioctl(kgem->fd, LOCAL_IOCTL_I915_GEM_MMAP, &arg))) {
+ assert(err != EINVAL);
+
+ if (__kgem_throttle_retire(kgem, 0))
+@@ -536,10 +545,10 @@ retry:
+ return NULL;
+ }
+
+- VG(VALGRIND_MAKE_MEM_DEFINED(mmap_arg.addr_ptr, bytes(bo)));
++ VG(VALGRIND_MAKE_MEM_DEFINED(arg.addr_ptr, bytes(bo)));
+
+ DBG(("%s: caching CPU vma for %d\n", __FUNCTION__, bo->handle));
+- return bo->map__cpu = (void *)(uintptr_t)mmap_arg.addr_ptr;
++ return bo->map__cpu = (void *)(uintptr_t)arg.addr_ptr;
+ }
+
+ static int gem_write(int fd, uint32_t handle,
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-sna-udev-fstat.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-sna-udev-fstat.patch
new file mode 100644
index 000000000000..7e276ac872fd
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-sna-udev-fstat.patch
@@ -0,0 +1,57 @@
+From 12af8a575d1518d40416f83195049157c3a062a5 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue, 24 Feb 2015 15:25:40 +0000
+Subject: sna: udev integration depends on fstat and sys/stat.h
+
+src/sna/sna_driver.c: In function 'sna_handle_uevents':
+src/sna/sna_driver.c:759:2: error: implicit declaration of function 'fstat' [-Werror=implicit-function-declaration]
+
+Also take the opportunity to include udev support in the configure
+summary.
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/configure.ac b/configure.ac
+index 7476e2b..de3a4b3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,11 +197,15 @@ AC_ARG_ENABLE(udev,
+
+ if test "x$UDEV" != "xno"; then
+ PKG_CHECK_MODULES(UDEV, [libudev], [udev="yes"], [udev="no"])
++ AC_CHECK_HEADERS([sys/stat.h], [], [udev="no"])
+ if test "x$UDEV" = "xyes" -a "x$udev" != "xyes"; then
+ AC_MSG_ERROR([udev support requested but not found (libudev)])
+ fi
+ if test "x$udev" = "xyes"; then
+ AC_DEFINE(HAVE_UDEV,1,[Enable udev-based monitor hotplug detection])
++ udev_msg=" yes"
++ else
++ udev_msg=" no"
+ fi
+ fi
+
+@@ -911,6 +915,7 @@ echo " Support for Kernel Mode Setting? $KMS"
+ echo " Support for legacy User Mode Setting (for i810)? $UMS"
+ echo " Support for Direct Rendering Infrastructure:$dri_msg"
+ echo " Support for Xv motion compensation (XvMC and libXvMC):$xvmc_msg"
++echo " Support for display hotplug notifications (udev):$udev_msg"
+ echo " Build additional tools and utilities?$tools_msg"
+ if test -n "$xp_msg"; then
+ echo " Experimental support:$xp_msg"
+diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
+index 8c0d0b5..bc20ef0 100644
+--- a/src/sna/sna_driver.c
++++ b/src/sna/sna_driver.c
+@@ -740,6 +740,8 @@ sna_wakeup_handler(WAKEUPHANDLER_ARGS_DECL)
+ }
+
+ #if HAVE_UDEV
++#include <sys/stat.h>
++
+ static void
+ sna_handle_uevents(int fd, void *closure)
+ {
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-uxa-udev-fstat.patch b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-uxa-udev-fstat.patch
new file mode 100644
index 000000000000..66793568d4e5
--- /dev/null
+++ b/x11-drivers/xf86-video-intel/files/xf86-video-intel-2.99.917-uxa-udev-fstat.patch
@@ -0,0 +1,27 @@
+From 369ceec0e4910ba2c37736a59c55c0d6c26433bf Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue, 24 Feb 2015 15:25:40 +0000
+Subject: uxa: udev integration depends on fstat and sys/stat.h
+
+src/uxa/intel_driver.c: In function 'I830HandleUEvents':
+src/uxa/intel_driver.c:738:14: error: storage size of 's' isn't known
+src/uxa/intel_driver.c:746:2: error: implicit declaration of function 'fstat' [-Werror=implicit-function-declaration]
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c
+index c554124..6e64b8c 100644
+--- a/src/uxa/intel_driver.c
++++ b/src/uxa/intel_driver.c
+@@ -728,6 +728,8 @@ intel_flush_callback(CallbackListPtr *list,
+ }
+
+ #if HAVE_UDEV
++#include <sys/stat.h>
++
+ static void
+ I830HandleUEvents(int fd, void *closure)
+ {
+--
+cgit v0.10.2
+