server 1.12.99.902

This commit is contained in:
Dave Airlie 2012-07-18 03:35:25 -04:00
parent 7c84331bc6
commit 598252427e
8 changed files with 17 additions and 400 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@ xorg-server-1.9.1.tar.bz2
/xorg-server-1.12.1.tar.bz2 /xorg-server-1.12.1.tar.bz2
/xorg-server-1.12.2.tar.bz2 /xorg-server-1.12.2.tar.bz2
/xorg-server-1.12.3.tar.bz2 /xorg-server-1.12.3.tar.bz2
/xorg-server-20120717.tar.xz

View File

@ -1 +1 @@
d53235af85d50774c68347720ce132daf9a5bc49 77de2994774e7be24a0bad521180628feb1027c6

View File

@ -1 +1 @@
65a53b11bc01dcc97ee9b201dc620c32 xorg-server-1.12.3.tar.bz2 961bb1ecade0ade9a4f0c04be063142c xorg-server-20120717.tar.xz

View File

@ -9,7 +9,7 @@
# check out the master branch, pull, cherry-pick, and push. FIXME describe # check out the master branch, pull, cherry-pick, and push. FIXME describe
# rebasing, add convenience 'make' targets maybe. # rebasing, add convenience 'make' targets maybe.
#define gitdate 20120215 %define gitdate 20120717
%define stable_abi 1 %define stable_abi 1
%if !0%{?gitdate} || %{stable_abi} %if !0%{?gitdate} || %{stable_abi}
@ -19,9 +19,9 @@
%define ansic_major 0 %define ansic_major 0
%define ansic_minor 4 %define ansic_minor 4
%define videodrv_major 12 %define videodrv_major 13
%define videodrv_minor 0 %define videodrv_minor 0
%define xinput_major 16 %define xinput_major 18
%define xinput_minor 0 %define xinput_minor 0
%define extension_major 6 %define extension_major 6
%define extension_minor 0 %define extension_minor 0
@ -47,7 +47,7 @@
Summary: X.Org X11 X server Summary: X.Org X11 X server
Name: xorg-x11-server Name: xorg-x11-server
Version: 1.12.3 Version: 1.12.99.902
Release: 1%{?gitdate:.%{gitdate}}%{dist} Release: 1%{?gitdate:.%{gitdate}}%{dist}
URL: http://www.x.org URL: http://www.x.org
License: MIT License: MIT
@ -91,7 +91,6 @@ Patch5002: xserver-1.4.99-ssh-isnt-local.patch
Patch6011: xserver-1.6.0-less-acpi-brokenness.patch Patch6011: xserver-1.6.0-less-acpi-brokenness.patch
# ajax needs to upstream this # ajax needs to upstream this
Patch6027: xserver-1.6.0-displayfd.patch
Patch6030: xserver-1.6.99-right-of.patch Patch6030: xserver-1.6.99-right-of.patch
#Patch6044: xserver-1.6.99-hush-prerelease-warning.patch #Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
@ -99,10 +98,6 @@ Patch6030: xserver-1.6.99-right-of.patch
# RedHat/Fedora-specific patch # RedHat/Fedora-specific patch
Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch
# backport pci slot claiming fix for kms drivers
Patch7015: xserver-fix-pci-slot-claims.patch
# backport modesetting fallback driver
Patch7016: xserver-1.12-modesetting-fallback.patch
# needed when building without xorg (aka s390x) # needed when building without xorg (aka s390x)
Patch7017: xserver-1.12.2-xorg-touch-test.patch Patch7017: xserver-1.12.2-xorg-touch-test.patch
@ -495,11 +490,6 @@ rm -rf $RPM_BUILD_ROOT
%dir %{_libdir}/xorg/modules/drivers %dir %{_libdir}/xorg/modules/drivers
%dir %{_libdir}/xorg/modules/extensions %dir %{_libdir}/xorg/modules/extensions
%{_libdir}/xorg/modules/extensions/libglx.so %{_libdir}/xorg/modules/extensions/libglx.so
%{_libdir}/xorg/modules/extensions/libdri.so
%{_libdir}/xorg/modules/extensions/libdri2.so
%{_libdir}/xorg/modules/extensions/libdbe.so
%{_libdir}/xorg/modules/extensions/libextmod.so
%{_libdir}/xorg/modules/extensions/librecord.so
%dir %{_libdir}/xorg/modules/input %dir %{_libdir}/xorg/modules/input
%{_libdir}/xorg/modules/libfbdevhw.so %{_libdir}/xorg/modules/libfbdevhw.so
%{_libdir}/xorg/modules/libexa.so %{_libdir}/xorg/modules/libexa.so
@ -581,6 +571,9 @@ rm -rf $RPM_BUILD_ROOT
%{xserver_source_dir} %{xserver_source_dir}
%changelog %changelog
* Wed Jul 18 2012 Dave Airlie <airlied@redhat.com> 1.12.99.902-1
- server 1.12.99.902
* Mon Jul 09 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.12.3-1 * Mon Jul 09 2012 Peter Hutterer <peter.hutterer@redhat.com> 1.12.3-1
- server 1.12.3 - server 1.12.3

