mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-02-16 23:57:11 +00:00
core/linux-omap to 3.1.5-1
This commit is contained in:
parent
a641c6ed60
commit
471489dfa4
3 changed files with 105 additions and 8 deletions
93
core/linux-omap/0006-omap4-usb-improvement.patch
Normal file
93
core/linux-omap/0006-omap4-usb-improvement.patch
Normal file
|
@ -0,0 +1,93 @@
|
|||
From f392cbf75615e9d8cb90ef5ffb8d4e752b7be3c7 Mon Sep 17 00:00:00 2001
|
||||
From: Ming Lei <ming.lei@canonical.com>
|
||||
Date: Wed, 31 Aug 2011 00:03:13 +0800
|
||||
Subject: [PATCH] usb: ehci: make HC see up-to-date qh/qtd descriptor ASAP
|
||||
|
||||
This patch introduces the helper of ehci_sync_mem to flush
|
||||
qtd/qh into memory immediately on some ARM, so that HC can
|
||||
see the up-to-date qtd/qh descriptor asap.
|
||||
|
||||
This patch fixs one performance bug on ARM Cortex A9 dual core
|
||||
platform, which has been reported on quite a few ARM machines
|
||||
(OMAP4, Tegra 2, snowball...), see details from link of
|
||||
https://bugs.launchpad.net/bugs/709245.
|
||||
|
||||
The patch has been tested ok on OMAP4 panda A1 board, and the
|
||||
performance of 'dd' over usb mass storage can be increased from
|
||||
4~5MB/sec to 14~16MB/sec after applying this patch.
|
||||
|
||||
Cc: Russell King <linux@arm.linux.org.uk>
|
||||
Signed-off-by: Ming Lei <ming.lei@canonical.com>
|
||||
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
|
||||
---
|
||||
drivers/usb/host/ehci-q.c | 18 ++++++++++++++++++
|
||||
drivers/usb/host/ehci.h | 17 +++++++++++++++++
|
||||
2 files changed, 35 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
|
||||
index 0917e3a..b7f9496 100644
|
||||
--- a/drivers/usb/host/ehci-q.c
|
||||
+++ b/drivers/usb/host/ehci-q.c
|
||||
@@ -995,6 +995,12 @@ static void qh_link_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
head->qh_next.qh = qh;
|
||||
head->hw->hw_next = dma;
|
||||
|
||||
+ /*
|
||||
+ * flush qh descriptor into memory immediately,
|
||||
+ * see comments in qh_append_tds.
|
||||
+ */
|
||||
+ ehci_sync_mem();
|
||||
+
|
||||
qh_get(qh);
|
||||
qh->xacterrs = 0;
|
||||
qh->qh_state = QH_STATE_LINKED;
|
||||
@@ -1082,6 +1088,18 @@ static struct ehci_qh *qh_append_tds (
|
||||
wmb ();
|
||||
dummy->hw_token = token;
|
||||
|
||||
+ /*
|
||||
+ * Writing to dma coherent buffer on ARM may
|
||||
+ * be delayed to reach memory, so HC may not see
|
||||
+ * hw_token of dummy qtd in time, which can cause
|
||||
+ * the qtd transaction to be executed very late,
|
||||
+ * and degrade performance a lot. ehci_sync_mem
|
||||
+ * is added to flush 'token' immediatelly into
|
||||
+ * memory, so that ehci can execute the transaction
|
||||
+ * ASAP.
|
||||
+ */
|
||||
+ ehci_sync_mem();
|
||||
+
|
||||
urb->hcpriv = qh_get (qh);
|
||||
}
|
||||
}
|
||||
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
|
||||
index 989e0a8..6fb0de8 100644
|
||||
--- a/drivers/usb/host/ehci.h
|
||||
+++ b/drivers/usb/host/ehci.h
|
||||
@@ -736,6 +736,23 @@ static inline u32 hc32_to_cpup (const struct ehci_hcd *ehci, const __hc32 *x)
|
||||
|
||||
#endif
|
||||
|
||||
+/*
|
||||
+ * Writing to dma coherent memory on ARM may be delayed via L2
|
||||
+ * writing buffer, so introduce the helper which can flush L2 writing
|
||||
+ * buffer into memory immediately, especially used to flush ehci
|
||||
+ * descriptor to memory.
|
||||
+ */
|
||||
+#ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
|
||||
+static inline void ehci_sync_mem()
|
||||
+{
|
||||
+ mb();
|
||||
+}
|
||||
+#else
|
||||
+static inline void ehci_sync_mem()
|
||||
+{
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DEBUG
|
||||
--
|
||||
1.7.0.4
|
||||
|
|
@ -12,7 +12,7 @@ pkgname=('linux-omap' 'linux-headers-omap')
|
|||
# pkgname=linux-custom # Build kernel with a different name
|
||||
_kernelname=${pkgname#linux}
|
||||
_basekernel=3.1
|
||||
pkgver=${_basekernel}.4
|
||||
pkgver=${_basekernel}.5
|
||||
pkgrel=1
|
||||
arch=('arm')
|
||||
url="http://www.kernel.org/"
|
||||
|
@ -21,16 +21,18 @@ makedepends=('xmlto' 'docbook-xsl' 'uboot-mkimage')
|
|||
options=('!strip')
|
||||
source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2"
|
||||
"ftp://ftp.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.bz2"
|
||||
"rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.1.4-x5/patch-3.1.4-x5.diff.gz"
|
||||
"rcn-ee.diff.gz::http://rcn-ee.net/deb/sid-armhf/v3.1.5-x6/patch-3.1.5-x6.diff.gz"
|
||||
'config'
|
||||
'change-default-console-loglevel.patch'
|
||||
'usb-add-reset-resume-quirk-for-several-webcams.patch')
|
||||
'usb-add-reset-resume-quirk-for-several-webcams.patch'
|
||||
'0006-omap4-usb-improvement.patch')
|
||||
md5sums=('8d43453f8159b2332ad410b19d86a931'
|
||||
'b8b14bdfbf76cfef8e042e7d1a385fca'
|
||||
'e646da419ce620ed8be734887ec85dd5'
|
||||
'5d72a1932baed027ef23e9c055d72621'
|
||||
'84c040bb8c4f46d351731cb0c05d9474'
|
||||
'6793994c61ee2c1804dcb0d8cefb66ca'
|
||||
'87baa7d693f6dad08dbc2b93c39bb7d4'
|
||||
'9d3c56a4b999c8bfbd4018089a62f662'
|
||||
'd00814b57448895e65fbbc800e8a58ba')
|
||||
'd00814b57448895e65fbbc800e8a58ba'
|
||||
'd4c22c6f6c8c53d595552b6285aeab79')
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/linux-${_basekernel}"
|
||||
|
@ -51,6 +53,7 @@ build() {
|
|||
|
||||
# rcn-ee patchset
|
||||
patch -Np1 -i "${srcdir}/rcn-ee.diff"
|
||||
patch -Np1 -i "${srcdir}/0006-omap4-usb-improvement.patch"
|
||||
|
||||
cat "${srcdir}/config" > ./.config
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 3.1.4 Kernel Configuration
|
||||
# Linux/arm 3.1.5 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
|
@ -414,6 +414,7 @@ CONFIG_PL310_ERRATA_727915=y
|
|||
# CONFIG_ARM_ERRATA_754322 is not set
|
||||
# CONFIG_ARM_ERRATA_754327 is not set
|
||||
# CONFIG_ARM_ERRATA_764369 is not set
|
||||
# CONFIG_PL310_ERRATA_769419 is not set
|
||||
CONFIG_ARM_GIC=y
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue