Skip to content

Commit

Permalink
reintroduce xserver-xorg 1.19.6
Browse files Browse the repository at this point in the history
Vivante xf86 driver crashes when loaded by current xserver 1.20.1
Waiting for the crash to be fixed, for var-som-mx6 we can still use
previous xserver working version 1.19.6
Also, this recipes is not required for not accelerated platforms,
so we can mask it for DART-6UL and VAR-SOM-MX7.

This patch must be removed once the xf86 driver crash will be fixed.
  • Loading branch information
varigigi authored and eranmati committed Feb 24, 2019
1 parent 316ba4f commit 5e18d51
Show file tree
Hide file tree
Showing 10 changed files with 328 additions and 0 deletions.
2 changes: 2 additions & 0 deletions conf/machine/imx6ul-var-dart.conf
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,5 @@ MACHINE_EXTRA_RDEPENDS += " \
linux-firmware-bcm43430 \
brcm-patchram-plus \
"

BBMASK += "recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb"
2 changes: 2 additions & 0 deletions conf/machine/imx7-var-som.conf
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,5 @@ MACHINE_EXTRA_RDEPENDS += " \
linux-firmware-bcm43430 \
brcm-patchram-plus \
"

BBMASK += "recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb"
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
From a309323328d9d6e0bf5d9ea1d75920e53b9beef3 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 5 Jan 2018 11:58:42 +1000
Subject: [PATCH] config: fix NULL value detection for ID_INPUT being unset

Erroneous condition caused us to keep going with all devices that didn't have
ID_INPUT set.

Fixes: 5aad81445c8c3d6
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104382
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

