The following is a list of files and features that are going to be
removed in the kernel source tree.  Every entry should contain what
exactly is going away, why it is happening, and who is going to be doing
the work.  When the feature is removed from the kernel, it should also
be removed from this file.

---------------------------

What:	MXSER
When:	December 2007
Why:	Old mxser driver is obsoleted by the mxser_new. Give it some time yet
	and remove it.
Who:	Jiri Slaby <jirislaby@gmail.com>

---------------------------

What:	dev->power.power_state
When:	July 2007
Why:	Broken design for runtime control over driver power states, confusing
	driver-internal runtime power management with:  mechanisms to support
	system-wide sleep state transitions; event codes that distinguish
	different phases of swsusp "sleep" transitions; and userspace policy
	inputs.  This framework was never widely used, and most attempts to
	use it were broken.  Drivers should instead be exposing domain-specific
	interfaces either to kernel or to userspace.
Who:	Pavel Machek <pavel@suse.cz>

---------------------------

What:	old NCR53C9x driver
When:	October 2007
Why:	Replaced by the much better esp_scsi driver.  Actual low-level
	driver can be ported over almost trivially.
Who:	David Miller <davem@davemloft.net>
	Christoph Hellwig <hch@lst.de>

---------------------------

What:	Video4Linux API 1 ioctls and video_decoder.h from Video devices.
When:	December 2008
Files:	include/linux/video_decoder.h include/linux/videodev.h
Check:	include/linux/video_decoder.h include/linux/videodev.h
Why:	V4L1 AP1 was replaced by V4L2 API during migration from 2.4 to 2.6
	series. The old API have lots of drawbacks and don't provide enough
	means to work with all video and audio standards. The newer API is
	already available on the main drivers and should be used instead.
	Newer drivers should use v4l_compat_translate_ioctl function to handle
	old calls, replacing to newer ones.
	Decoder iocts are using internally to allow video drivers to
	communicate with video decoders. This should also be improved to allow
	V4L2 calls being translated into compatible internal ioctls.
	Compatibility ioctls will be provided, for a while, via 
	v4l1-compat module. 
Who:	Mauro Carvalho Chehab <mchehab@infradead.org>

---------------------------

What:	PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
When:	November 2005
Files:	drivers/pcmcia/: pcmcia_ioctl.c
Why:	With the 16-bit PCMCIA subsystem now behaving (almost) like a
	normal hotpluggable bus, and with it using the default kernel
	infrastructure (hotplug, driver core, sysfs) keeping the PCMCIA
	control ioctl needed by cardmgr and cardctl from pcmcia-cs is
	unnecessary, and makes further cleanups and integration of the
	PCMCIA subsystem into the Linux kernel device driver model more
	difficult. The features provided by cardmgr and cardctl are either
	handled by the kernel itself now or are available in the new
	pcmciautils package available at
	http://kernel.org/pub/linux/utils/kernel/pcmcia/
Who:	Dominik Brodowski <linux@brodo.de>

---------------------------

What:	sys_sysctl
When:	September 2010
Option: CONFIG_SYSCTL_SYSCALL
Why:	The same information is available in a more convenient from
	/proc/sys, and none of the sysctl variables appear to be
	important performance wise.

	Binary sysctls are a long standing source of subtle kernel
	bugs and security issues.

	When I looked several months ago all I could find after
	searching several distributions were 5 user space programs and
	glibc (which falls back to /proc/sys) using this syscall.

	The man page for sysctl(2) documents it as unusable for user
	space programs.

	sysctl(2) is not generally ABI compatible to a 32bit user
	space application on a 64bit and a 32bit kernel.

	For the last several months the policy has been no new binary
	sysctls and no one has put forward an argument to use them.

	Binary sysctls issues seem to keep happening appearing so
	properly deprecating them (with a warning to user space) and a
	2 year grace warning period will mean eventually we can kill
	them and end the pain.

	In the mean time individual binary sysctls can be dealt with
	in a piecewise fashion.

Who:	Eric Biederman <ebiederm@xmission.com>

---------------------------

What:  a.out interpreter support for ELF executables
When:  2.6.25
Files: fs/binfmt_elf.c
Why:   Using a.out interpreters for ELF executables was a feature for
       transition from a.out to ELF. But now it is unlikely to be still
       needed anymore and removing it would simplify the hairy ELF
       loader code.
Who:   Andi Kleen <ak@suse.de>

---------------------------

