linux/Documentation/feature-removal-schedule.txt
<<
>>
Prefs
   1The following is a list of files and features that are going to be
   2removed in the kernel source tree.  Every entry should contain what
   3exactly is going away, why it is happening, and who is going to be doing
   4the work.  When the feature is removed from the kernel, it should also
   5be removed from this file.
   6
   7---------------------------
   8
   9What:   The ieee80211_regdom module parameter
  10When:   March 2010 / desktop catchup
  11
  12Why:    This was inherited by the CONFIG_WIRELESS_OLD_REGULATORY code,
  13        and currently serves as an option for users to define an
  14        ISO / IEC 3166 alpha2 code for the country they are currently
  15        present in. Although there are userspace API replacements for this
  16        through nl80211 distributions haven't yet caught up with implementing
  17        decent alternatives through standard GUIs. Although available as an
  18        option through iw or wpa_supplicant its just a matter of time before
  19        distributions pick up good GUI options for this. The ideal solution
  20        would actually consist of intelligent designs which would do this for
  21        the user automatically even when travelling through different countries.
  22        Until then we leave this module parameter as a compromise.
  23
  24        When userspace improves with reasonable widely-available alternatives for
  25        this we will no longer need this module parameter. This entry hopes that
  26        by the super-futuristically looking date of "March 2010" we will have
  27        such replacements widely available.
  28
  29Who:    Luis R. Rodriguez <lrodriguez@atheros.com>
  30
  31---------------------------
  32
  33What:   CONFIG_WIRELESS_OLD_REGULATORY - old static regulatory information
  34When:   March 2010 / desktop catchup
  35
  36Why:    The old regulatory infrastructure has been replaced with a new one
  37        which does not require statically defined regulatory domains. We do
  38        not want to keep static regulatory domains in the kernel due to the
  39        the dynamic nature of regulatory law and localization. We kept around
  40        the old static definitions for the regulatory domains of:
  41
  42                * US
  43                * JP
  44                * EU
  45
  46        and used by default the US when CONFIG_WIRELESS_OLD_REGULATORY was
  47        set. We will remove this option once the standard Linux desktop catches
  48        up with the new userspace APIs we have implemented.
  49
  50Who:    Luis R. Rodriguez <lrodriguez@atheros.com>
  51
  52---------------------------
  53
  54What:   dev->power.power_state
  55When:   July 2007
  56Why:    Broken design for runtime control over driver power states, confusing
  57        driver-internal runtime power management with:  mechanisms to support
  58        system-wide sleep state transitions; event codes that distinguish
  59        different phases of swsusp "sleep" transitions; and userspace policy
  60        inputs.  This framework was never widely used, and most attempts to
  61        use it were broken.  Drivers should instead be exposing domain-specific
  62        interfaces either to kernel or to userspace.
  63Who:    Pavel Machek <pavel@suse.cz>
  64
  65---------------------------
  66
  67What:   Video4Linux API 1 ioctls and from Video devices.
  68When:   July 2009
  69Files:  include/linux/videodev.h
  70Check:  include/linux/videodev.h
  71Why:    V4L1 AP1 was replaced by V4L2 API during migration from 2.4 to 2.6
  72        series. The old API have lots of drawbacks and don't provide enough
  73        means to work with all video and audio standards. The newer API is
  74        already available on the main drivers and should be used instead.
  75        Newer drivers should use v4l_compat_translate_ioctl function to handle
  76        old calls, replacing to newer ones.
  77        Decoder iocts are using internally to allow video drivers to
  78        communicate with video decoders. This should also be improved to allow
  79        V4L2 calls being translated into compatible internal ioctls.
  80        Compatibility ioctls will be provided, for a while, via 
  81        v4l1-compat module. 
  82Who:    Mauro Carvalho Chehab <mchehab@infradead.org>
  83
  84---------------------------
  85
  86What:   PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
  87When:   November 2005
  88Files:  drivers/pcmcia/: pcmcia_ioctl.c
  89Why:    With the 16-bit PCMCIA subsystem now behaving (almost) like a
  90        normal hotpluggable bus, and with it using the default kernel
  91        infrastructure (hotplug, driver core, sysfs) keeping the PCMCIA
  92        control ioctl needed by cardmgr and cardctl from pcmcia-cs is
  93        unnecessary, and makes further cleanups and integration of the
  94        PCMCIA subsystem into the Linux kernel device driver model more
  95        difficult. The features provided by cardmgr and cardctl are either
  96        handled by the kernel itself now or are available in the new
  97        pcmciautils package available at
  98        http://kernel.org/pub/linux/utils/kernel/pcmcia/
  99Who:    Dominik Brodowski <linux@brodo.de>
 100
 101---------------------------
 102
 103What:   sys_sysctl
 104When:   September 2010
 105Option: CONFIG_SYSCTL_SYSCALL
 106Why:    The same information is available in a more convenient from
 107        /proc/sys, and none of the sysctl variables appear to be
 108        important performance wise.
 109
 110        Binary sysctls are a long standing source of subtle kernel
 111        bugs and security issues.
 112
 113        When I looked several months ago all I could find after
 114        searching several distributions were 5 user space programs and
 115        glibc (which falls back to /proc/sys) using this syscall.
 116
 117        The man page for sysctl(2) documents it as unusable for user
 118        space programs.
 119
 120        sysctl(2) is not generally ABI compatible to a 32bit user
 121        space application on a 64bit and a 32bit kernel.
 122
 123        For the last several months the policy has been no new binary
 124        sysctls and no one has put forward an argument to use them.
 125
 126        Binary sysctls issues seem to keep happening appearing so
 127        properly deprecating them (with a warning to user space) and a
 128        2 year grace warning period will mean eventually we can kill
 129        them and end the pain.
 130
 131        In the mean time individual binary sysctls can be dealt with
 132        in a piecewise fashion.
 133
 134Who:    Eric Biederman <ebiederm@xmission.com>
 135
 136---------------------------
 137
 138What:   remove EXPORT_SYMBOL(kernel_thread)
 139When:   August 2006
 140Files:  arch/*/kernel/*_ksyms.c
 141Check:  kernel_thread
 142Why:    kernel_thread is a low-level implementation detail.  Drivers should
 143        use the <linux/kthread.h> API instead which shields them from
 144        implementation details and provides a higherlevel interface that
 145        prevents bugs and code duplication
 146Who:    Christoph Hellwig <hch@lst.de>
 147
 148---------------------------
 149
 150What:   Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
 151        (temporary transition config option provided until then)
 152        The transition config option will also be removed at the same time.
 153When:   before 2.6.19
 154Why:    Unused symbols are both increasing the size of the kernel binary
 155        and are often a sign of "wrong API"
 156Who:    Arjan van de Ven <arjan@linux.intel.com>
 157
 158---------------------------
 159
 160What:   PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
 161When:   October 2008
 162Why:    The stacking of class devices makes these values misleading and
 163        inconsistent.
 164        Class devices should not carry any of these properties, and bus
 165        devices have SUBSYTEM and DRIVER as a replacement.
 166Who:    Kay Sievers <kay.sievers@suse.de>
 167
 168---------------------------
 169
 170What:   ACPI procfs interface
 171When:   July 2008
 172Why:    ACPI sysfs conversion should be finished by January 2008.
 173        ACPI procfs interface will be removed in July 2008 so that
 174        there is enough time for the user space to catch up.
 175Who:    Zhang Rui <rui.zhang@intel.com>
 176
 177---------------------------
 178
 179What:   /proc/acpi/button
 180When:   August 2007
 181Why:    /proc/acpi/button has been replaced by events to the input layer
 182        since 2.6.20.
 183Who:    Len Brown <len.brown@intel.com>
 184
 185---------------------------
 186
 187What:   /proc/acpi/event
 188When:   February 2008
 189Why:    /proc/acpi/event has been replaced by events via the input layer
 190        and netlink since 2.6.23.
 191Who:    Len Brown <len.brown@intel.com>
 192
 193---------------------------
 194
 195What: libata spindown skipping and warning
 196When: Dec 2008
 197Why:  Some halt(8) implementations synchronize caches for and spin
 198      down libata disks because libata didn't use to spin down disk on
 199      system halt (only synchronized caches).
 200      Spin down on system halt is now implemented.  sysfs node
 201      /sys/class/scsi_disk/h:c:i:l/manage_start_stop is present if
 202      spin down support is available.
 203      Because issuing spin down command to an already spun down disk
 204      makes some disks spin up just to spin down again, libata tracks
 205      device spindown status to skip the extra spindown command and
 206      warn about it.
 207      This is to give userspace tools the time to get updated and will
 208      be removed after userspace is reasonably updated.
 209Who:  Tejun Heo <htejun@gmail.com>
 210
 211---------------------------
 212
 213What:   i386/x86_64 bzImage symlinks
 214When:   April 2010
 215
 216Why:    The i386/x86_64 merge provides a symlink to the old bzImage
 217        location so not yet updated user space tools, e.g. package
 218        scripts, do not break.
 219Who:    Thomas Gleixner <tglx@linutronix.de>
 220
 221---------------------------
 222
 223What (Why):
 224        - include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
 225          (superseded by xt_TOS/xt_tos target & match)
 226
 227        - "forwarding" header files like ipt_mac.h in
 228          include/linux/netfilter_ipv4/ and include/linux/netfilter_ipv6/
 229
 230        - xt_CONNMARK match revision 0
 231          (superseded by xt_CONNMARK match revision 1)
 232
 233        - xt_MARK target revisions 0 and 1
 234          (superseded by xt_MARK match revision 2)
 235
 236        - xt_connmark match revision 0
 237          (superseded by xt_connmark match revision 1)
 238
 239        - xt_conntrack match revision 0
 240          (superseded by xt_conntrack match revision 1)
 241
 242        - xt_iprange match revision 0,
 243          include/linux/netfilter_ipv4/ipt_iprange.h
 244          (superseded by xt_iprange match revision 1)
 245
 246        - xt_mark match revision 0
 247          (superseded by xt_mark match revision 1)
 248
 249        - xt_recent: the old ipt_recent proc dir
 250          (superseded by /proc/net/xt_recent)
 251
 252When:   January 2009 or Linux 2.7.0, whichever comes first
 253Why:    Superseded by newer revisions or modules
 254Who:    Jan Engelhardt <jengelh@computergmbh.de>
 255
 256---------------------------
 257
 258What:   GPIO autorequest on gpio_direction_{input,output}() in gpiolib
 259When:   February 2010
 260Why:    All callers should use explicit gpio_request()/gpio_free().
 261        The autorequest mechanism in gpiolib was provided mostly as a
 262        migration aid for legacy GPIO interfaces (for SOC based GPIOs).
 263        Those users have now largely migrated.  Platforms implementing
 264        the GPIO interfaces without using gpiolib will see no changes.
 265Who:    David Brownell <dbrownell@users.sourceforge.net>
 266---------------------------
 267
 268What:   b43 support for firmware revision < 410
 269When:   The schedule was July 2008, but it was decided that we are going to keep the
 270        code as long as there are no major maintanance headaches.
 271        So it _could_ be removed _any_ time now, if it conflicts with something new.
 272Why:    The support code for the old firmware hurts code readability/maintainability
 273        and slightly hurts runtime performance. Bugfixes for the old firmware
 274        are not provided by Broadcom anymore.
 275Who:    Michael Buesch <mb@bu3sch.de>
 276
 277---------------------------
 278
 279What:   usedac i386 kernel parameter
 280When:   2.6.27
 281Why:    replaced by allowdac and no dac combination
 282Who:    Glauber Costa <gcosta@redhat.com>
 283
 284---------------------------
 285
 286What: print_fn_descriptor_symbol()
 287When: October 2009
 288Why:  The %pF vsprintf format provides the same functionality in a
 289      simpler way.  print_fn_descriptor_symbol() is deprecated but
 290      still present to give out-of-tree modules time to change.
 291Who:  Bjorn Helgaas <bjorn.helgaas@hp.com>
 292
 293---------------------------
 294
 295What:   /sys/o2cb symlink
 296When:   January 2010
 297Why:    /sys/fs/o2cb is the proper location for this information - /sys/o2cb
 298        exists as a symlink for backwards compatibility for old versions of
 299        ocfs2-tools. 2 years should be sufficient time to phase in new versions
 300        which know to look in /sys/fs/o2cb.
 301Who:    ocfs2-devel@oss.oracle.com
 302
 303---------------------------
 304
 305What:   SCTP_GET_PEER_ADDRS_NUM_OLD, SCTP_GET_PEER_ADDRS_OLD,
 306        SCTP_GET_LOCAL_ADDRS_NUM_OLD, SCTP_GET_LOCAL_ADDRS_OLD
 307When:   June 2009
 308Why:    A newer version of the options have been introduced in 2005 that
 309        removes the limitions of the old API.  The sctp library has been
 310        converted to use these new options at the same time.  Any user
 311        space app that directly uses the old options should convert to using
 312        the new options.
 313Who:    Vlad Yasevich <vladislav.yasevich@hp.com>
 314
 315---------------------------
 316
 317What:   Ability for non root users to shm_get hugetlb pages based on mlock
 318        resource limits
 319When:   2.6.31
 320Why:    Non root users need to be part of /proc/sys/vm/hugetlb_shm_group or
 321        have CAP_IPC_LOCK to be able to allocate shm segments backed by
 322        huge pages.  The mlock based rlimit check to allow shm hugetlb is
 323        inconsistent with mmap based allocations.  Hence it is being
 324        deprecated.
 325Who:    Ravikiran Thirumalai <kiran@scalex86.org>
 326
 327---------------------------
 328
 329What:   CONFIG_THERMAL_HWMON
 330When:   January 2009
 331Why:    This option was introduced just to allow older lm-sensors userspace
 332        to keep working over the upgrade to 2.6.26. At the scheduled time of
 333        removal fixed lm-sensors (2.x or 3.x) should be readily available.
 334Who:    Rene Herman <rene.herman@gmail.com>
 335
 336---------------------------
 337
 338What:   Code that is now under CONFIG_WIRELESS_EXT_SYSFS
 339        (in net/core/net-sysfs.c)
 340When:   After the only user (hal) has seen a release with the patches
 341        for enough time, probably some time in 2010.
 342Why:    Over 1K .text/.data size reduction, data is available in other
 343        ways (ioctls)
 344Who:    Johannes Berg <johannes@sipsolutions.net>
 345
 346---------------------------
 347
 348What: CONFIG_NF_CT_ACCT
 349When: 2.6.29
 350Why:  Accounting can now be enabled/disabled without kernel recompilation.
 351      Currently used only to set a default value for a feature that is also
 352      controlled by a kernel/module/sysfs/sysctl parameter.
 353Who:  Krzysztof Piotr Oledzki <ole@ans.pl>
 354
 355---------------------------
 356
 357What:   i2c_attach_client(), i2c_detach_client(), i2c_driver->detach_client(),
 358        i2c_adapter->client_register(), i2c_adapter->client_unregister
 359When:   2.6.30
 360Check:  i2c_attach_client i2c_detach_client
 361Why:    Deprecated by the new (standard) device driver binding model. Use
 362        i2c_driver->probe() and ->remove() instead.
 363Who:    Jean Delvare <khali@linux-fr.org>
 364
 365---------------------------
 366
 367What:   fscher and fscpos drivers
 368When:   June 2009
 369Why:    Deprecated by the new fschmd driver.
 370Who:    Hans de Goede <hdegoede@redhat.com>
 371        Jean Delvare <khali@linux-fr.org>
 372
 373---------------------------
 374
 375What:   sysfs ui for changing p4-clockmod parameters
 376When:   September 2009
 377Why:    See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
 378        e088e4c9cdb618675874becb91b2fd581ee707e6.
 379        Removal is subject to fixing any remaining bugs in ACPI which may
 380        cause the thermal throttling not to happen at the right time.
 381Who:    Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com>
 382
 383-----------------------------
 384
 385What:   __do_IRQ all in one fits nothing interrupt handler
 386When:   2.6.32
 387Why:    __do_IRQ was kept for easy migration to the type flow handlers.
 388        More than two years of migration time is enough.
 389Who:    Thomas Gleixner <tglx@linutronix.de>
 390
 391-----------------------------
 392
 393What:   obsolete generic irq defines and typedefs
 394When:   2.6.30
 395Why:    The defines and typedefs (hw_interrupt_type, no_irq_type, irq_desc_t)
 396        have been kept around for migration reasons. After more than two years
 397        it's time to remove them finally
 398Who:    Thomas Gleixner <tglx@linutronix.de>
 399
 400---------------------------
 401
 402What:   fakephp and associated sysfs files in /sys/bus/pci/slots/
 403When:   2011
 404Why:    In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
 405        represent a machine's physical PCI slots. The change in semantics
 406        had userspace implications, as the hotplug core no longer allowed
 407        drivers to create multiple sysfs files per physical slot (required
 408        for multi-function devices, e.g.). fakephp was seen as a developer's
 409        tool only, and its interface changed. Too late, we learned that
 410        there were some users of the fakephp interface.
 411
 412        In 2.6.30, the original fakephp interface was restored. At the same
 413        time, the PCI core gained the ability that fakephp provided, namely
 414        function-level hot-remove and hot-add.
 415
 416        Since the PCI core now provides the same functionality, exposed in:
 417
 418                /sys/bus/pci/rescan
 419                /sys/bus/pci/devices/.../remove
 420                /sys/bus/pci/devices/.../rescan
 421
 422        there is no functional reason to maintain fakephp as well.
 423
 424        We will keep the existing module so that 'modprobe fakephp' will
 425        present the old /sys/bus/pci/slots/... interface for compatibility,
 426        but users are urged to migrate their applications to the API above.
 427
 428        After a reasonable transition period, we will remove the legacy
 429        fakephp interface.
 430Who:    Alex Chiang <achiang@hp.com>
 431
 432---------------------------
 433
 434What:   i2c-voodoo3 driver
 435When:   October 2009
 436Why:    Superseded by tdfxfb. I2C/DDC support used to live in a separate
 437        driver but this caused driver conflicts.
 438Who:    Jean Delvare <khali@linux-fr.org>
 439        Krzysztof Helt <krzysztof.h1@wp.pl>
 440