added core/linux-trimslice

This commit is contained in:
Kevin Mihelich 2012-07-16 20:22:20 -04:00
parent 3a428f24b7
commit 875bfc97c1
9 changed files with 4212 additions and 0 deletions

View file

@ -0,0 +1,273 @@
# Maintainer: Dave <pepedog@archlinuxarm.org>
# Maintainer: Kevin Mihelich <kevin@archlinuxarm.org>
# TrimSlice kernel and headers
# - note: any other kernel packages should include headers for that march
# - there will be no v7 linux package, each march will be tagged individually
buildarch=4
pkgbase=linux-trimslice
pkgname=('linux-trimslice' 'linux-headers-trimslice')
# pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux}
_basekernel=3.1
pkgver=${_basekernel}.10
pkgrel=1
arch=('arm')
url="http://www.kernel.org/"
license=('GPL2')
makedepends=('xmlto' 'docbook-xsl' 'uboot-mkimage')
options=('!strip')
source=("https://gitorious.org/trimslice-kernel/trimslice-kernel/archive-tarball/trimslice-l4t.r15.01"
http://trimslice.com/download/drivers/firmware/rtl_nic/rtl8168d-1.fw
http://trimslice.com/download/drivers/firmware/rtl_nic/rtl8168d-2.fw
'armdma.patch'
'config'
'change-default-console-loglevel.patch'
'build-oops.diff'
'aufs3-3.1.patch.xz')
md5sums=('d4866354e4646240aef16aa0c16857d3'
'500d938ce15d1b0aff8d394aefb7a812'
'b14a1a124c2d58fd346ed25ffbbe2959'
'6e7667c6c6348bfeca22eaaa05462d62'
'4484cf433b2c69d3fb2a4b0dff9c817d'
'9d3c56a4b999c8bfbd4018089a62f662'
'754a3ac8597addf265d6d6cc34a587c9'
'd869f19ed1630ec92c2843d907ecc91b')
build() {
cd "${srcdir}/trimslice-kernel-trimslice-kernel"
# clean up git
make clean mrproper
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# remove this when a Kconfig knob is made available by upstream
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
# ALARM: add dma_coherent_write_sync calls to USB EHCI driver, AUFS
patch -Np1 -i "${srcdir}/armdma.patch"
patch -Np1 -i "${srcdir}/build-oops.diff"
patch -Np1 -i "${srcdir}/aufs3-3.1.patch"
cat "${srcdir}/config" > ./.config
# set extraversion to pkgrel
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
# don't run depmod on 'make install'. We'll do this ourselves in packaging
sed -i '2iexit 0' scripts/depmod.sh
# Copy in the ethernet firmware, needed for make!
mkdir -p firmware/rtl_nic
cp ${srcdir}/rtl8168d-1.fw firmware/rtl_nic/
cp ${srcdir}/rtl8168d-2.fw firmware/rtl_nic/
# get kernel version
make prepare
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config
# Copy back our configuration (use with new kernel version)
#cp ./.config ../config
####################
# stop here
# this is useful to configure the kernel
#msg "Stopping build"
#return 1
####################
#yes "" | make config
# build!
make ${MAKEFLAGS} uImage modules
}
package_linux-trimslice() {
pkgdesc="The Linux Kernel and modules - TrimSlice"
groups=('base')
depends=('coreutils' 'linux-firmware' 'module-init-tools>=3.16' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country')
provides=('kernel26' 'kernel26-trimslice' 'linux=${pkgver}')
conflicts=('kernel26-tegra' 'linux-omap' 'kernel26-trimslice' 'linux-tegra')
# replaces=('kernel26-tegra' 'kernel26-trimslice')
backup=("etc/mkinitcpio.d/${pkgname}.preset")
install=${pkgname}.install
cd "${srcdir}/trimslice-kernel-trimslice-kernel"
KARCH=arm
# get kernel version
_kernver="$(make kernelrelease)"
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
make INSTALL_MOD_PATH="${pkgdir}" modules_install
cp arch/$KARCH/boot/uImage "${pkgdir}/boot/uImage"
# set correct depmod command for install
sed \
-e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
-e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
-i "${startdir}/${pkgname}.install"
# remove build and source links
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
# remove the firmware
rm -rf "${pkgdir}/lib/firmware"
# gzip -9 all modules to safe 100MB of space
find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
# make room for external modules
ln -s "../extramodules-${_basekernel}-${_kernelname:-ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
# add real version for building modules and running depmod from post_install/upgrade
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}-${_kernelname:-ARCH}"
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}-${_kernelname:-ARCH}/version"
# move module tree /lib -> /usr/lib
mv "$pkgdir/lib" "$pkgdir/usr"
# Now we call depmod...
depmod -b "$pkgdir" -F System.map "$_kernver"
}
package_linux-headers-trimslice() {
pkgdesc="Header files and scripts for building modules for linux kernel - TrimSlice"
provides=('kernel26-headers-trimslice' 'linux-headers=${pkgver}')
conflicts=('kernel26-headers-tegra' 'linux-headers-omap' 'kernel26-headers-trimslice' 'linux-headers-tegra')
# replaces=('kernel26-headers-tegra' 'kernel26-headers-trimslice')
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
cd "${pkgdir}/usr/lib/modules/${_kernver}"
ln -sf ../../../src/linux-${_kernver} build
cd "${srcdir}/trimslice-kernel-trimslice-kernel"
install -D -m644 Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/Makefile"
install -D -m644 kernel/Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile"
install -D -m644 .config \
"${pkgdir}/usr/src/linux-${_kernver}/.config"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include"
for i in acpi asm-generic config crypto drm generated linux math-emu \
media net pcmcia scsi sound trace video xen; do
cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/"
done
# copy arch includes for external modules
mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH
cp -a arch/$KARCH/include ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/mach-tegra
cp -a arch/$KARCH/mach-tegra/include ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/mach-tegra/
# copy files necessary for later builds, like nvidia and vmware
cp Module.symvers "${pkgdir}/usr/src/linux-${_kernver}"
cp -a scripts "${pkgdir}/usr/src/linux-${_kernver}"
# fix permissions on scripts dir
chmod og-w -R "${pkgdir}/usr/src/linux-${_kernver}/scripts"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel"
cp arch/${KARCH}/Makefile "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
if [ "${CARCH}" = "i686" ]; then
cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
fi
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel/"
# add headers for lirc package
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video"
cp drivers/media/video/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/"
for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102; do
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}"
cp -a drivers/media/video/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}"
done
# add docbook makefile
install -D -m644 Documentation/DocBook/Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
# add dm headers
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
cp drivers/md/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
# add inotify.h
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/linux"
cp include/linux/inotify.h "${pkgdir}/usr/src/linux-${_kernver}/include/linux/"
# add wireless headers
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
cp net/mac80211/*.h "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
# add dvb headers for external modules
# in reference to:
# http://bugs.archlinux.org/task/9912
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core"
cp drivers/media/dvb/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/"
# and...
# http://bugs.archlinux.org/task/11194
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
cp include/config/dvb/*.h "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
# in reference to:
# http://bugs.archlinux.org/task/13146
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/"
cp drivers/media/dvb/frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/"
cp drivers/media/video/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/"
# add dvb headers
# in reference to:
# http://bugs.archlinux.org/task/20402
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb"
cp drivers/media/dvb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb/"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends"
cp drivers/media/dvb/frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners"
cp drivers/media/common/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners/"
# add xfs and shmem for aufs building
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/mm"
cp fs/xfs/xfs_sb.h "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h"
# copy in Kconfig files
for i in `find . -name "Kconfig*"`; do
mkdir -p "${pkgdir}"/usr/src/linux-${_kernver}/`echo ${i} | sed 's|/Kconfig.*||'`
cp ${i} "${pkgdir}/usr/src/linux-${_kernver}/${i}"
done
chown -R root.root "${pkgdir}/usr/src/linux-${_kernver}"
find "${pkgdir}/usr/src/linux-${_kernver}" -type d -exec chmod 755 {} \;
# strip scripts directory
find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
case "$(file -bi "${binary}")" in
*application/x-sharedlib*) # Libraries (.so)
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
*application/x-archive*) # Libraries (.a)
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
*application/x-executable*) # Binaries
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
esac
done
# remove unneeded architectures
rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/arch/{alpha,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,x86,xtensa}
}

View file

@ -0,0 +1,122 @@
diff -urN linux-3.1-rc4-a/arch/arm/include/asm/dma-mapping.h linux-3.1-rc4-b/arch/arm/include/asm/dma-mapping.h
--- linux-3.1-rc4-a/arch/arm/include/asm/dma-mapping.h 2011-08-29 05:16:01.000000000 +0100
+++ linux-3.1-rc4-b/arch/arm/include/asm/dma-mapping.h 2011-09-02 12:09:00.000000000 +0100
@@ -205,6 +205,15 @@
int dma_mmap_writecombine(struct device *, struct vm_area_struct *,
void *, dma_addr_t, size_t);
+#ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
+#define ARCH_HAS_DMA_COHERENT_WRITE_SYNC
+
+static inline void dma_coherent_write_sync(void)
+{
+ dsb();
+ outer_sync();
+}
+#endif
#ifdef CONFIG_DMABOUNCE
/*
diff -urN linux-3.1-rc4-a/Documentation/DMA-API-HOWTO.txt linux-3.1-rc4-b/Documentation/DMA-API-HOWTO.txt
--- linux-3.1-rc4-a/Documentation/DMA-API-HOWTO.txt 2011-08-29 05:16:01.000000000 +0100
+++ linux-3.1-rc4-b/Documentation/DMA-API-HOWTO.txt 2011-09-02 12:01:09.000000000 +0100
@@ -400,6 +400,22 @@
from a pool before you destroy the pool. This function may not
be called in interrupt context.
+Some architectures which supporting DMA coherent memory may still have write
+buffering between the CPU and DMA memory. This buffering may delay CPU writes
+from reaching coherent memory in a timely manner. These delays in turn can
+lead lead to dramatic performance issues in certain cases. An architecture
+may mitigate this problem to a large degree by having a write buffer flush
+implicit in the MMIO functions used to write to device registers. This works
+for the most common cases where a driver needs to write to a register to tell
+a device that something was written to the shared coherent memory. There are
+other cases where the device polls the dma-coherent memory for data written
+by the driver. In such cases, the driver needs to explicity force write buffer
+data to memory by calling:
+
+ dma_coherent_write_sync();
+
+
+
DMA Direction
The interfaces described in subsequent portions of this document
diff -urN linux-3.1-rc4-a/Documentation/DMA-API.txt linux-3.1-rc4-b/Documentation/DMA-API.txt
--- linux-3.1-rc4-a/Documentation/DMA-API.txt 2011-08-29 05:16:01.000000000 +0100
+++ linux-3.1-rc4-b/Documentation/DMA-API.txt 2011-09-02 12:03:06.000000000 +0100
@@ -418,6 +418,18 @@
....
+Part Ie - Write buffering to dma-coherent memory
+------------------------------------------------
+
+Some architectures supporting DMA coherent memory may have write
+buffering between the CPU and DMA memory. This buffering may delay
+CPU writes from reaching coherent memory in a timely manner.
+
+ void
+ dma_coherent_write_sync()
+
+Force any outstanding coherent writes to memory.
+
Part II - Advanced dma_ usage
-----------------------------
diff -urN linux-3.1-rc4-a/drivers/usb/host/ehci-q.c linux-3.1-rc4-b/drivers/usb/host/ehci-q.c
--- linux-3.1-rc4-a/drivers/usb/host/ehci-q.c 2011-08-29 05:16:01.000000000 +0100
+++ linux-3.1-rc4-b/drivers/usb/host/ehci-q.c 2011-09-02 12:17:20.000000000 +0100
@@ -114,6 +114,7 @@
/* HC must see latest qtd and qh data before we clear ACTIVE+HALT */
wmb ();
hw->hw_token &= cpu_to_hc32(ehci, QTD_TOGGLE | QTD_STS_PING);
+ dma_coherent_write_sync();
}
/* if it weren't for a common silicon quirk (writing the dummy into the qh
@@ -404,6 +405,7 @@
wmb();
hw->hw_token = cpu_to_hc32(ehci,
token);
+ dma_coherent_write_sync();
goto retry_xacterr;
}
stopped = 1;
@@ -753,8 +755,10 @@
}
/* by default, enable interrupt on urb completion */
- if (likely (!(urb->transfer_flags & URB_NO_INTERRUPT)))
+ if (likely(!(urb->transfer_flags & URB_NO_INTERRUPT))) {
qtd->hw_token |= cpu_to_hc32(ehci, QTD_IOC);
+ dma_coherent_write_sync();
+ }
return head;
cleanup:
@@ -1081,6 +1085,7 @@
/* let the hc process these next qtds */
wmb ();
dummy->hw_token = token;
+ dma_coherent_write_sync();
urb->hcpriv = qh_get (qh);
}
diff -urN linux-3.1-rc4-a/include/linux/dma-mapping.h linux-3.1-rc4-b/include/linux/dma-mapping.h
--- linux-3.1-rc4-a/include/linux/dma-mapping.h 2011-08-29 05:16:01.000000000 +0100
+++ linux-3.1-rc4-b/include/linux/dma-mapping.h 2011-09-02 12:06:06.000000000 +0100
@@ -154,6 +154,12 @@
}
#endif
+#ifndef ARCH_HAS_DMA_COHERENT_WRITE_SYNC
+static inline void dma_coherent_write_sync(void)
+{
+}
+#endif
+
/*
* Managed DMA API
*/

Binary file not shown.

View file

@ -0,0 +1,38 @@
diff -urN trimslice-kernel-trimslice-kernel-a/arch/arm/mach-tegra/arb_sema.c trimslice-kernel-trimslice-kernel-b/arch/arm/mach-tegra/arb_sema.c
--- trimslice-kernel-trimslice-kernel-a/arch/arm/mach-tegra/arb_sema.c 2012-04-15 09:14:26.000000000 +0100
+++ trimslice-kernel-trimslice-kernel-b/arch/arm/mach-tegra/arb_sema.c 2012-05-11 11:58:43.000000000 +0100
@@ -240,4 +240,4 @@
}
subsys_initcall(tegra_arb_init);
-MODULE_LICENSE("GPLv2");
+MODULE_LICENSE("GPL v2");
diff -urN trimslice-kernel-trimslice-kernel-a/arch/arm/mach-tegra/headsmp.S trimslice-kernel-trimslice-kernel-b/arch/arm/mach-tegra/headsmp.S
--- trimslice-kernel-trimslice-kernel-a/arch/arm/mach-tegra/headsmp.S 2012-04-15 09:14:26.000000000 +0100
+++ trimslice-kernel-trimslice-kernel-b/arch/arm/mach-tegra/headsmp.S 2012-05-11 11:57:43.000000000 +0100
@@ -298,6 +298,6 @@
.rept TEGRA_RESET_DATA_SIZE
.long 0
.endr
- .size __tegra_cpu_reset_handler_data, .-tegra_cpu_reset_handler_data
+ .size __tegra_cpu_reset_handler_data, .-__tegra_cpu_reset_handler_data
.align L1_CACHE_SHIFT
ENTRY(__tegra_cpu_reset_handler_end)
diff -urN trimslice-kernel-trimslice-kernel-a/drivers/crypto/tegra-aes.c trimslice-kernel-trimslice-kernel-b/drivers/crypto/tegra-aes.c
--- trimslice-kernel-trimslice-kernel-a/drivers/crypto/tegra-aes.c 2012-04-15 09:14:26.000000000 +0100
+++ trimslice-kernel-trimslice-kernel-b/drivers/crypto/tegra-aes.c 2012-05-11 12:00:29.000000000 +0100
@@ -1447,4 +1447,4 @@
MODULE_DESCRIPTION("Tegra AES hw acceleration support.");
MODULE_AUTHOR("NVIDIA Corporation");
-MODULE_LICENSE("GPLv2");
+MODULE_LICENSE("GPL v2");
diff -urN trimslice-kernel-trimslice-kernel-a/drivers/misc/tegra-cryptodev.c trimslice-kernel-trimslice-kernel-b/drivers/misc/tegra-cryptodev.c
--- trimslice-kernel-trimslice-kernel-a/drivers/misc/tegra-cryptodev.c 2012-04-15 09:14:26.000000000 +0100
+++ trimslice-kernel-trimslice-kernel-b/drivers/misc/tegra-cryptodev.c 2012-05-11 11:59:38.000000000 +0100
@@ -346,4 +346,4 @@
MODULE_DESCRIPTION("Tegra AES hw device node.");
MODULE_AUTHOR("NVIDIA Corporation");
-MODULE_LICENSE("GPLv2");
+MODULE_LICENSE("GPL v2");

