[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#861706: unblock: beignet/1.3.0-3



Package: release.debian.org
User: release.debian.org@packages.debian.org
Usertags: unblock
Severity: normal

Please unblock package beignet (currently awaiting sponsorship)

* Fix "Exec...-5" error, which made beignet unusable on older (Ivy Bridge / Haswell) hardware. (Closes: #860805) * Use LLVM 3.8 on x32 to fix FTBFS. (This change only affects x32 because everything else we build on uses LLVM_VERSION_MESA.)

unblock beignet/1.3.0-3

diff --git a/debian/changelog b/debian/changelog
index e03f2f5..dde40ed 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+beignet (1.3.0-3) unstable; urgency=medium
+
+  * Fix "Exec...-5" error on older hardware.  (Closes: #860805)
+  * Use LLVM 3.8 on x32 to fix FTBFS.
+
+ -- Rebecca N. Palmer <rebecca_palmer@zoho.com> Tue, 02 May 2017 23:23:11 +0100
+
 beignet (1.3.0-2) unstable; urgency=medium

   * Statically link to LLVM to allow installation together with
diff --git a/debian/patches/series b/debian/patches/series
index ee4a597..13ea02b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,3 +11,4 @@ add-appstream-metadata.patch
 spelling.patch
 opencl2-runtime-detection.patch
 static-llvm.patch
+zerooffset.patch
diff --git a/debian/patches/zerooffset.patch b/debian/patches/zerooffset.patch
new file mode 100644
index 0000000..c63b47e
--- /dev/null
+++ b/debian/patches/zerooffset.patch
@@ -0,0 +1,61 @@
+Description: Check that we can reserve the zero-offset
+
+commit ff57cee0519d ("ocl20/runtime: take the first 64KB page table
+entries") tries to allocate a bo at 0 offset, but failed to take into
+account that something may already be allocated there that it is not
+allowed to evict (particularly when not using full-ppgtt separation).
+Failure to do so causes all execution to subsequentally fail with
+"drm_intel_gem_bo_context_exec() failed: Device or resource busy"
+
+This is needed when using older (Ivy Bridge/Haswell) hardware with
+current Linux/libdrm
+
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=98647
+Bug-Debian: https://bugs.debian.org/860805
+Origin: upstream 8b04f0be372da8eabdc93d6ae1b81a3c83cba284
+Author: Yang Rong, Chris Wilson
+
+diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c
+index b8a1b52..3caf737 100644
+--- a/src/intel/intel_driver.c
++++ b/src/intel/intel_driver.c
+@@ -137,19 +137,28 @@ return 1;
+ static int
+ intel_driver_context_init(intel_driver_t *driver)
+ {
+-driver->ctx = drm_intel_gem_context_create(driver->bufmgr);
+-if (!driver->ctx)
+-  return 0;
+-driver->null_bo = NULL;
++  driver->ctx = drm_intel_gem_context_create(driver->bufmgr);
++  if (!driver->ctx)
++    return 0;
++  driver->null_bo = NULL;
+ #ifdef HAS_BO_SET_SOFTPIN
+-drm_intel_bo *bo = dri_bo_alloc(driver->bufmgr, "null_bo", 64*1024, 4096);
+-drm_intel_bo_set_softpin_offset(bo, 0);
+-// don't reuse it, that would make two bo trying to bind to same address,
+-// which is un-reasonable.
+-drm_intel_bo_disable_reuse(bo);
+-driver->null_bo = bo;
++ drm_intel_bo *bo = dri_bo_alloc(driver->bufmgr, "null_bo", 64*1024, 4096);
++  drm_intel_bo_set_softpin_offset(bo, 0);
++ // don't reuse it, that would make two bo trying to bind to same address,
++  // which is un-reasonable.
++  drm_intel_bo_disable_reuse(bo);
++
++  drm_intel_bo_map(bo, 1);
++  *(uint32_t *)bo->virtual = MI_BATCH_BUFFER_END;
++  drm_intel_bo_unmap(bo);
++
++  if (drm_intel_gem_bo_context_exec(bo, driver->ctx, 0, 0) == 0) {
++    driver->null_bo = bo;
++  } else {
++    drm_intel_bo_unreference(bo);
++  }
+ #endif
+-return 1;
++    return 1;
+ }
+
+ static void
diff --git a/debian/rules b/debian/rules
index 302dd30..9bc87e4 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,7 +16,8 @@ SUPERFLUOUS=cl.h cl_d3d10.h cl_dx9_media_sharing.h cl_ext.h cl_gl_ext.h cl_platf # Use the same LLVM version as mesa (build will fail if this version is not available; this is intentional, as mixing versions may cause crashes) # http://lists.alioth.debian.org/pipermail/pkg-opencl-devel/Week-of-Mon-20160418/000963.html LLVM_VERSION_MESA := $(shell dpkg-query -f '$${Depends} \n' -W libgl1-mesa-dri:$(DEB_HOST_ARCH) | sed -r 's/.*libllvm([0-9.]+).*/\1/p;d')
-LLVM_VERSION_DEFAULT	 = 3.9
+#x32 mesa doesn't use libllvm - use 3.8 there, as their "3.9" snapshot doesn't work for us https://buildd.debian.org/status/fetch.php?pkg=beignet&arch=x32&ver=1.3.0-2&stamp=1489907158&raw=0
+LLVM_VERSION_DEFAULT	 = 3.8
 LLVM_VERSION		 = $(or $(LLVM_VERSION_MESA),$(LLVM_VERSION_DEFAULT))
#this looks the wrong way round because --compare-versions uses success=0 and we need on=1 CAN_ENABLE_OPENCL2 := $(if $(findstring amd64,$(DEB_HOST_ARCH)),$(shell dpkg --compare-versions $(LLVM_VERSION) lt 3.9 || dpkg --compare-versions `dpkg-query -f '$${Version}' -W libdrm-dev:$(DEB_HOST_ARCH)` lt 2.4.66 ; echo $$?),0)


Reply to: