1
0

- Update to version 1.18.0

- refreshed N_zap_warning_xserver.diff,
    N_Force-swcursor-for-KMS-drivers-without-hw-cursor-sup.patch
  - supersedes u_fbdevhw.diff, 
    U_linux-Add-linux_parse_vt_settings-and-linux_get_keep.patch,
    U_linux-Add-a-may_fail-paramter-to-linux_parse_vt_sett.patch,
    U_systemd-logind-Only-use-systemd-logind-integration-t.patch

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=592
This commit is contained in:
Stefan Dirsch 2015-11-10 14:31:30 +00:00 committed by Git OBS Bridge
parent 583d3a6724
commit 220bffcd27
11 changed files with 23 additions and 474 deletions

View File

@ -4,26 +4,17 @@ Date: Mon, 16 Feb 2015 16:55:04 +0100
Subject: [PATCH] Force swcursor for KMS drivers without hw cursor support
hwcursor still considered broken on cirrus KMS (bnc#864141, bnc#866152)
---
hw/xfree86/drivers/modesetting/driver.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index d52517d..e1af7d4 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -764,9 +764,8 @@ PreInit(ScrnInfoPtr pScrn, int flags)
--- xorg-server-1.18.0.orig/hw/xfree86/drivers/modesetting/driver.c 2015-11-10 14:24:35.978379000 +0100
+++ xorg-server-1.18.0/hw/xfree86/drivers/modesetting/driver.c 2015-11-10 14:58:55.846459000 +0100
@@ -855,9 +855,8 @@ PreInit(ScrnInfoPtr pScrn, int flags)
if (!xf86SetDefaultVisual(pScrn, -1))
return FALSE;
- if (xf86ReturnOptValBool(ms->Options, OPTION_SW_CURSOR, FALSE)) {
- if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_SW_CURSOR, FALSE)) {
- ms->drmmode.sw_cursor = TRUE;
- }
+ /* hw cursor still considered broken on cirrus */
+ ms->drmmode.sw_cursor = xf86ReturnOptValBool(ms->Options, OPTION_SW_CURSOR, TRUE);
+ ms->drmmode.sw_cursor = TRUE;
ms->cursor_width = 64;
ms->cursor_height = 64;
--
1.8.4.5

View File

@ -42,7 +42,7 @@ Index: xorg-server-1.12.1/hw/xfree86/common/xf86Events.c
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Events.c
+++ xorg-server-1.12.1/hw/xfree86/common/xf86Events.c
@@ -182,13 +182,25 @@ xf86ProcessActionEvent(ActionEvent actio
DebugF("ProcessActionEvent(%d,%x)\n", (int) action, arg);
DebugF("ProcessActionEvent(%d,%p)\n", (int) action, arg);
switch (action) {
case ACTION_TERMINATE:
- if (!xf86Info.dontZap) {

View File

@ -1,114 +0,0 @@
From 81bcada14e339fe2a2fb3f3a040566d94dc20bad Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Wed, 13 May 2015 13:17:09 +0200
Subject: [PATCH] linux: Add a may_fail paramter to linux_parse_vt_settings
linux_parse_vt_settings() was split out of xf86OpenConsole so that it can
be called earlier during systemd-logind init, but it is possible to run
the xserver in such a way that xf86OpenConsole() is never used.
The FatalError calls in linux_parse_vt_settings() may stop the Xorg xserver
from working when e.g. no /dev/tty0 is present in such a setup.
This commit adds a may_fail parameter to linux_parse_vt_settings() which
can be used to make linux_parse_vt_settings() fail silenty with an error
return in this case, rather then calling FatalError().
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
---
hw/xfree86/os-support/linux/linux.h | 2 +-
hw/xfree86/os-support/linux/lnx_init.c | 29 +++++++++++++++++++++--------
2 files changed, 22 insertions(+), 9 deletions(-)
--- a/hw/xfree86/os-support/linux/linux.h
+++ b/hw/xfree86/os-support/linux/linux.h
@@ -26,7 +26,7 @@
#ifndef XF86_LINUX_H
#define XF86_LINUX_H
-void linux_parse_vt_settings(void);
+int linux_parse_vt_settings(int may_fail);
int linux_get_keeptty(void);
#endif
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -87,8 +87,8 @@ switch_to(int vt, const char *from, Bool
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
-void
-linux_parse_vt_settings(void)
+int
+linux_parse_vt_settings(int may_fail)
{
int i, fd = -1, ret, current_vt = -1;
struct vt_stat vts;
@@ -100,7 +100,7 @@ linux_parse_vt_settings(void)
static int vt_settings_parsed = 0;
if (vt_settings_parsed)
- return;
+ return 1;
/*
* setup the virtual terminal manager
@@ -117,24 +117,36 @@ linux_parse_vt_settings(void)
i++;
}
- if (fd < 0)
+ if (fd < 0) {
+ if (may_fail)
+ return 0;
FatalError("parse_vt_settings: Cannot open /dev/tty0 (%s)\n",
strerror(errno));
+ }
if (xf86Info.ShareVTs) {
SYSCALL(ret = ioctl(fd, VT_GETSTATE, &vts));
- if (ret < 0)
+ if (ret < 0) {
+ if (may_fail)
+ return 0;
FatalError("parse_vt_settings: Cannot find the current"
" VT (%s)\n", strerror(errno));
+ }
xf86Info.vtno = vts.v_active;
}
else {
SYSCALL(ret = ioctl(fd, VT_OPENQRY, &xf86Info.vtno));
- if (ret < 0)
+ if (ret < 0) {
+ if (may_fail)
+ return 0;
FatalError("parse_vt_settings: Cannot find a free VT: "
"%s\n", strerror(errno));
- if (xf86Info.vtno == -1)
+ }
+ if (xf86Info.vtno == -1) {
+ if (may_fail)
+ return 0;
FatalError("parse_vt_settings: Cannot find a free VT\n");
+ }
}
close(fd);
}
@@ -158,6 +170,7 @@ linux_parse_vt_settings(void)
}
vt_settings_parsed = 1;
+ return 1;
}
int
@@ -175,7 +188,7 @@ xf86OpenConsole(void)
const char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
if (serverGeneration == 1) {
- linux_parse_vt_settings();
+ linux_parse_vt_settings(FALSE);
if (!KeepTty) {
pid_t ppid = getppid();

View File

@ -1,229 +0,0 @@
From 1dba5a0b194653b0effb01a918bd7338b0c6bcb9 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Wed, 21 Jan 2015 09:31:39 +0100
Subject: [PATCH] linux: Add linux_parse_vt_settings and linux_get_keeptty
helpers
systemd-logind integration does not work when starting X on a new tty, as
that detaches X from the current session and after hat systemd-logind revokes
all rights on any already open fds and refuses to open new fds for X.
This means that currently e.g. "startx -- vt7" breaks, and breaks badly,
requiring ssh access to the system to kill X.
The fix for this is easy, we must not use systemd-logind integration when
not using KeepTty, or iow we may only use systemd-logind integration together
with KeepTty.
But the final KeepTty value is not known until the code to chose which vtno to
run on has been called, which currently happens after intializing
systemd-logind.
This commit is step 1 in fixing the "startx -- vt7" breakage, it factors out
the linux xf86OpenConsole bits which set xf86Info.vtno and keepTty so that
these can be called earlier. Calling this earlier is safe as this code has
no side effects other than setting xf86Info.vtno and keepTty.
Note this basically only moves a large chunk of xf86OpenConsole() into
linux_parse_vt_settings() without changing a single line of it, this is
hard to see in the diff because the identation level has changed.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
---
hw/xfree86/os-support/linux/linux.h | 32 ++++++++
hw/xfree86/os-support/linux/lnx_init.c | 126 +++++++++++++++++++--------------
2 files changed, 107 insertions(+), 51 deletions(-)
create mode 100644 hw/xfree86/os-support/linux/linux.h
--- /dev/null
+++ b/hw/xfree86/os-support/linux/linux.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright © 2015 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Hans de Goede <hdegoede@redhat.com>
+ */
+
+#ifndef XF86_LINUX_H
+#define XF86_LINUX_H
+
+void linux_parse_vt_settings(void);
+int linux_get_keeptty(void);
+
+#endif
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -31,6 +31,7 @@
#include <X11/Xmd.h>
#include "compiler.h"
+#include "linux.h"
#include "xf86.h"
#include "xf86Priv.h"
@@ -87,71 +88,94 @@ switch_to(int vt, const char *from, Bool
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
void
-xf86OpenConsole(void)
+linux_parse_vt_settings(void)
{
int i, fd = -1, ret, current_vt = -1;
- struct vt_mode VT;
struct vt_stat vts;
struct stat st;
MessageType from = X_PROBED;
const char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL };
- const char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
- if (serverGeneration == 1) {
- /*
- * setup the virtual terminal manager
- */
- if (xf86Info.vtno != -1) {
- from = X_CMDLINE;
- }
- else {
+ /* Only do this once */
+ static int vt_settings_parsed = 0;
- i = 0;
- while (tty0[i] != NULL) {
- if ((fd = open(tty0[i], O_WRONLY, 0)) >= 0)
- break;
- i++;
- }
-
- if (fd < 0)
- FatalError("xf86OpenConsole: Cannot open /dev/tty0 (%s)\n",
- strerror(errno));
-
- if (xf86Info.ShareVTs) {
- SYSCALL(ret = ioctl(fd, VT_GETSTATE, &vts));
- if (ret < 0)
- FatalError("xf86OpenConsole: Cannot find the current"
- " VT (%s)\n", strerror(errno));
- xf86Info.vtno = vts.v_active;
- }
- else {
- SYSCALL(ret = ioctl(fd, VT_OPENQRY, &xf86Info.vtno));
- if (ret < 0)
- FatalError("xf86OpenConsole: Cannot find a free VT: "
- "%s\n", strerror(errno));
- if (xf86Info.vtno == -1)
- FatalError("xf86OpenConsole: Cannot find a free VT\n");
- }
- close(fd);
- }
+ if (vt_settings_parsed)
+ return;
- xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
+ /*
+ * setup the virtual terminal manager
+ */
+ if (xf86Info.vtno != -1) {
+ from = X_CMDLINE;
+ }
+ else {
- /* Some of stdin / stdout / stderr maybe redirected to a file */
- for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) {
- ret = fstat(i, &st);
- if (ret == 0 && S_ISCHR(st.st_mode) && major(st.st_rdev) == 4) {
- current_vt = minor(st.st_rdev);
+ i = 0;
+ while (tty0[i] != NULL) {
+ if ((fd = open(tty0[i], O_WRONLY, 0)) >= 0)
break;
- }
+ i++;
}
- if (!KeepTty && current_vt == xf86Info.vtno) {
- xf86Msg(X_PROBED,
- "controlling tty is VT number %d, auto-enabling KeepTty\n",
- current_vt);
- KeepTty = TRUE;
+ if (fd < 0)
+ FatalError("parse_vt_settings: Cannot open /dev/tty0 (%s)\n",
+ strerror(errno));
+
+ if (xf86Info.ShareVTs) {
+ SYSCALL(ret = ioctl(fd, VT_GETSTATE, &vts));
+ if (ret < 0)
+ FatalError("parse_vt_settings: Cannot find the current"
+ " VT (%s)\n", strerror(errno));
+ xf86Info.vtno = vts.v_active;
}
+ else {
+ SYSCALL(ret = ioctl(fd, VT_OPENQRY, &xf86Info.vtno));
+ if (ret < 0)
+ FatalError("parse_vt_settings: Cannot find a free VT: "
+ "%s\n", strerror(errno));
+ if (xf86Info.vtno == -1)
+ FatalError("parse_vt_settings: Cannot find a free VT\n");
+ }
+ close(fd);
+ }
+
+ xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
+
+ /* Some of stdin / stdout / stderr maybe redirected to a file */
+ for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) {
+ ret = fstat(i, &st);
+ if (ret == 0 && S_ISCHR(st.st_mode) && major(st.st_rdev) == 4) {
+ current_vt = minor(st.st_rdev);
+ break;
+ }
+ }
+
+ if (!KeepTty && current_vt == xf86Info.vtno) {
+ xf86Msg(X_PROBED,
+ "controlling tty is VT number %d, auto-enabling KeepTty\n",
+ current_vt);
+ KeepTty = TRUE;
+ }
+
+ vt_settings_parsed = 1;
+}
+
+int
+linux_get_keeptty(void)
+{
+ return KeepTty;
+}
+
+void
+xf86OpenConsole(void)
+{
+ int i, ret;
+ struct vt_stat vts;
+ struct vt_mode VT;
+ const char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
+
+ if (serverGeneration == 1) {
+ linux_parse_vt_settings();
if (!KeepTty) {
pid_t ppid = getppid();

View File

@ -1,64 +0,0 @@
From c88a325899381d1133e63e6c33c29db079e20a87 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Wed, 21 Jan 2015 10:13:20 +0100
Subject: [PATCH] systemd-logind: Only use systemd-logind integration together
with keeptty
systemd-logind integration does not work when starting X on a new tty, as
that detaches X from the current session and after hat systemd-logind revokes
all rights any already open fds and refuses to open new fds for X.
This means that currently e.g. "startx -- vt7" breaks, and breaks badly,
requiring ssh access to the system to kill X.
The fix for this is easy, we must not use systemd-logind integration when
not using KeepTty, or iow we may only use systemd-logind integration together
with KeepTty.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Aaron Plattner <aplattner@nvidia.com>
---
hw/xfree86/man/Xorg.man | 6 +++---
hw/xfree86/os-support/linux/systemd-logind.c | 8 ++++++++
2 files changed, 11 insertions(+), 3 deletions(-)
--- a/hw/xfree86/man/Xorg.man
+++ b/hw/xfree86/man/Xorg.man
@@ -271,9 +271,9 @@ is ignored if
is anything other than \(oqPCI\(cq.
.TP 8
.B \-keeptty
-Prevent the server from detaching its initial controlling terminal.
-This option is only useful when debugging the server. Not all platforms
-support (or can use) this option.
+Prevent the server from detaching its initial controlling terminal. If you
+want to use systemd-logind integration you must specify this option.
+Not all platforms support (or can use) this option.
.TP 8
.BI \-keyboard " keyboard-name"
Use the xorg.conf(__filemansuffix__) file
--- a/hw/xfree86/os-support/linux/systemd-logind.c
+++ b/hw/xfree86/os-support/linux/systemd-logind.c
@@ -34,6 +34,7 @@
#include "os.h"
#include "dbus-core.h"
+#include "linux.h"
#include "xf86.h"
#include "xf86platformBus.h"
#include "xf86Xinput.h"
@@ -596,6 +597,13 @@ static struct dbus_core_hook core_hook =
int
systemd_logind_init(void)
{
+ if (linux_parse_vt_settings(TRUE) && !linux_get_keeptty()) {
+ LogMessage(X_INFO,
+ "systemd-logind: logind integration requires -keeptty and "
+ "-keeptty was not provided, disabling logind integration\n");
+ return 1;
+ }
+
return dbus_core_add_hook(&core_hook);
}

View File

@ -1,38 +0,0 @@
From: Egbert Eich <eich@suse.de>
Make error message about FBIOBLANK missing less prominent but more telling
The FBIOBLANK ioctl is not present in some fbdev kernel drivers. This
however is not a huge problem. This don't mark it as error in the log
instead give more information on the possible cause.
Index: hw/xfree86/fbdevhw/fbdevhw.c
===================================================================
--- hw/xfree86/fbdevhw/fbdevhw.c.orig
+++ hw/xfree86/fbdevhw/fbdevhw.c
@@ -858,9 +858,10 @@ fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mo
return;
}
+ /* Novell Bug #146462 */
if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) fbmode))
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "FBIOBLANK: %s\n", strerror(errno));
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "FBIOBLANK: %s (Screen blanking not supported by vesafb of Linux Kernel)\n", strerror(errno));
}
Bool
@@ -875,9 +876,10 @@ fbdevHWSaveScreen(ScreenPtr pScreen, int
unblank = xf86IsUnblank(mode);
+ /* Novell Bug #146462 */
if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) (1 - unblank))) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "FBIOBLANK: %s\n", strerror(errno));
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "FBIOBLANK: %s (Screen blanking not supported by vesafb of Linux Kernel)\n", strerror(errno));
return FALSE;
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c4b45c116a812a996eb432d8508cf26c2ec8c3916ff2a50781796882f8d6457
size 5791384

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:195670819695d9cedd8dde95fbe069be0d0f488a77797a2d409f9f702daf312e
size 5818703

