This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 2.x development tree".
The branch, next has been updated via adde1ca8ce1588997936f5b22687525a2e6637b2 (commit) via ed4bbe44d121480e56c817f42f797423507c7630 (commit) from c519be42262c629abac86fb251a3f3921d42310d (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit adde1ca8ce1588997936f5b22687525a2e6637b2 Merge: c519be422 ed4bbe44d Author: Arne Fitzenreiter arne_f@ipfire.org Date: Tue Dec 11 08:01:59 2018 +0100
Merge branch 'master' into next
-----------------------------------------------------------------------
Summary of changes: lfs/linux | 3 + ...ux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch | 99 ++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch
Difference in files: diff --git a/lfs/linux b/lfs/linux index 0994e3e56..346378819 100644 --- a/lfs/linux +++ b/lfs/linux @@ -157,10 +157,13 @@ endif ifeq "$(KCFG)" "-multi" # Apply Arm-multiarch kernel patches. cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1 + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch + endif ifeq "$(BUILD_ARCH)" "aarch64" # Apply Arm-multiarch kernel patches. cd $(DIR_APP) && xzcat $(DIR_DL)/arm-multi-patches-$(ARM_PATCHES).patch.xz | patch -Np1 + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch endif cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-3.14.79-amba-fix.patch
diff --git a/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch b/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch new file mode 100644 index 000000000..e4c8b9982 --- /dev/null +++ b/src/patches/linux/linux-4.14-Revert-usb-dwc2-Fix-DMA-alignment.patch @@ -0,0 +1,99 @@ +From a44147a09baf8c46cc0b02332df3a4656e0659d5 Mon Sep 17 00:00:00 2001 +From: Arne Fitzenreiter arne_f@ipfire.org +Date: Mon, 10 Dec 2018 13:12:00 +0100 +Subject: [PATCH] Revert "usb: dwc2: Fix DMA alignment to start at allocated + boundary" + +This reverts commit 68fc92a0f3913d539d1ac68a861f895e34099e46. +--- + drivers/usb/dwc2/hcd.c | 44 +++++++++++++++++++++----------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c +index fa20ec4..4b81d08 100644 +--- a/drivers/usb/dwc2/hcd.c ++++ b/drivers/usb/dwc2/hcd.c +@@ -2644,29 +2644,34 @@ static int dwc2_alloc_split_dma_aligned_buf(struct dwc2_hsotg *hsotg, + + #define DWC2_USB_DMA_ALIGN 4 + ++struct dma_aligned_buffer { ++ void *kmalloc_ptr; ++ void *old_xfer_buffer; ++ u8 data[0]; ++}; ++ + static void dwc2_free_dma_aligned_buffer(struct urb *urb) + { +- void *stored_xfer_buffer; ++ struct dma_aligned_buffer *temp; + + if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER)) + return; + +- /* Restore urb->transfer_buffer from the end of the allocated area */ +- memcpy(&stored_xfer_buffer, urb->transfer_buffer + +- urb->transfer_buffer_length, sizeof(urb->transfer_buffer)); ++ temp = container_of(urb->transfer_buffer, ++ struct dma_aligned_buffer, data); + + if (usb_urb_dir_in(urb)) +- memcpy(stored_xfer_buffer, urb->transfer_buffer, ++ memcpy(temp->old_xfer_buffer, temp->data, + urb->transfer_buffer_length); +- kfree(urb->transfer_buffer); +- urb->transfer_buffer = stored_xfer_buffer; ++ urb->transfer_buffer = temp->old_xfer_buffer; ++ kfree(temp->kmalloc_ptr); + + urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER; + } + + static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags) + { +- void *kmalloc_ptr; ++ struct dma_aligned_buffer *temp, *kmalloc_ptr; + size_t kmalloc_size; + + if (urb->num_sgs || urb->sg || +@@ -2674,29 +2679,22 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags) + !((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1))) + return 0; + +- /* +- * Allocate a buffer with enough padding for original transfer_buffer +- * pointer. This allocation is guaranteed to be aligned properly for +- * DMA +- */ ++ /* Allocate a buffer with enough padding for alignment */ + kmalloc_size = urb->transfer_buffer_length + +- sizeof(urb->transfer_buffer); ++ sizeof(struct dma_aligned_buffer) + DWC2_USB_DMA_ALIGN - 1; + + kmalloc_ptr = kmalloc(kmalloc_size, mem_flags); + if (!kmalloc_ptr) + return -ENOMEM; + +- /* +- * Position value of original urb->transfer_buffer pointer to the end +- * of allocation for later referencing +- */ +- memcpy(kmalloc_ptr + urb->transfer_buffer_length, +- &urb->transfer_buffer, sizeof(urb->transfer_buffer)); +- ++ /* Position our struct dma_aligned_buffer such that data is aligned */ ++ temp = PTR_ALIGN(kmalloc_ptr + 1, DWC2_USB_DMA_ALIGN) - 1; ++ temp->kmalloc_ptr = kmalloc_ptr; ++ temp->old_xfer_buffer = urb->transfer_buffer; + if (usb_urb_dir_out(urb)) +- memcpy(kmalloc_ptr, urb->transfer_buffer, ++ memcpy(temp->data, urb->transfer_buffer, + urb->transfer_buffer_length); +- urb->transfer_buffer = kmalloc_ptr; ++ urb->transfer_buffer = temp->data; + + urb->transfer_flags |= URB_ALIGNED_TEMP_BUFFER; + +-- +2.7.4 +
hooks/post-receive -- IPFire 2.x development tree