Merge ../linus
authorDave Jones <davej@redhat.com>
Tue, 12 Dec 2006 22:41:41 +0000 (17:41 -0500)
committerDave Jones <davej@redhat.com>
Tue, 12 Dec 2006 22:41:41 +0000 (17:41 -0500)
Conflicts:

drivers/cpufreq/cpufreq.c

1  2 
Documentation/feature-removal-schedule.txt
MAINTAINERS
drivers/cpufreq/cpufreq.c
drivers/cpufreq/cpufreq_conservative.c
drivers/cpufreq/cpufreq_ondemand.c
include/asm-i386/msr.h
include/asm-x86_64/msr.h

@@@ -30,11 -30,39 +30,39 @@@ Who:       Adrian Bunk <bunk@stusta.de
  ---------------------------
  
  What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
- When: November 2006
- Why:  Deprecated in favour of the new ioctl-based rawiso interface, which is
-       more efficient.  You should really be using libraw1394 for raw1394
-       access anyway.
- Who:  Jody McIntyre <scjody@modernduck.com>
+ When: June 2007
+ Why:  Deprecated in favour of the more efficient and robust rawiso interface.
+       Affected are applications which use the deprecated part of libraw1394
+       (raw1394_iso_write, raw1394_start_iso_write, raw1394_start_iso_rcv,
+       raw1394_stop_iso_rcv) or bypass libraw1394.
+ Who:  Dan Dennedy <dan@dennedy.org>, Stefan Richter <stefanr@s5r6.in-berlin.de>
+ ---------------------------
+ What: dv1394 driver (CONFIG_IEEE1394_DV1394)
+ When: June 2007
+ Why:  Replaced by raw1394 + userspace libraries, notably libiec61883.  This
+       shift of application support has been indicated on www.linux1394.org
+       and developers' mailinglists for quite some time.  Major applications
+       have been converted, with the exception of ffmpeg and hence xine.
+       Piped output of dvgrab2 is a partial equivalent to dv1394.
+ Who:  Dan Dennedy <dan@dennedy.org>, Stefan Richter <stefanr@s5r6.in-berlin.de>
+ ---------------------------
+ What: ieee1394 core's unused exports (CONFIG_IEEE1394_EXPORT_FULL_API)
+ When: January 2007
+ Why:  There are no projects known to use these exported symbols, except
+       dfg1394 (uses one symbol whose functionality is core-internal now).
+ Who:  Stefan Richter <stefanr@s5r6.in-berlin.de>
+ ---------------------------
+ What: ieee1394's *_oui sysfs attributes (CONFIG_IEEE1394_OUI_DB)
+ When: January 2007
+ Files:        drivers/ieee1394/: oui.db, oui2c.sh
+ Why:  big size, little value
+ Who:  Stefan Richter <stefanr@s5r6.in-berlin.de>
  
  ---------------------------
  
@@@ -53,18 -81,6 +81,6 @@@ Who: Mauro Carvalho Chehab <mchehab@brt
  
  ---------------------------
  
- What: sys_sysctl
- When: January 2007
- Why:  The same information is available through /proc/sys and that is the
-       interface user space prefers to use. And there do not appear to be
-       any existing user in user space of sys_sysctl.  The additional
-       maintenance overhead of keeping a set of binary names gets
-       in the way of doing a good job of maintaining this interface.
- Who:  Eric Biederman <ebiederm@xmission.com>
- ---------------------------
  What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
  When: November 2005
  Files:        drivers/pcmcia/: pcmcia_ioctl.c
@@@ -82,18 -98,6 +98,6 @@@ Who: Dominik Brodowski <linux@brodo.de
  
  ---------------------------
  
