diff --git a/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch b/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch new file mode 100644 index 0000000..c6c7667 --- /dev/null +++ b/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch @@ -0,0 +1,57 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Tue, 26 Nov 2013 10:45:26 +1000 +Subject: [PATCH] worst hack of all time to qxl driver + +--- + src/qxl_surface.c | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/src/qxl_surface.c b/src/qxl_surface.c +index 6a7e275..bb59f9e 100644 +--- a/src/qxl_surface.c ++++ b/src/qxl_surface.c +@@ -770,8 +770,9 @@ qxl_surface_composite (qxl_surface_t *dest, + qxl->bo_funcs->bo_decref(qxl, derefs[i]); + } + +-Bool +-qxl_surface_put_image (qxl_surface_t *dest, ++ ++static Bool ++qxl_surface_put_image_for_reals (qxl_surface_t *dest, + int x, int y, int width, int height, + const char *src, int src_pitch) + { +@@ -814,6 +815,31 @@ qxl_surface_put_image (qxl_surface_t *dest, + return TRUE; + } + ++#define HACK_THE_PLANET 1 ++Bool ++qxl_surface_put_image (qxl_surface_t *dest, ++ int x, int y, int width, int height, ++ const char *src, int src_pitch) ++{ ++#ifdef HACK_THE_PLANET ++ Bool use_hack = FALSE; ++ ++ /* worst heuristic ever - should really block the gnome-shell issue for now */ ++ if (width == pixman_image_get_width(dest->host_image) && height < pixman_image_get_height(dest->host_image)) ++ use_hack = TRUE; ++ ++ if (use_hack) { ++ int gross = rand() % height; ++ int h2 = height - gross; ++ if (gross > 0) ++ qxl_surface_put_image_for_reals(dest, x, y, width, gross, src, src_pitch); ++ qxl_surface_put_image_for_reals(dest, x, y + gross, width, h2, src + (gross * src_pitch), src_pitch); ++ return TRUE; ++ } else ++#endif ++ return qxl_surface_put_image_for_reals(dest, x, y, width, height, src, src_pitch); ++} ++ + void + qxl_get_formats (int bpp, SpiceSurfaceFmt *format, pixman_format_code_t *pformat) + { diff --git a/SOURCES/0002-modesetting-Validate-the-atom-for-enum-properties.patch b/SOURCES/0002-modesetting-Validate-the-atom-for-enum-properties.patch new file mode 100644 index 0000000..1cf3417 --- /dev/null +++ b/SOURCES/0002-modesetting-Validate-the-atom-for-enum-properties.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 13 Jun 2017 09:29:28 -0400 +Subject: [PATCH] modesetting: Validate the atom for enum properties + +The client could have said anything here, and if what they said doesn't +actually name an atom NameForAtom() will return NULL, and strcmp() will +be unhappy about that. + +[copied from xserver d4995a3936ae283b9080fdaa0905daa669ebacfc] + +Signed-off-by: Adam Jackson +--- + src/qxl_drmmode.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/qxl_drmmode.c b/src/qxl_drmmode.c +index 3c288f9..ff164cd 100644 +--- a/src/qxl_drmmode.c ++++ b/src/qxl_drmmode.c +@@ -622,7 +622,8 @@ drmmode_output_set_property(xf86OutputPtr output, Atom property, + if (value->type != XA_ATOM || value->format != 32 || value->size != 1) + return FALSE; + memcpy(&atom, value->data, 4); +- name = NameForAtom(atom); ++ if (!(name = NameForAtom(atom))) ++ return FALSE; + + /* search for matching name string, then set its value down */ + for (j = 0; j < p->mode_prop->count_enums; j++) { diff --git a/SOURCES/0003-qxl-call-provider-init.patch b/SOURCES/0003-qxl-call-provider-init.patch new file mode 100644 index 0000000..9954117 --- /dev/null +++ b/SOURCES/0003-qxl-call-provider-init.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Wed, 8 Mar 2017 10:50:56 +1000 +Subject: [PATCH] qxl: call provider init + +This prevents crashes when multiple QXL devices are configured in a VM. + +https://bugzilla.redhat.com/show_bug.cgi?id=1428340 +--- + src/qxl_drmmode.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/qxl_drmmode.c b/src/qxl_drmmode.c +index ff164cd..a2f84b1 100644 +--- a/src/qxl_drmmode.c ++++ b/src/qxl_drmmode.c +@@ -938,6 +938,9 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp) + for (i = 0; i < drmmode->mode_res->count_connectors; i++) + drmmode_output_init(pScrn, drmmode, i); + ++#if XF86_CRTC_VERSION >= 5 ++ xf86ProviderSetup(pScrn, NULL, "qxl"); ++#endif + xf86InitialConfiguration(pScrn, TRUE); + + return TRUE; diff --git a/SPECS/xorg-x11-drv-qxl.spec b/SPECS/xorg-x11-drv-qxl.spec new file mode 100644 index 0000000..8560223 --- /dev/null +++ b/SPECS/xorg-x11-drv-qxl.spec @@ -0,0 +1,391 @@ +%global tarball xf86-video-qxl +%global moduledir %(pkg-config xorg-server --variable=moduledir ) +%global driverdir %{moduledir}/drivers + +# Xspice is x86_64 only since spice-server is x86_64 only +%ifarch x86_64 +%define with_xspice (0%{?fedora} || 0%{?rhel} > 6) +%else +%define with_xspice 0 +%endif + +#% global gitdate 20130703 +%global gitversion 8b03ec16 + +%if 0%{?gitdate} + +%define gver .%{gitdate}git%{gitversion} +%endif + +Summary: Xorg X11 qxl video driver +Name: xorg-x11-drv-qxl + +Version: 0.1.5 + +Release: 4%{?gver}%{?dist}.1 +URL: http://www.x.org +Source0: http://xorg.freedesktop.org/releases/individual/driver/%{tarball}-%{version}.tar.bz2 + +#Source0: %{tarball}-%{gitdate}.tar.bz2 + +Patch1: 0001-worst-hack-of-all-time-to-qxl-driver.patch +Patch2: 0002-modesetting-Validate-the-atom-for-enum-properties.patch +Patch3: 0003-qxl-call-provider-init.patch + +License: MIT +Group: User Interface/X Hardware Support + +ExcludeArch: s390 s390x + +BuildRequires: git-core +BuildRequires: pkgconfig +BuildRequires: xorg-x11-server-devel >= 1.1.0-1 +BuildRequires: spice-protocol >= 0.12.1 +BuildRequires: libdrm-devel >= 2.4.46-1 +BuildRequires: libXfont2-devel + +%ifarch x86_64 +BuildRequires: spice-server-devel >= 0.8.0 +%endif +BuildRequires: glib2-devel +BuildRequires: libtool +BuildRequires: libudev-devel + +Requires: Xorg %(xserver-sdk-abi-requires ansic) +Requires: Xorg %(xserver-sdk-abi-requires videodrv) + +%description +X.Org X11 qxl video driver. + +%if %{with_xspice} +%package -n xorg-x11-server-Xspice +Summary: XSpice is an X server that can be accessed by a Spice client +Requires: Xorg %(xserver-sdk-abi-requires ansic) +Requires: Xorg %(xserver-sdk-abi-requires videodrv) +Requires: xorg-x11-server-Xorg +Requires: python >= 2.6 + +%description -n xorg-x11-server-Xspice +XSpice is both an X and a Spice server. +%endif + +%prep +%autosetup -S git_am -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} + +%build +autoreconf -f -i +%if %{with_xspice} +%define enable_xspice --enable-xspice +%endif +%configure --disable-static %{?enable_xspice} +make %{?_smp_mflags} + + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' + +# FIXME: Remove all libtool archives (*.la) from modules directory. This +# should be fixed in upstream Makefile.am or whatever. +find $RPM_BUILD_ROOT -regex ".*\.la$" | xargs rm -f -- + +%ifarch x86_64 +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/X11 +install -p -m 644 examples/spiceqxl.xorg.conf.example \ + $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf +# FIXME: upstream installs this file by default, we install it elsewhere. +# upstream should just not install it and let dist package deal with +# doc/examples. +rm -f $RPM_BUILD_ROOT/usr/share/doc/xf86-video-qxl/spiceqxl.xorg.conf.example +%if !%{with_xspice} +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf +%endif +%endif + + +%files +%defattr(-,root,root,-) +%doc COPYING README +%{driverdir}/qxl_drv.so + +%if %{with_xspice} +%files -n xorg-x11-server-Xspice +%defattr(-,root,root,-) +%doc COPYING README.xspice README examples/spiceqxl.xorg.conf.example +%config(noreplace) %{_sysconfdir}/X11/spiceqxl.xorg.conf +%{_bindir}/Xspice +%{driverdir}/spiceqxl_drv.so +%endif + + +%changelog +* Wed May 30 2018 Adam Jackson - 0.1.5-4.1 +- Rebuild for xserver 1.20 + +* Thu May 17 2018 Christophe Fergeau - 0.1.5-4 +- Fix crash when multiple QXL devices are in use + Resolves: rhbz#1428340 + +* Mon Jun 19 2017 Adam Jackson - 0.1.5-3 +- Validate RANDR output property atoms + +* Wed Feb 01 2017 Adam Jackson - 0.1.5-2 +- Rebuild for 1.19 ABI + +* Tue Jan 24 2017 Christophe Fergeau 0.1.5-1 +- Rebase to xorg-x11-drv-qxl 0.1.5 + Resolves: rhbz#1401656 + Related: rhbz#1398296 + +* Fri Aug 28 2015 Christophe Fergeau 0.1.1-18 +- Rebuild after tagging rebased xorg-x11-server in the build root + Related: rhbz#1221909 + +* Wed Aug 26 2015 Christophe Fergeau 0.1.1-17 +- Fix freeze in xfig when entering space character + Resolves: rhbz#1221909 +- Fix memory leak + Resolves: rhbz#1222038 +- Fix cursor leak causing a crash when running RHEL6 anaconda in a VM + Resolves: rhbz#1222040 + +* Fri May 22 2015 Marc-Andre Lureau - 0.1.1-16 +- Fix glitches when restarting X server + Resolves: rhbz#1102175 +- Fix restarting X server + Resolves: rhbz#1185807 + +* Tue May 19 2015 Jonathon Jongsma - 0.1.1-15 +- Update drm properties correctly + Resolves: rhbz#1153377 + +* Fri May 15 2015 Christophe Fergeau 0.1.1-14 +- Add upstream patch fixing aarch64 build + Resolves: rhbz#1221328 + +* Wed May 13 2015 Adam Jackson 0.1.1-13 +- Rebuild for xserver 1.17 + +* Thu Nov 20 2014 Marc-Andre Lureau 0.1.1-12 +- Try to fallback to previous working configuration if + drmModeSetCrtc() failed. + Resolves: rhbz#1127552 + +* Thu Oct 23 2014 Christophe Fergeau 0.1.1-11 +- Fix crash when attempting to call CrtcRotate + Resolves: rhbz#1067709 + +* Thu Oct 23 2014 Christophe Fergeau 0.1.1-10 +- Fix mouse cursor disappearing when changing guest resolution + Resolves: rhbz#1030531 + +* Tue Mar 11 2014 Soren Sandmann 0.1.1-9 +- Disable surfaces by default -- bug 1070984 + +* Tue Jan 14 2014 Dave Airlie 0.1.1-8 +- grab patches from F20 - fix dates + +* Mon Jan 13 2014 Adam Jackson - 0.1.1-7 +- 1.15 ABI rebuild + +* Tue Dec 17 2013 Adam Jackson - 0.1.1-6 +- 1.15RC4 ABI rebuild + +* Wed Nov 20 2013 Adam Jackson - 0.1.1-5 +- 1.15RC2 ABI rebuild + +* Wed Nov 06 2013 Adam Jackson - 0.1.1-4 +- 1.15RC1 ABI rebuild + +* Fri Oct 25 2013 Adam Jackson - 0.1.1-3 +- ABI rebuild + +* Thu Oct 24 2013 Adam Jackson 0.1.1-2 +- Drop qxl rev 1 patches + +* Mon Oct 21 2013 Alon Levy - 0.1.1-1 +- New upstream release +- Fixes to said release to work with suid issues (upstream) + +* Sun Aug 04 2013 Fedora Release Engineering - 0.1.1-0.14.20130514git77a1594 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jul 03 2013 Dave Airlie 0.1.1-0.13 +- resnapshot upstream to pick up a few patches +- add userspace patch to use new kernel hotspot interface (#974662) + +* Wed Jul 03 2013 Dave Airlie 0.1.1-0.12 +- add support for udev event catching - for dynamic resize from kernel + +* Tue Jul 02 2013 Dave Airlie 0.1.1-0.11 +- helps if you apply the patch (#978612) + +* Sat Jun 29 2013 Dave Airlie 0.1.1-0.10 +- fix another resize issue due (#978612) + +* Tue Jun 18 2013 Dave Airlie 0.1.1-0.9 +- disable composite/a8 surfaces for KMS (#974198) + +* Tue May 28 2013 Dave Airlie 0.1.1-0.8 +- fix 32-bit (#965101) + +* Tue May 14 2013 Dave Airlie 0.1.1-0.7 +- resnapshot - fixes randr under KMS + +* Tue May 14 2013 Daniel Mach - 0.1.1-0.6 +- Fix with_xspice macro definition (airlied - cherrypick) + +* Tue May 7 2013 Alon Levy 0.1.1-0.5 +- Add Xspice fixes and dfps (upstream a474a71..77a1594) + +* Tue Mar 19 2013 Adam Jackson 0.1.1-0.4 +- Less RHEL customization + +* Tue Mar 12 2013 Dave Airlie 0.1.1-0.3.20130312gita474a71 +- add KMS support to userspace driver + +* Thu Mar 07 2013 Peter Hutterer - 0.1.1-0.2.20130306git9d45cc5 +- ABI rebuild + +* Wed Mar 06 2013 Dave Airlie 0.1.1-0.1 +- bump to get UMS bo abstraction in - kms coming soon + +* Fri Feb 15 2013 Peter Hutterer - 0.1.0-4 +- ABI rebuild + +* Fri Feb 15 2013 Peter Hutterer - 0.1.0-3 +- ABI rebuild + +* Thu Jan 10 2013 Adam Jackson - 0.1.0-2 +- ABI rebuild + +* Sat Sep 22 2012 Soren Sandmann 0.1.0-1 +- Upstream 0.1.0 + +* Wed Aug 29 2012 Adam Jackson 0.0.22-6 +- Exclude Xspice from RHEL6 builds + +* Sun Aug 26 2012 Alon Levy +- fix uxa_xorg_enable_disable_fb_access - 0.0.22-5.20120718gitde6620788 (#844463) + +* Thu Aug 23 2012 Alon Levy +- fix break from introduction of screen privates - 0.0.22-4.20120718gitde6620788 (#844463) + +* Sun Jul 22 2012 Fedora Release Engineering - 0.0.22-3.20120718gitde6620788 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jul 18 2012 Dave Airlie 0.0.22-2.20120718gitde6620788 +- git snapshot for new server API + +* Thu Apr 05 2012 Adam Jackson - 0.0.22-1 +- RHEL arch exclude updates + +* Thu Mar 15 2012 Soren Sandmann - 0.22.0 +- Upstream 0.0.17 + +* Sat Feb 11 2012 Peter Hutterer - 0.0.21-16 +- ABI rebuild + +* Fri Feb 10 2012 Peter Hutterer - 0.0.21-15 +- ABI rebuild + +* Tue Jan 24 2012 Peter Hutterer - 0.0.21-14 +- ABI rebuild + +* Fri Jan 13 2012 Marc-André Lureau 0.0.21-13 +- Add 0011-support-_ASYNC-io-calls-and-interrupt-handling-busy-.patch + to use async calls + +* Wed Jan 04 2012 Adam Jackson 0.0.21-12 +- qxl-0.0.16-ftbfs.patch: Fix some FTBFS. + +* Wed Nov 16 2011 Adam Jackson 0.0.21-11 +- qxl-0.0.16-vgahw.patch: API compat for xserver 1.12 (#753928) + +* Mon Nov 14 2011 Adam Jackson - 0.0.21-10 +- ABI rebuild + +* Wed Nov 09 2011 Adam Jackson - 0.0.21-9 +- ABI rebuild + +* Fri Oct 28 2011 Soren Sandmann - 0.0.21-8 +- Bump release + +* Fri Oct 28 2011 Soren Sandmann - 0.0.21-7 +- Add patch to translate access regions according to drawable offset + Bug 731245. + +* Thu Oct 27 2011 Fedora Release Engineering - 0.0.21-7 +- Rebuilt for glibc bug#747377 + +* Wed Oct 26 2011 Soren Sandmann - 0.0.21-6 +- Add patch to confine access regions to the bounds of the drawable. + Bug 731245. + +* Mon Sep 12 2011 Hans de Goede - 0.0.21-5 +- Rebase to latest upstream release +- Enable building of the Xspice X-server and put it in its own + xorg-x11-server-Xspice package + +* Thu Aug 18 2011 Adam Jackson - 0.0.21-4 +- Rebuild for xserver 1.11 ABI + +* Wed Apr 20 2011 Hans de Goede 0.0.21-3 +- Add various bugfixes from upstream git +- Fixes VT-switching (rhbz#696711) +- Add support for old qxl device (from rhel6 branch) (rhbz#642153) + +* Mon Mar 07 2011 Dave Airlie 0.0.21-2 +- Bump to for abi rebuild + +* Sat Feb 12 2011 Soren Sandmann 0.0.21-1 +- New version number to make sure upgrading works + +* Tue Feb 08 2011 Fedora Release Engineering - 0.0.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 26 2011 Soren Sandmann 0.0.13-1 +- Update to 0.0.13 with surfaces + +* Mon Dec 06 2010 Adam Jackson 0.0.20.f14b-10 +- Rebuild for new server ABI. + +* Wed Oct 27 2010 Adam Jackson 0.0.20.f14b-8 +- Add ABI requires magic (#542742) + +* Sun Oct 17 2010 Hans de Goede 0.0.20.f14b-7 +- Fix notification bubbles under gnome not showing (backport from the + surface-fixes branch) + +* Sun Oct 17 2010 Hans de Goede 0.0.20.f14b-6 +- Fix a pointer casting bug which causes the qxl driver to trigger an + assertion in the qxl device terminating the entire virtual machine + +* Mon Oct 11 2010 Hans de Goede 0.0.20.f14b-5 +- Don't access the qxl device when our vt is not focussed, this fixes + Xorg crashing when switching to a text vc + +* Sun Oct 10 2010 Hans de Goede 0.0.20.f14b-4 +- Fix the driver not working on qxl devices with a framebuffer of 8MB + +* Sat Oct 9 2010 Hans de Goede 0.0.20.f14b-3 +- Add support for using resolutions > 1024x768 without needing an xorg.conf +- Restore textmode font when switching back to a textmode virtual console + +* Fri Oct 08 2010 Jesse Keating - 0.0.20.f14b-2.1 +- Rebuild for gcc bug 634757 + +* Tue Sep 14 2010 Soren Sandmann 0.0.20.f14b-2 +- Patch to fix it up for the new privates ABI (I had apparently been + testing with a too old X server). + +* Tue Sep 14 2010 Soren Sandmann 0.0.20.f14b-1 +- Add support for new device + +* Sat Mar 13 2010 Dave Airlie 0.0.12-2 +- fix bug in qxl with asserts + +* Sat Mar 13 2010 Dave Airlie 0.0.12-1 +- rebase to 0.0.12 release - fix some 16-bit bugs + +* Mon Jan 11 2010 Dave Airlie 0.0.9-0.1 +- Initial public release 0.0.9