diff --git a/SOURCES/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch b/SOURCES/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch index 8a23d5d..30554b9 100644 --- a/SOURCES/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch +++ b/SOURCES/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch @@ -20,11 +20,12 @@ index cef47da03d..dadbac6c8f 100644 @@ -289,7 +289,7 @@ xf86platformProbe(void) for (i = 0; i < xf86_num_platform_devices; i++) { char *busid = xf86_platform_odev_attributes(i)->busid; - + - if (pci && (strncmp(busid, "pci:", 4) == 0)) { + if (pci && busid && (strncmp(busid, "pci:", 4) == 0)) { platform_find_pci_info(&xf86_platform_devices[i], busid); } - --- + +-- 2.21.0 + diff --git a/SOURCES/0001-autobind-GPUs-to-the-screen.patch b/SOURCES/0001-autobind-GPUs-to-the-screen.patch index 86b96a2..a4a99fd 100644 --- a/SOURCES/0001-autobind-GPUs-to-the-screen.patch +++ b/SOURCES/0001-autobind-GPUs-to-the-screen.patch @@ -34,6 +34,7 @@ xorg.conf snippet. Signed-off-by: Dave Airlie [hdegoede@redhat.com: Make configurable, fix with nvidia, submit upstream] Signed-off-by: Hans de Goede +[paper over crash in RRProviderAutoConfigGpuScreen - ajax] --- hw/xfree86/common/xf86Config.c | 19 +++++++++++++++++++ hw/xfree86/common/xf86Globals.c | 2 ++ @@ -273,7 +274,7 @@ index e4bc2bf..e04c18f 100644 + rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen); + rrScrPrivPtr masterPriv = rrGetScrPriv(masterScreen); + RRProviderPtr provider = pScrPriv->provider; -+ RRProviderPtr master_provider = masterPriv->provider; ++ RRProviderPtr master_provider = masterPriv ? masterPriv->provider : 0; + + if (!provider || !master_provider) + return; diff --git a/SOURCES/0001-composite-Additional-paranoia-in-compDestroyDamage.patch b/SOURCES/0001-composite-Additional-paranoia-in-compDestroyDamage.patch new file mode 100644 index 0000000..52e9e62 --- /dev/null +++ b/SOURCES/0001-composite-Additional-paranoia-in-compDestroyDamage.patch @@ -0,0 +1,25 @@ +From 58610d84853d1aa778230df731ce9036f1b32577 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 13 Aug 2019 14:00:48 -0400 +Subject: [PATCH] composite: Additional paranoia in compDestroyDamage + +--- + composite/compalloc.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/composite/compalloc.c b/composite/compalloc.c +index 57c1693..04cf70c 100644 +--- a/composite/compalloc.c ++++ b/composite/compalloc.c +@@ -97,6 +97,8 @@ compDestroyDamage(DamagePtr pDamage, void *closure) + CompWindowPtr cw = GetCompWindow(pWin); + + cw->damage = 0; ++ cw->damaged = 0; ++ cw->damageRegistered = 0; + } + + static Bool +-- +2.21.0 + diff --git a/SOURCES/0001-composite-Remove-excess-compUnredirectWindow.patch b/SOURCES/0001-composite-Remove-excess-compUnredirectWindow.patch new file mode 100644 index 0000000..4583f40 --- /dev/null +++ b/SOURCES/0001-composite-Remove-excess-compUnredirectWindow.patch @@ -0,0 +1,31 @@ +From d84e9d5abfb571ba29f7ddf2a1cd3b7706702139 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 5 Aug 2019 14:35:40 -0400 +Subject: [PATCH] composite: Remove excess compUnredirectWindow + +--- + composite/compwindow.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/composite/compwindow.c b/composite/compwindow.c +index 9005d85..31d39e9 100644 +--- a/composite/compwindow.c ++++ b/composite/compwindow.c +@@ -656,14 +656,6 @@ compDestroyWindow(WindowPtr pWin) + CompSubwindowsPtr csw; + Bool ret; + +- /* +- * Take down bs explicitly, to get ->backStorage cleared +- */ +- if (pWin->backingStore != NotUseful) { +- pWin->backingStore = NotUseful; +- pScreen->ChangeWindowAttributes(pWin, CWBackingStore); +- } +- + pScreen->DestroyWindow = cs->DestroyWindow; + while ((cw = GetCompWindow(pWin))) + FreeResource(cw->clients->id, RT_NONE); +-- +2.21.0 + diff --git a/SOURCES/0001-dix-Optimize-setting-backing-store-state.patch b/SOURCES/0001-dix-Optimize-setting-backing-store-state.patch new file mode 100644 index 0000000..796ba20 --- /dev/null +++ b/SOURCES/0001-dix-Optimize-setting-backing-store-state.patch @@ -0,0 +1,61 @@ +From c2c9450bc7b324e58ea6b77d0d7e1d2d18f35646 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 30 Jul 2019 21:26:49 -0400 +Subject: [PATCH xserver] dix: Optimize setting backing store state + +Extra special RHEL 7.7+ edition +--- + composite/compinit.c | 15 +++++---------- + dix/window.c | 6 ++++++ + 2 files changed, 11 insertions(+), 10 deletions(-) + +diff --git a/composite/compinit.c b/composite/compinit.c +index 2a4de4a22..149f354a6 100644 +--- a/composite/compinit.c ++++ b/composite/compinit.c +@@ -120,20 +120,15 @@ compCheckBackingStore(WindowPtr pWin) + (pWin->backingStore == Always) || + (pWin->backingStore == WhenMapped && pWin->viewable); + +- if (should && !pWin->backStorage) { ++ if (should) { + compCheckPaintable(pWin); +- if (Success == compRedirectWindow(serverClient, pWin, +- CompositeRedirectAutomatic)) +- pWin->backStorage = TRUE; ++ compRedirectWindow(serverClient, pWin, CompositeRedirectAutomatic); + } +- else if (!should && pWin->backStorage) { ++ else if (!should) { + compCheckPaintable(pWin); +- if (Success == compUnredirectWindow(serverClient, pWin, +- CompositeRedirectAutomatic)) +- pWin->backStorage = FALSE; ++ compUnredirectWindow(serverClient, pWin, CompositeRedirectAutomatic); + } +- pWin->paintable = pWin->viewable || +- (pWin->backingStore == Always && pWin->backStorage); ++ compCheckPaintable(pWin); /* XXX before and after? really? */ + } + + /* Fake backing store via automatic redirection */ +diff --git a/dix/window.c b/dix/window.c +index 34bed93d9..30ae5db89 100644 +--- a/dix/window.c ++++ b/dix/window.c +@@ -1342,6 +1342,12 @@ ChangeWindowAttributes(WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) + client->errorValue = val; + goto PatchUp; + } ++ /* if we're not actually changing the window's state, hide ++ * CWBackingStore from vmaskCopy so it doesn't get passed to ++ * ->ChangeWindowAttributes below ++ */ ++ if (pWin->backingStore == val) ++ continue; + pWin->backingStore = val; + pWin->forcedBS = FALSE; + break; +-- +2.21.0 + diff --git a/SOURCES/0001-dix-leave-last.valuators-alone-on-slave-switch.patch b/SOURCES/0001-dix-leave-last.valuators-alone-on-slave-switch.patch new file mode 100644 index 0000000..dc2ed03 --- /dev/null +++ b/SOURCES/0001-dix-leave-last.valuators-alone-on-slave-switch.patch @@ -0,0 +1,88 @@ +From 13f9b07039484927532d913dbccc664679235bf6 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 25 Mar 2019 13:19:41 +1000 +Subject: [PATCH xserver] dix: leave last.valuators alone on slave switch + +Terms: +dev->last.valuator[] is the last value given to us by the driver +dev->valuator.axisVal[] is the last value sent to the client +dev->last.scroll[] is the abs value of the scroll axis as given by the driver, + used for button emulation calculation (and the remainder) + +This function updates the device's last.valuator state based on the current +master axis state. This way, relative motion continues fluidly when switching +between devices. Before mouse 2 comes into effect, it's valuator state is +updated to wherever the pointer currently is so the relative event applies on +top of that. + +This can only work for x/y axes, all other axes aren't guaranteed to have the +same meaning and/or may not be present: +- xtest device: no valuator 2 +- mouse: valuator 2 is horizontal scroll axis +- tablet: valuator 2 is pressure + +Scaling the current value from the pressure range into the range for +horizontal scrolling makes no sense. And it causes scroll jumps: + +- scroll down, last.valuator == axisVal == 20 +- xdotool click 1, the XTest device doesn't have that valuator +- scroll up + - updateSlaveDeviceCoords reset last.valuator to 0 (axisVal == 20) + - DeviceClassesChangedEvent includes value 20 for the axis + - event is processed, last.value changes from 0 to -1 + - axisVal is updated to -1, causing a jump of -21 + +The same applies when we switch from tablet to mouse wheel if the pressure +value is 0 on proximity out (basically guaranteed). So let's drop this code +altogether and only leave the scaling for the relative x/y motion. + +Signed-off-by: Peter Hutterer +--- + dix/getevents.c | 25 +------------------------ + 1 file changed, 1 insertion(+), 24 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index d8955969a..f83dac709 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -331,9 +331,6 @@ rescaleValuatorAxis(double coord, AxisInfoPtr from, AxisInfoPtr to, + static void + updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev) + { +- int i; +- DeviceIntPtr lastSlave; +- + /* master->last.valuators[0]/[1] is in desktop-wide coords and the actual + * position of the pointer */ + pDev->last.valuators[0] = master->last.valuators[0]; +@@ -358,27 +355,7 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev) + screenInfo.height); + } + +- /* calculate the other axis as well based on info from the old +- * slave-device. If the old slave had less axes than this one, +- * last.valuators is reset to 0. +- */ +- if ((lastSlave = master->last.slave) && lastSlave->valuator) { +- for (i = 2; i < pDev->valuator->numAxes; i++) { +- if (i >= lastSlave->valuator->numAxes) { +- pDev->last.valuators[i] = 0; +- valuator_mask_set_double(pDev->last.scroll, i, 0); +- } +- else { +- double val = pDev->last.valuators[i]; +- +- val = rescaleValuatorAxis(val, lastSlave->valuator->axes + i, +- pDev->valuator->axes + i, 0, 0); +- pDev->last.valuators[i] = val; +- valuator_mask_set_double(pDev->last.scroll, i, val); +- } +- } +- } +- ++ /* other axes are left as-is */ + } + + /** +-- +2.20.1 diff --git a/SOURCES/0001-dri2-Set-fallback-driver-names-for-Intel-and-AMD-chi.patch b/SOURCES/0001-dri2-Set-fallback-driver-names-for-Intel-and-AMD-chi.patch new file mode 100644 index 0000000..b2d36e7 --- /dev/null +++ b/SOURCES/0001-dri2-Set-fallback-driver-names-for-Intel-and-AMD-chi.patch @@ -0,0 +1,55 @@ +From 2a9268e4a0ba7b062ded4d361be3119d887aac41 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 3 Sep 2019 11:20:58 -0400 +Subject: [PATCH xserver] dri2: Set fallback driver names for Intel and AMD + chips +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +i965 and radeonsi, respectively, are the drivers that have been +receiving new hardware support. It's really silly to need to update the +server side to know specific new devices IDs every time a new ASIC comes +out. + +Reviewed-by: Michel Dänzer +--- + hw/xfree86/dri2/pci_ids/pci_id_driver_map.h | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h b/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h +index da7ea1c1e..04f372279 100644 +--- a/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h ++++ b/hw/xfree86/dri2/pci_ids/pci_id_driver_map.h +@@ -45,12 +45,6 @@ static const int r600_chip_ids[] = { + #undef CHIPSET + }; + +-static const int radeonsi_chip_ids[] = { +-#define CHIPSET(chip, name, family) chip, +-#include "pci_ids/radeonsi_pci_ids.h" +-#undef CHIPSET +-}; +- + static const int virtio_gpu_chip_ids[] = { + #define CHIPSET(chip, name, family) chip, + #include "pci_ids/virtio_gpu_pci_ids.h" +@@ -71,13 +65,14 @@ static const struct { + } driver_map[] = { + { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) }, + { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) }, ++ { 0x8086, "i965", NULL, -1 }, + #ifndef DRIVER_MAP_GALLIUM_ONLY + { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) }, + { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) }, + #endif + { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) }, + { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) }, +- { 0x1002, "radeonsi", radeonsi_chip_ids, ARRAY_SIZE(radeonsi_chip_ids) }, ++ { 0x1002, "radeonsi", NULL, -1 }, + { 0x10de, "nouveau", NULL, -1 }, + { 0x1af4, "virtio_gpu", virtio_gpu_chip_ids, ARRAY_SIZE(virtio_gpu_chip_ids) }, + { 0x15ad, "vmwgfx", vmwgfx_chip_ids, ARRAY_SIZE(vmwgfx_chip_ids) }, +-- +2.23.0 + diff --git a/SOURCES/0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch b/SOURCES/0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch index 64c9cd7..9c0a311 100644 --- a/SOURCES/0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch +++ b/SOURCES/0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch @@ -26,12 +26,12 @@ index 314acba6ce..6e11aa3b88 100644 struct OdevAttributes *attribs = config_odev_allocate_attributes(); - const char *value; + const char *value, *str; - + attribs->path = XNFstrdup(path); attribs->syspath = XNFstrdup(syspath); @@ -482,8 +482,8 @@ config_udev_odev_setup_attribs(struct udev_device *udev_device, const char *path attribs->minor = minor; - + value = udev_device_get_property_value(udev_device, "ID_PATH"); - if (value && !strncmp(value, "pci-", 4)) { - attribs->busid = XNFstrdup(value); @@ -39,6 +39,7 @@ index 314acba6ce..6e11aa3b88 100644 + attribs->busid = XNFstrdup(str); attribs->busid[3] = ':'; } - --- + +-- 2.21.0 + diff --git a/SOURCES/0001-linux-Make-platform-device-probe-less-fragile.patch b/SOURCES/0001-linux-Make-platform-device-probe-less-fragile.patch index 79d8c21..38bf933 100644 --- a/SOURCES/0001-linux-Make-platform-device-probe-less-fragile.patch +++ b/SOURCES/0001-linux-Make-platform-device-probe-less-fragile.patch @@ -26,7 +26,7 @@ index 3a73189e25..8c6c4b6665 100644 --- a/config/udev.c +++ b/config/udev.c @@ -56,7 +56,7 @@ static struct udev_monitor *udev_monitor; - + #ifdef CONFIG_UDEV_KMS static void -config_udev_odev_setup_attribs(const char *path, const char *syspath, @@ -35,16 +35,16 @@ index 3a73189e25..8c6c4b6665 100644 config_odev_probe_proc_ptr probe_callback); #endif @@ -128,7 +128,7 @@ device_added(struct udev_device *udev_device) - + LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path); - + - config_udev_odev_setup_attribs(path, syspath, major(devnum), + config_udev_odev_setup_attribs(udev_device, path, syspath, major(devnum), minor(devnum), NewGPUDeviceRequest); return; } @@ -322,7 +322,7 @@ device_removed(struct udev_device *device) - + LogMessage(X_INFO, "config/udev: removing GPU device %s %s\n", syspath, path); - config_udev_odev_setup_attribs(path, syspath, major(devnum), @@ -54,7 +54,7 @@ index 3a73189e25..8c6c4b6665 100644 systemd_logind_vtenter(); @@ -465,17 +465,24 @@ config_udev_fini(void) #ifdef CONFIG_UDEV_KMS - + static void -config_udev_odev_setup_attribs(const char *path, const char *syspath, +config_udev_odev_setup_attribs(struct udev_device *udev_device, const char *path, const char *syspath, @@ -63,12 +63,12 @@ index 3a73189e25..8c6c4b6665 100644 { struct OdevAttributes *attribs = config_odev_allocate_attributes(); + const char *value; - + attribs->path = XNFstrdup(path); attribs->syspath = XNFstrdup(syspath); attribs->major = major; attribs->minor = minor; - + + value = udev_device_get_property_value(udev_device, "ID_PATH"); + if (value && !strncmp(value, "pci-", 4)) { + attribs->busid = XNFstrdup(value); @@ -81,7 +81,7 @@ index 3a73189e25..8c6c4b6665 100644 @@ -516,7 +523,7 @@ config_udev_odev_probe(config_odev_probe_proc_ptr probe_callback) else if (!check_seat(udev_device)) goto no_probe; - + - config_udev_odev_setup_attribs(path, syspath, major(devnum), + config_udev_odev_setup_attribs(udev_device, path, syspath, major(devnum), minor(devnum), probe_callback); @@ -138,5 +138,5 @@ index 70374ace88..e623062192 100644 if (!v) { xf86Msg(X_ERROR, "%s: failed to query DRM version\n", path); -- -2.19.1 +2.21.0 diff --git a/SOURCES/0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch b/SOURCES/0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch index 6579290..6ab37ba 100644 --- a/SOURCES/0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch +++ b/SOURCES/0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch @@ -23,16 +23,16 @@ index 24311c1..4fc62e4 100644 + {OPTION_ATOMIC, "Atomic", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; - + @@ -1061,7 +1062,9 @@ PreInit(ScrnInfoPtr pScrn, int flags) } - + ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1); - ms->atomic_modeset = (ret == 0); + if ((ms->atomic_modeset = (ret == 0))) + ms->atomic_modeset = xf86ReturnOptValBool(ms->drmmode.Options, + OPTION_ATOMIC, FALSE); - + ms->kms_has_modifiers = FALSE; ret = drmGetCap(ms->fd, DRM_CAP_ADDFB2_MODIFIERS, &value); diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h @@ -45,7 +45,8 @@ index c8db4b8..46ba78a 100644 OPTION_DOUBLE_SHADOW, + OPTION_ATOMIC, } modesettingOpts; - + typedef struct --- +-- 2.19.0 + diff --git a/SOURCES/0001-mustard-Don-t-probe-for-drivers-not-shipped-in-RHEL7.patch b/SOURCES/0001-mustard-Don-t-probe-for-drivers-not-shipped-in-RHEL7.patch index d6bd969..92c06e0 100644 --- a/SOURCES/0001-mustard-Don-t-probe-for-drivers-not-shipped-in-RHEL7.patch +++ b/SOURCES/0001-mustard-Don-t-probe-for-drivers-not-shipped-in-RHEL7.patch @@ -102,7 +102,7 @@ index 258988a..e4d4402 100644 - { - int idx = 0; - --#ifdef __linux__ +-#if defined(__linux__) || defined(__NetBSD__) - driverList[idx++] = "nouveau"; -#endif - driverList[idx++] = "nv"; diff --git a/SOURCES/0001-xf86-set-status-to-connected-for-monitors-enabled-in.patch b/SOURCES/0001-xf86-set-status-to-connected-for-monitors-enabled-in.patch new file mode 100644 index 0000000..12e5dcf --- /dev/null +++ b/SOURCES/0001-xf86-set-status-to-connected-for-monitors-enabled-in.patch @@ -0,0 +1,74 @@ +From 8ab80fd5057f3d954ac6dc310cc8773e9694a0b1 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Fri, 29 Mar 2019 08:44:07 +1000 +Subject: [PATCH] xf86: set status to connected for monitors enabled in conf + +If the user sets Option "Enable" "TRUE" for a monitor, the X +server will connect the connector a crtc but tell the user it +is disconnected. + +However the user in this case is mutter, when it gets it's view +of the output configuration it sees the output is disconnected +and never sets it up again, which seems like the right thing to do. + +If we let the user enable a monitor, lets just set it as always +connected. + +Reviewed-by: Olivier Fourdan +Signed-off-by: Dave Airlie +--- + hw/xfree86/modes/xf86Crtc.c | 10 ++++++++++ + hw/xfree86/modes/xf86Crtc.h | 1 + + hw/xfree86/modes/xf86RandR12.c | 5 ++++- + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index b3b84cc13..21daf9a01 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -552,6 +552,16 @@ xf86OutputSetMonitor(xf86OutputPtr output) + "Output %s has no monitor section\n", output->name); + } + ++Bool ++xf86OutputForceEnabled(xf86OutputPtr output) ++{ ++ Bool enable; ++ ++ if (xf86GetOptValBool(output->options, OPTION_ENABLE, &enable) && enable) ++ return TRUE; ++ return FALSE; ++} ++ + static Bool + xf86OutputEnabled(xf86OutputPtr output, Bool strict) + { +diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h +index 427c6bff4..bf3e808bc 100644 +--- a/hw/xfree86/modes/xf86Crtc.h ++++ b/hw/xfree86/modes/xf86Crtc.h +@@ -1144,4 +1144,5 @@ xf86ProviderSetup(ScrnInfoPtr scrn, + extern _X_EXPORT void + xf86DetachAllCrtc(ScrnInfoPtr scrn); + ++Bool xf86OutputForceEnabled(xf86OutputPtr output); + #endif /* _XF86CRTC_H_ */ +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 0838dbf82..b476c07ce 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1647,7 +1647,10 @@ xf86RandR12SetInfo12(ScreenPtr pScreen) + RROutputSetConnection(output->randr_output, RR_Connected); + break; + case XF86OutputStatusDisconnected: +- RROutputSetConnection(output->randr_output, RR_Disconnected); ++ if (xf86OutputForceEnabled(output)) ++ RROutputSetConnection(output->randr_output, RR_Connected); ++ else ++ RROutputSetConnection(output->randr_output, RR_Disconnected); + break; + case XF86OutputStatusUnknown: + RROutputSetConnection(output->randr_output, RR_UnknownConnection); +-- +2.20.1 + diff --git a/SOURCES/0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch b/SOURCES/0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch index f521c78..e5d4c07 100644 --- a/SOURCES/0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch +++ b/SOURCES/0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch @@ -16,11 +16,12 @@ index 686cb51..710a41d 100644 @@ -776,6 +776,8 @@ xf86CrtcCloseScreen(ScreenPtr screen) crtc->randr_crtc = NULL; } - + + scrn->LeaveVT(scrn); + screen->CloseScreen = config->CloseScreen; - + xf86RotateCloseScreen(screen); --- +-- 2.19.1 + diff --git a/SOURCES/0001-xfree86-Only-switch-to-original-VT-if-it-is-active.patch b/SOURCES/0001-xfree86-Only-switch-to-original-VT-if-it-is-active.patch index 4d36450..1e0768b 100644 --- a/SOURCES/0001-xfree86-Only-switch-to-original-VT-if-it-is-active.patch +++ b/SOURCES/0001-xfree86-Only-switch-to-original-VT-if-it-is-active.patch @@ -19,7 +19,7 @@ index 039dc4a4d..358d89f0f 100644 @@ -272,101 +272,111 @@ xf86OpenConsole(void) xf86SetConsoleHandler(drain_console, NULL); } - + nTty = tty_attr; nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP); nTty.c_oflag = 0; @@ -40,36 +40,36 @@ index 039dc4a4d..358d89f0f 100644 } } } - + #pragma GCC diagnostic pop - + void xf86CloseConsole(void) { struct vt_mode VT; + struct vt_stat vts; int ret; - + if (xf86Info.ShareVTs) { close(xf86Info.consoleFd); return; } - + /* * unregister the drain_console handler * - what to do if someone else changed it in the meantime? */ xf86SetConsoleHandler(NULL, NULL); - + /* Back to text mode ... */ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT)); if (ret < 0) xf86Msg(X_WARNING, "xf86CloseConsole: KDSETMODE failed: %s\n", strerror(errno)); - + SYSCALL(ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode)); tcsetattr(xf86Info.consoleFd, TCSANOW, &tty_attr); - + SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT)); if (ret < 0) xf86Msg(X_WARNING, "xf86CloseConsole: VT_GETMODE failed: %s\n", @@ -82,7 +82,7 @@ index 039dc4a4d..358d89f0f 100644 xf86Msg(X_WARNING, "xf86CloseConsole: VT_SETMODE failed: %s\n", strerror(errno)); } - + if (xf86Info.autoVTSwitch) { /* - * Perform a switch back to the active VT when we were started @@ -106,14 +106,14 @@ index 039dc4a4d..358d89f0f 100644 } close(xf86Info.consoleFd); /* make the vt-manager happy */ } - + #define CHECK_FOR_REQUIRED_ARGUMENT() \ if (((i + 1) >= argc) || (!argv[i + 1])) { \ ErrorF("Required argument to %s not specified\n", argv[i]); \ UseMsg(); \ FatalError("Required argument to %s not specified\n", argv[i]); \ } - + int xf86ProcessArgument(int argc, char *argv[], int i) { @@ -125,11 +125,12 @@ index 039dc4a4d..358d89f0f 100644 KeepTty = TRUE; return 1; } - + if ((argv[i][0] == 'v') && (argv[i][1] == 't')) { if (sscanf(argv[i], "vt%2d", &xf86Info.vtno) == 0) { UseMsg(); xf86Info.vtno = -1; return 0; --- +-- 2.21.0 + diff --git a/SPECS/xorg-x11-server.spec b/SPECS/xorg-x11-server.spec index d062984..3fd5065 100644 --- a/SPECS/xorg-x11-server.spec +++ b/SPECS/xorg-x11-server.spec @@ -41,8 +41,8 @@ Summary: X.Org X11 X server Name: xorg-x11-server -Version: 1.20.1 -Release: 6%{?gitdate:.%{gitdate}}%{?dist} +Version: 1.20.4 +Release: 10%{?gitdate:.%{gitdate}}%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -100,21 +100,35 @@ Patch9710: 0001-modesetting-software-cursor-hack.patch # Bug 1599885 - RFE: enable backing store's Always mode Patch9750: 0001-composite-Implement-backing-store-Always.patch +Patch9751: 0001-dix-Optimize-setting-backing-store-state.patch +Patch9752: 0001-composite-Remove-excess-compUnredirectWindow.patch +Patch9753: 0001-composite-Additional-paranoia-in-compDestroyDamage.patch -Patch9751: 0001-glamor_egl-Don-t-initialize-on-llvmpipe.patch -Patch9752: 0001-xwayland-Don-t-initialize-glamor-on-llvmpipe.patch -Patch9753: 0001-linux-Make-platform-device-probe-less-fragile.patch +#Patch9751: 0001-glamor_egl-Don-t-initialize-on-llvmpipe.patch +#Patch9752: 0001-xwayland-Don-t-initialize-glamor-on-llvmpipe.patch +#Patch9753: 0001-linux-Make-platform-device-probe-less-fragile.patch Patch9754: 0001-xfree86-try-harder-to-span-on-multihead.patch Patch9755: 0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch Patch9756: 0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch -Patch9757: 0001-Disable-logfile-and-modulepath-when-running-with-ele.patch +#Patch9757: 0001-Disable-logfile-and-modulepath-when-running-with-ele.patch + +# Startx will have segment fault with hyper-V environment +Patch9759: 0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch +Patch9760: 0001-linux-Make-platform-device-probe-less-fragile.patch +# ... which also needs https://gitlab.freedesktop.org/xorg/xserver/merge_requests/217 +Patch9761: 0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch + +# Bug 1640207 - Qt5 scroll misbehaving after XTest button event +Patch9770: 0001-dix-leave-last.valuators-alone-on-slave-switch.patch + +# Bug 1612924 - upstream backport for allow monitors to be enabled connected +Patch9800: 0001-xf86-set-status-to-connected-for-monitors-enabled-in.patch # Bug 1680120 - upstream backport to fix user switching Patch9900: 0001-xfree86-Only-switch-to-original-VT-if-it-is-active.patch -# Bug 1717309 - Startx will have segment fault with hyper-V environment -Patch9901: 0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch -# ... which also needs https://gitlab.freedesktop.org/xorg/xserver/merge_requests/217 -Patch9902: 0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch + +# Bug 1763001 - Xorg.#.log show "(EE) modeset(0): [DRI2] No driver mapping found..." +Patch9910: 0001-dri2-Set-fallback-driver-names-for-Intel-and-AMD-chi.patch %global moduledir %{_libdir}/xorg/modules %global drimoduledir %{_libdir}/dri @@ -597,20 +611,38 @@ rm -rf $RPM_BUILD_ROOT %{xserver_source_dir} %changelog -* Wed Jun 19 2019 Adam Jackson - 1.20.1-5.6 -- Fix platform device PCI detection for complex bus topologies +* Wed Jan 08 2020 Adam Jackson - 1.20.4-10 +- Set fallback DRI2 driver names for Intel and AMD -* Mon Jun 17 2019 Adam Jackson - 1.20.1-5.5 -- Fix segfault in non-PCI platform detection +* Tue Aug 13 2019 Adam Jackson - 1.20.4-9 +- Fix a crash when destroying a redirected window with backing store -* Wed Jun 12 2019 Ray Strode - 1.20.1-5.4 +* Wed Jun 19 2019 Adam Jackson - 1.20.4-8 +- Fix platform device PCI detection with complex bus topologies + +* Tue May 28 2019 Adam Jackson - 1.20.4-7 +- Fix a segfault with non-PCI platform devices (and other cases) + +* Mon May 06 2019 Ray Strode - 1.20.4-6 - Stop VT switching when inactive server dies - Related: #1719361 + Resolves: #1680120 + +* Thu Apr 25 2019 Adam Jackson - 1.20.4-5 +- Fix a crash in RRProviderAutoConfigGpuScreen + +* Wed Apr 03 2019 Dave Airlie - 1.20.4-3 +- Backport fix for 1612924 - enabled monitors + +* Tue Apr 02 2019 Peter Hutterer 1.20.4-2 +- Don't reset last.valuators on slave device switch (#1640207) + +* Tue Mar 05 2019 Adam Jackson - 1.20.4-1 +- xserver 1.20.4 -* Tue Feb 12 2019 Adam Jackson - 1.20.1-5.3 +* Tue Feb 12 2019 Adam Jackson - 1.20.1-7 - Sync platform probe patch with upstream -* Fri Nov 23 2018 Olivier Fourdan - 1.20.1-5.2 +* Fri Nov 23 2018 Olivier Fourdan - 1.20.1-6 - Move LeaveVT after resetting randr pointers in xf86CrtcCloseScreen * Mon Oct 22 2018 Adam Jackson - 1.20.1-5.1