Hello community,
here is the log from the commit of package kernel-source for openSUSE:Factory
checked in at Tue Feb 22 14:05:05 CET 2011.
--------
--- kernel-source/kernel-debug.changes 2011-02-09 14:56:46.000000000 +0100
+++ /mounts/work_src_done/STABLE/kernel-source/kernel-debug.changes 2011-02-22 07:04:33.000000000 +0100
@@ -1,0 +2,145 @@
+Mon Feb 21 10:34:10 CET 2011 - tiwai@suse.de
+
+- ALSA: caiaq - Fix possible string-buffer overflow (bnc#672499,
+ CVE-2011-0712).
+- commit f6a72cc
+
+-------------------------------------------------------------------
+Sun Feb 20 11:36:45 CET 2011 - jslaby@suse.cz
+
+- Revert "tpm_tis: Use timeouts returned from TPM" (bnc#673619).
+- commit d991856
+
+-------------------------------------------------------------------
+Fri Feb 18 22:57:09 CET 2011 - rjw@suse.de
+
+- ACPI / debugfs: Fix buffer overflows, double free (bnc#666095).
+- commit da9d3a8
+
+-------------------------------------------------------------------
+Fri Feb 18 11:32:28 CET 2011 - jslaby@suse.cz
+
+- Update to 2.6.37.1:
+ - obsoletes:
+ - patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch
+ - patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays
+ - patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP
+ - patches.fixes/calibrate-jiffy-overflow
+ - patches.fixes/fix-ata-panic-with-ata_id
+ - patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch
+ - patches.fixes/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch
+ - patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash
+ - patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch
+- Refresh patches.suse/SoN-08-mm-page_alloc-emerg.patch.
+- Refresh patches.suse/SoN-16-netvm-reserve-inet.patch.
+- Refresh patches.suse/dm-mpath-accept-failed-paths.
+- Refresh patches.suse/sched-automated-per-session-task-groups.
+- Refresh patches.xen/xen3-auto-common.diff.
+- Refresh patches.xen/xen3-fixup-common.
+- Refresh patches.xen/xen3-patch-2.6.37.
+- commit a638bb4
+
+-------------------------------------------------------------------
+Fri Feb 18 07:44:54 CET 2011 - sjayaraman@suse.de
+
+- Refresh patches.suse/SoN-06-mm-kmem_estimate_pages.patch to accomodate
+ an upstream change.
+- commit a4e281e
+
+-------------------------------------------------------------------
+Thu Feb 17 11:58:18 CET 2011 - rjw@suse.de
+
+- PNP / ACPI: Use DEVICE_ACPI_HANDLE() for device ACPI handle access (bnc#434742).
+- commit a73834f
+
+-------------------------------------------------------------------
+Thu Feb 17 01:15:14 CET 2011 - gregkh@suse.de
+
+- Update config files.
+ disable CONFIG_DRM_VMWGFX. (bnc#606458)
+- commit 409d54e
+
+-------------------------------------------------------------------
+Wed Feb 16 16:25:24 CET 2011 - jbeulich@novell.com
+
+- patches.arch/x86_64-unwind-annotations: Re-add change lost during
+ initial 2.6.37 merge.
+- commit 7a5313d
+
+-------------------------------------------------------------------
+Wed Feb 16 14:31:03 CET 2011 - tiwai@suse.de
+
+- ALSA: HDA: Add Lenovo vendor quirk for Conexant 205xx
+ (bnc#670946).
+- commit b3bc287
+
+-------------------------------------------------------------------
+Tue Feb 15 22:50:02 CET 2011 - jeffm@suse.com
+
+- tty: add 'active' sysfs attribute to tty0 and console device.
+- commit 7ae6e9a
+
+-------------------------------------------------------------------
+Tue Feb 15 17:14:14 CET 2011 - jslaby@suse.cz
+
+- Revert "ath9k: Fix a DMA latency issue for Intel Pinetrail
+ platforms." (bnc#667793).
+- Revert "ath9k: Remove pm_qos request after hw
+ unregister." (bnc#667793).
+- Revert "ath9k: use per-device struct for pm_qos_* operations"
+ (bnc#667793).
+- commit b2849f6
+
+-------------------------------------------------------------------
+Tue Feb 15 10:59:55 CET 2011 - jack@suse.cz
+
+- bridge: Replace mp->mglist hlist with a bool (bnc#653547).
+- bridge: Fix timer typo that may render snooping less effective
+ (bnc#653547).
+- bridge: Fix mglist corruption that leads to memory corruption
+ (bnc#653547).
+- commit a70e5ca
+
+-------------------------------------------------------------------
+Mon Feb 14 13:42:21 CET 2011 - mmarek@suse.cz
+
+- Move spec file templates and helper scripts to a separate branch, to
+ ease synchronizing these files among master, vanilla and linux-next.
+- commit 411abb8
+
+-------------------------------------------------------------------
+Mon Feb 14 13:20:47 CET 2011 - mmarek@suse.cz
+
+- Delete a couple of obsolete kabi and other scripts from misc/:
+- Delete misc/checkmod.
+- Delete misc/collect_ksyms.
+- Delete misc/diff-the-xfs-cvs.
+- Delete misc/ksyms.py.
+- Delete misc/mangle-ifdef.py.
+- Delete misc/obsolete-module-aliases.
+- Delete misc/testmodule.
+- commit 3dd255b
+
+-------------------------------------------------------------------
+Mon Feb 14 13:19:22 CET 2011 - mmarek@suse.cz
+
+- rpm/kernel-source.spec.in: Delete misc/extract-modaliases, the code
+ was merged into rpm's find-supplements script.
+- Delete rpm/check-build.sh, not needed anymore.
+- commit bd6fa48
+
+-------------------------------------------------------------------
+Thu Feb 10 02:55:41 CET 2011 - jeffm@suse.com
+
+- flexcop: fix registering braindead stupid names (brc#575873
+ bnc#661429).
+- commit 2e98bfc
+
+-------------------------------------------------------------------
+Wed Feb 9 22:52:29 CET 2011 - gregkh@suse.de
+
+- Staging: samsung-laptop: add support for lots of laptops
+ (bnc#661682).
+- commit c6d0dc9
+
+-------------------------------------------------------------------
@@ -96,0 +242,7 @@
+
+-------------------------------------------------------------------
+Wed Feb 2 17:34:01 CET 2011 - jeffm@suse.com
+
+- patches.fixes/reiserfs-xattr-crash-fix: fix crash
+ during failed mount (bnc#668878)
+- commit de24d15
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-ec2.changes: same change
kernel-net.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
kernel-vmi.changes: same change
kernel-xen.changes: same change
calling whatdependson for head-i586
Old:
----
check-build.sh
extract-modaliases
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -18,7 +18,7 @@
# norootforbuild
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -35,7 +35,7 @@
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
@@ -55,8 +55,8 @@
Name: kernel-debug
Summary: A Debug Version of the Kernel
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -158,7 +158,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
kernel-default.spec: same change
kernel-desktop.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -17,15 +17,15 @@
# norootforbuild
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
Name: kernel-docs
Summary: Kernel Documentation
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
++++++ kernel-ec2.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -18,7 +18,7 @@
# norootforbuild
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -35,7 +35,7 @@
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
@@ -55,8 +55,8 @@
Name: kernel-ec2
Summary: The Amazon EC2 Xen Kernel
-Version: 2.6.37
-Release: 8
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -154,7 +154,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
++++++ kernel-net.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -18,7 +18,7 @@
# norootforbuild
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -35,7 +35,7 @@
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
@@ -55,8 +55,8 @@
Name: kernel-net
Summary: Minimal kernel with disk and net support
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -154,7 +154,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
kernel-pae.spec: same change
kernel-ppc64.spec: same change
kernel-ps3.spec: same change
kernel-s390.spec: same change
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -19,7 +19,7 @@
# icecream 0
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%define vanilla_only 0
@@ -29,8 +29,8 @@
Name: kernel-source
Summary: The Linux Kernel Sources
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -68,7 +68,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
@@ -107,7 +106,7 @@
# Source is only complete with devel files.
Requires: kernel-devel = %version-%release
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%define symbols %(set -- $([ -e %_sourcedir/extra-symbols ] && cat %_sourcedir/extra-symbols) ; echo $*)
%define variant_symbols %(case %name in (*-rt) echo "RT" ;; esac)
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -23,8 +23,8 @@
Name: kernel-syms
Summary: Kernel Symbol Versions (modversions)
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%define kernel_source_release %(LC_ALL=C rpm -q kernel-devel%variant-%version --qf "%{RELEASE}" | grep -v 'not installed' || echo 0)
++++++ kernel-trace.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -18,7 +18,7 @@
# norootforbuild
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -35,7 +35,7 @@
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
@@ -55,8 +55,8 @@
Name: kernel-trace
Summary: The Standard Kernel with Tracing Features
-Version: 2.6.37
-Release: 11
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -166,7 +166,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
kernel-vanilla.spec: same change
kernel-vmi.spec: same change
++++++ kernel-xen.spec ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:57.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:57.000000000 +0100
@@ -18,7 +18,7 @@
# norootforbuild
%define srcversion 2.6.37
-%define patchversion 2.6.37
+%define patchversion 2.6.37.1
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
@@ -35,7 +35,7 @@
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-obj
-%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,extract-modaliases,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
+%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,check-supported-list,group-source-files.pl,find-provides,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,configtool.pl,log.sh})
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
@@ -55,8 +55,8 @@
Name: kernel-xen
Summary: The Xen Kernel
-Version: 2.6.37
-Release: 8
+Version: 2.6.37.1
+Release: 1
%if %using_buildservice
%else
%endif
@@ -154,7 +154,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/debug new/config/i386/debug
--- old/config/i386/debug 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/debug 2011-02-17 01:15:14.000000000 +0100
@@ -4821,7 +4821,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/default new/config/i386/default
--- old/config/i386/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/default 2011-02-17 01:15:14.000000000 +0100
@@ -4793,7 +4793,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/desktop new/config/i386/desktop
--- old/config/i386/desktop 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/desktop 2011-02-17 01:15:14.000000000 +0100
@@ -4661,7 +4661,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/pae new/config/i386/pae
--- old/config/i386/pae 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/pae 2011-02-17 01:15:14.000000000 +0100
@@ -4668,7 +4668,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/trace new/config/i386/trace
--- old/config/i386/trace 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/trace 2011-02-17 01:15:14.000000000 +0100
@@ -4668,7 +4668,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/vanilla new/config/i386/vanilla
--- old/config/i386/vanilla 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/vanilla 2011-02-17 01:15:14.000000000 +0100
@@ -4776,7 +4776,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/vmi new/config/i386/vmi
--- old/config/i386/vmi 2011-01-21 02:42:39.000000000 +0100
+++ new/config/i386/vmi 2011-02-17 01:15:14.000000000 +0100
@@ -4668,7 +4668,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ia64/debug new/config/ia64/debug
--- old/config/ia64/debug 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ia64/debug 2011-02-17 01:15:14.000000000 +0100
@@ -3893,7 +3893,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ia64/default new/config/ia64/default
--- old/config/ia64/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ia64/default 2011-02-17 01:15:14.000000000 +0100
@@ -3875,7 +3875,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ia64/trace new/config/ia64/trace
--- old/config/ia64/trace 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ia64/trace 2011-02-17 01:15:14.000000000 +0100
@@ -3881,7 +3881,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ia64/vanilla new/config/ia64/vanilla
--- old/config/ia64/vanilla 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ia64/vanilla 2011-02-17 01:15:14.000000000 +0100
@@ -3867,7 +3867,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc/default new/config/ppc/default
--- old/config/ppc/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc/default 2011-02-17 01:15:14.000000000 +0100
@@ -3789,7 +3789,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc/ppc64 new/config/ppc/ppc64
--- old/config/ppc/ppc64 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc/ppc64 2011-02-17 01:15:14.000000000 +0100
@@ -3761,7 +3761,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc/vanilla new/config/ppc/vanilla
--- old/config/ppc/vanilla 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc/vanilla 2011-02-17 01:15:14.000000000 +0100
@@ -3789,7 +3789,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/debug new/config/ppc64/debug
--- old/config/ppc64/debug 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc64/debug 2011-02-17 01:15:14.000000000 +0100
@@ -3769,7 +3769,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc64/default 2011-02-17 01:15:14.000000000 +0100
@@ -3758,7 +3758,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/ppc64 new/config/ppc64/ppc64
--- old/config/ppc64/ppc64 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc64/ppc64 2011-02-17 01:15:14.000000000 +0100
@@ -3824,7 +3824,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/trace new/config/ppc64/trace
--- old/config/ppc64/trace 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc64/trace 2011-02-17 01:15:14.000000000 +0100
@@ -3824,7 +3824,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/vanilla new/config/ppc64/vanilla
--- old/config/ppc64/vanilla 2011-01-21 02:42:39.000000000 +0100
+++ new/config/ppc64/vanilla 2011-02-17 01:15:14.000000000 +0100
@@ -3749,7 +3749,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/sparc64/default new/config/sparc64/default
--- old/config/sparc64/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/sparc64/default 2011-02-17 01:15:14.000000000 +0100
@@ -4066,7 +4066,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
# CONFIG_DRM_NOUVEAU is not set
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/debug new/config/x86_64/debug
--- old/config/x86_64/debug 2011-01-21 02:42:39.000000000 +0100
+++ new/config/x86_64/debug 2011-02-17 01:15:14.000000000 +0100
@@ -4567,7 +4567,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default
--- old/config/x86_64/default 2011-01-21 02:42:39.000000000 +0100
+++ new/config/x86_64/default 2011-02-17 01:15:14.000000000 +0100
@@ -4578,7 +4578,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/desktop new/config/x86_64/desktop
--- old/config/x86_64/desktop 2011-01-21 02:42:39.000000000 +0100
+++ new/config/x86_64/desktop 2011-02-17 01:15:14.000000000 +0100
@@ -4571,7 +4571,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/trace new/config/x86_64/trace
--- old/config/x86_64/trace 2011-01-21 02:42:39.000000000 +0100
+++ new/config/x86_64/trace 2011-02-17 01:15:14.000000000 +0100
@@ -4578,7 +4578,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/vanilla new/config/x86_64/vanilla
--- old/config/x86_64/vanilla 2011-01-21 02:42:39.000000000 +0100
+++ new/config/x86_64/vanilla 2011-02-17 01:15:14.000000000 +0100
@@ -4559,7 +4559,7 @@
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
+# CONFIG_DRM_VMWGFX is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
# CONFIG_DRM_NOUVEAU_DEBUG is not set
++++++ kernel-source.spec.in ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:51:58.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:51:58.000000000 +0100
@@ -69,7 +69,6 @@
Source44: find-provides
Source45: split-modules
Source46: modversions
-Source47: extract-modaliases
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
++++++ minmem ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:52:00.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:52:00.000000000 +0100
@@ -1 +1 @@
-2096000
+1048576
++++++ needed_space_in_mb ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:52:00.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:52:00.000000000 +0100
@@ -1 +1 @@
-6000
+6144
++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/acpi-debugfs-fix-buffer-overflows-double-free.patch new/patches.arch/acpi-debugfs-fix-buffer-overflows-double-free.patch
--- old/patches.arch/acpi-debugfs-fix-buffer-overflows-double-free.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/acpi-debugfs-fix-buffer-overflows-double-free.patch 2011-02-18 22:57:09.000000000 +0100
@@ -0,0 +1,75 @@
+From: Vasiliy Kulikov
+Subject: ACPI / debugfs: Fix buffer overflows, double free
+Patch-mainline: No
+References: bnc#666095
+
+File position is not controlled, it may lead to overwrites of arbitrary
+kernel memory. Also the code may kfree() the same pointer multiple
+times.
+
+One more flaw is still present: if multiple processes open the file then
+all 3 static variables are shared, leading to various race conditions.
+They should be moved to file->private_data.
+
+Signed-off-by: Vasiliy Kulikov
+Reviewed-by: WANG Cong
+Reviewed-by: Eugene Teo
+Signed-off-by: Rafael J. Wysocki
+---
+drivers/acpi/debugfs.c | 20 ++++++++++++++------
+ drivers/acpi/debugfs.c | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+Index: linux-2.6.37-openSUSE-11.4/drivers/acpi/debugfs.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/acpi/debugfs.c
++++ linux-2.6.37-openSUSE-11.4/drivers/acpi/debugfs.c
+@@ -26,7 +26,9 @@ static ssize_t cm_write(struct file *fil
+ size_t count, loff_t *ppos)
+ {
+ static char *buf;
+- static int uncopied_bytes;
++ static u32 max_size;
++ static u32 uncopied_bytes;
++
+ struct acpi_table_header table;
+ acpi_status status;
+
+@@ -37,19 +39,24 @@ static ssize_t cm_write(struct file *fil
+ if (copy_from_user(&table, user_buf,
+ sizeof(struct acpi_table_header)))
+ return -EFAULT;
+- uncopied_bytes = table.length;
+- buf = kzalloc(uncopied_bytes, GFP_KERNEL);
++ uncopied_bytes = max_size = table.length;
++ buf = kzalloc(max_size, GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+ }
+
+- if (uncopied_bytes < count) {
+- kfree(buf);
++ if (buf == NULL)
++ return -EINVAL;
++
++ if ((*ppos > max_size) ||
++ (*ppos + count > max_size) ||
++ (*ppos + count < count) ||
++ (count > uncopied_bytes))
+ return -EINVAL;
+- }
+
+ if (copy_from_user(buf + (*ppos), user_buf, count)) {
+ kfree(buf);
++ buf = NULL;
+ return -EFAULT;
+ }
+
+@@ -59,6 +66,7 @@ static ssize_t cm_write(struct file *fil
+ if (!uncopied_bytes) {
+ status = acpi_install_method(buf);
+ kfree(buf);
++ buf = NULL;
+ if (ACPI_FAILURE(status))
+ return -EINVAL;
+ add_taint(TAINT_OVERRIDDEN_ACPI_TABLE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch new/patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch
--- old/patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch 2011-02-03 21:54:01.000000000 +0100
+++ new/patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-From: Suresh Siddha
-Subject: x86, mtrr: avoid MTRR reprogramming on BP during boot on
-Patch-mainline: Not yet
-References: bnc#623393
-
-Markus Kohm ran into a hard hang regression on an acer aspire 1310, when acpi is
-enabled. git bisect showed the following commit as the bad one that introduced
-the boot regression.
-
- commit d0af9eed5aa91b6b7b5049cae69e5ea956fd85c3
- Author: Suresh Siddha
- Date: Wed Aug 19 18:05:36 2009 -0700
-
- x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init
-
-Because of the UP configuration of that platform, native_smp_prepare_cpus()
-bailed out (in smp_sanity_check()) before doing the set_mtrr_aps_delayed_init()
-
-Further down the boot path, native_smp_cpus_done() will call the delayed
-MTRR initialization for the AP's (mtrr_aps_init()) with mtrr_aps_delayed_init
-not set. This resulted in the boot processor reprogramming its MTRR's to
-the values seen during the start of the OS boot. While this is not needed
-ideally, this shouldn't have caused any side-effects. This is because the
-reprogramming of MTRR's (set_mtrr_state() that gets called via set_mtrr()) will
-check if the live register contents are different from what is being
-asked to write and will do the actual write only if they are different.
-
-BP's mtrr state is read during the start of the OS boot and typically nothing
-would have changed when we ask to reprogram it on BP again because of the above
-scenario on an UP platform. So on a normal UP platform no reprogramming of BP
-MTRR MSR's happens and all is well.
-
-However, on this platform, bios seems to be modifying the fixed mtrr range
-registers between the start of OS boot and when we double check the live
-registers for reprogramming BP MTRR registers. And as the live registers are
-modified, we end up reprogramming the MTRR's to the state seen during
-the start of the OS boot.
-
-During ACPI initialization, something in the bios (probably smi handler?) don't
-like this fact and results in a hard lockup.
-
-We didn't see this boot hang issue on this platform before the commit
-d0af9eed5aa91b6b7b5049cae69e5ea956fd85c3, because only the AP's (if any)
-will program its MTRR's to the value that BP had at the start of the OS boot.
-
-Fix this issue by checking mtrr_aps_delayed_init before continuing
-further in the mtrr_aps_init(). Now, only AP's (if any) will program
-its MTRR's to the BP values during boot.
-
-Addresses https://bugzilla.novell.com/show_bug.cgi?id=623393
-
- [By the way, this behavior of the bios modifying MTRR's after the start
- of the OS boot is not common and the kernel is not prepared to
- handle this situation well. Irrespective of this issue, during
- suspend/resume, linux kernel will try to reprogram the BP's MTRR values
- to the values seen during the start of the OS boot. So suspend/resume might
- be already broken on this platform for all linux kernel versions.]
-
-Reported-and-bisected-by: Markus Kohm
-Signed-off-by: Suresh Siddha
-Signed-off-by: Rafael J. Wysocki
----
- arch/x86/kernel/cpu/mtrr/main.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-Index: linux-2.6.37-openSUSE-11.4/arch/x86/kernel/cpu/mtrr/main.c
-===================================================================
---- linux-2.6.37-openSUSE-11.4.orig/arch/x86/kernel/cpu/mtrr/main.c
-+++ linux-2.6.37-openSUSE-11.4/arch/x86/kernel/cpu/mtrr/main.c
-@@ -793,13 +793,21 @@ void set_mtrr_aps_delayed_init(void)
- }
-
- /*
-- * MTRR initialization for all AP's
-+ * Delayed MTRR initialization for all AP's
- */
- void mtrr_aps_init(void)
- {
- if (!use_intel())
- return;
-
-+ /*
-+ * Check if someone has requested the delay of AP MTRR initialization,
-+ * by doing set_mtrr_aps_delayed_init(), prior to this point. If not,
-+ * then we are done.
-+ */
-+ if (!mtrr_aps_delayed_init)
-+ return;
-+
- set_mtrr(~0U, 0, 0, 0);
- mtrr_aps_delayed_init = false;
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/x86_64-unwind-annotations new/patches.arch/x86_64-unwind-annotations
--- old/patches.arch/x86_64-unwind-annotations 2011-02-03 21:54:01.000000000 +0100
+++ new/patches.arch/x86_64-unwind-annotations 2011-02-18 22:57:09.000000000 +0100
@@ -180,7 +180,18 @@
leaq 8(%rsp), \arg /* pt_regs pointer */
call \func
jmp ptregscall_common
-@@ -1036,7 +1041,7 @@ ENTRY(\sym)
+@@ -789,7 +793,9 @@ END(interrupt)
+ subq $ORIG_RAX-ARGOFFSET+8, %rsp
+ CFI_ADJUST_CFA_OFFSET ORIG_RAX-ARGOFFSET+8
+ call save_args
+- PARTIAL_FRAME 0
++ PARTIAL_FRAME -1 8
++ CFI_REL_OFFSET rbp, 0
++ CFI_DEF_CFA_REGISTER rbp
+ call \func
+ .endm
+
+@@ -1036,7 +1043,7 @@ ENTRY(\sym)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call error_entry
@@ -189,7 +200,7 @@
movq %rsp,%rdi /* pt_regs pointer */
xorl %esi,%esi /* no error code */
call \do_sym
-@@ -1054,6 +1059,7 @@ ENTRY(\sym)
+@@ -1054,6 +1061,7 @@ ENTRY(\sym)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call save_paranoid
@@ -197,7 +208,7 @@
TRACE_IRQS_OFF
movq %rsp,%rdi /* pt_regs pointer */
xorl %esi,%esi /* no error code */
-@@ -1072,6 +1079,7 @@ ENTRY(\sym)
+@@ -1072,6 +1081,7 @@ ENTRY(\sym)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call save_paranoid
@@ -205,7 +216,7 @@
TRACE_IRQS_OFF
movq %rsp,%rdi /* pt_regs pointer */
xorl %esi,%esi /* no error code */
-@@ -1089,7 +1098,7 @@ END(\sym)
+@@ -1089,7 +1100,7 @@ END(\sym)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call error_entry
@@ -214,7 +225,7 @@
movq %rsp,%rdi /* pt_regs pointer */
movq ORIG_RAX(%rsp),%rsi /* get error code */
movq $-1,ORIG_RAX(%rsp) /* no syscall to restart */
-@@ -1107,7 +1116,7 @@ END(\sym)
+@@ -1107,7 +1118,7 @@ END(\sym)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call save_paranoid
@@ -223,7 +234,7 @@
TRACE_IRQS_OFF
movq %rsp,%rdi /* pt_regs pointer */
movq ORIG_RAX(%rsp),%rsi /* get error code */
-@@ -1452,25 +1461,24 @@ END(paranoid_exit)
+@@ -1452,25 +1463,24 @@ END(paranoid_exit)
* returns in "no swapgs flag" in %ebx.
*/
ENTRY(error_entry)
@@ -264,7 +275,7 @@
xorl %ebx,%ebx
testl $3,CS+8(%rsp)
je error_kernelspace
-@@ -1489,6 +1496,7 @@ error_sti:
+@@ -1489,6 +1498,7 @@ error_sti:
* compat mode. Check for these here too.
*/
error_kernelspace:
@@ -272,7 +283,7 @@
incl %ebx
leaq irq_return(%rip),%rcx
cmpq %rcx,RIP+8(%rsp)
-@@ -1532,7 +1542,7 @@ ENTRY(nmi)
+@@ -1532,7 +1544,7 @@ ENTRY(nmi)
subq $ORIG_RAX-R15, %rsp
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
call save_paranoid
++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/alsa-01-caiaq-Fix-possible-string-buffer-overflow new/patches.drivers/alsa-01-caiaq-Fix-possible-string-buffer-overflow
--- old/patches.drivers/alsa-01-caiaq-Fix-possible-string-buffer-overflow 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/alsa-01-caiaq-Fix-possible-string-buffer-overflow 2011-02-21 10:34:10.000000000 +0100
@@ -0,0 +1,50 @@
+From eaae55dac6b64c0616046436b294e69fc5311581 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Mon, 14 Feb 2011 22:45:59 +0100
+Subject: [PATCH] ALSA: caiaq - Fix possible string-buffer overflow
+Git-commit: eaae55dac6b64c0616046436b294e69fc5311581
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
+Patch-mainline: 2.6.38-rc6
+References: bnc#672499, CVE-2011-0712
+
+Use strlcpy() to assure not to overflow the string array sizes by
+too long USB device name string.
+
+Reported-by: Rafa
+Cc: stable
+Signed-off-by: Takashi Iwai
+
+---
+ sound/usb/caiaq/audio.c | 2 +-
+ sound/usb/caiaq/midi.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c
+index 68b9747..66eabaf 100644
+--- a/sound/usb/caiaq/audio.c
++++ b/sound/usb/caiaq/audio.c
+@@ -785,7 +785,7 @@ int snd_usb_caiaq_audio_init(struct snd_usb_caiaqdev *dev)
+ }
+
+ dev->pcm->private_data = dev;
+- strcpy(dev->pcm->name, dev->product_name);
++ strlcpy(dev->pcm->name, dev->product_name, sizeof(dev->pcm->name));
+
+ memset(dev->sub_playback, 0, sizeof(dev->sub_playback));
+ memset(dev->sub_capture, 0, sizeof(dev->sub_capture));
+diff --git a/sound/usb/caiaq/midi.c b/sound/usb/caiaq/midi.c
+index 2f218c7..a1a4708 100644
+--- a/sound/usb/caiaq/midi.c
++++ b/sound/usb/caiaq/midi.c
+@@ -136,7 +136,7 @@ int snd_usb_caiaq_midi_init(struct snd_usb_caiaqdev *device)
+ if (ret < 0)
+ return ret;
+
+- strcpy(rmidi->name, device->product_name);
++ strlcpy(rmidi->name, device->product_name, sizeof(rmidi->name));
+
+ rmidi->info_flags = SNDRV_RAWMIDI_INFO_DUPLEX;
+ rmidi->private_data = device;
+--
+1.7.3.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays new/patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays
--- old/patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays 2011-02-09 13:00:11.000000000 +0100
+++ new/patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays 1970-01-01 01:00:00.000000000 +0100
@@ -1,51 +0,0 @@
-From 70f7db11c45a313b23922cacf248c613c3b2144c Mon Sep 17 00:00:00 2001
-From: Takashi Iwai
-Date: Wed, 2 Feb 2011 17:16:38 +0100
-Subject: [PATCH] ALSA: hda - Fix memory leaks in conexant jack arrays
-Git-commit: 70f7db11c45a313b23922cacf248c613c3b2144c Mon Sep 17 00:00:00 2001
-Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
-Patch-mainline: Submitted
-References: bnc#668929
-
-The Conexant codec driver adds the jack arrays in init callback which
-may be called also in each PM resume. This results in the addition of
-new jack element at each time.
-
-The fix is to check whether the requested jack is already present in
-the array.
-
-Reference: Novell bug 668929
- https://bugzilla.novell.com/show_bug.cgi?id=668929
-
-Cc:
-Signed-off-by: Takashi Iwai
-
----
- sound/pci/hda/patch_conexant.c | 8 +++++++-
- 1 files changed, 7 insertions(+), 1 deletions(-)
-
-diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
-index 7e1ca43..fbe97d3 100644
---- a/sound/pci/hda/patch_conexant.c
-+++ b/sound/pci/hda/patch_conexant.c
-@@ -407,10 +407,16 @@ static int conexant_add_jack(struct hda_codec *codec,
- struct conexant_spec *spec;
- struct conexant_jack *jack;
- const char *name;
-- int err;
-+ int i, err;
-
- spec = codec->spec;
- snd_array_init(&spec->jacks, sizeof(*jack), 32);
-+
-+ jack = spec->jacks.list;
-+ for (i = 0; i < spec->jacks.used; i++, jack++)
-+ if (jack->nid == nid)
-+ return 0 ; /* already present */
-+
- jack = snd_array_new(&spec->jacks);
- name = (type == SND_JACK_HEADPHONE) ? "Headphone" : "Mic" ;
-
---
-1.7.3.4
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP new/patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP
--- old/patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP 2011-02-09 13:00:11.000000000 +0100
+++ new/patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-From 11839aed21881d7edd65dd79f22a8eb18426f672 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai
-Date: Tue, 8 Feb 2011 17:25:49 +0100
-Subject: [PATCH] ALSA: hda - Fix missing CA initialization for HDMI/DP
-Git-commit: 11839aed21881d7edd65dd79f22a8eb18426f672
-Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
-Patch-mainline: Submitted
-References: bnc#670577
-
-The commit 53d7d69d8ffdfa60c5b66cc2e9ee0774aaaef5c0
- ALSA: hdmi - support infoframe for DisplayPort
-dropped the initialization of CA field accidentally.
-This resulted in only two-channel LPCM mode on Nvidia machines.
-
-Reference: kernel bug 28592
- https://bugzilla.kernel.org/show_bug.cgi?id=28592
-
-Signed-off-by: Takashi Iwai
-
----
- sound/pci/hda/patch_hdmi.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/sound/pci/hda/patch_hdmi.c
-+++ b/sound/pci/hda/patch_hdmi.c
-@@ -637,6 +637,7 @@
- hdmi_ai->ver = 0x01;
- hdmi_ai->len = 0x0a;
- hdmi_ai->CC02_CT47 = channels - 1;
-+ hdmi_ai->CA = ca;
- hdmi_checksum_audio_infoframe(hdmi_ai);
- } else if (spec->sink_eld[i].conn_type == 1) { /* DisplayPort */
- struct dp_audio_infoframe *dp_ai;
-@@ -646,6 +647,7 @@
- dp_ai->len = 0x1b;
- dp_ai->ver = 0x11 << 2;
- dp_ai->CC02_CT47 = channels - 1;
-+ dp_ai->CA = ca;
- } else {
- snd_printd("HDMI: unknown connection type at pin %d\n",
- pin_nid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/alsa-hda-0003-Add-Lenovo-vendor-quirk-for-Conexant-205xx new/patches.drivers/alsa-hda-0003-Add-Lenovo-vendor-quirk-for-Conexant-205xx
--- old/patches.drivers/alsa-hda-0003-Add-Lenovo-vendor-quirk-for-Conexant-205xx 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/alsa-hda-0003-Add-Lenovo-vendor-quirk-for-Conexant-205xx 2011-02-21 10:34:10.000000000 +0100
@@ -0,0 +1,42 @@
+From 22f21d51bb20e7aef1167b71c4c3c0ff0efa9bf6 Mon Sep 17 00:00:00 2001
+From: David Henningsson
+Date: Fri, 7 Jan 2011 07:53:39 +0100
+Subject: [PATCH] ALSA: HDA: Add Lenovo vendor quirk for Conexant 205xx
+Git-commit: 22f21d51bb20e7aef1167b71c4c3c0ff0efa9bf6
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
+Patch-mainline: 2.6.38-rc1
+References: bnc#670946
+
+Buglink: http://bugs.launchpad.net/bugs/689036
+
+Many new Lenovos need the ideapad quirk. Also, since the
+auto parser for this chip is far from optimal, the regression
+risk is low (although not zero).
+
+Signed-off-by: David Henningsson
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_conexant.c | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+--- a/sound/pci/hda/patch_conexant.c
++++ b/sound/pci/hda/patch_conexant.c
+@@ -3114,16 +3114,9 @@
+ CXT5066_LAPTOP),
+ SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT5066_OLPC_XO_1_5),
+ SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400s", CXT5066_THINKPAD),
+- SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD),
+ SND_PCI_QUIRK(0x17aa, 0x21c5, "Thinkpad Edge 13", CXT5066_THINKPAD),
+- SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD),
+- SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD),
+- SND_PCI_QUIRK(0x17aa, 0x21c8, "Thinkpad Edge 11", CXT5066_IDEAPAD),
+ SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
+- SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD),
+- SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD),
+- SND_PCI_QUIRK(0x17aa, 0x3938, "Lenovo G series (AMD)", CXT5066_IDEAPAD),
+- SND_PCI_QUIRK(0x17aa, 0x3a0d, "ideapad", CXT5066_IDEAPAD),
++ SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo", CXT5066_IDEAPAD), /* Fallback for Lenovos without dock mic */
+ {}
+ };
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/staging-samsung-laptop-add-support-for-lots-of-laptops.patch new/patches.drivers/staging-samsung-laptop-add-support-for-lots-of-laptops.patch
--- old/patches.drivers/staging-samsung-laptop-add-support-for-lots-of-laptops.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/staging-samsung-laptop-add-support-for-lots-of-laptops.patch 2011-02-21 10:34:10.000000000 +0100
@@ -0,0 +1,707 @@
+From foo@baz Wed Feb 9 13:35:10 PST 2011
+Date: Wed, 09 Feb 2011 13:35:10 -0800
+To: Greg KH
+From: Greg Kroah-Hartman
+Subject: Staging: samsung-laptop: add support for lots of laptops
+References: bnc#661682
+Patch-mainline: 2.6.39
+
+This is a backport of the upstream version of the driver that added support for
+all samsung laptop devices.
+
+Signed-off-by: Greg Kroah-Hartman
+
+diff --git a/drivers/staging/samsung-laptop/samsung-laptop.c b/drivers/staging/samsung-laptop/samsung-laptop.c
+index 701e8d5..51ec621 100644
+--- a/drivers/staging/samsung-laptop/samsung-laptop.c
++++ b/drivers/staging/samsung-laptop/samsung-laptop.c
+@@ -1,5 +1,5 @@
+ /*
+- * Samsung N130 Laptop driver
++ * Samsung Laptop driver
+ *
+ * Copyright (C) 2009 Greg Kroah-Hartman (gregkh@suse.de)
+ * Copyright (C) 2009 Novell Inc.
+@@ -33,51 +33,6 @@
+ */
+ #define MAX_BRIGHT 0x07
+
+-/* Brightness is 0 - 8, as described above. Value 0 is for the BIOS to use */
+-#define GET_BRIGHTNESS 0x00
+-#define SET_BRIGHTNESS 0x01
+-
+-/* first byte:
+- * 0x00 - wireless is off
+- * 0x01 - wireless is on
+- * second byte:
+- * 0x02 - 3G is off
+- * 0x03 - 3G is on
+- * TODO, verify 3G is correct, that doesn't seem right...
+- */
+-#define GET_WIRELESS_BUTTON 0x02
+-#define SET_WIRELESS_BUTTON 0x03
+-
+-/* 0 is off, 1 is on */
+-#define GET_BACKLIGHT 0x04
+-#define SET_BACKLIGHT 0x05
+-
+-/*
+- * 0x80 or 0x00 - no action
+- * 0x81 - recovery key pressed
+- */
+-#define GET_RECOVERY_METHOD 0x06
+-#define SET_RECOVERY_METHOD 0x07
+-
+-/* 0 is low, 1 is high */
+-#define GET_PERFORMANCE_LEVEL 0x08
+-#define SET_PERFORMANCE_LEVEL 0x09
+-
+-/*
+- * Tell the BIOS that Linux is running on this machine.
+- * 81 is on, 80 is off
+- */
+-#define SET_LINUX 0x0a
+-
+-
+-#define MAIN_FUNCTION 0x4c49
+-
+-#define SABI_HEADER_PORT 0x00
+-#define SABI_HEADER_RE_MEM 0x02
+-#define SABI_HEADER_IFACEFUNC 0x03
+-#define SABI_HEADER_EN_MEM 0x04
+-#define SABI_HEADER_DATA_OFFSET 0x05
+-#define SABI_HEADER_DATA_SEGMENT 0x07
+
+ #define SABI_IFACE_MAIN 0x00
+ #define SABI_IFACE_SUB 0x02
+@@ -89,6 +44,173 @@ struct sabi_retval {
+ u8 retval[20];
+ };
+
++struct sabi_header_offsets {
++ u8 port;
++ u8 re_mem;
++ u8 iface_func;
++ u8 en_mem;
++ u8 data_offset;
++ u8 data_segment;
++};
++
++struct sabi_commands {
++ /*
++ * Brightness is 0 - 8, as described above.
++ * Value 0 is for the BIOS to use
++ */
++ u8 get_brightness;
++ u8 set_brightness;
++
++ /*
++ * first byte:
++ * 0x00 - wireless is off
++ * 0x01 - wireless is on
++ * second byte:
++ * 0x02 - 3G is off
++ * 0x03 - 3G is on
++ * TODO, verify 3G is correct, that doesn't seem right...
++ */
++ u8 get_wireless_button;
++ u8 set_wireless_button;
++
++ /* 0 is off, 1 is on */
++ u8 get_backlight;
++ u8 set_backlight;
++
++ /*
++ * 0x80 or 0x00 - no action
++ * 0x81 - recovery key pressed
++ */
++ u8 get_recovery_mode;
++ u8 set_recovery_mode;
++
++ /*
++ * on seclinux: 0 is low, 1 is high,
++ * on swsmi: 0 is normal, 1 is silent, 2 is turbo
++ */
++ u8 get_performance_level;
++ u8 set_performance_level;
++
++ /*
++ * Tell the BIOS that Linux is running on this machine.
++ * 81 is on, 80 is off
++ */
++ u8 set_linux;
++};
++
++struct sabi_performance_level {
++ const char *name;
++ u8 value;
++};
++
++struct sabi_config {
++ const char *test_string;
++ u16 main_function;
++ struct sabi_header_offsets header_offsets;
++ struct sabi_commands commands;
++ struct sabi_performance_level performance_levels[4];
++};
++
++static struct sabi_config sabi_configs[] = {
++ {
++ .test_string = "SECLINUX",
++
++ .main_function = 0x4c59,
++
++ .header_offsets = {
++ .port = 0x00,
++ .re_mem = 0x02,
++ .iface_func = 0x03,
++ .en_mem = 0x04,
++ .data_offset = 0x05,
++ .data_segment = 0x07,
++ },
++
++ .commands = {
++ .get_brightness = 0x00,
++ .set_brightness = 0x01,
++
++ .get_wireless_button = 0x02,
++ .set_wireless_button = 0x03,
++
++ .get_backlight = 0x04,
++ .set_backlight = 0x05,
++
++ .get_recovery_mode = 0x06,
++ .set_recovery_mode = 0x07,
++
++ .get_performance_level = 0x08,
++ .set_performance_level = 0x09,
++
++ .set_linux = 0x0a,
++ },
++
++ .performance_levels = {
++ {
++ .name = "silent",
++ .value = 0,
++ },
++ {
++ .name = "normal",
++ .value = 1,
++ },
++ { },
++ },
++ },
++ {
++ .test_string = "SwSmi@",
++
++ .main_function = 0x5843,
++
++ .header_offsets = {
++ .port = 0x00,
++ .re_mem = 0x04,
++ .iface_func = 0x02,
++ .en_mem = 0x03,
++ .data_offset = 0x05,
++ .data_segment = 0x07,
++ },
++
++ .commands = {
++ .get_brightness = 0x10,
++ .set_brightness = 0x11,
++
++ .get_wireless_button = 0x12,
++ .set_wireless_button = 0x13,
++
++ .get_backlight = 0x2d,
++ .set_backlight = 0x2e,
++
++ .get_recovery_mode = 0xff,
++ .set_recovery_mode = 0xff,
++
++ .get_performance_level = 0x31,
++ .set_performance_level = 0x32,
++
++ .set_linux = 0xff,
++ },
++
++ .performance_levels = {
++ {
++ .name = "normal",
++ .value = 0,
++ },
++ {
++ .name = "silent",
++ .value = 1,
++ },
++ {
++ .name = "overclock",
++ .value = 2,
++ },
++ { },
++ },
++ },
++ { },
++};
++
++static struct sabi_config *sabi_config;
++
+ static void __iomem *sabi;
+ static void __iomem *sabi_iface;
+ static void __iomem *f0000_segment;
+@@ -109,21 +231,21 @@ MODULE_PARM_DESC(debug, "Debug enabled or not");
+ static int sabi_get_command(u8 command, struct sabi_retval *sretval)
+ {
+ int retval = 0;
+- u16 port = readw(sabi + SABI_HEADER_PORT);
++ u16 port = readw(sabi + sabi_config->header_offsets.port);
+
+ mutex_lock(&sabi_mutex);
+
+ /* enable memory to be able to write to it */
+- outb(readb(sabi + SABI_HEADER_EN_MEM), port);
++ outb(readb(sabi + sabi_config->header_offsets.en_mem), port);
+
+ /* write out the command */
+- writew(MAIN_FUNCTION, sabi_iface + SABI_IFACE_MAIN);
++ writew(sabi_config->main_function, sabi_iface + SABI_IFACE_MAIN);
+ writew(command, sabi_iface + SABI_IFACE_SUB);
+ writeb(0, sabi_iface + SABI_IFACE_COMPLETE);
+- outb(readb(sabi + SABI_HEADER_IFACEFUNC), port);
++ outb(readb(sabi + sabi_config->header_offsets.iface_func), port);
+
+ /* write protect memory to make it safe */
+- outb(readb(sabi + SABI_HEADER_RE_MEM), port);
++ outb(readb(sabi + sabi_config->header_offsets.re_mem), port);
+
+ /* see if the command actually succeeded */
+ if (readb(sabi_iface + SABI_IFACE_COMPLETE) == 0xaa &&
+@@ -156,22 +278,22 @@ exit:
+ static int sabi_set_command(u8 command, u8 data)
+ {
+ int retval = 0;
+- u16 port = readw(sabi + SABI_HEADER_PORT);
++ u16 port = readw(sabi + sabi_config->header_offsets.port);
+
+ mutex_lock(&sabi_mutex);
+
+ /* enable memory to be able to write to it */
+- outb(readb(sabi + SABI_HEADER_EN_MEM), port);
++ outb(readb(sabi + sabi_config->header_offsets.en_mem), port);
+
+ /* write out the command */
+- writew(MAIN_FUNCTION, sabi_iface + SABI_IFACE_MAIN);
++ writew(sabi_config->main_function, sabi_iface + SABI_IFACE_MAIN);
+ writew(command, sabi_iface + SABI_IFACE_SUB);
+ writeb(0, sabi_iface + SABI_IFACE_COMPLETE);
+ writeb(data, sabi_iface + SABI_IFACE_DATA);
+- outb(readb(sabi + SABI_HEADER_IFACEFUNC), port);
++ outb(readb(sabi + sabi_config->header_offsets.iface_func), port);
+
+ /* write protect memory to make it safe */
+- outb(readb(sabi + SABI_HEADER_RE_MEM), port);
++ outb(readb(sabi + sabi_config->header_offsets.re_mem), port);
+
+ /* see if the command actually succeeded */
+ if (readb(sabi_iface + SABI_IFACE_COMPLETE) == 0xaa &&
+@@ -194,21 +316,21 @@ static void test_backlight(void)
+ {
+ struct sabi_retval sretval;
+
+- sabi_get_command(GET_BACKLIGHT, &sretval);
++ sabi_get_command(sabi_config->commands.get_backlight, &sretval);
+ printk(KERN_DEBUG "backlight = 0x%02x\n", sretval.retval[0]);
+
+- sabi_set_command(SET_BACKLIGHT, 0);
++ sabi_set_command(sabi_config->commands.set_backlight, 0);
+ printk(KERN_DEBUG "backlight should be off\n");
+
+- sabi_get_command(GET_BACKLIGHT, &sretval);
++ sabi_get_command(sabi_config->commands.get_backlight, &sretval);
+ printk(KERN_DEBUG "backlight = 0x%02x\n", sretval.retval[0]);
+
+ msleep(1000);
+
+- sabi_set_command(SET_BACKLIGHT, 1);
++ sabi_set_command(sabi_config->commands.set_backlight, 1);
+ printk(KERN_DEBUG "backlight should be on\n");
+
+- sabi_get_command(GET_BACKLIGHT, &sretval);
++ sabi_get_command(sabi_config->commands.get_backlight, &sretval);
+ printk(KERN_DEBUG "backlight = 0x%02x\n", sretval.retval[0]);
+ }
+
+@@ -216,21 +338,21 @@ static void test_wireless(void)
+ {
+ struct sabi_retval sretval;
+
+- sabi_get_command(GET_WIRELESS_BUTTON, &sretval);
++ sabi_get_command(sabi_config->commands.get_wireless_button, &sretval);
+ printk(KERN_DEBUG "wireless led = 0x%02x\n", sretval.retval[0]);
+
+- sabi_set_command(SET_WIRELESS_BUTTON, 0);
++ sabi_set_command(sabi_config->commands.set_wireless_button, 0);
+ printk(KERN_DEBUG "wireless led should be off\n");
+
+- sabi_get_command(GET_WIRELESS_BUTTON, &sretval);
++ sabi_get_command(sabi_config->commands.get_wireless_button, &sretval);
+ printk(KERN_DEBUG "wireless led = 0x%02x\n", sretval.retval[0]);
+
+ msleep(1000);
+
+- sabi_set_command(SET_WIRELESS_BUTTON, 1);
++ sabi_set_command(sabi_config->commands.set_wireless_button, 1);
+ printk(KERN_DEBUG "wireless led should be on\n");
+
+- sabi_get_command(GET_WIRELESS_BUTTON, &sretval);
++ sabi_get_command(sabi_config->commands.get_wireless_button, &sretval);
+ printk(KERN_DEBUG "wireless led = 0x%02x\n", sretval.retval[0]);
+ }
+
+@@ -240,7 +362,8 @@ static u8 read_brightness(void)
+ int user_brightness = 0;
+ int retval;
+
+- retval = sabi_get_command(GET_BRIGHTNESS, &sretval);
++ retval = sabi_get_command(sabi_config->commands.get_brightness,
++ &sretval);
+ if (!retval)
+ user_brightness = sretval.retval[0];
+ if (user_brightness != 0)
+@@ -250,7 +373,8 @@ static u8 read_brightness(void)
+
+ static void set_brightness(u8 user_brightness)
+ {
+- sabi_set_command(SET_BRIGHTNESS, user_brightness + 1);
++ sabi_set_command(sabi_config->commands.set_brightness,
++ user_brightness + 1);
+ }
+
+ static int get_brightness(struct backlight_device *bd)
+@@ -263,9 +387,9 @@ static int update_status(struct backlight_device *bd)
+ set_brightness(bd->props.brightness);
+
+ if (bd->props.power == FB_BLANK_UNBLANK)
+- sabi_set_command(SET_BACKLIGHT, 1);
++ sabi_set_command(sabi_config->commands.set_backlight, 1);
+ else
+- sabi_set_command(SET_BACKLIGHT, 0);
++ sabi_set_command(sabi_config->commands.set_backlight, 0);
+ return 0;
+ }
+
+@@ -282,9 +406,9 @@ static int rfkill_set(void *data, bool blocked)
+ * blocked == true is off
+ */
+ if (blocked)
+- sabi_set_command(SET_WIRELESS_BUTTON, 0);
++ sabi_set_command(sabi_config->commands.set_wireless_button, 0);
+ else
+- sabi_set_command(SET_WIRELESS_BUTTON, 1);
++ sabi_set_command(sabi_config->commands.set_wireless_button, 1);
+
+ return 0;
+ }
+@@ -317,47 +441,49 @@ static void destroy_wireless(void)
+ rfkill_destroy(rfk);
+ }
+
+-static ssize_t get_silent_state(struct device *dev,
+- struct device_attribute *attr, char *buf)
++static ssize_t get_performance_level(struct device *dev,
++ struct device_attribute *attr, char *buf)
+ {
+ struct sabi_retval sretval;
+ int retval;
++ int i;
+
+ /* Read the state */
+- retval = sabi_get_command(GET_PERFORMANCE_LEVEL, &sretval);
++ retval = sabi_get_command(sabi_config->commands.get_performance_level,
++ &sretval);
+ if (retval)
+ return retval;
+
+ /* The logic is backwards, yeah, lots of fun... */
+- if (sretval.retval[0] == 0)
+- retval = 1;
+- else
+- retval = 0;
+- return sprintf(buf, "%d\n", retval);
++ for (i = 0; sabi_config->performance_levels[i].name; ++i) {
++ if (sretval.retval[0] == sabi_config->performance_levels[i].value)
++ return sprintf(buf, "%s\n", sabi_config->performance_levels[i].name);
++ }
++ return sprintf(buf, "%s\n", "unknown");
+ }
+
+-static ssize_t set_silent_state(struct device *dev,
++static ssize_t set_performance_level(struct device *dev,
+ struct device_attribute *attr, const char *buf,
+ size_t count)
+ {
+- char value;
+-
+ if (count >= 1) {
+- value = buf[0];
+- if ((value == '0') || (value == 'n') || (value == 'N')) {
+- /* Turn speed up */
+- sabi_set_command(SET_PERFORMANCE_LEVEL, 0x01);
+- } else if ((value == '1') || (value == 'y') || (value == 'Y')) {
+- /* Turn speed down */
+- sabi_set_command(SET_PERFORMANCE_LEVEL, 0x00);
+- } else {
+- return -EINVAL;
++ int i;
++ for (i = 0; sabi_config->performance_levels[i].name; ++i) {
++ struct sabi_performance_level *level =
++ &sabi_config->performance_levels[i];
++ if (!strncasecmp(level->name, buf, strlen(level->name))) {
++ sabi_set_command(sabi_config->commands.set_performance_level,
++ level->value);
++ break;
++ }
+ }
++ if (!sabi_config->performance_levels[i].name)
++ return -EINVAL;
+ }
+ return count;
+ }
+-static DEVICE_ATTR(silent, S_IWUSR | S_IRUGO,
+- get_silent_state, set_silent_state);
++static DEVICE_ATTR(performance_level, S_IWUSR | S_IRUGO,
++ get_performance_level, set_performance_level);
+
+
+ static int __init dmi_check_cb(const struct dmi_system_id *id)
+@@ -388,18 +514,113 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
+ },
+ .callback = dmi_check_cb,
+ },
++ {
++ .ident = "X125",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "X125"),
++ DMI_MATCH(DMI_BOARD_NAME, "X125"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "NC10",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "NC10"),
++ DMI_MATCH(DMI_BOARD_NAME, "NC10"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "NP-Q45",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "SQ45S70S"),
++ DMI_MATCH(DMI_BOARD_NAME, "SQ45S70S"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "X360",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "X360"),
++ DMI_MATCH(DMI_BOARD_NAME, "X360"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "R518",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "R518"),
++ DMI_MATCH(DMI_BOARD_NAME, "R518"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "N150/N210/N220",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR,
++ "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
++ DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "R530/R730",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "R530/R730"),
++ DMI_MATCH(DMI_BOARD_NAME, "R530/R730"),
++ },
++ .callback = dmi_check_cb,
++ },
++ {
++ .ident = "NF110/NF210/NF310",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
++ DMI_MATCH(DMI_PRODUCT_NAME, "NF110/NF210/NF310"),
++ DMI_MATCH(DMI_BOARD_NAME, "NF110/NF210/NF310"),
++ },
++ .callback = dmi_check_cb,
++ },
+ { },
+ };
+ MODULE_DEVICE_TABLE(dmi, samsung_dmi_table);
+
++static int find_signature(void __iomem *memcheck, const char *testStr)
++{
++ int i = 0;
++ int loca;
++
++ for (loca = 0; loca < 0xffff; loca++) {
++ char temp = readb(memcheck + loca);
++
++ if (temp == testStr[i]) {
++ if (i == strlen(testStr)-1)
++ break;
++ ++i;
++ } else {
++ i = 0;
++ }
++ }
++ return loca;
++}
++
+ static int __init samsung_init(void)
+ {
+ struct backlight_properties props;
+ struct sabi_retval sretval;
+- const char *testStr = "SECLINUX";
+- void __iomem *memcheck;
+ unsigned int ifaceP;
+- int pStr;
++ int i;
+ int loca;
+ int retval;
+
+@@ -414,50 +635,44 @@ static int __init samsung_init(void)
+ return -EINVAL;
+ }
+
+- /* Try to find the signature "SECLINUX" in memory to find the header */
+- pStr = 0;
+- memcheck = f0000_segment;
+- for (loca = 0; loca < 0xffff; loca++) {
+- char temp = readb(memcheck + loca);
+-
+- if (temp == testStr[pStr]) {
+- if (pStr == strlen(testStr)-1)
+- break;
+- ++pStr;
+- } else {
+- pStr = 0;
+- }
++ /* Try to find one of the signatures in memory to find the header */
++ for (i = 0; sabi_configs[i].test_string != 0; ++i) {
++ sabi_config = &sabi_configs[i];
++ loca = find_signature(f0000_segment, sabi_config->test_string);
++ if (loca != 0xffff)
++ break;
+ }
++
+ if (loca == 0xffff) {
+ printk(KERN_ERR "This computer does not support SABI\n");
+ goto error_no_signature;
+- }
++ }
+
+ /* point to the SMI port Number */
+ loca += 1;
+- sabi = (memcheck + loca);
++ sabi = (f0000_segment + loca);
+
+ if (debug) {
+ printk(KERN_DEBUG "This computer supports SABI==%x\n",
+ loca + 0xf0000 - 6);
+ printk(KERN_DEBUG "SABI header:\n");
+ printk(KERN_DEBUG " SMI Port Number = 0x%04x\n",
+- readw(sabi + SABI_HEADER_PORT));
++ readw(sabi + sabi_config->header_offsets.port));
+ printk(KERN_DEBUG " SMI Interface Function = 0x%02x\n",
+- readb(sabi + SABI_HEADER_IFACEFUNC));
++ readb(sabi + sabi_config->header_offsets.iface_func));
+ printk(KERN_DEBUG " SMI enable memory buffer = 0x%02x\n",
+- readb(sabi + SABI_HEADER_EN_MEM));
++ readb(sabi + sabi_config->header_offsets.en_mem));
+ printk(KERN_DEBUG " SMI restore memory buffer = 0x%02x\n",
+- readb(sabi + SABI_HEADER_RE_MEM));
++ readb(sabi + sabi_config->header_offsets.re_mem));
+ printk(KERN_DEBUG " SABI data offset = 0x%04x\n",
+- readw(sabi + SABI_HEADER_DATA_OFFSET));
++ readw(sabi + sabi_config->header_offsets.data_offset));
+ printk(KERN_DEBUG " SABI data segment = 0x%04x\n",
+- readw(sabi + SABI_HEADER_DATA_SEGMENT));
++ readw(sabi + sabi_config->header_offsets.data_segment));
+ }
+
+ /* Get a pointer to the SABI Interface */
+- ifaceP = (readw(sabi + SABI_HEADER_DATA_SEGMENT) & 0x0ffff) << 4;
+- ifaceP += readw(sabi + SABI_HEADER_DATA_OFFSET) & 0x0ffff;
++ ifaceP = (readw(sabi + sabi_config->header_offsets.data_segment) & 0x0ffff) << 4;
++ ifaceP += readw(sabi + sabi_config->header_offsets.data_offset) & 0x0ffff;
+ sabi_iface = ioremap(ifaceP, 16);
+ if (!sabi_iface) {
+ printk(KERN_ERR "Can't remap %x\n", ifaceP);
+@@ -470,15 +685,19 @@ static int __init samsung_init(void)
+ test_backlight();
+ test_wireless();
+
+- retval = sabi_get_command(GET_BRIGHTNESS, &sretval);
++ retval = sabi_get_command(sabi_config->commands.get_brightness,
++ &sretval);
+ printk(KERN_DEBUG "brightness = 0x%02x\n", sretval.retval[0]);
+ }
+
+ /* Turn on "Linux" mode in the BIOS */
+- retval = sabi_set_command(SET_LINUX, 0x81);
+- if (retval) {
+- printk(KERN_ERR KBUILD_MODNAME ": Linux mode was not set!\n");
+- goto error_no_platform;
++ if (sabi_config->commands.set_linux != 0xff) {
++ retval = sabi_set_command(sabi_config->commands.set_linux,
++ 0x81);
++ if (retval) {
++ printk(KERN_ERR KBUILD_MODNAME ": Linux mode was not set!\n");
++ goto error_no_platform;
++ }
+ }
+
+ /* knock up a platform device to hang stuff off of */
+@@ -503,7 +722,7 @@ static int __init samsung_init(void)
+ if (retval)
+ goto error_no_rfk;
+
+- retval = device_create_file(&sdev->dev, &dev_attr_silent);
++ retval = device_create_file(&sdev->dev, &dev_attr_performance_level);
+ if (retval)
+ goto error_file_create;
+
+@@ -530,9 +749,10 @@ error_no_signature:
+ static void __exit samsung_exit(void)
+ {
+ /* Turn off "Linux" mode in the BIOS */
+- sabi_set_command(SET_LINUX, 0x80);
++ if (sabi_config->commands.set_linux != 0xff)
++ sabi_set_command(sabi_config->commands.set_linux, 0x80);
+
+- device_remove_file(&sdev->dev, &dev_attr_silent);
++ device_remove_file(&sdev->dev, &dev_attr_performance_level);
+ backlight_device_unregister(backlight_device);
+ destroy_wireless();
+ iounmap(sabi_iface);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/tty-add-active-sysfs-attribute-to-tty0-and-console-device new/patches.drivers/tty-add-active-sysfs-attribute-to-tty0-and-console-device
--- old/patches.drivers/tty-add-active-sysfs-attribute-to-tty0-and-console-device 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/tty-add-active-sysfs-attribute-to-tty0-and-console-device 2011-02-21 10:34:10.000000000 +0100
@@ -0,0 +1,216 @@
+From: Kay Sievers
+Date: Wed, 1 Dec 2010 18:51:05 +0100
+Subject: tty: add 'active' sysfs attribute to tty0 and console device
+Patch-mainline: v2.6.38-rc1
+Git-commit: fbc92a3455577ab17615cbcb91826399061bd789
+
+tty: add 'active' sysfs attribute to tty0 and console device
+
+Userspace can query the actual virtual console, and the configured
+console devices behind /dev/tt0 and /dev/console.
+
+The last entry in the list of devices is the active device, analog
+to the console= kernel command line option.
+
+The attribute supports poll(), which is raised when the virtual
+console is changed or /dev/console is reconfigured.
+
+Signed-off-by: Kay Sievers
+Signed-off-by: Greg Kroah-Hartman
+
+index 0000000..b138b66
+Acked-by: Jeff Mahoney
+---
+ Documentation/ABI/testing/sysfs-tty | 19 ++++++++++++++
+ drivers/tty/tty_io.c | 47 ++++++++++++++++++++++++++++++++---
+ drivers/tty/vt/vt.c | 23 ++++++++++++++++-
+ include/linux/console.h | 2 +-
+ kernel/printk.c | 2 +
+ 5 files changed, 87 insertions(+), 6 deletions(-)
+
+diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty
+new file mode 100644
+index 0000000..b138b66
+--- /dev/null
++++ b/Documentation/ABI/testing/sysfs-tty
+@@ -0,0 +1,19 @@
++What: /sys/class/tty/console/active
++Date: Nov 2010
++Contact: Kay Sievers
++Description:
++ Shows the list of currently configured
++ console devices, like 'tty1 ttyS0'.
++ The last entry in the file is the active
++ device connected to /dev/console.
++ The file supports poll() to detect virtual
++ console switches.
++
++What: /sys/class/tty/tty0/active
++Date: Nov 2010
++Contact: Kay Sievers
++Description:
++ Shows the currently active virtual console
++ device, like 'tty1'.
++ The file supports poll() to detect virtual
++ console switches.
+diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
+index c05c5af..be5ab4a 100644
+--- a/drivers/tty/tty_io.c
++++ b/drivers/tty/tty_io.c
+@@ -3232,9 +3232,45 @@ static int __init tty_class_init(void)
+ postcore_initcall(tty_class_init);
+
+ /* 3/2004 jmc: why do these devices exist? */
+-
+ static struct cdev tty_cdev, console_cdev;
+
++static ssize_t show_cons_active(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct console *cs[16];
++ int i = 0;
++ struct console *c;
++ ssize_t count = 0;
++
++ acquire_console_sem();
++ for (c = console_drivers; c; c = c->next) {
++ if (!c->device)
++ continue;
++ if (!c->write)
++ continue;
++ if ((c->flags & CON_ENABLED) == 0)
++ continue;
++ cs[i++] = c;
++ if (i >= ARRAY_SIZE(cs))
++ break;
++ }
++ while (i--)
++ count += sprintf(buf + count, "%s%d%c",
++ cs[i]->name, cs[i]->index, i ? ' ':'\n');
++ release_console_sem();
++
++ return count;
++}
++static DEVICE_ATTR(active, S_IRUGO, show_cons_active, NULL);
++
++static struct device *consdev;
++
++void console_sysfs_notify(void)
++{
++ if (consdev)
++ sysfs_notify(&consdev->kobj, NULL, "active");
++}
++
+ /*
+ * Ok, now we can initialize the rest of the tty devices and can count
+ * on memory allocations, interrupts etc..
+@@ -3245,15 +3281,18 @@ int __init tty_init(void)
+ if (cdev_add(&tty_cdev, MKDEV(TTYAUX_MAJOR, 0), 1) ||
+ register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0)
+ panic("Couldn't register /dev/tty driver\n");
+- device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL,
+- "tty");
++ device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty");
+
+ cdev_init(&console_cdev, &console_fops);
+ if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) ||
+ register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0)
+ panic("Couldn't register /dev/console driver\n");
+- device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), NULL,
++ consdev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), NULL,
+ "console");
++ if (IS_ERR(consdev))
++ consdev = NULL;
++ else
++ device_create_file(consdev, &dev_attr_active);
+
+ #ifdef CONFIG_VT
+ vty_init(&console_fops);
+diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
+index a8ec48e..76407ec 100644
+--- a/drivers/tty/vt/vt.c
++++ b/drivers/tty/vt/vt.c
+@@ -236,6 +236,14 @@ enum {
+ };
+
+ /*
++ * /sys/class/tty/tty0/
++ *
++ * the attribute 'active' contains the name of the current vc
++ * console and it supports poll() to detect vc switches
++ */
++static struct device *tty0dev;
++
++/*
+ * Notifier list for console events.
+ */
+ static ATOMIC_NOTIFIER_HEAD(vt_notifier_list);
+@@ -688,6 +696,8 @@ void redraw_screen(struct vc_data *vc, int is_switch)
+ save_screen(old_vc);
+ set_origin(old_vc);
+ }
++ if (tty0dev)
++ sysfs_notify(&tty0dev->kobj, NULL, "active");
+ } else {
+ hide_cursor(vc);
+ redraw = 1;
+@@ -2967,13 +2977,24 @@ static const struct tty_operations con_ops = {
+
+ static struct cdev vc0_cdev;
+
++static ssize_t show_tty_active(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ return sprintf(buf, "tty%d\n", fg_console + 1);
++}
++static DEVICE_ATTR(active, S_IRUGO, show_tty_active, NULL);
++
+ int __init vty_init(const struct file_operations *console_fops)
+ {
+ cdev_init(&vc0_cdev, console_fops);
+ if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) ||
+ register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0)
+ panic("Couldn't register /dev/tty0 driver\n");
+- device_create(tty_class, NULL, MKDEV(TTY_MAJOR, 0), NULL, "tty0");
++ tty0dev = device_create(tty_class, NULL, MKDEV(TTY_MAJOR, 0), NULL, "tty0");
++ if (IS_ERR(tty0dev))
++ tty0dev = NULL;
++ else
++ device_create_file(tty0dev, &dev_attr_active);
+
+ vcs_init();
+
+diff --git a/include/linux/console.h b/include/linux/console.h
+index 875cfb1..9774fe6 100644
+--- a/include/linux/console.h
++++ b/include/linux/console.h
+@@ -151,7 +151,7 @@ extern int is_console_locked(void);
+ extern int braille_register_console(struct console *, int index,
+ char *console_options, char *braille_options);
+ extern int braille_unregister_console(struct console *);
+-
++extern void console_sysfs_notify(void);
+ extern int console_suspend_enabled;
+
+ /* Suspend and resume console messages over PM events */
+diff --git a/kernel/printk.c b/kernel/printk.c
+index bf0420a..5417784 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -1332,6 +1332,7 @@ void register_console(struct console *newcon)
+ spin_unlock_irqrestore(&logbuf_lock, flags);
+ }
+ release_console_sem();
++ console_sysfs_notify();
+
+ /*
+ * By unregistering the bootconsoles after we enable the real console
+@@ -1390,6 +1391,7 @@ int unregister_console(struct console *console)
+ console_drivers->flags |= CON_CONSDEV;
+
+ release_console_sem();
++ console_sysfs_notify();
+ return res;
+ }
+ EXPORT_SYMBOL(unregister_console);
+
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/0001-Revert-ath9k-use-per-device-struct-for-pm_qos_-opera.patch new/patches.fixes/0001-Revert-ath9k-use-per-device-struct-for-pm_qos_-opera.patch
--- old/patches.fixes/0001-Revert-ath9k-use-per-device-struct-for-pm_qos_-opera.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/0001-Revert-ath9k-use-per-device-struct-for-pm_qos_-opera.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,117 @@
+From 5eafc4fc9de8d364800c0421f283c212d4701b8d Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Tue, 15 Feb 2011 17:07:21 +0100
+Subject: Revert "ath9k: use per-device struct for pm_qos_* operations"
+Patch-mainline: not yet
+References: bnc#667793
+
+This reverts commit 98c316e348bedffa730e6f1e4baeb8a3c3e0f28b.
+
+Signed-off-by: Jiri Slaby
+---
+ drivers/net/wireless/ath/ath9k/ath9k.h | 4 +---
+ drivers/net/wireless/ath/ath9k/init.c | 7 +++++--
+ drivers/net/wireless/ath/ath9k/main.c | 5 +++--
+ 3 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
+index 0963071..7d7f308 100644
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -21,7 +21,6 @@
+ #include
+ #include
+ #include
+-#include
+
+ #include "debug.h"
+ #include "common.h"
+@@ -647,8 +646,6 @@ struct ath_softc {
+ struct ath_descdma txsdma;
+
+ struct ath_ant_comb ant_comb;
+-
+- struct pm_qos_request_list pm_qos_req;
+ };
+
+ struct ath_wiphy {
+@@ -678,6 +675,7 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
+ }
+
+ extern struct ieee80211_ops ath9k_ops;
++extern struct pm_qos_request_list ath9k_pm_qos_req;
+ extern int modparam_nohwcrypt;
+ extern int led_blink;
+
+diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
+index 14b8ab3..ba199fb 100644
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -15,6 +15,7 @@
+ */
+
+ #include
++#include
+
+ #include "ath9k.h"
+
+@@ -179,6 +180,8 @@ static const struct ath_ops ath9k_common_ops = {
+ .write = ath9k_iowrite32,
+ };
+
++struct pm_qos_request_list ath9k_pm_qos_req;
++
+ /**************************/
+ /* Initialization */
+ /**************************/
+@@ -758,7 +761,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
+ ath_init_leds(sc);
+ ath_start_rfkill_poll(sc);
+
+- pm_qos_add_request(&sc->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
++ pm_qos_add_request(&ath9k_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
+ PM_QOS_DEFAULT_VALUE);
+
+ return 0;
+@@ -829,7 +832,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
+ }
+
+ ieee80211_unregister_hw(hw);
+- pm_qos_remove_request(&sc->pm_qos_req);
++ pm_qos_remove_request(&ath9k_pm_qos_req);
+ ath_rx_cleanup(sc);
+ ath_tx_cleanup(sc);
+ ath9k_deinit_softc(sc);
+diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
+index c0c3464..ae6422b 100644
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -15,6 +15,7 @@
+ */
+
+ #include
++#include
+ #include "ath9k.h"
+ #include "btcoex.h"
+
+@@ -1244,7 +1245,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
+ ath9k_btcoex_timer_resume(sc);
+ }
+
+- pm_qos_update_request(&sc->pm_qos_req, 55);
++ pm_qos_update_request(&ath9k_pm_qos_req, 55);
+
+ mutex_unlock:
+ mutex_unlock(&sc->mutex);
+@@ -1423,7 +1424,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
+
+ sc->sc_flags |= SC_OP_INVALID;
+
+- pm_qos_update_request(&sc->pm_qos_req, PM_QOS_DEFAULT_VALUE);
++ pm_qos_update_request(&ath9k_pm_qos_req, PM_QOS_DEFAULT_VALUE);
+
+ mutex_unlock(&sc->mutex);
+
+--
+1.7.3.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/0002-Revert-ath9k-Remove-pm_qos-request-after-hw-unregist.patch new/patches.fixes/0002-Revert-ath9k-Remove-pm_qos-request-after-hw-unregist.patch
--- old/patches.fixes/0002-Revert-ath9k-Remove-pm_qos-request-after-hw-unregist.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/0002-Revert-ath9k-Remove-pm_qos-request-after-hw-unregist.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,38 @@
+From 8706f3f75ad0166d7e1e49dcb9ee22ff212ffd46 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Tue, 15 Feb 2011 17:07:26 +0100
+Subject: Revert "ath9k: Remove pm_qos request after hw unregister."
+Patch-mainline: not yet
+References: bnc#667793
+
+This reverts commit e8364bb8d041c0fd92d69a17ff19f535e1d1c187.
+
+Signed-off-by: Jiri Slaby
+---
+ drivers/net/wireless/ath/ath9k/init.c | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
+index ba199fb..d64a6bf 100644
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -819,6 +819,8 @@ void ath9k_deinit_device(struct ath_softc *sc)
+
+ ath9k_ps_wakeup(sc);
+
++ pm_qos_remove_request(&ath9k_pm_qos_req);
++
+ wiphy_rfkill_stop_polling(sc->hw->wiphy);
+ ath_deinit_leds(sc);
+
+@@ -832,7 +834,6 @@ void ath9k_deinit_device(struct ath_softc *sc)
+ }
+
+ ieee80211_unregister_hw(hw);
+- pm_qos_remove_request(&ath9k_pm_qos_req);
+ ath_rx_cleanup(sc);
+ ath_tx_cleanup(sc);
+ ath9k_deinit_softc(sc);
+--
+1.7.3.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/0003-Revert-ath9k-Fix-a-DMA-latency-issue-for-Intel-Pinet.patch new/patches.fixes/0003-Revert-ath9k-Fix-a-DMA-latency-issue-for-Intel-Pinet.patch
--- old/patches.fixes/0003-Revert-ath9k-Fix-a-DMA-latency-issue-for-Intel-Pinet.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/0003-Revert-ath9k-Fix-a-DMA-latency-issue-for-Intel-Pinet.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,101 @@
+From ea74708f09b1c81d8ac1421b5281df77448a1f01 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Tue, 15 Feb 2011 17:07:31 +0100
+Subject: Revert "ath9k: Fix a DMA latency issue for Intel Pinetrail platforms."
+Patch-mainline: not yet
+References: bnc#667793
+
+This reverts commit 10598c124ecabbbfd7522f74de19b8f7d52a1bee.
+
+Signed-off-by: Jiri Slaby
+---
+ drivers/net/wireless/ath/ath9k/ath9k.h | 1 -
+ drivers/net/wireless/ath/ath9k/init.c | 8 --------
+ drivers/net/wireless/ath/ath9k/main.c | 5 -----
+ 3 files changed, 0 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
+index 7d7f308..3f24352 100644
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -675,7 +675,6 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
+ }
+
+ extern struct ieee80211_ops ath9k_ops;
+-extern struct pm_qos_request_list ath9k_pm_qos_req;
+ extern int modparam_nohwcrypt;
+ extern int led_blink;
+
+diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
+index d64a6bf..91d9b2a 100644
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -15,7 +15,6 @@
+ */
+
+ #include
+-#include
+
+ #include "ath9k.h"
+
+@@ -180,8 +179,6 @@ static const struct ath_ops ath9k_common_ops = {
+ .write = ath9k_iowrite32,
+ };
+
+-struct pm_qos_request_list ath9k_pm_qos_req;
+-
+ /**************************/
+ /* Initialization */
+ /**************************/
+@@ -761,9 +758,6 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
+ ath_init_leds(sc);
+ ath_start_rfkill_poll(sc);
+
+- pm_qos_add_request(&ath9k_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
+- PM_QOS_DEFAULT_VALUE);
+-
+ return 0;
+
+ error_world:
+@@ -819,8 +813,6 @@ void ath9k_deinit_device(struct ath_softc *sc)
+
+ ath9k_ps_wakeup(sc);
+
+- pm_qos_remove_request(&ath9k_pm_qos_req);
+-
+ wiphy_rfkill_stop_polling(sc->hw->wiphy);
+ ath_deinit_leds(sc);
+
+diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
+index ae6422b..7d332e5 100644
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -15,7 +15,6 @@
+ */
+
+ #include
+-#include
+ #include "ath9k.h"
+ #include "btcoex.h"
+
+@@ -1245,8 +1244,6 @@ static int ath9k_start(struct ieee80211_hw *hw)
+ ath9k_btcoex_timer_resume(sc);
+ }
+
+- pm_qos_update_request(&ath9k_pm_qos_req, 55);
+-
+ mutex_unlock:
+ mutex_unlock(&sc->mutex);
+
+@@ -1424,8 +1421,6 @@ static void ath9k_stop(struct ieee80211_hw *hw)
+
+ sc->sc_flags |= SC_OP_INVALID;
+
+- pm_qos_update_request(&ath9k_pm_qos_req, PM_QOS_DEFAULT_VALUE);
+-
+ mutex_unlock(&sc->mutex);
+
+ ath_print(common, ATH_DBG_CONFIG, "Driver halt\n");
+--
+1.7.3.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/PNP-ACPI-Use-DEVICE_ACPI_HANDLE-for-device-ACPI-handle-access.patch new/patches.fixes/PNP-ACPI-Use-DEVICE_ACPI_HANDLE-for-device-ACPI-handle-access.patch
--- old/patches.fixes/PNP-ACPI-Use-DEVICE_ACPI_HANDLE-for-device-ACPI-handle-access.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/PNP-ACPI-Use-DEVICE_ACPI_HANDLE-for-device-ACPI-handle-access.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,202 @@
+From: Rafael J. Wysocki
+Subject: PNP / ACPI: Use DEVICE_ACPI_HANDLE() for device ACPI handle access
+Git-commit: cc8e7a355c1ec64b06a5b8126c47c5cb47f44fce
+Patch-mainline: Yes
+References: bnc#434742
+
+The PNP ACPI driver squirrels the ACPI handles of PNP devices' ACPI
+companions, but this isn't correct, because those handles should be
+accessed using the DEVICE_ACPI_HANDLE() macro operating on struct
+device objects.
+
+Using DEVICE_ACPI_HANDLE() in the PNP ACPI driver instead of the
+driver's own copies of the ACPI handles allows us to avoid a problem
+with docking stations where a machine docked before suspend to RAM
+and undocked while suspended crashes during the subsequent resume (in
+that case the ACPI companion of the PNP device in question doesn't
+exist any more while the device is being resumed). It also allows us
+to avoid the problem where suspend to RAM fails when the machine was
+undocked while suspended before (again, the ACPI companion of the PNP
+device is not present any more while it is being suspended).
+
+This change doesn't fix all of the the PNP ACPI driver's problems
+with PNP devices in docking stations (generally speaking, the driver
+has no idea that devices can come and go and doesn't even attempt to
+handle such events), but at least it makes suspend work for the
+users of docking stations who don't use the PNP devices located in
+there.
+
+References: https://bugzilla.kernel.org/show_bug.cgi?id=15100
+
+Reported-and-tested-by: Toralf Förster
+Signed-off-by: Rafael J. Wysocki
+Acked-by: Bjorn Helgaas
+Signed-off-by: Len Brown
+Signed-off-by: Rafael J. Wysocki
+---
+ drivers/pnp/driver.c | 7 ++-
+ drivers/pnp/pnpacpi/core.c | 93 ++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 72 insertions(+), 28 deletions(-)
+
+Index: linux-2.6.37-openSUSE-11.4/drivers/pnp/pnpacpi/core.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/pnp/pnpacpi/core.c
++++ linux-2.6.37-openSUSE-11.4/drivers/pnp/pnpacpi/core.c
+@@ -81,12 +81,19 @@ static int pnpacpi_get_resources(struct
+
+ static int pnpacpi_set_resources(struct pnp_dev *dev)
+ {
+- struct acpi_device *acpi_dev = dev->data;
+- acpi_handle handle = acpi_dev->handle;
++ struct acpi_device *acpi_dev;
++ acpi_handle handle;
+ struct acpi_buffer buffer;
+ int ret;
+
+ pnp_dbg(&dev->dev, "set resources\n");
++
++ handle = DEVICE_ACPI_HANDLE(&dev->dev);
++ if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) {
++ dev_dbg(&dev->dev, "ACPI device not found in %s!\n", __func__);
++ return -ENODEV;
++ }
++
+ ret = pnpacpi_build_resource_template(dev, &buffer);
+ if (ret)
+ return ret;
+@@ -105,12 +112,18 @@ static int pnpacpi_set_resources(struct
+
+ static int pnpacpi_disable_resources(struct pnp_dev *dev)
+ {
+- struct acpi_device *acpi_dev = dev->data;
+- acpi_handle handle = acpi_dev->handle;
++ struct acpi_device *acpi_dev;
++ acpi_handle handle;
+ int ret;
+
+ dev_dbg(&dev->dev, "disable resources\n");
+
++ handle = DEVICE_ACPI_HANDLE(&dev->dev);
++ if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) {
++ dev_dbg(&dev->dev, "ACPI device not found in %s!\n", __func__);
++ return 0;
++ }
++
+ /* acpi_unregister_gsi(pnp_irq(dev, 0)); */
+ ret = 0;
+ if (acpi_bus_power_manageable(handle))
+@@ -124,46 +137,74 @@ static int pnpacpi_disable_resources(str
+ #ifdef CONFIG_ACPI_SLEEP
+ static bool pnpacpi_can_wakeup(struct pnp_dev *dev)
+ {
+- struct acpi_device *acpi_dev = dev->data;
+- acpi_handle handle = acpi_dev->handle;
++ struct acpi_device *acpi_dev;
++ acpi_handle handle;
++
++ handle = DEVICE_ACPI_HANDLE(&dev->dev);
++ if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) {
++ dev_dbg(&dev->dev, "ACPI device not found in %s!\n", __func__);
++ return false;
++ }
+
+ return acpi_bus_can_wakeup(handle);
+ }
+
+ static int pnpacpi_suspend(struct pnp_dev *dev, pm_message_t state)
+ {
+- struct acpi_device *acpi_dev = dev->data;
+- acpi_handle handle = acpi_dev->handle;
+- int power_state;
++ struct acpi_device *acpi_dev;
++ acpi_handle handle;
++ int error = 0;
++
++ handle = DEVICE_ACPI_HANDLE(&dev->dev);
++ if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) {
++ dev_dbg(&dev->dev, "ACPI device not found in %s!\n", __func__);
++ return 0;
++ }
+
+ if (device_can_wakeup(&dev->dev)) {
+- int rc = acpi_pm_device_sleep_wake(&dev->dev,
++ error = acpi_pm_device_sleep_wake(&dev->dev,
+ device_may_wakeup(&dev->dev));
++ if (error)
++ return error;
++ }
++
++ if (acpi_bus_power_manageable(handle)) {
++ int power_state = acpi_pm_device_sleep_state(&dev->dev, NULL);
+
+- if (rc)
+- return rc;
++ if (power_state < 0)
++ power_state = (state.event == PM_EVENT_ON) ?
++ ACPI_STATE_D0 : ACPI_STATE_D3;
++
++ /*
++ * acpi_bus_set_power() often fails (keyboard port can't be
++ * powered-down?), and in any case, our return value is ignored
++ * by pnp_bus_suspend(). Hence we don't revert the wakeup
++ * setting if the set_power fails.
++ */
++ error = acpi_bus_set_power(handle, power_state);
+ }
+- power_state = acpi_pm_device_sleep_state(&dev->dev, NULL);
+- if (power_state < 0)
+- power_state = (state.event == PM_EVENT_ON) ?
+- ACPI_STATE_D0 : ACPI_STATE_D3;
+-
+- /* acpi_bus_set_power() often fails (keyboard port can't be
+- * powered-down?), and in any case, our return value is ignored
+- * by pnp_bus_suspend(). Hence we don't revert the wakeup
+- * setting if the set_power fails.
+- */
+- return acpi_bus_set_power(handle, power_state);
++
++ return error;
+ }
+
+ static int pnpacpi_resume(struct pnp_dev *dev)
+ {
+- struct acpi_device *acpi_dev = dev->data;
+- acpi_handle handle = acpi_dev->handle;
++ struct acpi_device *acpi_dev;
++ acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev);
++ int error = 0;
++
++ if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) {
++ dev_dbg(&dev->dev, "ACPI device not found in %s!\n", __func__);
++ return -ENODEV;
++ }
+
+ if (device_may_wakeup(&dev->dev))
+ acpi_pm_device_sleep_wake(&dev->dev, false);
+- return acpi_bus_set_power(handle, ACPI_STATE_D0);
++
++ if (acpi_bus_power_manageable(handle))
++ error = acpi_bus_set_power(handle, ACPI_STATE_D0);
++
++ return error;
+ }
+ #endif
+
+Index: linux-2.6.37-openSUSE-11.4/drivers/pnp/driver.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/pnp/driver.c
++++ linux-2.6.37-openSUSE-11.4/drivers/pnp/driver.c
+@@ -189,8 +189,11 @@ static int pnp_bus_resume(struct device
+ if (!pnp_drv)
+ return 0;
+
+- if (pnp_dev->protocol->resume)
+- pnp_dev->protocol->resume(pnp_dev);
++ if (pnp_dev->protocol->resume) {
++ error = pnp_dev->protocol->resume(pnp_dev);
++ if (error)
++ return error;
++ }
+
+ if (pnp_can_write(pnp_dev)) {
+ error = pnp_start_dev(pnp_dev);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bridge-fix-hash-list-corruption.patch new/patches.fixes/bridge-fix-hash-list-corruption.patch
--- old/patches.fixes/bridge-fix-hash-list-corruption.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/bridge-fix-hash-list-corruption.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,48 @@
+From: Herbert Xu
+Subject: bridge: Fix mglist corruption that leads to memory corruption
+Patch-mainline: yes
+Git-commit-id: 6b0d6a9b4296fa16a28d10d416db7a770fc03287
+References: bnc#653547
+
+The list mp->mglist is used to indicate whether a multicast group
+is active on the bridge interface itself as opposed to one of the
+constituent interfaces in the bridge.
+
+Unfortunately the operation that adds the mp->mglist node to the
+list neglected to check whether it has already been added. This
+leads to list corruption in the form of nodes pointing to itself.
+
+Normally this would be quite obvious as it would cause an infinite
+loop when walking the list. However, as this list is never actually
+walked (which means that we don't really need it, I'll get rid of
+it in a subsequent patch), this instead is hidden until we perform
+a delete operation on the affected nodes.
+
+As the same node may now be pointed to by more than one node, the
+delete operations can then cause modification of freed memory.
+
+This was observed in practice to cause corruption in 512-byte slabs,
+most commonly leading to crashes in jbd2.
+
+Thanks to Josef Bacik for pointing me in the right direction.
+
+Reported-by: Ian Page Hands
+Signed-off-by: Herbert Xu
+Signed-off-by: David S. Miller
+Acked-by: Jan Kara
+---
+
+diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
+index f701a21..fdbd41c 100644
+--- a/net/bridge/br_multicast.c
++++ b/net/bridge/br_multicast.c
+@@ -719,7 +719,8 @@ static int br_multicast_add_group(struct net_bridge *br,
+ goto err;
+
+ if (!port) {
+- hlist_add_head(&mp->mglist, &br->mglist);
++ if (hlist_unhashed(&mp->mglist))
++ hlist_add_head(&mp->mglist, &br->mglist);
+ mod_timer(&mp->timer, now + br->multicast_membership_interval);
+ goto out;
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bridge-fix-timer-arming.patch new/patches.fixes/bridge-fix-timer-arming.patch
--- old/patches.fixes/bridge-fix-timer-arming.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/bridge-fix-timer-arming.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,41 @@
+From: Herbert Xu
+Subject: bridge: Fix timer typo that may render snooping less effective
+Patch-mainline: yes
+Git-commit-id: 24f9cdcbd743fd6adb8fb83688d8d86dcccde662
+References: bnc#653547
+
+In a couple of spots where we are supposed to modify the port
+group timer (p->timer) we instead modify the bridge interface
+group timer (mp->timer).
+
+The effect of this is mostly harmless. However, it can cause
+port subscriptions to be longer than they should be, thus making
+snooping less effective.
+
+Signed-off-by: Herbert Xu
+Signed-off-by: David S. Miller
+Acked-by: Jan Kara
+---
+
+diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
+index fdbd41c..c558274 100644
+--- a/net/bridge/br_multicast.c
++++ b/net/bridge/br_multicast.c
+@@ -1178,7 +1178,7 @@ static int br_ip4_multicast_query(struct net_bridge *br,
+ if (timer_pending(&p->timer) ?
+ time_after(p->timer.expires, now + max_delay) :
+ try_to_del_timer_sync(&p->timer) >= 0)
+- mod_timer(&mp->timer, now + max_delay);
++ mod_timer(&p->timer, now + max_delay);
+ }
+
+ out:
+@@ -1249,7 +1249,7 @@ static int br_ip6_multicast_query(struct net_bridge *br,
+ if (timer_pending(&p->timer) ?
+ time_after(p->timer.expires, now + max_delay) :
+ try_to_del_timer_sync(&p->timer) >= 0)
+- mod_timer(&mp->timer, now + max_delay);
++ mod_timer(&p->timer, now + max_delay);
+ }
+
+ out:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bridge-remove-hash-list.patch new/patches.fixes/bridge-remove-hash-list.patch
--- old/patches.fixes/bridge-remove-hash-list.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/bridge-remove-hash-list.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,129 @@
+From: Herbert Xu
+Subject: bridge: Replace mp->mglist hlist with a bool
+Patch-mainline: Yes
+Git-commit-id: 8a870178c0ad1bae9994c99bd01eb10c9903e616
+References: bnc#653547
+
+As it turns out we never need to walk through the list of multicast
+groups subscribed by the bridge interface itself (the only time we'd
+want to do that is when we shut down the bridge, in which case we
+simply walk through all multicast groups), we don't really need to
+keep an hlist for mp->mglist.
+
+This means that we can replace it with just a single bit to indicate
+whether the bridge interface is subscribed to a group.
+
+Signed-off-by: Herbert Xu
+Signed-off-by: David S. Miller
+Acked-by: Jan Kara
+---
+
+Index: linux-2.6.37-openSUSE-11.4/net/bridge/br_input.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/net/bridge/br_input.c
++++ linux-2.6.37-openSUSE-11.4/net/bridge/br_input.c
+@@ -76,7 +76,7 @@ int br_handle_frame_finish(struct sk_buf
+ if (is_multicast_ether_addr(dest)) {
+ mdst = br_mdb_get(br, skb);
+ if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) {
+- if ((mdst && !hlist_unhashed(&mdst->mglist)) ||
++ if ((mdst && mdst->mglist) ||
+ br_multicast_is_router(br))
+ skb2 = skb;
+ br_multicast_forward(mdst, skb, skb2);
+Index: linux-2.6.37-openSUSE-11.4/net/bridge/br_multicast.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/net/bridge/br_multicast.c
++++ linux-2.6.37-openSUSE-11.4/net/bridge/br_multicast.c
+@@ -229,8 +229,7 @@ static void br_multicast_group_expired(u
+ if (!netif_running(br->dev) || timer_pending(&mp->timer))
+ goto out;
+
+- if (!hlist_unhashed(&mp->mglist))
+- hlist_del_init(&mp->mglist);
++ mp->mglist = false;
+
+ if (mp->ports)
+ goto out;
+@@ -268,7 +267,7 @@ static void br_multicast_del_pg(struct n
+ del_timer(&p->query_timer);
+ call_rcu_bh(&p->rcu, br_multicast_free_pg);
+
+- if (!mp->ports && hlist_unhashed(&mp->mglist) &&
++ if (!mp->ports && !mp->mglist &&
+ netif_running(br->dev))
+ mod_timer(&mp->timer, jiffies);
+
+@@ -520,7 +519,7 @@ static void br_multicast_group_query_exp
+ struct net_bridge *br = mp->br;
+
+ spin_lock(&br->multicast_lock);
+- if (!netif_running(br->dev) || hlist_unhashed(&mp->mglist) ||
++ if (!netif_running(br->dev) || !mp->mglist ||
+ mp->queries_sent >= br->multicast_last_member_count)
+ goto out;
+
+@@ -707,8 +706,7 @@ static int br_multicast_add_group(struct
+ goto err;
+
+ if (!port) {
+- if (hlist_unhashed(&mp->mglist))
+- hlist_add_head(&mp->mglist, &br->mglist);
++ mp->mglist = true;
+ mod_timer(&mp->timer, now + br->multicast_membership_interval);
+ goto out;
+ }
+@@ -1152,7 +1150,7 @@ static int br_ip4_multicast_query(struct
+
+ max_delay *= br->multicast_last_member_count;
+
+- if (!hlist_unhashed(&mp->mglist) &&
++ if (mp->mglist &&
+ (timer_pending(&mp->timer) ?
+ time_after(mp->timer.expires, now + max_delay) :
+ try_to_del_timer_sync(&mp->timer) >= 0))
+@@ -1220,7 +1218,7 @@ static int br_ip6_multicast_query(struct
+ goto out;
+
+ max_delay *= br->multicast_last_member_count;
+- if (!hlist_unhashed(&mp->mglist) &&
++ if (mp->mglist &&
+ (timer_pending(&mp->timer) ?
+ time_after(mp->timer.expires, now + max_delay) :
+ try_to_del_timer_sync(&mp->timer) >= 0))
+@@ -1265,7 +1263,7 @@ static void br_multicast_leave_group(str
+ br->multicast_last_member_interval;
+
+ if (!port) {
+- if (!hlist_unhashed(&mp->mglist) &&
++ if (mp->mglist &&
+ (timer_pending(&mp->timer) ?
+ time_after(mp->timer.expires, time) :
+ try_to_del_timer_sync(&mp->timer) >= 0)) {
+Index: linux-2.6.37-openSUSE-11.4/net/bridge/br_private.h
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/net/bridge/br_private.h
++++ linux-2.6.37-openSUSE-11.4/net/bridge/br_private.h
+@@ -84,13 +84,13 @@ struct net_bridge_port_group {
+ struct net_bridge_mdb_entry
+ {
+ struct hlist_node hlist[2];
+- struct hlist_node mglist;
+ struct net_bridge *br;
+ struct net_bridge_port_group *ports;
+ struct rcu_head rcu;
+ struct timer_list timer;
+ struct timer_list query_timer;
+ struct br_ip addr;
++ bool mglist;
+ u32 queries_sent;
+ };
+
+@@ -229,7 +229,6 @@ struct net_bridge
+ spinlock_t multicast_lock;
+ struct net_bridge_mdb_htable *mdb;
+ struct hlist_head router_list;
+- struct hlist_head mglist;
+
+ struct timer_list multicast_router_timer;
+ struct timer_list multicast_querier_timer;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/calibrate-jiffy-overflow new/patches.fixes/calibrate-jiffy-overflow
--- old/patches.fixes/calibrate-jiffy-overflow 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/calibrate-jiffy-overflow 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-From: http://xenbits.xen.org/XCP/linux-2.6.32.pq.hg?rev/9374bf463b5b
-Subject: Fix jiffy calculations in calibrate_delay_direct to handle overflow.
-Patch-Mainline: not yet
-
-Fixes a hang when booting as dom0 under Xen, when jiffies can be
-quite large by the time the kernel init gets this far.
-
-Signed-off-by: Tim Deegan
-
-!time_after() -> time_before_eq() as per suggestion from Jiri Slaby.
-
-Acked-by: jbeulich@novell.com
-Acked-by: jslaby@suse.cz
-
---- a/init/calibrate.c 2010-02-24 19:52:17.000000000 +0100
-+++ b/init/calibrate.c 2011-01-28 11:00:10.000000000 +0100
-@@ -66,7 +66,7 @@ static unsigned long __cpuinit calibrate
- pre_start = 0;
- read_current_timer(&start);
- start_jiffies = jiffies;
-- while (jiffies <= (start_jiffies + 1)) {
-+ while (time_before_eq(jiffies, start_jiffies + 1)) {
- pre_start = start;
- read_current_timer(&start);
- }
-@@ -74,8 +74,8 @@ static unsigned long __cpuinit calibrate
-
- pre_end = 0;
- end = post_start;
-- while (jiffies <=
-- (start_jiffies + 1 + DELAY_CALIBRATION_TICKS)) {
-+ while (time_before_eq(jiffies, start_jiffies + 1 +
-+ DELAY_CALIBRATION_TICKS)) {
- pre_end = end;
- read_current_timer(&end);
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/fix-ata-panic-with-ata_id new/patches.fixes/fix-ata-panic-with-ata_id
--- old/patches.fixes/fix-ata-panic-with-ata_id 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/fix-ata-panic-with-ata_id 1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-From: Tejun Heo
-Subject: Fix ata panic with ata_id
-Patch-mainline: Not yet
-References: bnc#660464
-
-Hello,
-
-Can you please test whether the following patch fixes the problem?
-
-Thanks.
-
-Acked-by: Jeff Mahoney
----
-
- drivers/ata/libata-scsi.c | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
---- a/drivers/ata/libata-scsi.c
-+++ b/drivers/ata/libata-scsi.c
-@@ -1102,9 +1102,9 @@ static int ata_scsi_dev_config(struct sc
- struct request_queue *q = sdev->request_queue;
- void *buf;
-
-- /* set the min alignment and padding */
-- blk_queue_update_dma_alignment(sdev->request_queue,
-- ATA_DMA_PAD_SZ - 1);
-+ sdev->sector_size = ATA_SECT_SIZE;
-+
-+ /* set DMA padding */
- blk_queue_update_dma_pad(sdev->request_queue,
- ATA_DMA_PAD_SZ - 1);
-
-@@ -1118,13 +1118,18 @@ static int ata_scsi_dev_config(struct sc
-
- blk_queue_dma_drain(q, atapi_drain_needed, buf, ATAPI_MAX_DRAIN);
- } else {
-- /* ATA devices must be sector aligned */
- sdev->sector_size = ata_id_logical_sector_size(dev->id);
-- blk_queue_update_dma_alignment(sdev->request_queue,
-- sdev->sector_size - 1);
- sdev->manage_start_stop = 1;
- }
-
-+ /*
-+ * ata_pio_sectors() expect sector alignment on buffers. ATAPI
-+ * devices also need the alignment as IDENTIFY_PACKET is executed
-+ * as ATA_PROT_PIO.
-+ */
-+ blk_queue_update_dma_alignment(sdev->request_queue,
-+ sdev->sector_size - 1);
-+
- if (dev->flags & ATA_DFLAG_AN)
- set_bit(SDEV_EVT_MEDIA_CHANGE, sdev->supported_events);
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch new/patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch
--- old/patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,38 +0,0 @@
-From aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873 Mon Sep 17 00:00:00 2001
-From: Kacper Kornet
-Date: Sat, 29 Jan 2011 00:21:04 +0100
-Subject: Fix prlimit64 for suid/sgid processes
-Git-commit: aa5bd67dcfdf9af34c7fa36ebc87d4e1f7e91873
-Patch-mainline: yes
-References: bnc#668262
-
-Since check_prlimit_permission always fails in the case of SUID/GUID
-processes, such processes are not able to read or set their own limits.
-This commit changes this by assuming that process can always read/change
-its own limits.
-
-Signed-off-by: Kacper Kornet
-Acked-by: Jiri Slaby
-Signed-off-by: Linus Torvalds
-Signed-off-by: Jiri Slaby
----
- kernel/sys.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/kernel/sys.c b/kernel/sys.c
-index 31b71a2..18da702 100644
---- a/kernel/sys.c
-+++ b/kernel/sys.c
-@@ -1385,7 +1385,8 @@ static int check_prlimit_permission(struct task_struct *task)
- const struct cred *cred = current_cred(), *tcred;
-
- tcred = __task_cred(task);
-- if ((cred->uid != tcred->euid ||
-+ if (current != task &&
-+ (cred->uid != tcred->euid ||
- cred->uid != tcred->suid ||
- cred->uid != tcred->uid ||
- cred->gid != tcred->egid ||
---
-1.7.3.4
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/flexcop-fix-registering-braindead-stupid-names new/patches.fixes/flexcop-fix-registering-braindead-stupid-names
--- old/patches.fixes/flexcop-fix-registering-braindead-stupid-names 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/flexcop-fix-registering-braindead-stupid-names 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,43 @@
+From: Kyle McMartin
+Subject: flexcop: fix registering braindead stupid names
+References: brc#575873 bnc#661429
+Patch-mainline: Unsubmitted by author
+
+ This patch fixes an issue where the flexcop driver passes DRIVER_NAME to
+ request_irq, which ultimately sets up proc files. The invalid name
+ contains slashes so the proc file creation fails and we get a WARN_ON.
+
+Acked-by: Jeff Mahoney
+---
+
+ drivers/media/dvb/b2c2/flexcop-pci.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/dvb/b2c2/flexcop-pci.c
++++ b/drivers/media/dvb/b2c2/flexcop-pci.c
+@@ -39,6 +39,7 @@ MODULE_PARM_DESC(debug,
+
+ #define DRIVER_VERSION "0.1"
+ #define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver"
++#define FLEXCOP_MODULE_NAME "b2c2-flexcop"
+ #define DRIVER_AUTHOR "Patrick Boettcher "
+
+ struct flexcop_pci {
+@@ -299,7 +300,7 @@ static int flexcop_pci_init(struct flexc
+ return ret;
+ pci_set_master(fc_pci->pdev);
+
+- if ((ret = pci_request_regions(fc_pci->pdev, DRIVER_NAME)) != 0)
++ if ((ret = pci_request_regions(fc_pci->pdev, FLEXCOP_MODULE_NAME)) != 0)
+ goto err_pci_disable_device;
+
+ fc_pci->io_mem = pci_iomap(fc_pci->pdev, 0, 0x800);
+@@ -313,7 +314,7 @@ static int flexcop_pci_init(struct flexc
+ pci_set_drvdata(fc_pci->pdev, fc_pci);
+ spin_lock_init(&fc_pci->irq_lock);
+ if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr,
+- IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
++ IRQF_SHARED, FLEXCOP_MODULE_NAME, fc_pci)) != 0)
+ goto err_pci_iounmap;
+
+ fc_pci->init_state |= FC_PCI_INIT;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch new/patches.fixes/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch
--- old/patches.fixes/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,90 +0,0 @@
-From: Jiri Kosina
-Subject: [PATCH] Input: introduce 'notimeout' blacklist for Dell Vostro V13
-References: bnc#641105
-Patch-mainline: 2.6.38-rc1
-Git-commit: f8313ef1f448006207f12c107123522c8bc00f15
-
-i8042 controller present in Dell Vostro V13 errorneously signals spurious
-timeouts.
-
-Introduce i8042.notimeout parameter for ignoring i8042-signalled timeouts
-and apply this quirk automatically for Dell Vostro V13, based on DMI match.
-
-In addition to that, this machine also needs to be added to nomux blacklist.
-
-Signed-off-by: Jiri Kosina
----
- drivers/input/serio/i8042-x86ia64io.h | 21 +++++++++++++++++++++
- drivers/input/serio/i8042.c | 6 +++++-
- 2 files changed, 26 insertions(+), 1 deletions(-)
-
-Index: linux-2.6.37-master/drivers/input/serio/i8042-x86ia64io.h
-===================================================================
---- linux-2.6.37-master.orig/drivers/input/serio/i8042-x86ia64io.h
-+++ linux-2.6.37-master/drivers/input/serio/i8042-x86ia64io.h
-@@ -431,6 +431,13 @@ static const struct dmi_system_id __init
- DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
- },
- },
-+ {
-+ /* Dell Vostro V13 */
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
-+ },
-+ },
- { }
- };
-
-@@ -552,6 +559,17 @@ static const struct dmi_system_id __init
- };
- #endif
-
-+static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
-+ {
-+ /* Dell Vostro V13 */
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
-+ DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
-+ },
-+ },
-+ { }
-+};
-+
- /*
- * Some Wistron based laptops need us to explicitly enable the 'Dritek
- * keyboard extension' to make their extra keys start generating scancodes.
-@@ -904,6 +922,9 @@ static int __init i8042_platform_init(vo
- if (dmi_check_system(i8042_dmi_nomux_table))
- i8042_nomux = true;
-
-+ if (dmi_check_system(i8042_dmi_notimeout_table))
-+ i8042_notimeout = true;
-+
- if (dmi_check_system(i8042_dmi_dritek_table))
- i8042_dritek = true;
- #endif /* CONFIG_X86 */
-Index: linux-2.6.37-master/drivers/input/serio/i8042.c
-===================================================================
---- linux-2.6.37-master.orig/drivers/input/serio/i8042.c
-+++ linux-2.6.37-master/drivers/input/serio/i8042.c
-@@ -61,6 +61,10 @@ static bool i8042_noloop;
- module_param_named(noloop, i8042_noloop, bool, 0);
- MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port");
-
-+static bool i8042_notimeout;
-+module_param_named(notimeout, i8042_notimeout, bool, 0);
-+MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
-+
- #ifdef CONFIG_X86
- static bool i8042_dritek;
- module_param_named(dritek, i8042_dritek, bool, 0);
-@@ -503,7 +507,7 @@ static irqreturn_t i8042_interrupt(int i
- } else {
-
- dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) |
-- ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0);
-+ ((str & I8042_STR_TIMEOUT && !i8042_notimeout) ? SERIO_TIMEOUT : 0);
-
- port_no = (str & I8042_STR_AUXDATA) ?
- I8042_AUX_PORT_NO : I8042_KBD_PORT_NO;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/reiserfs-xattr-crash-fix new/patches.fixes/reiserfs-xattr-crash-fix
--- old/patches.fixes/reiserfs-xattr-crash-fix 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/reiserfs-xattr-crash-fix 2011-02-20 11:37:13.000000000 +0100
@@ -28,11 +28,11 @@
Signed-off-by: Jeff Mahoney
---
fs/dcache.c | 3 ++-
- fs/reiserfs/super.c | 37 ++++++++++++++++++++++++-------------
+ fs/reiserfs/super.c | 41 ++++++++++++++++++++++++++++-------------
fs/reiserfs/xattr.c | 21 +++++++++++++++++++++
include/linux/dcache.h | 1 +
include/linux/reiserfs_xattr.h | 1 +
- 5 files changed, 49 insertions(+), 14 deletions(-)
+ 5 files changed, 53 insertions(+), 14 deletions(-)
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -55,7 +55,7 @@
* destroy the dentries attached to a superblock on unmounting
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
-@@ -450,21 +450,30 @@ int remove_save_link(struct inode *inode
+@@ -450,21 +450,34 @@ int remove_save_link(struct inode *inode
return journal_end(&th, inode->i_sb, JOURNAL_PER_BALANCE_CNT);
}
@@ -81,7 +81,11 @@
- REISERFS_SB(s)->priv_root = NULL;
- }
- }
-+ struct dentry *root = REISERFS_SB(s)->priv_root;
++ struct dentry *root;
++ if (!REISERFS_SB(s))
++ return;
++
++ root = REISERFS_SB(s)->priv_root;
+ if (!root)
+ return;
+
@@ -99,7 +103,7 @@
kill_block_super(s);
}
-@@ -473,6 +482,8 @@ static void reiserfs_put_super(struct su
+@@ -473,6 +486,8 @@ static void reiserfs_put_super(struct su
struct reiserfs_transaction_handle th;
th.t_trans_id = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/revert-tpm_tis-Use-timeouts-returned-from-TPM.patch new/patches.fixes/revert-tpm_tis-Use-timeouts-returned-from-TPM.patch
--- old/patches.fixes/revert-tpm_tis-Use-timeouts-returned-from-TPM.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/revert-tpm_tis-Use-timeouts-returned-from-TPM.patch 2011-02-20 11:37:13.000000000 +0100
@@ -0,0 +1,93 @@
+From 8e19b87782d08de1c384f40846e10294c4d04a3f Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Sun, 20 Feb 2011 11:06:35 +0100
+Subject: Revert "tpm_tis: Use timeouts returned from TPM"
+References: bnc#673619
+Patch-mainline: no (probably a fix instead of revert will be)
+
+This reverts commit 44489516c52b3b76d9b2a0e670a26b6e64938ddf.
+
+It breaks hibernation.
+
+Signed-off-by: Jiri Slaby
+---
+ drivers/char/tpm/tpm.c | 18 ++----------------
+ drivers/char/tpm/tpm.h | 2 --
+ drivers/char/tpm/tpm_tis.c | 4 +---
+ 3 files changed, 3 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
+index 55d0466..d5284bc 100644
+--- a/drivers/char/tpm/tpm.c
++++ b/drivers/char/tpm/tpm.c
+@@ -577,11 +577,9 @@ duration:
+ if (rc)
+ return;
+
+- if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
+- be32_to_cpu(tpm_cmd.header.out.length)
+- != sizeof(tpm_cmd.header.out) + sizeof(u32) + 3 * sizeof(u32))
++ if (be32_to_cpu(tpm_cmd.header.out.return_code)
++ != 3 * sizeof(u32))
+ return;
+-
+ duration_cap = &tpm_cmd.params.getcap_out.cap.duration;
+ chip->vendor.duration[TPM_SHORT] =
+ usecs_to_jiffies(be32_to_cpu(duration_cap->tpm_short));
+@@ -925,18 +923,6 @@ ssize_t tpm_show_caps_1_2(struct device * dev,
+ }
+ EXPORT_SYMBOL_GPL(tpm_show_caps_1_2);
+
+-ssize_t tpm_show_timeouts(struct device *dev, struct device_attribute *attr,
+- char *buf)
+-{
+- struct tpm_chip *chip = dev_get_drvdata(dev);
+-
+- return sprintf(buf, "%d %d %d\n",
+- jiffies_to_usecs(chip->vendor.duration[TPM_SHORT]),
+- jiffies_to_usecs(chip->vendor.duration[TPM_MEDIUM]),
+- jiffies_to_usecs(chip->vendor.duration[TPM_LONG]));
+-}
+-EXPORT_SYMBOL_GPL(tpm_show_timeouts);
+-
+ ssize_t tpm_store_cancel(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count)
+ {
+diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
+index ba1779c..792868d 100644
+--- a/drivers/char/tpm/tpm.h
++++ b/drivers/char/tpm/tpm.h
+@@ -56,8 +56,6 @@ extern ssize_t tpm_show_owned(struct device *, struct device_attribute *attr,
+ char *);
+ extern ssize_t tpm_show_temp_deactivated(struct device *,
+ struct device_attribute *attr, char *);
+-extern ssize_t tpm_show_timeouts(struct device *,
+- struct device_attribute *attr, char *);
+
+ struct tpm_chip;
+
+diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
+index 0d1d38e..dd21df5 100644
+--- a/drivers/char/tpm/tpm_tis.c
++++ b/drivers/char/tpm/tpm_tis.c
+@@ -376,7 +376,6 @@ static DEVICE_ATTR(temp_deactivated, S_IRUGO, tpm_show_temp_deactivated,
+ NULL);
+ static DEVICE_ATTR(caps, S_IRUGO, tpm_show_caps_1_2, NULL);
+ static DEVICE_ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel);
+-static DEVICE_ATTR(timeouts, S_IRUGO, tpm_show_timeouts, NULL);
+
+ static struct attribute *tis_attrs[] = {
+ &dev_attr_pubek.attr,
+@@ -386,8 +385,7 @@ static struct attribute *tis_attrs[] = {
+ &dev_attr_owned.attr,
+ &dev_attr_temp_deactivated.attr,
+ &dev_attr_caps.attr,
+- &dev_attr_cancel.attr,
+- &dev_attr_timeouts.attr, NULL,
++ &dev_attr_cancel.attr, NULL,
+ };
+
+ static struct attribute_group tis_attr_grp = {
+--
+1.7.3.2
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash new/patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash
--- old/patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash 1970-01-01 01:00:00.000000000 +0100
@@ -1,65 +0,0 @@
-Subject: sched, cgroup: Use exit hook to avoid use-after-free crash
-From: Peter Zijlstra
-Date: Fri, 24 Dec 2010 16:59:13 +0100
-Patch-mainline: Maybe 2.6.37, see discussion at
- http://groups.google.com/group/linux.kernel/browse_thread/thread/549060f23106acac/920f6adacc785e4f?lnk=gst&q=Zijlstra#920f6adacc785e4f
-
-By not notifying the controller of the on-exit move back to
-init_css_set, we fail to move the task out of the previous cgroup's
-cfs_rq. This leads to an opportunity for a cgroup-destroy to come in and
-free the cgroup (there are no active tasks left in it after all) to
-which the not-quite dead task is still enqueued.
-
-Cc: stable@kernel.org
-Reported-by: Miklos Vajna
-Signed-off-by: Peter Zijlstra
-Acked-by: Jeff Mahoney
----
- kernel/sched.c | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-Index: linux-2.6.37-master/kernel/sched.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/sched.c
-+++ linux-2.6.37-master/kernel/sched.c
-@@ -613,6 +613,9 @@ static inline struct task_group *task_gr
- struct task_group *tg;
- struct cgroup_subsys_state *css;
-
-+ if (p->flags & PF_EXITING)
-+ return &root_task_group;
-+
- css = task_subsys_state_check(p, cpu_cgroup_subsys_id,
- lockdep_is_held(&task_rq(p)->lock));
- tg = container_of(css, struct task_group, css);
-@@ -9188,6 +9191,22 @@ cpu_cgroup_attach(struct cgroup_subsys *
- }
- }
-
-+static void
-+cpu_cgroup_exit(struct cgroup_subsys *ss, struct task_struct *task)
-+{
-+ /*
-+ * cgroup_exit() is called in the copy_process failure path.
-+ * The task isn't hashed, and we don't want to make autogroup
-+ * dig into a freed signal_struct, so just go away.
-+ *
-+ * XXX: why are cgroup methods diddling unattached tasks?
-+ */
-+ if (!(task->flags & PF_EXITING))
-+ return;
-+
-+ sched_move_task(task);
-+}
-+
- #ifdef CONFIG_FAIR_GROUP_SCHED
- static int cpu_shares_write_u64(struct cgroup *cgrp, struct cftype *cftype,
- u64 shareval)
-@@ -9260,6 +9279,7 @@ struct cgroup_subsys cpu_cgroup_subsys =
- .destroy = cpu_cgroup_destroy,
- .can_attach = cpu_cgroup_can_attach,
- .attach = cpu_cgroup_attach,
-+ .exit = cpu_cgroup_exit,
- .populate = cpu_cgroup_populate,
- .subsys_id = cpu_cgroup_subsys_id,
- .early_init = 1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch new/patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch
--- old/patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch 2011-02-08 17:32:32.000000000 +0100
+++ new/patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,36 +0,0 @@
-From 9c33008412683eba91bce2dc4575f28c728b6bd1 Mon Sep 17 00:00:00 2001
-From: Denis Kirjanov
-Date: Mon, 10 Jan 2011 20:09:30 +0000
-Subject: staging: rt2860: Fix incorrect netif_stop_queue usage warning
-Git-commit: 9c33008412683eba91bce2dc4575f28c728b6bd1
-Patch-mainline: yes
-References: bnc#661657
-
-The TX queues are allocated inside register_netdev.
-It doesn't make any sense to stop the queue before
-allocation.
-
-Signed-off-by: Denis Kirjanov
-Cc: stable
-Signed-off-by: Greg Kroah-Hartman
-Signed-off-by: Jiri Slaby
----
- drivers/staging/rt2860/rt_main_dev.c | 2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/staging/rt2860/rt_main_dev.c b/drivers/staging/rt2860/rt_main_dev.c
-index 701561d..236dd36 100644
---- a/drivers/staging/rt2860/rt_main_dev.c
-+++ b/drivers/staging/rt2860/rt_main_dev.c
-@@ -484,8 +484,6 @@ struct net_device *RtmpPhyNetDevInit(struct rt_rtmp_adapter *pAd,
- net_dev->ml_priv = (void *)pAd;
- pAd->net_dev = net_dev;
-
-- netif_stop_queue(net_dev);
--
- return net_dev;
-
- }
---
-1.7.3.4
-
++++++ patches.kernel.org.tar.bz2 ++++++
++++ 10732 lines of diff (skipped)
++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/SoN-06-mm-kmem_estimate_pages.patch new/patches.suse/SoN-06-mm-kmem_estimate_pages.patch
--- old/patches.suse/SoN-06-mm-kmem_estimate_pages.patch 2011-02-08 16:52:35.000000000 +0100
+++ new/patches.suse/SoN-06-mm-kmem_estimate_pages.patch 2011-02-18 11:42:11.000000000 +0100
@@ -2,6 +2,9 @@
Subject: [PATCH 06/31] mm: kmem_alloc_estimate()
Patch-mainline: not yet
+Feb 8 2011: Refreshed patch to accomodate an upstream change - commit 55136592
+removed dynamic dma slab allocation.
+
Provide a method to get the upper bound on the pages needed to allocate
a given number of objects from a given kmem_cache.
@@ -18,8 +21,10 @@
mm/slub.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 233 insertions(+)
---- a/include/linux/slab.h
-+++ b/include/linux/slab.h
+Index: linux-2.6.37-openSUSE-11.4/include/linux/slab.h
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/include/linux/slab.h
++++ linux-2.6.37-openSUSE-11.4/include/linux/slab.h
@@ -108,6 +108,8 @@ unsigned int kmem_cache_size(struct kmem
const char *kmem_cache_name(struct kmem_cache *);
int kern_ptr_validate(const void *ptr, unsigned long size);
@@ -38,8 +43,10 @@
/*
* Allocator specific definitions. These are mainly used to establish optimized
---- a/mm/slab.c
-+++ b/mm/slab.c
+Index: linux-2.6.37-openSUSE-11.4/mm/slab.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/mm/slab.c
++++ linux-2.6.37-openSUSE-11.4/mm/slab.c
@@ -3912,6 +3912,81 @@ const char *kmem_cache_name(struct kmem_
EXPORT_SYMBOL_GPL(kmem_cache_name);
@@ -122,9 +129,11 @@
* This initializes kmem_list3 or resizes various caches for all nodes.
*/
static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp)
---- a/mm/slob.c
-+++ b/mm/slob.c
-@@ -702,6 +702,73 @@ int slab_is_available(void)
+Index: linux-2.6.37-openSUSE-11.4/mm/slob.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/mm/slob.c
++++ linux-2.6.37-openSUSE-11.4/mm/slob.c
+@@ -704,6 +704,73 @@ int slab_is_available(void)
return slob_ready;
}
@@ -198,9 +207,11 @@
void __init kmem_cache_init(void)
{
slob_ready = 1;
---- a/mm/slub.c
-+++ b/mm/slub.c
-@@ -2437,6 +2437,42 @@ const char *kmem_cache_name(struct kmem_
+Index: linux-2.6.37-openSUSE-11.4/mm/slub.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/mm/slub.c
++++ linux-2.6.37-openSUSE-11.4/mm/slub.c
+@@ -2458,6 +2458,42 @@ const char *kmem_cache_name(struct kmem_
}
EXPORT_SYMBOL(kmem_cache_name);
@@ -243,7 +254,7 @@
static void list_slab_objects(struct kmem_cache *s, struct page *page,
const char *text)
{
-@@ -2869,6 +2905,57 @@ void kfree(const void *x)
+@@ -2807,6 +2843,57 @@ void kfree(const void *x)
EXPORT_SYMBOL(kfree);
/*
@@ -284,10 +295,10 @@
+
+#ifdef CONFIG_ZONE_DMA
+ if (unlikely(flags & SLUB_DMA))
-+ s = dma_kmalloc_cache(i, flags);
++ s = kmalloc_dma_caches[i];
+ else
+#endif
-+ s = &kmalloc_caches[i];
++ s = kmalloc_caches[i];
+
+ if (s)
+ pages += kmem_alloc_estimate(s, flags, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/SoN-08-mm-page_alloc-emerg.patch new/patches.suse/SoN-08-mm-page_alloc-emerg.patch
--- old/patches.suse/SoN-08-mm-page_alloc-emerg.patch 2011-02-08 16:52:35.000000000 +0100
+++ new/patches.suse/SoN-08-mm-page_alloc-emerg.patch 2011-02-18 11:42:11.000000000 +0100
@@ -18,7 +18,7 @@
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
-@@ -279,6 +279,7 @@ struct zone_reclaim_stat {
+@@ -281,6 +281,7 @@ struct zone_reclaim_stat {
struct zone {
/* Fields commonly accessed by the page allocator */
@@ -26,7 +26,7 @@
/* zone watermarks, access with *_wmark_pages(zone) macros */
unsigned long watermark[NR_WMARK];
-@@ -768,6 +769,8 @@ int sysctl_min_unmapped_ratio_sysctl_han
+@@ -774,6 +775,8 @@ int sysctl_min_unmapped_ratio_sysctl_han
int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int,
void __user *, size_t *, loff_t *);
@@ -37,7 +37,7 @@
extern char numa_zonelist_order[];
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -167,6 +167,8 @@ static char * const zone_names[MAX_NR_ZO
+@@ -173,6 +173,8 @@ static char * const zone_names[MAX_NR_ZO
static DEFINE_SPINLOCK(min_free_lock);
int min_free_kbytes = 1024;
@@ -46,16 +46,16 @@
static unsigned long __meminitdata nr_kernel_pages;
static unsigned long __meminitdata nr_all_pages;
-@@ -1458,7 +1460,7 @@ int zone_watermark_ok(struct zone *z, in
+@@ -1464,7 +1466,7 @@ static bool __zone_watermark_ok(struct z
if (alloc_flags & ALLOC_HARDER)
min -= min / 4;
- if (free_pages <= min + z->lowmem_reserve[classzone_idx])
+ if (free_pages <= min+z->lowmem_reserve[classzone_idx]+z->pages_emerg)
- return 0;
+ return false;
for (o = 0; o < order; o++) {
/* At the next order, this order's pages become unavailable */
-@@ -1959,7 +1961,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, u
+@@ -1984,7 +1986,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, u
{
const gfp_t wait = gfp_mask & __GFP_WAIT;
struct page *page = NULL;
@@ -64,7 +64,7 @@
unsigned long pages_reclaimed = 0;
unsigned long did_some_progress;
struct task_struct *p = current;
-@@ -2097,8 +2099,8 @@ nopage:
+@@ -2122,8 +2124,8 @@ nopage:
printk(KERN_INFO "perfectly reliable and the kernel is designed to handle that.\n");
}
printk(KERN_INFO "%s: page allocation failure."
@@ -75,10 +75,10 @@
dump_stack();
show_mem();
}
-@@ -2433,9 +2435,9 @@ void show_free_areas(void)
+@@ -2458,9 +2460,9 @@ void show_free_areas(void)
"\n",
zone->name,
- K(zone_nr_free_pages(zone)),
+ K(zone_page_state(zone, NR_FREE_PAGES)),
- K(min_wmark_pages(zone)),
- K(low_wmark_pages(zone)),
- K(high_wmark_pages(zone)),
@@ -88,7 +88,7 @@
K(zone_page_state(zone, NR_ACTIVE_ANON)),
K(zone_page_state(zone, NR_INACTIVE_ANON)),
K(zone_page_state(zone, NR_ACTIVE_FILE)),
-@@ -4798,7 +4800,7 @@ static void calculate_totalreserve_pages
+@@ -4834,7 +4836,7 @@ static void calculate_totalreserve_pages
}
/* we treat the high watermark as reserved pages. */
@@ -97,7 +97,7 @@
if (max > zone->present_pages)
max = zone->present_pages;
-@@ -4856,7 +4858,8 @@ static void setup_per_zone_lowmem_reserv
+@@ -4892,7 +4894,8 @@ static void setup_per_zone_lowmem_reserv
*/
static void __setup_per_zone_wmarks(void)
{
@@ -107,7 +107,7 @@
unsigned long lowmem_pages = 0;
struct zone *zone;
unsigned long flags;
-@@ -4868,11 +4871,13 @@ static void __setup_per_zone_wmarks(void
+@@ -4904,11 +4907,13 @@ static void __setup_per_zone_wmarks(void
}
for_each_zone(zone) {
@@ -122,7 +122,7 @@
if (is_highmem(zone)) {
/*
* __GFP_HIGH and PF_MEMALLOC allocations usually don't
-@@ -4891,12 +4896,14 @@ static void __setup_per_zone_wmarks(void
+@@ -4927,12 +4932,14 @@ static void __setup_per_zone_wmarks(void
if (min_pages > 128)
min_pages = 128;
zone->watermark[WMARK_MIN] = min_pages;
@@ -137,7 +137,7 @@
}
zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
-@@ -4961,6 +4968,63 @@ void setup_per_zone_wmarks(void)
+@@ -4997,6 +5004,63 @@ void setup_per_zone_wmarks(void)
spin_unlock_irqrestore(&min_free_lock, flags);
}
@@ -203,10 +203,10 @@
*
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
-@@ -827,9 +827,9 @@ static void zoneinfo_show_print(struct s
+@@ -901,9 +901,9 @@ static void zoneinfo_show_print(struct s
"\n spanned %lu"
"\n present %lu",
- zone_nr_free_pages(zone),
+ zone_page_state(zone, NR_FREE_PAGES),
- min_wmark_pages(zone),
- low_wmark_pages(zone),
- high_wmark_pages(zone),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/SoN-16-netvm-reserve-inet.patch new/patches.suse/SoN-16-netvm-reserve-inet.patch
--- old/patches.suse/SoN-16-netvm-reserve-inet.patch 2011-02-08 16:52:35.000000000 +0100
+++ new/patches.suse/SoN-16-netvm-reserve-inet.patch 2011-02-18 11:42:11.000000000 +0100
@@ -101,16 +101,16 @@
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
-@@ -45,6 +45,8 @@
- #include
+@@ -46,6 +46,8 @@
#include
#include
+ #include
+#include
+#include
/* NOTE. Logic of IP defragmentation is parallel to corresponding IPv6
* code now. If you change something here, _PLEASE_ update ipv6/reassembly.c
-@@ -635,6 +637,34 @@ int ip_defrag(struct sk_buff *skb, u32 u
+@@ -669,6 +671,34 @@ int ip_defrag(struct sk_buff *skb, u32 u
EXPORT_SYMBOL(ip_defrag);
#ifdef CONFIG_SYSCTL
@@ -145,7 +145,7 @@
static int zero;
static struct ctl_table ip4_frags_ns_ctl_table[] = {
-@@ -643,7 +673,7 @@ static struct ctl_table ip4_frags_ns_ctl
+@@ -677,7 +707,7 @@ static struct ctl_table ip4_frags_ns_ctl
.data = &init_net.ipv4.frags.high_thresh,
.maxlen = sizeof(int),
.mode = 0644,
@@ -154,7 +154,7 @@
},
{
.procname = "ipfrag_low_thresh",
-@@ -741,6 +771,8 @@ static inline void ip4_frags_ctl_registe
+@@ -775,6 +805,8 @@ static inline void ip4_frags_ctl_registe
static int __net_init ipv4_frags_init_net(struct net *net)
{
@@ -163,7 +163,7 @@
/*
* Fragment cache limits. We will commit 256K at one time. Should we
* cross that limit we will prune down to 192K. This should cope with
-@@ -758,11 +790,31 @@ static int __net_init ipv4_frags_init_ne
+@@ -792,11 +824,31 @@ static int __net_init ipv4_frags_init_ne
inet_frags_init_net(&net->ipv4.frags);
@@ -206,7 +206,7 @@
#define RT_FL_TOS(oldflp) \
((u32)(oldflp->fl4_tos & (IPTOS_RT_MASK | RTO_ONLINK)))
-@@ -224,6 +225,7 @@ struct rt_hash_bucket {
+@@ -223,6 +224,7 @@ struct rt_hash_bucket {
# define RT_HASH_LOCK_SZ 256
# endif
#endif
@@ -214,7 +214,7 @@
static spinlock_t *rt_hash_locks;
# define rt_hash_lock_addr(slot) &rt_hash_locks[(slot) & (RT_HASH_LOCK_SZ - 1)]
-@@ -268,6 +270,10 @@ static inline int rt_genid(struct net *n
+@@ -267,6 +269,10 @@ static inline int rt_genid(struct net *n
return atomic_read(&net->ipv4.rt_genid);
}
@@ -225,7 +225,7 @@
#ifdef CONFIG_PROC_FS
struct rt_cache_iter_state {
struct seq_net_private p;
-@@ -398,6 +404,36 @@ static int rt_cache_seq_show(struct seq_
+@@ -397,6 +403,36 @@ static int rt_cache_seq_show(struct seq_
return 0;
}
@@ -262,7 +262,7 @@
static const struct seq_operations rt_cache_seq_ops = {
.start = rt_cache_seq_start,
.next = rt_cache_seq_next,
-@@ -3103,7 +3139,7 @@ static ctl_table ipv4_route_table[] = {
+@@ -3094,7 +3130,7 @@ static ctl_table ipv4_route_table[] = {
.data = &ip_rt_max_size,
.maxlen = sizeof(int),
.mode = 0644,
@@ -271,7 +271,7 @@
},
{
/* Deprecated. Use gc_min_interval_ms */
-@@ -3140,7 +3176,7 @@ static ctl_table ipv4_route_table[] = {
+@@ -3131,7 +3167,7 @@ static ctl_table ipv4_route_table[] = {
.data = &ip_rt_redirect_load,
.maxlen = sizeof(int),
.mode = 0644,
@@ -280,7 +280,7 @@
},
{
.procname = "redirect_number",
-@@ -3334,6 +3370,24 @@ int __init ip_rt_init(void)
+@@ -3331,6 +3367,24 @@ int __init ip_rt_init(void)
ipv4_dst_ops.gc_thresh = (rt_hash_mask + 1);
ip_rt_max_size = (rt_hash_mask + 1) * 16;
@@ -315,7 +315,7 @@
#include
#include
-@@ -639,13 +640,41 @@ static const struct inet6_protocol frag_
+@@ -598,13 +599,41 @@ static const struct inet6_protocol frag_
};
#ifdef CONFIG_SYSCTL
@@ -358,7 +358,7 @@
},
{
.procname = "ip6frag_low_thresh",
-@@ -750,17 +779,39 @@ static inline void ip6_frags_sysctl_unre
+@@ -709,17 +738,39 @@ static inline void ip6_frags_sysctl_unre
static int __net_init ipv6_frags_init_net(struct net *net)
{
@@ -409,7 +409,7 @@
#include
#include
#include
-@@ -2532,6 +2533,34 @@ int ipv6_sysctl_rtcache_flush(ctl_table
+@@ -2570,6 +2571,34 @@ int ipv6_sysctl_rtcache_flush(ctl_table
return -EINVAL;
}
@@ -444,7 +444,7 @@
ctl_table ipv6_route_table_template[] = {
{
.procname = "flush",
-@@ -2552,7 +2581,7 @@ ctl_table ipv6_route_table_template[] =
+@@ -2590,7 +2619,7 @@ ctl_table ipv6_route_table_template[] =
.data = &init_net.ipv6.sysctl.ip6_rt_max_size,
.maxlen = sizeof(int),
.mode = 0644,
@@ -453,7 +453,7 @@
},
{
.procname = "gc_min_interval",
-@@ -2627,6 +2656,8 @@ struct ctl_table * __net_init ipv6_route
+@@ -2665,6 +2694,8 @@ struct ctl_table * __net_init ipv6_route
table[9].data = &net->ipv6.sysctl.ip6_rt_gc_min_interval;
}
@@ -462,7 +462,7 @@
return table;
}
#endif
-@@ -2676,6 +2707,14 @@ static int __net_init ip6_route_net_init
+@@ -2717,6 +2748,14 @@ static int __net_init ip6_route_net_init
net->ipv6.sysctl.ip6_rt_mtu_expires = 10*60*HZ;
net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
@@ -477,7 +477,7 @@
#ifdef CONFIG_PROC_FS
proc_net_fops_create(net, "ipv6_route", 0, &ipv6_route_proc_fops);
proc_net_fops_create(net, "rt6_stats", S_IRUGO, &rt6_stats_seq_fops);
-@@ -2686,12 +2725,15 @@ static int __net_init ip6_route_net_init
+@@ -2727,12 +2766,15 @@ static int __net_init ip6_route_net_init
out:
return ret;
@@ -492,9 +492,9 @@
#endif
+ kfree(net->ipv6.ip6_null_entry);
out_ip6_dst_entries:
- dst_entries_destroy(&net->ipv6.ip6_dst_ops);
+ dst_entries_destroy(&net->ipv6.ip6_dst_ops);
out_ip6_dst_ops:
-@@ -2702,6 +2744,7 @@ static void __net_exit ip6_route_net_exi
+@@ -2745,6 +2787,7 @@ static void __net_exit ip6_route_net_exi
proc_net_remove(net, "ipv6_route");
proc_net_remove(net, "rt6_stats");
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/dm-mpath-accept-failed-paths new/patches.suse/dm-mpath-accept-failed-paths
--- old/patches.suse/dm-mpath-accept-failed-paths 2011-02-08 16:52:35.000000000 +0100
+++ new/patches.suse/dm-mpath-accept-failed-paths 2011-02-18 11:42:11.000000000 +0100
@@ -15,24 +15,14 @@
Signed-off-by: Hannes Reinecke
---
---
- drivers/md/dm-mpath.c | 71 ++++++++++++++++++++++++++++++++++++++++----------
+ drivers/md/dm-mpath.c | 68 +++++++++++++++++++++++++++++++++++++++++---------
drivers/md/dm-mpath.h | 1
- drivers/md/dm-table.c | 7 +++-
- 3 files changed, 64 insertions(+), 15 deletions(-)
+ drivers/md/dm-table.c | 7 +++--
+ 3 files changed, 62 insertions(+), 14 deletions(-)
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
-@@ -146,7 +146,8 @@ static void deactivate_path(struct work_
- struct pgpath *pgpath =
- container_of(work, struct pgpath, deactivate_path);
-
-- blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue);
-+ if (pgpath->path.dev)
-+ blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue);
- }
-
- static struct priority_group *alloc_priority_group(void)
-@@ -275,6 +276,11 @@ static int __choose_path_in_pg(struct mu
+@@ -264,6 +264,11 @@ static int __choose_path_in_pg(struct mu
m->current_pgpath = path_to_pgpath(path);
@@ -44,7 +34,7 @@
if (m->current_pg != pg)
__switch_pg(m, m->current_pgpath);
-@@ -593,6 +599,7 @@ static struct pgpath *parse_path(struct
+@@ -582,6 +587,7 @@ static struct pgpath *parse_path(struct
{
int r;
struct pgpath *p;
@@ -52,7 +42,7 @@
struct multipath *m = ti->private;
/* we need at least a path arg */
-@@ -605,14 +612,37 @@ static struct pgpath *parse_path(struct
+@@ -594,14 +600,37 @@ static struct pgpath *parse_path(struct
if (!p)
return ERR_PTR(-ENOMEM);
@@ -94,7 +84,7 @@
struct request_queue *q = bdev_get_queue(p->path.dev->bdev);
r = scsi_dh_attach(q, m->hw_handler_name);
-@@ -649,6 +679,11 @@ static struct pgpath *parse_path(struct
+@@ -638,6 +667,11 @@ static struct pgpath *parse_path(struct
goto bad;
}
@@ -106,7 +96,7 @@
return p;
bad:
-@@ -978,7 +1013,7 @@ static int fail_path(struct pgpath *pgpa
+@@ -967,7 +1001,7 @@ static int fail_path(struct pgpath *pgpa
if (!pgpath->is_active)
goto out;
@@ -115,7 +105,7 @@
pgpath->pg->ps.type->fail_path(&pgpath->pg->ps, &pgpath->path);
pgpath->is_active = 0;
-@@ -990,7 +1025,7 @@ static int fail_path(struct pgpath *pgpa
+@@ -979,7 +1013,7 @@ static int fail_path(struct pgpath *pgpa
m->current_pgpath = NULL;
dm_path_uevent(DM_UEVENT_PATH_FAILED, m->ti,
@@ -123,8 +113,8 @@
+ pgpath->path.pdev, m->nr_valid_paths);
schedule_work(&m->trigger_event);
- queue_work(kmultipathd, &pgpath->deactivate_path);
-@@ -1015,6 +1050,12 @@ static int reinstate_path(struct pgpath
+
+@@ -1003,6 +1037,12 @@ static int reinstate_path(struct pgpath
if (pgpath->is_active)
goto out;
@@ -137,7 +127,7 @@
if (!pgpath->pg->ps.type->reinstate_path) {
DMWARN("Reinstate path not supported by path selector %s",
pgpath->pg->ps.type->name);
-@@ -1037,7 +1078,7 @@ static int reinstate_path(struct pgpath
+@@ -1025,7 +1065,7 @@ static int reinstate_path(struct pgpath
}
dm_path_uevent(DM_UEVENT_PATH_REINSTATED, m->ti,
@@ -146,7 +136,7 @@
schedule_work(&m->trigger_event);
-@@ -1057,6 +1098,9 @@ static int action_dev(struct multipath *
+@@ -1045,6 +1085,9 @@ static int action_dev(struct multipath *
struct pgpath *pgpath;
struct priority_group *pg;
@@ -156,7 +146,7 @@
list_for_each_entry(pg, &m->priority_groups, list) {
list_for_each_entry(pgpath, &pg->pgpaths, list) {
if (pgpath->path.dev == dev)
-@@ -1241,8 +1285,9 @@ static void activate_path(struct work_st
+@@ -1229,8 +1272,9 @@ static void activate_path(struct work_st
struct pgpath *pgpath =
container_of(work, struct pgpath, activate_path);
@@ -168,7 +158,7 @@
}
/*
-@@ -1426,7 +1471,7 @@ static int multipath_status(struct dm_ta
+@@ -1414,7 +1458,7 @@ static int multipath_status(struct dm_ta
pg->ps.type->info_args);
list_for_each_entry(p, &pg->pgpaths, list) {
@@ -177,7 +167,7 @@
p->is_active ? "A" : "F",
p->fail_count);
if (pg->ps.type->status)
-@@ -1452,7 +1497,7 @@ static int multipath_status(struct dm_ta
+@@ -1440,7 +1484,7 @@ static int multipath_status(struct dm_ta
pg->ps.type->table_args);
list_for_each_entry(p, &pg->pgpaths, list) {
@@ -186,7 +176,7 @@
if (pg->ps.type->status)
sz += pg->ps.type->status(&pg->ps,
&p->path, type, result + sz,
-@@ -1544,7 +1589,7 @@ static int multipath_ioctl(struct dm_tar
+@@ -1532,7 +1576,7 @@ static int multipath_ioctl(struct dm_tar
if (!m->current_pgpath)
__choose_pgpath(m, 0);
@@ -207,7 +197,7 @@
};
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
-@@ -541,9 +541,12 @@ int dm_get_device(struct dm_target *ti,
+@@ -535,9 +535,12 @@ int dm_get_device(struct dm_target *ti,
*/
void dm_put_device(struct dm_target *ti, struct dm_dev *d)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/sched-automated-per-session-task-groups new/patches.suse/sched-automated-per-session-task-groups
--- old/patches.suse/sched-automated-per-session-task-groups 2011-02-08 16:52:35.000000000 +0100
+++ new/patches.suse/sched-automated-per-session-task-groups 2011-02-18 11:42:11.000000000 +0100
@@ -76,11 +76,9 @@
kernel/sysctl.c | 11 +
11 files changed, 416 insertions(+), 47 deletions(-)
-Index: linux-2.6.37-master/Documentation/kernel-parameters.txt
-===================================================================
---- linux-2.6.37-master.orig/Documentation/kernel-parameters.txt
-+++ linux-2.6.37-master/Documentation/kernel-parameters.txt
-@@ -1622,6 +1622,8 @@ and is between 256 and 4096 characters.
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -1623,6 +1623,8 @@ and is between 256 and 4096 characters.
noapic [SMP,APIC] Tells the kernel to not make use of any
IOAPICs that may be present in the system.
@@ -89,10 +87,8 @@
nobats [PPC] Do not use BATs for mapping kernel lowmem
on "Classic" PPC cores.
-Index: linux-2.6.37-master/fs/proc/base.c
-===================================================================
---- linux-2.6.37-master.orig/fs/proc/base.c
-+++ linux-2.6.37-master/fs/proc/base.c
+--- a/fs/proc/base.c
++++ b/fs/proc/base.c
@@ -1407,6 +1407,82 @@ static const struct file_operations proc
#endif
@@ -186,10 +182,8 @@
REG("comm", S_IRUGO|S_IWUSR, proc_pid_set_comm_operations),
#ifdef CONFIG_HAVE_ARCH_TRACEHOOK
INF("syscall", S_IRUSR, proc_pid_syscall),
-Index: linux-2.6.37-master/include/linux/sched.h
-===================================================================
---- linux-2.6.37-master.orig/include/linux/sched.h
-+++ linux-2.6.37-master/include/linux/sched.h
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -509,6 +509,8 @@ struct thread_group_cputimer {
spinlock_t lock;
};
@@ -234,10 +228,8 @@
#ifdef CONFIG_RT_MUTEXES
extern int rt_mutex_getprio(struct task_struct *p);
extern void rt_mutex_setprio(struct task_struct *p, int prio);
-Index: linux-2.6.37-master/init/Kconfig
-===================================================================
---- linux-2.6.37-master.orig/init/Kconfig
-+++ linux-2.6.37-master/init/Kconfig
+--- a/init/Kconfig
++++ b/init/Kconfig
@@ -774,6 +774,19 @@ config NET_NS
endif # NAMESPACES
@@ -258,10 +250,8 @@
config MM_OWNER
bool
-Index: linux-2.6.37-master/kernel/fork.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/fork.c
-+++ linux-2.6.37-master/kernel/fork.c
+--- a/kernel/fork.c
++++ b/kernel/fork.c
@@ -169,6 +169,7 @@ EXPORT_SYMBOL(free_task);
static inline void free_signal_struct(struct signal_struct *sig)
{
@@ -278,10 +268,8 @@
sig->oom_adj = current->signal->oom_adj;
sig->oom_score_adj = current->signal->oom_score_adj;
-Index: linux-2.6.37-master/kernel/sched.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/sched.c
-+++ linux-2.6.37-master/kernel/sched.c
+--- a/kernel/sched.c
++++ b/kernel/sched.c
@@ -78,6 +78,7 @@
#include "sched_cpupri.h"
@@ -301,13 +289,16 @@
};
#define root_task_group init_task_group
-@@ -605,11 +610,14 @@ static inline int cpu_of(struct rq *rq)
+@@ -605,6 +610,7 @@ static inline int cpu_of(struct rq *rq)
*/
static inline struct task_group *task_group(struct task_struct *p)
{
+ struct task_group *tg;
struct cgroup_subsys_state *css;
+ if (p->flags & PF_EXITING)
+@@ -612,7 +618,9 @@ static inline struct task_group *task_gr
+
css = task_subsys_state_check(p, cpu_cgroup_subsys_id,
lockdep_is_held(&task_rq(p)->lock));
- return container_of(css, struct task_group, css);
@@ -317,7 +308,7 @@
}
/* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */
-@@ -2063,6 +2071,7 @@ static void update_rq_clock_task(struct
+@@ -2066,6 +2074,7 @@ static void update_rq_clock_task(struct
#include "sched_idletask.c"
#include "sched_fair.c"
#include "sched_rt.c"
@@ -325,7 +316,7 @@
#include "sched_stoptask.c"
#ifdef CONFIG_SCHED_DEBUG
# include "sched_debug.c"
-@@ -8164,7 +8173,7 @@ void __init sched_init(void)
+@@ -8167,7 +8176,7 @@ void __init sched_init(void)
#ifdef CONFIG_CGROUP_SCHED
list_add(&init_task_group.list, &task_groups);
INIT_LIST_HEAD(&init_task_group.children);
@@ -334,7 +325,7 @@
#endif /* CONFIG_CGROUP_SCHED */
#if defined CONFIG_FAIR_GROUP_SCHED && defined CONFIG_SMP
-@@ -8624,6 +8633,7 @@ static void free_sched_group(struct task
+@@ -8627,6 +8636,7 @@ static void free_sched_group(struct task
{
free_fair_sched_group(tg);
free_rt_sched_group(tg);
@@ -342,10 +333,8 @@
kfree(tg);
}
-Index: linux-2.6.37-master/kernel/sched_autogroup.c
-===================================================================
--- /dev/null
-+++ linux-2.6.37-master/kernel/sched_autogroup.c
++++ b/kernel/sched_autogroup.c
@@ -0,0 +1,238 @@
+#ifdef CONFIG_SCHED_AUTOGROUP
+
@@ -585,10 +574,8 @@
+#endif /* CONFIG_SCHED_DEBUG */
+
+#endif /* CONFIG_SCHED_AUTOGROUP */
-Index: linux-2.6.37-master/kernel/sched_autogroup.h
-===================================================================
--- /dev/null
-+++ linux-2.6.37-master/kernel/sched_autogroup.h
++++ b/kernel/sched_autogroup.h
@@ -0,0 +1,32 @@
+#ifdef CONFIG_SCHED_AUTOGROUP
+
@@ -622,10 +609,8 @@
+#endif
+
+#endif /* CONFIG_SCHED_AUTOGROUP */
-Index: linux-2.6.37-master/kernel/sched_debug.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/sched_debug.c
-+++ linux-2.6.37-master/kernel/sched_debug.c
+--- a/kernel/sched_debug.c
++++ b/kernel/sched_debug.c
@@ -54,8 +54,7 @@ static unsigned long nsec_low(unsigned l
#define SPLIT_NS(x) nsec_high(x), nsec_low(x)
@@ -708,10 +693,8 @@
#define P(x) \
SEQ_printf(m, " .%-30s: %Ld\n", #x, (long long)(rt_rq->x))
-Index: linux-2.6.37-master/kernel/sys.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/sys.c
-+++ linux-2.6.37-master/kernel/sys.c
+--- a/kernel/sys.c
++++ b/kernel/sys.c
@@ -1080,8 +1080,10 @@ SYSCALL_DEFINE0(setsid)
err = session;
out:
@@ -724,11 +707,9 @@
return err;
}
-Index: linux-2.6.37-master/kernel/sysctl.c
-===================================================================
---- linux-2.6.37-master.orig/kernel/sysctl.c
-+++ linux-2.6.37-master/kernel/sysctl.c
-@@ -382,6 +382,17 @@ static struct ctl_table kern_table[] = {
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -383,6 +383,17 @@ static struct ctl_table kern_table[] = {
.mode = 0644,
.proc_handler = proc_dointvec,
},
++++++ patches.xen.tar.bz2 ++++++
++++ 2017 lines of diff (skipped)
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:52:02.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:52:02.000000000 +0100
@@ -27,6 +27,7 @@
# DO NOT MODIFY THEM!
# Send separate patches upstream if you find a problem...
########################################################
+ patches.kernel.org/patch-2.6.37.1
########################################################
# Build fixes that apply to the vanilla kernel too.
@@ -93,8 +94,6 @@
# Once that patch is released, then this one should go away.
# I'm accepting it for now because it fixes the crashes that
# many of us have been seeing with 2.6.37-rcX. -jeffm
- patches.fixes/sched-cgroup-use-exit-hook-to-avoid-use-after-free-crash
- patches.fixes/fix-prlimit64-for-suid-sgid-processes.patch
########################################################
# Architecture-specific patches. These used to be all
@@ -138,8 +137,6 @@
patches.suse/x86-mark_rodata_rw.patch
- patches.arch/x86-mtrr-avoid-MTRR-reprogramming-on-BP-during-boot-on.patch
-
########################################################
# x86 MCE/MCA (Machine Check Error/Architecture) extensions
########################################################
@@ -232,7 +229,6 @@
########################################################
patches.suse/connector-read-mostly
patches.suse/kbd-ignore-gfx.patch
- patches.fixes/calibrate-jiffy-overflow
########################################################
#
@@ -270,6 +266,10 @@
patches.arch/acpi_fix_global_lock_acquisition.patch
patches.arch/acpi_init_global_lock.patch
+ patches.fixes/PNP-ACPI-Use-DEVICE_ACPI_HANDLE-for-device-ACPI-handle-access.patch
+
+ patches.arch/acpi-debugfs-fix-buffer-overflows-double-free.patch
+
########################################################
# CPUFREQ
########################################################
@@ -465,6 +465,7 @@
########################################################
patches.drivers/disable-catas_reset-by-default-to-avoid-problems-with-eeh.patch
+ patches.fixes/revert-tpm_tis-Use-timeouts-returned-from-TPM.patch
########################################################
# Storage
@@ -500,7 +501,6 @@
patches.fixes/sd_liberal_28_sense_invalid.diff
patches.fixes/scsi-ibmvscsi-module_alias.patch
- patches.fixes/fix-ata-panic-with-ata_id
patches.fixes/loop-queue_lock-null-pointer-derefence-in-blk_throtl_exit-v3.patch
########################################################
@@ -508,6 +508,11 @@
########################################################
########################################################
+ # video4linux
+ ########################################################
+ patches.fixes/flexcop-fix-registering-braindead-stupid-names
+
+ ########################################################
# Network
########################################################
patches.fixes/tulip-quad-NIC-ifdown
@@ -525,7 +530,9 @@
patches.drivers/tg3-5785-and-57780-asic-revs-not-working.patch
patches.fixes/ipv6-revert-dont-flush-routes-when-setting-loopback-down.patch
-
+ patches.fixes/bridge-fix-hash-list-corruption.patch
+ patches.fixes/bridge-fix-timer-arming.patch
+ patches.fixes/bridge-remove-hash-list.patch
########################################################
# Wireless Networking
@@ -533,8 +540,10 @@
patches.suse/wireless-no-aes-select
patches.suse/b43-missing-firmware-info.patch
patches.fixes/iwlwifi-fix-tx-power-configuration-on-3945-and-4965-devices
- patches.fixes/staging-rt2860-Fix-incorrect-netif_stop_queue-usage.patch
patches.fixes/orinoco-allow-IW_AUTH_MFP-to-pass-through.patch
+ patches.fixes/0001-Revert-ath9k-use-per-device-struct-for-pm_qos_-opera.patch
+ patches.fixes/0002-Revert-ath9k-Remove-pm_qos-request-after-hw-unregist.patch
+ patches.fixes/0003-Revert-ath9k-Fix-a-DMA-latency-issue-for-Intel-Pinet.patch
########################################################
# ISDN
@@ -573,13 +582,13 @@
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/input-introduce-notimeout-blacklist-for-Dell-Vostro-.patch
+ patches.drivers/tty-add-active-sysfs-attribute-to-tty0-and-console-device
##########################################################
# Sound
##########################################################
- patches.drivers/alsa-hda-0001-Fix-memory-leaks-in-conexant-jack-arrays
- patches.drivers/alsa-hda-0002-Fix-missing-CA-initialization-for-HDMI-DP
+ patches.drivers/alsa-hda-0003-Add-Lenovo-vendor-quirk-for-Conexant-205xx
+ patches.drivers/alsa-01-caiaq-Fix-possible-string-buffer-overflow
########################################################
# Other driver fixes
@@ -706,6 +715,7 @@
# Staging tree patches
# new drivers that are going upstream
########################################################
+ patches.drivers/staging-samsung-laptop-add-support-for-lots-of-laptops.patch
########################################################
# "fastboot" patches
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.EUYLHH/_old 2011-02-22 13:52:02.000000000 +0100
+++ /var/tmp/diff_new_pack.EUYLHH/_new 2011-02-22 13:52:02.000000000 +0100
@@ -1,3 +1,3 @@
-2011-02-09 14:44:19 +0100
-GIT Revision: 31e675a20f711a01725583694d920da20d5f47c2
+2011-02-21 10:34:10 +0100
+GIT Revision: f6a72cca01b25188702a071aa4450fc442b8b47a
GIT Branch: openSUSE-11.4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org