View File

@ -1,4 +1,4 @@
Provides: X11_ABI_XINPUT = 21.0
Provides: X11_ABI_VIDEODRV = 19.0
Provides: X11_ABI_XINPUT = 22.1
Provides: X11_ABI_VIDEODRV = 20.0
Provides: X11_ABI_ANSIC = 0.4
Provides: X11_ABI_EXTENSION = 9.0

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Tue Nov 10 13:42:47 UTC 2015 - sndirsch@suse.com
- Update to version 1.18.0
- refreshed N_zap_warning_xserver.diff,
N_Force-swcursor-for-KMS-drivers-without-hw-cursor-sup.patch
- supersedes u_fbdevhw.diff,
U_linux-Add-linux_parse_vt_settings-and-linux_get_keep.patch,
U_linux-Add-a-may_fail-paramter-to-linux_parse_vt_sett.patch,
U_systemd-logind-Only-use-systemd-logind-integration-t.patch
-------------------------------------------------------------------
Wed Oct 28 17:32:07 UTC 2015 - sndirsch@suse.com

View File

@ -26,7 +26,7 @@
Name: xorg-x11-server
%define dirsuffix 1.17.4
%define dirsuffix 1.18.0
Summary: X
License: MIT
@ -164,7 +164,6 @@ Patch3: N_driver-autoconfig.diff
Patch4: N_fix_fglrx_screendepth_issue.patch
Patch6: N_fix-dpi-values.diff
Patch100: u_fbdevhw.diff
Patch101: u_confine_to_shape.diff
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
Patch102: u_x86emu-include-order.patch
@ -181,9 +180,6 @@ Patch117: xorg-x11-server-byte-order.patch
Patch160: u_vesa-Add-VBEDPMSGetCapabilities-VBEDPMSGet.patch
Patch201: U_linux-Add-linux_parse_vt_settings-and-linux_get_keep.patch
Patch202: U_linux-Add-a-may_fail-paramter-to-linux_parse_vt_sett.patch
Patch203: U_systemd-logind-Only-use-systemd-logind-integration-t.patch
Patch204: U_systemd-logind-do-not-rely-on-directed-signals.patch
Patch1000: n_xserver-optimus-autoconfig-hack.patch
@ -262,7 +258,6 @@ cp %{SOURCE90} .
%patch4 -p0
%patch6 -p0
#
%patch100
%patch101
%patch102 -p1
%patch104 -p1
@ -278,9 +273,6 @@ cp %{SOURCE90} .
%patch160 -p1
%patch201 -p1
%patch202 -p1
%patch203 -p1
%patch204 -p1
%patch1000 -p1