Upstream-status: Backport
https://patchwork.freedesktop.org/patch/196090/
Affects: < 1.20.0
[Yocto # 12899]

Signed-off-by: Armin Kuster <akuser808@gmail.com>

---
config/udev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/udev.c b/config/udev.c
index e198e8609..3a73189e2 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -135,7 +135,7 @@ device_added(struct udev_device *udev_device)
#endif

value = udev_device_get_property_value(udev_device, "ID_INPUT");
- if (value && !strcmp(value, "0")) {
+ if (!value || !strcmp(value, "0")) {
LogMessageVerb(X_INFO, 10,
"config/udev: ignoring device %s without "
"property ID_INPUT set\n", path);
--
2.17.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
Discover monotonic clock using compile-time check

monotonic clock check does not work when cross-compiling.

Upstream-Status: Denied [Does not work on OpenBSD]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>



Original patch follows:

When xorg-xserver is being cross-compiled, there is currently no way
for us to detect whether the monotonic clock is available on the
target system, because we aren't able to run a test program on the host
system. Currently, in this situation, we default to not use the
monotonic clock. One problem with this situation is that the user will
be treated as idle when the date is updated.

To fix this situation, we now use a compile-time check to detect whether the
monotonic clock is available. This check can run just fine when we are
cross-compiling.

Signed-off-by: David James <davidjames at google.com>
---
configure.ac | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
index f7ab48c..26e85cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1048,19 +1048,16 @@ if ! test "x$have_clock_gettime" = xno; then
CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
fi

- AC_RUN_IFELSE([AC_LANG_SOURCE([
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <time.h>
-
-int main(int argc, char *argv[[]]) {
- struct timespec tp;
-
- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+#include <unistd.h>
+int main() {
+#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
+ #error No monotonic clock
+#endif
return 0;
- else
- return 1;
}
- ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
- [MONOTONIC_CLOCK="cross compiling"])
+]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no])

LIBS="$LIBS_SAVE"
CPPFLAGS="$CPPFLAGS_SAVE"
--
2.1.4

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
From d77cdc5e1eee26821ab98c947abea53fb7b18fe5 Mon Sep 17 00:00:00 2001
From: California Sullivan <california.l.sullivan@intel.com>
Date: Fri, 16 Mar 2018 17:23:11 -0700
Subject: [PATCH] xf86pciBus.c: use Intel ddx only for pre-gen4 hardware

Use intel ddx only on pre-gen4 hw, newer ones will fall back to modesetting
Author: Timo Aaltonen <tjaalton@debian.org>

Instead of defaulting to the Intel driver for all Intel hardware, only
default it for older hardware for which it has shown to be better for.

Others fall through to the -modesetting default.

Upstream-Status: Pending [Debian/Fedora patch
https://src.fedoraproject.org/rpms/xorg-x11-server/c/ee515e44b07e37689abf48cf2fffb41578f3bc1d]

Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
---
hw/xfree86/common/xf86pciBus.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
index e61ae0cd4..d70c99197 100644
--- a/hw/xfree86/common/xf86pciBus.c
+++ b/hw/xfree86/common/xf86pciBus.c
@@ -1173,7 +1173,23 @@ xf86VideoPtrToDriverList(struct pci_device *dev,
case 0x0bef:
/* Use fbdev/vesa driver on Oaktrail, Medfield, CDV */
break;
- default:
+ /* Default to intel only on pre-gen4 chips */
+ case 0x3577:
+ case 0x2562:
+ case 0x3582:
+ case 0x358e:
+ case 0x2572:
+ case 0x2582:
+ case 0x258a:
+ case 0x2592:
+ case 0x2772:
+ case 0x27a2:
+ case 0x27ae:
+ case 0x29b2:
+ case 0x29c2:
+ case 0x29d2:
+ case 0xa001:
+ case 0xa011:
driverList[0] = "intel";
break;
}
--
2.14.3

Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001
From: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
Date: Mon, 30 Jan 2017 16:32:06 -0600
Subject: [PATCH] Remove check for useSIGIO option

Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO
option.

As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO
and OsReleaseSIGIO.

No longer the check for useSIGIO is needed

Upstream-Status: Pending

Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
---
hw/xfree86/os-support/shared/sigio.c | 6 ------
1 file changed, 6 deletions(-)

diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
index 884a71c..be76498 100644
--- a/hw/xfree86/os-support/shared/sigio.c
+++ b/hw/xfree86/os-support/shared/sigio.c
@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
int i;
int installed = FALSE;

- if (!xf86Info.useSIGIO)
- return 0;
-
for (i = 0; i < MAX_FUNCS; i++) {
if (!xf86SigIOFuncs[i].f) {
if (xf86IsPipe(fd))
@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd)
int max;
int ret;

- if (!xf86Info.useSIGIO)
- return 0;
-
max = 0;
ret = 0;
for (i = 0; i < MAX_FUNCS; i++) {
--
2.7.4

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
From 5028ef46ff4ab0930224b71024a7349b05610d42 Mon Sep 17 00:00:00 2001
From: Stefan Agner <stefan@agner.ch>
Date: Thu, 22 Dec 2016 15:41:06 +0100
Subject: [PATCH] modesetting: Fix 16 bit depth/bpp mode

When setting DefaultDepth to 16 in the Screen section, the current
code requests a 32 bpp framebuffer, however the X-Server seems to
assumes 16 bpp.

Fixes commit 21217d02168d ("modesetting: Implement 32->24 bpp
conversion in shadow update")

Signed-off-by: Stefan Agner <stefan@agner.ch>

Upstream-Status: Submitted [1]

[1] https://lists.x.org/archives/xorg-devel/2016-December/052113.html
---
hw/xfree86/drivers/modesetting/driver.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index d7030e5..647ad83 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -930,7 +930,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
"Using 24bpp hw front buffer with 32bpp shadow\n");
defaultbpp = 32;
} else {
- ms->drmmode.kbpp = defaultbpp;
+ ms->drmmode.kbpp = 0;
}
bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb;

@@ -950,6 +950,8 @@ PreInit(ScrnInfoPtr pScrn, int flags)
return FALSE;
}
xf86PrintDepthBpp(pScrn);
+ if (!ms->drmmode.kbpp)
+ ms->drmmode.kbpp = pScrn->bitsPerPixel;

/* Process the options */
xf86CollectOptions(pScrn, NULL);
--
2.7.4

25 changes: 25 additions & 0 deletions recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
This is the revised version of files/macro_tweak.patch for
xorg-server 1.8.99.904 and newer.

Upstream-Status: Pending

Signed-off-by: Yu Ke <ke.yu@intel.com>

Index: xorg-server-1.19.6/xorg-server.m4
===================================================================
--- xorg-server-1.19.6.orig/xorg-server.m4
+++ xorg-server-1.19.6/xorg-server.m4
@@ -28,10 +28,12 @@ dnl
# Checks for the MACRO define in xorg-server.h (from the sdk). If it
# is defined, then add the given PROTO to $REQUIRED_MODULES.

+m4_pattern_allow(PKG_CONFIG_SYSROOT_DIR)
+
AC_DEFUN([XORG_DRIVER_CHECK_EXT],[
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`"
+ CFLAGS="$CFLAGS -I$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=sdkdir xorg-server`"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include "xorg-server.h"
#if !defined $1
18 changes: 18 additions & 0 deletions recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
inb/outb family for arm is only implemented on glibc
so assumption across linux is wrong

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
Index: xorg-server-1.18.0/hw/xfree86/common/compiler.h
===================================================================
--- xorg-server-1.18.0.orig/hw/xfree86/common/compiler.h
+++ xorg-server-1.18.0/hw/xfree86/common/compiler.h
@@ -758,7 +758,7 @@ inl(unsigned short port)
return xf86ReadMmio32Le((void *) ioBase, port);
}

-#elif defined(__arm__) && defined(__linux__)
+#elif defined(__arm__) && defined(__GLIBC__)

/* for Linux on ARM, we use the LIBC inx/outx routines */
/* note that the appropriate setup via "ioperm" needs to be done */
34 changes: 34 additions & 0 deletions recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require recipes-graphics/xorg-xserver/xserver-xorg.inc

SRC_URI += "file://macro_tweak.patch"
SRC_URI += "file://musl-arm-inb-outb.patch \
file://0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch \
file://0003-modesetting-Fix-16-bit-depth-bpp-mode.patch \
file://0003-Remove-check-for-useSIGIO-option.patch \
file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
file://0001-config-fix-NULL-value-detection-for-ID_INPUT-being-u.patch \
"
SRC_URI[md5sum] = "3e47777ff034a331aed2322b078694a8"
SRC_URI[sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197"

# These extensions are now integrated into the server, so declare the migration
# path for in-place upgrades.

RREPLACES_${PN} = "${PN}-extension-dri \
${PN}-extension-dri2 \
${PN}-extension-record \
${PN}-extension-extmod \
${PN}-extension-dbe \
"
RPROVIDES_${PN} = "${PN}-extension-dri \
${PN}-extension-dri2 \
${PN}-extension-record \
${PN}-extension-extmod \
${PN}-extension-dbe \
"
RCONFLICTS_${PN} = "${PN}-extension-dri \
${PN}-extension-dri2 \
${PN}-extension-record \
${PN}-extension-extmod \
${PN}-extension-dbe \
"

0 comments on commit 5e18d51

Please sign in to comment.