From 02cbf43d01d8e983e2406c12758317ba78b87e54 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 6 May 2013 10:22:54 +1000 Subject: [PATCH] upstream rebase - reorganise the randr/gpu screen patches + backports --- .gitignore | 1 + ...-bitfields-that-store-enums-unsigned.patch | 69 ------- ...-dirty-helper-to-be-used-for-non-sha.patch | 40 ---- 0001-gpu-screen-upstream-fixes.patch | 185 ++++++++++++++++++ ...report-SetDesiredModes-failed-if-at-.patch | 60 ++++++ ...ctly-set-changed-bits-in-randr-scree.patch | 110 ----------- ...anged-modify-the-main-protocol-scree.patch | 47 ----- ...ected-changed-on-the-protocol-screen.patch | 31 --- ...anges-when-we-disconnect-a-GPU-slave.patch | 71 ------- 0001-randr-upstream-set-changed-fixes.patch | 167 ++++++++++++++++ ...nput-to-work-with-Linux-evdev-device.patch | 37 ---- ...se-display-for-vx-vy-for-gpu-screens.patch | 65 ------ 0001-xserver-call-CSR-for-gpus.patch | 46 ----- ...re-only-one-working-CRTC-to-start-th.patch | 56 ------ sources | 2 +- ...ix-non-PCI-configuration-less-setups.patch | 53 ----- xorg-x11-server.spec | 40 ++-- xserver-autobind-hotplug.patch | 45 ++--- 18 files changed, 441 insertions(+), 684 deletions(-) delete mode 100644 0001-dix-Make-small-bitfields-that-store-enums-unsigned.patch delete mode 100644 0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch create mode 100644 0001-gpu-screen-upstream-fixes.patch create mode 100644 0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch delete mode 100644 0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch delete mode 100644 0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch delete mode 100644 0001-randr-only-respected-changed-on-the-protocol-screen.patch delete mode 100644 0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch create mode 100644 0001-randr-upstream-set-changed-fixes.patch delete mode 100644 0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch delete mode 100644 0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch delete mode 100644 0001-xserver-call-CSR-for-gpus.patch delete mode 100644 0002-hw-xfree86-Require-only-one-working-CRTC-to-start-th.patch delete mode 100644 v2-xf86-Fix-non-PCI-configuration-less-setups.patch diff --git a/.gitignore b/.gitignore index d5c69d7..b41b735 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ xorg-server-1.9.1.tar.bz2 /xorg-server-20130109.tar.xz /xorg-server-20130215.tar.xz /xorg-server-1.14.0.tar.bz2 +/xorg-server-1.14.1.tar.bz2 diff --git a/0001-dix-Make-small-bitfields-that-store-enums-unsigned.patch b/0001-dix-Make-small-bitfields-that-store-enums-unsigned.patch deleted file mode 100644 index 39ac550..0000000 --- a/0001-dix-Make-small-bitfields-that-store-enums-unsigned.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 8b328d4ee3873bc0a7a34f2cb9d301827244b98c Mon Sep 17 00:00:00 2001 -From: Aaron Plattner -Date: Fri, 21 Dec 2012 07:37:33 -0800 -Subject: [PATCH 1/2] dix: Make small bitfields that store enums unsigned - -Commit 31bf81772e146af79b0c456aae2159eba8b0280f changed the clientState field -from a signed int to a signed int 2-bit bitfield. The ClientState enum that is -expected to be assigned to this field has four values: ClientStateInitial (0), -ClientStateRunning (1), ClientStateRetained (2), and ClientStateGone (3). -However, because this bitfield is signed, ClientStateRetained becomes -2 when -assigned, and ClientStateGone becomes -1. This causes warnings: - - test.c:54:10: error: case label value exceeds maximum value for type [-Werror] - test.c:55:10: error: case label value exceeds maximum value for type [-Werror] - -The code here is a switch statement: - - 53 switch (client->clientState) { - 54 case ClientStateGone: - 55 case ClientStateRetained: - 56 [...] - 57 break; - 58 - 59 default: - 60 [...] - 61 break; - 62 } - -It also causes bizarre problems like this: - - client->clientState = ClientStateGone; - assert(client->clientState == ClientStateGone); // this assert fails - -Also change the signedness of nearby bitfields to match. - -Signed-off-by: Aaron Plattner -Reviewed-by: Alex Deucher -Reviewed-by: Colin Harrison -Signed-off-by: Keith Packard ---- - include/dixstruct.h | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/include/dixstruct.h b/include/dixstruct.h -index c1236f5..6784819 100644 ---- a/include/dixstruct.h -+++ b/include/dixstruct.h -@@ -90,12 +90,12 @@ typedef struct _Client { - Mask clientAsMask; - short index; - unsigned char majorOp, minorOp; -- int swapped:1; -- int local:1; -- int big_requests:1; /* supports large requests */ -- int clientGone:1; -- int closeDownMode:2; -- int clientState:2; -+ unsigned int swapped:1; -+ unsigned int local:1; -+ unsigned int big_requests:1; /* supports large requests */ -+ unsigned int clientGone:1; -+ unsigned int closeDownMode:2; -+ unsigned int clientState:2; - char smart_priority; - short noClientException; /* this client died or needs to be killed */ - int priority; --- -1.8.0.2 - diff --git a/0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch b/0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch deleted file mode 100644 index e524142..0000000 --- a/0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 73fc15d94136a87807c1ce69d56fb8a34c09fe4f Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Tue, 8 Jan 2013 09:41:36 +1000 -Subject: [PATCH] dix: allow pixmap dirty helper to be used for non-shared - pixmaps - -this allows the pixmap dirty helper to be used for reverse optimus ---- - dix/pixmap.c | 2 ++ - fb/fbpixmap.c | 1 + - 2 files changed, 3 insertions(+) - -diff --git a/dix/pixmap.c b/dix/pixmap.c -index 2418812..fe92147 100644 ---- a/dix/pixmap.c -+++ b/dix/pixmap.c -@@ -243,6 +243,8 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region) - } - - dst = dirty->slave_dst->master_pixmap; -+ if (!dst) -+ dst = dirty->slave_dst; - - RegionTranslate(dirty_region, -dirty->x, -dirty->y); - n = RegionNumRects(dirty_region); -diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c -index fbcdca9..0824b64 100644 ---- a/fb/fbpixmap.c -+++ b/fb/fbpixmap.c -@@ -67,6 +67,7 @@ fbCreatePixmapBpp(ScreenPtr pScreen, int width, int height, int depth, int bpp, - pPixmap->devKind = paddedWidth; - pPixmap->refcnt = 1; - pPixmap->devPrivate.ptr = (pointer) ((char *) pPixmap + base + adjust); -+ pPixmap->master_pixmap = NULL; - - #ifdef FB_DEBUG - pPixmap->devPrivate.ptr = --- -1.8.1 - diff --git a/0001-gpu-screen-upstream-fixes.patch b/0001-gpu-screen-upstream-fixes.patch new file mode 100644 index 0000000..f892cd4 --- /dev/null +++ b/0001-gpu-screen-upstream-fixes.patch @@ -0,0 +1,185 @@ +From a7bbd0cbf4b7a7331bb441c9c744c148435b5155 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Wed, 9 Jan 2013 12:51:55 +1000 +Subject: [PATCH] gpu screen: upstream fixes + +dix/gpu: remove asserts for output/offload from same slave +xf86crtc: don't use scrn->display for gpu screens +dix: allow pixmap dirty helper to be used for non-shared pixmaps +gpu: call CreateScreenResources for GPU screens +xfree86: don't enable anything in xf86InitialConfiguration for GPU screens + +Signed-off-by: Dave Airlie +--- + dix/dispatch.c | 2 -- + dix/main.c | 3 +++ + dix/pixmap.c | 2 ++ + fb/fbpixmap.c | 1 + + hw/xfree86/common/xf86platformBus.c | 8 ++++++++ + hw/xfree86/modes/xf86Crtc.c | 34 ++++++++++++++++++++++++---------- + 6 files changed, 38 insertions(+), 12 deletions(-) + +diff --git a/dix/dispatch.c b/dix/dispatch.c +index 8d61735..90b6c7c 100644 +--- a/dix/dispatch.c ++++ b/dix/dispatch.c +@@ -3942,7 +3942,6 @@ void + AttachOutputGPU(ScreenPtr pScreen, ScreenPtr new) + { + assert(new->isGPU); +- assert(!new->current_master); + xorg_list_add(&new->output_head, &pScreen->output_slave_list); + new->current_master = pScreen; + } +@@ -3959,7 +3958,6 @@ void + AttachOffloadGPU(ScreenPtr pScreen, ScreenPtr new) + { + assert(new->isGPU); +- assert(!new->current_master); + xorg_list_add(&new->offload_head, &pScreen->offload_slave_list); + new->current_master = pScreen; + } +diff --git a/dix/main.c b/dix/main.c +index fb935c9..e558d70 100644 +--- a/dix/main.c ++++ b/dix/main.c +@@ -211,6 +211,9 @@ main(int argc, char *argv[], char *envp[]) + ScreenPtr pScreen = screenInfo.gpuscreens[i]; + if (!CreateScratchPixmapsForScreen(pScreen)) + FatalError("failed to create scratch pixmaps"); ++ if (pScreen->CreateScreenResources && ++ !(*pScreen->CreateScreenResources) (pScreen)) ++ FatalError("failed to create screen resources"); + } + + for (i = 0; i < screenInfo.numScreens; i++) { +diff --git a/dix/pixmap.c b/dix/pixmap.c +index 2418812..fe92147 100644 +--- a/dix/pixmap.c ++++ b/dix/pixmap.c +@@ -243,6 +243,8 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region) + } + + dst = dirty->slave_dst->master_pixmap; ++ if (!dst) ++ dst = dirty->slave_dst; + + RegionTranslate(dirty_region, -dirty->x, -dirty->y); + n = RegionNumRects(dirty_region); +diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c +index fbcdca9..0824b64 100644 +--- a/fb/fbpixmap.c ++++ b/fb/fbpixmap.c +@@ -67,6 +67,7 @@ fbCreatePixmapBpp(ScreenPtr pScreen, int width, int height, int depth, int bpp, + pPixmap->devKind = paddedWidth; + pPixmap->refcnt = 1; + pPixmap->devPrivate.ptr = (pointer) ((char *) pPixmap + base + adjust); ++ pPixmap->master_pixmap = NULL; + + #ifdef FB_DEBUG + pPixmap->devPrivate.ptr = +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index bcb65ff..e368dee 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -455,6 +455,14 @@ xf86platformAddDevice(int index) + + CreateScratchPixmapsForScreen(xf86GPUScreens[i]->pScreen); + ++ if (xf86GPUScreens[i]->pScreen->CreateScreenResources && ++ !(*xf86GPUScreens[i]->pScreen->CreateScreenResources) (xf86GPUScreens[i]->pScreen)) { ++ RemoveGPUScreen(xf86GPUScreens[i]->pScreen); ++ xf86DeleteScreen(xf86GPUScreens[i]); ++ xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL); ++ xf86NumGPUScreens = old_screens; ++ return -1; ++ } + /* attach unbound to 0 protocol screen */ + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 7d55f60..989595f 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -1908,6 +1908,14 @@ xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, + Bool any_enabled = FALSE; + int o; + ++ /* ++ * Don't bother enabling outputs on GPU screens: a client needs to attach ++ * it to a source provider before setting a mode that scans out a shared ++ * pixmap. ++ */ ++ if (scrn->is_gpu) ++ return FALSE; ++ + for (o = 0; o < config->num_output; o++) + any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], TRUE); + +@@ -2360,11 +2368,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + config->debug_modes = xf86ReturnOptValBool(config->options, + OPTION_MODEDEBUG, FALSE); + +- if (scrn->display->virtualX) ++ if (scrn->display->virtualX && !scrn->is_gpu) + width = scrn->display->virtualX; + else + width = config->maxWidth; +- if (scrn->display->virtualY) ++ if (scrn->display->virtualY && !scrn->is_gpu) + height = scrn->display->virtualY; + else + height = config->maxHeight; +@@ -2377,9 +2385,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + + ret = xf86CollectEnabledOutputs(scrn, config, enabled); + if (ret == FALSE && canGrow) { +- xf86DrvMsg(i, X_WARNING, +- "Unable to find connected outputs - setting %dx%d initial framebuffer\n", +- NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT); ++ if (!scrn->is_gpu) ++ xf86DrvMsg(i, X_WARNING, ++ "Unable to find connected outputs - setting %dx%d " ++ "initial framebuffer\n", ++ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT); + have_outputs = FALSE; + } + else { +@@ -2428,8 +2438,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + + /* XXX override xf86 common frame computation code */ + +- scrn->display->frameX0 = 0; +- scrn->display->frameY0 = 0; ++ if (!scrn->is_gpu) { ++ scrn->display->frameX0 = 0; ++ scrn->display->frameY0 = 0; ++ } + + for (c = 0; c < config->num_crtc; c++) { + xf86CrtcPtr crtc = config->crtc[c]; +@@ -2477,7 +2489,7 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + } + } + +- if (scrn->display->virtualX == 0) { ++ if (scrn->display->virtualX == 0 || scrn->is_gpu) { + /* + * Expand virtual size to cover the current config and potential mode + * switches, if the driver can't enlarge the screen later. +@@ -2492,8 +2504,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + } + } + +- scrn->display->virtualX = width; +- scrn->display->virtualY = height; ++ if (!scrn->is_gpu) { ++ scrn->display->virtualX = width; ++ scrn->display->virtualY = height; ++ } + } + + if (width > scrn->virtualX) +-- +1.8.2 + diff --git a/0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch b/0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch new file mode 100644 index 0000000..02fd152 --- /dev/null +++ b/0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch @@ -0,0 +1,60 @@ +From c760fb0154848d47438908ba8b3da2fffc68a460 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Thu, 10 Jan 2013 03:26:33 +0000 +Subject: [PATCH] hw/xfree86: Only report SetDesiredModes() failed if at least + one modeset fails + +commit 6703a7c7cf1a349c137e247a0c8eb462ff7b07be +Author: Keith Packard +Date: Tue Jan 8 20:24:32 2013 -0800 + + hw/xfree86: Require only one working CRTC to start the server. + +changed the logic to try to set the mode on all connected outputs rather +than abort upon the first failure. The return error code was then +tweaked such that it reported success if it set a mode on any crtc. +However, this confuses the headless case where we never enable any crtcs +and also, importantly, never fail to set a crtc. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59190 + +Signed-off-by: Chris Wilson +Also-written-by: Maarten Lankhorst +Reviewed-by: Keith Packard +Signed-off-by: Keith Packard +(cherry picked from commit 451ba4bd41b82acd4aec6236ba121e00cfeb311b) +--- + hw/xfree86/modes/xf86Crtc.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index f9ae465..7d55f60 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -2598,8 +2598,8 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) + { + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + xf86CrtcPtr crtc = config->crtc[0]; ++ int enabled = 0, failed = 0; + int c; +- int enabled = 0; + + /* A driver with this hook will take care of this */ + if (!crtc->funcs->set_mode_major) { +@@ -2659,11 +2659,12 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) + if (config->output[o]->crtc == crtc) + config->output[o]->crtc = NULL; + crtc->enabled = FALSE; ++ ++failed; + } + } + + xf86DisableUnusedFunctions(scrn); +- return enabled != 0; ++ return enabled != 0 || failed == 0; + } + + /** +-- +1.8.2 + diff --git a/0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch b/0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch deleted file mode 100644 index 6aaaeb3..0000000 --- a/0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 42ca69172c897713295f7c2b471f0e5d072c920b Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Wed, 9 Jan 2013 14:32:47 +1000 -Subject: [PATCH] randr: don't directly set changed bits in randr screen - -Introduce a wrapper interface so we can fix things up for multi-gpu -situations later. - -This just introduces the API for now. - -Signed-off-by: Dave Airlie -Signed-off-by: Fedora X Ninjas ---- - randr/randr.c | 8 ++++++++ - randr/randrstr.h | 4 ++++ - randr/rrcrtc.c | 2 +- - randr/rrinfo.c | 2 +- - randr/rroutput.c | 2 +- - randr/rrscreen.c | 2 +- - 6 files changed, 16 insertions(+), 4 deletions(-) - -diff --git a/randr/randr.c b/randr/randr.c -index f0decfc..11f88b2 100644 ---- a/randr/randr.c -+++ b/randr/randr.c -@@ -464,6 +464,14 @@ TellChanged(WindowPtr pWin, pointer value) - return WT_WALKCHILDREN; - } - -+void -+RRSetChanged(ScreenPtr pScreen) -+{ -+ rrScrPriv(pScreen); -+ -+ pScrPriv->changed = TRUE; -+} -+ - /* - * Something changed; send events and adjust pointer position - */ -diff --git a/randr/randrstr.h b/randr/randrstr.h -index 2517479..2babfed 100644 ---- a/randr/randrstr.h -+++ b/randr/randrstr.h -@@ -486,6 +486,10 @@ extern _X_EXPORT void - RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen); - - /* randr.c */ -+/* set a screen change on the primary screen */ -+extern _X_EXPORT void -+RRSetChanged(ScreenPtr pScreen); -+ - /* - * Send all pending events - */ -diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c -index 6e2eca5..b3fb5bd 100644 ---- a/randr/rrcrtc.c -+++ b/randr/rrcrtc.c -@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged) - if (pScreen) { - rrScrPriv(pScreen); - -- pScrPriv->changed = TRUE; -+ RRSetChanged(pScreen); - /* - * Send ConfigureNotify on any layout change - */ -diff --git a/randr/rrinfo.c b/randr/rrinfo.c -index 1408d6f..fc57bd4 100644 ---- a/randr/rrinfo.c -+++ b/randr/rrinfo.c -@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen, - pScrPriv->minHeight = minHeight; - pScrPriv->maxWidth = maxWidth; - pScrPriv->maxHeight = maxHeight; -- pScrPriv->changed = TRUE; -+ RRSetChanged(pScreen); - pScrPriv->configChanged = TRUE; - } - -diff --git a/randr/rroutput.c b/randr/rroutput.c -index 88781ba..922d61f 100644 ---- a/randr/rroutput.c -+++ b/randr/rroutput.c -@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged) - output->changed = TRUE; - if (pScreen) { - rrScrPriv(pScreen); -- pScrPriv->changed = TRUE; -+ RRSetChanged(pScreen); - if (configChanged) - pScrPriv->configChanged = TRUE; - } -diff --git a/randr/rrscreen.c b/randr/rrscreen.c -index 39340cc..36179ae 100644 ---- a/randr/rrscreen.c -+++ b/randr/rrscreen.c -@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen) - pScrPriv->height = pScreen->height; - pScrPriv->mmWidth = pScreen->mmWidth; - pScrPriv->mmHeight = pScreen->mmHeight; -- pScrPriv->changed = TRUE; -+ RRSetChanged(pScreen); - /* pScrPriv->sizeChanged = TRUE; */ - - RRTellChanged(pScreen); --- -1.8.1.4 - diff --git a/0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch b/0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch deleted file mode 100644 index f37b259..0000000 --- a/0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 48ea188cac83f2c03913457e1049cc30c27cd395 Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Wed, 9 Jan 2013 14:32:48 +1000 -Subject: [PATCH] randr: make SetChanged modify the main protocol screen not - the gpu screen - -When SetChanged is called we now modify the main protocol screen, -not the the gpu screen. Since changed stuff should work at the protocol level. - -Signed-off-by: Dave Airlie -Signed-off-by: Fedora X Ninjas ---- - randr/randr.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - -diff --git a/randr/randr.c b/randr/randr.c -index 11f88b2..fb0895d 100644 ---- a/randr/randr.c -+++ b/randr/randr.c -@@ -467,9 +467,23 @@ TellChanged(WindowPtr pWin, pointer value) - void - RRSetChanged(ScreenPtr pScreen) - { -+ /* set changed bits on the master screen only */ -+ ScreenPtr master; - rrScrPriv(pScreen); -+ rrScrPrivPtr mastersp; -+ -+ if (pScreen->isGPU) { -+ master = pScreen->current_master; -+ if (!master) -+ return; -+ mastersp = rrGetScrPriv(master); -+ } -+ else { -+ master = pScreen; -+ mastersp = pScrPriv; -+ } - -- pScrPriv->changed = TRUE; -+ mastersp->changed = TRUE; - } - - /* --- -1.8.1.4 - diff --git a/0001-randr-only-respected-changed-on-the-protocol-screen.patch b/0001-randr-only-respected-changed-on-the-protocol-screen.patch deleted file mode 100644 index e8269f2..0000000 --- a/0001-randr-only-respected-changed-on-the-protocol-screen.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2d05af5ee4844354810cdfcc76eda255a9f6beec Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Wed, 9 Jan 2013 14:32:49 +1000 -Subject: [PATCH] randr: only respected changed on the protocol screen - -We don't want to know about changes on the non-protocol screen, -we will fix up setchanged to make sure non-protocol screens update -the protocol screens when they have a change. - -Signed-off-by: Dave Airlie -Signed-off-by: Fedora X Ninjas ---- - randr/randr.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/randr/randr.c b/randr/randr.c -index fb0895d..cb6fce7 100644 ---- a/randr/randr.c -+++ b/randr/randr.c -@@ -506,7 +506,7 @@ RRTellChanged(ScreenPtr pScreen) - mastersp = pScrPriv; - } - -- if (pScrPriv->changed) { -+ if (mastersp->changed) { - UpdateCurrentTimeIf(); - if (mastersp->configChanged) { - mastersp->lastConfigTime = currentTime; --- -1.8.1.4 - diff --git a/0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch b/0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch deleted file mode 100644 index fd89c71..0000000 --- a/0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 3adc5f9a82ea9aeb2fa5eb2337fb9dd0502082df Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Wed, 9 Jan 2013 14:32:50 +1000 -Subject: [PATCH] randr: report changes when we disconnect a GPU slave - -When we disconnect an output/offload slave set the changed bits, -so a later TellChanged can do something. - -Then when we remove a GPU slave device, sent change notification -to the protocol screen. - -This allows hot unplugged USB devices to disappear in clients. - -Signed-off-by: Dave Airlie -Signed-off-by: Fedora X Ninjas ---- - hw/xfree86/common/xf86platformBus.c | 3 ++- - hw/xfree86/modes/xf86RandR12.c | 9 +++++++-- - 2 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index 2b02e79..4ccb005 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -47,6 +47,7 @@ - #include "Pci.h" - #include "xf86platformBus.h" - -+#include "randrstr.h" - int platformSlotClaimed; - - int xf86_num_platform_devices; -@@ -497,7 +498,7 @@ xf86platformRemoveDevice(int index) - xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL); - - xf86_remove_platform_device(index); -- -+ RRTellChanged(xf86Screens[0]->pScreen); - out: - return; - } -diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c -index 01fc9c5..f259730 100644 ---- a/hw/xfree86/modes/xf86RandR12.c -+++ b/hw/xfree86/modes/xf86RandR12.c -@@ -1892,15 +1892,20 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider) - xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); - - if (config->randr_provider == provider) { -+ Bool detached = FALSE; - if (config->randr_provider->offload_sink) { - DetachOffloadGPU(screen); - config->randr_provider->offload_sink = NULL; -+ RRSetChanged(screen); -+ detached = TRUE; - } -- else if (config->randr_provider->output_source) { -+ if (config->randr_provider->output_source) { - DetachOutputGPU(screen); - config->randr_provider->output_source = NULL; -+ RRSetChanged(screen); -+ detached = TRUE; - } -- else if (screen->current_master) -+ if (!detached && screen->current_master) - DetachUnboundGPU(screen); - } - config->randr_provider = NULL; --- -1.8.2 - diff --git a/0001-randr-upstream-set-changed-fixes.patch b/0001-randr-upstream-set-changed-fixes.patch new file mode 100644 index 0000000..dd6e7c6 --- /dev/null +++ b/0001-randr-upstream-set-changed-fixes.patch @@ -0,0 +1,167 @@ +From ce3de2dcb1b3bd99a693c828278a416c245acc37 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Wed, 9 Jan 2013 14:23:57 +1000 +Subject: [PATCH] randr upstream set changed fixes + +Signed-off-by: Dave Airlie +--- + hw/xfree86/common/xf86platformBus.c | 3 ++- + hw/xfree86/modes/xf86RandR12.c | 2 ++ + randr/randr.c | 24 +++++++++++++++++++++++- + randr/randrstr.h | 4 ++++ + randr/rrcrtc.c | 2 +- + randr/rrinfo.c | 2 +- + randr/rroutput.c | 2 +- + randr/rrscreen.c | 2 +- + 8 files changed, 35 insertions(+), 6 deletions(-) + +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 9034dad..bcb65ff 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -47,6 +47,7 @@ + #include "Pci.h" + #include "xf86platformBus.h" + ++#include "randrstr.h" + int platformSlotClaimed; + + int xf86_num_platform_devices; +@@ -499,7 +500,7 @@ xf86platformRemoveDevice(int index) + xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL); + + xf86_remove_platform_device(index); +- ++ RRTellChanged(xf86Screens[0]->pScreen); + out: + return; + } +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 01fc9c5..7f570cf 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1895,10 +1895,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider) + if (config->randr_provider->offload_sink) { + DetachOffloadGPU(screen); + config->randr_provider->offload_sink = NULL; ++ RRSetChanged(screen); + } + else if (config->randr_provider->output_source) { + DetachOutputGPU(screen); + config->randr_provider->output_source = NULL; ++ RRSetChanged(screen); + } + else if (screen->current_master) + DetachUnboundGPU(screen); +diff --git a/randr/randr.c b/randr/randr.c +index f0decfc..cb6fce7 100644 +--- a/randr/randr.c ++++ b/randr/randr.c +@@ -464,6 +464,28 @@ TellChanged(WindowPtr pWin, pointer value) + return WT_WALKCHILDREN; + } + ++void ++RRSetChanged(ScreenPtr pScreen) ++{ ++ /* set changed bits on the master screen only */ ++ ScreenPtr master; ++ rrScrPriv(pScreen); ++ rrScrPrivPtr mastersp; ++ ++ if (pScreen->isGPU) { ++ master = pScreen->current_master; ++ if (!master) ++ return; ++ mastersp = rrGetScrPriv(master); ++ } ++ else { ++ master = pScreen; ++ mastersp = pScrPriv; ++ } ++ ++ mastersp->changed = TRUE; ++} ++ + /* + * Something changed; send events and adjust pointer position + */ +@@ -484,7 +506,7 @@ RRTellChanged(ScreenPtr pScreen) + mastersp = pScrPriv; + } + +- if (pScrPriv->changed) { ++ if (mastersp->changed) { + UpdateCurrentTimeIf(); + if (mastersp->configChanged) { + mastersp->lastConfigTime = currentTime; +diff --git a/randr/randrstr.h b/randr/randrstr.h +index 2517479..2babfed 100644 +--- a/randr/randrstr.h ++++ b/randr/randrstr.h +@@ -486,6 +486,10 @@ extern _X_EXPORT void + RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen); + + /* randr.c */ ++/* set a screen change on the primary screen */ ++extern _X_EXPORT void ++RRSetChanged(ScreenPtr pScreen); ++ + /* + * Send all pending events + */ +diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c +index 6e2eca5..b3fb5bd 100644 +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged) + if (pScreen) { + rrScrPriv(pScreen); + +- pScrPriv->changed = TRUE; ++ RRSetChanged(pScreen); + /* + * Send ConfigureNotify on any layout change + */ +diff --git a/randr/rrinfo.c b/randr/rrinfo.c +index 1408d6f..fc57bd4 100644 +--- a/randr/rrinfo.c ++++ b/randr/rrinfo.c +@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen, + pScrPriv->minHeight = minHeight; + pScrPriv->maxWidth = maxWidth; + pScrPriv->maxHeight = maxHeight; +- pScrPriv->changed = TRUE; ++ RRSetChanged(pScreen); + pScrPriv->configChanged = TRUE; + } + +diff --git a/randr/rroutput.c b/randr/rroutput.c +index 88781ba..922d61f 100644 +--- a/randr/rroutput.c ++++ b/randr/rroutput.c +@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged) + output->changed = TRUE; + if (pScreen) { + rrScrPriv(pScreen); +- pScrPriv->changed = TRUE; ++ RRSetChanged(pScreen); + if (configChanged) + pScrPriv->configChanged = TRUE; + } +diff --git a/randr/rrscreen.c b/randr/rrscreen.c +index 39340cc..36179ae 100644 +--- a/randr/rrscreen.c ++++ b/randr/rrscreen.c +@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen) + pScrPriv->height = pScreen->height; + pScrPriv->mmWidth = pScreen->mmWidth; + pScrPriv->mmHeight = pScreen->mmHeight; +- pScrPriv->changed = TRUE; ++ RRSetChanged(pScreen); + /* pScrPriv->sizeChanged = TRUE; */ + + RRTellChanged(pScreen); +-- +1.8.2 + diff --git a/0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch b/0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch deleted file mode 100644 index 45257d4..0000000 --- a/0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 8647ee8f422e1ea9212d84ae14ef2163793bcdc8 Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Wed, 10 Apr 2013 16:09:01 +1000 -Subject: [PATCH] xf86: fix flush input to work with Linux evdev devices. - -So when we VT switch back and attempt to flush the input devices, -we don't succeed because evdev won't return part of an event, -since we were only asking for 4 bytes, we'd only get -EINVAL back. - -This could later cause events to be flushed that we shouldn't have -gotten. - -This is a fix for CVE-2013-1940. - -Signed-off-by: Dave Airlie -Reviewed-by: Peter Hutterer -Signed-off-by: Peter Hutterer ---- - hw/xfree86/os-support/shared/posix_tty.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/hw/xfree86/os-support/shared/posix_tty.c b/hw/xfree86/os-support/shared/posix_tty.c -index ab3757a..4d08c1e 100644 ---- a/hw/xfree86/os-support/shared/posix_tty.c -+++ b/hw/xfree86/os-support/shared/posix_tty.c -@@ -421,7 +421,8 @@ xf86FlushInput(int fd) - { - fd_set fds; - struct timeval timeout; -- char c[4]; -+ /* this needs to be big enough to flush an evdev event. */ -+ char c[256]; - - DebugF("FlushingSerial\n"); - if (tcflush(fd, TCIFLUSH) == 0) --- -1.8.1.4 diff --git a/0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch b/0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch deleted file mode 100644 index 36b6a4c..0000000 --- a/0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 2bd6a8491ad3dbd42db66be7ae48f4b6e9c698f2 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Wed, 12 Dec 2012 14:02:54 +1000 -Subject: [PATCH] xf86crtc: don't use display for vx/vy for gpu screens - ---- - hw/xfree86/modes/xf86Crtc.c | 18 +++++++++++------- - 1 file changed, 11 insertions(+), 7 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 6975d2f..2828ee0 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -2425,11 +2425,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) - config->debug_modes = xf86ReturnOptValBool(config->options, - OPTION_MODEDEBUG, FALSE); - -- if (scrn->display->virtualX) -+ if (scrn->display->virtualX && !scrn->is_gpu) - width = scrn->display->virtualX; - else - width = config->maxWidth; -- if (scrn->display->virtualY) -+ if (scrn->display->virtualY && !scrn->is_gpu) - height = scrn->display->virtualY; - else - height = config->maxHeight; -@@ -2497,8 +2497,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) - - /* XXX override xf86 common frame computation code */ - -- scrn->display->frameX0 = 0; -- scrn->display->frameY0 = 0; -+ if (!scrn->is_gpu) { -+ scrn->display->frameX0 = 0; -+ scrn->display->frameY0 = 0; -+ } - - for (c = 0; c < config->num_crtc; c++) { - xf86CrtcPtr crtc = config->crtc[c]; -@@ -2546,7 +2548,7 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) - } - } - -- if (scrn->display->virtualX == 0) { -+ if (scrn->display->virtualX == 0 || scrn->is_gpu) { - /* - * Expand virtual size to cover the current config and potential mode - * switches, if the driver can't enlarge the screen later. -@@ -2561,8 +2563,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) - } - } - -- scrn->display->virtualX = width; -- scrn->display->virtualY = height; -+ if (!scrn->is_gpu) { -+ scrn->display->virtualX = width; -+ scrn->display->virtualY = height; -+ } - } - - if (width > scrn->virtualX) --- -1.8.1 - diff --git a/0001-xserver-call-CSR-for-gpus.patch b/0001-xserver-call-CSR-for-gpus.patch deleted file mode 100644 index 8c6fbda..0000000 --- a/0001-xserver-call-CSR-for-gpus.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 6aa11e40ec75fb31d0c611f9d578427941379c0d Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Tue, 8 Jan 2013 09:42:44 +1000 -Subject: [PATCH] xserver: call CSR for gpus - ---- - dix/main.c | 3 +++ - hw/xfree86/common/xf86platformBus.c | 8 ++++++++ - 2 files changed, 11 insertions(+) - -diff --git a/dix/main.c b/dix/main.c -index fb935c9..e558d70 100644 ---- a/dix/main.c -+++ b/dix/main.c -@@ -211,6 +211,9 @@ main(int argc, char *argv[], char *envp[]) - ScreenPtr pScreen = screenInfo.gpuscreens[i]; - if (!CreateScratchPixmapsForScreen(pScreen)) - FatalError("failed to create scratch pixmaps"); -+ if (pScreen->CreateScreenResources && -+ !(*pScreen->CreateScreenResources) (pScreen)) -+ FatalError("failed to create screen resources"); - } - - for (i = 0; i < screenInfo.numScreens; i++) { -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index 67d03eb..8f73c3a 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -452,6 +452,14 @@ xf86platformAddDevice(int index) - - CreateScratchPixmapsForScreen(xf86GPUScreens[i]->pScreen); - -+ if (xf86GPUScreens[i]->pScreen->CreateScreenResources && -+ !(*xf86GPUScreens[i]->pScreen->CreateScreenResources) (xf86GPUScreens[i]->pScreen)) { -+ RemoveGPUScreen(xf86GPUScreens[i]->pScreen); -+ xf86DeleteScreen(xf86GPUScreens[i]); -+ xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL); -+ xf86NumGPUScreens = old_screens; -+ return -1; -+ } - /* attach unbound to 0 protocol screen */ - AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); - xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); --- -1.8.1 - diff --git a/0002-hw-xfree86-Require-only-one-working-CRTC-to-start-th.patch b/0002-hw-xfree86-Require-only-one-working-CRTC-to-start-th.patch deleted file mode 100644 index 4d53b07..0000000 --- a/0002-hw-xfree86-Require-only-one-working-CRTC-to-start-th.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 6703a7c7cf1a349c137e247a0c8eb462ff7b07be Mon Sep 17 00:00:00 2001 -From: Keith Packard -Date: Tue, 8 Jan 2013 20:24:32 -0800 -Subject: [PATCH 2/2] hw/xfree86: Require only one working CRTC to start the - server. - -Instead of requiring every mode set to complete successfully, start up -as long as at least one CRTC is working. This avoids failures when one -or more CRTCs can't start due to mode setting conflicts. - -Signed-off-by: Keith Packard -Reviewed-by: Dave Airlie ---- - hw/xfree86/modes/xf86Crtc.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 13251cf..b3ded5a 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -2605,6 +2605,7 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) - xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); - xf86CrtcPtr crtc = config->crtc[0]; - int c; -+ int enabled = 0; - - /* A driver with this hook will take care of this */ - if (!crtc->funcs->set_mode_major) { -@@ -2655,14 +2656,20 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) - transform = &crtc->desiredTransform; - else - transform = NULL; -- if (!xf86CrtcSetModeTransform -+ if (xf86CrtcSetModeTransform - (crtc, &crtc->desiredMode, crtc->desiredRotation, transform, -- crtc->desiredX, crtc->desiredY)) -- return FALSE; -+ crtc->desiredX, crtc->desiredY)) { -+ ++enabled; -+ } else { -+ for (o = 0; o < config->num_output; o++) -+ if (config->output[o]->crtc == crtc) -+ config->output[o]->crtc = NULL; -+ crtc->enabled = FALSE; -+ } - } - - xf86DisableUnusedFunctions(scrn); -- return TRUE; -+ return enabled != 0; - } - - /** --- -1.8.0.2 - diff --git a/sources b/sources index b67c289..e1487d4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -86110278b784e279381b7f6f2295c508 xorg-server-1.14.0.tar.bz2 +6a0f1a1639ada4b9da7e9582bc79252a xorg-server-1.14.1.tar.bz2 diff --git a/v2-xf86-Fix-non-PCI-configuration-less-setups.patch b/v2-xf86-Fix-non-PCI-configuration-less-setups.patch deleted file mode 100644 index 5afa39a..0000000 --- a/v2-xf86-Fix-non-PCI-configuration-less-setups.patch +++ /dev/null @@ -1,53 +0,0 @@ -From patchwork Wed Oct 17 10:06:47 2012 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v2] xf86: Fix non-PCI configuration-less setups -Date: Wed, 17 Oct 2012 10:06:47 -0000 -From: Thierry Reding -X-Patchwork-Id: 12233 -Message-Id: <1350468407-27681-1-git-send-email-thierry.reding@avionic-design.de> -To: xorg-devel@lists.x.org -Cc: Dave Airlie - -For non-PCI video devices, such as those found on many ARM embedded -systems, the X server currently requires the BusID option to specify the -full path to the DRM device's sysfs node in order to properly match it -against the probed platform devices. - -In order to allow X to start up properly if either the BusID option was -omitted or no configuration is present at all, the first video device is -used by default. - -Signed-off-by: Thierry Reding - ---- -Changes in v2: -- Add additional checks for safety (I don't think numDevs will ever be 0 - since a default will be generated if no configuration is present, but - it doesn't hurt to check anyway). Without these checks there is a - possibility of the X server crashing if no platform devices have been - found. - - hw/xfree86/common/xf86platformBus.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index 0525e39..599d84a 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -377,6 +377,14 @@ xf86platformProbeDev(DriverPtr drvp) - continue; - } - -+ /* -+ * If all of the above fails, which can happen if X was started without -+ * configuration or if BusID wasn't set for non-PCI devices, use the first -+ * device by default. -+ */ -+ if (!foundScreen && xf86_num_platform_devices > 0 && numDevs > 0) -+ foundScreen = probeSingleDevice(&xf86_platform_devices[0], drvp, devList[0], 0); -+ - /* if autoaddgpu devices is enabled then go find a few more and add them as GPU screens */ - if (xf86Info.autoAddGPU && numDevs) { - for (j = 0; j < xf86_num_platform_devices; j++) { diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index c9d5d14..80c61c7 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -41,8 +41,8 @@ Summary: X.Org X11 X server Name: xorg-x11-server -Version: 1.14.0 -Release: 6%{?gitdate:.%{gitdate}}%{dist} +Version: 1.14.1 +Release: 1%{?gitdate:.%{gitdate}}%{dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -84,6 +84,14 @@ Patch6011: xserver-1.6.0-less-acpi-brokenness.patch Patch6030: xserver-1.6.99-right-of.patch #Patch6044: xserver-1.6.99-hush-prerelease-warning.patch +# upstream backports - sent to stable +Patch6050: xserver-1.14.0-fix-gpu-hotplug-vt-switch.patch +Patch6051: 0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch + +# upstream submitted +Patch6052: 0001-randr-upstream-set-changed-fixes.patch +Patch6053: 0001-gpu-screen-upstream-fixes.patch + # Fix libselinux-triggered build error # RedHat/Fedora-specific patch Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch @@ -98,38 +106,14 @@ Patch7027: xserver-autobind-hotplug.patch Patch7052: 0001-xf86-return-NULL-for-compat-output-if-no-outputs.patch -# Fix non-PCI configuration-less setups - broken -#Patch7061: v2-xf86-Fix-non-PCI-configuration-less-setups.patch - # mustard: make the default queue length bigger to calm abrt down Patch7064: 0001-mieq-Bump-default-queue-size-to-512.patch -# some hotplug fixes/workaround -Patch7066: 0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch -# autoconfig: send events -Patch7067: 0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch -Patch7068: 0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch -Patch7069: 0001-randr-only-respected-changed-on-the-protocol-screen.patch -Patch7070: 0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch - - # upstream in -next for 1.15, e21e183059df5975e7086850d1931edb2c1bbd06 %if !0%{?rhel} Patch7071: 0001-os-use-libunwind-to-generate-backtraces.patch %endif -# upstream submitted -Patch7072: xserver-1.14.0-fix-gpu-hotplug-vt-switch.patch - -# Bug 950438 - CVE-2013-1940 xorg-x11-server: -# Information disclosure due enabling events from hot-plug devices despite -# input from the device being momentarily disabled -Patch7073: 0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch - -# on way upstream: fixes for reverse optimus -Patch8000: 0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch -Patch8001: 0001-xserver-call-CSR-for-gpus.patch - %global moduledir %{_libdir}/xorg/modules %global drimoduledir %{_libdir}/dri %global sdkdir %{_includedir}/xorg @@ -602,6 +586,10 @@ rm -rf $RPM_BUILD_ROOT %{xserver_source_dir} %changelog +* Mon May 06 2013 Dave Airlie 1.14.1-1 +- upstream rebase +- reorganise the randr/gpu screen patches + backports + * Wed Apr 17 2013 Peter Hutterer 1.14.0-6 - CVE-2013-1940: Fix xf86FlushInput() to drain evdev events (#950438, #952949) diff --git a/xserver-autobind-hotplug.patch b/xserver-autobind-hotplug.patch index c510791..1d99084 100644 --- a/xserver-autobind-hotplug.patch +++ b/xserver-autobind-hotplug.patch @@ -1,4 +1,4 @@ -From 37d51acb3b6a38af1717bfaa7925043c35bfb447 Mon Sep 17 00:00:00 2001 +From 05a3edae62a02bbbc3102beb5edd73d78c266ef7 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 17 Aug 2012 09:49:24 +1000 Subject: [PATCH] autobind GPUs to the screen, (v3) @@ -9,35 +9,16 @@ but until DE support is in GNOME its probably for the best. v2: fix if config or slave config is NULL v3: fix multi useful slaves DO NOT UPSTREAM. + +Signed-off-by: Dave Airlie --- - dix/dispatch.c | 2 -- hw/xfree86/common/xf86Init.c | 12 ++++++++++++ hw/xfree86/common/xf86platformBus.c | 3 +++ hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++ - 4 files changed, 47 insertions(+), 2 deletions(-) + 3 files changed, 47 insertions(+) -diff --git a/dix/dispatch.c b/dix/dispatch.c -index 0ce10c2..c2ab8f9 100644 ---- a/dix/dispatch.c -+++ b/dix/dispatch.c -@@ -3933,7 +3933,6 @@ void - AttachOutputGPU(ScreenPtr pScreen, ScreenPtr new) - { - assert(new->isGPU); -- assert(!new->current_master); - xorg_list_add(&new->output_head, &pScreen->output_slave_list); - new->current_master = pScreen; - } -@@ -3950,7 +3949,6 @@ void - AttachOffloadGPU(ScreenPtr pScreen, ScreenPtr new) - { - assert(new->isGPU); -- assert(!new->current_master); - xorg_list_add(&new->offload_head, &pScreen->offload_slave_list); - new->current_master = pScreen; - } diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index d231ced..89629c1 100644 +index 91ec4c8..142ce95 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin) @@ -57,7 +38,7 @@ index d231ced..89629c1 100644 static void InstallSignalHandlers(void) { -@@ -926,6 +936,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) +@@ -930,6 +940,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) for (i = 0; i < xf86NumGPUScreens; i++) AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); @@ -67,10 +48,10 @@ index d231ced..89629c1 100644 if (sigio_blocked) OsReleaseSIGIO(); diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index 0525e39..82fef32 100644 +index e368dee..1581413 100644 --- a/hw/xfree86/common/xf86platformBus.c +++ b/hw/xfree86/common/xf86platformBus.c -@@ -387,6 +387,8 @@ xf86platformProbeDev(DriverPtr drvp) +@@ -393,6 +393,8 @@ xf86platformProbeDev(DriverPtr drvp) return foundScreen; } @@ -79,8 +60,8 @@ index 0525e39..82fef32 100644 int xf86platformAddDevice(int index) { -@@ -446,6 +448,7 @@ xf86platformAddDevice(int index) - +@@ -465,6 +467,7 @@ xf86platformAddDevice(int index) + } /* attach unbound to 0 protocol screen */ AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); @@ -88,10 +69,10 @@ index 0525e39..82fef32 100644 return 0; } diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 3011f13..34c1848 100644 +index 4a490c6..5453f3a 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c -@@ -3323,3 +3323,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) +@@ -3358,3 +3358,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) crtc->x = crtc->y = 0; } } @@ -128,5 +109,5 @@ index 3011f13..34c1848 100644 + } +} -- -1.8.1 +1.8.2