Hello community,
here is the log from the commit of package kernel-source for openSUSE:Factory
checked in at Mon Jul 4 09:07:30 CEST 2011.
--------
--- kernel-source/kernel-debug.changes 2011-05-23 15:45:53.000000000 +0200
+++ /mounts/work_src_done/STABLE/kernel-source/kernel-debug.changes 2011-06-30 07:03:47.000000000 +0200
@@ -1,0 +2,355 @@
+Wed Jun 29 15:12:07 CEST 2011 - jeffm@suse.com
+
+- Update to 3.0-rc5.
+- commit 9eb1a0f
+
+-------------------------------------------------------------------
+Wed Jun 29 14:46:33 CEST 2011 - jslaby@suse.cz
+
+- TTY: ldisc, do not close until there are readers (bnc#698247
+ bnc#693374).
+- commit b3afb1a
+
+-------------------------------------------------------------------
+Fri Jun 24 01:30:11 CEST 2011 - jeffm@suse.com
+
+- Enable TOMOYO (FATE#310292, bnc#668381).
+- commit 997e757
+
+-------------------------------------------------------------------
+Tue Jun 21 14:06:48 CEST 2011 - mmarek@suse.cz
+
+- Update vanilla configs.
+- commit 1738011
+
+-------------------------------------------------------------------
+Tue Jun 21 12:14:44 CEST 2011 - mmarek@suse.cz
+
+- Update to 3.0-rc4
+- commit 1b6bf5d
+
+-------------------------------------------------------------------
+Fri Jun 17 17:29:41 CEST 2011 - mmarek@suse.cz
+
+- rpm/post.sh: Touch /boot/do_purge_kernels on package install
+ (fate#312018).
+- rpm/postun.sh: Remove it again if it still exists on package
+ uninstall.
+- commit 82f4a5d
+
+-------------------------------------------------------------------
+Fri Jun 17 13:23:54 CEST 2011 - trenn@suse.de
+
+- stop_machine: implement stop_machine_from_offline_cpu()
+ (bnc#697859).
+- stop_machine: kill __stop_machine() (bnc#697859).
+- x86, mtrr: lock stop machine during MTRR rendezvous sequence
+ (bnc#697859).
+- stop_machine: reorganize stop_cpus() implementation
+ (bnc#697859).
+- x86, mtrr: use __stop_machine() for doing MTRR rendezvous
+ (bnc#697859).
+- commit aa3d6e2
+
+-------------------------------------------------------------------
+Thu Jun 16 12:16:16 CEST 2011 - mmarek@suse.cz
+
+- Remove the novfs patches, it should be packaged as a KMP, or
+ ideally, reimplemented as a fuse filesystem (which is the reason why
+ the current implementation it is never going to be accepted upstream).
+- Delete patches.fixes/novfs-copy_user-fixes.diff.
+- Delete patches.fixes/novfs-minsize-fixes.
+- Delete patches.fixes/novfs-nwcapi.patch.
+- Delete patches.suse/novfs-client-module.
+- Delete patches.suse/novfs-remove-bkl.
+- commit bc3a79d
+
+-------------------------------------------------------------------
+Thu Jun 16 12:04:56 CEST 2011 - ohering@suse.de
+
+- Update vanilla config files.
+- commit a642909
+
+-------------------------------------------------------------------
+Thu Jun 16 11:50:58 CEST 2011 - ohering@suse.de
+
+- rpm/kernel-binary.spec.in:
+ jobs is not defined for home: projects, use the new _smp_mflags to enable parallel build
+- rpm/kernel-binary.spec.in:
+ jobs is not defined for home: projects, use the new _smp_mflags to enable parallel build
+- commit 1009eaf
+
+-------------------------------------------------------------------
+Thu Jun 16 11:27:44 CEST 2011 - ohering@suse.de
+
+- rpm/kernel-binary.spec.in:
+ Update comment, get the number of cpus from /proc/stat
+- rpm/kernel-binary.spec.in:
+ Update comment, get the number of cpus from /proc/stat
+- commit b4cf18c
+
+-------------------------------------------------------------------
+Wed Jun 15 20:40:28 CEST 2011 - jeffm@suse.com
+
+- Update config files: Disable BRCMSMAC on ppc/ppc64.
+- commit 20b3d8e
+
+-------------------------------------------------------------------
+Wed Jun 15 18:33:50 CEST 2011 - jack@suse.cz
+
+- "Unable to save Login Script" appears when trying to save a
+ user login script (bnc#638985).
+- commit 7c243a4
+
+-------------------------------------------------------------------
+Wed Jun 15 18:22:05 CEST 2011 - jack@suse.cz
+
+- fs: novfs: Limit check for datacopy between user and kernel space.
+- commit 5fbc5ed
+
+-------------------------------------------------------------------
+Wed Jun 15 08:05:05 CEST 2011 - jeffm@suse.com
+
+- Update to 3.0-rc3.
+ - Eliminated 2 patches.
+- commit a1fe999
+
+-------------------------------------------------------------------
+Tue Jun 14 17:13:47 CEST 2011 - mmarek@suse.cz
+
+- scripts/config.sh: Remove MIRROR handling, _find_tarball() does it
+ itself.
+- commit 18ad47f
+
+-------------------------------------------------------------------
+Mon Jun 13 21:52:37 CEST 2011 - jeffm@suse.com
+
+- nouveau: Make vga_switcheroo code depend on VGA_SWITCHEROO.
+- commit b3f32a6
+
+-------------------------------------------------------------------
+Mon Jun 13 17:29:32 CEST 2011 - jeffm@suse.com
+
+- apm: Honor CONFIG_APM_CPU_IDLE=n.
+- commit 8ad9b51
+
+-------------------------------------------------------------------
+Mon Jun 13 17:18:17 CEST 2011 - jeffm@suse.com
+
+- Update config files.
+- commit 2cd7359
+
+-------------------------------------------------------------------
+Mon Jun 13 17:15:33 CEST 2011 - jeffm@suse.com
+
+- Delete patches.rpmify/qla4xx-missing-readq-definition.
+- commit b48337d
+
+-------------------------------------------------------------------
+Mon Jun 13 16:58:50 CEST 2011 - mmarek@suse.cz
+
+- Remove copypasted lines from vanilla configs.
+- commit b395e52
+
+-------------------------------------------------------------------
+Mon Jun 13 16:27:20 CEST 2011 - mmarek@suse.cz
+
+- rpm/kernel-binary.spec.in: Call gzip with -n.
+- commit 9a65e48
+
+-------------------------------------------------------------------
+Mon Jun 13 16:00:19 CEST 2011 - mmarek@suse.cz
+
+- rpm/mkspec: Put the -rcX tag into the rpm version instead of the
+ trailing zero. Rpm considers "rc" older than "0", so this will sort
+ properly.
+- commit 8d9b2b9
+
+-------------------------------------------------------------------
+Mon Jun 13 14:41:50 CEST 2011 - mmarek@suse.cz
+
+- x86, build: Do not set the root_dev field in bzImage.
+- commit 15e4a82
+
+-------------------------------------------------------------------
+Mon Jun 13 14:06:28 CEST 2011 - mmarek@suse.cz
+
+- rpm/compute-PATCHVERSION.sh: Set default PATCHLEVEL and SUBLEVEL to 0.
+ The package version will thus always match the Makefile version and
+ the SRCVERSION variable will only be used to determine the tarball
+ version.
+- rpm/compute-PATCHVERSION.sh: Set default PATCHLEVEL and SUBLEVEL to 0.
+ The package version will thus always match the Makefile version and
+ the SRCVERSION variable will only be used to determine the tarball
+ version.
+- rpm/kernel-binary.spec.in: Revert the previous hack.
+- commit 95c9977
+
+-------------------------------------------------------------------
+Sat Jun 11 23:37:42 CEST 2011 - jeffm@suse.de
+
+- kbuild: Fix KERNELVERSION for empty SUBLEVEL or PATCHLEVEL.
+- kbuild: Fix for empty SUBLEVEL or PATCHLEVEL.
+- Refresh patches.suse/supported-flag.
+- rpm/kernel-binary.spec.in: Hack to work around v3.0 vs v3.0.0
+- commit a95ebd8
+
+-------------------------------------------------------------------
++++ 163 more lines (skipped)
++++ between kernel-source/kernel-debug.changes
++++ and /mounts/work_src_done/STABLE/kernel-source/kernel-debug.changes
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-pae.changes: same change
kernel-ppc64.changes: same change
kernel-ps3.changes: same change
kernel-s390.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-trace.changes: same change
kernel-vanilla.changes: same change
calling whatdependson for head-i586
Old:
----
kernel-ec2.changes
kernel-ec2.spec
kernel-xen.changes
kernel-xen.spec
linux-2.6.39.tar.bz2
New:
----
linux-3.0-rc5.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -17,8 +17,8 @@
# norootforbuild
-%define srcversion 2.6.39
-%define patchversion 2.6.39
+%define srcversion 3.0-rc5
+%define patchversion 3.0.0-rc5
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -55,7 +55,7 @@
Name: kernel-debug
Summary: A Debug Version of the Kernel
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
@@ -84,11 +84,7 @@
# packages to install/update. Likewise, this is true for mkinitrd.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
-%if 0%{?suse_version} >= 1130
-Requires(post): mkinitrd >= 2.6.0
-%else
Requires(post): mkinitrd
-%endif
# Do not install p-b and mkinitrd for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -351,6 +347,8 @@
export KBUILD_VERBOSE=0
export KBUILD_SYMTYPES=1
export KBUILD_OVERRIDE=1
+export KBUILD_BUILD_USER=geeko
+export KBUILD_BUILD_HOST=buildhost
EOF
%build
@@ -362,22 +360,22 @@
%_sourcedir/modversions --unpack . < $_
fi
-# If the %jobs macro is defined to a number, make will spawn that many jobs.
+# The %{_smp_mflags} macro is defined to a number, make will spawn that many jobs.
# There are several ways how to define it:
# If you are using the build script:
# build --jobs=N kernel-$flavor.spec
# With plain rpmbuild:
# rpmbuild -ba --define 'jobs N' kernel-$flavor.spec
# To spawn as many jobs as there are cpu cores:
-# rpmbuild -ba --define "jobs 0$(grep -c ^processor /proc/cpuinfo)" \
+# rpmbuild -ba --define "%_smp_mflags -j 0$(grep -Ec 'cpu[0-9]' /proc/stat)" \
# kernel-$flavor.spec
# You can also set this permanently in ~/.rpmmacros:
-# %jobs 0%(grep -c ^processor /proc/cpuinfo)
+# %_smp_mflags -j 0%(grep -Ec 'cpu[0-9]' /proc/stat)
%if %CONFIG_KMSG_IDS == "y"
chmod +x ../linux-%srcversion/scripts/kmsg-doc
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
%else
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
%endif
%install
@@ -433,7 +431,7 @@
fi
%endif
if $compressed; then
- gzip -9 %buildroot/$vmlinux
+ gzip -n -9 %buildroot/$vmlinux
chmod a-x %buildroot/$vmlinux.gz
fi
}
@@ -546,7 +544,7 @@
mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
ln -s %build_flavor %buildroot/usr/src/linux-obj/%cpu_arch_flavor
- gzip -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
+ gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
@@ -577,7 +575,7 @@
# Table of types used in exported symbols (for modversion debugging).
%_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
- gzip -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+ gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
else
rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
fi
kernel-default.spec: same change
kernel-desktop.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -17,14 +17,14 @@
# norootforbuild
-%define patchversion 2.6.39
+%define patchversion 3.0.0-rc5
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
Name: kernel-docs
Summary: Kernel Documentation
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -17,8 +17,8 @@
# norootforbuild
-%define srcversion 2.6.39
-%define patchversion 2.6.39
+%define srcversion 3.0-rc5
+%define patchversion 3.0.0-rc5
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -55,7 +55,7 @@
Name: kernel-pae
Summary: Kernel with PAE Support
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
@@ -84,11 +84,7 @@
# packages to install/update. Likewise, this is true for mkinitrd.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
-%if 0%{?suse_version} >= 1130
-Requires(post): mkinitrd >= 2.6.0
-%else
Requires(post): mkinitrd
-%endif
# Do not install p-b and mkinitrd for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -357,6 +353,8 @@
export KBUILD_VERBOSE=0
export KBUILD_SYMTYPES=1
export KBUILD_OVERRIDE=1
+export KBUILD_BUILD_USER=geeko
+export KBUILD_BUILD_HOST=buildhost
EOF
%build
@@ -368,22 +366,22 @@
%_sourcedir/modversions --unpack . < $_
fi
-# If the %jobs macro is defined to a number, make will spawn that many jobs.
+# The %{_smp_mflags} macro is defined to a number, make will spawn that many jobs.
# There are several ways how to define it:
# If you are using the build script:
# build --jobs=N kernel-$flavor.spec
# With plain rpmbuild:
# rpmbuild -ba --define 'jobs N' kernel-$flavor.spec
# To spawn as many jobs as there are cpu cores:
-# rpmbuild -ba --define "jobs 0$(grep -c ^processor /proc/cpuinfo)" \
+# rpmbuild -ba --define "%_smp_mflags -j 0$(grep -Ec 'cpu[0-9]' /proc/stat)" \
# kernel-$flavor.spec
# You can also set this permanently in ~/.rpmmacros:
-# %jobs 0%(grep -c ^processor /proc/cpuinfo)
+# %_smp_mflags -j 0%(grep -Ec 'cpu[0-9]' /proc/stat)
%if %CONFIG_KMSG_IDS == "y"
chmod +x ../linux-%srcversion/scripts/kmsg-doc
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
%else
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
%endif
%install
@@ -439,7 +437,7 @@
fi
%endif
if $compressed; then
- gzip -9 %buildroot/$vmlinux
+ gzip -n -9 %buildroot/$vmlinux
chmod a-x %buildroot/$vmlinux.gz
fi
}
@@ -552,7 +550,7 @@
mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
ln -s %build_flavor %buildroot/usr/src/linux-obj/%cpu_arch_flavor
- gzip -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
+ gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
@@ -583,7 +581,7 @@
# Table of types used in exported symbols (for modversion debugging).
%_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
- gzip -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+ gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
else
rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
fi
kernel-ppc64.spec: same change
kernel-ps3.spec: same change
kernel-s390.spec: same change
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -18,8 +18,8 @@
# norootforbuild
# icecream 0
-%define srcversion 2.6.39
-%define patchversion 2.6.39
+%define srcversion 3.0-rc5
+%define patchversion 3.0.0-rc5
%define variant %{nil}
%define vanilla_only 0
@@ -29,7 +29,7 @@
Name: kernel-source
Summary: The Linux Kernel Sources
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -23,7 +23,7 @@
Name: kernel-syms
Summary: Kernel Symbol Versions (modversions)
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
@@ -49,9 +49,6 @@
%ifarch s390
Requires: kernel-s390-devel = %version-%source_rel
%endif
-%ifarch %ix86 x86_64
-Requires: kernel-xen-devel = %version-%source_rel
-%endif
Provides: multiversion(kernel)
Provides: %name = %version-%source_rel
Source: README.KSYMS
++++++ kernel-trace.spec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -17,8 +17,8 @@
# norootforbuild
-%define srcversion 2.6.39
-%define patchversion 2.6.39
+%define srcversion 3.0-rc5
+%define patchversion 3.0.0-rc5
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -55,7 +55,7 @@
Name: kernel-trace
Summary: The Standard Kernel with Tracing Features
-Version: 2.6.39
+Version: 3.0.rc5
Release: 1
%if %using_buildservice
%else
@@ -84,11 +84,7 @@
# packages to install/update. Likewise, this is true for mkinitrd.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
-%if 0%{?suse_version} >= 1130
-Requires(post): mkinitrd >= 2.6.0
-%else
Requires(post): mkinitrd
-%endif
# Do not install p-b and mkinitrd for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -358,6 +354,8 @@
export KBUILD_VERBOSE=0
export KBUILD_SYMTYPES=1
export KBUILD_OVERRIDE=1
+export KBUILD_BUILD_USER=geeko
+export KBUILD_BUILD_HOST=buildhost
EOF
%build
@@ -369,22 +367,22 @@
%_sourcedir/modversions --unpack . < $_
fi
-# If the %jobs macro is defined to a number, make will spawn that many jobs.
+# The %{_smp_mflags} macro is defined to a number, make will spawn that many jobs.
# There are several ways how to define it:
# If you are using the build script:
# build --jobs=N kernel-$flavor.spec
# With plain rpmbuild:
# rpmbuild -ba --define 'jobs N' kernel-$flavor.spec
# To spawn as many jobs as there are cpu cores:
-# rpmbuild -ba --define "jobs 0$(grep -c ^processor /proc/cpuinfo)" \
+# rpmbuild -ba --define "%_smp_mflags -j 0$(grep -Ec 'cpu[0-9]' /proc/stat)" \
# kernel-$flavor.spec
# You can also set this permanently in ~/.rpmmacros:
-# %jobs 0%(grep -c ^processor /proc/cpuinfo)
+# %_smp_mflags -j 0%(grep -Ec 'cpu[0-9]' /proc/stat)
%if %CONFIG_KMSG_IDS == "y"
chmod +x ../linux-%srcversion/scripts/kmsg-doc
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
%else
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
%endif
%install
@@ -440,7 +438,7 @@
fi
%endif
if $compressed; then
- gzip -9 %buildroot/$vmlinux
+ gzip -n -9 %buildroot/$vmlinux
chmod a-x %buildroot/$vmlinux.gz
fi
}
@@ -553,7 +551,7 @@
mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
ln -s %build_flavor %buildroot/usr/src/linux-obj/%cpu_arch_flavor
- gzip -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
+ gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
@@ -584,7 +582,7 @@
# Table of types used in exported symbols (for modversion debugging).
%_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
- gzip -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+ gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
else
rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
fi
kernel-vanilla.spec: same change
++++++ compute-PATCHVERSION.sh ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -20,12 +20,16 @@
source $(dirname $0)/config.sh
-set -- $(echo $SRCVERSION | sed -rn 's/([0-9]+)\.([0-9]+)\.([0-9]+)(.*)/\1 \2 \3 \4/p')
-
-VERSION=$1
-PATCHLEVEL=$2
-SUBLEVEL=$3
-EXTRAVERSION=$4
+parse_srcversion()
+{
+ local IFS=.
+ set -- ${SRCVERSION%%-*}
+ VERSION=$1
+ PATCHLEVEL=${2:-0}
+ SUBLEVEL=${3:-0}
+ EXTRAVERSION=${SRCVERSION#${SRCVERSION%%-*}}
+}
+parse_srcversion
EXTRA_SYMBOLS=$(set -- $([ -e $(dirname $0)/extra-symbols ] && cat $(dirname $0)/extra-symbols) ; echo $*)
@@ -69,4 +73,5 @@
' \
| sed -e 's,^+,,' -e 's, *= *\(.*\),="\1",'
)"
+
echo "$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
++++++ config-options.changes.txt ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Tue Jun 21 11:38:10 UTC 2011 - mmarek@novell.com
+
+- Updated to 3.0-rc4:
+ - USB_NET_KALMIA=m
+ - BACKLIGHT_ADP8870=m
+
+-------------------------------------------------------------------
Fri Jan 21 02:35:17 CET 2011 - trenn@suse.de
- CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
++++++ config.conf ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -12,8 +12,8 @@
+i386 i386/desktop
+i386 i386/pae
+i386 -syms i386/debug
-+i386 i386/xen
-+i386 -syms i386/ec2
+#+i386 i386/xen
+#+i386 -syms i386/ec2
+i386 i386/vanilla
+i386 -syms i386/trace
@@ -24,8 +24,8 @@
+x86_64 x86_64/default
+x86_64 x86_64/desktop
-+x86_64 x86_64/xen
-+x86_64 -syms x86_64/ec2
+#+x86_64 x86_64/xen
+#+x86_64 -syms x86_64/ec2
+x86_64 -syms x86_64/debug
+x86_64 x86_64/vanilla
+x86_64 -syms x86_64/trace
++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:34.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:34.000000000 +0200
@@ -1,5 +1,5 @@
# The version of the main tarball to use
-SRCVERSION=2.6.39
+SRCVERSION=3.0-rc5
# variant of the kernel-source package, either empty or "-rt"
VARIANT=
# buildservice projects to build the kernel against
++++++ config.tar.bz2 ++++++
++++ 37701 lines of diff (skipped)
++++++ kernel-binary.spec.in ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -85,11 +85,7 @@
# packages to install/update. Likewise, this is true for mkinitrd.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
-%if 0%{?suse_version} >= 1130
-Requires(post): mkinitrd >= 2.6.0
-%else
Requires(post): mkinitrd
-%endif
# Do not install p-b and mkinitrd for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader mkinitrd
@@ -275,6 +271,8 @@
export KBUILD_VERBOSE=0
export KBUILD_SYMTYPES=1
export KBUILD_OVERRIDE=1
+export KBUILD_BUILD_USER=geeko
+export KBUILD_BUILD_HOST=buildhost
EOF
%build
@@ -286,22 +284,22 @@
%_sourcedir/modversions --unpack . < $_
fi
-# If the %jobs macro is defined to a number, make will spawn that many jobs.
+# The %{_smp_mflags} macro is defined to a number, make will spawn that many jobs.
# There are several ways how to define it:
# If you are using the build script:
# build --jobs=N kernel-$flavor.spec
# With plain rpmbuild:
# rpmbuild -ba --define 'jobs N' kernel-$flavor.spec
# To spawn as many jobs as there are cpu cores:
-# rpmbuild -ba --define "jobs 0$(grep -c ^processor /proc/cpuinfo)" \
+# rpmbuild -ba --define "%_smp_mflags -j 0$(grep -Ec 'cpu[0-9]' /proc/stat)" \
# kernel-$flavor.spec
# You can also set this permanently in ~/.rpmmacros:
-# %jobs 0%(grep -c ^processor /proc/cpuinfo)
+# %_smp_mflags -j 0%(grep -Ec 'cpu[0-9]' /proc/stat)
%if %CONFIG_KMSG_IDS == "y"
chmod +x ../linux-%srcversion/scripts/kmsg-doc
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y D=2
%else
- make %{?jobs:-j%jobs} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
+ make %{?_smp_mflags} all $MAKE_ARGS CONFIG_DEBUG_SECTION_MISMATCH=y
%endif
@@ -358,7 +356,7 @@
fi
%endif
if $compressed; then
- gzip -9 %buildroot/$vmlinux
+ gzip -n -9 %buildroot/$vmlinux
chmod a-x %buildroot/$vmlinux.gz
fi
}
@@ -472,7 +470,7 @@
mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
ln -s %build_flavor %buildroot/usr/src/linux-obj/%cpu_arch_flavor
- gzip -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
+ gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
@@ -503,7 +501,7 @@
# Table of types used in exported symbols (for modversion debugging).
%_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
- gzip -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
+ gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
else
rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
fi
++++++ kernel-module-subpackage ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -52,7 +52,7 @@
nvr=%{-n*}-%1-%_this_kmp_version-%{-r*}
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
- /bin/bash -${-/e/} $wm2 --add-kmp $nvr
+ %{-b:KMP_NEEDS_MKINITRD=1} /bin/bash -${-/e/} $wm2 --add-kmp $nvr
fi
%preun -n %{-n*}-%1
nvr=%{-n*}-%1-%_this_kmp_version-%{-r*}
++++++ macros.kernel-source ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -3,10 +3,10 @@
%kernel_module_package_buildreqs module-init-tools kernel-syms
# Defines %flavors_to_build and %kernel_source() as a side effect.
-%_kernel_module_package(n:v:r:t:f:Xp:) \
+%_kernel_module_package(n:v:r:t:f:Xp:b) \
%{expand:%( \
subpkg=%{-t*}%{!-t:/usr/lib/rpm/kernel-module-subpackage} \
- echo "%%define _suse_kernel_module_subpackage(n:v:r:f:p:) %%{expand:%%(cd %_sourcedir; cat $subpkg; echo %%%%nil)}" \
+ echo "%%define _suse_kernel_module_subpackage(n:v:r:f:p:b) %%{expand:%%(cd %_sourcedir; cat $subpkg; echo %%%%nil)}" \
flavors_to_build= \
flavors="%*" \
for flavor in $(ls /usr/src/linux-obj/%_target_cpu 2>/dev/null); do \
@@ -19,7 +19,7 @@
krel=$(make -s -C /usr/src/linux-obj/%_target_cpu/$flavor kernelrelease) \
kver=${krel%%-*} \
flavors_to_build="$flavors_to_build $flavor" \
- echo "%%_suse_kernel_module_subpackage -n %{-n*}%{!-n:%name}-kmp -v %{-v*}%{!-v:%version} -r %{-r*}%{!-r:%release} %{-p} $flavor $kver" \
+ echo "%%_suse_kernel_module_subpackage -n %{-n*}%{!-n:%name}-kmp -v %{-v*}%{!-v:%version} -r %{-r*}%{!-r:%release} %{-p} %{-b} $flavor $kver" \
done \
echo "%%global flavors_to_build${flavors_to_build:-%%nil}" \
echo "%%{expand:%%(test -z '%flavors_to_build' && echo %%%%internal_kmp_error)}" \
@@ -34,10 +34,10 @@
)}
# kernel_module_package: simply pass on all options and arguments.
-%kernel_module_package(n:v:r:t:f:xp:) \
+%kernel_module_package(n:v:r:t:f:xp:b) \
%{expand:%%_kernel_module_package %{-x:-X} %{-n} %{-v} %{-r} %{-t} %{-f} %{-p} %*}
# suse_kernel_module_package: invert the meaning of the -x flag. (You are not
# supposed to understand why a simple %{-x:}%{!-x:-x} won't work.)
-%suse_kernel_module_package(n:v:r:s:f:xp:) \
+%suse_kernel_module_package(n:v:r:s:f:xp:b) \
%{expand:%%_kernel_module_package %{-x: }%{!-x:-X} %{-n} %{-v} %{-r} %{-s:-t %{-s*}} %{-f} %{-p} %*}
++++++ minmem ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -1 +1 @@
-2096000
+1048576
++++++ mkspec ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -38,9 +38,13 @@
$patches="--patches $patches" if $patches;
my $patchversion = `$dir/compute-PATCHVERSION.sh $patches`;
chomp $patchversion;
-my $rpmversion;
+my $rpmversion = $patchversion;
+# stuff the -rcX tag into the rpm version if possible;
+$rpmversion =~ s/\.0-rc/.rc/;
+$rpmversion =~ s/-rc\d+//;
+$rpmversion =~ s/-/./g;
+
if (defined($rpmrelease)) {
- ($rpmversion = $patchversion) =~ s/-.*//;
# convince abuild that we really want this release number
xopen(my $fh, '>', "$dir/get_release_number.sh");
print $fh "#!/bin/sh\n";
@@ -48,7 +52,7 @@
close($fh);
chmod(0755, "$dir/get_release_number.sh");
} else {
- ($rpmversion, $rpmrelease) = (split(/-/, $patchversion, 2), "");
+ $rpmrelease = "";
}
$rpmrelease =~ s/[^.]$/$&./;
$rpmrelease =~ s/-/./g;
@@ -152,7 +156,7 @@
sub read_spec_templates {
my %res;
- for my $template qw(binary source syms docs) {
+ for my $template (qw(binary source syms docs)) {
xopen(my $fh, '<', "$dir/kernel-$template.spec.in");
local $/ = undef;
$res{$template} = <$fh>;
++++++ needed_space_in_mb ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:35.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:35.000000000 +0200
@@ -1 +1 @@
-6000
+6144
++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/acpi_srat-pxm-rev-x86-64.patch new/patches.arch/acpi_srat-pxm-rev-x86-64.patch
--- old/patches.arch/acpi_srat-pxm-rev-x86-64.patch 2011-04-15 13:24:21.000000000 +0200
+++ new/patches.arch/acpi_srat-pxm-rev-x86-64.patch 2011-06-17 13:23:54.000000000 +0200
@@ -17,12 +17,12 @@
Signed-off-by: Kurt Garloff
---
- arch/x86/mm/srat_64.c | 4 ++++
+ arch/x86/mm/srat.c | 4 ++++
1 file changed, 4 insertions(+)
---- a/arch/x86/mm/srat_64.c
-+++ b/arch/x86/mm/srat_64.c
-@@ -156,6 +156,8 @@ acpi_numa_processor_affinity_init(struct
+--- a/arch/x86/mm/srat.c
++++ b/arch/x86/mm/srat.c
+@@ -104,6 +104,8 @@ acpi_numa_processor_affinity_init(struct
if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
return;
pxm = pa->proximity_domain_lo;
@@ -31,7 +31,7 @@
node = setup_node(pxm);
if (node < 0) {
printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
-@@ -259,6 +261,8 @@ acpi_numa_memory_affinity_init(struct ac
+@@ -155,6 +157,8 @@ acpi_numa_memory_affinity_init(struct ac
start = ma->base_address;
end = start + ma->length;
pxm = ma->proximity_domain;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/implement_stop_machine_from_offline_cpu.patch new/patches.arch/implement_stop_machine_from_offline_cpu.patch
--- old/patches.arch/implement_stop_machine_from_offline_cpu.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/implement_stop_machine_from_offline_cpu.patch 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,156 @@
+From: Tejun Heo
+Subject: stop_machine: implement stop_machine_from_offline_cpu()
+References: bnc#697859
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger
+
+Currently, mtrr wants stop_machine functionality while a CPU is being
+brought up. As stop_machine() requires the calling CPU to be online,
+mtrr implements its own stop_machine using stop_one_cpu() on each
+online CPU. This doesn't only unnecessarily duplicate complex logic
+but also introduces a possibility of deadlock when it races against
+the generic stop_machine().
+
+This patch implements stop_machine_from_offline_cpu() to serve such
+use cases. Its functionality is basically the same to stop_machine();
+however, it should be called from a CPU which isn't online and doesn't
+depend on working scheduling on the calling CPU.
+
+This is achieved by using busy loops for synchronization and
+open-coding stop_cpus queueing and waiting with direct invocation of
+fn() for local CPU inbetween.
+
+Signed-off-by: Tejun Heo
+Signed-off-by: Suresh Siddha
+Cc: Ingo Molnar
+Cc: Andrew Morton
+Cc: Linus Torvalds
+Cc: Peter Zijlstra
+---
+ include/linux/stop_machine.h | 14 ++++++++-
+ kernel/stop_machine.c | 62 ++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 73 insertions(+), 3 deletions(-)
+
+Index: linux-2.6-tip/include/linux/stop_machine.h
+===================================================================
+--- linux-2.6-tip.orig/include/linux/stop_machine.h
++++ linux-2.6-tip/include/linux/stop_machine.h
+@@ -101,18 +101,28 @@ static inline int try_stop_cpus(const st
+ #if defined(CONFIG_STOP_MACHINE) && defined(CONFIG_SMP)
+
+ int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus);
++int stop_machine_from_offline_cpu(int (*fn)(void *), void *data,
++ const struct cpumask *cpus);
+
+ #else /* CONFIG_STOP_MACHINE && CONFIG_SMP */
+
+ static inline int stop_machine(int (*fn)(void *), void *data,
+ const struct cpumask *cpus)
+ {
++ unsigned long flags;
+ int ret;
+- local_irq_disable();
++
++ local_irq_save(flags);
+ ret = fn(data);
+- local_irq_enable();
++ local_irq_restore(flags);
+ return ret;
+ }
+
++static inline int stop_machine_from_offline_cpu(int (*fn)(void *), void *data,
++ const struct cpumask *cpus)
++{
++ return stop_machine(fn, data, cpus);
++}
++
+ #endif /* CONFIG_STOP_MACHINE && CONFIG_SMP */
+ #endif /* _LINUX_STOP_MACHINE */
+Index: linux-2.6-tip/kernel/stop_machine.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/stop_machine.c
++++ linux-2.6-tip/kernel/stop_machine.c
+@@ -439,8 +439,15 @@ static int stop_machine_cpu_stop(void *d
+ struct stop_machine_data *smdata = data;
+ enum stopmachine_state curstate = STOPMACHINE_NONE;
+ int cpu = smp_processor_id(), err = 0;
++ unsigned long flags;
+ bool is_active;
+
++ /*
++ * When called from stop_machine_from_offline_cpu(), irq might
++ * already be disabled. Save the state and restore it on exit.
++ */
++ local_save_flags(flags);
++
+ if (!smdata->active_cpus)
+ is_active = cpu == cpumask_first(cpu_online_mask);
+ else
+@@ -468,7 +475,7 @@ static int stop_machine_cpu_stop(void *d
+ }
+ } while (curstate != STOPMACHINE_EXIT);
+
+- local_irq_enable();
++ local_irq_restore(flags);
+ return err;
+ }
+
+@@ -511,4 +518,57 @@ int stop_machine(int (*fn)(void *), void
+ }
+ EXPORT_SYMBOL_GPL(stop_machine);
+
++/**
++ * stop_machine_from_offline_cpu - stop_machine() from offline CPU
++ * @fn: the function to run
++ * @data: the data ptr for the @fn()
++ * @cpus: the cpus to run the @fn() on (NULL = any online cpu)
++ *
++ * This is identical to stop_machine() but can be called from a CPU which
++ * isn't online. The local CPU is in the process of hotplug (so no other
++ * CPU hotplug can start) and not marked online and doesn't have enough
++ * context to sleep.
++ *
++ * This function provides stop_machine() functionality for such state by
++ * using busy-wait for synchronization and executing @fn directly for local
++ * CPU.
++ *
++ * CONTEXT:
++ * Local CPU is offline. Temporarily stops all online CPUs.
++ *
++ * RETURNS:
++ * 0 if all executions of @fn returned 0, any non zero return value if any
++ * returned non zero.
++ */
++int stop_machine_from_offline_cpu(int (*fn)(void *), void *data,
++ const struct cpumask *cpus)
++{
++ struct stop_machine_data smdata = { .fn = fn, .data = data,
++ .active_cpus = cpus };
++ struct cpu_stop_done done;
++ int ret;
++
++ /* Local CPU must be offline and CPU hotplug in progress. */
++ BUG_ON(cpu_online(raw_smp_processor_id()));
++ smdata.num_threads = num_online_cpus() + 1; /* +1 for local */
++
++ /* No proper task established and can't sleep - busy wait for lock. */
++ while (!mutex_trylock(&stop_cpus_mutex))
++ cpu_relax();
++
++ /* Schedule work on other CPUs and execute directly for local CPU */
++ set_state(&smdata, STOPMACHINE_PREPARE);
++ cpu_stop_init_done(&done, num_online_cpus());
++ queue_stop_cpus_work(cpu_online_mask, stop_machine_cpu_stop, &smdata,
++ &done);
++ ret = stop_machine_cpu_stop(&smdata);
++
++ /* Busy wait for completion. */
++ while (!completion_done(&done.completion))
++ cpu_relax();
++
++ mutex_unlock(&stop_cpus_mutex);
++ return ret ?: done.ret;
++}
++
+ #endif /* CONFIG_STOP_MACHINE */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/kill-__stop_machine.patch new/patches.arch/kill-__stop_machine.patch
--- old/patches.arch/kill-__stop_machine.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/kill-__stop_machine.patch 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,184 @@
+From: Tejun Heo
+Subject: stop_machine: kill __stop_machine()
+References: bnc#697859
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger
+
+stop_machine() is different from __stop_machine() in that it
+automatically calls get/put_online_cpus() to disable CPU hotplug. For
+__stop_machine(), the caller is responsible for achieving exclusion
+against CPU hotplug using either get/put_online_cpus() or
+cpu_hotplug_begin/done().
+
+However, get_online_cpus() can nest safely inside both another
+get_online_cpus() or cpu_hotplug_begin(); thus, it's safe to use
+stop_machine() instead of __stop_machine() making the distinction
+pointless - the overhead of extra get/put_online_cpus() is negligible
+compared to stop_machine and they basically become noop if hotplug is
+in progress.
+
+This patch converts all current __stop_machine() users to
+stop_machine() and kills __stop_machine(). While at it, move function
+comment for stop_machine() from function declaration to definition and
+update it slightly.
+
+Acked-by: Suresh Siddha
+Signed-off-by: Tejun Heo
+Cc: x86@kernel.org
+Cc: Ingo Molnar
+Cc: Andrew Morton
+Cc: Linus Torvalds
+Cc: Peter Zijlstra
+---
+ arch/x86/kernel/alternative.c | 5 ++---
+ include/linux/stop_machine.h | 34 ++--------------------------------
+ kernel/cpu.c | 2 +-
+ kernel/stop_machine.c | 38 +++++++++++++++++++++++++++-----------
+ 4 files changed, 32 insertions(+), 47 deletions(-)
+
+Index: linux-2.6-tip/arch/x86/kernel/alternative.c
+===================================================================
+--- linux-2.6-tip.orig/arch/x86/kernel/alternative.c
++++ linux-2.6-tip/arch/x86/kernel/alternative.c
+@@ -719,8 +719,7 @@ void *__kprobes text_poke_smp(void *addr
+ tpp.nparams = 1;
+ atomic_set(&stop_machine_first, 1);
+ wrote_text = 0;
+- /* Use __stop_machine() because the caller already got online_cpus. */
+- __stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
++ stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
+ return addr;
+ }
+
+@@ -741,5 +740,5 @@ void __kprobes text_poke_smp_batch(struc
+
+ atomic_set(&stop_machine_first, 1);
+ wrote_text = 0;
+- __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
++ stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
+ }
+Index: linux-2.6-tip/include/linux/stop_machine.h
+===================================================================
+--- linux-2.6-tip.orig/include/linux/stop_machine.h
++++ linux-2.6-tip/include/linux/stop_machine.h
+@@ -100,36 +100,12 @@ static inline int try_stop_cpus(const st
+ */
+ #if defined(CONFIG_STOP_MACHINE) && defined(CONFIG_SMP)
+
+-/**
+- * stop_machine: freeze the machine on all CPUs and run this function
+- * @fn: the function to run
+- * @data: the data ptr for the @fn()
+- * @cpus: the cpus to run the @fn() on (NULL = any online cpu)
+- *
+- * Description: This causes a thread to be scheduled on every cpu,
+- * each of which disables interrupts. The result is that no one is
+- * holding a spinlock or inside any other preempt-disabled region when
+- * @fn() runs.
+- *
+- * This can be thought of as a very heavy write lock, equivalent to
+- * grabbing every spinlock in the kernel. */
+ int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus);
+
+-/**
+- * __stop_machine: freeze the machine on all CPUs and run this function
+- * @fn: the function to run
+- * @data: the data ptr for the @fn
+- * @cpus: the cpus to run the @fn() on (NULL = any online cpu)
+- *
+- * Description: This is a special version of the above, which assumes cpus
+- * won't come or go while it's being called. Used by hotplug cpu.
+- */
+-int __stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus);
+-
+ #else /* CONFIG_STOP_MACHINE && CONFIG_SMP */
+
+-static inline int __stop_machine(int (*fn)(void *), void *data,
+- const struct cpumask *cpus)
++static inline int stop_machine(int (*fn)(void *), void *data,
++ const struct cpumask *cpus)
+ {
+ int ret;
+ local_irq_disable();
+@@ -138,11 +114,5 @@ static inline int __stop_machine(int (*f
+ return ret;
+ }
+
+-static inline int stop_machine(int (*fn)(void *), void *data,
+- const struct cpumask *cpus)
+-{
+- return __stop_machine(fn, data, cpus);
+-}
+-
+ #endif /* CONFIG_STOP_MACHINE && CONFIG_SMP */
+ #endif /* _LINUX_STOP_MACHINE */
+Index: linux-2.6-tip/kernel/cpu.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/cpu.c
++++ linux-2.6-tip/kernel/cpu.c
+@@ -235,7 +235,7 @@ static int __ref _cpu_down(unsigned int
+ goto out_release;
+ }
+
+- err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
++ err = stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
+ if (err) {
+ /* CPU didn't die: tell everyone. Can't complain. */
+ cpu_notify_nofail(CPU_DOWN_FAILED | mod, hcpu);
+Index: linux-2.6-tip/kernel/stop_machine.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/stop_machine.c
++++ linux-2.6-tip/kernel/stop_machine.c
+@@ -464,24 +464,40 @@ static int stop_machine_cpu_stop(void *d
+ return err;
+ }
+
+-int __stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus)
++/**
++ * stop_machine - freeze the machine on all online CPUs and run this function
++ * @fn: the function to run
++ * @data: the data ptr for the @fn()
++ * @cpus: the cpus to run the @fn() on (NULL = any online cpu)
++ *
++ * This causes a thread to be scheduled on every cpu, each of which
++ * disables interrupts. The result is that no one is holding a spinlock or
++ * inside any other preempt-disabled region when @fn() runs.
++ *
++ * This can be thought of as a very heavy write lock, equivalent to
++ * grabbing every spinlock in the kernel.
++ *
++ * CONTEXT:
++ * Might sleep. Temporarily stops all online CPUs.
++ *
++ * RETURNS:
++ * 0 if all executions of @fn returned 0, any non zero return value if any
++ * returned non zero.
++ */
++int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus)
+ {
+ struct stop_machine_data smdata = { .fn = fn, .data = data,
+- .num_threads = num_online_cpus(),
+ .active_cpus = cpus };
+-
+- /* Set the initial state and stop all online cpus. */
+- set_state(&smdata, STOPMACHINE_PREPARE);
+- return stop_cpus(cpu_online_mask, stop_machine_cpu_stop, &smdata);
+-}
+-
+-int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus)
+-{
+ int ret;
+
+ /* No CPUs can come up or down during this. */
+ get_online_cpus();
+- ret = __stop_machine(fn, data, cpus);
++ smdata.num_threads = num_online_cpus(),
++
++ /* Set the initial state and stop all online cpus. */
++ set_state(&smdata, STOPMACHINE_PREPARE);
++ ret = stop_cpus(cpu_online_mask, stop_machine_cpu_stop, &smdata);
++
+ put_online_cpus();
+ return ret;
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/mtrr_stop_machine_quick_fix.patch new/patches.arch/mtrr_stop_machine_quick_fix.patch
--- old/patches.arch/mtrr_stop_machine_quick_fix.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/mtrr_stop_machine_quick_fix.patch 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,109 @@
+From: Suresh Siddha
+Subject: x86, mtrr: lock stop machine during MTRR rendezvous sequence
+References: bnc#697859
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger
+
+MTRR rendezvous sequence using stop_one_cpu_nowait() can potentially
+happen in parallel with another system wide rendezvous using
+stop_machine(). This can lead to deadlock (The order in which
+works are queued can be different on different cpu's. Some cpu's
+will be running the first rendezvous handler and others will be running
+the second rendezvous handler. Each set waiting for the other set to join
+for the system wide rendezvous, leading to a deadlock).
+
+MTRR rendezvous sequence is not implemened using stop_machine() as this
+gets called both from the process context aswell as the cpu online paths
+(where the cpu has not come online and the interrupts are disabled etc).
+stop_machine() works with only online cpus.
+
+For now, take the stop_machine mutex in the MTRR rendezvous sequence that
+gets called from an online cpu (here we are in the process context
+and can potentially sleep while taking the mutex). And the MTRR rendezvous
+that gets triggered during cpu online doesn't need to take this stop_machine
+lock (as the stop_machine() already ensures that there is no cpu hotplug
+going on in parallel by doing get_online_cpus())
+
+ TBD: Pursue a cleaner solution of extending the stop_machine()
+ infrastructure to handle the case where the calling cpu is
+ still not online and use this for MTRR rendezvous sequence.
+
+fixes: https://bugzilla.novell.com/show_bug.cgi?id=672008
+
+(will be forwarded to stable series for inclusion in kernels v2.6.35-v2.6.39
+ after some testing in mainline).
+
+Signed-off-by: Suresh Siddha
+---
+ arch/x86/kernel/cpu/mtrr/main.c | 19 ++++++++++++++++++-
+ include/linux/stop_machine.h | 2 ++
+ kernel/stop_machine.c | 2 +-
+ 3 files changed, 21 insertions(+), 2 deletions(-)
+
+Index: linux-2.6-tip/arch/x86/kernel/cpu/mtrr/main.c
+===================================================================
+--- linux-2.6-tip.orig/arch/x86/kernel/cpu/mtrr/main.c
++++ linux-2.6-tip/arch/x86/kernel/cpu/mtrr/main.c
+@@ -244,9 +244,22 @@ static inline int types_compatible(mtrr_
+ static void
+ set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type type)
+ {
++ int cpu = raw_smp_processor_id();
++ int online = cpu_online(cpu);
+ struct set_mtrr_data data;
+ unsigned long flags;
+- int cpu;
++
++#ifdef CONFIG_SMP
++ /*
++ * If we are not yet online, then there can be no stop_machine() in
++ * parallel. Stop machine ensures this by using get_online_cpus().
++ *
++ * Otherwise, we need to prevent a stop_machine() happening in parallel
++ * by taking this lock.
++ */
++ if (online)
++ mutex_lock(&stop_cpus_mutex);
++#endif
+
+ preempt_disable();
+
+@@ -330,6 +343,10 @@ set_mtrr(unsigned int reg, unsigned long
+
+ local_irq_restore(flags);
+ preempt_enable();
++#ifdef CONFIG_SMP
++ if (online)
++ mutex_unlock(&stop_cpus_mutex);
++#endif
+ }
+
+ /**
+Index: linux-2.6-tip/include/linux/stop_machine.h
+===================================================================
+--- linux-2.6-tip.orig/include/linux/stop_machine.h
++++ linux-2.6-tip/include/linux/stop_machine.h
+@@ -27,6 +27,8 @@ struct cpu_stop_work {
+ struct cpu_stop_done *done;
+ };
+
++extern struct mutex stop_cpus_mutex;
++
+ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg);
+ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg,
+ struct cpu_stop_work *work_buf);
+Index: linux-2.6-tip/kernel/stop_machine.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/stop_machine.c
++++ linux-2.6-tip/kernel/stop_machine.c
+@@ -132,8 +132,8 @@ void stop_one_cpu_nowait(unsigned int cp
+ cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu), work_buf);
+ }
+
++DEFINE_MUTEX(stop_cpus_mutex);
+ /* static data for stop_cpus */
+-static DEFINE_MUTEX(stop_cpus_mutex);
+ static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work);
+
+ int __stop_cpus(const struct cpumask *cpumask, cpu_stop_fn_t fn, void *arg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/reorganize_stop_cpus.patch new/patches.arch/reorganize_stop_cpus.patch
--- old/patches.arch/reorganize_stop_cpus.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/reorganize_stop_cpus.patch 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,68 @@
+From: Tejun Heo
+Subject: stop_machine: reorganize stop_cpus() implementation
+References: bnc#697859
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger
+
+Refactor the queueing part of the stop cpus work from __stop_cpus() into
+queue_stop_cpus_work().
+
+The reorganization is to help future improvements to stop_machine()
+and doesn't introduce any behavior difference.
+
+Signed-off-by: Tejun Heo
+Signed-off-by: Suresh Siddha
+Cc: Ingo Molnar
+Cc: Andrew Morton
+Cc: Linus Torvalds
+Cc: Peter Zijlstra
+---
+ kernel/stop_machine.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+Index: linux-2.6-tip/kernel/stop_machine.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/stop_machine.c
++++ linux-2.6-tip/kernel/stop_machine.c
+@@ -136,10 +136,11 @@ DEFINE_MUTEX(stop_cpus_mutex);
+ /* static data for stop_cpus */
+ static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work);
+
+-int __stop_cpus(const struct cpumask *cpumask, cpu_stop_fn_t fn, void *arg)
++static void queue_stop_cpus_work(const struct cpumask *cpumask,
++ cpu_stop_fn_t fn, void *arg,
++ struct cpu_stop_done *done)
+ {
+ struct cpu_stop_work *work;
+- struct cpu_stop_done done;
+ unsigned int cpu;
+
+ /* initialize works and done */
+@@ -147,9 +148,8 @@ int __stop_cpus(const struct cpumask *cp
+ work = &per_cpu(stop_cpus_work, cpu);
+ work->fn = fn;
+ work->arg = arg;
+- work->done = &done;
++ work->done = done;
+ }
+- cpu_stop_init_done(&done, cpumask_weight(cpumask));
+
+ /*
+ * Disable preemption while queueing to avoid getting
+@@ -161,7 +161,15 @@ int __stop_cpus(const struct cpumask *cp
+ cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu),
+ &per_cpu(stop_cpus_work, cpu));
+ preempt_enable();
++}
+
++static int __stop_cpus(const struct cpumask *cpumask,
++ cpu_stop_fn_t fn, void *arg)
++{
++ struct cpu_stop_done done;
++
++ cpu_stop_init_done(&done, cpumask_weight(cpumask));
++ queue_stop_cpus_work(cpumask, fn, arg, &done);
+ wait_for_completion(&done.completion);
+ return done.executed ? done.ret : -ENOENT;
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/s390-message-catalog-perl-fix.diff new/patches.arch/s390-message-catalog-perl-fix.diff
--- old/patches.arch/s390-message-catalog-perl-fix.diff 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/s390-message-catalog-perl-fix.diff 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,23 @@
+From caf357aecf85916dc605e513e0d3e6765479b172 Mon Sep 17 00:00:00 2001
+From: Michal Marek
+Date: Fri, 3 Jun 2011 12:45:12 +0200
+Subject: [PATCH] scripts/kmsg-doc: Do not require Switch.pm
+Patch-mainline: depends on patches.arch/s390-message-catalog.diff
+
+It is not used by the script and the module is no longer available in
+the perl core.
+
+Signed-off-by: Michal Marek
+
+diff --git a/scripts/kmsg-doc b/scripts/kmsg-doc
+index 07a0a2e..e0f64ed 100644
+--- a/scripts/kmsg-doc
++++ b/scripts/kmsg-doc
+@@ -14,7 +14,6 @@
+ #
+
+ use Cwd;
+-use Switch;
+ use bigint;
+
+ my $errors = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/s390-message-catalog.diff new/patches.arch/s390-message-catalog.diff
--- old/patches.arch/s390-message-catalog.diff 2011-04-15 13:24:21.000000000 +0200
+++ new/patches.arch/s390-message-catalog.diff 2011-06-17 13:23:54.000000000 +0200
@@ -7925,9 +7925,9 @@
AFLAGS_MODULE =
LDFLAGS_MODULE =
@@ -379,6 +394,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAG
- export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
+ export KBUILD_ARFLAGS
+export KBUILD_KMSG_CHECK KMSG_CHECK
# When compiling out-of-tree modules, put MODVERDIR in the module
@@ -8114,14 +8114,14 @@
+++ b/scripts/Makefile.build
@@ -232,12 +232,14 @@ endef
# Built-in and composite module parts
- $(obj)/%.o: $(src)/%.c FORCE
+ $(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
$(call cmd,force_checksrc)
+ $(call cmd,force_check_kmsg)
$(call if_changed_rule,cc_o_c)
# Single-part modules are special since we need to mark them in $(MODVERDIR)
- $(single-used-m): $(obj)/%.o: $(src)/%.c FORCE
+ $(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
$(call cmd,force_checksrc)
+ $(call cmd,force_check_kmsg)
$(call if_changed_rule,cc_o_c)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/use_stop_machine_for_mtrr_rendezvous.patch new/patches.arch/use_stop_machine_for_mtrr_rendezvous.patch
--- old/patches.arch/use_stop_machine_for_mtrr_rendezvous.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/use_stop_machine_for_mtrr_rendezvous.patch 2011-06-17 13:23:54.000000000 +0200
@@ -0,0 +1,288 @@
+From: Suresh Siddha
+Subject: x86, mtrr: use __stop_machine() for doing MTRR rendezvous
+References: bnc#697859
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger
+
+MTRR rendezvous sequence is not implemened using stop_machine() before, as this
+gets called both from the process context aswell as the cpu online paths
+(where the cpu has not come online and the interrupts are disabled etc).
+
+Now that __stop_machine() works even when the calling cpu is not online,
+use __stop_machine() to implement the MTRR rendezvous sequence. This
+will consolidate and cleanup the code.
+
+Signed-off-by: Suresh Siddha
+---
+ arch/x86/kernel/cpu/mtrr/main.c | 186 ++++++++--------------------------------
+ include/linux/stop_machine.h | 2
+ kernel/stop_machine.c | 2
+ 3 files changed, 42 insertions(+), 148 deletions(-)
+
+Index: linux-2.6-tip/arch/x86/kernel/cpu/mtrr/main.c
+===================================================================
+--- linux-2.6-tip.orig/arch/x86/kernel/cpu/mtrr/main.c
++++ linux-2.6-tip/arch/x86/kernel/cpu/mtrr/main.c
+@@ -137,18 +137,15 @@ static void __init init_table(void)
+ }
+
+ struct set_mtrr_data {
+- atomic_t count;
+- atomic_t gate;
+ unsigned long smp_base;
+ unsigned long smp_size;
+ unsigned int smp_reg;
+ mtrr_type smp_type;
+ };
+
+-static DEFINE_PER_CPU(struct cpu_stop_work, mtrr_work);
+-
+ /**
+- * mtrr_work_handler - Synchronisation handler. Executed by "other" CPUs.
++ * mtrr_work_handler - Work done in the synchronisation handler. Executed by
++ * all the CPUs.
+ * @info: pointer to mtrr configuration data
+ *
+ * Returns nothing.
+@@ -157,35 +154,26 @@ static int mtrr_work_handler(void *info)
+ {
+ #ifdef CONFIG_SMP
+ struct set_mtrr_data *data = info;
+- unsigned long flags;
+-
+- atomic_dec(&data->count);
+- while (!atomic_read(&data->gate))
+- cpu_relax();
+-
+- local_irq_save(flags);
+-
+- atomic_dec(&data->count);
+- while (atomic_read(&data->gate))
+- cpu_relax();
+
+- /* The master has cleared me to execute */
++ /*
++ * We use this same function to initialize the mtrrs during boot,
++ * resume, runtime cpu online and on an explicit request to set a
++ * specific MTRR.
++ *
++ * During boot or suspend, the state of the boot cpu's mtrrs has been
++ * saved, and we want to replicate that across all the cpus that come
++ * online (either at the end of boot or resume or during a runtime cpu
++ * online). If we're doing that, @reg is set to something special and on
++ * all the cpu's we do mtrr_if->set_all() (On the logical cpu that
++ * started the boot/resume sequence, this might be a duplicate
++ * set_all()).
++ */
+ if (data->smp_reg != ~0U) {
+ mtrr_if->set(data->smp_reg, data->smp_base,
+ data->smp_size, data->smp_type);
+- } else if (mtrr_aps_delayed_init) {
+- /*
+- * Initialize the MTRRs inaddition to the synchronisation.
+- */
++ } else if (mtrr_aps_delayed_init || !cpu_online(smp_processor_id())) {
+ mtrr_if->set_all();
+ }
+-
+- atomic_dec(&data->count);
+- while (!atomic_read(&data->gate))
+- cpu_relax();
+-
+- atomic_dec(&data->count);
+- local_irq_restore(flags);
+ #endif
+ return 0;
+ }
+@@ -223,20 +211,11 @@ static inline int types_compatible(mtrr_
+ * 14. Wait for buddies to catch up
+ * 15. Enable interrupts.
+ *
+- * What does that mean for us? Well, first we set data.count to the number
+- * of CPUs. As each CPU announces that it started the rendezvous handler by
+- * decrementing the count, We reset data.count and set the data.gate flag
+- * allowing all the cpu's to proceed with the work. As each cpu disables
+- * interrupts, it'll decrement data.count once. We wait until it hits 0 and
+- * proceed. We clear the data.gate flag and reset data.count. Meanwhile, they
+- * are waiting for that flag to be cleared. Once it's cleared, each
+- * CPU goes through the transition of updating MTRRs.
+- * The CPU vendors may each do it differently,
+- * so we call mtrr_if->set() callback and let them take care of it.
+- * When they're done, they again decrement data->count and wait for data.gate
+- * to be set.
+- * When we finish, we wait for data.count to hit 0 and toggle the data.gate flag
+- * Everyone then enables interrupts and we all continue on.
++ * What does that mean for us? Well, stop_machine() will ensure that
++ * the rendezvous handler is started on each CPU. And in lockstep they
++ * do the state transition of disabling interrupts, updating MTRR's
++ * (the CPU vendors may each do it differently, so we call mtrr_if->set()
++ * callback and let them take care of it.) and enabling interrupts.
+ *
+ * Note that the mechanism is the same for UP systems, too; all the SMP stuff
+ * becomes nops.
+@@ -244,109 +223,26 @@ static inline int types_compatible(mtrr_
+ static void
+ set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type type)
+ {
+- int cpu = raw_smp_processor_id();
+- int online = cpu_online(cpu);
+- struct set_mtrr_data data;
+- unsigned long flags;
+-
+-#ifdef CONFIG_SMP
+- /*
+- * If we are not yet online, then there can be no stop_machine() in
+- * parallel. Stop machine ensures this by using get_online_cpus().
+- *
+- * Otherwise, we need to prevent a stop_machine() happening in parallel
+- * by taking this lock.
+- */
+- if (online)
+- mutex_lock(&stop_cpus_mutex);
+-#endif
+-
+- preempt_disable();
+-
+- data.smp_reg = reg;
+- data.smp_base = base;
+- data.smp_size = size;
+- data.smp_type = type;
+- atomic_set(&data.count, num_booting_cpus() - 1);
+-
+- /* Make sure data.count is visible before unleashing other CPUs */
+- smp_wmb();
+- atomic_set(&data.gate, 0);
+-
+- /* Start the ball rolling on other CPUs */
+- for_each_online_cpu(cpu) {
+- struct cpu_stop_work *work = &per_cpu(mtrr_work, cpu);
++ struct set_mtrr_data data = { .smp_reg = reg,
++ .smp_base = base,
++ .smp_size = size,
++ .smp_type = type
++ };
++
++ stop_machine(mtrr_work_handler, &data, cpu_online_mask);
++}
++
++static void set_mtrr_from_offline_cpu(unsigned int reg, unsigned long base,
++ unsigned long size, mtrr_type type)
++{
++ struct set_mtrr_data data = { .smp_reg = reg,
++ .smp_base = base,
++ .smp_size = size,
++ .smp_type = type
++ };
+
+- if (cpu == smp_processor_id())
+- continue;
+-
+- stop_one_cpu_nowait(cpu, mtrr_work_handler, &data, work);
+- }
+-
+-
+- while (atomic_read(&data.count))
+- cpu_relax();
+-
+- /* Ok, reset count and toggle gate */
+- atomic_set(&data.count, num_booting_cpus() - 1);
+- smp_wmb();
+- atomic_set(&data.gate, 1);
+-
+- local_irq_save(flags);
+-
+- while (atomic_read(&data.count))
+- cpu_relax();
+-
+- /* Ok, reset count and toggle gate */
+- atomic_set(&data.count, num_booting_cpus() - 1);
+- smp_wmb();
+- atomic_set(&data.gate, 0);
+-
+- /* Do our MTRR business */
+-
+- /*
+- * HACK!
+- *
+- * We use this same function to initialize the mtrrs during boot,
+- * resume, runtime cpu online and on an explicit request to set a
+- * specific MTRR.
+- *
+- * During boot or suspend, the state of the boot cpu's mtrrs has been
+- * saved, and we want to replicate that across all the cpus that come
+- * online (either at the end of boot or resume or during a runtime cpu
+- * online). If we're doing that, @reg is set to something special and on
+- * this cpu we still do mtrr_if->set_all(). During boot/resume, this
+- * is unnecessary if at this point we are still on the cpu that started
+- * the boot/resume sequence. But there is no guarantee that we are still
+- * on the same cpu. So we do mtrr_if->set_all() on this cpu aswell to be
+- * sure that we are in sync with everyone else.
+- */
+- if (reg != ~0U)
+- mtrr_if->set(reg, base, size, type);
+- else
+- mtrr_if->set_all();
+-
+- /* Wait for the others */
+- while (atomic_read(&data.count))
+- cpu_relax();
+-
+- atomic_set(&data.count, num_booting_cpus() - 1);
+- smp_wmb();
+- atomic_set(&data.gate, 1);
+-
+- /*
+- * Wait here for everyone to have seen the gate change
+- * So we're the last ones to touch 'data'
+- */
+- while (atomic_read(&data.count))
+- cpu_relax();
+-
+- local_irq_restore(flags);
+- preempt_enable();
+-#ifdef CONFIG_SMP
+- if (online)
+- mutex_unlock(&stop_cpus_mutex);
+-#endif
++ stop_machine_from_offline_cpu(mtrr_work_handler, &data,
++ cpu_callout_mask);
+ }
+
+ /**
+@@ -800,7 +696,7 @@ void mtrr_ap_init(void)
+ * 2. cpu hotadd time. We let mtrr_add/del_page hold cpuhotplug
+ * lock to prevent mtrr entry changes
+ */
+- set_mtrr(~0U, 0, 0, 0);
++ set_mtrr_from_offline_cpu(~0U, 0, 0, 0);
+ }
+
+ /**
+Index: linux-2.6-tip/include/linux/stop_machine.h
+===================================================================
+--- linux-2.6-tip.orig/include/linux/stop_machine.h
++++ linux-2.6-tip/include/linux/stop_machine.h
+@@ -27,8 +27,6 @@ struct cpu_stop_work {
+ struct cpu_stop_done *done;
+ };
+
+-extern struct mutex stop_cpus_mutex;
+-
+ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg);
+ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg,
+ struct cpu_stop_work *work_buf);
+Index: linux-2.6-tip/kernel/stop_machine.c
+===================================================================
+--- linux-2.6-tip.orig/kernel/stop_machine.c
++++ linux-2.6-tip/kernel/stop_machine.c
+@@ -132,8 +132,8 @@ void stop_one_cpu_nowait(unsigned int cp
+ cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu), work_buf);
+ }
+
+-DEFINE_MUTEX(stop_cpus_mutex);
+ /* static data for stop_cpus */
++static DEFINE_MUTEX(stop_cpus_mutex);
+ static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work);
+
+ static void queue_stop_cpus_work(const struct cpumask *cpumask,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch new/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
--- old/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch 2011-04-15 13:24:21.000000000 +0200
+++ new/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch 2011-06-17 13:23:54.000000000 +0200
@@ -68,20 +68,20 @@
--- a/arch/x86/kernel/apic/probe_32.c
+++ b/arch/x86/kernel/apic/probe_32.c
@@ -267,7 +267,7 @@ generic_mps_oem_check(struct mpc_table *
- if (!apic_probe[i]->mps_oem_check(mpc, oem, productid))
+ if (!(*drv)->mps_oem_check(mpc, oem, productid))
continue;
- if (!cmdline_apic) {
+ if (!cmdline_apic && apic == &apic_default) {
- apic = apic_probe[i];
+ apic = *drv;
printk(KERN_INFO "Switched to APIC driver `%s'.\n",
apic->name);
@@ -287,7 +287,7 @@ int __init default_acpi_madt_oem_check(c
- if (!apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id))
+ if (!(*drv)->acpi_madt_oem_check(oem_id, oem_table_id))
continue;
- if (!cmdline_apic) {
+ if (!cmdline_apic && apic == &apic_default) {
- apic = apic_probe[i];
+ apic = *drv;
printk(KERN_INFO "Switched to APIC driver `%s'.\n",
apic->name);
++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/elousb.patch new/patches.drivers/elousb.patch
--- old/patches.drivers/elousb.patch 2011-03-28 13:00:59.000000000 +0200
+++ new/patches.drivers/elousb.patch 2011-06-08 20:18:25.000000000 +0200
@@ -29,11 +29,12 @@
{ HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC4UM) },
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
-@@ -216,7 +216,9 @@
+@@ -216,8 +216,10 @@
#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
#define USB_VENDOR_ID_ELO 0x04E7
+#define USB_DEVICE_ID_ELO_4000U 0x0009
+ #define USB_DEVICE_ID_ELO_TS2515 0x0022
#define USB_DEVICE_ID_ELO_TS2700 0x0020
+#define USB_DEVICE_ID_ELO_4500U 0x0030
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/PM-Print-a-warning-if-firmware-is-requested-when-tas.patch new/patches.fixes/PM-Print-a-warning-if-firmware-is-requested-when-tas.patch
--- old/patches.fixes/PM-Print-a-warning-if-firmware-is-requested-when-tas.patch 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/PM-Print-a-warning-if-firmware-is-requested-when-tas.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,84 +0,0 @@
-From a144c6a6c924aa1da04dd77fb84b89927354fdff Mon Sep 17 00:00:00 2001
-From: Rafael J. Wysocki
-Date: Fri, 6 May 2011 20:09:42 +0200
-Subject: PM: Print a warning if firmware is requested when tasks are frozen
-Git-commit: a144c6a6c924aa1da04dd77fb84b89927354fdff
-Patch-mainline: yes
-References: bnc#695219
-
-Some drivers erroneously use request_firmware() from their ->resume()
-(or ->thaw(), or ->restore()) callbacks, which is not going to work
-unless the firmware has been built in. This causes system resume to
-stall until the firmware-loading timeout expires, which makes users
-think that the resume has failed and reboot their machines
-unnecessarily. For this reason, make _request_firmware() print a
-warning and return immediately with error code if it has been called
-when tasks are frozen and it's impossible to start any new usermode
-helpers.
-
-Signed-off-by: Rafael J. Wysocki
-Acked-by: Greg Kroah-Hartman
-Reviewed-by: Valdis Kletnieks
-Signed-off-by: Jiri Slaby
----
- drivers/base/firmware_class.c | 5 +++++
- include/linux/kmod.h | 5 +++++
- kernel/kmod.c | 9 +++++++++
- 3 files changed, 19 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
-index 8c798ef..bbb03e6 100644
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -521,6 +521,11 @@ static int _request_firmware(const struct firmware **firmware_p,
- if (!firmware_p)
- return -EINVAL;
-
-+ if (WARN_ON(usermodehelper_is_disabled())) {
-+ dev_err(device, "firmware: %s will not be loaded\n", name);
-+ return -EBUSY;
-+ }
-+
- *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
- if (!firmware) {
- dev_err(device, "%s: kmalloc(struct firmware) failed\n",
-diff --git a/include/linux/kmod.h b/include/linux/kmod.h
-index 6efd7a7..7f3dbcb 100644
---- a/include/linux/kmod.h
-+++ b/include/linux/kmod.h
-@@ -111,7 +111,12 @@ call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)
-
- extern void usermodehelper_init(void);
-
-+#ifdef CONFIG_PM_SLEEP
- extern int usermodehelper_disable(void);
- extern void usermodehelper_enable(void);
-+extern bool usermodehelper_is_disabled(void);
-+#else
-+static inline bool usermodehelper_is_disabled(void) { return false; }
-+#endif
-
- #endif /* __LINUX_KMOD_H__ */
-diff --git a/kernel/kmod.c b/kernel/kmod.c
-index 9cd0591..9ab513b 100644
---- a/kernel/kmod.c
-+++ b/kernel/kmod.c
-@@ -301,6 +301,15 @@ void usermodehelper_enable(void)
- usermodehelper_disabled = 0;
- }
-
-+/**
-+ * usermodehelper_is_disabled - check if new helpers are allowed to be started
-+ */
-+bool usermodehelper_is_disabled(void)
-+{
-+ return usermodehelper_disabled;
-+}
-+EXPORT_SYMBOL_GPL(usermodehelper_is_disabled);
-+
- static void helper_lock(void)
- {
- atomic_inc(&running_helpers);
---
-1.7.4.2
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/block-add-proper-state-guards-to-__elv_next_request.patch new/patches.fixes/block-add-proper-state-guards-to-__elv_next_request.patch
--- old/patches.fixes/block-add-proper-state-guards-to-__elv_next_request.patch 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/block-add-proper-state-guards-to-__elv_next_request.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-From: James Bottomley
-Subject: block: add proper state guards to __elv_next_request
-Patch-mainline: submitted Apr 22 2011
-
-blk_cleanup_queue() calls elevator_exit() and after this, we can't
-touch the elevator without oopsing. __elv_next_request() must check
-for this state because in the refcounted queue model, we can still
-call it after blk_cleanup_queue() has been called.
-
-This was reported as causing an oops attributable to scsi.
-
-Signed-off-by: James Bottomley
-Signed-off-by: Jiri Slaby
----
- block/blk.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/block/blk.h
-+++ b/block/blk.h
-@@ -62,7 +62,8 @@ static inline struct request *__elv_next
- return rq;
- }
-
-- if (!q->elevator->ops->elevator_dispatch_fn(q, 0))
-+ if (test_bit(QUEUE_FLAG_DEAD, &q->queue_flags) ||
-+ !q->elevator->ops->elevator_dispatch_fn(q, 0))
- return NULL;
- }
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bridge-module-get-put.patch new/patches.fixes/bridge-module-get-put.patch
--- old/patches.fixes/bridge-module-get-put.patch 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/bridge-module-get-put.patch 2011-06-29 14:46:33.000000000 +0200
@@ -8,12 +8,20 @@
bridges.
---
- net/bridge/br_if.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
+ net/bridge/br_if.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
-@@ -291,6 +291,11 @@ int br_add_bridge(struct net *net, const
+@@ -230,6 +230,7 @@ static struct net_bridge_port *new_nbp(s
+
+ int br_add_bridge(struct net *net, const char *name)
+ {
++ int ret;
+ struct net_device *dev;
+
+ dev = alloc_netdev(sizeof(struct net_bridge), name,
+@@ -238,9 +239,17 @@ int br_add_bridge(struct net *net, const
if (!dev)
return -ENOMEM;
@@ -22,19 +30,17 @@
+ return -ENOENT;
+ }
+
- rtnl_lock();
- if (strchr(dev->name, '%')) {
- ret = dev_alloc_name(dev, dev->name);
-@@ -309,6 +314,8 @@ int br_add_bridge(struct net *net, const
- unregister_netdevice(dev);
- out:
- rtnl_unlock();
+ dev_net_set(dev, net);
+
+- return register_netdev(dev);
++ ret = register_netdev(dev);
+ if (ret)
+ module_put(THIS_MODULE);
- return ret;
++ return ret;
+ }
- out_free:
-@@ -340,6 +347,8 @@ int br_del_bridge(struct net *net, const
+ int br_del_bridge(struct net *net, const char *name)
+@@ -267,6 +276,8 @@ int br_del_bridge(struct net *net, const
del_br(netdev_priv(dev), NULL);
rtnl_unlock();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/grab-swap-token-oops new/patches.fixes/grab-swap-token-oops
--- old/patches.fixes/grab-swap-token-oops 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/grab-swap-token-oops 2011-06-29 14:46:33.000000000 +0200
@@ -13,18 +13,23 @@
Acked-by: okir@suse.de
- mm/thrash.c | 3 +++
- 1 file changed, 3 insertions(+)
+ mm/thrash.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
--- a/mm/thrash.c
+++ b/mm/thrash.c
-@@ -31,6 +31,9 @@ void grab_swap_token(struct mm_struct *m
+@@ -54,10 +54,13 @@ static struct mem_cgroup *swap_token_mem
+ void grab_swap_token(struct mm_struct *mm)
+ {
int current_interval;
+- unsigned int old_prio = mm->token_priority;
++ unsigned int old_prio;
global_faults++;
+ if (mm == NULL)
+ return;
-+
++ old_prio = mm->token_priority;
current_interval = global_faults - mm->faultstamp;
+ if (!spin_trylock(&swap_token_lock))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/hid-add-noget-quirk-for-symboltec.patch new/patches.fixes/hid-add-noget-quirk-for-symboltec.patch
--- old/patches.fixes/hid-add-noget-quirk-for-symboltec.patch 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/hid-add-noget-quirk-for-symboltec.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
-From: Jiri Kosina
-Subject: [PATCH] HID: add noget quirk barcode scanners from Symbol Technologies
-References: bnc#689290
-Patch-mainline: not yet, queued in subsystem tree
-
-Barcode handheld scanners produced by Symbol Technologies (0x05e0/0x0800
-and 0x05e0/0x1300) need HID_QUIRK_NOGET, otherwise their firmware exposes
-trouble during enumeration/initialization.
-
-Signed-off-by: Jiri Kosina
----
- drivers/hid/hid-ids.h | 4 ++++
- drivers/hid/usbhid/hid-quirks.c | 2 ++
- 2 files changed, 6 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index d485894..be5cf24 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -544,6 +544,10 @@
- #define USB_VENDOR_ID_SUNPLUS 0x04fc
- #define USB_DEVICE_ID_SUNPLUS_WDESKTOP 0x05d8
-
-+#define USB_VENDOR_ID_SYMBOL 0x05e0
-+#define USB_DEVICE_ID_SYMBOL_SCANNER_1 0x0800
-+#define USB_DEVICE_ID_SYMBOL_SCANNER_2 0x1300
-+
- #define USB_VENDOR_ID_THRUSTMASTER 0x044f
-
- #define USB_VENDOR_ID_TOPSEED 0x0766
-diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
-index 9a94b64..c09fa0c 100644
---- a/drivers/hid/usbhid/hid-quirks.c
-+++ b/drivers/hid/usbhid/hid-quirks.c
-@@ -67,6 +67,8 @@ static const struct hid_blacklist {
- { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },
-+ { USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_1, HID_QUIRK_NOGET },
-+ { USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_2, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET },
- { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_PF1209, HID_QUIRK_MULTI_INPUT },
- { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_WP4030U, HID_QUIRK_MULTI_INPUT },
---
-1.7.3.1
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ia64-sparse-fixes.diff new/patches.fixes/ia64-sparse-fixes.diff
--- old/patches.fixes/ia64-sparse-fixes.diff 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/ia64-sparse-fixes.diff 1970-01-01 01:00:00.000000000 +0100
@@ -1,53 +0,0 @@
-From: Jan Blunck
-Subject: ia64-kvm: fix sparse warnings
-Patch-mainline: Submitted by jeffm, 27 Apr 2011
-
-This patch fixes some sparse warning about dubious one-bit signed bitfield.
-
-Signed-off-by: Jan Blunck
----
- arch/ia64/kvm/vti.h | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
---- a/arch/ia64/kvm/vti.h
-+++ b/arch/ia64/kvm/vti.h
-@@ -83,13 +83,13 @@
- union vac {
- unsigned long value;
- struct {
-- int a_int:1;
-- int a_from_int_cr:1;
-- int a_to_int_cr:1;
-- int a_from_psr:1;
-- int a_from_cpuid:1;
-- int a_cover:1;
-- int a_bsw:1;
-+ unsigned int a_int:1;
-+ unsigned int a_from_int_cr:1;
-+ unsigned int a_to_int_cr:1;
-+ unsigned int a_from_psr:1;
-+ unsigned int a_from_cpuid:1;
-+ unsigned int a_cover:1;
-+ unsigned int a_bsw:1;
- long reserved:57;
- };
- };
-@@ -97,12 +97,12 @@ union vac {
- union vdc {
- unsigned long value;
- struct {
-- int d_vmsw:1;
-- int d_extint:1;
-- int d_ibr_dbr:1;
-- int d_pmc:1;
-- int d_to_pmd:1;
-- int d_itm:1;
-+ unsigned int d_vmsw:1;
-+ unsigned int d_extint:1;
-+ unsigned int d_ibr_dbr:1;
-+ unsigned int d_pmc:1;
-+ unsigned int d_to_pmd:1;
-+ unsigned int d_itm:1;
- long reserved:58;
- };
- };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch new/patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch
--- old/patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch 2011-06-29 14:46:33.000000000 +0200
@@ -0,0 +1,58 @@
+From: Jan Kara
+Subject: [PATCH] mm: Fix assertion mapping->nrpages == 0 in end_writeback()
+Patch-mainline: No
+References: bnc#693013 bnc#666423
+
+Under heavy memory and filesystem load, users observe the assertion
+mapping->nrpages == 0 in end_writeback() trigger. This can be caused
+by page reclaim reclaiming the last page from a mapping in the following
+race:
+ CPU0 CPU1
+ ...
+ shrink_page_list()
+ __remove_mapping()
+ __delete_from_page_cache()
+ radix_tree_delete()
+ evict_inode()
+ truncate_inode_pages()
+ truncate_inode_pages_range()
+ pagevec_lookup() - finds nothing
+ end_writeback()
+ mapping->nrpages != 0 -> BUG
+ page->mapping = NULL
+ mapping->nrpages--
+
+Fix the problem by cycling the mapping->tree_lock at the end of
+truncate_inode_pages_range() to synchronize with page reclaim.
+
+Analyzed by Jay , lost in LKML, and dug
+out by Miklos Szeredi .
+
+CC: Jay
+Acked-by: Miklos Szeredi
+Signed-off-by: Jan Kara
+---
+ mm/truncate.c | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/mm/truncate.c b/mm/truncate.c
+index a956675..ec3d292 100644
+--- a/mm/truncate.c
++++ b/mm/truncate.c
+@@ -291,6 +291,13 @@ void truncate_inode_pages_range(struct address_space *mapping,
+ mem_cgroup_uncharge_end();
+ }
+ cleancache_flush_inode(mapping);
++ /*
++ * Cycle the tree_lock to make sure all __delete_from_page_cache()
++ * calls run from page reclaim have finished as well (this handles the
++ * case when page reclaim took the last page from our range).
++ */
++ spin_lock_irq(&mapping->tree_lock);
++ spin_unlock_irq(&mapping->tree_lock);
+ }
+ EXPORT_SYMBOL(truncate_inode_pages_range);
+
+--
+1.7.1
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/no-built-in-root_dev new/patches.fixes/no-built-in-root_dev
--- old/patches.fixes/no-built-in-root_dev 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/no-built-in-root_dev 2011-06-29 14:46:33.000000000 +0200
@@ -0,0 +1,111 @@
+From 079f85e624189292d1c818b47764916bf8cf84a8 Mon Sep 17 00:00:00 2001
+From: Michal Marek
+Date: Tue, 12 Apr 2011 13:30:24 +0200
+Subject: [PATCH] x86, build: Do not set the root_dev field in bzImage
+Patch-mainline: 3.1-rc1?
+Git-repo: tip.git
+Git-commit: 079f85e624189292d1c818b47764916bf8cf84a8
+
+This has been obsoleted by the root= commandline and the rdev utility
+for many, many years. People who still depend on this will surely
+have a copy of the rdev utility around, the rest of the world gets rid
+of another piece of buildhost-dependent data in the build. Thanks to
+Paul Bolle for the build.c cleanup.
+
+Cc: Paul Bolle
+Signed-off-by: Michal Marek
+Link: http://lkml.kernel.org/r/1302607824-24699-1-git-send-email-mmarek@suse.cz
+Signed-off-by: H. Peter Anvin
+
+diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
+index f7cb086..95365a8 100644
+--- a/arch/x86/boot/Makefile
++++ b/arch/x86/boot/Makefile
+@@ -9,12 +9,6 @@
+ # Changed by many, many contributors over the years.
+ #
+
+-# ROOT_DEV specifies the default root-device when making the image.
+-# This can be either FLOPPY, CURRENT, /dev/xxxx or empty, in which case
+-# the default of FLOPPY is used by 'build'.
+-
+-ROOT_DEV := CURRENT
+-
+ # If you want to preset the SVGA mode, uncomment the next line and
+ # set SVGA_MODE to whatever number you want.
+ # Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
+@@ -75,8 +69,7 @@ GCOV_PROFILE := n
+ $(obj)/bzImage: asflags-y := $(SVGA_MODE)
+
+ quiet_cmd_image = BUILD $@
+-cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
+- $(ROOT_DEV) > $@
++cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin > $@
+
+ $(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
+ $(call if_changed,image)
+diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
+index ee3a4ea..fdc60a0 100644
+--- a/arch/x86/boot/tools/build.c
++++ b/arch/x86/boot/tools/build.c
+@@ -130,7 +130,7 @@ static void die(const char * str, ...)
+
+ static void usage(void)
+ {
+- die("Usage: build setup system [rootdev] [> image]");
++ die("Usage: build setup system [> image]");
+ }
+
+ int main(int argc, char ** argv)
+@@ -138,39 +138,14 @@ int main(int argc, char ** argv)
+ unsigned int i, sz, setup_sectors;
+ int c;
+ u32 sys_size;
+- u8 major_root, minor_root;
+ struct stat sb;
+ FILE *file;
+ int fd;
+ void *kernel;
+ u32 crc = 0xffffffffUL;
+
+- if ((argc < 3) || (argc > 4))
++ if (argc != 3)
+ usage();
+- if (argc > 3) {
+- if (!strcmp(argv[3], "CURRENT")) {
+- if (stat("/", &sb)) {
+- perror("/");
+- die("Couldn't stat /");
+- }
+- major_root = major(sb.st_dev);
+- minor_root = minor(sb.st_dev);
+- } else if (strcmp(argv[3], "FLOPPY")) {
+- if (stat(argv[3], &sb)) {
+- perror(argv[3]);
+- die("Couldn't stat root device.");
+- }
+- major_root = major(sb.st_rdev);
+- minor_root = minor(sb.st_rdev);
+- } else {
+- major_root = 0;
+- minor_root = 0;
+- }
+- } else {
+- major_root = DEFAULT_MAJOR_ROOT;
+- minor_root = DEFAULT_MINOR_ROOT;
+- }
+- fprintf(stderr, "Root device is (%d, %d)\n", major_root, minor_root);
+
+ /* Copy the setup code */
+ file = fopen(argv[1], "r");
+@@ -193,8 +168,8 @@ int main(int argc, char ** argv)
+ memset(buf+c, 0, i-c);
+
+ /* Set the default root device */
+- buf[508] = minor_root;
+- buf[509] = major_root;
++ buf[508] = DEFAULT_MINOR_ROOT;
++ buf[509] = DEFAULT_MAJOR_ROOT;
+
+ fprintf(stderr, "Setup is %d bytes (padded to %d bytes).\n", c, i);
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/novfs-nwcapi.patch new/patches.fixes/novfs-nwcapi.patch
--- old/patches.fixes/novfs-nwcapi.patch 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/novfs-nwcapi.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-From: Pankaj Biswas
-Subject: Fix checking of login id
-References: bnc#626119
-Patch-mainline: No
-
-Signed-off-by: Pankaj Biswas
-Acked-by: Jan Kara
-
---- a/fs/novfs/vfs.h 2011-02-23 17:15:27.000000000 +0530
-+++ b/fs/novfs/vfs.h 2011-03-04 11:57:46.000000000 +0530
-@@ -54,6 +54,8 @@ struct novfs_schandle {
-
- #define PATH_LENGTH_BUFFER PATH_MAX
- #define NW_MAX_PATH_LENGTH 255
-+#define NW_MAX_DN_CHARS 256
-+#define NW_MAX_DN_BYTES (2*(NW_MAX_DN_CHARS+1))
-
- #define XA_BUFFER (8 * 1024)
-
---- a/fs/novfs/nwcapi.c 2011-03-02 12:00:46.000000000 +0530
-+++ b/fs/novfs/nwcapi.c 2011-03-04 11:57:42.000000000 +0530
-@@ -480,7 +480,7 @@ int novfs_login_id(struct novfs_xplat *p
- DbgPrint("DomainName\n");
- novfs_dump(sizeof(nwcStr), &nwcStr);
-
-- if (nwcStr.DataLen > MAX_NAME_LEN)
-+ if (nwcStr.DataLen > MAX_DOMAIN_LEN)
- return -EINVAL;
-
- if ((server.buffer = kmalloc(nwcStr.DataLen, GFP_KERNEL))) {
-@@ -492,7 +492,7 @@ int novfs_login_id(struct novfs_xplat *p
-
- cpylen = copy_from_user(&nwcStr, lgn.pObjectName, sizeof(nwcStr));
- DbgPrint("ObjectName");
-- if (nwcStr.DataLen > MAX_OBJECT_NAME_LENGTH) {
-+ if (nwcStr.DataLen > NW_MAX_DN_BYTES) {
- retCode = -EINVAL;
- goto out;
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/oom-warning new/patches.fixes/oom-warning
--- old/patches.fixes/oom-warning 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/oom-warning 2011-06-29 14:46:33.000000000 +0200
@@ -14,17 +14,17 @@
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2087,7 +2087,13 @@ rebalance:
- if (in_interrupt() || !wait)
- filter &= ~SHOW_MEM_FILTER_NODES;
+ va_end(args);
+ }
-- pr_warning("%s: page allocation failure. order:%d, mode:0x%x\n",
-+ if (!wait) {
-+ pr_info("The following is only an harmless informational message.\n");
-+ pr_info("Unless you get a _continuous_flood_ of these messages it means\n");
-+ pr_info("everything is working fine. Allocations from irqs cannot be\n");
-+ pr_info("perfectly reliable and the kernel is designed to handle that.\n");
-+ }
-+ pr_info("%s: page allocation failure. order:%d, mode:0x%x\n",
- current->comm, order, gfp_mask);
- dump_stack();
- if (!should_suppress_show_mem())
+- pr_warning("%s: page allocation failure: order:%d, mode:0x%x\n",
++ if (!(gfp_mask & __GFP_WAIT)) {
++ pr_info("The following is only an harmless informational message.\n");
++ pr_info("Unless you get a _continuous_flood_ of these messages it means\n");
++ pr_info("everything is working fine. Allocations from irqs cannot be\n");
++ pr_info("perfectly reliable and the kernel is designed to handle that.\n");
++ }
++ pr_info("%s: page allocation failure. order:%d, mode:0x%x\n",
+ current->comm, order, gfp_mask);
+
+ dump_stack();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/proc-scsi-scsi-fix.diff new/patches.fixes/proc-scsi-scsi-fix.diff
--- old/patches.fixes/proc-scsi-scsi-fix.diff 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/proc-scsi-scsi-fix.diff 1970-01-01 01:00:00.000000000 +0100
@@ -1,110 +0,0 @@
-From: Jeff Mahoney
-Subject: [PATCH] scsi: iterate over devices individually for /proc/scsi/scsi
-References: 263731
-Patch-mainline: Probably never, hch wants to kill /proc/scsi/scsi anyway.
-
- On systems with very large numbers (> 1600 or so) of SCSI devices,
- cat /proc/scsi/scsi ends up failing with -ENOMEM. This is due to
- the show routine simply iterating over all of the devices with
- bus_for_each_dev(), and trying to dump all of them into the buffer
- at the same time. On my test system (using scsi_debug with 4064 devices),
- the output ends up being ~ 632k, far more than kmalloc will typically allow.
-
- This patch defines its own seq_file opreations to iterate over the scsi
- devices.The result is that each show() operation only dumps ~ 180 bytes
- into the buffer at a time so we don't run out of memory.
-
- If the "Attached devices" header isn't required, we can dump the
- sfile->private bit completely.
-
-Signed-off-by: Jeff Mahoney
-
----
-
- drivers/scsi/scsi_proc.c | 58 ++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 52 insertions(+), 6 deletions(-)
-
---- a/drivers/scsi/scsi_proc.c
-+++ b/drivers/scsi/scsi_proc.c
-@@ -386,13 +386,59 @@ static ssize_t proc_scsi_write(struct fi
- * @s: output goes here
- * @p: not used
- */
--static int proc_scsi_show(struct seq_file *s, void *p)
-+static int always_match(struct device *dev, void *data)
- {
-- seq_printf(s, "Attached devices:\n");
-- bus_for_each_dev(&scsi_bus_type, NULL, s, proc_print_scsidevice);
-- return 0;
-+ return 1;
- }
-
-+static inline struct device *next_scsi_device(struct device *start)
-+{
-+ struct device *next = bus_find_device(&scsi_bus_type, start, NULL,
-+ always_match);
-+ put_device(start);
-+ return next;
-+}
-+
-+static void *scsi_seq_start(struct seq_file *sfile, loff_t *pos)
-+{
-+ struct device *dev = NULL;
-+ loff_t n = *pos;
-+
-+ while ((dev = next_scsi_device(dev))) {
-+ if (!n--)
-+ break;
-+ sfile->private++;
-+ }
-+ return dev;
-+}
-+
-+static void *scsi_seq_next(struct seq_file *sfile, void *v, loff_t *pos)
-+{
-+ (*pos)++;
-+ sfile->private++;
-+ return next_scsi_device(v);
-+}
-+
-+static void scsi_seq_stop(struct seq_file *sfile, void *v)
-+{
-+ put_device(v);
-+}
-+
-+static int scsi_seq_show(struct seq_file *sfile, void *dev)
-+{
-+ if (!sfile->private)
-+ seq_puts(sfile, "Attached devices:\n");
-+
-+ return proc_print_scsidevice(dev, sfile);
-+}
-+
-+static struct seq_operations scsi_seq_ops = {
-+ .start = scsi_seq_start,
-+ .next = scsi_seq_next,
-+ .stop = scsi_seq_stop,
-+ .show = scsi_seq_show
-+};
-+
- /**
- * proc_scsi_open - glue function
- * @inode: not used
-@@ -406,7 +452,7 @@ static int proc_scsi_open(struct inode *
- * We don't really need this for the write case but it doesn't
- * harm either.
- */
-- return single_open(file, proc_scsi_show, NULL);
-+ return seq_open(file, &scsi_seq_ops);
- }
-
- static const struct file_operations proc_scsi_operations = {
-@@ -415,7 +461,7 @@ static const struct file_operations proc
- .read = seq_read,
- .write = proc_scsi_write,
- .llseek = seq_lseek,
-- .release = single_release,
-+ .release = seq_release,
- };
-
- /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file new/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file
--- old/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file 2011-05-20 20:20:17.000000000 +0200
+++ new/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file 1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-From: Vasiliy Kulikov
-Subject: scsi: aic94xx: world-writable sysfs update_bios file
-Introduced-by: v2.6.25-rc1
-Patch-mainline: Submitted 4 Feb 2011
-
-Don't allow everybody to load firmware.
-
-Signed-off-by: Vasiliy Kulikov
-Acked-by: Jeff Mahoney
----
- Compile tested only.
- drivers/scsi/aic94xx/aic94xx_init.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
-index 3b7e83d..d5ff142 100644
---- a/drivers/scsi/aic94xx/aic94xx_init.c
-+++ b/drivers/scsi/aic94xx/aic94xx_init.c
-@@ -486,7 +486,7 @@ static ssize_t asd_show_update_bios(struct device *dev,
- flash_error_table[i].reason);
- }
-
--static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUGO,
-+static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUSR,
- asd_show_update_bios, asd_store_update_bios);
-
- static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/tty-ldisc-do-not-close-until-there-are-readers.patch new/patches.fixes/tty-ldisc-do-not-close-until-there-are-readers.patch
--- old/patches.fixes/tty-ldisc-do-not-close-until-there-are-readers.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/tty-ldisc-do-not-close-until-there-are-readers.patch 2011-06-29 14:46:33.000000000 +0200
@@ -0,0 +1,104 @@
+From 92f6fa09bd453ffe3351fa1f1377a1b7cfa911e6 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Sun, 5 Jun 2011 14:16:16 +0200
+Subject: TTY: ldisc, do not close until there are readers
+Git-commit: 92f6fa09bd453ffe3351fa1f1377a1b7cfa911e6
+Patch-mainline: 3.0-rc6
+References: bnc#698247 bnc#693374
+
+We restored tty_ldisc_wait_idle in 100eeae2c5c (TTY: restore
+tty_ldisc_wait_idle). We used it in the ldisc changing path to fix the
+case where there are tasks in n_tty_read waiting for data and somebody
+tries to change ldisc.
+
+Similar to the case above, there may be also tasks waiting in
+n_tty_read while hangup is performed. As 65b770468e98 (tty-ldisc: turn
+ldisc user count into a proper refcount) removed the wait-until-idle
+from all paths, hangup path won't wait for them to disappear either
+now. So add it back even to the hangup path.
+
+There is a difference, we need uninterruptible sleep as there is
+obviously HUP signal pending. So tty_ldisc_wait_idle now sleeps
+without possibility to be interrupted. This is what original
+tty_ldisc_wait_idle did. After the wait idle reintroduction
+(100eeae2c5c), we have had interruptible sleeps for the ldisc changing
+path. But as there is a 5s timeout anyway, we don't allow it to be
+interrupted from now on. It's not worth the added complexity of
+deciding what kind of sleep we want.
+
+Before 65b770468e98 tty_ldisc_release was called also from
+tty_ldisc_release. It is called from tty_release, so I don't think we
+need to restore that one.
+
+This is nicely reproducible after constifying the timing when
+drivers/tty/n_tty.c is patched as follows ("TTY: ntty, add one more
+sanity check" patch is needed to actually see it explode):
+%% -1548,6 +1549,7 @@ static int n_tty_open(struct tty_struct *tty)
+
+ /* These are ugly. Currently a malloc failure here can panic */
+ if (!tty->read_buf) {
++ msleep(100);
+ tty->read_buf = kzalloc(N_TTY_BUF_SIZE, GFP_KERNEL);
+ if (!tty->read_buf)
+ return -ENOMEM;
+%% -1785,6 +1788,7 @@ do_it_again:
+ break;
+ }
+ timeout = schedule_timeout(timeout);
++ msleep(20);
+ continue;
+ }
+ __set_current_state(TASK_RUNNING);
+===== With a process: =====
+ while (1) {
+ int fd = open(argv[1], O_RDWR);
+ read(fd, buf, sizeof(buf));
+ close(fd);
+ }
+===== and its child: =====
+ setsid();
+ while (1) {
+ int fd = open(tty, O_RDWR|O_NOCTTY);
+ ioctl(fd, TIOCSCTTY, 1);
+ vhangup();
+ close(fd);
+ usleep(100 * (10 + random() % 1000));
+ }
+===== EOF =====
+
+References: https://bugzilla.novell.com/show_bug.cgi?id=693374
+References: https://bugzilla.novell.com/show_bug.cgi?id=694509
+Signed-off-by: Jiri Slaby
+Cc: Alan Cox
+Cc: Linus Torvalds
+Cc: stable [32, 33, 34, 39]
+Signed-off-by: Greg Kroah-Hartman
+---
+ drivers/tty/tty_ldisc.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
+index 5d01d32..ef925d5 100644
+--- a/drivers/tty/tty_ldisc.c
++++ b/drivers/tty/tty_ldisc.c
+@@ -555,7 +555,7 @@ static void tty_ldisc_flush_works(struct tty_struct *tty)
+ static int tty_ldisc_wait_idle(struct tty_struct *tty)
+ {
+ int ret;
+- ret = wait_event_interruptible_timeout(tty_ldisc_idle,
++ ret = wait_event_timeout(tty_ldisc_idle,
+ atomic_read(&tty->ldisc->users) == 1, 5 * HZ);
+ if (ret < 0)
+ return ret;
+@@ -763,6 +763,8 @@ static int tty_ldisc_reinit(struct tty_struct *tty, int ldisc)
+ if (IS_ERR(ld))
+ return -1;
+
++ WARN_ON_ONCE(tty_ldisc_wait_idle(tty));
++
+ tty_ldisc_close(tty, tty->ldisc);
+ tty_ldisc_put(tty->ldisc);
+ tty->ldisc = NULL;
+--
+1.7.6
+
++++++ patches.rpmify.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/apm-honor-config_apm_cpu_idle-n new/patches.rpmify/apm-honor-config_apm_cpu_idle-n
--- old/patches.rpmify/apm-honor-config_apm_cpu_idle-n 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.rpmify/apm-honor-config_apm_cpu_idle-n 2011-06-13 21:52:37.000000000 +0200
@@ -0,0 +1,119 @@
+From: Jeff Mahoney
+Subject: apm: Honor CONFIG_APM_CPU_IDLE=n
+Patch-mainline: Submitted to x86@kernel.org, 13 Jun 2011
+
+ Commit 06ae40c (x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when
+ APM demands it) removed the exports for pm_idle and default_idle unless
+ CONFIG_APM_CPU_IDLE is defined.
+
+ This caused build failures when CONFIG_APM=m and CONFIG_APM_CPU_IDLE=n,
+ since the APM code was still using those unconditionally.
+
+ This is due to CONFIG_APM_CPU_IDLE=y really only setting the default
+ threshold to 95% as opposed to 100%. The user is still allowed to
+ manually input thresholds < 100%, which would still invoke the cpu idle
+ code.
+
+ This patch makes the ability to adjust the threshold, which would invoke
+ the cpu idle functionaltity, depend on CONFIG_APM_CPU_IDLE=y.
+
+ I've only build tested it as I don't have hardware that makes use of APM.
+
+Signed-off-by: Jeff Mahoney
+---
+ arch/x86/kernel/apm_32.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/arch/x86/kernel/apm_32.c
++++ b/arch/x86/kernel/apm_32.c
+@@ -375,10 +375,12 @@ static struct {
+ unsigned long offset;
+ unsigned short segment;
+ } apm_bios_entry;
++#ifdef CONFIG_APM_CPU_IDLE
+ static int clock_slowed;
+ static int idle_threshold __read_mostly = DEFAULT_IDLE_THRESHOLD;
+ static int idle_period __read_mostly = DEFAULT_IDLE_PERIOD;
+ static int set_pm_idle;
++#endif
+ static int suspends_pending;
+ static int standbys_pending;
+ static int ignore_sys_suspend;
+@@ -807,6 +809,7 @@ static int set_system_power_state(u_shor
+ return set_power_state(APM_DEVICE_ALL, state);
+ }
+
++#ifdef CONFIG_APM_CPU_IDLE
+ /**
+ * apm_do_idle - perform power saving
+ *
+@@ -966,6 +969,7 @@ recalc:
+
+ local_irq_enable();
+ }
++#endif
+
+ /**
+ * apm_power_off - ask the BIOS to power off
+@@ -1875,12 +1879,14 @@ static int __init apm_setup(char *str)
+ if ((strncmp(str, "bounce-interval=", 16) == 0) ||
+ (strncmp(str, "bounce_interval=", 16) == 0))
+ bounce_interval = simple_strtol(str + 16, NULL, 0);
++#ifdef CONFIG_APM_CPU_IDLE
+ if ((strncmp(str, "idle-threshold=", 15) == 0) ||
+ (strncmp(str, "idle_threshold=", 15) == 0))
+ idle_threshold = simple_strtol(str + 15, NULL, 0);
+ if ((strncmp(str, "idle-period=", 12) == 0) ||
+ (strncmp(str, "idle_period=", 12) == 0))
+ idle_period = simple_strtol(str + 12, NULL, 0);
++#endif
+ invert = (strncmp(str, "no-", 3) == 0) ||
+ (strncmp(str, "no_", 3) == 0);
+ if (invert)
+@@ -2383,6 +2389,7 @@ static int __init apm_init(void)
+ if (misc_register(&apm_device))
+ printk(KERN_WARNING "apm: Could not register misc device.\n");
+
++#ifdef CONFIG_APM_CPU_IDLE
+ if (HZ != 100)
+ idle_period = (idle_period * HZ) / 100;
+ if (idle_threshold < 100) {
+@@ -2390,6 +2397,7 @@ static int __init apm_init(void)
+ pm_idle = apm_cpu_idle;
+ set_pm_idle = 1;
+ }
++#endif
+
+ return 0;
+ }
+@@ -2398,6 +2406,7 @@ static void __exit apm_exit(void)
+ {
+ int error;
+
++#ifdef CONFIG_APM_CPU_IDLE
+ if (set_pm_idle) {
+ pm_idle = original_pm_idle;
+ /*
+@@ -2407,6 +2416,7 @@ static void __exit apm_exit(void)
+ */
+ cpu_idle_wait();
+ }
++#endif
+ if (((apm_info.bios.flags & APM_BIOS_DISENGAGED) == 0)
+ && (apm_info.connection_version > 0x0100)) {
+ error = apm_engage_power_management(APM_DEVICE_ALL, 0);
+@@ -2443,12 +2453,14 @@ MODULE_PARM_DESC(broken_psr, "BIOS has a
+ module_param(realmode_power_off, bool, 0444);
+ MODULE_PARM_DESC(realmode_power_off,
+ "Switch to real mode before powering off");
++#ifdef CONFIG_APM_CPU_IDLE
+ module_param(idle_threshold, int, 0444);
+ MODULE_PARM_DESC(idle_threshold,
+ "System idle percentage above which to make APM BIOS idle calls");
+ module_param(idle_period, int, 0444);
+ MODULE_PARM_DESC(idle_period,
+ "Period (in sec/100) over which to caculate the idle percentage");
++#endif
+ module_param(smp, bool, 0444);
+ MODULE_PARM_DESC(smp,
+ "Set this to enable APM use on an SMP platform. Use with caution on older systems");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/buildhost new/patches.rpmify/buildhost
--- old/patches.rpmify/buildhost 2011-04-13 03:30:36.000000000 +0200
+++ new/patches.rpmify/buildhost 1970-01-01 01:00:00.000000000 +0100
@@ -1,37 +0,0 @@
-From: Andreas Gruenbacher
-Subject: Hide the build hostname
-Patch-mainline: Never, SuSE-specific
-
-Instead of the real build host and user name, use "buildhost.suse.de"
-and "geeko".
-
-Signed-off-by: Andreas Gruenbacher
-
- scripts/mkcompile_h | 16 +++-------------
- 1 file changed, 3 insertions(+), 13 deletions(-)
-
---- a/scripts/mkcompile_h
-+++ b/scripts/mkcompile_h
-@@ -64,19 +64,9 @@ UTS_TRUNCATE="cut -b -$UTS_LEN"
- echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
-
- echo \#define LINUX_COMPILE_TIME \"`date +%T`\"
-- echo \#define LINUX_COMPILE_BY \"`whoami`\"
-- echo \#define LINUX_COMPILE_HOST \"`hostname | $UTS_TRUNCATE`\"
--
-- domain=`dnsdomainname 2> /dev/null`
-- if [ -z "$domain" ]; then
-- domain=`domainname 2> /dev/null`
-- fi
--
-- if [ -n "$domain" ]; then
-- echo \#define LINUX_COMPILE_DOMAIN \"`echo $domain | $UTS_TRUNCATE`\"
-- else
-- echo \#define LINUX_COMPILE_DOMAIN
-- fi
-+ echo \#define LINUX_COMPILE_BY \"geeko\"
-+ echo \#define LINUX_COMPILE_HOST \"buildhost\"
-+ echo \#define LINUX_COMPILE_DOMAIN \"suse.de\"
-
- echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
- ) > .tmpcompile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/kvm-fix-off-by-one-in-kvm_for_each_vcpu-iteration new/patches.rpmify/kvm-fix-off-by-one-in-kvm_for_each_vcpu-iteration
--- old/patches.rpmify/kvm-fix-off-by-one-in-kvm_for_each_vcpu-iteration 2011-04-13 03:30:36.000000000 +0200
+++ new/patches.rpmify/kvm-fix-off-by-one-in-kvm_for_each_vcpu-iteration 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-From: Jeff Mahoney
-Subject: kvm: Fix off by one in kvm_for_each_vcpu iteration
-Patch-mainline: Submitted 12 Apr 2011
-
- This patch avoids gcc issuing the following warning when KVM_MAX_VCPUS=1:
- warning: array subscript is above array bounds
-
- kvm_for_each_vcpu currently checks to see if the index for the vcpu is
- valid /after/ loading it. We don't run into problems because the address
- is still inside the enclosing struct kvm and we never deference or write
- to it, so this isn't a security issue.
-
- It occurs when KVM_MAX_VCPUS=1 because the increment portion of the loop
- will *always* cause the loop to load an invalid location since ++idx will
- always be > 0.
-
- This patch moves the load so that the check occurs before the load and
- we don't run into the compiler warning.
-
-Signed-off-by: Neil Brown
-Signed-off-by: Jeff Mahoney
----
- include/linux/kvm_host.h | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/include/linux/kvm_host.h
-+++ b/include/linux/kvm_host.h
-@@ -292,9 +292,10 @@ static inline struct kvm_vcpu *kvm_get_v
- }
-
- #define kvm_for_each_vcpu(idx, vcpup, kvm) \
-- for (idx = 0, vcpup = kvm_get_vcpu(kvm, idx); \
-- idx < atomic_read(&kvm->online_vcpus) && vcpup; \
-- vcpup = kvm_get_vcpu(kvm, ++idx))
-+ for (idx = 0; \
-+ idx < atomic_read(&kvm->online_vcpus) && \
-+ (vcpup = kvm_get_vcpu(kvm, idx)) != NULL; \
-+ idx++)
-
- int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id);
- void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo new/patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo
--- old/patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo 2011-06-13 21:52:37.000000000 +0200
@@ -0,0 +1,41 @@
+From: Jeff Mahoney
+Subject: nouveau: Make vga_switcheroo code depend on VGA_SWITCHEROO
+Patch-mainline: Submitted to nouveau@lists.freedesktop.org, 13 June 2011
+
+ Commit 8116188 (nouveau/acpi: hook up to the MXM method for mux
+ switching.) broke the build on non-x86 architectures due to the new
+ dependency on MXM and MXM being an x86 platform driver.
+
+ It built previously since the vga switcheroo registration routines
+ were zereod out on !X86. The code was built in but unused.
+
+ This patch makes all of the DSM code depend on CONFIG_VGA_SWITCHEROO,
+ allowing it to build on non-x86 and shrinking the module size as well.
+
+Signed-off-by: Jeff Mahoney
+---
+
+ drivers/gpu/drm/nouveau/nouveau_acpi.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
++++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
+@@ -45,6 +45,7 @@ static struct nouveau_dsm_priv {
+ #define NOUVEAU_DSM_HAS_MUX 0x1
+ #define NOUVEAU_DSM_HAS_OPT 0x2
+
++#ifdef CONFIG_VGA_SWITCHEROO
+ static const char nouveau_dsm_muid[] = {
+ 0xA0, 0xA0, 0x95, 0x9D, 0x60, 0x00, 0x48, 0x4D,
+ 0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4,
+@@ -298,6 +299,10 @@ void nouveau_unregister_dsm_handler(void
+ {
+ vga_switcheroo_unregister_handler();
+ }
++#else
++void nouveau_register_dsm_handler(void) {}
++void nouveau_unregister_dsm_handler(void) {}
++#endif
+
+ /* retrieve the ROM in 4k blocks */
+ static int nouveau_rom_call(acpi_handle rom_handle, uint8_t *bios,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/qla4xx-missing-readq-definition new/patches.rpmify/qla4xx-missing-readq-definition
--- old/patches.rpmify/qla4xx-missing-readq-definition 2011-04-13 03:30:36.000000000 +0200
+++ new/patches.rpmify/qla4xx-missing-readq-definition 1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-From: Jeff Mahoney
-Subject: qla4xxx: add workaround for missing readq/writeq
-Patch-mainline: submitted Sep 21, 2010
-
- Commit f4f5df23 added support for ISP82XX devices but unconditionally
- used readq/writeq without defining it for architectures that don't
- support it natively.
-
- This patch copies the readq/writeq definitions from the qla2xxx driver
- to allow the code to build on e.g. ppc32 hardware.
-
-Signed-off-by: Jeff Mahoney
----
- drivers/scsi/qla4xxx/ql4_nx.h | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
---- a/drivers/scsi/qla4xxx/ql4_nx.h
-+++ b/drivers/scsi/qla4xxx/ql4_nx.h
-@@ -776,4 +776,19 @@ struct crb_addr_pair {
- #define MIU_TEST_AGT_WRDATA_UPPER_LO (0x0b0)
- #define MIU_TEST_AGT_WRDATA_UPPER_HI (0x0b4)
-
-+#ifndef readq
-+static inline u64 readq(void __iomem *addr)
-+{
-+ return readl(addr) | (((u64) readl(addr + 4)) << 32LL);
-+}
-+#endif
-+
-+#ifndef writeq
-+static inline void writeq(u64 val, void __iomem *addr)
-+{
-+ writel(((u32) (val)), (addr));
-+ writel(((u32) (val >> 32)), (addr + 4));
-+}
-+#endif
-+
- #endif
++++++ patches.suse.tar.bz2 ++++++
++++ 15424 lines of diff (skipped)
++++++ patches.xen.tar.bz2 ++++++
++++ 17132 lines of diff (skipped)
++++++ post.sh ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:36.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:36.000000000 +0200
@@ -1,3 +1,6 @@
+# Flag to trigger /etc/init.d/purge-kernels on next reboot (fate#312018)
+touch /boot/do_purge_kernels
+
# It must be possible to install different kernel.rpm packages in parallel.
# But in this post install script, the /boot/vmlinux symlink is replaced.
# On powerpc, the different kernels are for different board/firmware types
++++++ postun.sh ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:36.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:36.000000000 +0200
@@ -1,3 +1,8 @@
+# If a kernel package is removed before the next reboot, we assume that the
+# multiversion variable in /etc/zypp/zypp.conf is not configured and we delete
+# the flag again (fate#312018)
+rm -f /boot/do_purge_kernels
+
wm2=/usr/lib/module-init-tools/weak-modules2
nvr=@SUBPACKAGE@-@RPM_VERSION_RELEASE@
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:36.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:36.000000000 +0200
@@ -33,8 +33,8 @@
# Patches in patches.rpmify are applied to both -vanilla
# and patched flavors.
########################################################
- patches.rpmify/qla4xx-missing-readq-definition
- patches.rpmify/kvm-fix-off-by-one-in-kvm_for_each_vcpu-iteration
+ patches.rpmify/apm-honor-config_apm_cpu_idle-n
+ patches.rpmify/nouveau-make-vga_switcheroo-code-depend-on-vga_switcheroo
########################################################
# kABI consistency patches
@@ -53,7 +53,6 @@
patches.rpmify/rpm-kernel-config
patches.rpmify/split-package
- patches.rpmify/buildhost
patches.rpmify/cloneconfig.diff
########################################################
@@ -63,6 +62,7 @@
patches.suse/supported-flag-enterprise
patches.suse/genksyms-add-override-flag.diff
patches.suse/kconfig-automate-kernel-desktop
+ patches.fixes/no-built-in-root_dev
########################################################
# Simple export additions/removals
@@ -87,7 +87,6 @@
########################################################
# ia64
########################################################
- patches.fixes/ia64-sparse-fixes.diff
########################################################
# i386
@@ -111,6 +110,12 @@
+needs_update patches.arch/kvm-split-the-KVM-pv-ops-support-by-feature
+needs_update patches.arch/kvm-replace-kvm-io-delay-pv-ops-with-linux-magic
+ patches.arch/mtrr_stop_machine_quick_fix.patch
+ patches.arch/kill-__stop_machine.patch
+ patches.arch/reorganize_stop_cpus.patch
+ patches.arch/implement_stop_machine_from_offline_cpu.patch
+ patches.arch/use_stop_machine_for_mtrr_rendezvous.patch
+
########################################################
# x86 MCE/MCA (Machine Check Error/Architecture) extensions
########################################################
@@ -154,6 +159,7 @@
########################################################
patches.arch/s390-message-catalog.diff
patches.arch/s390-message-catalog-fix.diff
+ patches.arch/s390-message-catalog-perl-fix.diff
patches.arch/kmsg-fix-parameter-limitations
patches.suse/s390-Kerntypes.diff
@@ -165,10 +171,10 @@
patches.fixes/grab-swap-token-oops
patches.fixes/remount-no-shrink-dcache
- patches.suse/file-capabilities-disable-by-default.diff
patches.suse/readahead-request-tunables.patch
patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops
+ patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch
########################################################
# IPC patches
@@ -184,8 +190,6 @@
patches.suse/connector-read-mostly
patches.suse/kbd-ignore-gfx.patch
- patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file
-
########################################################
#
# ACPI patches
@@ -291,12 +295,6 @@
########################################################
########################################################
- # novfs
- ########################################################
- patches.suse/novfs-client-module
- patches.fixes/novfs-nwcapi.patch
-
- ########################################################
# other filesystem stuff: richacls
########################################################
patches.suse/0001-vfs-Hooks-for-more-fine-grained-directory-permission.patch
@@ -365,14 +363,11 @@
patches.suse/scsi-error-test-unit-ready-timeout
patches.fixes/scsi-scan-blist-update
- patches.fixes/proc-scsi-scsi-fix.diff
-
patches.fixes/scsi-ibmvscsi-show-config.patch
# bnc#362850
patches.fixes/sd_liberal_28_sense_invalid.diff
patches.fixes/scsi-ibmvscsi-module_alias.patch
- patches.fixes/block-add-proper-state-guards-to-__elv_next_request.patch
########################################################
# DRM/Video
@@ -426,7 +421,6 @@
patches.suse/elousb-2.6.35-api-changes
patches.fixes/input-add-acer-aspire-5710-to-nomux.patch
patches.drivers/input-Add-LED-support-to-Synaptics-device
- patches.fixes/hid-add-noget-quirk-for-symboltec.patch
##########################################################
# Sound
@@ -434,12 +428,15 @@
patches.drivers/alsa-hda-0019-Increase-default-buffer-size
########################################################
+ # Char / serial
+ ########################################################
+ patches.fixes/tty-ldisc-do-not-close-until-there-are-readers.patch
+
+ ########################################################
# Other driver fixes
########################################################
patches.fixes/parport-mutex
- # Allow setting maximum number of raw devices
- patches.suse/raw_device_max_minors_param.diff
patches.suse/no-partition-scan
########################################################
@@ -449,7 +446,6 @@
########################################################
# Suspend/Resume stuff
########################################################
- patches.fixes/PM-Print-a-warning-if-firmware-is-requested-when-tas.patch
########################################################
# device-mapper
@@ -461,6 +457,7 @@
patches.suse/dm-raid45-api-update-remove-dm_put-after-dm_table_get_md
patches.suse/dm-raid45-api-update-no-barriers
patches.suse/dm-raid45-api-2.6.39
+ patches.suse/dm-raid45-api-3.0
patches.fixes/dm-mpath-reattach-dh
patches.suse/dm-mpath-leastpending-path-update
+needs_update patches.suse/dm-mpath-accept-failed-paths
@@ -507,6 +504,7 @@
########################################################
patches.suse/crasher-26.diff
patches.suse/stack-unwind
+ patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops
patches.suse/no-frame-pointer-select
patches.arch/x86_64-unwind-annotations
@@ -556,120 +554,114 @@
# re-basing to a newer xen tree.
#
### both uml framebuffer and xen need this one.
- patches.xen/add-console-use-vt
++xen_needs_update patches.xen/add-console-use-vt
++xen_needs_update
++xen_needs_update # split out patches
++xen_needs_update patches.xen/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
++xen_needs_update patches.xen/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
++xen_needs_update patches.xen/ipv6-no-autoconf
++xen_needs_update patches.xen/pci-guestdev
++xen_needs_update patches.xen/pci-reserve
++xen_needs_update patches.xen/tmem
++xen_needs_update
++xen_needs_update # bulk stuff, new files for xen
++xen_needs_update patches.xen/xen3-auto-xen-arch.diff
++xen_needs_update patches.xen/xen3-auto-xen-drivers.diff
++xen_needs_update patches.xen/xen3-auto-include-xen-interface.diff
++xen_needs_update patches.xen/xen3-auto-blktap2-pvops.diff
++xen_needs_update
++xen_needs_update # kconfig bits for xen
++xen_needs_update patches.xen/xen3-auto-xen-kconfig.diff
++xen_needs_update
++xen_needs_update # common code changes
++xen_needs_update patches.xen/xen3-auto-common.diff
++xen_needs_update patches.xen/xen3-auto-arch-x86.diff
++xen_needs_update patches.xen/xen3-auto-arch-i386.diff
++xen_needs_update patches.xen/xen3-auto-arch-x86_64.diff
++xen_needs_update
++xen_needs_update # fixups due to upstream Xen parts
++xen_needs_update patches.xen/xen3-fixup-xen
++xen_needs_update
++xen_needs_update # newer changeset backports
++xen_needs_update
++xen_needs_update # changes outside arch/{i386,x86_64}/xen
++xen_needs_update patches.xen/xen3-fixup-kconfig
++xen_needs_update patches.xen/xen3-fixup-common
++xen_needs_update patches.xen/xen3-fixup-arch-x86
++xen_needs_update patches.xen/xen3-fixup-blktap2-pvops
++xen_needs_update
++xen_needs_update # ports of other patches
++xen_needs_update patches.xen/xen3-patch-2.6.18
++xen_needs_update patches.xen/xen3-patch-2.6.19
++xen_needs_update patches.xen/xen3-patch-2.6.20
++xen_needs_update patches.xen/xen3-patch-2.6.21
++xen_needs_update patches.xen/xen3-patch-2.6.22
++xen_needs_update patches.xen/xen3-patch-2.6.23
++xen_needs_update patches.xen/xen3-patch-2.6.24
++xen_needs_update patches.xen/xen3-patch-2.6.25
++xen_needs_update patches.xen/xen3-patch-2.6.26
++xen_needs_update patches.xen/xen3-patch-2.6.27
++xen_needs_update patches.xen/xen3-patch-2.6.28
++xen_needs_update patches.xen/xen3-patch-2.6.29
++xen_needs_update patches.xen/xen3-patch-2.6.30
++xen_needs_update patches.xen/xen3-patch-2.6.31
++xen_needs_update patches.xen/xen3-patch-2.6.32
++xen_needs_update patches.xen/xen3-patch-2.6.33
++xen_needs_update patches.xen/xen3-patch-2.6.34
++xen_needs_update patches.xen/xen3-patch-2.6.35
++xen_needs_update patches.xen/xen3-patch-2.6.36
++xen_needs_update patches.xen/xen3-patch-2.6.37
++xen_needs_update patches.xen/xen3-patch-2.6.38
++xen_needs_update patches.xen/xen3-patch-2.6.39
++xen_needs_update patches.xen/xen3-stack-unwind
++xen_needs_update patches.xen/xen3-x86_64-unwind-annotations
++xen_needs_update
++xen_needs_update # bugfixes and enhancements
++xen_needs_update patches.xen/xen-balloon-max-target
++xen_needs_update patches.xen/xen-blkback-bimodal-suse
++xen_needs_update patches.xen/xen-blkif-protocol-fallback-hack
++xen_needs_update patches.xen/xen-blkback-cdrom
++xen_needs_update patches.xen/xen-blktap-modular
++xen_needs_update patches.xen/xen-blktap-write-barriers
++xen_needs_update patches.xen/xen-blktap2-use-after-free
++xen_needs_update patches.xen/xen-blktap2-configurable-nr-devs
++xen_needs_update patches.xen/xen-op-packet
++xen_needs_update patches.xen/xen-blkfront-cdrom
++xen_needs_update patches.xen/xen-kconfig-compat
++xen_needs_update patches.xen/xen-cpufreq-report
++xen_needs_update patches.xen/xen-sys-suspend
++xen_needs_update patches.xen/xen-ipi-per-cpu-irq
++xen_needs_update patches.xen/xen-virq-per-cpu-irq
++xen_needs_update patches.xen/xen-clockevents
++xen_needs_update patches.xen/xen-spinlock-poll-early
++xen_needs_update patches.xen/xen-pcpu-hotplug
++xen_needs_update patches.xen/xen-mem-hotplug
++xen_needs_update patches.xen/xen-swiotlb-heuristics
++xen_needs_update patches.xen/xen-configurable-guest-devices
++xen_needs_update patches.xen/xen-netback-nr-irqs
++xen_needs_update patches.xen/xen-netback-notify-multi
++xen_needs_update patches.xen/xen-netback-generalize
++xen_needs_update patches.xen/xen-netback-multiple-tasklets
++xen_needs_update patches.xen/xen-netback-kernel-threads
++xen_needs_update patches.xen/xen-cxgb3
++xen_needs_update patches.xen/xen-dcdbas
++xen_needs_update patches.xen/xen-floppy
++xen_needs_update patches.xen/xen-sections
++xen_needs_update patches.xen/xen-kzalloc
++xen_needs_update patches.xen/xen-unpriv-build
++xen_needs_update patches.xen/xen-setup-gsi
++xen_needs_update patches.xen/xen-sfc-netfront-gcc46
++xen_needs_update patches.xen/xen-x86-panic-no-reboot
++xen_needs_update patches.xen/xen-x86-dcr-fallback
++xen_needs_update patches.xen/xen-x86-no-lapic
++xen_needs_update patches.xen/xen-x86-pmd-handling
++xen_needs_update patches.xen/xen-x86-bigmem
++xen_needs_update patches.xen/xen-x86-exit-mmap
++xen_needs_update patches.xen/xen-x86-per-cpu-vcpu-info
++xen_needs_update patches.xen/xen-x86-msr-on-pcpu
++xen_needs_update patches.xen/xen-x86_64-pgd-pin
++xen_needs_update patches.xen/xen-x86_64-pgd-alloc-order
++xen_needs_update patches.xen/xen-x86_64-dump-user-pgt
++xen_needs_update patches.xen/xen-x86_64-note-init-p2m
++xen_needs_update patches.xen/xen-x86_64-unmapped-initrd
- # split out patches
- patches.xen/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
- patches.xen/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
- patches.xen/ipv6-no-autoconf
- patches.xen/pci-guestdev
- patches.xen/pci-reserve
-+needs_update-33 patches.xen/sfc-driverlink
-+needs_update-33 patches.xen/sfc-resource-driver
-+needs_update-33 patches.xen/sfc-driverlink-conditional
-+needs_update-33 patches.xen/sfc-external-sram
- patches.xen/tmem
-
- # bulk stuff, new files for xen
- patches.xen/xen3-auto-xen-arch.diff
- patches.xen/xen3-auto-xen-drivers.diff
- patches.xen/xen3-auto-include-xen-interface.diff
- patches.xen/xen3-auto-blktap2-pvops.diff
-
- # kconfig bits for xen
- patches.xen/xen3-auto-xen-kconfig.diff
-
- # common code changes
- patches.xen/xen3-auto-common.diff
- patches.xen/xen3-auto-arch-x86.diff
- patches.xen/xen3-auto-arch-i386.diff
- patches.xen/xen3-auto-arch-x86_64.diff
-
- # fixups due to upstream Xen parts
- patches.xen/xen3-fixup-xen
-
-+needs_update-33 patches.xen/sfc-set-arch
-+needs_update-33 patches.xen/sfc-endianness
-
- # newer changeset backports
-
- # changes outside arch/{i386,x86_64}/xen
- patches.xen/xen3-fixup-kconfig
- patches.xen/xen3-fixup-common
- patches.xen/xen3-fixup-arch-x86
- patches.xen/xen3-fixup-blktap2-pvops
-
- # ports of other patches
- patches.xen/xen3-patch-2.6.18
- patches.xen/xen3-patch-2.6.19
- patches.xen/xen3-patch-2.6.20
- patches.xen/xen3-patch-2.6.21
- patches.xen/xen3-patch-2.6.22
- patches.xen/xen3-patch-2.6.23
- patches.xen/xen3-patch-2.6.24
- patches.xen/xen3-patch-2.6.25
- patches.xen/xen3-patch-2.6.26
- patches.xen/xen3-patch-2.6.27
- patches.xen/xen3-patch-2.6.28
- patches.xen/xen3-patch-2.6.29
- patches.xen/xen3-patch-2.6.30
- patches.xen/xen3-patch-2.6.31
- patches.xen/xen3-patch-2.6.32
- patches.xen/xen3-patch-2.6.33
- patches.xen/xen3-patch-2.6.34
- patches.xen/xen3-patch-2.6.35
- patches.xen/xen3-patch-2.6.36
- patches.xen/xen3-patch-2.6.37
- patches.xen/xen3-patch-2.6.38
- patches.xen/xen3-patch-2.6.39
- patches.xen/xen3-stack-unwind
- patches.xen/xen3-x86_64-unwind-annotations
-
- # bugfixes and enhancements
- patches.xen/xen-balloon-max-target
- patches.xen/xen-blkback-bimodal-suse
- patches.xen/xen-blkif-protocol-fallback-hack
- patches.xen/xen-blkback-cdrom
- patches.xen/xen-blktap-modular
- patches.xen/xen-blktap-write-barriers
- patches.xen/xen-blktap2-use-after-free
- patches.xen/xen-blktap2-configurable-nr-devs
- patches.xen/xen-op-packet
- patches.xen/xen-blkfront-cdrom
- patches.xen/xen-kconfig-compat
- patches.xen/xen-cpufreq-report
- patches.xen/xen-sys-suspend
- patches.xen/xen-ipi-per-cpu-irq
- patches.xen/xen-virq-per-cpu-irq
- patches.xen/xen-clockevents
- patches.xen/xen-spinlock-poll-early
- patches.xen/xen-pcpu-hotplug
- patches.xen/xen-mem-hotplug
- patches.xen/xen-swiotlb-heuristics
- patches.xen/xen-configurable-guest-devices
- patches.xen/xen-netback-nr-irqs
- patches.xen/xen-netback-notify-multi
- patches.xen/xen-netback-generalize
- patches.xen/xen-netback-multiple-tasklets
- patches.xen/xen-netback-kernel-threads
- patches.xen/xen-cxgb3
- patches.xen/xen-dcdbas
- patches.xen/xen-floppy
- patches.xen/xen-sections
- patches.xen/xen-kzalloc
- patches.xen/xen-unpriv-build
- patches.xen/xen-setup-gsi
- patches.xen/xen-sfc-netfront-gcc46
- patches.xen/xen-x86-panic-no-reboot
- patches.xen/xen-x86-dcr-fallback
- patches.xen/xen-x86-no-lapic
- patches.xen/xen-x86-pmd-handling
- patches.xen/xen-x86-bigmem
- patches.xen/xen-x86-exit-mmap
- patches.xen/xen-x86-per-cpu-vcpu-info
- patches.xen/xen-x86-msr-on-pcpu
- patches.xen/xen-x86_64-pgd-pin
- patches.xen/xen-x86_64-pgd-alloc-order
- patches.xen/xen-x86_64-dump-user-pgt
- patches.xen/xen-x86_64-note-init-p2m
- patches.xen/xen-x86_64-unmapped-initrd
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.uStvX1/_old 2011-07-04 08:57:36.000000000 +0200
+++ /var/tmp/diff_new_pack.uStvX1/_new 2011-07-04 08:57:36.000000000 +0200
@@ -1,3 +1,3 @@
-2011-05-23 13:35:38 +0200
-GIT Revision: 3b6edffc98f47f5f431aaf96754bb5a4b263b759
+2011-06-29 15:14:02 +0200
+GIT Revision: e7003259e1bb642a167f70c787b240cc90bbd148
GIT Branch: master
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org