- What: ip_queue and ip6_queue (old ipv4-only and ipv6-only netfilter queue)
- When: December 2005
- Why:  This interface has been obsoleted by the new layer3-independent
-       "nfnetlink_queue".  The Kernel interface is compatible, so the old
-       ip[6]tables "QUEUE" targets still work and will transparently handle
-       all packets into nfnetlink queue number 0.  Userspace users will have
-       to link against API-compatible library on top of libnfnetlink_queue 
-       instead of the current 'libipq'.
- Who:  Harald Welte <laforge@netfilter.org>
- ---------------------------
  What: remove EXPORT_SYMBOL(kernel_thread)
  When: August 2006
  Files:        arch/*/kernel/*_ksyms.c
@@@ -212,17 -216,6 +216,6 @@@ Who:      Thomas Gleixner <tglx@linutronix.d
  
  ---------------------------
  
- What: i2c-ite and i2c-algo-ite drivers
- When: September 2006
- Why:  These drivers never compiled since they were added to the kernel
-       tree 5 years ago. This feature removal can be reevaluated if
-       someone shows interest in the drivers, fixes them and takes over
-       maintenance.
-       http://marc.theaimsgroup.com/?l=linux-mips&m=115040510817448
- Who:  Jean Delvare <khali@linux-fr.org>
- ---------------------------
  What: Bridge netfilter deferred IPv4/IPv6 output hook calling
  When: January 2007
  Why:  The deferred output hooks are a layering violation causing unusual
@@@ -239,23 -232,8 +232,8 @@@ Who:      Patrick McHardy <kaber@trash.net
  
  ---------------------------
  
- What: frame diverter
- When: November 2006
- Why:  The frame diverter is included in most distribution kernels, but is
-       broken. It does not correctly handle many things:
-       - IPV6
-       - non-linear skb's
-       - network device RCU on removal
-       - input frames not correctly checked for protocol errors
-       It also adds allocation overhead even if not enabled.
-       It is not clear if anyone is still using it.
- Who:  Stephen Hemminger <shemminger@osdl.org>
- ---------------------------
  What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
- When: Oktober 2008
+ When: October 2008
  Why:  The stacking of class devices makes these values misleading and
        inconsistent.
        Class devices should not carry any of these properties, and bus
@@@ -273,32 -251,11 +251,33 @@@ Who:    Jean Delvare <khali@linux-fr.org
  
  ---------------------------
  
- What: ftape
- When: 2.6.20
- Why:  Orphaned for ages.  SMP bugs long unfixed.  Few users left
-       in the world.
- Who:  Jeff Garzik <jeff@garzik.org>
+ What: IPv4 only connection tracking/NAT/helpers
+ When: 2.6.22
+ Why:  The new layer 3 independant connection tracking replaces the old
+       IPv4 only version. After some stabilization of the new code the
+       old one will be removed.
+ Who:  Patrick McHardy <kaber@trash.net>
  
  ---------------------------
 +
 +What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver
 +When: December 2006
 +Why:  Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are
 +      functionally very much similar. They talk to ACPI in same way. Only
 +      difference between them is the way they do frequency transitions.
 +      One uses MSRs and the other one uses IO ports. Functionaliy of
 +      speedstep_centrino with ACPI hooks is now merged into acpi-cpufreq.
 +      That means one common driver will support all Intel Enhanced Speedstep
 +      capable CPUs. That means less confusion over name of
 +      speedstep-centrino driver (with that driver supposed to be used on
 +      non-centrino platforms). That means less duplication of code and
 +      less maintenance effort and no possibility of these two drivers
 +      going out of sync.
 +      Current users of speedstep_centrino with ACPI hooks are requested to
 +      switch over to acpi-cpufreq driver. speedstep-centrino will continue
 +      to work using older non-ACPI static table based scheme even after this
 +      date.
 +
 +Who:  Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
 +
 +---------------------------
diff --combined MAINTAINERS
@@@ -155,16 -155,16 +155,16 @@@ L:      netdev@vger.kernel.or
  S:    Maintained
  
  9P FILE SYSTEM
- P:      Eric Van Hensbergen
- M:      ericvh@gmail.com
- P:      Ron Minnich
- M:      rminnich@lanl.gov
- P:      Latchesar Ionkov
- M:      lucho@ionkov.net
- L:      v9fs-developer@lists.sourceforge.net
- W:      http://v9fs.sf.net
- T:      git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
- S:      Maintained
+ P:    Eric Van Hensbergen
+ M:    ericvh@gmail.com
+ P:    Ron Minnich
+ M:    rminnich@lanl.gov
+ P:    Latchesar Ionkov
+ M:    lucho@ionkov.net
+ L:    v9fs-developer@lists.sourceforge.net
+ W:    http://v9fs.sf.net
+ T:    git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
+ S:    Maintained
  
  A2232 SERIAL BOARD DRIVER
  P:    Enver Haase
@@@ -290,8 -290,8 +290,8 @@@ M: ink@jurassic.park.msu.r
  S:    Maintained for 2.4; PCI support for 2.6.
  
  AMD GEODE PROCESSOR/CHIPSET SUPPORT
- P:      Jordan Crouse
- M:      info-linux@geode.amd.com
+ P:    Jordan Crouse
+ M:    info-linux@geode.amd.com
  L:    info-linux@geode.amd.com
  W:    http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
  S:    Supported
@@@ -348,11 -348,24 +348,24 @@@ P:      Ian Molto
  M:    spyro@f2s.com
  S:    Maintained
  
+ ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
+ P:      Andrew Victor
+ M:      andrew@sanpeople.com
+ L:      linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
+ W:      http://maxim.org.za/at91_26.html
+ S:      Maintained
  ARM/CORGI MACHINE SUPPORT
  P:    Richard Purdie
  M:    rpurdie@rpsys.net
  S:    Maintained
  
+ ARM/HP JORNADA 7XX MACHINE SUPPORT
+ P:      Kristoffer Ericson
+ M:      kristoffer_e1@hotmail.com
+ W:      www.jlime.com
+ S:      Maintained
  ARM/TOSA MACHINE SUPPORT
  P:    Dirk Opfer
  M:    dirk@opfer-online.de
@@@ -426,6 -439,13 +439,13 @@@ L:       linux-atm-general@lists.sourceforge.
  W:    http://linux-atm.sourceforge.net
  S:    Maintained
  
+ ATMEL MACB ETHERNET DRIVER
+ P:    Atmel AVR32 Support Team
+ M:    avr32@atmel.com
+ P:    Haavard Skinnemoen
+ M:    hskinnemoen@atmel.com
+ S:    Supported
  ATMEL WIRELESS DRIVER
  P:    Simon Kelley
  M:    simon@thekelleys.org.uk
@@@ -493,7 -513,7 +513,7 @@@ S: Maintaine
  
  BFS FILE SYSTEM
  P:    Tigran A. Aivazian
- M:    tigran@veritas.com
+ M:    tigran@aivazian.fsnet.co.uk
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
@@@ -595,13 -615,13 +615,13 @@@ M:      maxk@qualcomm.co
  S:    Maintained
  
  BONDING DRIVER
- P:   Chad Tindel
- M:   ctindel@users.sourceforge.net
- P:   Jay Vosburgh
- M:   fubar@us.ibm.com
- L:   bonding-devel@lists.sourceforge.net
- W:   http://sourceforge.net/projects/bonding/
- S:   Supported
+ P:    Chad Tindel
+ M:    ctindel@users.sourceforge.net
+ P:    Jay Vosburgh
+ M:    fubar@us.ibm.com
+ L:    bonding-devel@lists.sourceforge.net
+ W:    http://sourceforge.net/projects/bonding/
+ S:    Supported
  
  BROADBAND PROCESSOR ARCHITECTURE
  P:    Arnd Bergmann
@@@ -664,7 -684,7 +684,7 @@@ S: Supporte
  CIRRUS LOGIC GENERIC FBDEV DRIVER
  P:    Jeff Garzik
  M:    jgarzik@pobox.com
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Odd Fixes
  
  CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
@@@ -720,7 -740,7 +740,7 @@@ P: Dave Jone
  M:    davej@codemonkey.org.uk
  L:    cpufreq@lists.linux.org.uk
  W:    http://www.codemonkey.org.uk/projects/cpufreq/
 -T:    git kernel.org/pub/scm/linux/kernel/davej/cpufreq.git
 +T:    git kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
  S:    Maintained
  
  CPUID/MSR DRIVER
@@@ -738,8 -758,8 +758,8 @@@ W: http://www.bullopensource.org/cpuset
  S:    Supported
  
  CRAMFS FILESYSTEM
- W:     http://sourceforge.net/projects/cramfs/
- S:     Orphan
+ W:    http://sourceforge.net/projects/cramfs/
+ S:    Orphan
  
  CRIS PORT
  P:    Mikael Starvik
@@@ -771,7 -791,7 +791,7 @@@ S: Maintaine
  CYBLAFB FRAMEBUFFER DRIVER
  P:    Knut Petersen
  M:    Knut_Petersen@t-online.de
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  
  CYCLADES 2X SYNC CARD DRIVER
@@@ -1048,11 -1068,11 +1068,11 @@@ W:   http://sourceforge.net/projects/emu1
  S:    Maintained
  
  EMULEX LPFC FC SCSI DRIVER
- P:      James Smart
- M:      james.smart@emulex.com
- L:      linux-scsi@vger.kernel.org
- W:      http://sourceforge.net/projects/lpfcxxxx
- S:      Supported
+ P:    James Smart
+ M:    james.smart@emulex.com
+ L:    linux-scsi@vger.kernel.org
+ W:    http://sourceforge.net/projects/lpfcxxxx
+ S:    Supported
  
  EPSON 1355 FRAMEBUFFER DRIVER
  P:    Christopher Hoover
@@@ -1078,13 -1098,19 +1098,19 @@@ M:   miku@iki.f
  S:    Maintained
  
  EXT2 FILE SYSTEM
- L:    ext2-devel@lists.sourceforge.net
+ L:    linux-ext4@vger.kernel.org
  S:    Maintained
  
  EXT3 FILE SYSTEM
  P:    Stephen Tweedie, Andrew Morton
  M:    sct@redhat.com, akpm@osdl.org, adilger@clusterfs.com
- L:    ext2-devel@lists.sourceforge.net
+ L:    linux-ext4@vger.kernel.org
+ S:    Maintained
+ EXT4 FILE SYSTEM
+ P:    Stephen Tweedie, Andrew Morton
+ M:    sct@redhat.com, akpm@osdl.org, adilger@clusterfs.com
+ L:    linux-ext4@vger.kernel.org
  S:    Maintained
  
  F71805F HARDWARE MONITORING DRIVER
@@@ -1102,7 -1128,7 +1128,7 @@@ S:      Supporte
  FRAMEBUFFER LAYER
  P:    Antonino Daplas
  M:    adaplas@pol.net
- L:    linux-fbdev-devel@lists.sourceforge.net 
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  W:    http://linux-fbdev.sourceforge.net/
  S:    Maintained
  
@@@ -1153,11 -1179,6 +1179,6 @@@ P:     David Howell
  M:    dhowells@redhat.com
  S:    Maintained
  
- FTAPE/QIC-117
- L:    linux-tape@vger.kernel.org
- W:    http://sourceforge.net/projects/ftape
- S:    Orphan
  FUSE: FILESYSTEM IN USERSPACE
  P:    Miklos Szeredi
  M:    miklos@szeredi.hu
@@@ -1206,7 -1227,8 +1227,8 @@@ HARDWARE MONITORIN
  P:    Jean Delvare
  M:    khali@linux-fr.org
  L:    lm-sensors@lm-sensors.org
- W:    http://www.lm-sensors.nu/
+ W:    http://www.lm-sensors.org/
+ T:    quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-hwmon/
  S:    Maintained
  
  HARDWARE RANDOM NUMBER GENERATOR CORE
@@@ -1332,8 -1354,7 +1354,7 @@@ I2C SUBSYSTE
  P:    Jean Delvare
  M:    khali@linux-fr.org
  L:    i2c@lm-sensors.org
- W:    http://www.lm-sensors.nu/
- T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
+ T:    quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/
  S:    Maintained
  
  I2O
@@@ -1458,7 -1479,7 +1479,7 @@@ S:      Maintaine
  IMS TWINTURBO FRAMEBUFFER DRIVER
  P:    Paul Mundt
  M:    lethal@chaoticdreams.org
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  
  INFINIBAND SUBSYSTEM
@@@ -1489,16 -1510,16 +1510,16 @@@ L:   linux-kernel@vger.kernel.or
  S:    Maintained
  
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
- P:      Sylvain Meyer
- M:      sylvain.meyer@worldonline.fr
- L:      linux-fbdev-devel@lists.sourceforge.net
- S:      Maintained
+ P:    Sylvain Meyer
+ M:    sylvain.meyer@worldonline.fr
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
+ S:    Maintained
  
  INTEL 810/815 FRAMEBUFFER DRIVER
- P:      Antonino Daplas
- M:      adaplas@pol.net
- L:      linux-fbdev-devel@lists.sourceforge.net
- S:      Maintained
+ P:    Antonino Daplas
+ M:    adaplas@pol.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
+ S:    Maintained
  
  INTEL APIC/IOAPIC, LOWLEVEL X86 SMP SUPPORT
  P:    Ingo Molnar
@@@ -1513,7 -1534,7 +1534,7 @@@ S:      Maintaine
  
  INTEL IA32 MICROCODE UPDATE SUPPORT
  P:    Tigran Aivazian
- M:    tigran@veritas.com
+ M:    tigran@aivazian.fsnet.co.uk
  S:    Maintained
  
  INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
@@@ -1665,7 -1686,13 +1686,13 @@@ S:    Supporte
  JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
  P:    Stephen Tweedie, Andrew Morton
  M:    sct@redhat.com, akpm@osdl.org
- L:    ext2-devel@lists.sourceforge.net
+ L:    linux-ext4@vger.kernel.org
+ S:    Maintained
+ K8TEMP HARDWARE MONITORING DRIVER
+ P:    Rudolf Marek
+ M:    r.marek@assembler.cz
+ L:    lm-sensors@lm-sensors.org
  S:    Maintained
  
  KCONFIG
@@@ -1818,11 -1845,11 +1845,11 @@@ L:   linuxppc-embedded@ozlabs.or
  S:    Maintained
  
  LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
- P:     Kumar Gala
- M:     galak@kernel.crashing.org
- W:     http://www.penguinppc.org/
- L:     linuxppc-embedded@ozlabs.org
- S:     Maintained
+ P:    Kumar Gala
+ M:    galak@kernel.crashing.org
+ W:    http://www.penguinppc.org/
+ L:    linuxppc-embedded@ozlabs.org
+ S:    Maintained
  
  LINUX FOR POWERPC PA SEMI PWRFICIENT
  P:    Olof Johansson
@@@ -1921,10 -1948,10 +1948,10 @@@ W:   http://www.syskonnect.co
  S:    Supported
  
  MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7
- P: Michael Kerrisk
- M: mtk-manpages@gmx.net
- W: ftp://ftp.kernel.org/pub/linux/docs/manpages
- S: Maintained
+ P:    Michael Kerrisk
+ M:    mtk-manpages@gmx.net
+ W:    ftp://ftp.kernel.org/pub/linux/docs/manpages
+ S:    Maintained
  
  MARVELL MV643XX ETHERNET DRIVER
  P:    Dale Farnsworth
@@@ -1937,15 -1964,15 +1964,15 @@@ S:   Odd Fixes for 2.4; Maintained for 2.
  MATROX FRAMEBUFFER DRIVER
  P:    Petr Vandrovec
  M:    vandrove@vc.cvut.cz
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  
  MEGARAID SCSI DRIVERS
- P:     Neela Syam Kolli
- M:     Neela.Kolli@engenio.com
- S:     linux-scsi@vger.kernel.org
- W:     http://megaraid.lsilogic.com
- S:     Maintained
+ P:    Neela Syam Kolli
+ M:    Neela.Kolli@engenio.com
+ S:    linux-scsi@vger.kernel.org
+ W:    http://megaraid.lsilogic.com
+ S:    Maintained
  
  MEMORY MANAGEMENT
  L:    linux-mm@kvack.org
@@@ -1998,6 -2025,12 +2025,12 @@@ M:    rubini@ipvvis.unipv.i
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
+ MOXA SMARTIO/INDUSTIO SERIAL CARD (MXSER 2.0)
+ P:    Jiri Slaby
+ M:    jirislaby@gmail.com
+ L:    linux-kernel@vger.kernel.org
+ S:    Maintained
  MSI LAPTOP SUPPORT
  P:    Lennart Poettering
  M:    mzxreary@0pointer.de
@@@ -2012,14 -2045,23 +2045,23 @@@ L:   linux-kernel@vger.kernel.or
  W:    http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html
  S:    Maintained
  
- MULTIMEDIA CARD (MMC) SUBSYSTEM
- S:    Orphan
+ MULTIMEDIA CARD (MMC) AND SECURE DIGITAL (SD) SUBSYSTEM
+ P:    Pierre Ossman
+ M:    drzeus-mmc@drzeus.cx
+ L:    linux-kernel@vger.kernel.org
+ S:    Maintained
  
  MULTISOUND SOUND DRIVER
  P:    Andrew Veliath
  M:    andrewtv@usa.net
  S:    Maintained
  
+ MULTITECH MULTIPORT CARD (ISICOM)
+ P:    Jiri Slaby
+ M:    jirislaby@gmail.com
+ L:    linux-kernel@vger.kernel.org
+ S:    Maintained
  NATSEMI ETHERNET DRIVER (DP8381x)
  P:    Tim Hockin
  M:    thockin@hockin.org
@@@ -2049,11 -2091,13 +2091,13 @@@ P:   Marc Bouche
  P:    James Morris
  P:    Harald Welte
  P:    Jozsef Kadlecsik
- M:    coreteam@netfilter.org
+ P:    Patrick McHardy
+ M:    kaber@trash.net
+ L:    netfilter-devel@lists.netfilter.org
+ L:    netfilter@lists.netfilter.org
+ L:    coreteam@netfilter.org
  W:    http://www.netfilter.org/
  W:    http://www.iptables.org/
- L:    netfilter@lists.netfilter.org
- L:    netfilter-devel@lists.netfilter.org
  S:    Supported
  
  NETLABEL
@@@ -2115,6 -2159,13 +2159,13 @@@ L:    netdev@vger.kernel.or
  T:    git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
  S:    Maintained
  
+ NETXEN (1/10) GbE SUPPORT
+ P:    Amit S. Kale
+ M:    amitkale@netxen.com
+ L:    netdev@vger.kernel.org
+ W:    http://www.netxen.com
+ S:    Supported
  IPVS
  P:    Wensong Zhang
  M:    wensong@linux-vs.org
@@@ -2169,10 -2220,10 +2220,10 @@@ T:   git kernel.org:/pub/scm/linux/kernel
  S:    Maintained
  
  NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
- P:      Antonino Daplas
- M:      adaplas@pol.net
- L:      linux-fbdev-devel@lists.sourceforge.net
- S:      Maintained
+ P:    Antonino Daplas
+ M:    adaplas@pol.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
+ S:    Maintained
  
  OPENCORES I2C BUS DRIVER
  P:    Peter Korsgaard
@@@ -2304,8 -2355,8 +2355,8 @@@ T:      quilt kernel.org/pub/linux/kernel/pe
  S:    Supported
  
  PCI HOTPLUG CORE
- P:    Greg Kroah-Hartman
- M:    gregkh@suse.de
+ P:    Kristen Carlson Accardi
+ M:    kristen.c.accardi@intel.com
  S:    Supported
  
  PCI HOTPLUG COMPAQ DRIVER
@@@ -2412,6 -2463,13 +2463,13 @@@ M:    promise@pnd-pc.demon.co.u
  W:    http://www.pnd-pc.demon.co.uk/promise/
  S:    Maintained
  
+ PS3 PLATFORM SUPPORT
+ P:    Geoff Levand
+ M:    geoffrey.levand@am.sony.com
+ L:    linuxppc-dev@ozlabs.org
+ L:    cbe-oss-dev@ozlabs.org
+ S:    Supported
  PVRUSB2 VIDEO4LINUX DRIVER
  P:    Mike Isely
  M:    isely@pobox.com
@@@ -2448,13 -2506,13 +2506,13 @@@ S:   Maintaine
  RADEON FRAMEBUFFER DISPLAY DRIVER
  P:    Benjamin Herrenschmidt
  M:    benh@kernel.crashing.org
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  
  RAGE128 FRAMEBUFFER DISPLAY DRIVER
  P:    Paul Mackerras
  M:    paulus@samba.org
- L:    linux-fbdev-devel@lists.sourceforge.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
  S:    Maintained
  
  RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
@@@ -2496,7 -2554,7 +2554,7 @@@ S:      Maintaine
  REAL TIME CLOCK (RTC) SUBSYSTEM
  P:    Alessandro Zummo
  M:    a.zummo@towertech.it
- L:    linux-kernel@vger.kernel.org
+ L:    rtc-linux@googlegroups.com
  S:    Maintained
  
  REISERFS FILE SYSTEM
@@@ -2522,10 -2580,10 +2580,10 @@@ RISCOM8 DRIVE
  S:    Orphan
  
  S3 SAVAGE FRAMEBUFFER DRIVER
- P:      Antonino Daplas
- M:      adaplas@pol.net
- L:      linux-fbdev-devel@lists.sourceforge.net
- S:      Maintained
+ P:    Antonino Daplas
+ M:    adaplas@pol.net
+ L:    linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
+ S:    Maintained
  
  S390
  P:    Martin Schwidefsky
@@@ -2606,10 -2664,10 +2664,10 @@@ L:   linux-scsi@vger.kernel.or
  S:    Maintained
  
  SCTP PROTOCOL
- P: Sridhar Samudrala
- M: sri@us.ibm.com
- L: lksctp-developers@lists.sourceforge.net
- S: Supported
+ P:    Sridhar Samudrala
+ M:    sri@us.ibm.com
+ L:    lksctp-developers@lists.sourceforge.net
+ S:    Supported
  
  SCx200 CPU SUPPORT
  P:    Jim Cromie
@@@ -2777,9 -2835,9 +2835,9 @@@ L:      tpmdd-devel@lists.sourceforge.ne
  S:    Maintained
  
  Telecom Clock Driver for MCPL0010
- P: Mark Gross
- M: mark.gross@intel.com
- S: Supported
+ P:    Mark Gross
+ M:    mark.gross@intel.com
+ S:    Supported
  
  TENSILICA XTENSA PORT (xtensa):
  P:    Chris Zankel
@@@ -2880,7 -2938,6 +2938,6 @@@ S:      Maintaine
  SUN3/3X
  P:    Sam Creasey
  M:    sammy@sammy.net
- L:    sun3-list@redhat.com
  W:    http://sammy.net/sun3/
  S:    Maintained
  
@@@ -2926,9 -2983,9 +2983,9 @@@ L:      linux-kernel@vger.kernel.or
  S:    Maintained
  
  TI PARALLEL LINK CABLE DRIVER
- P:     Romain Lievin
- M:     roms@lpg.ticalc.org
- S:     Maintained
+ P:    Romain Lievin
+ M:    roms@lpg.ticalc.org
+ S:    Maintained
  
  TIPC NETWORK LAYER
  P:    Per Liden
@@@ -2978,12 -3035,12 +3035,12 @@@ L:   linux-kernel@vger.kernel.or
  S:    Maintained
  
  TRIVIAL PATCHES
- P:      Adrian Bunk
- M:      trivial@kernel.org
- L:      linux-kernel@vger.kernel.org
- W:      http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/
- T:      git kernel.org:/pub/scm/linux/kernel/git/bunk/trivial.git
- S:      Maintained
+ P:    Adrian Bunk
+ M:    trivial@kernel.org
+ L:    linux-kernel@vger.kernel.org
+ W:    http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/
+ T:    git kernel.org:/pub/scm/linux/kernel/git/bunk/trivial.git
+ S:    Maintained
  
  TMS380 TOKEN-RING NETWORK DRIVER
  P:    Adam Fritzler
@@@ -3061,6 -3118,13 +3118,13 @@@ L:    video4linux-list@redhat.co
  W:    http://www.linux-projects.org
  S:    Maintained
  
+ USB GADGET/PERIPHERAL SUBSYSTEM
+ P:    David Brownell
+ M:    dbrownell@users.sourceforge.net
+ L:    linux-usb-devel@lists.sourceforge.net
+ W:    http://www.linux-usb.org/gadget
+ S:    Maintained
  USB HID/HIDBP DRIVERS
  P:    Vojtech Pavlik
  M:    vojtech@suse.cz
@@@ -3244,10 -3308,11 +3308,11 @@@ L:   linux-usb-users@lists.sourceforge.ne
  L:    linux-usb-devel@lists.sourceforge.net
  S:    Maintained
  
- USB "USBNET" DRIVER
+ USB "USBNET" DRIVER FRAMEWORK
  P:    David Brownell
  M:    dbrownell@users.sourceforge.net
  L:    linux-usb-devel@lists.sourceforge.net
+ W:    http://www.linux-usb.org/usbnet
  S:    Maintained
  
  USB W996[87]CF DRIVER
@@@ -3413,6 -3478,12 +3478,12 @@@ W:    http://oss.sgi.com/projects/xf
  T:    git git://oss.sgi.com:8090/xfs/xfs-2.6
  S:    Supported
  
+ XILINX UARTLITE SERIAL DRIVER
+ P:    Peter Korsgaard
+ M:    jacmet@sunsite.dk
+ L:    linux-serial@vger.kernel.org
+ S:    Maintained
  X86 3-LEVEL PAGING (PAE) SUPPORT
  P:    Ingo Molnar
  M:    mingo@redhat.com
@@@ -29,8 -29,7 +29,8 @@@
  #include <linux/completion.h>
  #include <linux/mutex.h>
  
 -#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, "cpufreq-core", msg)
 +#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, \
 +                                              "cpufreq-core", msg)
  
  /**
   * The "cpufreq driver" - the arch- or hardware-dependent low
@@@ -42,9 -41,8 +42,8 @@@ static struct cpufreq_policy *cpufreq_c
  static DEFINE_SPINLOCK(cpufreq_driver_lock);
  
  /* internal prototypes */