View file

@ -0,0 +1,12 @@
diff -upr linux-3.0.orig/kernel/printk.c linux-3.0/kernel/printk.c
--- linux-3.0.orig/kernel/printk.c 2011-07-22 05:17:23.000000000 +0300
+++ linux-3.0/kernel/printk.c 2011-07-27 14:43:07.000000000 +0300
@@ -58,7 +58,7 @@ void asmlinkage __attribute__((weak)) ea
/* We show everything that is MORE important than this.. */
#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
-#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
+#define DEFAULT_CONSOLE_LOGLEVEL 4 /* anything MORE serious than KERN_DEBUG */
DECLARE_WAIT_QUEUE_HEAD(log_wait);

3742
core/linux-trimslice/config Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,25 @@
# arg 1: the new package version
# arg 2: the old package version
KERNEL_NAME=-trimslice
KERNEL_VERSION=3.1.10-2-l4t.r15.01
post_install () {
# updating module dependencies
echo ">>> Updating module dependencies. Please wait ..."
depmod ${KERNEL_VERSION}
}
post_upgrade() {
if grep "^[^#]*[[:space:]]/boot" etc/fstab 2>&1 >/dev/null; then
if ! grep "[[:space:]]/boot" etc/mtab 2>&1 >/dev/null; then
echo "WARNING: /boot appears to be a seperate partition but is not mounted"
echo " This is most likely not what you want. Please mount your /boot"
echo " partition and reinstall the kernel unless you are sure this is OK"
fi
fi
# updating module dependencies
echo ">>> Updating module dependencies. Please wait ..."
depmod ${KERNEL_VERSION}
}

Binary file not shown.

Binary file not shown.