From e7fbab24dcc329e8bf9672c6e29da0821808f98c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 00:17:51 +0200 Subject: [PATCH 01/32] projects/*/linux: add USB 3.0 support Signed-off-by: Stephan Raue --- projects/Generic/linux/linux.i386.conf | 3 ++- projects/ION/linux/linux.i386.conf | 3 ++- projects/ION/linux/linux.x86_64.conf | 3 ++- projects/Intel/linux/linux.i386.conf | 9 +++++---- projects/Intel/linux/linux.x86_64.conf | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/projects/Generic/linux/linux.i386.conf b/projects/Generic/linux/linux.i386.conf index 6984c818be..a3863e8cd8 100644 --- a/projects/Generic/linux/linux.i386.conf +++ b/projects/Generic/linux/linux.i386.conf @@ -2173,7 +2173,8 @@ CONFIG_USB_SUSPEND=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set diff --git a/projects/ION/linux/linux.i386.conf b/projects/ION/linux/linux.i386.conf index e1ef2b66f8..a68d0bfb5c 100644 --- a/projects/ION/linux/linux.i386.conf +++ b/projects/ION/linux/linux.i386.conf @@ -2052,7 +2052,8 @@ CONFIG_USB_SUSPEND=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set diff --git a/projects/ION/linux/linux.x86_64.conf b/projects/ION/linux/linux.x86_64.conf index c8783f04fd..6c65fc82f2 100644 --- a/projects/ION/linux/linux.x86_64.conf +++ b/projects/ION/linux/linux.x86_64.conf @@ -1987,7 +1987,8 @@ CONFIG_USB_SUSPEND=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set diff --git a/projects/Intel/linux/linux.i386.conf b/projects/Intel/linux/linux.i386.conf index 33628f6d17..3c79db5f52 100644 --- a/projects/Intel/linux/linux.i386.conf +++ b/projects/Intel/linux/linux.i386.conf @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux/i386 2.6.39-rc3 Kernel Configuration +# Linux/i386 2.6.39-rc5 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -141,7 +141,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_EXPERT=y -CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y # CONFIG_KALLSYMS is not set @@ -158,6 +157,7 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y +CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y # @@ -516,6 +516,7 @@ CONFIG_PCI_MSI=y CONFIG_HT_IRQ=y # CONFIG_PCI_IOV is not set CONFIG_PCI_IOAPIC=y +CONFIG_PCI_LABEL=y CONFIG_ISA_DMA_API=y # CONFIG_ISA is not set # CONFIG_MCA is not set @@ -2041,7 +2042,8 @@ CONFIG_USB_SUSPEND=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set @@ -2361,7 +2363,6 @@ CONFIG_VT6656=m # CONFIG_CS5535_GPIO is not set # CONFIG_XVMALLOC is not set # CONFIG_ZRAM is not set -# CONFIG_SAMSUNG_LAPTOP is not set # CONFIG_FB_SM7XX is not set # CONFIG_CRYSTALHD is not set # CONFIG_FB_XGI is not set diff --git a/projects/Intel/linux/linux.x86_64.conf b/projects/Intel/linux/linux.x86_64.conf index 3302b12789..0c9e780fee 100644 --- a/projects/Intel/linux/linux.x86_64.conf +++ b/projects/Intel/linux/linux.x86_64.conf @@ -1982,7 +1982,8 @@ CONFIG_USB_SUSPEND=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set From bacf9a5ad69e887423f13c6db7d5aed659471c8d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:36:48 +0200 Subject: [PATCH 02/32] new package: add package 'hotqueue' Signed-off-by: Stephan Raue --- packages/python/system/hotqueue/build | 36 +++++++++++++++++++++++++ packages/python/system/hotqueue/install | 25 +++++++++++++++++ packages/python/system/hotqueue/meta | 36 +++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100755 packages/python/system/hotqueue/build create mode 100755 packages/python/system/hotqueue/install create mode 100644 packages/python/system/hotqueue/meta diff --git a/packages/python/system/hotqueue/build b/packages/python/system/hotqueue/build new file mode 100755 index 0000000000..72f364cae4 --- /dev/null +++ b/packages/python/system/hotqueue/build @@ -0,0 +1,36 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr" +export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" + +cd $PKG_BUILD + +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +# rm -rf .install/usr/bin diff --git a/packages/python/system/hotqueue/install b/packages/python/system/hotqueue/install new file mode 100755 index 0000000000..a9c8b9924b --- /dev/null +++ b/packages/python/system/hotqueue/install @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cp -PR $PKG_BUILD/.install/* $INSTALL diff --git a/packages/python/system/hotqueue/meta b/packages/python/system/hotqueue/meta new file mode 100644 index 0000000000..af2c682420 --- /dev/null +++ b/packages/python/system/hotqueue/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="hotqueue" +PKG_VERSION="0.2.5" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="OSS" +PKG_SITE="https://github.com/richardhenry/hotqueue" +PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2" +PKG_DEPENDS="Python distribute redis-py" +PKG_BUILD_DEPENDS="toolchain Python distribute distutilscross" +PKG_PRIORITY="optional" +PKG_SECTION="python/system" +PKG_SHORTDESC="hotqueue a Python library that allows you to use Redis as a message queue within your Python programs" +PKG_LONGDESC="HotQueue is a Python library that allows you to use Redis as a message queue within your Python programs." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" From db200ec1b4bf9983a8463df164659f0de88fab6c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:37:02 +0200 Subject: [PATCH 03/32] new package: add package 'pyasn1' Signed-off-by: Stephan Raue --- packages/python/system/pyasn1/build | 36 +++++++++++++++++++++++++++ packages/python/system/pyasn1/install | 25 +++++++++++++++++++ packages/python/system/pyasn1/meta | 36 +++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100755 packages/python/system/pyasn1/build create mode 100755 packages/python/system/pyasn1/install create mode 100644 packages/python/system/pyasn1/meta diff --git a/packages/python/system/pyasn1/build b/packages/python/system/pyasn1/build new file mode 100755 index 0000000000..72f364cae4 --- /dev/null +++ b/packages/python/system/pyasn1/build @@ -0,0 +1,36 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr" +export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" + +cd $PKG_BUILD + +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +# rm -rf .install/usr/bin diff --git a/packages/python/system/pyasn1/install b/packages/python/system/pyasn1/install new file mode 100755 index 0000000000..a9c8b9924b --- /dev/null +++ b/packages/python/system/pyasn1/install @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cp -PR $PKG_BUILD/.install/* $INSTALL diff --git a/packages/python/system/pyasn1/meta b/packages/python/system/pyasn1/meta new file mode 100644 index 0000000000..78f9ee7bf9 --- /dev/null +++ b/packages/python/system/pyasn1/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="pyasn1" +PKG_VERSION="0.0.13b" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="BSD" +PKG_SITE="http://sourceforge.net/projects/pyasn1/" +PKG_URL="$SOURCEFORGE_SRC/pyasn1/pyasn1-devel/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS="Python distribute" +PKG_BUILD_DEPENDS="toolchain Python distribute distutilscross" +PKG_PRIORITY="optional" +PKG_SECTION="python/system" +PKG_SHORTDESC="pyasn1: ASN.1 types and codecs" +PKG_LONGDESC="pyasn1: ASN.1 types and codecs." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" From 28d2b8eaf501edec031df13fcaa66a8abf128a0b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:37:13 +0200 Subject: [PATCH 04/32] new package: add package 'pyasn1-modules' Signed-off-by: Stephan Raue --- packages/python/system/pyasn1-modules/build | 36 +++++++++++++++++++ packages/python/system/pyasn1-modules/install | 25 +++++++++++++ packages/python/system/pyasn1-modules/meta | 36 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100755 packages/python/system/pyasn1-modules/build create mode 100755 packages/python/system/pyasn1-modules/install create mode 100644 packages/python/system/pyasn1-modules/meta diff --git a/packages/python/system/pyasn1-modules/build b/packages/python/system/pyasn1-modules/build new file mode 100755 index 0000000000..72f364cae4 --- /dev/null +++ b/packages/python/system/pyasn1-modules/build @@ -0,0 +1,36 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr" +export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" + +cd $PKG_BUILD + +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +# rm -rf .install/usr/bin diff --git a/packages/python/system/pyasn1-modules/install b/packages/python/system/pyasn1-modules/install new file mode 100755 index 0000000000..a9c8b9924b --- /dev/null +++ b/packages/python/system/pyasn1-modules/install @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cp -PR $PKG_BUILD/.install/* $INSTALL diff --git a/packages/python/system/pyasn1-modules/meta b/packages/python/system/pyasn1-modules/meta new file mode 100644 index 0000000000..786bceb4d1 --- /dev/null +++ b/packages/python/system/pyasn1-modules/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="pyasn1-modules" +PKG_VERSION="0.0.1a" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="BSD" +PKG_SITE="http://sourceforge.net/projects/pyasn1/" +PKG_URL="$SOURCEFORGE_SRC/pyasn1/pyasn1-modules/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS="Python distribute pyasn1" +PKG_BUILD_DEPENDS="toolchain Python distribute distutilscross" +PKG_PRIORITY="optional" +PKG_SECTION="python/system" +PKG_SHORTDESC="pyasn1-modules: a collection of protocols modules written in ASN.1 language." +PKG_LONGDESC="pyasn1-modules is a collection of protocols modules written in ASN.1 language." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" From f546ba4bc091924eccc427f22996783e60b032d9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:37:29 +0200 Subject: [PATCH 05/32] new package: add package 'redis-py' Signed-off-by: Stephan Raue --- packages/python/system/redis-py/build | 34 +++++++++++++++++++++++ packages/python/system/redis-py/install | 25 +++++++++++++++++ packages/python/system/redis-py/meta | 36 +++++++++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100755 packages/python/system/redis-py/build create mode 100755 packages/python/system/redis-py/install create mode 100644 packages/python/system/redis-py/meta diff --git a/packages/python/system/redis-py/build b/packages/python/system/redis-py/build new file mode 100755 index 0000000000..61dfd24093 --- /dev/null +++ b/packages/python/system/redis-py/build @@ -0,0 +1,34 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr" +export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" + +cd $PKG_BUILD + +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" diff --git a/packages/python/system/redis-py/install b/packages/python/system/redis-py/install new file mode 100755 index 0000000000..a9c8b9924b --- /dev/null +++ b/packages/python/system/redis-py/install @@ -0,0 +1,25 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cp -PR $PKG_BUILD/.install/* $INSTALL diff --git a/packages/python/system/redis-py/meta b/packages/python/system/redis-py/meta new file mode 100644 index 0000000000..b8ca73e808 --- /dev/null +++ b/packages/python/system/redis-py/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="redis-py" +PKG_VERSION="2.2.4" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="OSS" +PKG_SITE="https://github.com/andymccurdy/redis-py" +PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2" +PKG_DEPENDS="Python distribute redis" +PKG_BUILD_DEPENDS="toolchain Python distribute distutilscross" +PKG_PRIORITY="optional" +PKG_SECTION="python/system" +PKG_SHORTDESC="redis-py: the Python interface to the Redis key-value store" +PKG_LONGDESC="This is the Python interface to the Redis key-value store." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" From 4fe6a5f7cc69ac3501361a458931bb8c768e80c3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:38:23 +0200 Subject: [PATCH 06/32] new package: add package 'redis' Signed-off-by: Stephan Raue --- packages/sysutils/redis/build | 30 +++++++++++++++++++++ packages/sysutils/redis/init.d/58_redis | 30 +++++++++++++++++++++ packages/sysutils/redis/install | 33 +++++++++++++++++++++++ packages/sysutils/redis/meta | 36 +++++++++++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100755 packages/sysutils/redis/build create mode 100644 packages/sysutils/redis/init.d/58_redis create mode 100755 packages/sysutils/redis/install create mode 100644 packages/sysutils/redis/meta diff --git a/packages/sysutils/redis/build b/packages/sysutils/redis/build new file mode 100755 index 0000000000..ce39c77de2 --- /dev/null +++ b/packages/sysutils/redis/build @@ -0,0 +1,30 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +cd $PKG_BUILD + +make + +$STRIP src/redis-server +$STRIP src/redis-cli diff --git a/packages/sysutils/redis/init.d/58_redis b/packages/sysutils/redis/init.d/58_redis new file mode 100644 index 0000000000..2f4e8de0a4 --- /dev/null +++ b/packages/sysutils/redis/init.d/58_redis @@ -0,0 +1,30 @@ +################################################################################ +# Copyright (C) 2009-2010 OpenELEC.tv +# http://www.openelec.tv +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +# Starting Redis Server +# +# runlevels: openelec, textmode + +( + wait_for_network + + progress "starting Redis server" + /usr/sbin/redis-server /etc/redis.conf +)& diff --git a/packages/sysutils/redis/install b/packages/sysutils/redis/install new file mode 100755 index 0000000000..97203fe750 --- /dev/null +++ b/packages/sysutils/redis/install @@ -0,0 +1,33 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. config/options $1 + +mkdir -p $INSTALL/etc + cp -P $PKG_BUILD/redis.conf $INSTALL/etc + +mkdir -p $INSTALL/usr/bin + cp -P $PKG_BUILD/src/redis-cli $INSTALL/usr/bin + +mkdir -p $INSTALL/usr/sbin + cp -P $PKG_BUILD/src/redis-server $INSTALL/usr/sbin + diff --git a/packages/sysutils/redis/meta b/packages/sysutils/redis/meta new file mode 100644 index 0000000000..e31d42bdd4 --- /dev/null +++ b/packages/sysutils/redis/meta @@ -0,0 +1,36 @@ +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +PKG_NAME="redis" +PKG_VERSION="2.2.4" +PKG_REV="1" +PKG_ARCH="any" +PKG_LICENSE="OpenSource" +PKG_SITE="http://www.redis.io" +PKG_URL="http://redis.googlecode.com/files/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS="" +PKG_BUILD_DEPENDS="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="sysutils" +PKG_SHORTDESC="redis: an open source, advanced key-value store" +PKG_LONGDESC="Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets." +PKG_IS_ADDON="no" + +PKG_AUTORECONF="no" From f531ed26b91eb67e7b0e95cbac5abdb17f7db273 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:49:49 +0200 Subject: [PATCH 07/32] configobj: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/configobj/build | 8 +------- packages/python/system/configobj/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/configobj/build b/packages/python/system/configobj/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/system/configobj/build +++ b/packages/python/system/configobj/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/configobj/install b/packages/python/system/configobj/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/configobj/install +++ b/packages/python/system/configobj/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 0c78caeac4f29464140228a9c0ea9bd040b886af Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:50:07 +0200 Subject: [PATCH 08/32] wokkel: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/wokkel/build | 8 +------- packages/python/web/wokkel/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/web/wokkel/build b/packages/python/web/wokkel/build index 06c6528a9b..3a7c2afbd8 100755 --- a/packages/python/web/wokkel/build +++ b/packages/python/web/wokkel/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/lib/python*/site-packages/wokkel/test +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/web/wokkel/install b/packages/python/web/wokkel/install index f5b110db15..d2be73015e 100755 --- a/packages/python/web/wokkel/install +++ b/packages/python/web/wokkel/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 42ac97e3bcda0ca777ddfc6d0e9c8e456d0fb15f Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:55:47 +0200 Subject: [PATCH 09/32] Cheetah: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/devel/Cheetah/build | 8 +------- packages/python/devel/Cheetah/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/devel/Cheetah/build b/packages/python/devel/Cheetah/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/devel/Cheetah/build +++ b/packages/python/devel/Cheetah/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/devel/Cheetah/install b/packages/python/devel/Cheetah/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/devel/Cheetah/install +++ b/packages/python/devel/Cheetah/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 78e264c18ea50d95985138050f4dbd62d3dff1c6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:56:02 +0200 Subject: [PATCH 10/32] Imaging: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/graphics/Imaging/build | 8 +------- packages/python/graphics/Imaging/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/graphics/Imaging/build b/packages/python/graphics/Imaging/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/graphics/Imaging/build +++ b/packages/python/graphics/Imaging/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/graphics/Imaging/install b/packages/python/graphics/Imaging/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/graphics/Imaging/install +++ b/packages/python/graphics/Imaging/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 03b402e7c19588c7024bfac14b05a09908403777 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:56:16 +0200 Subject: [PATCH 11/32] pyOpenSSL: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/security/pyOpenSSL/build | 8 +------- packages/python/security/pyOpenSSL/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/security/pyOpenSSL/build b/packages/python/security/pyOpenSSL/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/security/pyOpenSSL/build +++ b/packages/python/security/pyOpenSSL/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/security/pyOpenSSL/install b/packages/python/security/pyOpenSSL/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/security/pyOpenSSL/install +++ b/packages/python/security/pyOpenSSL/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 36058c38beeeb6a97ef72d78d2b1e744bc910f2b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 13:58:20 +0200 Subject: [PATCH 12/32] distribute: install quiet Signed-off-by: Stephan Raue --- packages/python/devel/distribute/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/devel/distribute/install b/packages/python/devel/distribute/install index 74e11f0ca6..65715ed51c 100755 --- a/packages/python/devel/distribute/install +++ b/packages/python/devel/distribute/install @@ -27,4 +27,4 @@ PKG_SRC_DIR=`ls -d $PKG_BUILD` PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --prefix=$INSTALL/usr $PKG_SRC_DIR +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR From 78a807c6959badeb23e2069f76f4feb0765337eb Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:03:19 +0200 Subject: [PATCH 13/32] hotqueue: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/hotqueue/build | 8 +------- packages/python/system/hotqueue/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/hotqueue/build b/packages/python/system/hotqueue/build index 72f364cae4..3a7c2afbd8 100755 --- a/packages/python/system/hotqueue/build +++ b/packages/python/system/hotqueue/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -# rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/hotqueue/install b/packages/python/system/hotqueue/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/hotqueue/install +++ b/packages/python/system/hotqueue/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 1a659824089796ce001671c59c7641cc8594dd8c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:03:33 +0200 Subject: [PATCH 14/32] pyasn1-modules: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/pyasn1-modules/build | 8 +------- packages/python/system/pyasn1-modules/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/pyasn1-modules/build b/packages/python/system/pyasn1-modules/build index 72f364cae4..3a7c2afbd8 100755 --- a/packages/python/system/pyasn1-modules/build +++ b/packages/python/system/pyasn1-modules/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -# rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/pyasn1-modules/install b/packages/python/system/pyasn1-modules/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/pyasn1-modules/install +++ b/packages/python/system/pyasn1-modules/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From c9b384c8590977f1881e5a5c1f8a10bab01c69f1 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:03:39 +0200 Subject: [PATCH 15/32] pyasn1: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/pyasn1/build | 8 +------- packages/python/system/pyasn1/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/pyasn1/build b/packages/python/system/pyasn1/build index 72f364cae4..3a7c2afbd8 100755 --- a/packages/python/system/pyasn1/build +++ b/packages/python/system/pyasn1/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -# rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/pyasn1/install b/packages/python/system/pyasn1/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/pyasn1/install +++ b/packages/python/system/pyasn1/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From dbda2beb1b6697f448a1d1d11b20d6a001c77648 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:03:52 +0200 Subject: [PATCH 16/32] redis-py: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/redis-py/build | 6 +----- packages/python/system/redis-py/install | 7 ++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/python/system/redis-py/build b/packages/python/system/redis-py/build index 61dfd24093..3a7c2afbd8 100755 --- a/packages/python/system/redis-py/build +++ b/packages/python/system/redis-py/build @@ -27,8 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/redis-py/install b/packages/python/system/redis-py/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/redis-py/install +++ b/packages/python/system/redis-py/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 764efc1f6432fdff07f6178342c35130fffd9d8c Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:04:05 +0200 Subject: [PATCH 17/32] simplejson: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/simplejson/build | 8 +------- packages/python/system/simplejson/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/simplejson/build b/packages/python/system/simplejson/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/system/simplejson/build +++ b/packages/python/system/simplejson/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/simplejson/install b/packages/python/system/simplejson/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/simplejson/install +++ b/packages/python/system/simplejson/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 4a6bdd47b826ab07cf717fb0439883551f3bceb6 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:04:16 +0200 Subject: [PATCH 18/32] yenc: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/system/yenc/build | 8 +------- packages/python/system/yenc/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/system/yenc/build b/packages/python/system/yenc/build index 3d37a7f15b..3a7c2afbd8 100755 --- a/packages/python/system/yenc/build +++ b/packages/python/system/yenc/build @@ -27,10 +27,4 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin +python setup.py build --cross-compile bdist_egg --exclude-source-files diff --git a/packages/python/system/yenc/install b/packages/python/system/yenc/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/system/yenc/install +++ b/packages/python/system/yenc/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 212916847c1f7fb3082f82ca264bba2391f89d34 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:18:54 +0200 Subject: [PATCH 19/32] TwistedCore: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/TwistedCore/build | 8 +------- packages/python/web/TwistedCore/install | 9 ++++++--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/python/web/TwistedCore/build b/packages/python/web/TwistedCore/build index cdb45ffcf1..99e018af94 100755 --- a/packages/python/web/TwistedCore/build +++ b/packages/python/web/TwistedCore/build @@ -27,13 +27,7 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install +python setup.py build --cross-compile bdist_egg --exclude-source-files # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/bin diff --git a/packages/python/web/TwistedCore/install b/packages/python/web/TwistedCore/install index 8170b92dd8..6069e0238e 100755 --- a/packages/python/web/TwistedCore/install +++ b/packages/python/web/TwistedCore/install @@ -22,9 +22,12 @@ . config/options $1 -BUILD_DIR=`ls -d $PKG_BUILD` +PKG_SRC_DIR=`ls -d $PKG_BUILD` -cp -PR $BUILD_DIR/.install/* $INSTALL +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg mkdir -p $INSTALL/usr/bin - cp $BUILD_DIR/bin/twistd $INSTALL/usr/bin + cp $PKG_SRC_DIR/bin/twistd $INSTALL/usr/bin From 1284cef02744aeb75f8007a5cbeb0230fcd4cc98 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:19:02 +0200 Subject: [PATCH 20/32] TwistedConch: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/TwistedConch/build | 8 +------- packages/python/web/TwistedConch/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/web/TwistedConch/build b/packages/python/web/TwistedConch/build index 326cfea30a..99e018af94 100755 --- a/packages/python/web/TwistedConch/build +++ b/packages/python/web/TwistedConch/build @@ -27,13 +27,7 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install +python setup.py build --cross-compile bdist_egg --exclude-source-files # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/lib/python*/site-packages/twisted/names/test diff --git a/packages/python/web/TwistedConch/install b/packages/python/web/TwistedConch/install index f5b110db15..d2be73015e 100755 --- a/packages/python/web/TwistedConch/install +++ b/packages/python/web/TwistedConch/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 7bdf09f7bef2e5b7667f41f1f61859b6b4e386f5 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:19:12 +0200 Subject: [PATCH 21/32] TwistedNames: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/TwistedNames/build | 8 +------- packages/python/web/TwistedNames/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/web/TwistedNames/build b/packages/python/web/TwistedNames/build index 326cfea30a..99e018af94 100755 --- a/packages/python/web/TwistedNames/build +++ b/packages/python/web/TwistedNames/build @@ -27,13 +27,7 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install +python setup.py build --cross-compile bdist_egg --exclude-source-files # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/lib/python*/site-packages/twisted/names/test diff --git a/packages/python/web/TwistedNames/install b/packages/python/web/TwistedNames/install index f5b110db15..d2be73015e 100755 --- a/packages/python/web/TwistedNames/install +++ b/packages/python/web/TwistedNames/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 6654961177e8eba30688449a401051b242c20ac2 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:19:23 +0200 Subject: [PATCH 22/32] TwistedWeb: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/TwistedWeb/build | 9 +-------- packages/python/web/TwistedWeb/install | 7 ++++++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/python/web/TwistedWeb/build b/packages/python/web/TwistedWeb/build index d1f36672eb..99e018af94 100755 --- a/packages/python/web/TwistedWeb/build +++ b/packages/python/web/TwistedWeb/build @@ -27,14 +27,7 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install +python setup.py build --cross-compile bdist_egg --exclude-source-files # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/lib/python*/site-packages/twisted/web/test - diff --git a/packages/python/web/TwistedWeb/install b/packages/python/web/TwistedWeb/install index f5b110db15..d2be73015e 100755 --- a/packages/python/web/TwistedWeb/install +++ b/packages/python/web/TwistedWeb/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From 46c835c8a4370ab95d9095a00f7f0d05ccd1a7f4 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:19:32 +0200 Subject: [PATCH 23/32] TwistedWords: convert to python egg package Signed-off-by: Stephan Raue --- packages/python/web/TwistedWords/build | 8 +------- packages/python/web/TwistedWords/install | 7 ++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/python/web/TwistedWords/build b/packages/python/web/TwistedWords/build index 366092a3f9..99e018af94 100755 --- a/packages/python/web/TwistedWords/build +++ b/packages/python/web/TwistedWords/build @@ -27,13 +27,7 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile -python setup.py install -O1 --skip-build --prefix /usr --root .install +python setup.py build --cross-compile bdist_egg --exclude-source-files # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN - -find .install -name "*.py" -exec rm -rf "{}" ";" -find .install -name "*.pyo" -exec rm -rf "{}" ";" - -rm -rf .install/usr/lib/python*/site-packages/twisted/words/test diff --git a/packages/python/web/TwistedWords/install b/packages/python/web/TwistedWords/install index a9c8b9924b..d2be73015e 100755 --- a/packages/python/web/TwistedWords/install +++ b/packages/python/web/TwistedWords/install @@ -22,4 +22,9 @@ . config/options $1 -cp -PR $PKG_BUILD/.install/* $INSTALL +PKG_SRC_DIR=`ls -d $PKG_BUILD` + +PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" +export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" + +$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg From ed58dd745b16c00edb09943e41346b15199c7b6b Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 14:54:25 +0200 Subject: [PATCH 24/32] TwistedConch: depends on pyasn1 Signed-off-by: Stephan Raue --- packages/python/web/TwistedConch/meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/web/TwistedConch/meta b/packages/python/web/TwistedConch/meta index e122c9c524..92710e119c 100644 --- a/packages/python/web/TwistedConch/meta +++ b/packages/python/web/TwistedConch/meta @@ -25,7 +25,7 @@ PKG_ARCH="any" PKG_LICENSE="MIT" PKG_SITE="http://twistedmatrix.com/" PKG_URL="http://twistedmatrix.com/Releases/Conch/11.0/$PKG_NAME-$PKG_VERSION.tar.bz2" -PKG_DEPENDS="Python distribute TwistedCore" +PKG_DEPENDS="Python distribute TwistedCore pyasn1" PKG_BUILD_DEPENDS="toolchain Python distribute distutilscross TwistedCore" PKG_PRIORITY="optional" PKG_SECTION="python/web" From f0bf16b66026fc30c45b48d7ae2064667505d572 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:26:02 +0200 Subject: [PATCH 25/32] distribute: update to distribute-0.6.15 Signed-off-by: Stephan Raue --- packages/python/devel/distribute/meta | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/python/devel/distribute/meta b/packages/python/devel/distribute/meta index a9e651e43f..e11b069a2f 100644 --- a/packages/python/devel/distribute/meta +++ b/packages/python/devel/distribute/meta @@ -19,11 +19,11 @@ ################################################################################ PKG_NAME="distribute" -PKG_VERSION="0.6.14" +PKG_VERSION="0.6.15" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="OSS" -PKG_SITE="http://peak.telecommunity.com/DevCenter/setuptools" +PKG_SITE="http://pypi.python.org/pypi/distribute" PKG_URL="http://pypi.python.org/packages/source/d/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz" PKG_DEPENDS="Python" PKG_BUILD_DEPENDS="toolchain Python" From 8eaa40f9210b7610c82bdeb528c20244f3ab7ae9 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:44:15 +0200 Subject: [PATCH 26/32] Revert "TwistedCore: convert to python egg package" This reverts commit 212916847c1f7fb3082f82ca264bba2391f89d34. --- packages/python/web/TwistedCore/build | 8 +++++++- packages/python/web/TwistedCore/install | 9 +++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/python/web/TwistedCore/build b/packages/python/web/TwistedCore/build index 99e018af94..cdb45ffcf1 100755 --- a/packages/python/web/TwistedCore/build +++ b/packages/python/web/TwistedCore/build @@ -27,7 +27,13 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile bdist_egg --exclude-source-files +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +rm -rf .install/usr/bin diff --git a/packages/python/web/TwistedCore/install b/packages/python/web/TwistedCore/install index 6069e0238e..8170b92dd8 100755 --- a/packages/python/web/TwistedCore/install +++ b/packages/python/web/TwistedCore/install @@ -22,12 +22,9 @@ . config/options $1 -PKG_SRC_DIR=`ls -d $PKG_BUILD` +BUILD_DIR=`ls -d $PKG_BUILD` -PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" -export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" - -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg +cp -PR $BUILD_DIR/.install/* $INSTALL mkdir -p $INSTALL/usr/bin - cp $PKG_SRC_DIR/bin/twistd $INSTALL/usr/bin + cp $BUILD_DIR/bin/twistd $INSTALL/usr/bin From 4650a98ab2fb4335baf7d1f2132d0137e028fe76 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:44:33 +0200 Subject: [PATCH 27/32] Revert "TwistedConch: convert to python egg package" This reverts commit 1284cef02744aeb75f8007a5cbeb0230fcd4cc98. --- packages/python/web/TwistedConch/build | 8 +++++++- packages/python/web/TwistedConch/install | 7 +------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/python/web/TwistedConch/build b/packages/python/web/TwistedConch/build index 99e018af94..326cfea30a 100755 --- a/packages/python/web/TwistedConch/build +++ b/packages/python/web/TwistedConch/build @@ -27,7 +27,13 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile bdist_egg --exclude-source-files +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +rm -rf .install/usr/lib/python*/site-packages/twisted/names/test diff --git a/packages/python/web/TwistedConch/install b/packages/python/web/TwistedConch/install index d2be73015e..f5b110db15 100755 --- a/packages/python/web/TwistedConch/install +++ b/packages/python/web/TwistedConch/install @@ -22,9 +22,4 @@ . config/options $1 -PKG_SRC_DIR=`ls -d $PKG_BUILD` - -PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" -export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" - -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg +cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file From 76e62dc685810bbef61ef888cb50423d129f1822 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:44:45 +0200 Subject: [PATCH 28/32] Revert "TwistedNames: convert to python egg package" This reverts commit 7bdf09f7bef2e5b7667f41f1f61859b6b4e386f5. --- packages/python/web/TwistedNames/build | 8 +++++++- packages/python/web/TwistedNames/install | 7 +------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/python/web/TwistedNames/build b/packages/python/web/TwistedNames/build index 99e018af94..326cfea30a 100755 --- a/packages/python/web/TwistedNames/build +++ b/packages/python/web/TwistedNames/build @@ -27,7 +27,13 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile bdist_egg --exclude-source-files +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +rm -rf .install/usr/lib/python*/site-packages/twisted/names/test diff --git a/packages/python/web/TwistedNames/install b/packages/python/web/TwistedNames/install index d2be73015e..f5b110db15 100755 --- a/packages/python/web/TwistedNames/install +++ b/packages/python/web/TwistedNames/install @@ -22,9 +22,4 @@ . config/options $1 -PKG_SRC_DIR=`ls -d $PKG_BUILD` - -PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" -export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" - -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg +cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file From ab517a0241401380341c4ced23d00368a04baef3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:45:10 +0200 Subject: [PATCH 29/32] Revert "TwistedWeb: convert to python egg package" This reverts commit 6654961177e8eba30688449a401051b242c20ac2. --- packages/python/web/TwistedWeb/build | 9 ++++++++- packages/python/web/TwistedWeb/install | 7 +------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/python/web/TwistedWeb/build b/packages/python/web/TwistedWeb/build index 99e018af94..d1f36672eb 100755 --- a/packages/python/web/TwistedWeb/build +++ b/packages/python/web/TwistedWeb/build @@ -27,7 +27,14 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile bdist_egg --exclude-source-files +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +rm -rf .install/usr/lib/python*/site-packages/twisted/web/test + diff --git a/packages/python/web/TwistedWeb/install b/packages/python/web/TwistedWeb/install index d2be73015e..f5b110db15 100755 --- a/packages/python/web/TwistedWeb/install +++ b/packages/python/web/TwistedWeb/install @@ -22,9 +22,4 @@ . config/options $1 -PKG_SRC_DIR=`ls -d $PKG_BUILD` - -PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" -export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" - -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg +cp -PR $PKG_BUILD/.install/* $INSTALL \ No newline at end of file From c1bffbbc368e86272e92915132957e3bfd1440b3 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:45:19 +0200 Subject: [PATCH 30/32] Revert "TwistedWords: convert to python egg package" This reverts commit 46c835c8a4370ab95d9095a00f7f0d05ccd1a7f4. --- packages/python/web/TwistedWords/build | 8 +++++++- packages/python/web/TwistedWords/install | 7 +------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/python/web/TwistedWords/build b/packages/python/web/TwistedWords/build index 99e018af94..366092a3f9 100755 --- a/packages/python/web/TwistedWords/build +++ b/packages/python/web/TwistedWords/build @@ -27,7 +27,13 @@ export LDFLAGS="$LDFLAGS -L$SYSROOT_PREFIX/usr/lib -L$SYSROOT_PREFIX/lib" cd $PKG_BUILD -python setup.py build --cross-compile bdist_egg --exclude-source-files +python setup.py build --cross-compile +python setup.py install -O1 --skip-build --prefix /usr --root .install # install to toolchain because its needed for other twisted modules python setup.py install -O1 --skip-build --prefix $ROOT/$TOOLCHAIN + +find .install -name "*.py" -exec rm -rf "{}" ";" +find .install -name "*.pyo" -exec rm -rf "{}" ";" + +rm -rf .install/usr/lib/python*/site-packages/twisted/words/test diff --git a/packages/python/web/TwistedWords/install b/packages/python/web/TwistedWords/install index d2be73015e..a9c8b9924b 100755 --- a/packages/python/web/TwistedWords/install +++ b/packages/python/web/TwistedWords/install @@ -22,9 +22,4 @@ . config/options $1 -PKG_SRC_DIR=`ls -d $PKG_BUILD` - -PYTHON_IMAGE_DIR="`ls -d $INSTALL/usr/lib/python*`" -export PYTHONPATH="$PYTHON_IMAGE_DIR/site-packages" - -$TOOLCHAIN/bin/easy_install --exclude-scripts --zip-ok --no-deps --quiet --prefix=$INSTALL/usr $PKG_SRC_DIR/dist/*.egg +cp -PR $PKG_BUILD/.install/* $INSTALL From 3ba43148364e5a9221a0158ce67fd73e97cbf169 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 15:46:16 +0200 Subject: [PATCH 31/32] linux: add patch to silence i915 agp module error Signed-off-by: Stephan Raue --- ...-2.6.39-rc5-071-silence_i915_agp-module-0.1.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 packages/linux/patches/linux-2.6.39-rc5-071-silence_i915_agp-module-0.1.patch diff --git a/packages/linux/patches/linux-2.6.39-rc5-071-silence_i915_agp-module-0.1.patch b/packages/linux/patches/linux-2.6.39-rc5-071-silence_i915_agp-module-0.1.patch new file mode 100644 index 0000000000..81bbc8c362 --- /dev/null +++ b/packages/linux/patches/linux-2.6.39-rc5-071-silence_i915_agp-module-0.1.patch @@ -0,0 +1,12 @@ +diff -Naur linux-2.6.39-rc5/drivers/gpu/drm/i915/i915_drv.c linux-2.6.39-rc5.patch/drivers/gpu/drm/i915/i915_drv.c +--- linux-2.6.39-rc5/drivers/gpu/drm/i915/i915_drv.c 2011-04-27 05:48:50.000000000 +0200 ++++ linux-2.6.39-rc5.patch/drivers/gpu/drm/i915/i915_drv.c 2011-04-29 02:51:28.773622809 +0200 +@@ -760,7 +760,7 @@ + static int __init i915_init(void) + { + if (!intel_agp_enabled) { +- DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); ++ DRM_INFO("drm/i915 can't work without intel_agp module!\n"); + return -ENODEV; + } + From c2290b72fa334511024568db14db2d1d91919e6e Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Fri, 29 Apr 2011 17:13:34 +0200 Subject: [PATCH 32/32] linux: upgrade to linux-2.6.39-rc5-git2 Signed-off-by: Stephan Raue --- ...2.6.39-rc5-000-linux-2.6.39-rc5-git2.patch | 3469 +++++++++++++++++ .../linux-2.6.39-rc5-720_usb-wakeup.patch | 31 - 2 files changed, 3469 insertions(+), 31 deletions(-) create mode 100644 packages/linux/patches/linux-2.6.39-rc5-000-linux-2.6.39-rc5-git2.patch delete mode 100644 packages/linux/patches/linux-2.6.39-rc5-720_usb-wakeup.patch diff --git a/packages/linux/patches/linux-2.6.39-rc5-000-linux-2.6.39-rc5-git2.patch b/packages/linux/patches/linux-2.6.39-rc5-000-linux-2.6.39-rc5-git2.patch new file mode 100644 index 0000000000..cd1d31f7c1 --- /dev/null +++ b/packages/linux/patches/linux-2.6.39-rc5-000-linux-2.6.39-rc5-git2.patch @@ -0,0 +1,3469 @@ +diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl +index 5d259c6..fea63b4 100644 +--- a/Documentation/DocBook/media-entities.tmpl ++++ b/Documentation/DocBook/media-entities.tmpl +@@ -294,6 +294,7 @@ + + + ++ + + + +diff --git a/Documentation/DocBook/v4l/media-ioc-setup-link.xml b/Documentation/DocBook/v4l/media-ioc-setup-link.xml +index 2331e76..cec97af 100644 +--- a/Documentation/DocBook/v4l/media-ioc-setup-link.xml ++++ b/Documentation/DocBook/v4l/media-ioc-setup-link.xml +@@ -34,7 +34,7 @@ + + request + +- MEDIA_IOC_ENUM_LINKS ++ MEDIA_IOC_SETUP_LINK + + + +diff --git a/Documentation/DocBook/v4l/pixfmt-y12.xml b/Documentation/DocBook/v4l/pixfmt-y12.xml +new file mode 100644 +index 0000000..ff417b8 +--- /dev/null ++++ b/Documentation/DocBook/v4l/pixfmt-y12.xml +@@ -0,0 +1,79 @@ ++ ++ ++ V4L2_PIX_FMT_Y12 ('Y12 ') ++ &manvol; ++ ++ ++ V4L2_PIX_FMT_Y12 ++ Grey-scale image ++ ++ ++ Description ++ ++ This is a grey-scale image with a depth of 12 bits per pixel. Pixels ++are stored in 16-bit words with unused high bits padded with 0. The least ++significant byte is stored at lower memory addresses (little-endian). ++ ++ ++ <constant>V4L2_PIX_FMT_Y12</constant> 4 × 4 ++pixel image ++ ++ ++ Byte Order. ++ Each cell is one byte. ++ ++ ++ ++ ++ ++ start + 0: ++ Y'00low ++ Y'00high ++ Y'01low ++ Y'01high ++ Y'02low ++ Y'02high ++ Y'03low ++ Y'03high ++ ++ ++ start + 8: ++ Y'10low ++ Y'10high ++ Y'11low ++ Y'11high ++ Y'12low ++ Y'12high ++ Y'13low ++ Y'13high ++ ++ ++ start + 16: ++ Y'20low ++ Y'20high ++ Y'21low ++ Y'21high ++ Y'22low ++ Y'22high ++ Y'23low ++ Y'23high ++ ++ ++ start + 24: ++ Y'30low ++ Y'30high ++ Y'31low ++ Y'31high ++ Y'32low ++ Y'32high ++ Y'33low ++ Y'33high ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml +index c6fdcbb..40af4be 100644 +--- a/Documentation/DocBook/v4l/pixfmt.xml ++++ b/Documentation/DocBook/v4l/pixfmt.xml +@@ -696,6 +696,7 @@ information. + &sub-packed-yuv; + &sub-grey; + &sub-y10; ++ &sub-y12; + &sub-y16; + &sub-yuyv; + &sub-uyvy; +diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/v4l/subdev-formats.xml +index 7041127..d7ccd25 100644 +--- a/Documentation/DocBook/v4l/subdev-formats.xml ++++ b/Documentation/DocBook/v4l/subdev-formats.xml +@@ -456,6 +456,23 @@ + b1 + b0 + ++ ++ V4L2_MBUS_FMT_SGBRG8_1X8 ++ 0x3013 ++ ++ - ++ - ++ - ++ - ++ g7 ++ g6 ++ g5 ++ g4 ++ g3 ++ g2 ++ g1 ++ g0 ++ + + V4L2_MBUS_FMT_SGRBG8_1X8 + 0x3002 +@@ -473,6 +490,23 @@ + g1 + g0 + ++ ++ V4L2_MBUS_FMT_SRGGB8_1X8 ++ 0x3014 ++ ++ - ++ - ++ - ++ - ++ r7 ++ r6 ++ r5 ++ r4 ++ r3 ++ r2 ++ r1 ++ r0 ++ + + V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 + 0x300b +@@ -2159,6 +2193,31 @@ + u1 + u0 + ++ ++ V4L2_MBUS_FMT_Y12_1X12 ++ 0x2013 ++ ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ - ++ y11 ++ y10 ++ y9 ++ y8 ++ y7 ++ y6 ++ y5 ++ y4 ++ y3 ++ y2 ++ y1 ++ y0 ++ + + V4L2_MBUS_FMT_UYVY8_1X16 + 0x200f +diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt +index b6ed61c..7c16347 100644 +--- a/Documentation/cgroups/memory.txt ++++ b/Documentation/cgroups/memory.txt +@@ -52,8 +52,10 @@ Brief summary of control files. + tasks # attach a task(thread) and show list of threads + cgroup.procs # show list of processes + cgroup.event_control # an interface for event_fd() +- memory.usage_in_bytes # show current memory(RSS+Cache) usage. +- memory.memsw.usage_in_bytes # show current memory+Swap usage ++ memory.usage_in_bytes # show current res_counter usage for memory ++ (See 5.5 for details) ++ memory.memsw.usage_in_bytes # show current res_counter usage for memory+Swap ++ (See 5.5 for details) + memory.limit_in_bytes # set/show limit of memory usage + memory.memsw.limit_in_bytes # set/show limit of memory+Swap usage + memory.failcnt # show the number of memory usage hits limits +@@ -453,6 +455,15 @@ memory under it will be reclaimed. + You can reset failcnt by writing 0 to failcnt file. + # echo 0 > .../memory.failcnt + ++5.5 usage_in_bytes ++ ++For efficiency, as other kernel components, memory cgroup uses some optimization ++to avoid unnecessary cacheline false sharing. usage_in_bytes is affected by the ++method and doesn't show 'exact' value of memory(and swap) usage, it's an fuzz ++value for efficient access. (Of course, when necessary, it's synchronized.) ++If you want to know more exact memory usage, you should use RSS+CACHE(+SWAP) ++value in memory.stat(see 5.2). ++ + 6. Hierarchy support + + The memory controller supports a deep hierarchy and hierarchical accounting. +diff --git a/Documentation/video4linux/sh_mobile_ceu_camera.txt b/Documentation/video4linux/sh_mobile_ceu_camera.txt +index cb47e72..1e96ce6 100644 +--- a/Documentation/video4linux/sh_mobile_ceu_camera.txt ++++ b/Documentation/video4linux/sh_mobile_ceu_camera.txt +@@ -37,7 +37,7 @@ Generic scaling / cropping scheme + -1'- + + In the above chart minuses and slashes represent "real" data amounts, points and +-accents represent "useful" data, basically, CEU scaled amd cropped output, ++accents represent "useful" data, basically, CEU scaled and cropped output, + mapped back onto the client's source plane. + + Such a configuration can be produced by user requests: +@@ -65,7 +65,7 @@ Do not touch input rectangle - it is already optimal. + + 1. Calculate current sensor scales: + +- scale_s = ((3') - (3)) / ((2') - (2)) ++ scale_s = ((2') - (2)) / ((3') - (3)) + + 2. Calculate "effective" input crop (sensor subwindow) - CEU crop scaled back at + current sensor scales onto input window - this is user S_CROP: +@@ -80,7 +80,7 @@ window: + 4. Calculate sensor output window by applying combined scales to real input + window: + +- width_s_out = ((2') - (2)) / scale_comb ++ width_s_out = ((7') - (7)) = ((2') - (2)) / scale_comb + + 5. Apply iterative sensor S_FMT for sensor output window. + +diff --git a/MAINTAINERS b/MAINTAINERS +index 1380312..2199ba1 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -1032,12 +1032,13 @@ W: http://www.fluff.org/ben/linux/ + S: Maintained + F: arch/arm/mach-s3c64xx/ + +-ARM/S5P ARM ARCHITECTURES ++ARM/S5P EXYNOS ARM ARCHITECTURES + M: Kukjin Kim + L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) + L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) + S: Maintained + F: arch/arm/mach-s5p*/ ++F: arch/arm/mach-exynos*/ + + ARM/SAMSUNG MOBILE MACHINE SUPPORT + M: Kyungmin Park +@@ -2808,7 +2809,7 @@ GPIO SUBSYSTEM + M: Grant Likely + S: Maintained + T: git git://git.secretlab.ca/git/linux-2.6.git +-F: Documentation/gpio/gpio.txt ++F: Documentation/gpio.txt + F: drivers/gpio/ + F: include/linux/gpio* + +@@ -6921,6 +6922,18 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86. + S: Maintained + F: drivers/platform/x86 + ++XEN HYPERVISOR INTERFACE ++M: Jeremy Fitzhardinge ++M: Konrad Rzeszutek Wilk ++L: xen-devel@lists.xensource.com (moderated for non-subscribers) ++L: virtualization@lists.linux-foundation.org ++S: Supported ++F: arch/x86/xen/ ++F: drivers/*/xen-*front.c ++F: drivers/xen/ ++F: arch/x86/include/asm/xen/ ++F: include/xen/ ++ + XEN NETWORK BACKEND DRIVER + M: Ian Campbell + L: xen-devel@lists.xensource.com (moderated for non-subscribers) +@@ -6942,18 +6955,6 @@ S: Supported + F: arch/x86/xen/*swiotlb* + F: drivers/xen/*swiotlb* + +-XEN HYPERVISOR INTERFACE +-M: Jeremy Fitzhardinge +-M: Konrad Rzeszutek Wilk +-L: xen-devel@lists.xensource.com (moderated for non-subscribers) +-L: virtualization@lists.linux-foundation.org +-S: Supported +-F: arch/x86/xen/ +-F: drivers/*/xen-*front.c +-F: drivers/xen/ +-F: arch/x86/include/asm/xen/ +-F: include/xen/ +- + XFS FILESYSTEM + P: Silicon Graphics Inc + M: Alex Elder +diff --git a/Makefile b/Makefile +index 5a7a2e4..87bf242 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + VERSION = 2 + PATCHLEVEL = 6 + SUBLEVEL = 39 +-EXTRAVERSION = -rc5 ++EXTRAVERSION = -rc5-git2 + NAME = Flesh-Eating Bats with Fangs + + # *DOCUMENTATION* +diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c +index f680122..a3a94e9 100644 +--- a/arch/arm/mach-davinci/dm355.c ++++ b/arch/arm/mach-davinci/dm355.c +@@ -314,7 +314,7 @@ static struct clk timer2_clk = { + .name = "timer2", + .parent = &pll1_aux_clk, + .lpsc = DAVINCI_LPSC_TIMER2, +- .usecount = 1, /* REVISIT: why can't' this be disabled? */ ++ .usecount = 1, /* REVISIT: why can't this be disabled? */ + }; + + static struct clk timer3_clk = { +diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c +index 5f8a654..4c82c27 100644 +--- a/arch/arm/mach-davinci/dm644x.c ++++ b/arch/arm/mach-davinci/dm644x.c +@@ -274,7 +274,7 @@ static struct clk timer2_clk = { + .name = "timer2", + .parent = &pll1_aux_clk, + .lpsc = DAVINCI_LPSC_TIMER2, +- .usecount = 1, /* REVISIT: why can't' this be disabled? */ ++ .usecount = 1, /* REVISIT: why can't this be disabled? */ + }; + + static struct clk_lookup dm644x_clks[] = { +diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c +index 02b7a03..8b3db1c 100644 +--- a/arch/m68k/mm/motorola.c ++++ b/arch/m68k/mm/motorola.c +@@ -300,6 +300,8 @@ void __init paging_init(void) + zones_size[ZONE_DMA] = m68k_memory[i].size >> PAGE_SHIFT; + free_area_init_node(i, zones_size, + m68k_memory[i].addr >> PAGE_SHIFT, NULL); ++ if (node_present_pages(i)) ++ node_set_state(i, N_NORMAL_MEMORY); + } + } + +diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c +index b7ed8d7..b1d1262 100644 +--- a/arch/parisc/mm/init.c ++++ b/arch/parisc/mm/init.c +@@ -266,8 +266,10 @@ static void __init setup_bootmem(void) + } + memset(pfnnid_map, 0xff, sizeof(pfnnid_map)); + +- for (i = 0; i < npmem_ranges; i++) ++ for (i = 0; i < npmem_ranges; i++) { ++ node_set_state(i, N_NORMAL_MEMORY); + node_set_online(i); ++ } + #endif + + /* +diff --git a/arch/powerpc/include/asm/uninorth.h b/arch/powerpc/include/asm/uninorth.h +index ae9c899..d12b11d 100644 +--- a/arch/powerpc/include/asm/uninorth.h ++++ b/arch/powerpc/include/asm/uninorth.h +@@ -60,7 +60,7 @@ + * + * Obviously, the GART is not cache coherent and so any change to it + * must be flushed to memory (or maybe just make the GART space non +- * cachable). AGP memory itself does't seem to be cache coherent neither. ++ * cachable). AGP memory itself doesn't seem to be cache coherent neither. + * + * In order to invalidate the GART (which is probably necessary to inval + * the bridge internal TLBs), the following sequence has to be written, +diff --git a/arch/um/Kconfig.um b/arch/um/Kconfig.um +index 90a438a..b5e675e 100644 +--- a/arch/um/Kconfig.um ++++ b/arch/um/Kconfig.um +@@ -47,7 +47,7 @@ config HOSTFS + + config HPPFS + tristate "HoneyPot ProcFS (EXPERIMENTAL)" +- depends on EXPERIMENTAL ++ depends on EXPERIMENTAL && PROC_FS + help + hppfs (HoneyPot ProcFS) is a filesystem which allows UML /proc + entries to be overridden, removed, or fabricated from the host. +diff --git a/arch/um/include/asm/thread_info.h b/arch/um/include/asm/thread_info.h +index e2cf786..5bd1bad 100644 +--- a/arch/um/include/asm/thread_info.h ++++ b/arch/um/include/asm/thread_info.h +@@ -49,7 +49,10 @@ static inline struct thread_info *current_thread_info(void) + { + struct thread_info *ti; + unsigned long mask = THREAD_SIZE - 1; +- ti = (struct thread_info *) (((unsigned long) &ti) & ~mask); ++ void *p; ++ ++ asm volatile ("" : "=r" (p) : "0" (&ti)); ++ ti = (struct thread_info *) (((unsigned long)p) & ~mask); + return ti; + } + +diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile +index 804b28d..b1da91c 100644 +--- a/arch/um/sys-i386/Makefile ++++ b/arch/um/sys-i386/Makefile +@@ -4,7 +4,7 @@ + + obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ + ptrace_user.o setjmp.o signal.o stub.o stub_segv.o syscalls.o sysrq.o \ +- sys_call_table.o tls.o ++ sys_call_table.o tls.o atomic64_cx8_32.o + + obj-$(CONFIG_BINFMT_ELF) += elfcore.o + +diff --git a/arch/um/sys-i386/atomic64_cx8_32.S b/arch/um/sys-i386/atomic64_cx8_32.S +new file mode 100644 +index 0000000..1e901d3 +--- /dev/null ++++ b/arch/um/sys-i386/atomic64_cx8_32.S +@@ -0,0 +1,225 @@ ++/* ++ * atomic64_t for 586+ ++ * ++ * Copied from arch/x86/lib/atomic64_cx8_32.S ++ * ++ * Copyright © 2010 Luca Barbieri ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ */ ++ ++#include ++#include ++#include ++ ++.macro SAVE reg ++ pushl_cfi %\reg ++ CFI_REL_OFFSET \reg, 0 ++.endm ++ ++.macro RESTORE reg ++ popl_cfi %\reg ++ CFI_RESTORE \reg ++.endm ++ ++.macro read64 reg ++ movl %ebx, %eax ++ movl %ecx, %edx ++/* we need LOCK_PREFIX since otherwise cmpxchg8b always does the write */ ++ LOCK_PREFIX ++ cmpxchg8b (\reg) ++.endm ++ ++ENTRY(atomic64_read_cx8) ++ CFI_STARTPROC ++ ++ read64 %ecx ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_read_cx8) ++ ++ENTRY(atomic64_set_cx8) ++ CFI_STARTPROC ++ ++1: ++/* we don't need LOCK_PREFIX since aligned 64-bit writes ++ * are atomic on 586 and newer */ ++ cmpxchg8b (%esi) ++ jne 1b ++ ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_set_cx8) ++ ++ENTRY(atomic64_xchg_cx8) ++ CFI_STARTPROC ++ ++ movl %ebx, %eax ++ movl %ecx, %edx ++1: ++ LOCK_PREFIX ++ cmpxchg8b (%esi) ++ jne 1b ++ ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_xchg_cx8) ++ ++.macro addsub_return func ins insc ++ENTRY(atomic64_\func\()_return_cx8) ++ CFI_STARTPROC ++ SAVE ebp ++ SAVE ebx ++ SAVE esi ++ SAVE edi ++ ++ movl %eax, %esi ++ movl %edx, %edi ++ movl %ecx, %ebp ++ ++ read64 %ebp ++1: ++ movl %eax, %ebx ++ movl %edx, %ecx ++ \ins\()l %esi, %ebx ++ \insc\()l %edi, %ecx ++ LOCK_PREFIX ++ cmpxchg8b (%ebp) ++ jne 1b ++ ++10: ++ movl %ebx, %eax ++ movl %ecx, %edx ++ RESTORE edi ++ RESTORE esi ++ RESTORE ebx ++ RESTORE ebp ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_\func\()_return_cx8) ++.endm ++ ++addsub_return add add adc ++addsub_return sub sub sbb ++ ++.macro incdec_return func ins insc ++ENTRY(atomic64_\func\()_return_cx8) ++ CFI_STARTPROC ++ SAVE ebx ++ ++ read64 %esi ++1: ++ movl %eax, %ebx ++ movl %edx, %ecx ++ \ins\()l $1, %ebx ++ \insc\()l $0, %ecx ++ LOCK_PREFIX ++ cmpxchg8b (%esi) ++ jne 1b ++ ++10: ++ movl %ebx, %eax ++ movl %ecx, %edx ++ RESTORE ebx ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_\func\()_return_cx8) ++.endm ++ ++incdec_return inc add adc ++incdec_return dec sub sbb ++ ++ENTRY(atomic64_dec_if_positive_cx8) ++ CFI_STARTPROC ++ SAVE ebx ++ ++ read64 %esi ++1: ++ movl %eax, %ebx ++ movl %edx, %ecx ++ subl $1, %ebx ++ sbb $0, %ecx ++ js 2f ++ LOCK_PREFIX ++ cmpxchg8b (%esi) ++ jne 1b ++ ++2: ++ movl %ebx, %eax ++ movl %ecx, %edx ++ RESTORE ebx ++ ret ++ CFI_ENDPROC ++ENDPROC(atomic64_dec_if_positive_cx8) ++ ++ENTRY(atomic64_add_unless_cx8) ++ CFI_STARTPROC ++ SAVE ebp ++ SAVE ebx ++/* these just push these two parameters on the stack */ ++ SAVE edi ++ SAVE esi ++ ++ movl %ecx, %ebp ++ movl %eax, %esi ++ movl %edx, %edi ++ ++ read64 %ebp ++1: ++ cmpl %eax, 0(%esp) ++ je 4f ++2: ++ movl %eax, %ebx ++ movl %edx, %ecx ++ addl %esi, %ebx ++ adcl %edi, %ecx ++ LOCK_PREFIX ++ cmpxchg8b (%ebp) ++ jne 1b ++ ++ movl $1, %eax ++3: ++ addl $8, %esp ++ CFI_ADJUST_CFA_OFFSET -8 ++ RESTORE ebx ++ RESTORE ebp ++ ret ++4: ++ cmpl %edx, 4(%esp) ++ jne 2b ++ xorl %eax, %eax ++ jmp 3b ++ CFI_ENDPROC ++ENDPROC(atomic64_add_unless_cx8) ++ ++ENTRY(atomic64_inc_not_zero_cx8) ++ CFI_STARTPROC ++ SAVE ebx ++ ++ read64 %esi ++1: ++ testl %eax, %eax ++ je 4f ++2: ++ movl %eax, %ebx ++ movl %edx, %ecx ++ addl $1, %ebx ++ adcl $0, %ecx ++ LOCK_PREFIX ++ cmpxchg8b (%esi) ++ jne 1b ++ ++ movl $1, %eax ++3: ++ RESTORE ebx ++ ret ++4: ++ testl %edx, %edx ++ jne 2b ++ jmp 3b ++ CFI_ENDPROC ++ENDPROC(atomic64_inc_not_zero_cx8) +diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c +index b136c9c..449c556 100644 +--- a/drivers/acpi/scan.c ++++ b/drivers/acpi/scan.c +@@ -943,6 +943,10 @@ static int acpi_bus_get_flags(struct acpi_device *device) + if (ACPI_SUCCESS(status)) + device->flags.lockable = 1; + ++ /* Power resources cannot be power manageable. */ ++ if (device->device_type == ACPI_BUS_TYPE_POWER) ++ return 0; ++ + /* Presence of _PS0|_PR0 indicates 'power manageable' */ + status = acpi_get_handle(device->handle, "_PS0", &temp); + if (ACPI_FAILURE(status)) +diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c +index fbc5b6e..abe3ab7 100644 +--- a/drivers/base/power/main.c ++++ b/drivers/base/power/main.c +@@ -63,6 +63,7 @@ void device_pm_init(struct device *dev) + dev->power.wakeup = NULL; + spin_lock_init(&dev->power.lock); + pm_runtime_init(dev); ++ INIT_LIST_HEAD(&dev->power.entry); + } + + /** +diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c +index 4573c83..abbbd33 100644 +--- a/drivers/base/power/wakeup.c ++++ b/drivers/base/power/wakeup.c +@@ -258,7 +258,7 @@ void device_set_wakeup_capable(struct device *dev, bool capable) + if (!!dev->power.can_wakeup == !!capable) + return; + +- if (device_is_registered(dev)) { ++ if (device_is_registered(dev) && !list_empty(&dev->power.entry)) { + if (capable) { + if (wakeup_sysfs_add(dev)) + return; +diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig +index c58f691..b493663 100644 +--- a/drivers/gpu/drm/Kconfig ++++ b/drivers/gpu/drm/Kconfig +@@ -24,6 +24,7 @@ config DRM_KMS_HELPER + depends on DRM + select FB + select FRAMEBUFFER_CONSOLE if !EXPERT ++ select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE + help + FB and CRTC helpers for KMS drivers. + +diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c +index 9507204..11d7a72 100644 +--- a/drivers/gpu/drm/drm_fb_helper.c ++++ b/drivers/gpu/drm/drm_fb_helper.c +@@ -342,9 +342,22 @@ int drm_fb_helper_debug_leave(struct fb_info *info) + } + EXPORT_SYMBOL(drm_fb_helper_debug_leave); + ++bool drm_fb_helper_restore_fbdev_mode(struct drm_fb_helper *fb_helper) ++{ ++ bool error = false; ++ int i, ret; ++ for (i = 0; i < fb_helper->crtc_count; i++) { ++ struct drm_mode_set *mode_set = &fb_helper->crtc_info[i].mode_set; ++ ret = drm_crtc_helper_set_config(mode_set); ++ if (ret) ++ error = true; ++ } ++ return error; ++} ++EXPORT_SYMBOL(drm_fb_helper_restore_fbdev_mode); ++ + bool drm_fb_helper_force_kernel_mode(void) + { +- int i = 0; + bool ret, error = false; + struct drm_fb_helper *helper; + +@@ -352,12 +365,12 @@ bool drm_fb_helper_force_kernel_mode(void) + return false; + + list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { +- for (i = 0; i < helper->crtc_count; i++) { +- struct drm_mode_set *mode_set = &helper->crtc_info[i].mode_set; +- ret = drm_crtc_helper_set_config(mode_set); +- if (ret) +- error = true; +- } ++ if (helper->dev->switch_power_state == DRM_SWITCH_POWER_OFF) ++ continue; ++ ++ ret = drm_fb_helper_restore_fbdev_mode(helper); ++ if (ret) ++ error = true; + } + return error; + } +diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c +index 7273037..12876f2 100644 +--- a/drivers/gpu/drm/i915/i915_dma.c ++++ b/drivers/gpu/drm/i915/i915_dma.c +@@ -2207,7 +2207,7 @@ void i915_driver_lastclose(struct drm_device * dev) + drm_i915_private_t *dev_priv = dev->dev_private; + + if (!dev_priv || drm_core_check_feature(dev, DRIVER_MODESET)) { +- drm_fb_helper_restore(); ++ intel_fb_restore_mode(dev); + vga_switcheroo_process_delayed_switch(); + return; + } +diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h +index f5b0d83..1d20712 100644 +--- a/drivers/gpu/drm/i915/intel_drv.h ++++ b/drivers/gpu/drm/i915/intel_drv.h +@@ -338,4 +338,5 @@ extern int intel_overlay_attrs(struct drm_device *dev, void *data, + struct drm_file *file_priv); + + extern void intel_fb_output_poll_changed(struct drm_device *dev); ++extern void intel_fb_restore_mode(struct drm_device *dev); + #endif /* __INTEL_DRV_H__ */ +diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c +index 5127827..ec49bae 100644 +--- a/drivers/gpu/drm/i915/intel_fb.c ++++ b/drivers/gpu/drm/i915/intel_fb.c +@@ -264,3 +264,13 @@ void intel_fb_output_poll_changed(struct drm_device *dev) + drm_i915_private_t *dev_priv = dev->dev_private; + drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper); + } ++ ++void intel_fb_restore_mode(struct drm_device *dev) ++{ ++ int ret; ++ drm_i915_private_t *dev_priv = dev->dev_private; ++ ++ ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper); ++ if (ret) ++ DRM_DEBUG("failed to restore crtc mode\n"); ++} +diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c +index bf7d4c0..871df03 100644 +--- a/drivers/gpu/drm/radeon/radeon_kms.c ++++ b/drivers/gpu/drm/radeon/radeon_kms.c +@@ -221,6 +221,19 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) + return -EINVAL; + } + break; ++ case RADEON_INFO_NUM_TILE_PIPES: ++ if (rdev->family >= CHIP_CAYMAN) ++ value = rdev->config.cayman.max_tile_pipes; ++ else if (rdev->family >= CHIP_CEDAR) ++ value = rdev->config.evergreen.max_tile_pipes; ++ else if (rdev->family >= CHIP_RV770) ++ value = rdev->config.rv770.max_tile_pipes; ++ else if (rdev->family >= CHIP_R600) ++ value = rdev->config.r600.max_tile_pipes; ++ else { ++ return -EINVAL; ++ } ++ break; + default: + DRM_DEBUG_KMS("Invalid request %d\n", info->request); + return -EINVAL; +diff --git a/drivers/gpu/drm/radeon/reg_srcs/r600 b/drivers/gpu/drm/radeon/reg_srcs/r600 +index af0da4a..92f1900 100644 +--- a/drivers/gpu/drm/radeon/reg_srcs/r600 ++++ b/drivers/gpu/drm/radeon/reg_srcs/r600 +@@ -708,6 +708,7 @@ r600 0x9400 + 0x00028D0C DB_RENDER_CONTROL + 0x00028D10 DB_RENDER_OVERRIDE + 0x0002880C DB_SHADER_CONTROL ++0x00028D28 DB_SRESULTS_COMPARE_STATE0 + 0x00028D2C DB_SRESULTS_COMPARE_STATE1 + 0x00028430 DB_STENCILREFMASK + 0x00028434 DB_STENCILREFMASK_BF +diff --git a/drivers/infiniband/hw/qib/qib_iba6120.c b/drivers/infiniband/hw/qib/qib_iba6120.c +index 7de4b7e..d8ca0a0 100644 +--- a/drivers/infiniband/hw/qib/qib_iba6120.c ++++ b/drivers/infiniband/hw/qib/qib_iba6120.c +@@ -1799,7 +1799,7 @@ static int qib_6120_setup_reset(struct qib_devdata *dd) + /* + * Keep chip from being accessed until we are ready. Use + * writeq() directly, to allow the write even though QIB_PRESENT +- * isn't' set. ++ * isn't set. + */ + dd->flags &= ~(QIB_INITTED | QIB_PRESENT); + dd->int_counter = 0; /* so we check interrupts work again */ +diff --git a/drivers/infiniband/hw/qib/qib_iba7220.c b/drivers/infiniband/hw/qib/qib_iba7220.c +index 74fe036..c765a2e 100644 +--- a/drivers/infiniband/hw/qib/qib_iba7220.c ++++ b/drivers/infiniband/hw/qib/qib_iba7220.c +@@ -2111,7 +2111,7 @@ static int qib_setup_7220_reset(struct qib_devdata *dd) + /* + * Keep chip from being accessed until we are ready. Use + * writeq() directly, to allow the write even though QIB_PRESENT +- * isn't' set. ++ * isn't set. + */ + dd->flags &= ~(QIB_INITTED | QIB_PRESENT); + dd->int_counter = 0; /* so we check interrupts work again */ +diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c +index 55de3cf..6bab3ea 100644 +--- a/drivers/infiniband/hw/qib/qib_iba7322.c ++++ b/drivers/infiniband/hw/qib/qib_iba7322.c +@@ -3299,7 +3299,7 @@ static int qib_do_7322_reset(struct qib_devdata *dd) + /* + * Keep chip from being accessed until we are ready. Use + * writeq() directly, to allow the write even though QIB_PRESENT +- * isn't' set. ++ * isn't set. + */ + dd->flags &= ~(QIB_INITTED | QIB_PRESENT | QIB_BADINTR); + dd->flags |= QIB_DOING_RESET; +diff --git a/drivers/media/common/tuners/tda18271-common.c b/drivers/media/common/tuners/tda18271-common.c +index 5466d47..aae40e5 100644 +--- a/drivers/media/common/tuners/tda18271-common.c ++++ b/drivers/media/common/tuners/tda18271-common.c +@@ -533,16 +533,7 @@ int tda18271_calc_main_pll(struct dvb_frontend *fe, u32 freq) + if (tda_fail(ret)) + goto fail; + +- regs[R_MPD] = (0x77 & pd); +- +- switch (priv->mode) { +- case TDA18271_ANALOG: +- regs[R_MPD] &= ~0x08; +- break; +- case TDA18271_DIGITAL: +- regs[R_MPD] |= 0x08; +- break; +- } ++ regs[R_MPD] = (0x7f & pd); + + div = ((d * (freq / 1000)) << 7) / 125; + +diff --git a/drivers/media/common/tuners/tda18271-fe.c b/drivers/media/common/tuners/tda18271-fe.c +index 9ad4454..d884f5e 100644 +--- a/drivers/media/common/tuners/tda18271-fe.c ++++ b/drivers/media/common/tuners/tda18271-fe.c +@@ -579,8 +579,8 @@ static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq) + #define RF3 2 + u32 rf_default[3]; + u32 rf_freq[3]; +- u8 prog_cal[3]; +- u8 prog_tab[3]; ++ s32 prog_cal[3]; ++ s32 prog_tab[3]; + + i = tda18271_lookup_rf_band(fe, &freq, NULL); + +@@ -602,32 +602,33 @@ static int tda18271_rf_tracking_filters_init(struct dvb_frontend *fe, u32 freq) + return bcal; + + tda18271_calc_rf_cal(fe, &rf_freq[rf]); +- prog_tab[rf] = regs[R_EB14]; ++ prog_tab[rf] = (s32)regs[R_EB14]; + + if (1 == bcal) +- prog_cal[rf] = tda18271_calibrate_rf(fe, rf_freq[rf]); ++ prog_cal[rf] = ++ (s32)tda18271_calibrate_rf(fe, rf_freq[rf]); + else + prog_cal[rf] = prog_tab[rf]; + + switch (rf) { + case RF1: + map[i].rf_a1 = 0; +- map[i].rf_b1 = (s32)(prog_cal[RF1] - prog_tab[RF1]); ++ map[i].rf_b1 = (prog_cal[RF1] - prog_tab[RF1]); + map[i].rf1 = rf_freq[RF1] / 1000; + break; + case RF2: +- dividend = (s32)(prog_cal[RF2] - prog_tab[RF2]) - +- (s32)(prog_cal[RF1] + prog_tab[RF1]); ++ dividend = (prog_cal[RF2] - prog_tab[RF2] - ++ prog_cal[RF1] + prog_tab[RF1]); + divisor = (s32)(rf_freq[RF2] - rf_freq[RF1]) / 1000; + map[i].rf_a1 = (dividend / divisor); + map[i].rf2 = rf_freq[RF2] / 1000; + break; + case RF3: +- dividend = (s32)(prog_cal[RF3] - prog_tab[RF3]) - +- (s32)(prog_cal[RF2] + prog_tab[RF2]); ++ dividend = (prog_cal[RF3] - prog_tab[RF3] - ++ prog_cal[RF2] + prog_tab[RF2]); + divisor = (s32)(rf_freq[RF3] - rf_freq[RF2]) / 1000; + map[i].rf_a2 = (dividend / divisor); +- map[i].rf_b2 = (s32)(prog_cal[RF2] - prog_tab[RF2]); ++ map[i].rf_b2 = (prog_cal[RF2] - prog_tab[RF2]); + map[i].rf3 = rf_freq[RF3] / 1000; + break; + default: +diff --git a/drivers/media/common/tuners/tda18271-maps.c b/drivers/media/common/tuners/tda18271-maps.c +index e7f84c7..3d5b6ab 100644 +--- a/drivers/media/common/tuners/tda18271-maps.c ++++ b/drivers/media/common/tuners/tda18271-maps.c +@@ -229,8 +229,7 @@ static struct tda18271_map tda18271c2_km[] = { + static struct tda18271_map tda18271_rf_band[] = { + { .rfmax = 47900, .val = 0x00 }, + { .rfmax = 61100, .val = 0x01 }, +-/* { .rfmax = 152600, .val = 0x02 }, */ +- { .rfmax = 121200, .val = 0x02 }, ++ { .rfmax = 152600, .val = 0x02 }, + { .rfmax = 164700, .val = 0x03 }, + { .rfmax = 203500, .val = 0x04 }, + { .rfmax = 457800, .val = 0x05 }, +@@ -448,7 +447,7 @@ static struct tda18271_map tda18271c2_rf_cal[] = { + { .rfmax = 150000, .val = 0xb0 }, + { .rfmax = 151000, .val = 0xb1 }, + { .rfmax = 152000, .val = 0xb7 }, +- { .rfmax = 153000, .val = 0xbd }, ++ { .rfmax = 152600, .val = 0xbd }, + { .rfmax = 154000, .val = 0x20 }, + { .rfmax = 155000, .val = 0x22 }, + { .rfmax = 156000, .val = 0x24 }, +@@ -459,7 +458,7 @@ static struct tda18271_map tda18271c2_rf_cal[] = { + { .rfmax = 161000, .val = 0x2d }, + { .rfmax = 163000, .val = 0x2e }, + { .rfmax = 164000, .val = 0x2f }, +- { .rfmax = 165000, .val = 0x30 }, ++ { .rfmax = 164700, .val = 0x30 }, + { .rfmax = 166000, .val = 0x11 }, + { .rfmax = 167000, .val = 0x12 }, + { .rfmax = 168000, .val = 0x13 }, +@@ -510,7 +509,8 @@ static struct tda18271_map tda18271c2_rf_cal[] = { + { .rfmax = 236000, .val = 0x1b }, + { .rfmax = 237000, .val = 0x1c }, + { .rfmax = 240000, .val = 0x1d }, +- { .rfmax = 242000, .val = 0x1f }, ++ { .rfmax = 242000, .val = 0x1e }, ++ { .rfmax = 244000, .val = 0x1f }, + { .rfmax = 247000, .val = 0x20 }, + { .rfmax = 249000, .val = 0x21 }, + { .rfmax = 252000, .val = 0x22 }, +@@ -624,7 +624,7 @@ static struct tda18271_map tda18271c2_rf_cal[] = { + { .rfmax = 453000, .val = 0x93 }, + { .rfmax = 454000, .val = 0x94 }, + { .rfmax = 456000, .val = 0x96 }, +- { .rfmax = 457000, .val = 0x98 }, ++ { .rfmax = 457800, .val = 0x98 }, + { .rfmax = 461000, .val = 0x11 }, + { .rfmax = 468000, .val = 0x12 }, + { .rfmax = 472000, .val = 0x13 }, +diff --git a/drivers/media/dvb/b2c2/flexcop-pci.c b/drivers/media/dvb/b2c2/flexcop-pci.c +index 9552540..03f96d6 100644 +--- a/drivers/media/dvb/b2c2/flexcop-pci.c ++++ b/drivers/media/dvb/b2c2/flexcop-pci.c +@@ -38,7 +38,7 @@ MODULE_PARM_DESC(debug, + DEBSTATUS); + + #define DRIVER_VERSION "0.1" +-#define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver" ++#define DRIVER_NAME "flexcop-pci" + #define DRIVER_AUTHOR "Patrick Boettcher " + + struct flexcop_pci { +diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig +index fe4f894..ccbd39a 100644 +--- a/drivers/media/dvb/dvb-usb/Kconfig ++++ b/drivers/media/dvb/dvb-usb/Kconfig +@@ -362,7 +362,7 @@ config DVB_USB_LME2510 + config DVB_USB_TECHNISAT_USB2 + tristate "Technisat DVB-S/S2 USB2.0 support" + depends on DVB_USB +- select DVB_STB0899 if !DVB_FE_CUSTOMISE +- select DVB_STB6100 if !DVB_FE_CUSTOMISE ++ select DVB_STV090x if !DVB_FE_CUSTOMISE ++ select DVB_STV6110x if !DVB_FE_CUSTOMISE + help + Say Y here to support the Technisat USB2 DVB-S/S2 device +diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c +index 97af266..65214af 100644 +--- a/drivers/media/dvb/dvb-usb/dib0700_devices.c ++++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c +@@ -2162,7 +2162,7 @@ struct dibx000_agc_config dib7090_agc_config[2] = { + .agc1_pt3 = 98, + .agc1_slope1 = 0, + .agc1_slope2 = 167, +- .agc1_pt1 = 98, ++ .agc2_pt1 = 98, + .agc2_pt2 = 255, + .agc2_slope1 = 104, + .agc2_slope2 = 0, +@@ -2440,11 +2440,11 @@ static int tfe7090pvr_frontend0_attach(struct dvb_usb_adapter *adap) + dib0700_set_i2c_speed(adap->dev, 340); + adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x90, &tfe7090pvr_dib7000p_config[0]); + +- dib7090_slave_reset(adap->fe); +- + if (adap->fe == NULL) + return -ENODEV; + ++ dib7090_slave_reset(adap->fe); ++ + return 0; + } + +diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c +index 23640ed..056138f 100644 +--- a/drivers/media/media-entity.c ++++ b/drivers/media/media-entity.c +@@ -378,7 +378,6 @@ EXPORT_SYMBOL_GPL(media_entity_create_link); + + static int __media_entity_setup_link_notify(struct media_link *link, u32 flags) + { +- const u32 mask = MEDIA_LNK_FL_ENABLED; + int ret; + + /* Notify both entities. */ +@@ -395,7 +394,7 @@ static int __media_entity_setup_link_notify(struct media_link *link, u32 flags) + return ret; + } + +- link->flags = (link->flags & ~mask) | (flags & mask); ++ link->flags = flags; + link->reverse->flags = link->flags; + + return 0; +@@ -417,6 +416,7 @@ static int __media_entity_setup_link_notify(struct media_link *link, u32 flags) + */ + int __media_entity_setup_link(struct media_link *link, u32 flags) + { ++ const u32 mask = MEDIA_LNK_FL_ENABLED; + struct media_device *mdev; + struct media_entity *source, *sink; + int ret = -EBUSY; +@@ -424,6 +424,10 @@ int __media_entity_setup_link(struct media_link *link, u32 flags) + if (link == NULL) + return -EINVAL; + ++ /* The non-modifiable link flags must not be modified. */ ++ if ((link->flags & ~mask) != (flags & ~mask)) ++ return -EINVAL; ++ + if (link->flags & MEDIA_LNK_FL_IMMUTABLE) + return link->flags == flags ? 0 : -EINVAL; + +diff --git a/drivers/media/radio/radio-sf16fmr2.c b/drivers/media/radio/radio-sf16fmr2.c +index dc3f04c..87bad76 100644 +--- a/drivers/media/radio/radio-sf16fmr2.c ++++ b/drivers/media/radio/radio-sf16fmr2.c +@@ -170,7 +170,7 @@ static int fmr2_setfreq(struct fmr2 *dev) + return 0; + } + +-/* !!! not tested, in my card this does't work !!! */ ++/* !!! not tested, in my card this doesn't work !!! */ + static int fmr2_setvolume(struct fmr2 *dev) + { + int vol[16] = { 0x021, 0x084, 0x090, 0x104, +diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig +index 4498b94..00f51dd 100644 +--- a/drivers/media/video/Kconfig ++++ b/drivers/media/video/Kconfig +@@ -875,7 +875,7 @@ config MX3_VIDEO + config VIDEO_MX3 + tristate "i.MX3x Camera Sensor Interface driver" + depends on VIDEO_DEV && MX3_IPU && SOC_CAMERA +- select VIDEOBUF_DMA_CONTIG ++ select VIDEOBUF2_DMA_CONTIG + select MX3_VIDEO + ---help--- + This is a v4l2 driver for the i.MX3x Camera Sensor Interface +diff --git a/drivers/media/video/cx18/cx18-streams.c b/drivers/media/video/cx18/cx18-streams.c +index c6e2ca3..6fbc356 100644 +--- a/drivers/media/video/cx18/cx18-streams.c ++++ b/drivers/media/video/cx18/cx18-streams.c +@@ -350,9 +350,17 @@ void cx18_streams_cleanup(struct cx18 *cx, int unregister) + + /* No struct video_device, but can have buffers allocated */ + if (type == CX18_ENC_STREAM_TYPE_IDX) { ++ /* If the module params didn't inhibit IDX ... */ + if (cx->stream_buffers[type] != 0) { + cx->stream_buffers[type] = 0; +- cx18_stream_free(&cx->streams[type]); ++ /* ++ * Before calling cx18_stream_free(), ++ * check if the IDX stream was actually set up. ++ * Needed, since the cx18_probe() error path ++ * exits through here as well as normal clean up ++ */ ++ if (cx->streams[type].buffers != 0) ++ cx18_stream_free(&cx->streams[type]); + } + continue; + } +diff --git a/drivers/media/video/cx23885/Kconfig b/drivers/media/video/cx23885/Kconfig +index 3b6e7f2..caab1bf 100644 +--- a/drivers/media/video/cx23885/Kconfig ++++ b/drivers/media/video/cx23885/Kconfig +@@ -22,6 +22,7 @@ config VIDEO_CX23885 + select DVB_CX24116 if !DVB_FE_CUSTOMISE + select DVB_STV0900 if !DVB_FE_CUSTOMISE + select DVB_DS3000 if !DVB_FE_CUSTOMISE ++ select DVB_STV0367 if !DVB_FE_CUSTOMISE + select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMISE + select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE + select MEDIA_TUNER_TDA8290 if !MEDIA_TUNER_CUSTOMISE +diff --git a/drivers/media/video/imx074.c b/drivers/media/video/imx074.c +index 1a11691..0382ea7 100644 +--- a/drivers/media/video/imx074.c ++++ b/drivers/media/video/imx074.c +@@ -298,7 +298,7 @@ static unsigned long imx074_query_bus_param(struct soc_camera_device *icd) + static int imx074_set_bus_param(struct soc_camera_device *icd, + unsigned long flags) + { +- return -1; ++ return -EINVAL; + } + + static struct soc_camera_ops imx074_ops = { +diff --git a/drivers/media/video/omap3isp/isp.c b/drivers/media/video/omap3isp/isp.c +index 503bd79..472a693 100644 +--- a/drivers/media/video/omap3isp/isp.c ++++ b/drivers/media/video/omap3isp/isp.c +@@ -215,20 +215,21 @@ static u32 isp_set_xclk(struct isp_device *isp, u32 xclk, u8 xclksel) + } + + switch (xclksel) { +- case 0: ++ case ISP_XCLK_A: + isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, + ISPTCTRL_CTRL_DIVA_MASK, + divisor << ISPTCTRL_CTRL_DIVA_SHIFT); + dev_dbg(isp->dev, "isp_set_xclk(): cam_xclka set to %d Hz\n", + currentxclk); + break; +- case 1: ++ case ISP_XCLK_B: + isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL, + ISPTCTRL_CTRL_DIVB_MASK, + divisor << ISPTCTRL_CTRL_DIVB_SHIFT); + dev_dbg(isp->dev, "isp_set_xclk(): cam_xclkb set to %d Hz\n", + currentxclk); + break; ++ case ISP_XCLK_NONE: + default: + omap3isp_put(isp); + dev_dbg(isp->dev, "ISP_ERR: isp_set_xclk(): Invalid requested " +@@ -237,13 +238,13 @@ static u32 isp_set_xclk(struct isp_device *isp, u32 xclk, u8 xclksel) + } + + /* Do we go from stable whatever to clock? */ +- if (divisor >= 2 && isp->xclk_divisor[xclksel] < 2) ++ if (divisor >= 2 && isp->xclk_divisor[xclksel - 1] < 2) + omap3isp_get(isp); + /* Stopping the clock. */ +- else if (divisor < 2 && isp->xclk_divisor[xclksel] >= 2) ++ else if (divisor < 2 && isp->xclk_divisor[xclksel - 1] >= 2) + omap3isp_put(isp); + +- isp->xclk_divisor[xclksel] = divisor; ++ isp->xclk_divisor[xclksel - 1] = divisor; + + omap3isp_put(isp); + +@@ -285,7 +286,8 @@ static void isp_power_settings(struct isp_device *isp, int idle) + */ + void omap3isp_configure_bridge(struct isp_device *isp, + enum ccdc_input_entity input, +- const struct isp_parallel_platform_data *pdata) ++ const struct isp_parallel_platform_data *pdata, ++ unsigned int shift) + { + u32 ispctrl_val; + +@@ -298,9 +300,9 @@ void omap3isp_configure_bridge(struct isp_device *isp, + switch (input) { + case CCDC_INPUT_PARALLEL: + ispctrl_val |= ISPCTRL_PAR_SER_CLK_SEL_PARALLEL; +- ispctrl_val |= pdata->data_lane_shift << ISPCTRL_SHIFT_SHIFT; + ispctrl_val |= pdata->clk_pol << ISPCTRL_PAR_CLK_POL_SHIFT; + ispctrl_val |= pdata->bridge << ISPCTRL_PAR_BRIDGE_SHIFT; ++ shift += pdata->data_lane_shift * 2; + break; + + case CCDC_INPUT_CSI2A: +@@ -319,6 +321,8 @@ void omap3isp_configure_bridge(struct isp_device *isp, + return; + } + ++ ispctrl_val |= ((shift/2) << ISPCTRL_SHIFT_SHIFT) & ISPCTRL_SHIFT_MASK; ++ + ispctrl_val &= ~ISPCTRL_SYNC_DETECT_MASK; + ispctrl_val |= ISPCTRL_SYNC_DETECT_VSRISE; + +@@ -658,6 +662,8 @@ int omap3isp_pipeline_pm_use(struct media_entity *entity, int use) + + /* Apply power change to connected non-nodes. */ + ret = isp_pipeline_pm_power(entity, change); ++ if (ret < 0) ++ entity->use_count -= change; + + mutex_unlock(&entity->parent->graph_mutex); + +@@ -872,6 +878,9 @@ static int isp_pipeline_disable(struct isp_pipeline *pipe) + } + } + ++ if (failure < 0) ++ isp->needs_reset = true; ++ + return failure; + } + +@@ -884,7 +893,8 @@ static int isp_pipeline_disable(struct isp_pipeline *pipe) + * single-shot or continuous mode. + * + * Return 0 if successful, or the return value of the failed video::s_stream +- * operation otherwise. ++ * operation otherwise. The pipeline state is not updated when the operation ++ * fails, except when stopping the pipeline. + */ + int omap3isp_pipeline_set_stream(struct isp_pipeline *pipe, + enum isp_pipeline_stream_state state) +@@ -895,7 +905,9 @@ int omap3isp_pipeline_set_stream(struct isp_pipeline *pipe, + ret = isp_pipeline_disable(pipe); + else + ret = isp_pipeline_enable(pipe, state); +- pipe->stream_state = state; ++ ++ if (ret == 0 || state == ISP_PIPELINE_STREAM_STOPPED) ++ pipe->stream_state = state; + + return ret; + } +@@ -1481,6 +1493,10 @@ void omap3isp_put(struct isp_device *isp) + if (--isp->ref_count == 0) { + isp_disable_interrupts(isp); + isp_save_ctx(isp); ++ if (isp->needs_reset) { ++ isp_reset(isp); ++ isp->needs_reset = false; ++ } + isp_disable_clocks(isp); + } + mutex_unlock(&isp->isp_mutex); +diff --git a/drivers/media/video/omap3isp/isp.h b/drivers/media/video/omap3isp/isp.h +index cf5214e..2620c40 100644 +--- a/drivers/media/video/omap3isp/isp.h ++++ b/drivers/media/video/omap3isp/isp.h +@@ -132,7 +132,6 @@ struct isp_reg { + + /** + * struct isp_parallel_platform_data - Parallel interface platform data +- * @width: Parallel bus width in bits (8, 10, 11 or 12) + * @data_lane_shift: Data lane shifter + * 0 - CAMEXT[13:0] -> CAM[13:0] + * 1 - CAMEXT[13:2] -> CAM[11:0] +@@ -146,7 +145,6 @@ struct isp_reg { + * ISPCTRL_PAR_BRIDGE_BENDIAN - Big endian + */ + struct isp_parallel_platform_data { +- unsigned int width; + unsigned int data_lane_shift:2; + unsigned int clk_pol:1; + unsigned int bridge:4; +@@ -262,6 +260,7 @@ struct isp_device { + /* ISP Obj */ + spinlock_t stat_lock; /* common lock for statistic drivers */ + struct mutex isp_mutex; /* For handling ref_count field */ ++ bool needs_reset; + int has_context; + int ref_count; + unsigned int autoidle; +@@ -311,11 +310,12 @@ int omap3isp_pipeline_set_stream(struct isp_pipeline *pipe, + enum isp_pipeline_stream_state state); + void omap3isp_configure_bridge(struct isp_device *isp, + enum ccdc_input_entity input, +- const struct isp_parallel_platform_data *pdata); ++ const struct isp_parallel_platform_data *pdata, ++ unsigned int shift); + +-#define ISP_XCLK_NONE -1 +-#define ISP_XCLK_A 0 +-#define ISP_XCLK_B 1 ++#define ISP_XCLK_NONE 0 ++#define ISP_XCLK_A 1 ++#define ISP_XCLK_B 2 + + struct isp_device *omap3isp_get(struct isp_device *isp); + void omap3isp_put(struct isp_device *isp); +diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c +index 5ff9d14..39d501b 100644 +--- a/drivers/media/video/omap3isp/ispccdc.c ++++ b/drivers/media/video/omap3isp/ispccdc.c +@@ -43,6 +43,12 @@ __ccdc_get_format(struct isp_ccdc_device *ccdc, struct v4l2_subdev_fh *fh, + + static const unsigned int ccdc_fmts[] = { + V4L2_MBUS_FMT_Y8_1X8, ++ V4L2_MBUS_FMT_Y10_1X10, ++ V4L2_MBUS_FMT_Y12_1X12, ++ V4L2_MBUS_FMT_SGRBG8_1X8, ++ V4L2_MBUS_FMT_SRGGB8_1X8, ++ V4L2_MBUS_FMT_SBGGR8_1X8, ++ V4L2_MBUS_FMT_SGBRG8_1X8, + V4L2_MBUS_FMT_SGRBG10_1X10, + V4L2_MBUS_FMT_SRGGB10_1X10, + V4L2_MBUS_FMT_SBGGR10_1X10, +@@ -1110,21 +1116,38 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc) + struct isp_parallel_platform_data *pdata = NULL; + struct v4l2_subdev *sensor; + struct v4l2_mbus_framefmt *format; ++ const struct isp_format_info *fmt_info; ++ struct v4l2_subdev_format fmt_src; ++ unsigned int depth_out; ++ unsigned int depth_in = 0; + struct media_pad *pad; + unsigned long flags; ++ unsigned int shift; + u32 syn_mode; + u32 ccdc_pattern; + +- if (ccdc->input == CCDC_INPUT_PARALLEL) { +- pad = media_entity_remote_source(&ccdc->pads[CCDC_PAD_SINK]); +- sensor = media_entity_to_v4l2_subdev(pad->entity); ++ pad = media_entity_remote_source(&ccdc->pads[CCDC_PAD_SINK]); ++ sensor = media_entity_to_v4l2_subdev(pad->entity); ++ if (ccdc->input == CCDC_INPUT_PARALLEL) + pdata = &((struct isp_v4l2_subdevs_group *)sensor->host_priv) + ->bus.parallel; ++ ++ /* Compute shift value for lane shifter to configure the bridge. */ ++ fmt_src.pad = pad->index; ++ fmt_src.which = V4L2_SUBDEV_FORMAT_ACTIVE; ++ if (!v4l2_subdev_call(sensor, pad, get_fmt, NULL, &fmt_src)) { ++ fmt_info = omap3isp_video_format_info(fmt_src.format.code); ++ depth_in = fmt_info->bpp; + } + +- omap3isp_configure_bridge(isp, ccdc->input, pdata); ++ fmt_info = omap3isp_video_format_info ++ (isp->isp_ccdc.formats[CCDC_PAD_SINK].code); ++ depth_out = fmt_info->bpp; ++ ++ shift = depth_in - depth_out; ++ omap3isp_configure_bridge(isp, ccdc->input, pdata, shift); + +- ccdc->syncif.datsz = pdata ? pdata->width : 10; ++ ccdc->syncif.datsz = depth_out; + ccdc_config_sync_if(ccdc, &ccdc->syncif); + + /* CCDC_PAD_SINK */ +@@ -1338,7 +1361,7 @@ static int ccdc_sbl_wait_idle(struct isp_ccdc_device *ccdc, + * @ccdc: Pointer to ISP CCDC device. + * @event: Pointing which event trigger handler + * +- * Return 1 when the event and stopping request combination is satisfyied, ++ * Return 1 when the event and stopping request combination is satisfied, + * zero otherwise. + */ + static int __ccdc_handle_stopping(struct isp_ccdc_device *ccdc, u32 event) +@@ -1618,7 +1641,7 @@ static int ccdc_video_queue(struct isp_video *video, struct isp_buffer *buffer) + + ccdc_set_outaddr(ccdc, buffer->isp_addr); + +- /* We now have a buffer queued on the output, restart the pipeline in ++ /* We now have a buffer queued on the output, restart the pipeline + * on the next CCDC interrupt if running in continuous mode (or when + * starting the stream). + */ +diff --git a/drivers/media/video/omap3isp/isppreview.c b/drivers/media/video/omap3isp/isppreview.c +index 2b16988..aba537a 100644 +--- a/drivers/media/video/omap3isp/isppreview.c ++++ b/drivers/media/video/omap3isp/isppreview.c +@@ -755,7 +755,7 @@ static struct preview_update update_attrs[] = { + * @configs - pointer to update config structure. + * @config - return pointer to appropriate structure field. + * @bit - for which feature to return pointers. +- * Return size of coresponding prev_params member ++ * Return size of corresponding prev_params member + */ + static u32 + __preview_get_ptrs(struct prev_params *params, void **param, +diff --git a/drivers/media/video/omap3isp/ispqueue.c b/drivers/media/video/omap3isp/ispqueue.c +index 8fddc58..9c31714 100644 +--- a/drivers/media/video/omap3isp/ispqueue.c ++++ b/drivers/media/video/omap3isp/ispqueue.c +@@ -339,7 +339,7 @@ static int isp_video_buffer_prepare_user(struct isp_video_buffer *buf) + up_read(¤t->mm->mmap_sem); + + if (ret != buf->npages) { +- buf->npages = ret; ++ buf->npages = ret < 0 ? 0 : ret; + isp_video_buffer_cleanup(buf); + return -EFAULT; + } +@@ -408,8 +408,8 @@ done: + * isp_video_buffer_prepare_vm_flags - Get VMA flags for a userspace address + * + * This function locates the VMAs for the buffer's userspace address and checks +- * that their flags match. The onlflag that we need to care for at the moment is +- * VM_PFNMAP. ++ * that their flags match. The only flag that we need to care for at the moment ++ * is VM_PFNMAP. + * + * The buffer vm_flags field is set to the first VMA flags. + * +diff --git a/drivers/media/video/omap3isp/ispresizer.c b/drivers/media/video/omap3isp/ispresizer.c +index 653f88b..0bb0f8c 100644 +--- a/drivers/media/video/omap3isp/ispresizer.c ++++ b/drivers/media/video/omap3isp/ispresizer.c +@@ -714,19 +714,50 @@ static void resizer_print_status(struct isp_res_device *res) + * iw and ih are the input width and height after cropping. Those equations need + * to be satisfied exactly for the resizer to work correctly. + * +- * Reverting the equations, we can compute the resizing ratios with ++ * The equations can't be easily reverted, as the >> 8 operation is not linear. ++ * In addition, not all input sizes can be achieved for a given output size. To ++ * get the highest input size lower than or equal to the requested input size, ++ * we need to compute the highest resizing ratio that satisfies the following ++ * inequality (taking the 4-tap mode width equation as an example) ++ * ++ * iw >= (32 * sph + (ow - 1) * hrsz + 16) >> 8 - 7 ++ * ++ * (where iw is the requested input width) which can be rewritten as ++ * ++ * iw - 7 >= (32 * sph + (ow - 1) * hrsz + 16) >> 8 ++ * (iw - 7) << 8 >= 32 * sph + (ow - 1) * hrsz + 16 - b ++ * ((iw - 7) << 8) + b >= 32 * sph + (ow - 1) * hrsz + 16 ++ * ++ * where b is the value of the 8 least significant bits of the right hand side ++ * expression of the last inequality. The highest resizing ratio value will be ++ * achieved when b is equal to its maximum value of 255. That resizing ratio ++ * value will still satisfy the original inequality, as b will disappear when ++ * the expression will be shifted right by 8. ++ * ++ * The reverted the equations thus become + * + * - 8-phase, 4-tap mode +- * hrsz = ((iw - 7) * 256 - 16 - 32 * sph) / (ow - 1) +- * vrsz = ((ih - 4) * 256 - 16 - 32 * spv) / (oh - 1) ++ * hrsz = ((iw - 7) * 256 + 255 - 16 - 32 * sph) / (ow - 1) ++ * vrsz = ((ih - 4) * 256 + 255 - 16 - 32 * spv) / (oh - 1) + * - 4-phase, 7-tap mode +- * hrsz = ((iw - 7) * 256 - 32 - 64 * sph) / (ow - 1) +- * vrsz = ((ih - 7) * 256 - 32 - 64 * spv) / (oh - 1) ++ * hrsz = ((iw - 7) * 256 + 255 - 32 - 64 * sph) / (ow - 1) ++ * vrsz = ((ih - 7) * 256 + 255 - 32 - 64 * spv) / (oh - 1) + * +- * The ratios are integer values, and must be rounded down to ensure that the +- * cropped input size is not bigger than the uncropped input size. As the ratio +- * in 7-tap mode is always smaller than the ratio in 4-tap mode, we can use the +- * 7-tap mode equations to compute a ratio approximation. ++ * The ratios are integer values, and are rounded down to ensure that the ++ * cropped input size is not bigger than the uncropped input size. ++ * ++ * As the number of phases/taps, used to select the correct equations to compute ++ * the ratio, depends on the ratio, we start with the 4-tap mode equations to ++ * compute an approximation of the ratio, and switch to the 7-tap mode equations ++ * if the approximation is higher than the ratio threshold. ++ * ++ * As the 7-tap mode equations will return a ratio smaller than or equal to the ++ * 4-tap mode equations, the resulting ratio could become lower than or equal to ++ * the ratio threshold. This 'equations loop' isn't an issue as long as the ++ * correct equations are used to compute the final input size. Starting with the ++ * 4-tap mode equations ensure that, in case of values resulting in a 'ratio ++ * loop', the smallest of the ratio values will be used, never exceeding the ++ * requested input size. + * + * We first clamp the output size according to the hardware capabilitie to avoid + * auto-cropping the input more than required to satisfy the TRM equations. The +@@ -775,6 +806,8 @@ static void resizer_calc_ratios(struct isp_res_device *res, + unsigned int max_width; + unsigned int max_height; + unsigned int width_alignment; ++ unsigned int width; ++ unsigned int height; + + /* + * Clamp the output height based on the hardware capabilities and +@@ -786,19 +819,22 @@ static void resizer_calc_ratios(struct isp_res_device *res, + max_height = min_t(unsigned int, max_height, MAX_OUT_HEIGHT); + output->height = clamp(output->height, min_height, max_height); + +- ratio->vert = ((input->height - 7) * 256 - 32 - 64 * spv) ++ ratio->vert = ((input->height - 4) * 256 + 255 - 16 - 32 * spv) + / (output->height - 1); ++ if (ratio->vert > MID_RESIZE_VALUE) ++ ratio->vert = ((input->height - 7) * 256 + 255 - 32 - 64 * spv) ++ / (output->height - 1); + ratio->vert = clamp_t(unsigned int, ratio->vert, + MIN_RESIZE_VALUE, MAX_RESIZE_VALUE); + + if (ratio->vert <= MID_RESIZE_VALUE) { + upscaled_height = (output->height - 1) * ratio->vert + + 32 * spv + 16; +- input->height = (upscaled_height >> 8) + 4; ++ height = (upscaled_height >> 8) + 4; + } else { + upscaled_height = (output->height - 1) * ratio->vert + + 64 * spv + 32; +- input->height = (upscaled_height >> 8) + 7; ++ height = (upscaled_height >> 8) + 7; + } + + /* +@@ -854,20 +890,29 @@ static void resizer_calc_ratios(struct isp_res_device *res, + max_width & ~(width_alignment - 1)); + output->width = ALIGN(output->width, width_alignment); + +- ratio->horz = ((input->width - 7) * 256 - 32 - 64 * sph) ++ ratio->horz = ((input->width - 7) * 256 + 255 - 16 - 32 * sph) + / (output->width - 1); ++ if (ratio->horz > MID_RESIZE_VALUE) ++ ratio->horz = ((input->width - 7) * 256 + 255 - 32 - 64 * sph) ++ / (output->width - 1); + ratio->horz = clamp_t(unsigned int, ratio->horz, + MIN_RESIZE_VALUE, MAX_RESIZE_VALUE); + + if (ratio->horz <= MID_RESIZE_VALUE) { + upscaled_width = (output->width - 1) * ratio->horz + + 32 * sph + 16; +- input->width = (upscaled_width >> 8) + 7; ++ width = (upscaled_width >> 8) + 7; + } else { + upscaled_width = (output->width - 1) * ratio->horz + + 64 * sph + 32; +- input->width = (upscaled_width >> 8) + 7; ++ width = (upscaled_width >> 8) + 7; + } ++ ++ /* Center the new crop rectangle. */ ++ input->left += (input->width - width) / 2; ++ input->top += (input->height - height) / 2; ++ input->width = width; ++ input->height = height; + } + + /* +diff --git a/drivers/media/video/omap3isp/ispstat.h b/drivers/media/video/omap3isp/ispstat.h +index 820950c..d86da94 100644 +--- a/drivers/media/video/omap3isp/ispstat.h ++++ b/drivers/media/video/omap3isp/ispstat.h +@@ -131,9 +131,9 @@ struct ispstat { + struct ispstat_generic_config { + /* + * Fields must be in the same order as in: +- * - isph3a_aewb_config +- * - isph3a_af_config +- * - isphist_config ++ * - omap3isp_h3a_aewb_config ++ * - omap3isp_h3a_af_config ++ * - omap3isp_hist_config + */ + u32 buf_size; + u16 config_counter; +diff --git a/drivers/media/video/omap3isp/ispvideo.c b/drivers/media/video/omap3isp/ispvideo.c +index 208a7ec..9cd8f1a 100644 +--- a/drivers/media/video/omap3isp/ispvideo.c ++++ b/drivers/media/video/omap3isp/ispvideo.c +@@ -47,29 +47,59 @@ + + static struct isp_format_info formats[] = { + { V4L2_MBUS_FMT_Y8_1X8, V4L2_MBUS_FMT_Y8_1X8, +- V4L2_MBUS_FMT_Y8_1X8, V4L2_PIX_FMT_GREY, 8, }, ++ V4L2_MBUS_FMT_Y8_1X8, V4L2_MBUS_FMT_Y8_1X8, ++ V4L2_PIX_FMT_GREY, 8, }, ++ { V4L2_MBUS_FMT_Y10_1X10, V4L2_MBUS_FMT_Y10_1X10, ++ V4L2_MBUS_FMT_Y10_1X10, V4L2_MBUS_FMT_Y8_1X8, ++ V4L2_PIX_FMT_Y10, 10, }, ++ { V4L2_MBUS_FMT_Y12_1X12, V4L2_MBUS_FMT_Y10_1X10, ++ V4L2_MBUS_FMT_Y12_1X12, V4L2_MBUS_FMT_Y8_1X8, ++ V4L2_PIX_FMT_Y12, 12, }, ++ { V4L2_MBUS_FMT_SBGGR8_1X8, V4L2_MBUS_FMT_SBGGR8_1X8, ++ V4L2_MBUS_FMT_SBGGR8_1X8, V4L2_MBUS_FMT_SBGGR8_1X8, ++ V4L2_PIX_FMT_SBGGR8, 8, }, ++ { V4L2_MBUS_FMT_SGBRG8_1X8, V4L2_MBUS_FMT_SGBRG8_1X8, ++ V4L2_MBUS_FMT_SGBRG8_1X8, V4L2_MBUS_FMT_SGBRG8_1X8, ++ V4L2_PIX_FMT_SGBRG8, 8, }, ++ { V4L2_MBUS_FMT_SGRBG8_1X8, V4L2_MBUS_FMT_SGRBG8_1X8, ++ V4L2_MBUS_FMT_SGRBG8_1X8, V4L2_MBUS_FMT_SGRBG8_1X8, ++ V4L2_PIX_FMT_SGRBG8, 8, }, ++ { V4L2_MBUS_FMT_SRGGB8_1X8, V4L2_MBUS_FMT_SRGGB8_1X8, ++ V4L2_MBUS_FMT_SRGGB8_1X8, V4L2_MBUS_FMT_SRGGB8_1X8, ++ V4L2_PIX_FMT_SRGGB8, 8, }, + { V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8, V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8, +- V4L2_MBUS_FMT_SGRBG10_1X10, V4L2_PIX_FMT_SGRBG10DPCM8, 8, }, ++ V4L2_MBUS_FMT_SGRBG10_1X10, 0, ++ V4L2_PIX_FMT_SGRBG10DPCM8, 8, }, + { V4L2_MBUS_FMT_SBGGR10_1X10, V4L2_MBUS_FMT_SBGGR10_1X10, +- V4L2_MBUS_FMT_SBGGR10_1X10, V4L2_PIX_FMT_SBGGR10, 10, }, ++ V4L2_MBUS_FMT_SBGGR10_1X10, V4L2_MBUS_FMT_SBGGR8_1X8, ++ V4L2_PIX_FMT_SBGGR10, 10, }, + { V4L2_MBUS_FMT_SGBRG10_1X10, V4L2_MBUS_FMT_SGBRG10_1X10, +- V4L2_MBUS_FMT_SGBRG10_1X10, V4L2_PIX_FMT_SGBRG10, 10, }, ++ V4L2_MBUS_FMT_SGBRG10_1X10, V4L2_MBUS_FMT_SGBRG8_1X8, ++ V4L2_PIX_FMT_SGBRG10, 10, }, + { V4L2_MBUS_FMT_SGRBG10_1X10, V4L2_MBUS_FMT_SGRBG10_1X10, +- V4L2_MBUS_FMT_SGRBG10_1X10, V4L2_PIX_FMT_SGRBG10, 10, }, ++ V4L2_MBUS_FMT_SGRBG10_1X10, V4L2_MBUS_FMT_SGRBG8_1X8, ++ V4L2_PIX_FMT_SGRBG10, 10, }, + { V4L2_MBUS_FMT_SRGGB10_1X10, V4L2_MBUS_FMT_SRGGB10_1X10, +- V4L2_MBUS_FMT_SRGGB10_1X10, V4L2_PIX_FMT_SRGGB10, 10, }, ++ V4L2_MBUS_FMT_SRGGB10_1X10, V4L2_MBUS_FMT_SRGGB8_1X8, ++ V4L2_PIX_FMT_SRGGB10, 10, }, + { V4L2_MBUS_FMT_SBGGR12_1X12, V4L2_MBUS_FMT_SBGGR10_1X10, +- V4L2_MBUS_FMT_SBGGR12_1X12, V4L2_PIX_FMT_SBGGR12, 12, }, ++ V4L2_MBUS_FMT_SBGGR12_1X12, V4L2_MBUS_FMT_SBGGR8_1X8, ++ V4L2_PIX_FMT_SBGGR12, 12, }, + { V4L2_MBUS_FMT_SGBRG12_1X12, V4L2_MBUS_FMT_SGBRG10_1X10, +- V4L2_MBUS_FMT_SGBRG12_1X12, V4L2_PIX_FMT_SGBRG12, 12, }, ++ V4L2_MBUS_FMT_SGBRG12_1X12, V4L2_MBUS_FMT_SGBRG8_1X8, ++ V4L2_PIX_FMT_SGBRG12, 12, }, + { V4L2_MBUS_FMT_SGRBG12_1X12, V4L2_MBUS_FMT_SGRBG10_1X10, +- V4L2_MBUS_FMT_SGRBG12_1X12, V4L2_PIX_FMT_SGRBG12, 12, }, ++ V4L2_MBUS_FMT_SGRBG12_1X12, V4L2_MBUS_FMT_SGRBG8_1X8, ++ V4L2_PIX_FMT_SGRBG12, 12, }, + { V4L2_MBUS_FMT_SRGGB12_1X12, V4L2_MBUS_FMT_SRGGB10_1X10, +- V4L2_MBUS_FMT_SRGGB12_1X12, V4L2_PIX_FMT_SRGGB12, 12, }, ++ V4L2_MBUS_FMT_SRGGB12_1X12, V4L2_MBUS_FMT_SRGGB8_1X8, ++ V4L2_PIX_FMT_SRGGB12, 12, }, + { V4L2_MBUS_FMT_UYVY8_1X16, V4L2_MBUS_FMT_UYVY8_1X16, +- V4L2_MBUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_UYVY, 16, }, ++ V4L2_MBUS_FMT_UYVY8_1X16, 0, ++ V4L2_PIX_FMT_UYVY, 16, }, + { V4L2_MBUS_FMT_YUYV8_1X16, V4L2_MBUS_FMT_YUYV8_1X16, +- V4L2_MBUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_YUYV, 16, }, ++ V4L2_MBUS_FMT_YUYV8_1X16, 0, ++ V4L2_PIX_FMT_YUYV, 16, }, + }; + + const struct isp_format_info * +@@ -86,6 +116,37 @@ omap3isp_video_format_info(enum v4l2_mbus_pixelcode code) + } + + /* ++ * Decide whether desired output pixel code can be obtained with ++ * the lane shifter by shifting the input pixel code. ++ * @in: input pixelcode to shifter ++ * @out: output pixelcode from shifter ++ * @additional_shift: # of bits the sensor's LSB is offset from CAMEXT[0] ++ * ++ * return true if the combination is possible ++ * return false otherwise ++ */ ++static bool isp_video_is_shiftable(enum v4l2_mbus_pixelcode in, ++ enum v4l2_mbus_pixelcode out, ++ unsigned int additional_shift) ++{ ++ const struct isp_format_info *in_info, *out_info; ++ ++ if (in == out) ++ return true; ++ ++ in_info = omap3isp_video_format_info(in); ++ out_info = omap3isp_video_format_info(out); ++ ++ if ((in_info->flavor == 0) || (out_info->flavor == 0)) ++ return false; ++ ++ if (in_info->flavor != out_info->flavor) ++ return false; ++ ++ return in_info->bpp - out_info->bpp + additional_shift <= 6; ++} ++ ++/* + * isp_video_mbus_to_pix - Convert v4l2_mbus_framefmt to v4l2_pix_format + * @video: ISP video instance + * @mbus: v4l2_mbus_framefmt format (input) +@@ -235,6 +296,7 @@ static int isp_video_validate_pipeline(struct isp_pipeline *pipe) + return -EPIPE; + + while (1) { ++ unsigned int shifter_link; + /* Retrieve the sink format */ + pad = &subdev->entity.pads[0]; + if (!(pad->flags & MEDIA_PAD_FL_SINK)) +@@ -263,6 +325,10 @@ static int isp_video_validate_pipeline(struct isp_pipeline *pipe) + return -ENOSPC; + } + ++ /* If sink pad is on CCDC, the link has the lane shifter ++ * in the middle of it. */ ++ shifter_link = subdev == &isp->isp_ccdc.subdev; ++ + /* Retrieve the source format */ + pad = media_entity_remote_source(pad); + if (pad == NULL || +@@ -278,10 +344,24 @@ static int isp_video_validate_pipeline(struct isp_pipeline *pipe) + return -EPIPE; + + /* Check if the two ends match */ +- if (fmt_source.format.code != fmt_sink.format.code || +- fmt_source.format.width != fmt_sink.format.width || ++ if (fmt_source.format.width != fmt_sink.format.width || + fmt_source.format.height != fmt_sink.format.height) + return -EPIPE; ++ ++ if (shifter_link) { ++ unsigned int parallel_shift = 0; ++ if (isp->isp_ccdc.input == CCDC_INPUT_PARALLEL) { ++ struct isp_parallel_platform_data *pdata = ++ &((struct isp_v4l2_subdevs_group *) ++ subdev->host_priv)->bus.parallel; ++ parallel_shift = pdata->data_lane_shift * 2; ++ } ++ if (!isp_video_is_shiftable(fmt_source.format.code, ++ fmt_sink.format.code, ++ parallel_shift)) ++ return -EPIPE; ++ } else if (fmt_source.format.code != fmt_sink.format.code) ++ return -EPIPE; + } + + return 0; +diff --git a/drivers/media/video/omap3isp/ispvideo.h b/drivers/media/video/omap3isp/ispvideo.h +index 524a1ac..911bea6 100644 +--- a/drivers/media/video/omap3isp/ispvideo.h ++++ b/drivers/media/video/omap3isp/ispvideo.h +@@ -49,6 +49,8 @@ struct v4l2_pix_format; + * bits. Identical to @code if the format is 10 bits wide or less. + * @uncompressed: V4L2 media bus format code for the corresponding uncompressed + * format. Identical to @code if the format is not DPCM compressed. ++ * @flavor: V4L2 media bus format code for the same pixel layout but ++ * shifted to be 8 bits per pixel. =0 if format is not shiftable. + * @pixelformat: V4L2 pixel format FCC identifier + * @bpp: Bits per pixel + */ +@@ -56,6 +58,7 @@ struct isp_format_info { + enum v4l2_mbus_pixelcode code; + enum v4l2_mbus_pixelcode truncated; + enum v4l2_mbus_pixelcode uncompressed; ++ enum v4l2_mbus_pixelcode flavor; + u32 pixelformat; + unsigned int bpp; + }; +diff --git a/drivers/media/video/s5p-fimc/fimc-capture.c b/drivers/media/video/s5p-fimc/fimc-capture.c +index 95f8b4e1..d142b40 100644 +--- a/drivers/media/video/s5p-fimc/fimc-capture.c ++++ b/drivers/media/video/s5p-fimc/fimc-capture.c +@@ -527,7 +527,7 @@ static int fimc_cap_s_fmt_mplane(struct file *file, void *priv, + if (ret) + return ret; + +- if (vb2_is_streaming(&fimc->vid_cap.vbq) || fimc_capture_active(fimc)) ++ if (vb2_is_busy(&fimc->vid_cap.vbq) || fimc_capture_active(fimc)) + return -EBUSY; + + frame = &ctx->d_frame; +@@ -539,8 +539,10 @@ static int fimc_cap_s_fmt_mplane(struct file *file, void *priv, + return -EINVAL; + } + +- for (i = 0; i < frame->fmt->colplanes; i++) +- frame->payload[i] = pix->plane_fmt[i].bytesperline * pix->height; ++ for (i = 0; i < frame->fmt->colplanes; i++) { ++ frame->payload[i] = ++ (pix->width * pix->height * frame->fmt->depth[i]) >> 3; ++ } + + /* Output DMA frame pixel size and offsets. */ + frame->f_width = pix->plane_fmt[0].bytesperline * 8 +diff --git a/drivers/media/video/s5p-fimc/fimc-core.c b/drivers/media/video/s5p-fimc/fimc-core.c +index 6c919b3..dc91a85 100644 +--- a/drivers/media/video/s5p-fimc/fimc-core.c ++++ b/drivers/media/video/s5p-fimc/fimc-core.c +@@ -361,10 +361,20 @@ static void fimc_capture_irq_handler(struct fimc_dev *fimc) + { + struct fimc_vid_cap *cap = &fimc->vid_cap; + struct fimc_vid_buffer *v_buf; ++ struct timeval *tv; ++ struct timespec ts; + + if (!list_empty(&cap->active_buf_q) && + test_bit(ST_CAPT_RUN, &fimc->state)) { ++ ktime_get_real_ts(&ts); ++ + v_buf = active_queue_pop(cap); ++ ++ tv = &v_buf->vb.v4l2_buf.timestamp; ++ tv->tv_sec = ts.tv_sec; ++ tv->tv_usec = ts.tv_nsec / NSEC_PER_USEC; ++ v_buf->vb.v4l2_buf.sequence = cap->frame_count++; ++ + vb2_buffer_done(&v_buf->vb, VB2_BUF_STATE_DONE); + } + +@@ -758,7 +768,7 @@ static void fimc_unlock(struct vb2_queue *vq) + mutex_unlock(&ctx->fimc_dev->lock); + } + +-struct vb2_ops fimc_qops = { ++static struct vb2_ops fimc_qops = { + .queue_setup = fimc_queue_setup, + .buf_prepare = fimc_buf_prepare, + .buf_queue = fimc_buf_queue, +@@ -927,23 +937,23 @@ int fimc_vidioc_try_fmt_mplane(struct file *file, void *priv, + pix->num_planes = fmt->memplanes; + pix->colorspace = V4L2_COLORSPACE_JPEG; + +- for (i = 0; i < pix->num_planes; ++i) { +- int bpl = pix->plane_fmt[i].bytesperline; + +- dbg("[%d] bpl: %d, depth: %d, w: %d, h: %d", +- i, bpl, fmt->depth[i], pix->width, pix->height); ++ for (i = 0; i < pix->num_planes; ++i) { ++ u32 bpl = pix->plane_fmt[i].bytesperline; ++ u32 *sizeimage = &pix->plane_fmt[i].sizeimage; + +- if (!bpl || (bpl * 8 / fmt->depth[i]) > pix->width) +- bpl = (pix->width * fmt->depth[0]) >> 3; ++ if (fmt->colplanes > 1 && (bpl == 0 || bpl < pix->width)) ++ bpl = pix->width; /* Planar */ + +- if (!pix->plane_fmt[i].sizeimage) +- pix->plane_fmt[i].sizeimage = pix->height * bpl; ++ if (fmt->colplanes == 1 && /* Packed */ ++ (bpl == 0 || ((bpl * 8) / fmt->depth[i]) < pix->width)) ++ bpl = (pix->width * fmt->depth[0]) / 8; + +- pix->plane_fmt[i].bytesperline = bpl; ++ if (i == 0) /* Same bytesperline for each plane. */ ++ mod_x = bpl; + +- dbg("[%d]: bpl: %d, sizeimage: %d", +- i, pix->plane_fmt[i].bytesperline, +- pix->plane_fmt[i].sizeimage); ++ pix->plane_fmt[i].bytesperline = mod_x; ++ *sizeimage = (pix->width * pix->height * fmt->depth[i]) / 8; + } + + return 0; +@@ -965,7 +975,7 @@ static int fimc_m2m_s_fmt_mplane(struct file *file, void *priv, + + vq = v4l2_m2m_get_vq(ctx->m2m_ctx, f->type); + +- if (vb2_is_streaming(vq)) { ++ if (vb2_is_busy(vq)) { + v4l2_err(&fimc->m2m.v4l2_dev, "queue (%d) busy\n", f->type); + return -EBUSY; + } +@@ -985,8 +995,10 @@ static int fimc_m2m_s_fmt_mplane(struct file *file, void *priv, + if (!frame->fmt) + return -EINVAL; + +- for (i = 0; i < frame->fmt->colplanes; i++) +- frame->payload[i] = pix->plane_fmt[i].bytesperline * pix->height; ++ for (i = 0; i < frame->fmt->colplanes; i++) { ++ frame->payload[i] = ++ (pix->width * pix->height * frame->fmt->depth[i]) / 8; ++ } + + frame->f_width = pix->plane_fmt[0].bytesperline * 8 / + frame->fmt->depth[0]; +@@ -1750,7 +1762,7 @@ static int __devexit fimc_remove(struct platform_device *pdev) + } + + /* Image pixel limits, similar across several FIMC HW revisions. */ +-static struct fimc_pix_limit s5p_pix_limit[3] = { ++static struct fimc_pix_limit s5p_pix_limit[4] = { + [0] = { + .scaler_en_w = 3264, + .scaler_dis_w = 8192, +@@ -1775,6 +1787,14 @@ static struct fimc_pix_limit s5p_pix_limit[3] = { + .out_rot_en_w = 1280, + .out_rot_dis_w = 1920, + }, ++ [3] = { ++ .scaler_en_w = 1920, ++ .scaler_dis_w = 8192, ++ .in_rot_en_h = 1366, ++ .in_rot_dis_w = 8192, ++ .out_rot_en_w = 1366, ++ .out_rot_dis_w = 1920, ++ }, + }; + + static struct samsung_fimc_variant fimc0_variant_s5p = { +@@ -1827,7 +1847,7 @@ static struct samsung_fimc_variant fimc2_variant_s5pv210 = { + .pix_limit = &s5p_pix_limit[2], + }; + +-static struct samsung_fimc_variant fimc0_variant_s5pv310 = { ++static struct samsung_fimc_variant fimc0_variant_exynos4 = { + .pix_hoff = 1, + .has_inp_rot = 1, + .has_out_rot = 1, +@@ -1840,7 +1860,7 @@ static struct samsung_fimc_variant fimc0_variant_s5pv310 = { + .pix_limit = &s5p_pix_limit[1], + }; + +-static struct samsung_fimc_variant fimc2_variant_s5pv310 = { ++static struct samsung_fimc_variant fimc2_variant_exynos4 = { + .pix_hoff = 1, + .has_cistatus2 = 1, + .has_mainscaler_ext = 1, +@@ -1848,7 +1868,7 @@ static struct samsung_fimc_variant fimc2_variant_s5pv310 = { + .min_out_pixsize = 16, + .hor_offs_align = 1, + .out_buf_count = 32, +- .pix_limit = &s5p_pix_limit[2], ++ .pix_limit = &s5p_pix_limit[3], + }; + + /* S5PC100 */ +@@ -1874,12 +1894,12 @@ static struct samsung_fimc_driverdata fimc_drvdata_s5pv210 = { + }; + + /* S5PV310, S5PC210 */ +-static struct samsung_fimc_driverdata fimc_drvdata_s5pv310 = { ++static struct samsung_fimc_driverdata fimc_drvdata_exynos4 = { + .variant = { +- [0] = &fimc0_variant_s5pv310, +- [1] = &fimc0_variant_s5pv310, +- [2] = &fimc0_variant_s5pv310, +- [3] = &fimc2_variant_s5pv310, ++ [0] = &fimc0_variant_exynos4, ++ [1] = &fimc0_variant_exynos4, ++ [2] = &fimc0_variant_exynos4, ++ [3] = &fimc2_variant_exynos4, + }, + .num_entities = 4, + .lclk_frequency = 166000000UL, +@@ -1893,8 +1913,8 @@ static struct platform_device_id fimc_driver_ids[] = { + .name = "s5pv210-fimc", + .driver_data = (unsigned long)&fimc_drvdata_s5pv210, + }, { +- .name = "s5pv310-fimc", +- .driver_data = (unsigned long)&fimc_drvdata_s5pv310, ++ .name = "exynos4-fimc", ++ .driver_data = (unsigned long)&fimc_drvdata_exynos4, + }, + {}, + }; +diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c +index 3fe54bf..134e86b 100644 +--- a/drivers/media/video/sh_mobile_ceu_camera.c ++++ b/drivers/media/video/sh_mobile_ceu_camera.c +@@ -922,7 +922,7 @@ static int sh_mobile_ceu_get_formats(struct soc_camera_device *icd, unsigned int + /* Try 2560x1920, 1280x960, 640x480, 320x240 */ + mf.width = 2560 >> shift; + mf.height = 1920 >> shift; +- ret = v4l2_device_call_until_err(sd->v4l2_dev, 0, video, ++ ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, + s_mbus_fmt, &mf); + if (ret < 0) + return ret; +@@ -1224,7 +1224,7 @@ static int client_s_fmt(struct soc_camera_device *icd, + struct v4l2_cropcap cap; + int ret; + +- ret = v4l2_device_call_until_err(sd->v4l2_dev, 0, video, ++ ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, + s_mbus_fmt, mf); + if (ret < 0) + return ret; +@@ -1254,7 +1254,7 @@ static int client_s_fmt(struct soc_camera_device *icd, + tmp_h = min(2 * tmp_h, max_height); + mf->width = tmp_w; + mf->height = tmp_h; +- ret = v4l2_device_call_until_err(sd->v4l2_dev, 0, video, ++ ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, + s_mbus_fmt, mf); + dev_geo(dev, "Camera scaled to %ux%u\n", + mf->width, mf->height); +@@ -1658,7 +1658,7 @@ static int sh_mobile_ceu_try_fmt(struct soc_camera_device *icd, + mf.code = xlate->code; + mf.colorspace = pix->colorspace; + +- ret = v4l2_device_call_until_err(sd->v4l2_dev, 0, video, try_mbus_fmt, &mf); ++ ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, try_mbus_fmt, &mf); + if (ret < 0) + return ret; + +@@ -1682,7 +1682,7 @@ static int sh_mobile_ceu_try_fmt(struct soc_camera_device *icd, + */ + mf.width = 2560; + mf.height = 1920; +- ret = v4l2_device_call_until_err(sd->v4l2_dev, 0, video, ++ ret = v4l2_device_call_until_err(sd->v4l2_dev, (long)icd, video, + try_mbus_fmt, &mf); + if (ret < 0) { + /* Shouldn't actually happen... */ +diff --git a/drivers/media/video/sh_mobile_csi2.c b/drivers/media/video/sh_mobile_csi2.c +index dd1b81b..98b8748 100644 +--- a/drivers/media/video/sh_mobile_csi2.c ++++ b/drivers/media/video/sh_mobile_csi2.c +@@ -38,6 +38,8 @@ struct sh_csi2 { + void __iomem *base; + struct platform_device *pdev; + struct sh_csi2_client_config *client; ++ unsigned long (*query_bus_param)(struct soc_camera_device *); ++ int (*set_bus_param)(struct soc_camera_device *, unsigned long); + }; + + static int sh_csi2_try_fmt(struct v4l2_subdev *sd, +@@ -208,6 +210,7 @@ static int sh_csi2_notify(struct notifier_block *nb, + case BUS_NOTIFY_BOUND_DRIVER: + snprintf(priv->subdev.name, V4L2_SUBDEV_NAME_SIZE, "%s%s", + dev_name(v4l2_dev->dev), ".mipi-csi"); ++ priv->subdev.grp_id = (long)icd; + ret = v4l2_device_register_subdev(v4l2_dev, &priv->subdev); + dev_dbg(dev, "%s(%p): ret(register_subdev) = %d\n", __func__, priv, ret); + if (ret < 0) +@@ -215,6 +218,8 @@ static int sh_csi2_notify(struct notifier_block *nb, + + priv->client = pdata->clients + i; + ++ priv->set_bus_param = icd->ops->set_bus_param; ++ priv->query_bus_param = icd->ops->query_bus_param; + icd->ops->set_bus_param = sh_csi2_set_bus_param; + icd->ops->query_bus_param = sh_csi2_query_bus_param; + +@@ -226,8 +231,10 @@ static int sh_csi2_notify(struct notifier_block *nb, + priv->client = NULL; + + /* Driver is about to be unbound */ +- icd->ops->set_bus_param = NULL; +- icd->ops->query_bus_param = NULL; ++ icd->ops->set_bus_param = priv->set_bus_param; ++ icd->ops->query_bus_param = priv->query_bus_param; ++ priv->set_bus_param = NULL; ++ priv->query_bus_param = NULL; + + v4l2_device_unregister_subdev(&priv->subdev); + +diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c +index 4628448..3973f9a 100644 +--- a/drivers/media/video/soc_camera.c ++++ b/drivers/media/video/soc_camera.c +@@ -996,10 +996,11 @@ static void soc_camera_free_i2c(struct soc_camera_device *icd) + { + struct i2c_client *client = + to_i2c_client(to_soc_camera_control(icd)); ++ struct i2c_adapter *adap = client->adapter; + dev_set_drvdata(&icd->dev, NULL); + v4l2_device_unregister_subdev(i2c_get_clientdata(client)); + i2c_unregister_device(client); +- i2c_put_adapter(client->adapter); ++ i2c_put_adapter(adap); + } + #else + #define soc_camera_init_i2c(icd, icl) (-ENODEV) +@@ -1071,6 +1072,9 @@ static int soc_camera_probe(struct device *dev) + } + } + ++ sd = soc_camera_to_subdev(icd); ++ sd->grp_id = (long)icd; ++ + /* At this point client .probe() should have run already */ + ret = soc_camera_init_user_formats(icd); + if (ret < 0) +@@ -1092,7 +1096,6 @@ static int soc_camera_probe(struct device *dev) + goto evidstart; + + /* Try to improve our guess of a reasonable window format */ +- sd = soc_camera_to_subdev(icd); + if (!v4l2_subdev_call(sd, video, g_mbus_fmt, &mf)) { + icd->user_width = mf.width; + icd->user_height = mf.height; +diff --git a/drivers/media/video/v4l2-dev.c b/drivers/media/video/v4l2-dev.c +index 498e674..6dc7196 100644 +--- a/drivers/media/video/v4l2-dev.c ++++ b/drivers/media/video/v4l2-dev.c +@@ -389,7 +389,8 @@ static int v4l2_open(struct inode *inode, struct file *filp) + video_get(vdev); + mutex_unlock(&videodev_lock); + #if defined(CONFIG_MEDIA_CONTROLLER) +- if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) { ++ if (vdev->v4l2_dev && vdev->v4l2_dev->mdev && ++ vdev->vfl_type != VFL_TYPE_SUBDEV) { + entity = media_entity_get(&vdev->entity); + if (!entity) { + ret = -EBUSY; +@@ -415,7 +416,8 @@ err: + /* decrease the refcount in case of an error */ + if (ret) { + #if defined(CONFIG_MEDIA_CONTROLLER) +- if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) ++ if (vdev->v4l2_dev && vdev->v4l2_dev->mdev && ++ vdev->vfl_type != VFL_TYPE_SUBDEV) + media_entity_put(entity); + #endif + video_put(vdev); +@@ -437,7 +439,8 @@ static int v4l2_release(struct inode *inode, struct file *filp) + mutex_unlock(vdev->lock); + } + #if defined(CONFIG_MEDIA_CONTROLLER) +- if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) ++ if (vdev->v4l2_dev && vdev->v4l2_dev->mdev && ++ vdev->vfl_type != VFL_TYPE_SUBDEV) + media_entity_put(&vdev->entity); + #endif + /* decrease the refcount unconditionally since the release() +@@ -686,7 +689,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr, + + #if defined(CONFIG_MEDIA_CONTROLLER) + /* Part 5: Register the entity. */ +- if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) { ++ if (vdev->v4l2_dev && vdev->v4l2_dev->mdev && ++ vdev->vfl_type != VFL_TYPE_SUBDEV) { + vdev->entity.type = MEDIA_ENT_T_DEVNODE_V4L; + vdev->entity.name = vdev->name; + vdev->entity.v4l.major = VIDEO_MAJOR; +@@ -733,7 +737,8 @@ void video_unregister_device(struct video_device *vdev) + return; + + #if defined(CONFIG_MEDIA_CONTROLLER) +- if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) ++ if (vdev->v4l2_dev && vdev->v4l2_dev->mdev && ++ vdev->vfl_type != VFL_TYPE_SUBDEV) + media_device_unregister_entity(&vdev->entity); + #endif + +diff --git a/drivers/media/video/videobuf2-core.c b/drivers/media/video/videobuf2-core.c +index 6698c77..6ba1461 100644 +--- a/drivers/media/video/videobuf2-core.c ++++ b/drivers/media/video/videobuf2-core.c +@@ -37,6 +37,9 @@ module_param(debug, int, 0644); + #define call_qop(q, op, args...) \ + (((q)->ops->op) ? ((q)->ops->op(args)) : 0) + ++#define V4L2_BUFFER_STATE_FLAGS (V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_QUEUED | \ ++ V4L2_BUF_FLAG_DONE | V4L2_BUF_FLAG_ERROR) ++ + /** + * __vb2_buf_mem_alloc() - allocate video memory for the given buffer + */ +@@ -51,7 +54,7 @@ static int __vb2_buf_mem_alloc(struct vb2_buffer *vb, + for (plane = 0; plane < vb->num_planes; ++plane) { + mem_priv = call_memop(q, plane, alloc, q->alloc_ctx[plane], + plane_sizes[plane]); +- if (!mem_priv) ++ if (IS_ERR_OR_NULL(mem_priv)) + goto free; + + /* Associate allocator private data with this plane */ +@@ -284,7 +287,7 @@ static int __fill_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b) + struct vb2_queue *q = vb->vb2_queue; + int ret = 0; + +- /* Copy back data such as timestamp, input, etc. */ ++ /* Copy back data such as timestamp, flags, input, etc. */ + memcpy(b, &vb->v4l2_buf, offsetof(struct v4l2_buffer, m)); + b->input = vb->v4l2_buf.input; + b->reserved = vb->v4l2_buf.reserved; +@@ -313,7 +316,10 @@ static int __fill_v4l2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b) + b->m.userptr = vb->v4l2_planes[0].m.userptr; + } + +- b->flags = 0; ++ /* ++ * Clear any buffer state related flags. ++ */ ++ b->flags &= ~V4L2_BUFFER_STATE_FLAGS; + + switch (vb->state) { + case VB2_BUF_STATE_QUEUED: +@@ -519,6 +525,7 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req) + num_buffers = min_t(unsigned int, req->count, VIDEO_MAX_FRAME); + memset(plane_sizes, 0, sizeof(plane_sizes)); + memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx)); ++ q->memory = req->memory; + + /* + * Ask the driver how many buffers and planes per buffer it requires. +@@ -560,8 +567,6 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req) + ret = num_buffers; + } + +- q->memory = req->memory; +- + /* + * Return the number of successfully allocated buffers + * to the userspace. +@@ -715,6 +720,8 @@ static int __fill_vb2_buffer(struct vb2_buffer *vb, struct v4l2_buffer *b, + + vb->v4l2_buf.field = b->field; + vb->v4l2_buf.timestamp = b->timestamp; ++ vb->v4l2_buf.input = b->input; ++ vb->v4l2_buf.flags = b->flags & ~V4L2_BUFFER_STATE_FLAGS; + + return 0; + } +diff --git a/drivers/media/video/videobuf2-dma-contig.c b/drivers/media/video/videobuf2-dma-contig.c +index 58205d5..a790a5f 100644 +--- a/drivers/media/video/videobuf2-dma-contig.c ++++ b/drivers/media/video/videobuf2-dma-contig.c +@@ -46,7 +46,7 @@ static void *vb2_dma_contig_alloc(void *alloc_ctx, unsigned long size) + GFP_KERNEL); + if (!buf->vaddr) { + dev_err(conf->dev, "dma_alloc_coherent of size %ld failed\n", +- buf->size); ++ size); + kfree(buf); + return ERR_PTR(-ENOMEM); + } +diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c +index 96c0b34..657b9f4 100644 +--- a/drivers/mtd/nand/diskonchip.c ++++ b/drivers/mtd/nand/diskonchip.c +@@ -400,7 +400,7 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr) + doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE); + doc200x_hwcontrol(mtd, NAND_CMD_NONE, NAND_NCE | NAND_CTRL_CHANGE); + +- /* We can't' use dev_ready here, but at least we wait for the ++ /* We can't use dev_ready here, but at least we wait for the + * command to complete + */ + udelay(50); +diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c +index fe77e82..e8c19de 100644 +--- a/drivers/pcmcia/pcmcia_resource.c ++++ b/drivers/pcmcia/pcmcia_resource.c +@@ -173,7 +173,7 @@ static int pcmcia_access_config(struct pcmcia_device *p_dev, + c = p_dev->function_config; + + if (!(c->state & CONFIG_LOCKED)) { +- dev_dbg(&p_dev->dev, "Configuration isn't't locked\n"); ++ dev_dbg(&p_dev->dev, "Configuration isn't locked\n"); + mutex_unlock(&s->ops_mutex); + return -EACCES; + } +diff --git a/drivers/staging/rt2860/common/cmm_data_pci.c b/drivers/staging/rt2860/common/cmm_data_pci.c +index bef0bbd..f01a51c 100644 +--- a/drivers/staging/rt2860/common/cmm_data_pci.c ++++ b/drivers/staging/rt2860/common/cmm_data_pci.c +@@ -444,7 +444,7 @@ int RTMPCheckRxError(struct rt_rtmp_adapter *pAd, + return (NDIS_STATUS_FAILURE); + } + } +- /* Drop not U2M frames, can't's drop here because we will drop beacon in this case */ ++ /* Drop not U2M frames, can't drop here because we will drop beacon in this case */ + /* I am kind of doubting the U2M bit operation */ + /* if (pRxD->U2M == 0) */ + /* return(NDIS_STATUS_FAILURE); */ +diff --git a/drivers/staging/rt2860/common/cmm_data_usb.c b/drivers/staging/rt2860/common/cmm_data_usb.c +index 5637857..83a62fa 100644 +--- a/drivers/staging/rt2860/common/cmm_data_usb.c ++++ b/drivers/staging/rt2860/common/cmm_data_usb.c +@@ -860,7 +860,7 @@ int RTMPCheckRxError(struct rt_rtmp_adapter *pAd, + DBGPRINT_RAW(RT_DEBUG_ERROR, ("received packet too long\n")); + return NDIS_STATUS_FAILURE; + } +- /* Drop not U2M frames, can't's drop here because we will drop beacon in this case */ ++ /* Drop not U2M frames, can't drop here because we will drop beacon in this case */ + /* I am kind of doubting the U2M bit operation */ + /* if (pRxD->U2M == 0) */ + /* return(NDIS_STATUS_FAILURE); */ +diff --git a/drivers/staging/spectra/ffsport.c b/drivers/staging/spectra/ffsport.c +index 20dae73..506547b 100644 +--- a/drivers/staging/spectra/ffsport.c ++++ b/drivers/staging/spectra/ffsport.c +@@ -653,7 +653,7 @@ static int SBD_setup_device(struct spectra_nand_dev *dev, int which) + } + dev->queue->queuedata = dev; + +- /* As Linux block layer does't support >4KB hardware sector, */ ++ /* As Linux block layer doesn't support >4KB hardware sector, */ + /* Here we force report 512 byte hardware sector size to Kernel */ + blk_queue_logical_block_size(dev->queue, 512); + +diff --git a/drivers/staging/tidspbridge/dynload/cload.c b/drivers/staging/tidspbridge/dynload/cload.c +index 5cecd23..fe1ef0a 100644 +--- a/drivers/staging/tidspbridge/dynload/cload.c ++++ b/drivers/staging/tidspbridge/dynload/cload.c +@@ -718,7 +718,7 @@ static void dload_symbols(struct dload_state *dlthis) + * as a temporary for .dllview record construction. + * Allocate storage for the whole table. Add 1 to the section count + * in case a trampoline section is auto-generated as well as the +- * size of the trampoline section name so DLLView does't get lost. ++ * size of the trampoline section name so DLLView doesn't get lost. + */ + + siz = sym_count * sizeof(struct local_symbol); +diff --git a/drivers/staging/tty/specialix.c b/drivers/staging/tty/specialix.c +index cb24c6d..5c3598e 100644 +--- a/drivers/staging/tty/specialix.c ++++ b/drivers/staging/tty/specialix.c +@@ -978,7 +978,7 @@ static void sx_change_speed(struct specialix_board *bp, + spin_lock_irqsave(&bp->lock, flags); + sx_out(bp, CD186x_CAR, port_No(port)); + +- /* The Specialix board does't implement the RTS lines. ++ /* The Specialix board doesn't implement the RTS lines. + They are used to set the IRQ level. Don't touch them. */ + if (sx_crtscts(tty)) + port->MSVR = MSVR_DTR | (sx_in(bp, CD186x_MSVR) & MSVR_RTS); +diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h +index 2e61fe1..8f4b81d 100644 +--- a/fs/btrfs/ctree.h ++++ b/fs/btrfs/ctree.h +@@ -718,7 +718,7 @@ struct btrfs_space_info { + u64 total_bytes; /* total bytes in the space, + this doesn't take mirrors into account */ + u64 bytes_used; /* total bytes used, +- this does't take mirrors into account */ ++ this doesn't take mirrors into account */ + u64 bytes_pinned; /* total bytes pinned, will be freed when the + transaction finishes */ + u64 bytes_reserved; /* total bytes the allocator has reserved for +diff --git a/fs/file.c b/fs/file.c +index 0be3447..4c6992d 100644 +--- a/fs/file.c ++++ b/fs/file.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -39,14 +40,17 @@ int sysctl_nr_open_max = 1024 * 1024; /* raised later */ + */ + static DEFINE_PER_CPU(struct fdtable_defer, fdtable_defer_list); + +-static inline void *alloc_fdmem(unsigned int size) ++static void *alloc_fdmem(unsigned int size) + { +- void *data; +- +- data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); +- if (data != NULL) +- return data; +- ++ /* ++ * Very large allocations can stress page reclaim, so fall back to ++ * vmalloc() if the allocation size will be considered "large" by the VM. ++ */ ++ if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) { ++ void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); ++ if (data != NULL) ++ return data; ++ } + return vmalloc(size); + } + +diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c +index 89fc160..1f063ba 100644 +--- a/fs/nfs/namespace.c ++++ b/fs/nfs/namespace.c +@@ -119,7 +119,7 @@ Elong: + } + + #ifdef CONFIG_NFS_V4 +-static rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *flavors, struct inode *inode) ++static rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *flavors) + { + struct gss_api_mech *mech; + struct xdr_netobj oid; +@@ -166,7 +166,7 @@ static int nfs_negotiate_security(const struct dentry *parent, + } + flavors = page_address(page); + ret = secinfo(parent->d_inode, &dentry->d_name, flavors); +- *flavor = nfs_find_best_sec(flavors, dentry->d_inode); ++ *flavor = nfs_find_best_sec(flavors); + put_page(page); + } + +diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h +index e1c261d..c4a6983 100644 +--- a/fs/nfs/nfs4_fs.h ++++ b/fs/nfs/nfs4_fs.h +@@ -47,6 +47,7 @@ enum nfs4_client_state { + NFS4CLNT_LAYOUTRECALL, + NFS4CLNT_SESSION_RESET, + NFS4CLNT_RECALL_SLOT, ++ NFS4CLNT_LEASE_CONFIRM, + }; + + enum nfs4_session_state { +diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c +index 9bf41ea..69c0f3c 100644 +--- a/fs/nfs/nfs4proc.c ++++ b/fs/nfs/nfs4proc.c +@@ -46,6 +46,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -443,8 +444,8 @@ static int nfs41_sequence_done(struct rpc_task *task, struct nfs4_sequence_res * + if (res->sr_status == 1) + res->sr_status = NFS_OK; + +- /* -ERESTARTSYS can result in skipping nfs41_sequence_setup */ +- if (!res->sr_slot) ++ /* don't increment the sequence number if the task wasn't sent */ ++ if (!RPC_WAS_SENT(task)) + goto out; + + /* Check the SEQUENCE operation status */ +@@ -2185,9 +2186,14 @@ static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle, + struct nfs4_exception exception = { }; + int err; + do { +- err = nfs4_handle_exception(server, +- _nfs4_lookup_root(server, fhandle, info), +- &exception); ++ err = _nfs4_lookup_root(server, fhandle, info); ++ switch (err) { ++ case 0: ++ case -NFS4ERR_WRONGSEC: ++ break; ++ default: ++ err = nfs4_handle_exception(server, err, &exception); ++ } + } while (exception.retry); + return err; + } +@@ -2208,25 +2214,47 @@ out: + return ret; + } + +-/* +- * get the file handle for the "/" directory on the server +- */ +-static int nfs4_proc_get_root(struct nfs_server *server, struct nfs_fh *fhandle, ++static int nfs4_find_root_sec(struct nfs_server *server, struct nfs_fh *fhandle, + struct nfs_fsinfo *info) + { + int i, len, status = 0; +- rpc_authflavor_t flav_array[NFS_MAX_SECFLAVORS + 2]; ++ rpc_authflavor_t flav_array[NFS_MAX_SECFLAVORS]; + +- flav_array[0] = RPC_AUTH_UNIX; +- len = gss_mech_list_pseudoflavors(&flav_array[1]); +- flav_array[1+len] = RPC_AUTH_NULL; +- len += 2; ++ len = gss_mech_list_pseudoflavors(&flav_array[0]); ++ flav_array[len] = RPC_AUTH_NULL; ++ len += 1; + + for (i = 0; i < len; i++) { + status = nfs4_lookup_root_sec(server, fhandle, info, flav_array[i]); +- if (status != -EPERM) +- break; ++ if (status == -NFS4ERR_WRONGSEC || status == -EACCES) ++ continue; ++ break; + } ++ /* ++ * -EACCESS could mean that the user doesn't have correct permissions ++ * to access the mount. It could also mean that we tried to mount ++ * with a gss auth flavor, but rpc.gssd isn't running. Either way, ++ * existing mount programs don't handle -EACCES very well so it should ++ * be mapped to -EPERM instead. ++ */ ++ if (status == -EACCES) ++ status = -EPERM; ++ return status; ++} ++ ++/* ++ * get the file handle for the "/" directory on the server ++ */ ++static int nfs4_proc_get_root(struct nfs_server *server, struct nfs_fh *fhandle, ++ struct nfs_fsinfo *info) ++{ ++ int status = nfs4_lookup_root(server, fhandle, info); ++ if ((status == -NFS4ERR_WRONGSEC) && !(server->flags & NFS_MOUNT_SECFLAVOUR)) ++ /* ++ * A status of -NFS4ERR_WRONGSEC will be mapped to -EPERM ++ * by nfs4_map_errors() as this function exits. ++ */ ++ status = nfs4_find_root_sec(server, fhandle, info); + if (status == 0) + status = nfs4_server_capabilities(server, fhandle); + if (status == 0) +@@ -3723,21 +3751,20 @@ int nfs4_proc_setclientid(struct nfs_client *clp, u32 program, + sizeof(setclientid.sc_uaddr), "%s.%u.%u", + clp->cl_ipaddr, port >> 8, port & 255); + +- status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); ++ status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); + if (status != -NFS4ERR_CLID_INUSE) + break; +- if (signalled()) ++ if (loop != 0) { ++ ++clp->cl_id_uniquifier; + break; +- if (loop++ & 1) +- ssleep(clp->cl_lease_time / HZ + 1); +- else +- if (++clp->cl_id_uniquifier == 0) +- break; ++ } ++ ++loop; ++ ssleep(clp->cl_lease_time / HZ + 1); + } + return status; + } + +-static int _nfs4_proc_setclientid_confirm(struct nfs_client *clp, ++int nfs4_proc_setclientid_confirm(struct nfs_client *clp, + struct nfs4_setclientid_res *arg, + struct rpc_cred *cred) + { +@@ -3752,7 +3779,7 @@ static int _nfs4_proc_setclientid_confirm(struct nfs_client *clp, + int status; + + now = jiffies; +- status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); ++ status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); + if (status == 0) { + spin_lock(&clp->cl_lock); + clp->cl_lease_time = fsinfo.lease_time * HZ; +@@ -3762,26 +3789,6 @@ static int _nfs4_proc_setclientid_confirm(struct nfs_client *clp, + return status; + } + +-int nfs4_proc_setclientid_confirm(struct nfs_client *clp, +- struct nfs4_setclientid_res *arg, +- struct rpc_cred *cred) +-{ +- long timeout = 0; +- int err; +- do { +- err = _nfs4_proc_setclientid_confirm(clp, arg, cred); +- switch (err) { +- case 0: +- return err; +- case -NFS4ERR_RESOURCE: +- /* The IBM lawyers misread another document! */ +- case -NFS4ERR_DELAY: +- err = nfs4_delay(clp->cl_rpcclient, &timeout); +- } +- } while (err == 0); +- return err; +-} +- + struct nfs4_delegreturndata { + struct nfs4_delegreturnargs args; + struct nfs4_delegreturnres res; +@@ -4786,7 +4793,7 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) + init_utsname()->domainname, + clp->cl_rpcclient->cl_auth->au_flavor); + +- status = rpc_call_sync(clp->cl_rpcclient, &msg, 0); ++ status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); + if (!status) + status = nfs4_check_cl_exchange_flags(clp->cl_exchange_flags); + dprintk("<-- %s status= %d\n", __func__, status); +@@ -4869,7 +4876,8 @@ int nfs4_proc_get_lease_time(struct nfs_client *clp, struct nfs_fsinfo *fsinfo) + .rpc_client = clp->cl_rpcclient, + .rpc_message = &msg, + .callback_ops = &nfs4_get_lease_time_ops, +- .callback_data = &data ++ .callback_data = &data, ++ .flags = RPC_TASK_TIMEOUT, + }; + int status; + +@@ -5171,7 +5179,7 @@ static int _nfs4_proc_create_session(struct nfs_client *clp) + nfs4_init_channel_attrs(&args); + args.flags = (SESSION4_PERSIST | SESSION4_BACK_CHAN); + +- status = rpc_call_sync(session->clp->cl_rpcclient, &msg, 0); ++ status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); + + if (!status) + /* Verify the session's negotiated channel_attrs values */ +@@ -5194,20 +5202,10 @@ int nfs4_proc_create_session(struct nfs_client *clp) + int status; + unsigned *ptr; + struct nfs4_session *session = clp->cl_session; +- long timeout = 0; +- int err; + + dprintk("--> %s clp=%p session=%p\n", __func__, clp, session); + +- do { +- status = _nfs4_proc_create_session(clp); +- if (status == -NFS4ERR_DELAY) { +- err = nfs4_delay(clp->cl_rpcclient, &timeout); +- if (err) +- status = err; +- } +- } while (status == -NFS4ERR_DELAY); +- ++ status = _nfs4_proc_create_session(clp); + if (status) + goto out; + +@@ -5248,7 +5246,7 @@ int nfs4_proc_destroy_session(struct nfs4_session *session) + msg.rpc_argp = session; + msg.rpc_resp = NULL; + msg.rpc_cred = NULL; +- status = rpc_call_sync(session->clp->cl_rpcclient, &msg, 0); ++ status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); + + if (status) + printk(KERN_WARNING +diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c +index a6804f7..036f5ad 100644 +--- a/fs/nfs/nfs4state.c ++++ b/fs/nfs/nfs4state.c +@@ -64,10 +64,15 @@ static LIST_HEAD(nfs4_clientid_list); + + int nfs4_init_clientid(struct nfs_client *clp, struct rpc_cred *cred) + { +- struct nfs4_setclientid_res clid; ++ struct nfs4_setclientid_res clid = { ++ .clientid = clp->cl_clientid, ++ .confirm = clp->cl_confirm, ++ }; + unsigned short port; + int status; + ++ if (test_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state)) ++ goto do_confirm; + port = nfs_callback_tcpport; + if (clp->cl_addr.ss_family == AF_INET6) + port = nfs_callback_tcpport6; +@@ -75,10 +80,14 @@ int nfs4_init_clientid(struct nfs_client *clp, struct rpc_cred *cred) + status = nfs4_proc_setclientid(clp, NFS4_CALLBACK, port, cred, &clid); + if (status != 0) + goto out; ++ clp->cl_clientid = clid.clientid; ++ clp->cl_confirm = clid.confirm; ++ set_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state); ++do_confirm: + status = nfs4_proc_setclientid_confirm(clp, &clid, cred); + if (status != 0) + goto out; +- clp->cl_clientid = clid.clientid; ++ clear_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state); + nfs4_schedule_state_renewal(clp); + out: + return status; +@@ -230,13 +239,18 @@ int nfs41_init_clientid(struct nfs_client *clp, struct rpc_cred *cred) + { + int status; + ++ if (test_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state)) ++ goto do_confirm; + nfs4_begin_drain_session(clp); + status = nfs4_proc_exchange_id(clp, cred); + if (status != 0) + goto out; ++ set_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state); ++do_confirm: + status = nfs4_proc_create_session(clp); + if (status != 0) + goto out; ++ clear_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state); + nfs41_setup_state_renewal(clp); + nfs_mark_client_ready(clp, NFS_CS_READY); + out: +@@ -1584,20 +1598,23 @@ static int nfs4_recall_slot(struct nfs_client *clp) { return 0; } + */ + static void nfs4_set_lease_expired(struct nfs_client *clp, int status) + { +- if (nfs4_has_session(clp)) { +- switch (status) { +- case -NFS4ERR_DELAY: +- case -NFS4ERR_CLID_INUSE: +- case -EAGAIN: +- break; ++ switch (status) { ++ case -NFS4ERR_CLID_INUSE: ++ case -NFS4ERR_STALE_CLIENTID: ++ clear_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state); ++ break; ++ case -NFS4ERR_DELAY: ++ case -ETIMEDOUT: ++ case -EAGAIN: ++ ssleep(1); ++ break; + +- case -EKEYEXPIRED: +- nfs4_warn_keyexpired(clp->cl_hostname); +- case -NFS4ERR_NOT_SAME: /* FixMe: implement recovery +- * in nfs4_exchange_id */ +- default: +- return; +- } ++ case -EKEYEXPIRED: ++ nfs4_warn_keyexpired(clp->cl_hostname); ++ case -NFS4ERR_NOT_SAME: /* FixMe: implement recovery ++ * in nfs4_exchange_id */ ++ default: ++ return; + } + set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state); + } +@@ -1607,7 +1624,7 @@ static void nfs4_state_manager(struct nfs_client *clp) + int status = 0; + + /* Ensure exclusive access to NFSv4 state */ +- for(;;) { ++ do { + if (test_and_clear_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state)) { + /* We're going to have to re-establish a clientid */ + status = nfs4_reclaim_lease(clp); +@@ -1691,7 +1708,7 @@ static void nfs4_state_manager(struct nfs_client *clp) + break; + if (test_and_set_bit(NFS4CLNT_MANAGER_RUNNING, &clp->cl_state) != 0) + break; +- } ++ } while (atomic_read(&clp->cl_count) > 1); + return; + out_error: + printk(KERN_WARNING "Error: state manager failed on NFSv4 server %s" +diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c +index dddfb57..c3ccd2c 100644 +--- a/fs/nfs/nfs4xdr.c ++++ b/fs/nfs/nfs4xdr.c +@@ -1452,26 +1452,25 @@ static void encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args, + + static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg *readdir, struct rpc_rqst *req, struct compound_hdr *hdr) + { +- uint32_t attrs[2] = {0, 0}; ++ uint32_t attrs[2] = { ++ FATTR4_WORD0_RDATTR_ERROR, ++ FATTR4_WORD1_MOUNTED_ON_FILEID, ++ }; + uint32_t dircount = readdir->count >> 1; + __be32 *p; + + if (readdir->plus) { + attrs[0] |= FATTR4_WORD0_TYPE|FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE| +- FATTR4_WORD0_FSID|FATTR4_WORD0_FILEHANDLE; ++ FATTR4_WORD0_FSID|FATTR4_WORD0_FILEHANDLE|FATTR4_WORD0_FILEID; + attrs[1] |= FATTR4_WORD1_MODE|FATTR4_WORD1_NUMLINKS|FATTR4_WORD1_OWNER| + FATTR4_WORD1_OWNER_GROUP|FATTR4_WORD1_RAWDEV| + FATTR4_WORD1_SPACE_USED|FATTR4_WORD1_TIME_ACCESS| + FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY; + dircount >>= 1; + } +- attrs[0] |= FATTR4_WORD0_RDATTR_ERROR|FATTR4_WORD0_FILEID; +- attrs[1] |= FATTR4_WORD1_MOUNTED_ON_FILEID; +- /* Switch to mounted_on_fileid if the server supports it */ +- if (readdir->bitmask[1] & FATTR4_WORD1_MOUNTED_ON_FILEID) +- attrs[0] &= ~FATTR4_WORD0_FILEID; +- else +- attrs[1] &= ~FATTR4_WORD1_MOUNTED_ON_FILEID; ++ /* Use mounted_on_fileid only if the server supports it */ ++ if (!(readdir->bitmask[1] & FATTR4_WORD1_MOUNTED_ON_FILEID)) ++ attrs[0] |= FATTR4_WORD0_FILEID; + + p = reserve_space(xdr, 12+NFS4_VERIFIER_SIZE+20); + *p++ = cpu_to_be32(OP_READDIR); +@@ -3140,7 +3139,7 @@ static int decode_attr_mounted_on_fileid(struct xdr_stream *xdr, uint32_t *bitma + goto out_overflow; + xdr_decode_hyper(p, fileid); + bitmap[1] &= ~FATTR4_WORD1_MOUNTED_ON_FILEID; +- ret = NFS_ATTR_FATTR_FILEID; ++ ret = NFS_ATTR_FATTR_MOUNTED_ON_FILEID; + } + dprintk("%s: fileid=%Lu\n", __func__, (unsigned long long)*fileid); + return ret; +@@ -4002,7 +4001,6 @@ static int decode_getfattr_attrs(struct xdr_stream *xdr, uint32_t *bitmap, + { + int status; + umode_t fmode = 0; +- uint64_t fileid; + uint32_t type; + + status = decode_attr_type(xdr, bitmap, &type); +@@ -4101,13 +4099,10 @@ static int decode_getfattr_attrs(struct xdr_stream *xdr, uint32_t *bitmap, + goto xdr_error; + fattr->valid |= status; + +- status = decode_attr_mounted_on_fileid(xdr, bitmap, &fileid); ++ status = decode_attr_mounted_on_fileid(xdr, bitmap, &fattr->mounted_on_fileid); + if (status < 0) + goto xdr_error; +- if (status != 0 && !(fattr->valid & status)) { +- fattr->fileid = fileid; +- fattr->valid |= status; +- } ++ fattr->valid |= status; + + xdr_error: + dprintk("%s: xdr returned %d\n", __func__, -status); +@@ -4838,17 +4833,21 @@ static int decode_secinfo(struct xdr_stream *xdr, struct nfs4_secinfo_res *res) + struct nfs4_secinfo_flavor *sec_flavor; + int status; + __be32 *p; +- int i; ++ int i, num_flavors; + + status = decode_op_hdr(xdr, OP_SECINFO); ++ if (status) ++ goto out; + p = xdr_inline_decode(xdr, 4); + if (unlikely(!p)) + goto out_overflow; +- res->flavors->num_flavors = be32_to_cpup(p); + +- for (i = 0; i < res->flavors->num_flavors; i++) { ++ res->flavors->num_flavors = 0; ++ num_flavors = be32_to_cpup(p); ++ ++ for (i = 0; i < num_flavors; i++) { + sec_flavor = &res->flavors->flavors[i]; +- if ((char *)&sec_flavor[1] - (char *)res > PAGE_SIZE) ++ if ((char *)&sec_flavor[1] - (char *)res->flavors > PAGE_SIZE) + break; + + p = xdr_inline_decode(xdr, 4); +@@ -4857,13 +4856,15 @@ static int decode_secinfo(struct xdr_stream *xdr, struct nfs4_secinfo_res *res) + sec_flavor->flavor = be32_to_cpup(p); + + if (sec_flavor->flavor == RPC_AUTH_GSS) { +- if (decode_secinfo_gss(xdr, sec_flavor)) +- break; ++ status = decode_secinfo_gss(xdr, sec_flavor); ++ if (status) ++ goto out; + } ++ res->flavors->num_flavors++; + } + +- return 0; +- ++out: ++ return status; + out_overflow: + print_overflow_msg(__func__, xdr); + return -EIO; +@@ -6408,7 +6409,9 @@ int nfs4_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry, + if (decode_getfattr_attrs(xdr, bitmap, entry->fattr, entry->fh, + entry->server, 1) < 0) + goto out_overflow; +- if (entry->fattr->valid & NFS_ATTR_FATTR_FILEID) ++ if (entry->fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) ++ entry->ino = entry->fattr->mounted_on_fileid; ++ else if (entry->fattr->valid & NFS_ATTR_FATTR_FILEID) + entry->ino = entry->fattr->fileid; + + entry->d_type = DT_UNKNOWN; +diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c +index d9ab972..ff681ab 100644 +--- a/fs/nfs/pnfs.c ++++ b/fs/nfs/pnfs.c +@@ -1004,6 +1004,7 @@ pnfs_set_layoutcommit(struct nfs_write_data *wdata) + { + struct nfs_inode *nfsi = NFS_I(wdata->inode); + loff_t end_pos = wdata->args.offset + wdata->res.count; ++ bool mark_as_dirty = false; + + spin_lock(&nfsi->vfs_inode.i_lock); + if (!test_and_set_bit(NFS_INO_LAYOUTCOMMIT, &nfsi->flags)) { +@@ -1011,13 +1012,18 @@ pnfs_set_layoutcommit(struct nfs_write_data *wdata) + get_lseg(wdata->lseg); + wdata->lseg->pls_lc_cred = + get_rpccred(wdata->args.context->state->owner->so_cred); +- mark_inode_dirty_sync(wdata->inode); ++ mark_as_dirty = true; + dprintk("%s: Set layoutcommit for inode %lu ", + __func__, wdata->inode->i_ino); + } + if (end_pos > wdata->lseg->pls_end_pos) + wdata->lseg->pls_end_pos = end_pos; + spin_unlock(&nfsi->vfs_inode.i_lock); ++ ++ /* if pnfs_layoutcommit_inode() runs between inode locks, the next one ++ * will be a noop because NFS_INO_LAYOUTCOMMIT will not be set */ ++ if (mark_as_dirty) ++ mark_inode_dirty_sync(wdata->inode); + } + EXPORT_SYMBOL_GPL(pnfs_set_layoutcommit); + +diff --git a/fs/nfs/super.c b/fs/nfs/super.c +index 2b8e9a5..e288f06 100644 +--- a/fs/nfs/super.c ++++ b/fs/nfs/super.c +@@ -1004,6 +1004,7 @@ static int nfs_parse_security_flavors(char *value, + return 0; + } + ++ mnt->flags |= NFS_MOUNT_SECFLAVOUR; + mnt->auth_flavor_len = 1; + return 1; + } +@@ -1976,6 +1977,15 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data) + if (error < 0) + goto out; + ++ /* ++ * noac is a special case. It implies -o sync, but that's not ++ * necessarily reflected in the mtab options. do_remount_sb ++ * will clear MS_SYNCHRONOUS if -o sync wasn't specified in the ++ * remount options, so we have to explicitly reset it. ++ */ ++ if (data->flags & NFS_MOUNT_NOAC) ++ *flags |= MS_SYNCHRONOUS; ++ + /* compare new mount options with old ones */ + error = nfs_compare_remount_data(nfss, data); + out: +@@ -2235,8 +2245,7 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type, + if (!s->s_root) { + /* initial superblock/root creation */ + nfs_fill_super(s, data); +- nfs_fscache_get_super_cookie( +- s, data ? data->fscache_uniq : NULL, NULL); ++ nfs_fscache_get_super_cookie(s, data->fscache_uniq, NULL); + } + + mntroot = nfs_get_root(s, mntfh, dev_name); +diff --git a/fs/nfs/write.c b/fs/nfs/write.c +index e4cbc11..3bd5d7e 100644 +--- a/fs/nfs/write.c ++++ b/fs/nfs/write.c +@@ -680,7 +680,6 @@ static int nfs_writepage_setup(struct nfs_open_context *ctx, struct page *page, + req = nfs_setup_write_request(ctx, page, offset, count); + if (IS_ERR(req)) + return PTR_ERR(req); +- nfs_mark_request_dirty(req); + /* Update file length */ + nfs_grow_file(page, offset, count); + nfs_mark_uptodate(page, req->wb_pgbase, req->wb_bytes); +@@ -1418,8 +1417,7 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata) + task->tk_pid, task->tk_status); + + /* Call the NFS version-specific code */ +- if (NFS_PROTO(data->inode)->commit_done(task, data) != 0) +- return; ++ NFS_PROTO(data->inode)->commit_done(task, data); + } + + void nfs_commit_release_pages(struct nfs_write_data *data) +diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h +index b68f87a..938387a 100644 +--- a/fs/ocfs2/ocfs2_fs.h ++++ b/fs/ocfs2/ocfs2_fs.h +@@ -1019,7 +1019,7 @@ struct ocfs2_xattr_entry { + __le16 xe_name_offset; /* byte offset from the 1st entry in the + local xattr storage(inode, xattr block or + xattr bucket). */ +- __u8 xe_name_len; /* xattr name len, does't include prefix. */ ++ __u8 xe_name_len; /* xattr name len, doesn't include prefix. */ + __u8 xe_type; /* the low 7 bits indicate the name prefix + * type and the highest bit indicates whether + * the EA is stored in the local storage. */ +diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h +index f22e7fe..ade09d7 100644 +--- a/include/drm/drm_fb_helper.h ++++ b/include/drm/drm_fb_helper.h +@@ -118,6 +118,7 @@ int drm_fb_helper_setcolreg(unsigned regno, + unsigned transp, + struct fb_info *info); + ++bool drm_fb_helper_restore_fbdev_mode(struct drm_fb_helper *fb_helper); + void drm_fb_helper_restore(void); + void drm_fb_helper_fill_var(struct fb_info *info, struct drm_fb_helper *fb_helper, + uint32_t fb_width, uint32_t fb_height); +diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h +index 3bce1a4..7aa5ddd 100644 +--- a/include/drm/radeon_drm.h ++++ b/include/drm/radeon_drm.h +@@ -909,6 +909,7 @@ struct drm_radeon_cs { + #define RADEON_INFO_WANT_CMASK 0x08 /* get access to CMASK on r300 */ + #define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09 /* clock crystal frequency */ + #define RADEON_INFO_NUM_BACKENDS 0x0a /* DB/backends for r600+ - need for OQ */ ++#define RADEON_INFO_NUM_TILE_PIPES 0x0b /* tile pipes for r600+ */ + + struct drm_radeon_info { + uint32_t request; +diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h +index df29c8f..8847c8c 100644 +--- a/include/linux/huge_mm.h ++++ b/include/linux/huge_mm.h +@@ -117,7 +117,7 @@ static inline void vma_adjust_trans_huge(struct vm_area_struct *vma, + unsigned long end, + long adjust_next) + { +- if (!vma->anon_vma || vma->vm_ops || vma->vm_file) ++ if (!vma->anon_vma || vma->vm_ops) + return; + __vma_adjust_trans_huge(vma, start, end, adjust_next); + } +diff --git a/include/linux/mm.h b/include/linux/mm.h +index 692dbae..2348db2 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -137,7 +137,8 @@ extern unsigned int kobjsize(const void *objp); + #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ) + + /* +- * special vmas that are non-mergable, non-mlock()able ++ * Special vmas that are non-mergable, non-mlock()able. ++ * Note: mm/huge_memory.c VM_NO_THP depends on this definition. + */ + #define VM_SPECIAL (VM_IO | VM_DONTEXPAND | VM_RESERVED | VM_PFNMAP) + +diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h +index 216cea5..87694ca 100644 +--- a/include/linux/nfs_fs_sb.h ++++ b/include/linux/nfs_fs_sb.h +@@ -47,6 +47,7 @@ struct nfs_client { + + #ifdef CONFIG_NFS_V4 + u64 cl_clientid; /* constant */ ++ nfs4_verifier cl_confirm; /* Clientid verifier */ + unsigned long cl_state; + + spinlock_t cl_lock; +diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h +index 78b101e..890dce2 100644 +--- a/include/linux/nfs_xdr.h ++++ b/include/linux/nfs_xdr.h +@@ -50,6 +50,7 @@ struct nfs_fattr { + } du; + struct nfs_fsid fsid; + __u64 fileid; ++ __u64 mounted_on_fileid; + struct timespec atime; + struct timespec mtime; + struct timespec ctime; +@@ -83,6 +84,7 @@ struct nfs_fattr { + #define NFS_ATTR_FATTR_PRECHANGE (1U << 18) + #define NFS_ATTR_FATTR_V4_REFERRAL (1U << 19) /* NFSv4 referral */ + #define NFS_ATTR_FATTR_MOUNTPOINT (1U << 20) /* Treat as mountpoint */ ++#define NFS_ATTR_FATTR_MOUNTED_ON_FILEID (1U << 21) + + #define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \ + | NFS_ATTR_FATTR_MODE \ +diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h +index d81db80..f73c482 100644 +--- a/include/linux/sunrpc/sched.h ++++ b/include/linux/sunrpc/sched.h +@@ -127,13 +127,16 @@ struct rpc_task_setup { + #define RPC_TASK_KILLED 0x0100 /* task was killed */ + #define RPC_TASK_SOFT 0x0200 /* Use soft timeouts */ + #define RPC_TASK_SOFTCONN 0x0400 /* Fail if can't connect */ ++#define RPC_TASK_SENT 0x0800 /* message was sent */ ++#define RPC_TASK_TIMEOUT 0x1000 /* fail with ETIMEDOUT on timeout */ + + #define RPC_IS_ASYNC(t) ((t)->tk_flags & RPC_TASK_ASYNC) + #define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER) + #define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS) + #define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED) +-#define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT) ++#define RPC_IS_SOFT(t) ((t)->tk_flags & (RPC_TASK_SOFT|RPC_TASK_TIMEOUT)) + #define RPC_IS_SOFTCONN(t) ((t)->tk_flags & RPC_TASK_SOFTCONN) ++#define RPC_WAS_SENT(t) ((t)->tk_flags & RPC_TASK_SENT) + + #define RPC_TASK_RUNNING 0 + #define RPC_TASK_QUEUED 1 +diff --git a/include/linux/v4l2-mediabus.h b/include/linux/v4l2-mediabus.h +index 7054a7a..de5c159 100644 +--- a/include/linux/v4l2-mediabus.h ++++ b/include/linux/v4l2-mediabus.h +@@ -47,7 +47,7 @@ enum v4l2_mbus_pixelcode { + V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007, + V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008, + +- /* YUV (including grey) - next is 0x2013 */ ++ /* YUV (including grey) - next is 0x2014 */ + V4L2_MBUS_FMT_Y8_1X8 = 0x2001, + V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002, + V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003, +@@ -60,6 +60,7 @@ enum v4l2_mbus_pixelcode { + V4L2_MBUS_FMT_Y10_1X10 = 0x200a, + V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b, + V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c, ++ V4L2_MBUS_FMT_Y12_1X12 = 0x2013, + V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f, + V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010, + V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011, +@@ -67,9 +68,11 @@ enum v4l2_mbus_pixelcode { + V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d, + V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e, + +- /* Bayer - next is 0x3013 */ ++ /* Bayer - next is 0x3015 */ + V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001, ++ V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013, + V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002, ++ V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014, + V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b, + V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c, + V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009, +diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h +index aa6c393..be82c8e 100644 +--- a/include/linux/videodev2.h ++++ b/include/linux/videodev2.h +@@ -308,6 +308,7 @@ struct v4l2_pix_format { + #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ + #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ + #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ ++#define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ + #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ + + /* Palette formats */ +diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h +index bd102cf..d61febf 100644 +--- a/include/media/v4l2-device.h ++++ b/include/media/v4l2-device.h +@@ -163,7 +163,7 @@ v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev); + ({ \ + struct v4l2_subdev *__sd; \ + __v4l2_device_call_subdevs_until_err_p(v4l2_dev, __sd, cond, o, \ +- f, args...); \ ++ f , ##args); \ + }) + + /* Call the specified callback for all subdevs matching grp_id (if 0, then +diff --git a/init/Kconfig b/init/Kconfig +index 7a71e0a..d886b1e 100644 +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1226,6 +1226,7 @@ config SLAB + per cpu and per node queues. + + config SLUB ++ depends on BROKEN || NUMA || !DISCONTIGMEM + bool "SLUB (Unqueued Allocator)" + help + SLUB is a slab allocator that minimizes cache line usage +diff --git a/kernel/watchdog.c b/kernel/watchdog.c +index 140dce7..14733d4 100644 +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -430,9 +430,12 @@ static int watchdog_enable(int cpu) + p = kthread_create(watchdog, (void *)(unsigned long)cpu, "watchdog/%d", cpu); + if (IS_ERR(p)) { + printk(KERN_ERR "softlockup watchdog for %i failed\n", cpu); +- if (!err) ++ if (!err) { + /* if hardlockup hasn't already set this */ + err = PTR_ERR(p); ++ /* and disable the perf event */ ++ watchdog_nmi_disable(cpu); ++ } + goto out; + } + kthread_bind(p, cpu); +diff --git a/mm/huge_memory.c b/mm/huge_memory.c +index 470dcda..83326ad 100644 +--- a/mm/huge_memory.c ++++ b/mm/huge_memory.c +@@ -1408,6 +1408,9 @@ out: + return ret; + } + ++#define VM_NO_THP (VM_SPECIAL|VM_INSERTPAGE|VM_MIXEDMAP|VM_SAO| \ ++ VM_HUGETLB|VM_SHARED|VM_MAYSHARE) ++ + int hugepage_madvise(struct vm_area_struct *vma, + unsigned long *vm_flags, int advice) + { +@@ -1416,11 +1419,7 @@ int hugepage_madvise(struct vm_area_struct *vma, + /* + * Be somewhat over-protective like KSM for now! + */ +- if (*vm_flags & (VM_HUGEPAGE | +- VM_SHARED | VM_MAYSHARE | +- VM_PFNMAP | VM_IO | VM_DONTEXPAND | +- VM_RESERVED | VM_HUGETLB | VM_INSERTPAGE | +- VM_MIXEDMAP | VM_SAO)) ++ if (*vm_flags & (VM_HUGEPAGE | VM_NO_THP)) + return -EINVAL; + *vm_flags &= ~VM_NOHUGEPAGE; + *vm_flags |= VM_HUGEPAGE; +@@ -1436,11 +1435,7 @@ int hugepage_madvise(struct vm_area_struct *vma, + /* + * Be somewhat over-protective like KSM for now! + */ +- if (*vm_flags & (VM_NOHUGEPAGE | +- VM_SHARED | VM_MAYSHARE | +- VM_PFNMAP | VM_IO | VM_DONTEXPAND | +- VM_RESERVED | VM_HUGETLB | VM_INSERTPAGE | +- VM_MIXEDMAP | VM_SAO)) ++ if (*vm_flags & (VM_NOHUGEPAGE | VM_NO_THP)) + return -EINVAL; + *vm_flags &= ~VM_HUGEPAGE; + *vm_flags |= VM_NOHUGEPAGE; +@@ -1574,10 +1569,14 @@ int khugepaged_enter_vma_merge(struct vm_area_struct *vma) + * page fault if needed. + */ + return 0; +- if (vma->vm_file || vma->vm_ops) ++ if (vma->vm_ops) + /* khugepaged not yet working on file or special mappings */ + return 0; +- VM_BUG_ON(is_linear_pfn_mapping(vma) || is_pfn_mapping(vma)); ++ /* ++ * If is_pfn_mapping() is true is_learn_pfn_mapping() must be ++ * true too, verify it here. ++ */ ++ VM_BUG_ON(is_linear_pfn_mapping(vma) || vma->vm_flags & VM_NO_THP); + hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK; + hend = vma->vm_end & HPAGE_PMD_MASK; + if (hstart < hend) +@@ -1828,12 +1827,15 @@ static void collapse_huge_page(struct mm_struct *mm, + (vma->vm_flags & VM_NOHUGEPAGE)) + goto out; + +- /* VM_PFNMAP vmas may have vm_ops null but vm_file set */ +- if (!vma->anon_vma || vma->vm_ops || vma->vm_file) ++ if (!vma->anon_vma || vma->vm_ops) + goto out; + if (is_vma_temporary_stack(vma)) + goto out; +- VM_BUG_ON(is_linear_pfn_mapping(vma) || is_pfn_mapping(vma)); ++ /* ++ * If is_pfn_mapping() is true is_learn_pfn_mapping() must be ++ * true too, verify it here. ++ */ ++ VM_BUG_ON(is_linear_pfn_mapping(vma) || vma->vm_flags & VM_NO_THP); + + pgd = pgd_offset(mm, address); + if (!pgd_present(*pgd)) +@@ -2066,13 +2068,16 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, + progress++; + continue; + } +- /* VM_PFNMAP vmas may have vm_ops null but vm_file set */ +- if (!vma->anon_vma || vma->vm_ops || vma->vm_file) ++ if (!vma->anon_vma || vma->vm_ops) + goto skip; + if (is_vma_temporary_stack(vma)) + goto skip; +- +- VM_BUG_ON(is_linear_pfn_mapping(vma) || is_pfn_mapping(vma)); ++ /* ++ * If is_pfn_mapping() is true is_learn_pfn_mapping() ++ * must be true too, verify it here. ++ */ ++ VM_BUG_ON(is_linear_pfn_mapping(vma) || ++ vma->vm_flags & VM_NO_THP); + + hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK; + hend = vma->vm_end & HPAGE_PMD_MASK; +diff --git a/mm/memory.c b/mm/memory.c +index ce22a25..607098d4 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3396,7 +3396,7 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, + * run pte_offset_map on the pmd, if an huge pmd could + * materialize from under us from a different thread. + */ +- if (unlikely(__pte_alloc(mm, vma, pmd, address))) ++ if (unlikely(pmd_none(*pmd)) && __pte_alloc(mm, vma, pmd, address)) + return VM_FAULT_OOM; + /* if an huge pmd materialized from under us just retry later */ + if (unlikely(pmd_trans_huge(*pmd))) +diff --git a/mm/oom_kill.c b/mm/oom_kill.c +index 83fb72c1..f52e85c 100644 +--- a/mm/oom_kill.c ++++ b/mm/oom_kill.c +@@ -172,10 +172,13 @@ unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, + + /* + * The baseline for the badness score is the proportion of RAM that each +- * task's rss and swap space use. ++ * task's rss, pagetable and swap space use. + */ +- points = (get_mm_rss(p->mm) + get_mm_counter(p->mm, MM_SWAPENTS)) * 1000 / +- totalpages; ++ points = get_mm_rss(p->mm) + p->mm->nr_ptes; ++ points += get_mm_counter(p->mm, MM_SWAPENTS); ++ ++ points *= 1000; ++ points /= totalpages; + task_unlock(p); + + /* +diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c +index fce9bd3..5c04f3e 100644 +--- a/net/l2tp/l2tp_ip.c ++++ b/net/l2tp/l2tp_ip.c +@@ -667,7 +667,7 @@ MODULE_AUTHOR("James Chapman "); + MODULE_DESCRIPTION("L2TP over IP"); + MODULE_VERSION("1.0"); + +-/* Use the value of SOCK_DGRAM (2) directory, because __stringify does't like ++/* Use the value of SOCK_DGRAM (2) directory, because __stringify doesn't like + * enums + */ + MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 2, IPPROTO_L2TP); +diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c +index dff27d5..61b1f5a 100644 +--- a/net/sctp/ulpevent.c ++++ b/net/sctp/ulpevent.c +@@ -554,7 +554,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_send_failed( + memcpy(&ssf->ssf_info, &chunk->sinfo, sizeof(struct sctp_sndrcvinfo)); + + /* Per TSVWG discussion with Randy. Allow the application to +- * resemble a fragmented message. ++ * reassemble a fragmented message. + */ + ssf->ssf_info.sinfo_flags = chunk->chunk_hdr->flags; + +diff --git a/net/sunrpc/Kconfig b/net/sunrpc/Kconfig +index 8873fd8..b2198e6 100644 +--- a/net/sunrpc/Kconfig ++++ b/net/sunrpc/Kconfig +@@ -18,14 +18,13 @@ config SUNRPC_XPRT_RDMA + If unsure, say N. + + config RPCSEC_GSS_KRB5 +- tristate ++ tristate "Secure RPC: Kerberos V mechanism" + depends on SUNRPC && CRYPTO +- prompt "Secure RPC: Kerberos V mechanism" if !(NFS_V4 || NFSD_V4) ++ depends on CRYPTO_MD5 && CRYPTO_DES && CRYPTO_CBC && CRYPTO_CTS ++ depends on CRYPTO_ECB && CRYPTO_HMAC && CRYPTO_SHA1 && CRYPTO_AES ++ depends on CRYPTO_ARC4 + default y + select SUNRPC_GSS +- select CRYPTO_MD5 +- select CRYPTO_DES +- select CRYPTO_CBC + help + Choose Y here to enable Secure RPC using the Kerberos version 5 + GSS-API mechanism (RFC 1964). +diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c +index f3914d0..339ba64 100644 +--- a/net/sunrpc/auth_gss/auth_gss.c ++++ b/net/sunrpc/auth_gss/auth_gss.c +@@ -520,7 +520,7 @@ gss_refresh_upcall(struct rpc_task *task) + warn_gssd(); + task->tk_timeout = 15*HZ; + rpc_sleep_on(&pipe_version_rpc_waitqueue, task, NULL); +- return 0; ++ return -EAGAIN; + } + if (IS_ERR(gss_msg)) { + err = PTR_ERR(gss_msg); +@@ -563,10 +563,12 @@ retry: + if (PTR_ERR(gss_msg) == -EAGAIN) { + err = wait_event_interruptible_timeout(pipe_version_waitqueue, + pipe_version >= 0, 15*HZ); ++ if (pipe_version < 0) { ++ warn_gssd(); ++ err = -EACCES; ++ } + if (err) + goto out; +- if (pipe_version < 0) +- warn_gssd(); + goto retry; + } + if (IS_ERR(gss_msg)) { +diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c +index e7a96e4..8d83f9d 100644 +--- a/net/sunrpc/clnt.c ++++ b/net/sunrpc/clnt.c +@@ -1508,7 +1508,10 @@ call_timeout(struct rpc_task *task) + if (clnt->cl_chatty) + printk(KERN_NOTICE "%s: server %s not responding, timed out\n", + clnt->cl_protname, clnt->cl_server); +- rpc_exit(task, -EIO); ++ if (task->tk_flags & RPC_TASK_TIMEOUT) ++ rpc_exit(task, -ETIMEDOUT); ++ else ++ rpc_exit(task, -EIO); + return; + } + +diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c +index 9494c37..ce5eb68 100644 +--- a/net/sunrpc/xprt.c ++++ b/net/sunrpc/xprt.c +@@ -906,6 +906,7 @@ void xprt_transmit(struct rpc_task *task) + } + + dprintk("RPC: %5u xmit complete\n", task->tk_pid); ++ task->tk_flags |= RPC_TASK_SENT; + spin_lock_bh(&xprt->transport_lock); + + xprt->ops->set_retrans_timeout(task); +diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c +index 58804c7..fd2188c 100644 +--- a/sound/aoa/codecs/tas.c ++++ b/sound/aoa/codecs/tas.c +@@ -170,7 +170,7 @@ static void tas_set_volume(struct tas *tas) + /* analysing the volume and mixer tables shows + * that they are similar enough when we shift + * the mixer table down by 4 bits. The error +- * is minuscule, in just one item the error ++ * is miniscule, in just one item the error + * is 1, at a value of 0x07f17b (mixer table + * value is 0x07f17a) */ + tmp = tas_gaintable[left]; diff --git a/packages/linux/patches/linux-2.6.39-rc5-720_usb-wakeup.patch b/packages/linux/patches/linux-2.6.39-rc5-720_usb-wakeup.patch deleted file mode 100644 index 0303fd210b..0000000000 --- a/packages/linux/patches/linux-2.6.39-rc5-720_usb-wakeup.patch +++ /dev/null @@ -1,31 +0,0 @@ -=================================================================== ---- linux-2.6.orig/drivers/base/power/main.c -+++ linux-2.6/drivers/base/power/main.c -@@ -63,6 +63,7 @@ void device_pm_init(struct device *dev) - dev->power.wakeup = NULL; - spin_lock_init(&dev->power.lock); - pm_runtime_init(dev); -+ INIT_LIST_HEAD(&dev->power.entry); - } - - /** -Index: linux-2.6/drivers/base/power/wakeup.c -=================================================================== ---- linux-2.6.orig/drivers/base/power/wakeup.c -+++ linux-2.6/drivers/base/power/wakeup.c -@@ -258,7 +258,7 @@ void device_set_wakeup_capable(struct de - if (!!dev->power.can_wakeup == !!capable) - return; - -- if (device_is_registered(dev)) { -+ if (device_is_registered(dev) && !list_empty(&dev->power.entry)) { - if (capable) { - if (wakeup_sysfs_add(dev)) - return; --- -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html -Please read the FAQ at http://www.tux.org/lkml/ - - \ No newline at end of file