diff --git a/libdrm-2.4.40-nouveau-pushbuf-type.patch b/libdrm-2.4.40-nouveau-pushbuf-type.patch new file mode 100644 index 0000000..1aaaa64 --- /dev/null +++ b/libdrm-2.4.40-nouveau-pushbuf-type.patch @@ -0,0 +1,44 @@ +From 891517f5111cd82909906d5e8ee0299db0d46762 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Mon, 7 Jan 2013 13:07:13 +1000 +Subject: [PATCH] nouveau: disallow pushbuf BOs in multiple memory types + +Under certain circumstances it's possible for libdrm to decide to move +a GART|VRAM pushbuf to be VRAM-only. This causes the kernel to reject +the command submission on GF8 and up, due to a stricter policy where +buffers are only allowed to move to memory types that were specified +at creation time. + +The simplest fix for this is to force the creation-time memory type for +the lifetime of the push buffer. + +Signed-off-by: Ben Skeggs +--- + nouveau/pushbuf.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/nouveau/pushbuf.c b/nouveau/pushbuf.c +index 0e37ce3..ff8e125 100644 +--- a/nouveau/pushbuf.c ++++ b/nouveau/pushbuf.c +@@ -574,13 +574,13 @@ nouveau_pushbuf_new(struct nouveau_client *client, struct nouveau_object *chan, + push->client = client; + push->channel = immediate ? chan : NULL; + push->flags = NOUVEAU_BO_RD; +- if (fifo->pushbuf & NOUVEAU_GEM_DOMAIN_VRAM) { +- push->flags |= NOUVEAU_BO_VRAM; +- nvpb->type = NOUVEAU_BO_VRAM; +- } + if (fifo->pushbuf & NOUVEAU_GEM_DOMAIN_GART) { + push->flags |= NOUVEAU_BO_GART; + nvpb->type = NOUVEAU_BO_GART; ++ } else ++ if (fifo->pushbuf & NOUVEAU_GEM_DOMAIN_VRAM) { ++ push->flags |= NOUVEAU_BO_VRAM; ++ nvpb->type = NOUVEAU_BO_VRAM; + } + nvpb->type |= NOUVEAU_BO_MAP; + +-- +1.8.0.1 + diff --git a/libdrm.spec b/libdrm.spec index 83b3594..1c6d164 100644 --- a/libdrm.spec +++ b/libdrm.spec @@ -3,7 +3,7 @@ Summary: Direct Rendering Manager runtime library Name: libdrm Version: 2.4.40 -Release: 1%{?dist} +Release: 2%{?dist} License: MIT Group: System Environment/Libraries URL: http://dri.sourceforge.net @@ -32,6 +32,8 @@ Patch3: libdrm-make-dri-perms-okay.patch Patch4: libdrm-2.4.0-no-bc.patch # make rule to print the list of test programs Patch5: libdrm-2.4.25-check-programs.patch +# nouveau: force single pushbuf memory type to prevent kernel rejections +Patch6: libdrm-2.4.40-nouveau-pushbuf-type.patch %description Direct Rendering Manager runtime library @@ -59,6 +61,7 @@ Utility programs for the kernel DRM interface. Will void your warranty. %patch3 -p1 -b .forceperms %patch4 -p1 -b .no-bc %patch5 -p1 -b .check +%patch6 -p1 -b .nvpbtype %build autoreconf -v --install || exit 1 @@ -192,6 +195,9 @@ done %{_mandir}/man3/drm*.3* %changelog +* Tue Jan 09 2013 Ben Skeggs 2.4.40-2 +- nouveau: fix bug causing kernel to reject certain command streams + * Tue Nov 06 2012 Dave Airlie 2.4.40-1 - libdrm 2.4.40