diff --git a/core/linux-espressobin/0003-dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch b/core/linux-espressobin/0003-dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch new file mode 100644 index 000000000..b90d59c47 --- /dev/null +++ b/core/linux-espressobin/0003-dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch @@ -0,0 +1,47 @@ +From f9ab7d6805f9309813af166c8a486c93b25e1cd6 Mon Sep 17 00:00:00 2001 +From: Robin Murphy +Date: Mon, 18 Feb 2019 18:27:06 +0000 +Subject: [PATCH 3/3] dmaengine: mv_xor: Use correct device for DMA API + +Using dma_dev->dev for mappings before it's assigned with the correct +device is unlikely to work as expected, and with future dma-direct +changes, passing a NULL device may end up crashing entirely. I don't +know enough about this hardware or the mv_xor_prep_dma_interrupt() +operation to implement the appropriate error-handling logic that would +have revealed those dma_map_single() calls failing on arm64 for as long +as the driver has been enabled there, but moving the assignment earlier +will at least make the current code operate as intended. + +Fixes: 22843545b200 ("dma: mv_xor: Add support for DMA_INTERRUPT") +Reported-by: John David Anglin +Tested-by: John David Anglin +Signed-off-by: Robin Murphy +Acked-by: Thomas Petazzoni +Tested-by: Thomas Petazzoni +--- + drivers/dma/mv_xor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c +index 7f595355fb79..fe4a7c71fede 100644 +--- a/drivers/dma/mv_xor.c ++++ b/drivers/dma/mv_xor.c +@@ -1059,6 +1059,7 @@ mv_xor_channel_add(struct mv_xor_device *xordev, + mv_chan->op_in_desc = XOR_MODE_IN_DESC; + + dma_dev = &mv_chan->dmadev; ++ dma_dev->dev = &pdev->dev; + mv_chan->xordev = xordev; + + /* +@@ -1091,7 +1092,6 @@ mv_xor_channel_add(struct mv_xor_device *xordev, + dma_dev->device_free_chan_resources = mv_xor_free_chan_resources; + dma_dev->device_tx_status = mv_xor_status; + dma_dev->device_issue_pending = mv_xor_issue_pending; +- dma_dev->dev = &pdev->dev; + + /* set prep routines based on capability */ + if (dma_has_cap(DMA_INTERRUPT, dma_dev->cap_mask)) +-- +2.20.1 + diff --git a/core/linux-espressobin/0003-mv_xor-fix.patch b/core/linux-espressobin/0003-mv_xor-fix.patch deleted file mode 100644 index 6301054ed..000000000 --- a/core/linux-espressobin/0003-mv_xor-fix.patch +++ /dev/null @@ -1,34 +0,0 @@ -From cd4db736f012393b2c5a59643bf515efac7b4129 Mon Sep 17 00:00:00 2001 -From: Kevin Mihelich -Date: Tue, 5 Mar 2019 21:55:28 -0700 -Subject: [PATCH 3/3] mv_xor fix - -From Robin Murphy: -https://archive.armlinux.org.uk/lurker/message/20190214.175842.7a58b73c.en.html ---- - drivers/dma/mv_xor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c -index 7f595355fb79..fe4a7c71fede 100644 ---- a/drivers/dma/mv_xor.c -+++ b/drivers/dma/mv_xor.c -@@ -1059,6 +1059,7 @@ mv_xor_channel_add(struct mv_xor_device *xordev, - mv_chan->op_in_desc = XOR_MODE_IN_DESC; - - dma_dev = &mv_chan->dmadev; -+ dma_dev->dev = &pdev->dev; - mv_chan->xordev = xordev; - - /* -@@ -1091,7 +1092,6 @@ mv_xor_channel_add(struct mv_xor_device *xordev, - dma_dev->device_free_chan_resources = mv_xor_free_chan_resources; - dma_dev->device_tx_status = mv_xor_status; - dma_dev->device_issue_pending = mv_xor_issue_pending; -- dma_dev->dev = &pdev->dev; - - /* set prep routines based on capability */ - if (dma_has_cap(DMA_INTERRUPT, dma_dev->cap_mask)) --- -2.20.1 - diff --git a/core/linux-espressobin/PKGBUILD b/core/linux-espressobin/PKGBUILD index d21911134..b8a4d999c 100644 --- a/core/linux-espressobin/PKGBUILD +++ b/core/linux-espressobin/PKGBUILD @@ -7,7 +7,7 @@ pkgbase=linux-espressobin _srcname=linux-5.0 _kernelname=${pkgbase#linux} _desc="Globalscale ESPRESSOBin" -pkgver=5.0.0 +pkgver=5.0.1 pkgrel=1 arch=('aarch64') url="http://www.kernel.org/" @@ -15,19 +15,20 @@ license=('GPL2') makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git') options=('!strip') source=("http://www.kernel.org/pub/linux/kernel/v5.x/${_srcname}.tar.xz" - #"http://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz" + "http://www.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz" '0001-arm64-dts-marvell-armada37xx-Add-eth0-alias.patch' '0002-PCI-aardvark-disable-LOS-state-by-default.patch' - '0003-mv_xor-fix.patch' + '0003-dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch' 'config' 'linux.preset' '60-linux.hook' '90-linux.hook' '91-linux.hook') md5sums=('7381ce8aac80a01448e065ce795c19c0' + '488f0f1b00a0861b4c3ddf578f1bd548' '35d24bc95c9825bc8054198c3dadf078' '3182b369ce5cd3313d1613cb51c51543' - '4723caad478622528ab7b9d49f397dde' + '07614c7299b30ca06764c3752f07bd8d' '2c0176f382de86a5a76f3aa2e6fb7b27' '86d4a35722b5410e3b29fc92dae15d4b' 'ce6c81ad1ad1f8b333fd6077d47abdaf' @@ -38,12 +39,12 @@ prepare() { cd ${_srcname} # add upstream patch - #git apply --whitespace=nowarn ../patch-${pkgver} + git apply --whitespace=nowarn ../patch-${pkgver} # ALARM patches git apply ../0001-arm64-dts-marvell-armada37xx-Add-eth0-alias.patch git apply ../0002-PCI-aardvark-disable-LOS-state-by-default.patch - git apply ../0003-mv_xor-fix.patch + git apply ../0003-dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch cat "${srcdir}/config" > ./.config