diff options
-rw-r--r-- | 0001-qxl-fix-qxl_release_-map-unmap.patch | 61 | ||||
-rw-r--r-- | 0002-qxl-keep-separate-release_bo-pointer.patch | 120 | ||||
-rw-r--r-- | bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch | 127 | ||||
-rw-r--r-- | configs/fedora/generic/x86/CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI | 1 | ||||
-rw-r--r-- | gitrev | 2 | ||||
-rw-r--r-- | kernel-i686-PAE.config | 1 | ||||
-rw-r--r-- | kernel-i686-PAEdebug.config | 1 | ||||
-rw-r--r-- | kernel-i686-debug.config | 1 | ||||
-rw-r--r-- | kernel-i686.config | 1 | ||||
-rw-r--r-- | kernel-x86_64-debug.config | 1 | ||||
-rw-r--r-- | kernel-x86_64.config | 1 | ||||
-rw-r--r-- | kernel.spec | 17 | ||||
-rw-r--r-- | mvebu-a37xx-fixes.patch | 62 | ||||
-rw-r--r-- | sources | 3 |
14 files changed, 17 insertions, 382 deletions
diff --git a/0001-qxl-fix-qxl_release_-map-unmap.patch b/0001-qxl-fix-qxl_release_-map-unmap.patch deleted file mode 100644 index 952dbfa16..000000000 --- a/0001-qxl-fix-qxl_release_-map-unmap.patch +++ /dev/null @@ -1,61 +0,0 @@ -From aabf8665c5e88deefe8b27898bad089b67f8b08a Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann <kraxel@redhat.com> -Date: Tue, 17 Apr 2018 09:11:12 +0200 -Subject: [PATCH 1/2] qxl: fix qxl_release_{map,unmap} - -s/PAGE_SIZE/PAGE_MASK/ - -Luckily release_offset is never larger than PAGE_SIZE, so the bug has no -bad side effects and managed to stay unnoticed for years that way ... - -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - drivers/gpu/drm/qxl/qxl_ioctl.c | 4 ++-- - drivers/gpu/drm/qxl/qxl_release.c | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/drivers/gpu/drm/qxl/qxl_ioctl.c b/drivers/gpu/drm/qxl/qxl_ioctl.c -index e8c0b10372..ae37cfc56b 100644 ---- a/drivers/gpu/drm/qxl/qxl_ioctl.c -+++ b/drivers/gpu/drm/qxl/qxl_ioctl.c -@@ -182,9 +182,9 @@ static int qxl_process_single_command(struct qxl_device *qdev, - goto out_free_reloc; - - /* TODO copy slow path code from i915 */ -- fb_cmd = qxl_bo_kmap_atomic_page(qdev, cmd_bo, (release->release_offset & PAGE_SIZE)); -+ fb_cmd = qxl_bo_kmap_atomic_page(qdev, cmd_bo, (release->release_offset & PAGE_MASK)); - unwritten = __copy_from_user_inatomic_nocache -- (fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_SIZE), -+ (fb_cmd + sizeof(union qxl_release_info) + (release->release_offset & ~PAGE_MASK), - u64_to_user_ptr(cmd->command), cmd->command_size); - - { -diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c -index b223c8d0a4..91a10459da 100644 ---- a/drivers/gpu/drm/qxl/qxl_release.c -+++ b/drivers/gpu/drm/qxl/qxl_release.c -@@ -411,10 +411,10 @@ union qxl_release_info *qxl_release_map(struct qxl_device *qdev, - struct qxl_bo_list *entry = list_first_entry(&release->bos, struct qxl_bo_list, tv.head); - struct qxl_bo *bo = to_qxl_bo(entry->tv.bo); - -- ptr = qxl_bo_kmap_atomic_page(qdev, bo, release->release_offset & PAGE_SIZE); -+ ptr = qxl_bo_kmap_atomic_page(qdev, bo, release->release_offset & PAGE_MASK); - if (!ptr) - return NULL; -- info = ptr + (release->release_offset & ~PAGE_SIZE); -+ info = ptr + (release->release_offset & ~PAGE_MASK); - return info; - } - -@@ -426,7 +426,7 @@ void qxl_release_unmap(struct qxl_device *qdev, - struct qxl_bo *bo = to_qxl_bo(entry->tv.bo); - void *ptr; - -- ptr = ((void *)info) - (release->release_offset & ~PAGE_SIZE); -+ ptr = ((void *)info) - (release->release_offset & ~PAGE_MASK); - qxl_bo_kunmap_atomic_page(qdev, bo, ptr); - } - --- -2.9.3 - diff --git a/0002-qxl-keep-separate-release_bo-pointer.patch b/0002-qxl-keep-separate-release_bo-pointer.patch deleted file mode 100644 index 66b4bdb2d..000000000 --- a/0002-qxl-keep-separate-release_bo-pointer.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 0e305b67752775d6f47b2730bfba5bc77ac81f16 Mon Sep 17 00:00:00 2001 -From: Gerd Hoffmann <kraxel@redhat.com> -Date: Tue, 17 Apr 2018 22:36:48 +0200 -Subject: [PATCH 2/2] qxl: keep separate release_bo pointer - -qxl expects that list_first_entry(release->bos) returns the first -element qxl added to the list. ttm_eu_reserve_buffers() may reorder -the list though. - -Add a release_bo field to struct qxl_release and use that instead. - -Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> ---- - drivers/gpu/drm/qxl/qxl_drv.h | 1 + - drivers/gpu/drm/qxl/qxl_cmd.c | 6 ++---- - drivers/gpu/drm/qxl/qxl_release.c | 12 ++++++------ - 3 files changed, 9 insertions(+), 10 deletions(-) - -diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h -index 00a1a66b05..864b456080 100644 ---- a/drivers/gpu/drm/qxl/qxl_drv.h -+++ b/drivers/gpu/drm/qxl/qxl_drv.h -@@ -167,6 +167,7 @@ struct qxl_release { - - int id; - int type; -+ struct qxl_bo *release_bo; - uint32_t release_offset; - uint32_t surface_release_id; - struct ww_acquire_ctx ticket; -diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c -index c0fb52c6d4..01665b98c5 100644 ---- a/drivers/gpu/drm/qxl/qxl_cmd.c -+++ b/drivers/gpu/drm/qxl/qxl_cmd.c -@@ -179,10 +179,9 @@ qxl_push_command_ring_release(struct qxl_device *qdev, struct qxl_release *relea - uint32_t type, bool interruptible) - { - struct qxl_command cmd; -- struct qxl_bo_list *entry = list_first_entry(&release->bos, struct qxl_bo_list, tv.head); - - cmd.type = type; -- cmd.data = qxl_bo_physical_address(qdev, to_qxl_bo(entry->tv.bo), release->release_offset); -+ cmd.data = qxl_bo_physical_address(qdev, release->release_bo, release->release_offset); - - return qxl_ring_push(qdev->command_ring, &cmd, interruptible); - } -@@ -192,10 +191,9 @@ qxl_push_cursor_ring_release(struct qxl_device *qdev, struct qxl_release *releas - uint32_t type, bool interruptible) - { - struct qxl_command cmd; -- struct qxl_bo_list *entry = list_first_entry(&release->bos, struct qxl_bo_list, tv.head); - - cmd.type = type; -- cmd.data = qxl_bo_physical_address(qdev, to_qxl_bo(entry->tv.bo), release->release_offset); -+ cmd.data = qxl_bo_physical_address(qdev, release->release_bo, release->release_offset); - - return qxl_ring_push(qdev->cursor_ring, &cmd, interruptible); - } -diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c -index 91a10459da..7c11855b74 100644 ---- a/drivers/gpu/drm/qxl/qxl_release.c -+++ b/drivers/gpu/drm/qxl/qxl_release.c -@@ -173,6 +173,7 @@ qxl_release_free_list(struct qxl_release *release) - list_del(&entry->tv.head); - kfree(entry); - } -+ release->release_bo = NULL; - } - - void -@@ -296,7 +297,6 @@ int qxl_alloc_surface_release_reserved(struct qxl_device *qdev, - { - if (surface_cmd_type == QXL_SURFACE_CMD_DESTROY && create_rel) { - int idr_ret; -- struct qxl_bo_list *entry = list_first_entry(&create_rel->bos, struct qxl_bo_list, tv.head); - struct qxl_bo *bo; - union qxl_release_info *info; - -@@ -304,8 +304,9 @@ int qxl_alloc_surface_release_reserved(struct qxl_device *qdev, - idr_ret = qxl_release_alloc(qdev, QXL_RELEASE_SURFACE_CMD, release); - if (idr_ret < 0) - return idr_ret; -- bo = to_qxl_bo(entry->tv.bo); -+ bo = create_rel->release_bo; - -+ (*release)->release_bo = bo; - (*release)->release_offset = create_rel->release_offset + 64; - - qxl_release_list_add(*release, bo); -@@ -365,6 +366,7 @@ int qxl_alloc_release_reserved(struct qxl_device *qdev, unsigned long size, - - bo = qxl_bo_ref(qdev->current_release_bo[cur_idx]); - -+ (*release)->release_bo = bo; - (*release)->release_offset = qdev->current_release_bo_offset[cur_idx] * release_size_per_bo[cur_idx]; - qdev->current_release_bo_offset[cur_idx]++; - -@@ -408,8 +410,7 @@ union qxl_release_info *qxl_release_map(struct qxl_device *qdev, - { - void *ptr; - union qxl_release_info *info; -- struct qxl_bo_list *entry = list_first_entry(&release->bos, struct qxl_bo_list, tv.head); -- struct qxl_bo *bo = to_qxl_bo(entry->tv.bo); -+ struct qxl_bo *bo = release->release_bo; - - ptr = qxl_bo_kmap_atomic_page(qdev, bo, release->release_offset & PAGE_MASK); - if (!ptr) -@@ -422,8 +423,7 @@ void qxl_release_unmap(struct qxl_device *qdev, - struct qxl_release *release, - union qxl_release_info *info) - { -- struct qxl_bo_list *entry = list_first_entry(&release->bos, struct qxl_bo_list, tv.head); -- struct qxl_bo *bo = to_qxl_bo(entry->tv.bo); -+ struct qxl_bo *bo = release->release_bo; - void *ptr; - - ptr = ((void *)info) - (release->release_offset & ~PAGE_MASK); --- -2.9.3 - diff --git a/bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch b/bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch deleted file mode 100644 index c6f7f12de..000000000 --- a/bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch +++ /dev/null @@ -1,127 +0,0 @@ -From patchwork Thu Aug 3 15:52:08 2017 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v3] dma-mapping: skip USB devices when configuring DMA during probe -From: Johan Hovold <johan@kernel.org> -X-Patchwork-Id: 9879371 -Message-Id: <20170803155208.22165-1-johan@kernel.org> -To: Christoph Hellwig <hch@lst.de>, - Marek Szyprowski <m.szyprowski@samsung.com>, - Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>, - linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, - Alan Stern <stern@rowland.harvard.edu>, Johan Hovold <johan@kernel.org>, - stable <stable@vger.kernel.org>, Robin Murphy <robin.murphy@arm.com>, - Sricharan R <sricharan@codeaurora.org>, - Stefan Wahren <stefan.wahren@i2se.com> -Date: Thu, 3 Aug 2017 17:52:08 +0200 - -USB devices use the DMA mask and offset of the controller, which have -already been setup when a device is probed. Note that modifying the -DMA mask of a USB device would change the mask for the controller (and -all devices on the bus) as the mask is literally shared. - -Since commit 2bf698671205 ("USB: of: fix root-hub device-tree node -handling"), of_dma_configure() would be called also for root hubs, which -use the device node of the controller. A separate, long-standing bug -that makes of_dma_configure() generate a 30-bit DMA mask from the RPI3's -"dma-ranges" would thus set a broken mask also for the controller. This -in turn prevents USB devices from enumerating when control transfers -fail: - - dwc2 3f980000.usb: Cannot do DMA to address 0x000000003a166a00 - -Note that the aforementioned DMA-mask bug was benign for the HCD itself -as the dwc2 driver overwrites the mask previously set by -of_dma_configure() for the platform device in its probe callback. The -mask would only later get corrupted when the root-hub child device was -probed. - -Fix this, and similar future problems, by adding a flag to struct device -which prevents driver core from calling dma_configure() during probe and -making sure it is set for USB devices. - -Fixes: 09515ef5ddad ("of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices") -Cc: stable <stable@vger.kernel.org> # 4.12 -Cc: Robin Murphy <robin.murphy@arm.com> -Cc: Sricharan R <sricharan@codeaurora.org> -Cc: Stefan Wahren <stefan.wahren@i2se.com> -Reported-by: Hans Verkuil <hverkuil@xs4all.nl> -Signed-off-by: Johan Hovold <johan@kernel.org> ---- - -v3 - - add flag to struct device to prevent DMA configuration during probe instead - of checking for the USB bus type, which is not available when USB is built - as a module as noted by Alan - - drop moderated rpi list from CC - -v2 - - amend commit message and point out that the long-standing 30-bit DMA-mask - bug was benign to the dwc2 HCD itself (Robin) - - add and use a new dev_is_usb() helper (Robin) - - - drivers/base/dma-mapping.c | 6 ++++++ - drivers/usb/core/usb.c | 1 + - include/linux/device.h | 3 +++ - 3 files changed, 10 insertions(+) - -diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c -index b555ff9dd8fc..f9f703be0ad1 100644 ---- a/drivers/base/dma-mapping.c -+++ b/drivers/base/dma-mapping.c -@@ -345,6 +345,9 @@ int dma_configure(struct device *dev) - enum dev_dma_attr attr; - int ret = 0; - -+ if (dev->skip_dma_configure) -+ return 0; -+ - if (dev_is_pci(dev)) { - bridge = pci_get_host_bridge_device(to_pci_dev(dev)); - dma_dev = bridge; -@@ -369,6 +372,9 @@ int dma_configure(struct device *dev) - - void dma_deconfigure(struct device *dev) - { -+ if (dev->skip_dma_configure) -+ return; -+ - of_dma_deconfigure(dev); - acpi_dma_deconfigure(dev); - } -diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c -index 17681d5638ac..2a85d905b539 100644 ---- a/drivers/usb/core/usb.c -+++ b/drivers/usb/core/usb.c -@@ -588,6 +588,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent, - * Note: calling dma_set_mask() on a USB device would set the - * mask for the entire HCD, so don't do that. - */ -+ dev->dev.skip_dma_configure = true; - dev->dev.dma_mask = bus->sysdev->dma_mask; - dev->dev.dma_pfn_offset = bus->sysdev->dma_pfn_offset; - set_dev_node(&dev->dev, dev_to_node(bus->sysdev)); -diff --git a/include/linux/device.h b/include/linux/device.h -index 723cd54b94da..022cf258068b 100644 ---- a/include/linux/device.h -+++ b/include/linux/device.h -@@ -877,6 +877,8 @@ struct dev_links_info { - * @offline: Set after successful invocation of bus type's .offline(). - * @of_node_reused: Set if the device-tree node is shared with an ancestor - * device. -+ * @skip_dma_configure: Set if driver core should not configure DMA for this -+ * device during probe. - * - * At the lowest level, every device in a Linux system is represented by an - * instance of struct device. The device structure contains the information -@@ -965,6 +967,7 @@ struct device { - bool offline_disabled:1; - bool offline:1; - bool of_node_reused:1; -+ bool skip_dma_configure:1; - }; - - static inline struct device *kobj_to_dev(struct kobject *kobj) diff --git a/configs/fedora/generic/x86/CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI b/configs/fedora/generic/x86/CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI new file mode 100644 index 000000000..a371306cb --- /dev/null +++ b/configs/fedora/generic/x86/CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI @@ -0,0 +1 @@ +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m @@ -1 +1 @@ -0644f186fc9d77bb5bd198369e59fb28927a3692 +6da6c0db5316275015e8cc2959f12a17584aeb64 diff --git a/kernel-i686-PAE.config b/kernel-i686-PAE.config index 4bd00a3e4..563b25788 100644 --- a/kernel-i686-PAE.config +++ b/kernel-i686-PAE.config @@ -5230,6 +5230,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel-i686-PAEdebug.config b/kernel-i686-PAEdebug.config index 51237fbf2..a6970df17 100644 --- a/kernel-i686-PAEdebug.config +++ b/kernel-i686-PAEdebug.config @@ -5253,6 +5253,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel-i686-debug.config b/kernel-i686-debug.config index 73abadf08..f11cdf372 100644 --- a/kernel-i686-debug.config +++ b/kernel-i686-debug.config @@ -5253,6 +5253,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel-i686.config b/kernel-i686.config index 9893cb666..6520df0ef 100644 --- a/kernel-i686.config +++ b/kernel-i686.config @@ -5230,6 +5230,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel-x86_64-debug.config b/kernel-x86_64-debug.config index 38583172b..26ce140c7 100644 --- a/kernel-x86_64-debug.config +++ b/kernel-x86_64-debug.config @@ -5341,6 +5341,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel-x86_64.config b/kernel-x86_64.config index 54cfebb3d..7ef6b0ced 100644 --- a/kernel-x86_64.config +++ b/kernel-x86_64.config @@ -5318,6 +5318,7 @@ CONFIG_SND_SOC_WM8524=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set CONFIG_SND_SONICVIBES=m # CONFIG_SND_SPI is not set +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m # CONFIG_SND_SUPPORT_OLD_API is not set diff --git a/kernel.spec b/kernel.spec index 329968fb1..9e5986099 100644 --- a/kernel.spec +++ b/kernel.spec @@ -75,9 +75,9 @@ Summary: The Linux kernel # The next upstream release sublevel (base_sublevel+1) %define upstream_sublevel %(echo $((%{base_sublevel} + 1))) # The rc snapshot level -%global rcrev 2 +%global rcrev 3 # The git snapshot level -%define gitrev 3 +%define gitrev 0 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -617,9 +617,6 @@ Patch311: arm-dts-Add-am335x-pocketbeagle.patch # https://patchwork.kernel.org/patch/10133165/ Patch315: mvebu-a37xx-fixes.patch -# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/ -Patch320: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch - Patch324: bcm283x-clk-audio-fixes.patch # Enabling Patches for the RPi3+ @@ -643,10 +640,6 @@ Patch503: v3-2-2-Input-synaptics---Lenovo-X1-Carbon-5-should-use-SMBUS-RMI.patch # Drop this when configs are updated Patch504: 0001-Back-out-Kconfig.patch -# rhbz 1565354 -Patch505: 0001-qxl-fix-qxl_release_-map-unmap.patch -Patch506: 0002-qxl-keep-separate-release_bo-pointer.patch - # END OF PATCH DEFINITIONS %endif @@ -1898,6 +1891,12 @@ fi # # %changelog +* Mon Apr 30 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.0-0.rc3.git0.1 +- Linux v4.17-rc3 + +* Mon Apr 30 2018 Justin M. Forbes <jforbes@fedoraproject.org> +- Disable debugging options. + * Fri Apr 27 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.0-0.rc2.git3.1 - Linux v4.17-rc2-155-g0644f186fc9d diff --git a/mvebu-a37xx-fixes.patch b/mvebu-a37xx-fixes.patch index c4390ccfe..0c04e8b00 100644 --- a/mvebu-a37xx-fixes.patch +++ b/mvebu-a37xx-fixes.patch @@ -1,65 +1,3 @@ -From patchwork Sun Apr 22 12:33:46 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: serial: mvebu-uart: Fix local flags handling on termios update -From: Marc Zyngier <Marc.Zyngier@arm.com> -X-Patchwork-Id: 10354521 -Message-Id: <20180422123346.15538-1-marc.zyngier@arm.com> -To: linux-arm-kernel@lists.infradead.org, - linux-kernel@vger.kernel.org -Cc: Gregory CLEMENT <gregory.clement@free-electrons.com>, - Allen Yan <yanwei@marvell.com>, - Greg Kroah-Hartman <gregkh@linuxfoundation.org>, - Miquel Raynal <miquel.raynal@free-electrons.com> -Date: Sun, 22 Apr 2018 13:33:46 +0100 - -Commit 68a0db1d7da2 reworked the baud rate selection, but also added -a (not so) subtle change in the way the local flags (c_lflag in the -termios structure) are handled, forcing the new flags to always be the -same as the old ones. - -The reason for that particular change is both obscure and undocumented. -It also completely breaks userspace. Something as trivial as getty is -unusable: - -<example> - Debian GNU/Linux 9 sy-borg ttyMV0 - - sy-borg login: root - root - [timeout] - - Debian GNU/Linux 9 sy-borg ttyMV0 -</example> - -which is quite obvious in retrospect: getty cannot get in control of -the echo mode, is stuck in canonical mode, and times out without ever -seeing anything valid. It also begs the question of how this change was -ever tested. - -The fix is pretty obvious: stop messing with c_lflag, and the world -will be a happier place. - -Cc: stable@vger.kernel.org # 4.15+ -Fixes: 68a0db1d7da2 ("serial: mvebu-uart: add function to change baudrate") -Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> ---- - drivers/tty/serial/mvebu-uart.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/drivers/tty/serial/mvebu-uart.c b/drivers/tty/serial/mvebu-uart.c -index 750e5645dc85..f503fab1e268 100644 ---- a/drivers/tty/serial/mvebu-uart.c -+++ b/drivers/tty/serial/mvebu-uart.c -@@ -495,7 +495,6 @@ static void mvebu_uart_set_termios(struct uart_port *port, - termios->c_iflag |= old->c_iflag & ~(INPCK | IGNPAR); - termios->c_cflag &= CREAD | CBAUD; - termios->c_cflag |= old->c_cflag & ~(CREAD | CBAUD); -- termios->c_lflag = old->c_lflag; - } - - spin_unlock_irqrestore(&port->lock, flags); From patchwork Sun Mar 25 19:57:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 @@ -1,3 +1,2 @@ SHA512 (linux-4.16.tar.xz) = ab47849314b177d0eec9dbf261f33972b0d89fb92fb0650130ffa7abc2f36c0fab2d06317dc1683c51a472a9a631573a9b1e7258d6281a2ee189897827f14662 -SHA512 (patch-4.17-rc2.xz) = 9456b16b16dc389b7f53cef01078b537557bbf28fb3a0ce286fbfef1605eb498c966dd98cff9e98eb772598c39b2e62643b3ef591112dbb8eb2ec06cbd18c7c6 -SHA512 (patch-4.17-rc2-git3.xz) = 590477c87240a5e4a3626185cb3c443c81a8e69e151fbc946987b0e5c5a2536c521a5bdd94cffa4b0cf825590089d3cb491575da20b02a694e40526853feba0d +SHA512 (patch-4.17-rc3.xz) = 5b8a72386f295628e5ebdccbfb25caea60237233496d3c98769942f40c83e7339f35b51b084e75cc8ced15d26b5194345ea9c38f724b138aae2cf498924bd3e7 |