What:	remove EXPORT_SYMBOL(kernel_thread)
When:	August 2006
Files:	arch/*/kernel/*_ksyms.c
Check:	kernel_thread
Why:	kernel_thread is a low-level implementation detail.  Drivers should
        use the <linux/kthread.h> API instead which shields them from
	implementation details and provides a higherlevel interface that
	prevents bugs and code duplication
Who:	Christoph Hellwig <hch@lst.de>

---------------------------

What:	CONFIG_FORCED_INLINING
When:	June 2006
Why:	Config option is there to see if gcc is good enough. (in january
        2006). If it is, the behavior should just be the default. If it's not,
	the option should just go away entirely.
Who:    Arjan van de Ven

---------------------------

What:   eepro100 network driver
When:   January 2007
Why:    replaced by the e100 driver
Who:    Adrian Bunk <bunk@stusta.de>

---------------------------

What:	Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
	(temporary transition config option provided until then)
	The transition config option will also be removed at the same time.
When:	before 2.6.19
Why:	Unused symbols are both increasing the size of the kernel binary
	and are often a sign of "wrong API"
Who:	Arjan van de Ven <arjan@linux.intel.com>

---------------------------

What:	vm_ops.nopage
When:	Soon, provided in-kernel callers have been converted
Why:	This interface is replaced by vm_ops.fault, but it has been around
	forever, is used by a lot of drivers, and doesn't cost much to
	maintain.
Who:	Nick Piggin <npiggin@suse.de>

---------------------------

What:	PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
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
	devices have SUBSYTEM and DRIVER as a replacement.
Who:	Kay Sievers <kay.sievers@suse.de>

---------------------------

What:	ACPI procfs interface
When:	July 2008
Why:	ACPI sysfs conversion should be finished by January 2008.
	ACPI procfs interface will be removed in July 2008 so that
	there is enough time for the user space to catch up.
Who:	Zhang Rui <rui.zhang@intel.com>

---------------------------

What:	/proc/acpi/button
When:	August 2007
Why:	/proc/acpi/button has been replaced by events to the input layer
	since 2.6.20.
Who:	Len Brown <len.brown@intel.com>

---------------------------

What:	/proc/acpi/event
When:	February 2008
Why:	/proc/acpi/event has been replaced by events via the input layer
	and netlink since 2.6.23.
Who:	Len Brown <len.brown@intel.com>

---------------------------

What:	'time' kernel boot parameter
When:	January 2008
Why:	replaced by 'printk.time=<value>' so that printk timestamps can be
	enabled or disabled as needed
Who:	Randy Dunlap <randy.dunlap@oracle.com>

---------------------------

What:  drivers depending on OSS_OBSOLETE
When:  options in 2.6.23, code in 2.6.25
Why:   obsolete OSS drivers
Who:   Adrian Bunk <bunk@stusta.de>

---------------------------

What: libata spindown skipping and warning
When: Dec 2008
Why:  Some halt(8) implementations synchronize caches for and spin
      down libata disks because libata didn't use to spin down disk on
      system halt (only synchronized caches).
      Spin down on system halt is now implemented.  sysfs node
      /sys/class/scsi_disk/h:c:i:l/manage_start_stop is present if
      spin down support is available.
      Because issuing spin down command to an already spun down disk
      makes some disks spin up just to spin down again, libata tracks
      device spindown status to skip the extra spindown command and
      warn about it.
      This is to give userspace tools the time to get updated and will
      be removed after userspace is reasonably updated.
Who:  Tejun Heo <htejun@gmail.com>

---------------------------

What: The arch/ppc and include/asm-ppc directories
When: Jun 2008
Why:  The arch/powerpc tree is the merged architecture for ppc32 and ppc64
      platforms.  Currently there are efforts underway to port the remaining
      arch/ppc platforms to the merged tree.  New submissions to the arch/ppc
      tree have been frozen with the 2.6.22 kernel release and that tree will
      remain in bug-fix only mode until its scheduled removal.  Platforms
      that are not ported by June 2008 will be removed due to the lack of an
      interested maintainer.
Who:  linuxppc-dev@ozlabs.org

---------------------------

What:   sk98lin network driver
When:   Feburary 2008
Why:    In kernel tree version of driver is unmaintained. Sk98lin driver
	replaced by the skge driver. 
Who:    Stephen Hemminger <shemminger@linux-foundation.org>

---------------------------

What:	i386/x86_64 bzImage symlinks
When:	April 2008

Why:	The i386/x86_64 merge provides a symlink to the old bzImage
	location so not yet updated user space tools, e.g. package
	scripts, do not break.
Who:	Thomas Gleixner <tglx@linutronix.de>

---------------------------

---------------------------

What:	i2c-i810, i2c-prosavage and i2c-savage4
When:	May 2008
Why:	These drivers are superseded by i810fb, intelfb and savagefb.
Who:	Jean Delvare <khali@linux-fr.org>

---------------------------

What:	bcm43xx wireless network driver
When:	2.6.26
Files:	drivers/net/wireless/bcm43xx
Why:	This driver's functionality has been replaced by the
	mac80211-based b43 and b43legacy drivers.
Who:	John W. Linville <linville@tuxdriver.com>

---------------------------

What:	ieee80211 softmac wireless networking component
When:	2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
Files:	net/ieee80211/softmac
Why:	No in-kernel drivers will depend on it any longer.
Who:	John W. Linville <linville@tuxdriver.com>

---------------------------

What:	rc80211-simple rate control algorithm for mac80211
When:	2.6.26
Files:	net/mac80211/rc80211-simple.c
Why:	This algorithm was provided for reference but always exhibited bad
	responsiveness and performance and has some serious flaws. It has been
	replaced by rc80211-pid.
Who:	Stefano Brivio <stefano.brivio@polimi.it>

---------------------------

What (Why):
	- include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
	  (superseded by xt_TOS/xt_tos target & match)

	- "forwarding" header files like ipt_mac.h in
	  include/linux/netfilter_ipv4/ and include/linux/netfilter_ipv6/

	- xt_CONNMARK match revision 0
	  (superseded by xt_CONNMARK match revision 1)

	- xt_MARK target revisions 0 and 1
	  (superseded by xt_MARK match revision 2)

	- xt_connmark match revision 0
	  (superseded by xt_connmark match revision 1)

	- xt_conntrack match revision 0
	  (superseded by xt_conntrack match revision 1)

	- xt_iprange match revision 0,
	  include/linux/netfilter_ipv4/ipt_iprange.h
	  (superseded by xt_iprange match revision 1)

	- xt_mark match revision 0
	  (superseded by xt_mark match revision 1)

When:	January 2009 or Linux 2.7.0, whichever comes first
Why:	Superseded by newer revisions or modules
Who:	Jan Engelhardt <jengelh@computergmbh.de>

---------------------------

What:	b43 support for firmware revision < 410
When:	July 2008
Why:	The support code for the old firmware hurts code readability/maintainability
	and slightly hurts runtime performance. Bugfixes for the old firmware
	are not provided by Broadcom anymore.
Who:	Michael Buesch <mb@bu3sch.de>
