diff --git a/debian/changelog b/debian/changelog index 15fd0c300..b8b16a9e0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -146,6 +146,11 @@ linux (4.0.4-1) UNRELEASED; urgency=medium * md/raid0: fix restore to sector variable in raid0_make_request (Closes: #786372) (regression in 4.0.2) * [x86] e1000e: Add support for Sunrise Point (i219) (Closes: #784546) + * [x86] config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected + (Closes: #786551) + * cdc_ncm: Fix tx_bytes statistics (regression in 4.0) + * [armhf] USB: musb: Fix order of conditions for assigning end point + operations (regression in 3.19) [ Ian Campbell ] * [armhf+arm64] Enabled generic SYSCON regmap reset driver diff --git a/debian/patches/bugfix/all/cdc_ncm-fix-tx_bytes-statistics.patch b/debian/patches/bugfix/all/cdc_ncm-fix-tx_bytes-statistics.patch new file mode 100644 index 000000000..903c8709e --- /dev/null +++ b/debian/patches/bugfix/all/cdc_ncm-fix-tx_bytes-statistics.patch @@ -0,0 +1,35 @@ +From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= +Date: Fri, 22 May 2015 13:15:22 +0200 +Subject: cdc_ncm: Fix tx_bytes statistics +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://git.kernel.org/linus/44f6731d8b68fa02f5ed65eaceac41f8c3c9279e + +The tx_curr_frame_payload field is u32. When we try to calculate a +small negative delta based on it, we end up with a positive integer +close to 2^32 instead. So the tx_bytes pointer increases by about +2^32 for every transmitted frame. + +Fix by calculating the delta as a signed long. + +Cc: Ben Hutchings +Reported-by: Florian Bruhin +Fixes: 7a1e890e2168 ("usbnet: Fix tx_bytes statistic running backward in cdc_ncm") +Signed-off-by: Bjørn Mork +Signed-off-by: David S. Miller +--- + drivers/net/usb/cdc_ncm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/usb/cdc_ncm.c ++++ b/drivers/net/usb/cdc_ncm.c +@@ -1178,7 +1178,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev + * payload data instead. + */ + usbnet_set_skb_tx_stats(skb_out, n, +- ctx->tx_curr_frame_payload - skb_out->len); ++ (long)ctx->tx_curr_frame_payload - skb_out->len); + + return skb_out; + diff --git a/debian/patches/bugfix/all/musb-musb-fix-order-of-conditions-for-assigning-end-p.patch b/debian/patches/bugfix/all/musb-musb-fix-order-of-conditions-for-assigning-end-p.patch new file mode 100644 index 000000000..fd8ad55c9 --- /dev/null +++ b/debian/patches/bugfix/all/musb-musb-fix-order-of-conditions-for-assigning-end-p.patch @@ -0,0 +1,45 @@ +From: Ben Hutchings +Date: Sun, 24 May 2015 04:21:46 +0100 +Subject: USB: musb: Fix order of conditions for assigning end point operations +Forwarded: http://mid.gmane.org/1432438052.12412.98.camel@decadent.org.uk + +Currently we always assign one of the two common implementations of +ep_offset and ep_select operations, overwriting any platform-specific +implementations. + +Fixes: d026e9c76aac ("usb: musb: Change end point selection to use new IO access") +Signed-off-by: Ben Hutchings +--- + drivers/usb/musb/musb_core.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/drivers/usb/musb/musb_core.c ++++ b/drivers/usb/musb/musb_core.c +@@ -2026,13 +2026,7 @@ musb_init_controller(struct device *dev, + if (musb->ops->quirks) + musb->io.quirks = musb->ops->quirks; + +- /* At least tusb6010 has it's own offsets.. */ +- if (musb->ops->ep_offset) +- musb->io.ep_offset = musb->ops->ep_offset; +- if (musb->ops->ep_select) +- musb->io.ep_select = musb->ops->ep_select; +- +- /* ..and some devices use indexed offset or flat offset */ ++ /* Most devices use indexed offset or flat offset */ + if (musb->io.quirks & MUSB_INDEXED_EP) { + musb->io.ep_offset = musb_indexed_ep_offset; + musb->io.ep_select = musb_indexed_ep_select; +@@ -2041,6 +2035,12 @@ musb_init_controller(struct device *dev, + musb->io.ep_select = musb_flat_ep_select; + } + ++ /* At least tusb6010 has its own offsets */ ++ if (musb->ops->ep_offset) ++ musb->io.ep_offset = musb->ops->ep_offset; ++ if (musb->ops->ep_select) ++ musb->io.ep_select = musb->ops->ep_select; ++ + if (musb->ops->fifo_mode) + fifo_mode = musb->ops->fifo_mode; + else diff --git a/debian/patches/bugfix/x86/config-enable-need_dma_map_state-by-default-when-swi.patch b/debian/patches/bugfix/x86/config-enable-need_dma_map_state-by-default-when-swi.patch new file mode 100644 index 000000000..653dfdcf4 --- /dev/null +++ b/debian/patches/bugfix/x86/config-enable-need_dma_map_state-by-default-when-swi.patch @@ -0,0 +1,54 @@ +From: Konrad Rzeszutek Wilk +Date: Fri, 17 Apr 2015 15:04:48 -0400 +Subject: config: Enable NEED_DMA_MAP_STATE by default when SWIOTLB is selected +Origin: https://git.kernel.org/linus/a6dfa128ce5c414ab46b1d690f7a1b8decb8526d +Bug-Debian: https://bugs.debian.org/786551 + +A huge amount of NIC drivers use the DMA API, however if +compiled under 32-bit an very important part of the DMA API can +be ommitted leading to the drivers not working at all +(especially if used with 'swiotlb=force iommu=soft'). + +As Prashant Sreedharan explains it: "the driver [tg3] uses +DEFINE_DMA_UNMAP_ADDR(), dma_unmap_addr_set() to keep a copy of +the dma "mapping" and dma_unmap_addr() to get the "mapping" +value. On most of the platforms this is a no-op, but ... with +"iommu=soft and swiotlb=force" this house keeping is required, +... otherwise we pass 0 while calling pci_unmap_/pci_dma_sync_ +instead of the DMA address." + +As such enable this even when using 32-bit kernels. + +Reported-by: Ian Jackson +Signed-off-by: Konrad Rzeszutek Wilk +Acked-by: David S. Miller +Acked-by: Prashant Sreedharan +Cc: Borislav Petkov +Cc: H. Peter Anvin +Cc: Linus Torvalds +Cc: Michael Chan +Cc: Thomas Gleixner +Cc: boris.ostrovsky@oracle.com +Cc: cascardo@linux.vnet.ibm.com +Cc: david.vrabel@citrix.com +Cc: sanjeevb@broadcom.com +Cc: siva.kallam@broadcom.com +Cc: vyasevich@gmail.com +Cc: xen-devel@lists.xensource.com +Link: http://lkml.kernel.org/r/20150417190448.GA9462@l.oracle.com +Signed-off-by: Ingo Molnar +--- + arch/x86/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig +@@ -177,7 +177,7 @@ config SBUS + + config NEED_DMA_MAP_STATE + def_bool y +- depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG ++ depends on X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB + + config NEED_SG_DMA_LENGTH + def_bool y diff --git a/debian/patches/series b/debian/patches/series index 4dbc94068..7744dc051 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -77,3 +77,6 @@ features/all/e1000e/0001-e1000e-initial-support-for-i219.patch features/all/e1000e/0002-e1000e-fix-obscure-comments.patch features/all/e1000e/0003-e1000e-remove-calls-to-ioremap-unmap-for-nvm-addr.patch features/all/e1000e/0004-e1000e-nvm-write-protect-access-removed-from-spt-hw.patch +bugfix/x86/config-enable-need_dma_map_state-by-default-when-swi.patch +bugfix/all/cdc_ncm-fix-tx_bytes-statistics.patch +bugfix/all/musb-musb-fix-order-of-conditions-for-assigning-end-p.patch