View File

@ -1,32 +0,0 @@
From a2a02882ab65133e6c0c69db1f38bc20b406236f Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Sun, 6 May 2012 17:35:34 +0100
Subject: [PATCH] xfree86: add modesetting driver to fallback list on Linux
Add the modesetting driver to the fallback list on Linux, after vesa
before fbdev.
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
hw/xfree86/common/xf86AutoConfig.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
index 43c746b..d0eb0af 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -270,6 +270,10 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
#endif
}
+#if defined(__linux__)
+ matches[i++] = xnfstrdup("modesetting");
+#endif
+
#if !defined(sun)
/* Fallback to platform default frame buffer driver */
if (i < (nmatches - 1)) {
--
1.7.7.6

View File

@ -1,14 +1,15 @@
From ed61aafc4e2b2856955528ba8142075ce53d6dd9 Mon Sep 17 00:00:00 2001 From cb26473121e35fed89050f1514bb37aa48b452ad Mon Sep 17 00:00:00 2001
From: Dan Horák <dan@danny.cz> From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Fri, 15 Jun 2012 06:25:58 -0400 Date: Fri, 15 Jun 2012 06:25:58 -0400
Subject: [PATCH] build the touch test only when building Xorg Subject: [PATCH] build the touch test only when building Xorg
Signed-off-by: Fedora X Ninjas <x@fedoraproject.org>
--- ---
test/Makefile.am | 4 ++-- test/Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/Makefile.am b/test/Makefile.am diff --git a/test/Makefile.am b/test/Makefile.am
index 32be00d..93a102a 100644 index aa018c9..b323a40 100644
--- a/test/Makefile.am --- a/test/Makefile.am
+++ b/test/Makefile.am +++ b/test/Makefile.am
@@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
@ -20,11 +21,11 @@ index 32be00d..93a102a 100644
# Tests that require at least some DDX functions in order to fully link # Tests that require at least some DDX functions in order to fully link
# For now, requires xf86 ddx, could be adjusted to use another # For now, requires xf86 ddx, could be adjusted to use another
SUBDIRS += xi2 SUBDIRS += xi2
-noinst_PROGRAMS += xkb input xtest misc fixes xfree86 -noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging
+noinst_PROGRAMS += xkb input xtest misc fixes xfree86 touch +noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch
endif endif
check_LTLIBRARIES = libxservertest.la check_LTLIBRARIES = libxservertest.la
-- --
1.7.10.2 1.7.10.4

View File

@ -1,203 +0,0 @@
From 247319fe3750671cd962df2c12548affb0351775 Mon Sep 17 00:00:00 2001
From: Chase Douglas <chase.douglas@canonical.com>
Date: Wed, 4 Apr 2012 15:29:42 -0700
Subject: [PATCH 3/7] os: Add -displayfd option
This option specifies a file descriptor in the launching process. X
will scan for an available display number and write that number back to
the launching process, at the same time as SIGUSR1 generation. This
means display managers don't need to guess at available display numbers.
As a consequence, if X fails to start when using -displayfd, it's not
because the display was in use, so there's no point in retrying the X
launch on a higher display number.
Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Tested-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
dix/globals.c | 1 +
include/opaque.h | 1 +
man/Xserver.man | 7 ++++++
os/connection.c | 68 ++++++++++++++++++++++++++++++++++++++----------------
os/utils.c | 9 ++++++++
5 files changed, 66 insertions(+), 20 deletions(-)
diff --git a/dix/globals.c b/dix/globals.c
index c0cae15..db113ca 100644
--- a/dix/globals.c
+++ b/dix/globals.c
@@ -128,6 +128,7 @@ int defaultColorVisualClass = -1;
int monitorResolution = 0;
char *display;
+int displayfd;
char *ConnectionInfo;
CARD32 TimeOutValue = DEFAULT_TIMEOUT * MILLI_PER_SECOND;
diff --git a/include/opaque.h b/include/opaque.h
index 9ca408a..b76ab6e 100644
--- a/include/opaque.h
+++ b/include/opaque.h
@@ -50,6 +50,7 @@ extern _X_EXPORT int ScreenSaverAllowExposures;
extern _X_EXPORT int defaultScreenSaverBlanking;
extern _X_EXPORT int defaultScreenSaverAllowExposures;
extern _X_EXPORT char *display;
+extern _X_EXPORT int displayfd;
extern _X_EXPORT int defaultBackingStore;
extern _X_EXPORT Bool disableBackingStore;
diff --git a/man/Xserver.man b/man/Xserver.man
index 0cd9b94..8d243d6 100644
--- a/man/Xserver.man
+++ b/man/Xserver.man
@@ -127,6 +127,13 @@ Not obeyed by all servers.
.B \-core
causes the server to generate a core dump on fatal errors.
.TP 8
+.B \-displayfd \fIfd\fP
+specifies a file descriptor in the launching process. Rather than specify
+a display number, the X server will attempt to listen on successively higher
+display numbers, and upon finding a free one, will write the port number back
+on this file descriptor as a newline-terminated string. The \-pn option is
+ignored when using \-displayfd.
+.TP 8
.B \-deferglyphs \fIwhichfonts\fP
specifies the types of fonts for which the server should attempt to use
deferred glyph loading. \fIwhichfonts\fP can be all (all fonts),
diff --git a/os/connection.c b/os/connection.c
index 1099752..039942f 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -142,6 +142,7 @@ Bool AnyClientsWriteBlocked; /* true if some client blocked on write */
static Bool RunFromSmartParent; /* send SIGUSR1 to parent process */
Bool RunFromSigStopParent; /* send SIGSTOP to our own process; Upstart (or
equivalent) will send SIGCONT back. */
+static char dynamic_display[7]; /* display name */
Bool PartialNetwork; /* continue even if unable to bind all addrs */
static Pid_t ParentProcess;
@@ -350,6 +351,10 @@ void
NotifyParentProcess(void)
{
#if !defined(WIN32)
+ if (dynamic_display[0]) {
+ write(displayfd, dynamic_display, strlen(dynamic_display));
+ close(displayfd);
+ }
if (RunFromSmartParent) {
if (ParentProcess > 1) {
kill(ParentProcess, SIGUSR1);
@@ -360,6 +365,18 @@ NotifyParentProcess(void)
#endif
}
+static Bool
+TryCreateSocket(int num, int *partial)
+{
+ char port[20];
+
+ snprintf(port, sizeof(port), "%d", num);
+
+ return (_XSERVTransMakeAllCOTSServerListeners(port, partial,
+ &ListenTransCount,
+ &ListenTransConns) >= 0);
+}
+
/*****************
* CreateWellKnownSockets
* At initialization, create the sockets to listen on for new clients.
@@ -370,7 +387,6 @@ CreateWellKnownSockets(void)
{
int i;
int partial;
- char port[20];
FD_ZERO(&AllSockets);
FD_ZERO(&AllClients);
@@ -386,29 +402,41 @@ CreateWellKnownSockets(void)
FD_ZERO(&WellKnownConnections);
- snprintf(port, sizeof(port), "%d", atoi(display));
-
- if ((_XSERVTransMakeAllCOTSServerListeners(port, &partial,
- &ListenTransCount,
- &ListenTransConns) >= 0) &&
- (ListenTransCount >= 1)) {
- if (!PartialNetwork && partial) {
- FatalError("Failed to establish all listening sockets");
+ /* display is initialized to "0" by main(). It is then set to the display
+ * number if specified on the command line, or to NULL when the -displayfd
+ * option is used. */
+ if (display) {
+ if (TryCreateSocket(atoi(display), &partial) &&
+ ListenTransCount >= 1)
+ if (!PartialNetwork && partial)
+ FatalError ("Failed to establish all listening sockets");
+ }
+ else { /* -displayfd */
+ Bool found = 0;
+ for (i = 0; i < 65535 - X_TCP_PORT; i++) {
+ if (TryCreateSocket(i, &partial) && !partial) {
+ found = 1;
+ break;
+ }
+ else
+ CloseWellKnownConnections();
}
- else {
- ListenTransFds = malloc(ListenTransCount * sizeof(int));
+ if (!found)
+ FatalError("Failed to find a socket to listen on");
+ snprintf(dynamic_display, sizeof(dynamic_display), "%d", i);
+ display = dynamic_display;
+ }
- for (i = 0; i < ListenTransCount; i++) {
- int fd = _XSERVTransGetConnectionNumber(ListenTransConns[i]);
+ ListenTransFds = malloc(ListenTransCount * sizeof (int));
- ListenTransFds[i] = fd;
- FD_SET(fd, &WellKnownConnections);
+ for (i = 0; i < ListenTransCount; i++) {
+ int fd = _XSERVTransGetConnectionNumber(ListenTransConns[i]);
- if (!_XSERVTransIsLocal(ListenTransConns[i])) {
- DefineSelf(fd);
- }
- }
- }
+ ListenTransFds[i] = fd;
+ FD_SET(fd, &WellKnownConnections);
+
+ if (!_XSERVTransIsLocal(ListenTransConns[i]))
+ DefineSelf (fd);
}
if (!XFD_ANYSET(&WellKnownConnections))
diff --git a/os/utils.c b/os/utils.c
index 30592d2..3a1ef93 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -659,6 +659,15 @@ ProcessCommandLine(int argc, char *argv[])
else
UseMsg();
}
+ else if (strcmp(argv[i], "-displayfd") == 0) {
+ if (++i < argc) {
+ displayfd = atoi(argv[i]);
+ display = NULL;
+ nolock = TRUE;
+ }
+ else
+ UseMsg();
+ }
#ifdef DPMSExtension
else if (strcmp(argv[i], "dpms") == 0)
/* ignored for compatibility */ ;
--
1.7.10.1

View File

@ -1,143 +0,0 @@
From 39f73e813f7d404498629f6104a9003d092af28d Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Tue, 8 May 2012 13:01:12 +0100
Subject: [PATCH] xf86/pci: fix slot claiming counting.
Currently if we claim a slot for a PCI driver, we never let it go properly,
this prevents the fallback probe from reusing the slot, even though it
isn't claimed for that pci slot.
So if you set the modesetting driver to point at a specific kms device,
that isn't a PCI device (i.e. USB dongle), then the modesetting driver
loads, the pci probe tries to bind the config slot to the primary PCI
device, however we then check the kms device bus id to discover it
isn't valid. However we don't remove the claim on the slot. Next the
old probe function is called and there is no slots to claim.
This patch fixes that and converts the pciSlotClaimed boolean into
a counter, and changes the unclaim api to take a device pointer
to remove from the entity.
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
hw/xfree86/common/xf86.h | 4 ++--
hw/xfree86/common/xf86Bus.c | 20 ++++++++++++++++++++
hw/xfree86/common/xf86Priv.h | 1 +
hw/xfree86/common/xf86pciBus.c | 10 ++++++----
4 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
index fc4c34e..e6d41d6 100644
--- a/hw/xfree86/common/xf86.h
+++ b/hw/xfree86/common/xf86.h
@@ -97,12 +97,12 @@ extern _X_EXPORT Bool VTSwitchEnabled; /* kbd driver */
/* PCI related */
#ifdef XSERVER_LIBPCIACCESS
#include <pciaccess.h>
-extern _X_EXPORT Bool pciSlotClaimed;
+extern _X_EXPORT int pciSlotClaimed;
extern _X_EXPORT Bool xf86CheckPciSlot(const struct pci_device *);
extern _X_EXPORT int xf86ClaimPciSlot(struct pci_device *, DriverPtr drvp,
int chipset, GDevPtr dev, Bool active);
-extern _X_EXPORT void xf86UnclaimPciSlot(struct pci_device *);
+extern _X_EXPORT void xf86UnclaimPciSlot(struct pci_device *, GDevPtr dev);
extern _X_EXPORT Bool xf86ParsePciBusString(const char *busID, int *bus,
int *device, int *func);
extern _X_EXPORT Bool xf86ComparePciBusString(const char *busID, int bus,
diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
index b176e8c..b876434 100644
--- a/hw/xfree86/common/xf86Bus.c
+++ b/hw/xfree86/common/xf86Bus.c
@@ -420,6 +420,26 @@ xf86AddDevToEntity(int entityIndex, GDevPtr dev)
dev->claimed = TRUE;
}
+
+void
+xf86RemoveDevFromEntity(int entityIndex, GDevPtr dev)
+{
+ EntityPtr pEnt;
+ int i, j;
+ if (entityIndex >= xf86NumEntities)
+ return;
+
+ pEnt = xf86Entities[entityIndex];
+ for (i = 0; i < pEnt->numInstances; i++) {
+ if (pEnt->devices[i] == dev) {
+ for (j = i; j < pEnt->numInstances - 1; j++)
+ pEnt->devices[j] = pEnt->devices[j + 1];
+ break;
+ }
+ }
+ pEnt->numInstances--;
+ dev->claimed = FALSE;
+}
/*
* xf86GetEntityInfo() -- This function hands information from the
* EntityRec struct to the drivers. The EntityRec structure itself
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 8d9cb55..6c5efea 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -116,6 +116,7 @@ extern _X_EXPORT void xf86AccessLeave(void);
extern _X_EXPORT void xf86PostProbe(void);
extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
+extern _X_EXPORT void xf86RemoveDevFromEntity(int entityIndex, GDevPtr dev);
/* xf86Config.c */
diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
index e52f1da..d758260 100644
--- a/hw/xfree86/common/xf86pciBus.c
+++ b/hw/xfree86/common/xf86pciBus.c
@@ -52,7 +52,7 @@
#define PCI_VENDOR_GENERIC 0x00FF
/* Bus-specific globals */
-Bool pciSlotClaimed = FALSE;
+int pciSlotClaimed = 0;
#define PCIINFOCLASSES(c) \
( (((c) & 0x00ff0000) == (PCI_CLASS_PREHISTORIC << 16)) \
@@ -223,7 +223,7 @@ xf86ClaimPciSlot(struct pci_device *d, DriverPtr drvp,
p->inUse = FALSE;
if (dev)
xf86AddDevToEntity(num, dev);
- pciSlotClaimed = TRUE;
+ pciSlotClaimed++;
return num;
}
@@ -235,7 +235,7 @@ xf86ClaimPciSlot(struct pci_device *d, DriverPtr drvp,
* Unclaim PCI slot, e.g. if probing failed, so that a different driver can claim.
*/
void
-xf86UnclaimPciSlot(struct pci_device *d)
+xf86UnclaimPciSlot(struct pci_device *d, GDevPtr dev)
{
int i;
@@ -244,6 +244,8 @@ xf86UnclaimPciSlot(struct pci_device *d)
if ((p->bus.type == BUS_PCI) && (p->bus.id.pci == d)) {
/* Probably the slot should be deallocated? */
+ xf86RemoveDevFromEntity(i, dev);
+ pciSlotClaimed--;
p->bus.type = BUS_NONE;
return;
}
@@ -537,7 +539,7 @@ xf86PciProbeDev(DriverPtr drvp)
foundScreen = TRUE;
}
else
- xf86UnclaimPciSlot(pPci);
+ xf86UnclaimPciSlot(pPci, devList[i]);
}
break;
--
1.7.7.6