- static int __cpufreq_governor(struct cpufreq_policy *policy,
-                                               unsigned int event);
- static void handle_update(void *data);
+ static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event);
+ static void handle_update(struct work_struct *work);
  
  /**
   * Two notifier lists: the "policy" list is involved in the
@@@ -61,7 -59,7 +60,7 @@@ static int __init init_cpufreq_transiti
        srcu_init_notifier_head(&cpufreq_transition_notifier_list);
        return 0;
  }
core_initcall(init_cpufreq_transition_notifier_list);
pure_initcall(init_cpufreq_transition_notifier_list);
  
  static LIST_HEAD(cpufreq_governor_list);
  static DEFINE_MUTEX (cpufreq_governor_mutex);
@@@ -153,8 -151,7 +152,8 @@@ static void cpufreq_debug_disable_ratel
        spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
  }
  
 -void cpufreq_debug_printk(unsigned int type, const char *prefix, const char *fmt, ...)
 +void cpufreq_debug_printk(unsigned int type, const char *prefix,
 +                                                      const char *fmt, ...)
  {
        char s[256];
        va_list args;
        WARN_ON(!prefix);
        if (type & debug) {
                spin_lock_irqsave(&disable_ratelimit_lock, flags);
 -              if (!disable_ratelimit && debug_ratelimit && !printk_ratelimit()) {
 +              if (!disable_ratelimit && debug_ratelimit
 +                                      && !printk_ratelimit()) {
                        spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
                        return;
                }
@@@ -186,12 -182,10 +185,12 @@@ EXPORT_SYMBOL(cpufreq_debug_printk)
  
  
  module_param(debug, uint, 0644);
 -MODULE_PARM_DESC(debug, "CPUfreq debugging: add 1 to debug core, 2 to debug drivers, and 4 to debug governors.");
 +MODULE_PARM_DESC(debug, "CPUfreq debugging: add 1 to debug core,"
 +                      " 2 to debug drivers, and 4 to debug governors.");
  
  module_param(debug_ratelimit, uint, 0644);
 -MODULE_PARM_DESC(debug_ratelimit, "CPUfreq debugging: set to 0 to disable ratelimiting.");
 +MODULE_PARM_DESC(debug_ratelimit, "CPUfreq debugging:"
 +                                      " set to 0 to disable ratelimiting.");
  
  #else /* !CONFIG_CPU_FREQ_DEBUG */
  
