Package: src:linux
Version: 3.16.7-ckt9-2
Severity: normal
Tags: d-i patch

Hi folks,

As described a little at
http://blog.einval.com/2015/05/19#mustang_installer I've been working
on getting Mustang support working. There's a (quite generic!) patch
from Mark Langsdorf for the XHCI platform code that allows for a
64-bit DMA mask:

http://www.spinics.net/lists/arm-kernel/msg373699.html

AFAICS this is needed for the Mustang, as all of its memory is mapped
over 4GiB. The patch hasn't (yet!) been accepted upstream, but I've
swapped mail with Mark and he says he's about to propose it again this
week. With the small attached patch applied to the Jessie kernel
(Mark's code plus a config tweak), I've got things working just fine.

It would be lovely if we could get this into Jessie for the 8.1 point
release. :-)

-- System Information:
Debian Release: 8.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru linux-3.16.7-ckt9/debian/changelog linux-3.16.7-ckt9/debian/changelog
--- linux-3.16.7-ckt9/debian/changelog	2015-04-13 01:01:55.000000000 +0000
+++ linux-3.16.7-ckt9/debian/changelog	2015-05-15 08:47:00.000000000 +0000
@@ -1,3 +1,10 @@
+linux (3.16.7-ckt9-2.1) unstable; urgency=medium
+
+  * arm64: enable XHCI USB on APM X-Gene
+  * usb: host: allow 64-bit DMA mask for XHCI
+
+ -- Steve McIntyre <93...@debian.org>  Fri, 15 May 2015 09:41:31 +0100
+
 linux (3.16.7-ckt9-2) unstable; urgency=medium
 
   * btrfs: simplify insert_orphan_item (Closes: #782362)
diff -Nru linux-3.16.7-ckt9/debian/config/arm64/config linux-3.16.7-ckt9/debian/config/arm64/config
--- linux-3.16.7-ckt9/debian/config/arm64/config	2015-01-02 03:46:07.000000000 +0000
+++ linux-3.16.7-ckt9/debian/config/arm64/config	2015-05-15 08:54:05.000000000 +0000
@@ -120,6 +120,8 @@
 CONFIG_USB_EHCI_HCD_PLATFORM=m
 CONFIG_USB_OHCI_HCD=m
 CONFIG_USB_OHCI_HCD_PLATFORM=m
+CONFIG_USB_XHCI_HCD=m
+CONFIG_USB_XHCI_PLATFORM=y
 
 ##
 ## file: drivers/virtio/Kconfig
diff -Nru linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch
--- linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch	1970-01-01 00:00:00.000000000 +0000
+++ linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch	2015-05-15 10:48:28.000000000 +0000
@@ -0,0 +1,40 @@
+Index: linux-3.16.7-ckt9/drivers/usb/host/xhci-plat.c
+===================================================================
+--- linux-3.16.7-ckt9.orig/drivers/usb/host/xhci-plat.c
++++ linux-3.16.7-ckt9/drivers/usb/host/xhci-plat.c
+@@ -115,14 +115,18 @@ static int xhci_plat_probe(struct platfo
+ 	if (!res)
+ 		return -ENODEV;
+ 
+-	/* Initialize dma_mask and coherent_dma_mask to 32-bits */
+-	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
+-	if (ret)
+-		return ret;
++	/* Try setting the coherent_dma_mask to 64 bits, then try 32 bits */
++	if (sizeof(dma_addr_t) < 8 ||
++		dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
++		ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
++		if (ret)
++			return ret;
++	}
+ 	if (!pdev->dev.dma_mask)
+ 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
+ 	else
+-		dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
++		dma_set_mask(&pdev->dev, pdev->dev.coherent_dma_mask);
++
+ 
+ 	hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
+ 	if (!hcd)
+Index: linux-3.16.7-ckt9/drivers/usb/host/Kconfig
+===================================================================
+--- linux-3.16.7-ckt9.orig/drivers/usb/host/Kconfig
++++ linux-3.16.7-ckt9/drivers/usb/host/Kconfig
+@@ -28,6 +28,7 @@
+ 
+ config USB_XHCI_PLATFORM
+ 	tristate
++	default m
+ 
+ config USB_XHCI_MVEBU
+ 	tristate "xHCI support for Marvell Armada 375/38x"
diff -Nru linux-3.16.7-ckt9/debian/patches/series linux-3.16.7-ckt9/debian/patches/series
--- linux-3.16.7-ckt9/debian/patches/series	2015-04-13 00:40:38.000000000 +0000
+++ linux-3.16.7-ckt9/debian/patches/series	2015-05-15 08:47:26.000000000 +0000
@@ -578,3 +578,4 @@
 debian/procfs-avoid-abi-change-in-3.16.7-ckt8.patch
 
 bugfix/all/btrfs-simplify-insert_orphan_item.patch
+features/arm64/xgene-enable-xhci-usb.patch

Reply via email to