diff --git a/.gitignore b/.gitignore index a09ad8b..cdf10ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libdrm-2.4.56.tar.bz2 +SOURCES/libdrm-2.4.60.tar.bz2 diff --git a/.libdrm.metadata b/.libdrm.metadata index 24a84b0..e21582d 100644 --- a/.libdrm.metadata +++ b/.libdrm.metadata @@ -1 +1 @@ -c61feed76db0ca729febbc45794d13d04a3eeb53 SOURCES/libdrm-2.4.56.tar.bz2 +4e041a5ff22b2b9132b216eb0574638bf252b7a9 SOURCES/libdrm-2.4.60.tar.bz2 diff --git a/SOURCES/0001-nouveau-restore-check-that-avoids-multiple-user-bos-.patch b/SOURCES/0001-nouveau-restore-check-that-avoids-multiple-user-bos-.patch new file mode 100644 index 0000000..7c546e7 --- /dev/null +++ b/SOURCES/0001-nouveau-restore-check-that-avoids-multiple-user-bos-.patch @@ -0,0 +1,45 @@ +From 812e8fe6ce46d733c30207ee26c788c61f546294 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Wed, 6 May 2015 14:34:22 +1000 +Subject: [PATCH] nouveau: restore check that avoids multiple user bos per + kernel bo + +Lost in 5ea6f1c32628887c9df0c53bc8c199eb12633fec, triggering fdo#89842. + +Unlike the PRIME fd->handle interfaces, the GEM_OPEN interface doesn't +do anything at the kernel level to prevent this situation occuring, +and we end up with multiple GEM handles for a single kernel buffer. + +Signed-off-by: Ben Skeggs +--- + nouveau/nouveau.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c +index 0071249..7393474 100644 +--- a/nouveau/nouveau.c ++++ b/nouveau/nouveau.c +@@ -480,10 +480,20 @@ nouveau_bo_name_ref(struct nouveau_device *dev, uint32_t name, + struct nouveau_bo **pbo) + { + struct nouveau_device_priv *nvdev = nouveau_device(dev); ++ struct nouveau_bo_priv *nvbo; + struct drm_gem_open req = { .name = name }; + int ret; + + pthread_mutex_lock(&nvdev->lock); ++ DRMLISTFOREACHENTRY(nvbo, &nvdev->bo_list, head) { ++ if (nvbo->name == name) { ++ ret = nouveau_bo_wrap_locked(dev, nvbo->base.handle, ++ pbo, name); ++ pthread_mutex_unlock(&nvdev->lock); ++ return ret; ++ } ++ } ++ + ret = drmIoctl(dev->fd, DRM_IOCTL_GEM_OPEN, &req); + if (ret == 0) { + ret = nouveau_bo_wrap_locked(dev, req.handle, pbo, name); +-- +1.9.3 + diff --git a/SOURCES/amd-pci-ids.patch b/SOURCES/amd-pci-ids.patch deleted file mode 100644 index 28b0f0a..0000000 --- a/SOURCES/amd-pci-ids.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/radeon/r600_pci_ids.h b/radeon/r600_pci_ids.h -index de25f16..3e1136d 100644 ---- a/radeon/r600_pci_ids.h -+++ b/radeon/r600_pci_ids.h -@@ -366,6 +366,7 @@ CHIPSET(0x6828, VERDE_6828, VERDE) - CHIPSET(0x6829, VERDE_6829, VERDE) - CHIPSET(0x682A, VERDE_682A, VERDE) - CHIPSET(0x682B, VERDE_682B, VERDE) -+CHIPSET(0x682C, VERDE_682C, VERDE) - CHIPSET(0x682D, VERDE_682D, VERDE) - CHIPSET(0x682F, VERDE_682F, VERDE) - CHIPSET(0x6830, VERDE_6830, VERDE) -@@ -382,8 +383,11 @@ CHIPSET(0x6600, OLAND_6600, OLAND) - CHIPSET(0x6601, OLAND_6601, OLAND) - CHIPSET(0x6602, OLAND_6602, OLAND) - CHIPSET(0x6603, OLAND_6603, OLAND) -+CHIPSET(0x6604, OLAND_6604, OLAND) -+CHIPSET(0x6605, OLAND_6605, OLAND) - CHIPSET(0x6606, OLAND_6606, OLAND) - CHIPSET(0x6607, OLAND_6607, OLAND) -+CHIPSET(0x6608, OLAND_6608, OLAND) - CHIPSET(0x6610, OLAND_6610, OLAND) - CHIPSET(0x6611, OLAND_6611, OLAND) - CHIPSET(0x6613, OLAND_6613, OLAND) -@@ -401,6 +405,8 @@ CHIPSET(0x666F, HAINAN_666F, HAINAN) - - CHIPSET(0x6640, BONAIRE_6640, BONAIRE) - CHIPSET(0x6641, BONAIRE_6641, BONAIRE) -+CHIPSET(0x6646, BONAIRE_6646, BONAIRE) -+CHIPSET(0x6647, BONAIRE_6647, BONAIRE) - CHIPSET(0x6649, BONAIRE_6649, BONAIRE) - CHIPSET(0x6650, BONAIRE_6650, BONAIRE) - CHIPSET(0x6651, BONAIRE_6651, BONAIRE) -@@ -460,6 +466,7 @@ CHIPSET(0x1313, KAVERI_1313, KAVERI) - CHIPSET(0x1315, KAVERI_1315, KAVERI) - CHIPSET(0x1316, KAVERI_1316, KAVERI) - CHIPSET(0x1317, KAVERI_1317, KAVERI) -+CHIPSET(0x1318, KAVERI_1318, KAVERI) - CHIPSET(0x131B, KAVERI_131B, KAVERI) - CHIPSET(0x131C, KAVERI_131C, KAVERI) - CHIPSET(0x131D, KAVERI_131D, KAVERI) diff --git a/SOURCES/libdrm-2.4.0-no-bc.patch b/SOURCES/libdrm-2.4.0-no-bc.patch index ad14e21..e3624a6 100644 --- a/SOURCES/libdrm-2.4.0-no-bc.patch +++ b/SOURCES/libdrm-2.4.0-no-bc.patch @@ -1,10 +1,10 @@ -diff -up libdrm-20080814/xf86drm.c.no-bc libdrm-20080814/xf86drm.c ---- libdrm-20080814/xf86drm.c.no-bc 2008-08-14 15:43:09.000000000 +1000 -+++ libdrm-20080814/xf86drm.c 2008-08-14 15:45:09.000000000 +1000 -@@ -396,11 +396,6 @@ int drmAvailable(void) +diff -up libdrm-2.4.60/xf86drm.c.no-bc libdrm-2.4.60/xf86drm.c +--- libdrm-2.4.60/xf86drm.c.no-bc 2015-03-23 09:04:17.272458959 +1000 ++++ libdrm-2.4.60/xf86drm.c 2015-03-23 09:07:36.856720490 +1000 +@@ -482,11 +482,6 @@ int drmAvailable(void) int fd; - if ((fd = drmOpenMinor(0, 1, DRM_NODE_RENDER)) < 0) { + if ((fd = drmOpenMinor(0, 1, DRM_NODE_PRIMARY)) < 0) { -#ifdef __linux__ - /* Try proc for backward Linux compatibility */ - if (!access("/proc/dri/0", R_OK)) @@ -13,7 +13,7 @@ diff -up libdrm-20080814/xf86drm.c.no-bc libdrm-20080814/xf86drm.c return 0; } -@@ -519,38 +514,6 @@ static int drmOpenByName(const char *nam +@@ -659,38 +654,6 @@ static int drmOpenByName(const char *nam } } @@ -38,9 +38,9 @@ diff -up libdrm-20080814/xf86drm.c.no-bc libdrm-20080814/xf86drm.c - for (devstring = ++pt; *pt && *pt != ' '; ++pt) - ; - if (*pt) { /* Found busid */ -- return drmOpenByBusid(++pt); +- return drmOpenByBusid(++pt, type); - } else { /* No busid */ -- return drmOpenDevice(strtol(devstring, NULL, 0),i, DRM_NODE_RENDER); +- return drmOpenDevice(strtol(devstring, NULL, 0),i, type); - } - } - } diff --git a/SPECS/libdrm.spec b/SPECS/libdrm.spec index 270e66b..5d42731 100644 --- a/SPECS/libdrm.spec +++ b/SPECS/libdrm.spec @@ -2,8 +2,8 @@ Summary: Direct Rendering Manager runtime library Name: libdrm -Version: 2.4.56 -Release: 2%{?dist} +Version: 2.4.60 +Release: 3%{?dist} License: MIT Group: System Environment/Libraries URL: http://dri.sourceforge.net @@ -27,6 +27,9 @@ BuildRequires: libudev-devel BuildRequires: libatomic_ops-devel BuildRequires: libpciaccess-devel BuildRequires: libxslt docbook-style-xsl +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 +BuildRequires: valgrind-devel +%endif Source2: 91-drm-modeset.rules @@ -36,8 +39,9 @@ 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 -# add latest AMD pci ids. -Patch10: amd-pci-ids.patch + +# backport nouveau fix +Patch10: 0001-nouveau-restore-check-that-avoids-multiple-user-bos-.patch %description Direct Rendering Manager runtime library @@ -55,26 +59,27 @@ Direct Rendering Manager development package %package -n drm-utils Summary: Direct Rendering Manager utilities Group: Development/Tools +Requires: libdrm = %{version}-%{release} %description -n drm-utils Utility programs for the kernel DRM interface. Will void your warranty. -Requires: libdrm = %{version}-%{release} %prep %setup -q %{?gitdate:-n %{name}-%{gitdate}} %patch3 -p1 -b .forceperms %patch4 -p1 -b .no-bc %patch5 -p1 -b .check -%patch10 -p1 -b .amdpci +%patch10 -p1 -b .nouveau %build autoreconf -v --install || exit 1 %configure \ %ifarch %{arm} --enable-exynos-experimental-api \ - --enable-freedreno-experimental-api \ --enable-omap-experimental-api \ + --enable-tegra-experimental-api \ %endif + --enable-install-test-programs \ --enable-udev make %{?_smp_mflags} pushd tests @@ -115,10 +120,14 @@ done %ifarch %{arm} %{_libdir}/libdrm_exynos.so.1 %{_libdir}/libdrm_exynos.so.1.0.0 -%{_libdir}/libdrm_freedreno.so.1 -%{_libdir}/libdrm_freedreno.so.1.0.0 %{_libdir}/libdrm_omap.so.1 %{_libdir}/libdrm_omap.so.1.0.0 +%{_libdir}/libdrm_tegra.so.0 +%{_libdir}/libdrm_tegra.so.0.0.0 +%endif +%ifarch %{arm} aarch64 +%{_libdir}/libdrm_freedreno.so.1 +%{_libdir}/libdrm_freedreno.so.1.0.0 %endif %{_libdir}/libdrm_radeon.so.1 %{_libdir}/libdrm_radeon.so.1.0.1 @@ -132,12 +141,6 @@ done %defattr(-,root,root,-) %{_bindir}/dristat %{_bindir}/drmstat -%ifarch %{ix86} x86_64 ia64 -%{_bindir}/gem_basic -%{_bindir}/gem_flink -%{_bindir}/gem_mmap -%{_bindir}/gem_readwrite -%endif %{_bindir}/getclient %{_bindir}/getstats %{_bindir}/getversion @@ -145,6 +148,11 @@ done %{_bindir}/openclose %{_bindir}/setversion %{_bindir}/updatedraw +%{_bindir}/modetest +%{_bindir}/modeprint +%{_bindir}/vbltest +%{_bindir}/kmstest +%exclude %{_bindir}/exynos* %files devel %defattr(-,root,root,-) @@ -164,10 +172,13 @@ done %ifarch %{arm} %{_includedir}/libdrm/exynos_drmif.h %{_includedir}/libdrm/omap_drmif.h +%{_includedir}/libdrm/tegra.h %{_includedir}/exynos/ -%{_includedir}/freedreno/ %{_includedir}/omap/ %endif +%ifarch %{arm} aarch64 +%{_includedir}/freedreno/ +%endif %{_includedir}/libdrm/radeon_bo.h %{_includedir}/libdrm/radeon_bo_gem.h %{_includedir}/libdrm/radeon_bo_int.h @@ -186,6 +197,9 @@ done %ifarch %{arm} %{_libdir}/libdrm_exynos.so %{_libdir}/libdrm_omap.so +%{_libdir}/libdrm_tegra.so +%endif +%ifarch %{arm} aarch64 %{_libdir}/libdrm_freedreno.so %endif %{_libdir}/libdrm_radeon.so @@ -197,8 +211,11 @@ done %endif %ifarch %{arm} %{_libdir}/pkgconfig/libdrm_exynos.pc -%{_libdir}/pkgconfig/libdrm_freedreno.pc %{_libdir}/pkgconfig/libdrm_omap.pc +%{_libdir}/pkgconfig/libdrm_tegra.pc +%endif +%ifarch %{arm} aarch64 +%{_libdir}/pkgconfig/libdrm_freedreno.pc %endif %{_libdir}/pkgconfig/libdrm_radeon.pc %{_libdir}/pkgconfig/libdrm_nouveau.pc @@ -207,14 +224,56 @@ done %{_mandir}/man7/drm*.7* %changelog -* Mon Aug 25 2014 Dave Airlie 2.4.56-2 -- add updated AMD PCI IDs +* Fri May 22 2015 Dave Airlie 2.4.60-3 +- backport nouveau fix from 2.4.61 + +* Mon May 04 2015 Benjamin Tissoires 2.4.60-2 +- RHEL7 rpmdiff fixes + +* Mon Mar 23 2015 Dave Airlie 2.4.60-1 +- libdrm 2.4.60 + +* Fri Jan 23 2015 Rob Clark 2.4.59-4 +- No we don't actually want to install the exynos tests + +* Fri Jan 23 2015 Rob Clark 2.4.59-3 +- Add test apps to drm-utils package + +* Thu Jan 22 2015 Peter Robinson 2.4.59-2 +- Enable tegra + +* Thu Jan 22 2015 Dave Airlie 2.4.59-1 +- libdrm 2.4.59 -* Fri Aug 15 2014 Dave Airlie 2.4.56-1 +* Wed Nov 19 2014 Dan HorĂ¡k 2.4.58-3 +- valgrind available only on selected arches + +* Tue Nov 18 2014 Adam Jackson 2.4.58-2 +- BR: valgrind-devel so we get ioctl annotations + +* Thu Oct 02 2014 Adam Jackson 2.4.58-1 +- libdrm 2.4.58 + +* Sun Aug 17 2014 Fedora Release Engineering - 2.4.56-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Mon Aug 04 2014 Dave Airlie 2.4.56-1 - libdrm 2.4.56 -* Wed Feb 12 2014 Adam Jackson 2.4.50-1.1 -- Mass rebuild +* Mon Jul 7 2014 Peter Robinson 2.4.54-3 +- Build freedreno support on aarch64 too + +* Sat Jun 07 2014 Fedora Release Engineering - 2.4.54-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat May 03 2014 Dennis Gilmore 2.4.54-1 +- libdrm 2.4.54 + +* Sun Apr 13 2014 Dave Airlie 2.4.53-1 +- libdrm 2.4.53 + +* Sat Feb 08 2014 Adel Gadllah 2.4.52-1 +- libdrm 2.4.52 * Thu Dec 05 2013 Dave Airlie 2.4.50-1 - libdrm 2.4.50