@@@ -225,23 -219,17 +224,23 @@@ static void adjust_jiffies(unsigned lon
        if (!l_p_j_ref_freq) {
                l_p_j_ref = loops_per_jiffy;
                l_p_j_ref_freq = ci->old;
 -              dprintk("saving %lu as reference value for loops_per_jiffy; freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
 +              dprintk("saving %lu as reference value for loops_per_jiffy;"
 +                      "freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
        }
        if ((val == CPUFREQ_PRECHANGE  && ci->old < ci->new) ||
            (val == CPUFREQ_POSTCHANGE && ci->old > ci->new) ||
            (val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) {
 -              loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq, ci->new);
 -              dprintk("scaling loops_per_jiffy to %lu for frequency %u kHz\n", loops_per_jiffy, ci->new);
 +              loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
 +                                                              ci->new);
 +              dprintk("scaling loops_per_jiffy to %lu"
 +                      "for frequency %u kHz\n", loops_per_jiffy, ci->new);
        }
  }
  #else
 -static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci) { return; }
 +static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
 +{
 +      return;
 +}
  #endif
  
  
@@@ -328,8 -316,7 +327,8 @@@ static int cpufreq_parse_governor (cha
                if (!strnicmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
                        *policy = CPUFREQ_POLICY_PERFORMANCE;
                        err = 0;
 -              } else if (!strnicmp(str_governor, "powersave", CPUFREQ_NAME_LEN)) {
 +              } else if (!strnicmp(str_governor, "powersave",
 +                                              CPUFREQ_NAME_LEN)) {
                        *policy = CPUFREQ_POLICY_POWERSAVE;
                        err = 0;
                }
                t = __find_governor(str_governor);
  
                if (t == NULL) {
 -                      char *name = kasprintf(GFP_KERNEL, "cpufreq_%s", str_governor);
 +                      char *name = kasprintf(GFP_KERNEL, "cpufreq_%s",
 +                                                              str_governor);
  
                        if (name) {
                                int ret;
@@@ -375,8 -361,7 +374,8 @@@ extern struct sysdev_class cpu_sysdev_c
  
  
  /**
 - * cpufreq_per_cpu_attr_read() / show_##file_name() - print out cpufreq information
 + * cpufreq_per_cpu_attr_read() / show_##file_name() -
 + * print out cpufreq information
   *
   * Write out information from cpufreq_driver->policy[cpu]; object must be
   * "unsigned int".
@@@ -395,8 -380,7 +394,8 @@@ show_one(scaling_min_freq, min)
  show_one(scaling_max_freq, max);
  show_one(scaling_cur_freq, cur);
  
 -static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy);
 +static int __cpufreq_set_policy(struct cpufreq_policy *data,
 +                              struct cpufreq_policy *policy);
  
  /**
   * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
@@@ -432,8 -416,7 +431,8 @@@ store_one(scaling_max_freq,max)
  /**
   * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
   */
 -static ssize_t show_cpuinfo_cur_freq (struct cpufreq_policy * policy, char *buf)
 +static ssize_t show_cpuinfo_cur_freq (struct cpufreq_policy * policy,
 +                                                      char *buf)
  {
        unsigned int cur_freq = cpufreq_get(policy->cpu);
        if (!cur_freq)
  /**
   * show_scaling_governor - show the current policy for the specified CPU
   */
 -static ssize_t show_scaling_governor (struct cpufreq_policy * policy, char *buf)
 +static ssize_t show_scaling_governor (struct cpufreq_policy * policy,
 +                                                      char *buf)
  {
        if(policy->policy == CPUFREQ_POLICY_POWERSAVE)
                return sprintf(buf, "powersave\n");
@@@ -476,8 -458,7 +475,8 @@@ static ssize_t store_scaling_governor (
        if (ret != 1)
                return -EINVAL;
  
 -      if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor))
 +      if (cpufreq_parse_governor(str_governor, &new_policy.policy,
 +                                              &new_policy.governor))
                return -EINVAL;
  
        lock_cpu_hotplug();
  
        unlock_cpu_hotplug();
  
 -      return ret ? ret : count;
 +      if (ret)
 +              return ret;
 +      else
 +              return count;
  }
  
  /**
@@@ -510,7 -488,7 +509,7 @@@ static ssize_t show_scaling_driver (str
  /**
   * show_scaling_available_governors - show the available CPUfreq governors
   */
 -static ssize_t show_scaling_available_governors (struct cpufreq_policy * policy,
 +static ssize_t show_scaling_available_governors (struct cpufreq_policy *policy,
                                char *buf)
  {
        ssize_t i = 0;
@@@ -596,11 -574,7 +595,11 @@@ static ssize_t show(struct kobject * ko
        policy = cpufreq_cpu_get(policy->cpu);
        if (!policy)
                return -EINVAL;
 -      ret = fattr->show ? fattr->show(policy,buf) : -EIO;
 +      if (fattr->show)
 +              ret = fattr->show(policy, buf);
 +      else
 +              ret = -EIO;
 +
        cpufreq_cpu_put(policy);
        return ret;
  }
@@@ -614,11 -588,7 +613,11 @@@ static ssize_t store(struct kobject * k
        policy = cpufreq_cpu_get(policy->cpu);
        if (!policy)
                return -EINVAL;
 -      ret = fattr->store ? fattr->store(policy,buf,count) : -EIO;
 +      if (fattr->store)
 +              ret = fattr->store(policy, buf, count);
 +      else
 +              ret = -EIO;
 +
        cpufreq_cpu_put(policy);
        return ret;
  }
@@@ -695,7 -665,7 +694,7 @@@ static int cpufreq_add_dev (struct sys_
        mutex_init(&policy->lock);
        mutex_lock(&policy->lock);
        init_completion(&policy->kobj_unregister);
-       INIT_WORK(&policy->update, handle_update, (void *)(long)cpu);
+       INIT_WORK(&policy->update, handle_update);
  
        /* call driver. From then on the cpufreq must be able
         * to accept all calls to ->verify and ->setpolicy for this CPU
@@@ -925,9 -895,11 +924,11 @@@ static int cpufreq_remove_dev (struct s
  }
  
  
- static void handle_update(void *data)
+ static void handle_update(struct work_struct *work)
  {
-       unsigned int cpu = (unsigned int)(long)data;
+       struct cpufreq_policy *policy =
+               container_of(work, struct cpufreq_policy, update);
+       unsigned int cpu = policy->cpu;
        dprintk("handle_update for cpu %u called\n", cpu);
        cpufreq_update_policy(cpu);
  }
   *    We adjust to current frequency first, and need to clean up later. So either call
   *    to cpufreq_update_policy() or schedule handle_update()).
   */
 -static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq, unsigned int new_freq)
 +static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
 +                              unsigned int new_freq)
  {
        struct cpufreq_freqs freqs;
  
  unsigned int cpufreq_quick_get(unsigned int cpu)
  {
        struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
 -      unsigned int ret = 0;
 +      unsigned int ret_freq = 0;
  
        if (policy) {
                mutex_lock(&policy->lock);
 -              ret = policy->cur;
 +              ret_freq = policy->cur;
                mutex_unlock(&policy->lock);
                cpufreq_cpu_put(policy);
        }
  
 -      return (ret);
 +      return (ret_freq);
  }
  EXPORT_SYMBOL(cpufreq_quick_get);
  
  unsigned int cpufreq_get(unsigned int cpu)
  {
        struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
 -      unsigned int ret = 0;
 +      unsigned int ret_freq = 0;
  
        if (!policy)
                return 0;
  
        mutex_lock(&policy->lock);
  
 -      ret = cpufreq_driver->get(cpu);
 +      ret_freq = cpufreq_driver->get(cpu);
  
 -      if (ret && policy->cur && !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
 -              /* verify no discrepancy between actual and saved value exists */
 -              if (unlikely(ret != policy->cur)) {
 -                      cpufreq_out_of_sync(cpu, policy->cur, ret);
 +      if (ret_freq && policy->cur &&
 +              !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
 +              /* verify no discrepancy between actual and
 +                                      saved value exists */
 +              if (unlikely(ret_freq != policy->cur)) {
 +                      cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
                        schedule_work(&policy->update);
                }
        }
  out:
        cpufreq_cpu_put(policy);
  
 -      return (ret);
 +      return (ret_freq);
  }
  EXPORT_SYMBOL(cpufreq_get);
  
  static int cpufreq_suspend(struct sys_device * sysdev, pm_message_t pmsg)
  {
        int cpu = sysdev->id;
 -      unsigned int ret = 0;
 +      int ret = 0;
        unsigned int cur_freq = 0;
        struct cpufreq_policy *cpu_policy;
  
@@@ -1111,7 -1080,7 +1112,7 @@@ out
  static int cpufreq_resume(struct sys_device * sysdev)
  {
        int cpu = sysdev->id;
 -      unsigned int ret = 0;
 +      int ret = 0;
        struct cpufreq_policy *cpu_policy;
  
        dprintk("resuming cpu %u\n", cpu);
@@@ -1307,45 -1276,22 +1308,45 @@@ int cpufreq_driver_target(struct cpufre
  }
  EXPORT_SYMBOL_GPL(cpufreq_driver_target);
  
 +int cpufreq_driver_getavg(struct cpufreq_policy *policy)
 +{
 +      int ret = 0;
 +
 +      policy = cpufreq_cpu_get(policy->cpu);
 +      if (!policy)
 +              return -EINVAL;
 +
 +      mutex_lock(&policy->lock);
 +
 +      if (cpu_online(policy->cpu) && cpufreq_driver->getavg)
 +              ret = cpufreq_driver->getavg(policy->cpu);
 +
 +      mutex_unlock(&policy->lock);
 +
 +      cpufreq_cpu_put(policy);
 +      return ret;
 +}
 +EXPORT_SYMBOL_GPL(cpufreq_driver_getavg);
 +
  /*
   * Locking: Must be called with the lock_cpu_hotplug() lock held
   * when "event" is CPUFREQ_GOV_LIMITS
   */
  
 -static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event)
 +static int __cpufreq_governor(struct cpufreq_policy *policy,
 +                                      unsigned int event)
  {
        int ret;
  
        if (!try_module_get(policy->governor->owner))
                return -EINVAL;
  
 -      dprintk("__cpufreq_governor for CPU %u, event %u\n", policy->cpu, event);
 +      dprintk("__cpufreq_governor for CPU %u, event %u\n",
 +                                              policy->cpu, event);
        ret = policy->governor->governor(policy, event);
  
 -      /* we keep one module reference alive for each CPU governed by this CPU */
 +      /* we keep one module reference alive for
 +                      each CPU governed by this CPU */
        if ((event != CPUFREQ_GOV_START) || ret)
                module_put(policy->governor->owner);
        if ((event == CPUFREQ_GOV_STOP) && !ret)
@@@ -1421,12 -1367,9 +1422,12 @@@ EXPORT_SYMBOL(cpufreq_get_policy)
  
  
  /*
 + * data   : current policy.
 + * policy : policy to be set.
   * Locking: Must be called with the lock_cpu_hotplug() lock held
   */
 -static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy)
 +static int __cpufreq_set_policy(struct cpufreq_policy *data,
 +                              struct cpufreq_policy *policy)
  {
        int ret = 0;
  
        dprintk("setting new policy for CPU %u: %u - %u kHz\n", policy->cpu,
                policy->min, policy->max);
  
 -      memcpy(&policy->cpuinfo, &data->cpuinfo, sizeof(struct cpufreq_cpuinfo));
 +      memcpy(&policy->cpuinfo, &data->cpuinfo,
 +                              sizeof(struct cpufreq_cpuinfo));
  
        if (policy->min > data->min && policy->min > policy->max) {
                ret = -EINVAL;
        data->min = policy->min;
        data->max = policy->max;
  
 -      dprintk("new min and max freqs are %u - %u kHz\n", data->min, data->max);
 +      dprintk("new min and max freqs are %u - %u kHz\n",
 +                                      data->min, data->max);
  
        if (cpufreq_driver->setpolicy) {
                data->policy = policy->policy;
                        data->governor = policy->governor;
                        if (__cpufreq_governor(data, CPUFREQ_GOV_START)) {
                                /* new governor failed, so re-start old one */
 -                              dprintk("starting governor %s failed\n", data->governor->name);
 +                              dprintk("starting governor %s failed\n",
 +                                                      data->governor->name);
                                if (old_gov) {
                                        data->governor = old_gov;
 -                                      __cpufreq_governor(data, CPUFREQ_GOV_START);
 +                                      __cpufreq_governor(data,
 +                                                         CPUFREQ_GOV_START);
                                }
                                ret = -EINVAL;
                                goto error_out;
@@@ -1585,8 -1524,7 +1586,8 @@@ int cpufreq_update_policy(unsigned int 
                        data->cur = policy.cur;
                } else {
                        if (data->cur != policy.cur)
 -                              cpufreq_out_of_sync(cpu, data->cur, policy.cur);
 +                              cpufreq_out_of_sync(cpu, data->cur,
 +                                                              policy.cur);
                }
        }
  
  }
  EXPORT_SYMBOL(cpufreq_update_policy);
  
- #ifdef CONFIG_HOTPLUG_CPU
  static int cpufreq_cpu_callback(struct notifier_block *nfb,
                                        unsigned long action, void *hcpu)
  {
@@@ -1639,7 -1576,6 +1639,6 @@@ static struct notifier_block __cpuinitd
  {
      .notifier_call = cpufreq_cpu_callback,
  };
- #endif /* CONFIG_HOTPLUG_CPU */
  
  /*********************************************************************
   *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
@@@ -1690,10 -1626,8 +1689,10 @@@ int cpufreq_register_driver(struct cpuf
  
                /* if all ->init() calls failed, unregister */
                if (ret) {
 -                      dprintk("no CPU initialized for driver %s\n", driver_data->name);
 -                      sysdev_driver_unregister(&cpu_sysdev_class, &cpufreq_sysdev_driver);
 +                      dprintk("no CPU initialized for driver %s\n",
 +                                                      driver_data->name);
 +                      sysdev_driver_unregister(&cpu_sysdev_class,
 +                                              &cpufreq_sysdev_driver);
  
                        spin_lock_irqsave(&cpufreq_driver_lock, flags);
                        cpufreq_driver = NULL;
   * latency of the processor. The governor will work on any processor with 
   * transition latency <= 10mS, using appropriate sampling 
   * rate.
 - * For CPUs with transition latency > 10mS (mostly drivers with CPUFREQ_ETERNAL)
 - * this governor will not work.
 + * For CPUs with transition latency > 10mS (mostly drivers
 + * with CPUFREQ_ETERNAL), this governor will not work.
   * All times here are in uS.
   */
  static unsigned int                           def_sampling_rate;
  #define MIN_SAMPLING_RATE_RATIO                       (2)
  /* for correct statistics, we need at least 10 ticks between each measure */
 -#define MIN_STAT_SAMPLING_RATE                        (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
 -#define MIN_SAMPLING_RATE                     (def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
 +#define MIN_STAT_SAMPLING_RATE                        \
 +                      (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
 +#define MIN_SAMPLING_RATE                     \
 +                      (def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
  #define MAX_SAMPLING_RATE                     (500 * def_sampling_rate)
  #define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER  (1000)
  #define DEF_SAMPLING_DOWN_FACTOR              (1)
  #define MAX_SAMPLING_DOWN_FACTOR              (10)
  #define TRANSITION_LATENCY_LIMIT              (10 * 1000)
  
- static void do_dbs_timer(void *data);
+ static void do_dbs_timer(struct work_struct *work);
  
  struct cpu_dbs_info_s {
        struct cpufreq_policy   *cur_policy;
@@@ -84,7 -82,7 +84,7 @@@ static unsigned int dbs_enable;       /* numb
   * is recursive for the same process. -Venki
   */
  static DEFINE_MUTEX   (dbs_mutex);
- static DECLARE_WORK   (dbs_work, do_dbs_timer, NULL);
+ static DECLARE_DELAYED_WORK(dbs_work, do_dbs_timer);
  
  struct dbs_tuners {
        unsigned int            sampling_rate;
@@@ -105,16 -103,11 +105,16 @@@ static struct dbs_tuners dbs_tuners_in
  
  static inline unsigned int get_cpu_idle_time(unsigned int cpu)
  {
 -      return  kstat_cpu(cpu).cpustat.idle +
 +      unsigned int add_nice = 0, ret;
 +
 +      if (dbs_tuners_ins.ignore_nice)
 +              add_nice = kstat_cpu(cpu).cpustat.nice;
 +
 +      ret =   kstat_cpu(cpu).cpustat.idle +
                kstat_cpu(cpu).cpustat.iowait +
 -              ( dbs_tuners_ins.ignore_nice ?
 -                kstat_cpu(cpu).cpustat.nice :
 -                0);
 +              add_nice;
 +
 +      return ret;
  }
  
  /************************** sysfs interface ************************/
@@@ -427,7 -420,7 +427,7 @@@ static void dbs_check_cpu(int cpu
        }
  }
  
- static void do_dbs_timer(void *data)
+ static void do_dbs_timer(struct work_struct *work)
  { 
        int i;
        lock_cpu_hotplug();
  
  static inline void dbs_timer_init(void)
  {
-       INIT_WORK(&dbs_work, do_dbs_timer, NULL);
        schedule_delayed_work(&dbs_work,
                        usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
        return;
@@@ -460,7 -452,6 +459,7 @@@ static int cpufreq_governor_dbs(struct 
        unsigned int cpu = policy->cpu;
        struct cpu_dbs_info_s *this_dbs_info;
        unsigned int j;
 +      int rc;
  
        this_dbs_info = &per_cpu(cpu_dbs_info, cpu);
  
                        break;
                 
                mutex_lock(&dbs_mutex);
 +
 +              rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);
 +              if (rc) {
 +                      mutex_unlock(&dbs_mutex);
 +                      return rc;
 +              }
 +
                for_each_cpu_mask(j, policy->cpus) {
                        struct cpu_dbs_info_s *j_dbs_info;
                        j_dbs_info = &per_cpu(cpu_dbs_info, j);
                this_dbs_info->enable = 1;
                this_dbs_info->down_skip = 0;
                this_dbs_info->requested_freq = policy->cur;
 -              sysfs_create_group(&policy->kobj, &dbs_attr_group);
 +
                dbs_enable++;
                /*
                 * Start the timerschedule work, when this governor
  static unsigned int def_sampling_rate;
  #define MIN_SAMPLING_RATE_RATIO                       (2)
  /* for correct statistics, we need at least 10 ticks between each measure */
 -#define MIN_STAT_SAMPLING_RATE                        (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
 -#define MIN_SAMPLING_RATE                     (def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
 +#define MIN_STAT_SAMPLING_RATE                        \
 +                      (MIN_SAMPLING_RATE_RATIO * jiffies_to_usecs(10))
 +#define MIN_SAMPLING_RATE                     \
 +                      (def_sampling_rate / MIN_SAMPLING_RATE_RATIO)
  #define MAX_SAMPLING_RATE                     (500 * def_sampling_rate)
  #define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER  (1000)
  #define TRANSITION_LATENCY_LIMIT              (10 * 1000)
  
- static void do_dbs_timer(void *data);
+ static void do_dbs_timer(struct work_struct *work);
+ /* Sampling types */
+ enum dbs_sample {DBS_NORMAL_SAMPLE, DBS_SUB_SAMPLE};
  
  struct cpu_dbs_info_s {
        cputime64_t prev_cpu_idle;
        cputime64_t prev_cpu_wall;
        struct cpufreq_policy *cur_policy;
-       struct work_struct work;
+       struct delayed_work work;
+       enum dbs_sample sample_type;
        unsigned int enable;
        struct cpufreq_frequency_table *freq_table;
        unsigned int freq_lo;
@@@ -204,8 -206,7 +208,8 @@@ static ssize_t store_sampling_rate(stru
        ret = sscanf(buf, "%u", &input);
  
        mutex_lock(&dbs_mutex);
 -      if (ret != 1 || input > MAX_SAMPLING_RATE || input < MIN_SAMPLING_RATE) {
 +      if (ret != 1 || input > MAX_SAMPLING_RATE
 +                   || input < MIN_SAMPLING_RATE) {
                mutex_unlock(&dbs_mutex);
                return -EINVAL;
        }
@@@ -396,15 -397,8 +400,15 @@@ static void dbs_check_cpu(struct cpu_db
         * policy. To be safe, we focus 10 points under the threshold.
         */
        if (load < (dbs_tuners_ins.up_threshold - 10)) {
 -              unsigned int freq_next = (policy->cur * load) /
 +              unsigned int freq_next, freq_cur;
 +
 +              freq_cur = cpufreq_driver_getavg(policy);
 +              if (!freq_cur)
 +                      freq_cur = policy->cur;
 +
 +              freq_next = (freq_cur * load) /
                        (dbs_tuners_ins.up_threshold - 10);
 +
                if (!dbs_tuners_ins.powersave_bias) {
                        __cpufreq_driver_target(policy, freq_next,
                                        CPUFREQ_RELATION_L);
        }
  }
  
- /* Sampling types */
- enum {DBS_NORMAL_SAMPLE, DBS_SUB_SAMPLE};
- static void do_dbs_timer(void *data)
+ static void do_dbs_timer(struct work_struct *work)
  {
        unsigned int cpu = smp_processor_id();
        struct cpu_dbs_info_s *dbs_info = &per_cpu(cpu_dbs_info, cpu);
+       enum dbs_sample sample_type = dbs_info->sample_type;
        /* We want all CPUs to do sampling nearly on same jiffy */
        int delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate);
+       /* Permit rescheduling of this work item */
+       work_release(work);
        delay -= jiffies % delay;
  
        if (!dbs_info->enable)
                return;
        /* Common NORMAL_SAMPLE setup */
-       INIT_WORK(&dbs_info->work, do_dbs_timer, (void *)DBS_NORMAL_SAMPLE);
+       dbs_info->sample_type = DBS_NORMAL_SAMPLE;
        if (!dbs_tuners_ins.powersave_bias ||
-           (unsigned long) data == DBS_NORMAL_SAMPLE) {
+           sample_type == DBS_NORMAL_SAMPLE) {
                lock_cpu_hotplug();
                dbs_check_cpu(dbs_info);
                unlock_cpu_hotplug();
                if (dbs_info->freq_lo) {
                        /* Setup timer for SUB_SAMPLE */
-                       INIT_WORK(&dbs_info->work, do_dbs_timer,
-                                       (void *)DBS_SUB_SAMPLE);
+                       dbs_info->sample_type = DBS_SUB_SAMPLE;
                        delay = dbs_info->freq_hi_jiffies;
                }
        } else {
@@@ -459,7 -454,8 +464,8 @@@ static inline void dbs_timer_init(unsig
        delay -= jiffies % delay;
  
        ondemand_powersave_bias_init();
-       INIT_WORK(&dbs_info->work, do_dbs_timer, NULL);
+       INIT_DELAYED_WORK_NAR(&dbs_info->work, do_dbs_timer);
+       dbs_info->sample_type = DBS_NORMAL_SAMPLE;
        queue_delayed_work_on(cpu, kondemand_wq, &dbs_info->work, delay);
  }
  
@@@ -476,7 -472,6 +482,7 @@@ static int cpufreq_governor_dbs(struct 
        unsigned int cpu = policy->cpu;
        struct cpu_dbs_info_s *this_dbs_info;
        unsigned int j;
 +      int rc;
  
        this_dbs_info = &per_cpu(cpu_dbs_info, cpu);
  
                if (dbs_enable == 1) {
                        kondemand_wq = create_workqueue("kondemand");
                        if (!kondemand_wq) {
 -                              printk(KERN_ERR "Creation of kondemand failed\n");
 +                              printk(KERN_ERR
 +                                       "Creation of kondemand failed\n");
                                dbs_enable--;
                                mutex_unlock(&dbs_mutex);
                                return -ENOSPC;
                        }
                }
 +
 +              rc = sysfs_create_group(&policy->kobj, &dbs_attr_group);
 +              if (rc) {
 +                      if (dbs_enable == 1)
 +                              destroy_workqueue(kondemand_wq);
 +                      dbs_enable--;
 +                      mutex_unlock(&dbs_mutex);
 +                      return rc;
 +              }
 +
                for_each_cpu_mask(j, policy->cpus) {
                        struct cpu_dbs_info_s *j_dbs_info;
                        j_dbs_info = &per_cpu(cpu_dbs_info, j);
                        j_dbs_info->prev_cpu_wall = get_jiffies_64();
                }
                this_dbs_info->enable = 1;
 -              sysfs_create_group(&policy->kobj, &dbs_attr_group);
                /*
                 * Start the timerschedule work, when this governor
                 * is used for first time
diff --combined include/asm-i386/msr.h
@@@ -1,6 -1,10 +1,10 @@@
  #ifndef __ASM_MSR_H
  #define __ASM_MSR_H
  
+ #ifdef CONFIG_PARAVIRT
+ #include <asm/paravirt.h>
+ #else
  /*
   * Access to machine-specific registers (available on 586 and better only)
   * Note: the rd* operations modify the parameters directly (without using
@@@ -77,6 -81,7 +81,7 @@@ static inline void wrmsrl (unsigned lon
       __asm__ __volatile__("rdpmc" \
                          : "=a" (low), "=d" (high) \
                          : "c" (counter))
+ #endif        /* !CONFIG_PARAVIRT */
  
  /* symbolic names for some interesting MSRs */
  /* Intel defined MSRs. */
  
  #define MSR_P6_PERFCTR0               0xc1
  #define MSR_P6_PERFCTR1               0xc2
 +#define MSR_FSB_FREQ          0xcd
 +
  
  #define MSR_IA32_BBL_CR_CTL           0x119
  
  #define MSR_IA32_PERF_STATUS          0x198
  #define MSR_IA32_PERF_CTL             0x199
  
 +#define MSR_IA32_MPERF                        0xE7
 +#define MSR_IA32_APERF                        0xE8
 +
  #define MSR_IA32_THERM_CONTROL                0x19a
  #define MSR_IA32_THERM_INTERRUPT      0x19b
  #define MSR_IA32_THERM_STATUS         0x19c
  #define MSR_IA32_MC0_ADDR             0x402
  #define MSR_IA32_MC0_MISC             0x403
  
+ #define MSR_IA32_PEBS_ENABLE          0x3f1
+ #define MSR_IA32_DS_AREA              0x600
+ #define MSR_IA32_PERF_CAPABILITIES    0x345
  /* Pentium IV performance counter MSRs */
  #define MSR_P4_BPU_PERFCTR0           0x300
  #define MSR_P4_BPU_PERFCTR1           0x301
  #define MSR_TMTA_LRTI_READOUT         0x80868018
  #define MSR_TMTA_LRTI_VOLT_MHZ                0x8086801a
  
+ /* Intel Core-based CPU performance counters */
+ #define MSR_CORE_PERF_FIXED_CTR0      0x309
+ #define MSR_CORE_PERF_FIXED_CTR1      0x30a
+ #define MSR_CORE_PERF_FIXED_CTR2      0x30b
+ #define MSR_CORE_PERF_FIXED_CTR_CTRL  0x38d
+ #define MSR_CORE_PERF_GLOBAL_STATUS   0x38e
+ #define MSR_CORE_PERF_GLOBAL_CTRL     0x38f
+ #define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x390
  #endif /* __ASM_MSR_H */
diff --combined include/asm-x86_64/msr.h
@@@ -169,8 -169,8 +169,8 @@@ static inline unsigned int cpuid_edx(un
  #define MSR_LSTAR 0xc0000082          /* long mode SYSCALL target */
  #define MSR_CSTAR 0xc0000083          /* compatibility mode SYSCALL target */
  #define MSR_SYSCALL_MASK 0xc0000084   /* EFLAGS mask for syscall */
- #define MSR_FS_BASE 0xc0000100                /* 64bit GS base */
- #define MSR_GS_BASE 0xc0000101                /* 64bit FS base */
+ #define MSR_FS_BASE 0xc0000100                /* 64bit FS base */
+ #define MSR_GS_BASE 0xc0000101                /* 64bit GS base */
  #define MSR_KERNEL_GS_BASE  0xc0000102        /* SwapGS GS shadow (or USER_GS from kernel) */ 
  /* EFER bits: */ 
  #define _EFER_SCE 0  /* SYSCALL/SYSRET */
  
  #define MSR_IA32_PERFCTR0      0xc1
  #define MSR_IA32_PERFCTR1      0xc2
 +#define MSR_FSB_FREQ          0xcd
  
  #define MSR_MTRRcap           0x0fe
  #define MSR_IA32_BBL_CR_CTL        0x119
  #define MSR_IA32_LASTINTFROMIP     0x1dd
  #define MSR_IA32_LASTINTTOIP       0x1de
  
+ #define MSR_IA32_PEBS_ENABLE          0x3f1
+ #define MSR_IA32_DS_AREA              0x600
+ #define MSR_IA32_PERF_CAPABILITIES    0x345
  #define MSR_MTRRfix64K_00000  0x250
  #define MSR_MTRRfix16K_80000  0x258
  #define MSR_MTRRfix16K_A0000  0x259
  #define MSR_IA32_PERF_STATUS          0x198
  #define MSR_IA32_PERF_CTL             0x199
  
 +#define MSR_IA32_MPERF                        0xE7
 +#define MSR_IA32_APERF                        0xE8
 +
  #define MSR_IA32_THERM_CONTROL                0x19a
  #define MSR_IA32_THERM_INTERRUPT      0x19b
  #define MSR_IA32_THERM_STATUS         0x19c
  #define MSR_P4_U2L_ESCR0              0x3b0
  #define MSR_P4_U2L_ESCR1              0x3b1
  
+ /* Intel Core-based CPU performance counters */
+ #define MSR_CORE_PERF_FIXED_CTR0      0x309
+ #define MSR_CORE_PERF_FIXED_CTR1      0x30a
+ #define MSR_CORE_PERF_FIXED_CTR2      0x30b
+ #define MSR_CORE_PERF_FIXED_CTR_CTRL  0x38d
+ #define MSR_CORE_PERF_GLOBAL_STATUS   0x38e
+ #define MSR_CORE_PERF_GLOBAL_CTRL     0x38f
+ #define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x390
  #endif