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:   x86 floppy disable_hlt
  10When:   2012
  11Why:    ancient workaround of dubious utility clutters the
  12        code used by everybody else.
  13Who:    Len Brown <len.brown@intel.com>
  14
  15---------------------------
  16
  17What:   CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
  18When:   2012
  19Why:    This optional sub-feature of APM is of dubious reliability,
  20        and ancient APM laptops are likely better served by calling HLT.
  21        Deleting CONFIG_APM_CPU_IDLE allows x86 to stop exporting
  22        the pm_idle function pointer to modules.
  23Who:    Len Brown <len.brown@intel.com>
  24
  25----------------------------
  26
  27What:   x86_32 "no-hlt" cmdline param
  28When:   2012
  29Why:    remove a branch from idle path, simplify code used by everybody.
  30        This option disabled the use of HLT in idle and machine_halt()
  31        for hardware that was flakey 15-years ago.  Today we have
  32        "idle=poll" that removed HLT from idle, and so if such a machine
  33        is still running the upstream kernel, "idle=poll" is likely sufficient.
  34Who:    Len Brown <len.brown@intel.com>
  35
  36----------------------------
  37
  38What:   x86 "idle=mwait" cmdline param
  39When:   2012
  40Why:    simplify x86 idle code
  41Who:    Len Brown <len.brown@intel.com>
  42
  43----------------------------
  44
  45What:   PRISM54
  46When:   2.6.34
  47
  48Why:    prism54 FullMAC PCI / Cardbus devices used to be supported only by the
  49        prism54 wireless driver. After Intersil stopped selling these
  50        devices in preference for the newer more flexible SoftMAC devices
  51        a SoftMAC device driver was required and prism54 did not support
  52        them. The p54pci driver now exists and has been present in the kernel for
  53        a while. This driver supports both SoftMAC devices and FullMAC devices.
  54        The main difference between these devices was the amount of memory which
  55        could be used for the firmware. The SoftMAC devices support a smaller
  56        amount of memory. Because of this the SoftMAC firmware fits into FullMAC
  57        devices's memory. p54pci supports not only PCI / Cardbus but also USB
  58        and SPI. Since p54pci supports all devices prism54 supports
  59        you will have a conflict. I'm not quite sure how distributions are
  60        handling this conflict right now. prism54 was kept around due to
  61        claims users may experience issues when using the SoftMAC driver.
  62        Time has passed users have not reported issues. If you use prism54
  63        and for whatever reason you cannot use p54pci please let us know!
  64        E-mail us at: linux-wireless@vger.kernel.org
  65
  66        For more information see the p54 wiki page:
  67
  68        http://wireless.kernel.org/en/users/Drivers/p54
  69
  70Who:    Luis R. Rodriguez <lrodriguez@atheros.com>
  71
  72---------------------------
  73
  74What:   IRQF_SAMPLE_RANDOM
  75Check:  IRQF_SAMPLE_RANDOM
  76When:   July 2009
  77
  78Why:    Many of IRQF_SAMPLE_RANDOM users are technically bogus as entropy
  79        sources in the kernel's current entropy model. To resolve this, every
  80        input point to the kernel's entropy pool needs to better document the
  81        type of entropy source it actually is. This will be replaced with
  82        additional add_*_randomness functions in drivers/char/random.c
  83
  84Who:    Robin Getz <rgetz@blackfin.uclinux.org> & Matt Mackall <mpm@selenic.com>
  85
  86---------------------------
  87
  88What:   Deprecated snapshot ioctls
  89When:   2.6.36
  90
  91Why:    The ioctls in kernel/power/user.c were marked as deprecated long time
  92        ago. Now they notify users about that so that they need to replace
  93        their userspace. After some more time, remove them completely.
  94
  95Who:    Jiri Slaby <jirislaby@gmail.com>
  96
  97---------------------------
  98
  99What:   The ieee80211_regdom module parameter
 100When:   March 2010 / desktop catchup
 101
 102Why:    This was inherited by the CONFIG_WIRELESS_OLD_REGULATORY code,
 103        and currently serves as an option for users to define an
 104        ISO / IEC 3166 alpha2 code for the country they are currently
 105        present in. Although there are userspace API replacements for this
 106        through nl80211 distributions haven't yet caught up with implementing
 107        decent alternatives through standard GUIs. Although available as an
 108        option through iw or wpa_supplicant its just a matter of time before
 109        distributions pick up good GUI options for this. The ideal solution
 110        would actually consist of intelligent designs which would do this for
 111        the user automatically even when travelling through different countries.
 112        Until then we leave this module parameter as a compromise.
 113
 114        When userspace improves with reasonable widely-available alternatives for
 115        this we will no longer need this module parameter. This entry hopes that
 116        by the super-futuristically looking date of "March 2010" we will have
 117        such replacements widely available.
 118
 119Who:    Luis R. Rodriguez <lrodriguez@atheros.com>
 120
 121---------------------------
 122
 123What:   dev->power.power_state
 124When:   July 2007
 125Why:    Broken design for runtime control over driver power states, confusing
 126        driver-internal runtime power management with:  mechanisms to support
 127        system-wide sleep state transitions; event codes that distinguish
 128        different phases of swsusp "sleep" transitions; and userspace policy
 129        inputs.  This framework was never widely used, and most attempts to
 130        use it were broken.  Drivers should instead be exposing domain-specific
 131        interfaces either to kernel or to userspace.
 132Who:    Pavel Machek <pavel@ucw.cz>
 133
 134---------------------------
 135
 136What:   /proc/<pid>/oom_adj
 137When:   August 2012
 138Why:    /proc/<pid>/oom_adj allows userspace to influence the oom killer's
 139        badness heuristic used to determine which task to kill when the kernel
 140        is out of memory.
 141
 142        The badness heuristic has since been rewritten since the introduction of
 143        this tunable such that its meaning is deprecated.  The value was
 144        implemented as a bitshift on a score generated by the badness()
 145        function that did not have any precise units of measure.  With the
 146        rewrite, the score is given as a proportion of available memory to the
 147        task allocating pages, so using a bitshift which grows the score
 148        exponentially is, thus, impossible to tune with fine granularity.
 149
 150        A much more powerful interface, /proc/<pid>/oom_score_adj, was
 151        introduced with the oom killer rewrite that allows users to increase or
 152        decrease the badness score linearly.  This interface will replace
 153        /proc/<pid>/oom_adj.
 154
 155        A warning will be emitted to the kernel log if an application uses this
 156        deprecated interface.  After it is printed once, future warnings will be
 157        suppressed until the kernel is rebooted.
 158
 159---------------------------
 160
 161What:   remove EXPORT_SYMBOL(kernel_thread)
 162When:   August 2006
 163Files:  arch/*/kernel/*_ksyms.c
 164Check:  kernel_thread
 165Why:    kernel_thread is a low-level implementation detail.  Drivers should
 166        use the <linux/kthread.h> API instead which shields them from
 167        implementation details and provides a higherlevel interface that
 168        prevents bugs and code duplication
 169Who:    Christoph Hellwig <hch@lst.de>
 170
 171---------------------------
 172
 173What:   Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
 174        (temporary transition config option provided until then)
 175        The transition config option will also be removed at the same time.
 176When:   before 2.6.19
 177Why:    Unused symbols are both increasing the size of the kernel binary
 178        and are often a sign of "wrong API"
 179Who:    Arjan van de Ven <arjan@linux.intel.com>
 180
 181---------------------------
 182
 183What:   PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
 184When:   October 2008
 185Why:    The stacking of class devices makes these values misleading and
 186        inconsistent.
 187        Class devices should not carry any of these properties, and bus
 188        devices have SUBSYTEM and DRIVER as a replacement.
 189Who:    Kay Sievers <kay.sievers@suse.de>
 190
 191---------------------------
 192
 193What:   ACPI procfs interface
 194When:   July 2008
 195Why:    ACPI sysfs conversion should be finished by January 2008.
 196        ACPI procfs interface will be removed in July 2008 so that
 197        there is enough time for the user space to catch up.
 198Who:    Zhang Rui <rui.zhang@intel.com>
 199
 200---------------------------
 201
 202What:   CONFIG_ACPI_PROCFS_POWER
 203When:   2.6.39
 204Why:    sysfs I/F for ACPI power devices, including AC and Battery,
 205        has been working in upstream kernel since 2.6.24, Sep 2007.
 206        In 2.6.37, we make the sysfs I/F always built in and this option
 207        disabled by default.
 208        Remove this option and the ACPI power procfs interface in 2.6.39.
 209Who:    Zhang Rui <rui.zhang@intel.com>
 210
 211---------------------------
 212
 213What:   /proc/acpi/event
 214When:   February 2008
 215Why:    /proc/acpi/event has been replaced by events via the input layer
 216        and netlink since 2.6.23.
 217Who:    Len Brown <len.brown@intel.com>
 218
 219---------------------------
 220
 221What:   i386/x86_64 bzImage symlinks
 222When:   April 2010
 223
 224Why:    The i386/x86_64 merge provides a symlink to the old bzImage
 225        location so not yet updated user space tools, e.g. package
 226        scripts, do not break.
 227Who:    Thomas Gleixner <tglx@linutronix.de>
 228
 229---------------------------
 230
 231What:   GPIO autorequest on gpio_direction_{input,output}() in gpiolib
 232When:   February 2010
 233Why:    All callers should use explicit gpio_request()/gpio_free().
 234        The autorequest mechanism in gpiolib was provided mostly as a
 235        migration aid for legacy GPIO interfaces (for SOC based GPIOs).
 236        Those users have now largely migrated.  Platforms implementing
 237        the GPIO interfaces without using gpiolib will see no changes.
 238Who:    David Brownell <dbrownell@users.sourceforge.net>
 239---------------------------
 240
 241What:   b43 support for firmware revision < 410
 242When:   The schedule was July 2008, but it was decided that we are going to keep the
 243        code as long as there are no major maintanance headaches.
 244        So it _could_ be removed _any_ time now, if it conflicts with something new.
 245Why:    The support code for the old firmware hurts code readability/maintainability
 246        and slightly hurts runtime performance. Bugfixes for the old firmware
 247        are not provided by Broadcom anymore.
 248Who:    Michael Buesch <m@bues.ch>
 249
 250---------------------------
 251
 252What:   Ability for non root users to shm_get hugetlb pages based on mlock
 253        resource limits
 254When:   2.6.31
 255Why:    Non root users need to be part of /proc/sys/vm/hugetlb_shm_group or
 256        have CAP_IPC_LOCK to be able to allocate shm segments backed by
 257        huge pages.  The mlock based rlimit check to allow shm hugetlb is
 258        inconsistent with mmap based allocations.  Hence it is being
 259        deprecated.
 260Who:    Ravikiran Thirumalai <kiran@scalex86.org>
 261
 262---------------------------
 263
 264What:   Code that is now under CONFIG_WIRELESS_EXT_SYSFS
 265        (in net/core/net-sysfs.c)
 266When:   After the only user (hal) has seen a release with the patches
 267        for enough time, probably some time in 2010.
 268Why:    Over 1K .text/.data size reduction, data is available in other
 269        ways (ioctls)
 270Who:    Johannes Berg <johannes@sipsolutions.net>
 271
 272---------------------------
 273
 274What:   sysfs ui for changing p4-clockmod parameters
 275When:   September 2009
 276Why:    See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
 277        e088e4c9cdb618675874becb91b2fd581ee707e6.
 278        Removal is subject to fixing any remaining bugs in ACPI which may
 279        cause the thermal throttling not to happen at the right time.
 280Who:    Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com>
 281
 282-----------------------------
 283
 284What:   fakephp and associated sysfs files in /sys/bus/pci/slots/
 285When:   2011
 286Why:    In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
 287        represent a machine's physical PCI slots. The change in semantics
 288        had userspace implications, as the hotplug core no longer allowed
 289        drivers to create multiple sysfs files per physical slot (required
 290        for multi-function devices, e.g.). fakephp was seen as a developer's
 291        tool only, and its interface changed. Too late, we learned that
 292        there were some users of the fakephp interface.
 293
 294        In 2.6.30, the original fakephp interface was restored. At the same
 295        time, the PCI core gained the ability that fakephp provided, namely
 296        function-level hot-remove and hot-add.
 297
 298        Since the PCI core now provides the same functionality, exposed in:
 299
 300                /sys/bus/pci/rescan
 301                /sys/bus/pci/devices/.../remove
 302                /sys/bus/pci/devices/.../rescan
 303
 304        there is no functional reason to maintain fakephp as well.
 305
 306        We will keep the existing module so that 'modprobe fakephp' will
 307        present the old /sys/bus/pci/slots/... interface for compatibility,
 308        but users are urged to migrate their applications to the API above.
 309
 310        After a reasonable transition period, we will remove the legacy
 311        fakephp interface.
 312Who:    Alex Chiang <achiang@hp.com>
 313
 314---------------------------
 315
 316What:   CONFIG_RFKILL_INPUT
 317When:   2.6.33
 318Why:    Should be implemented in userspace, policy daemon.
 319Who:    Johannes Berg <johannes@sipsolutions.net>
 320
 321----------------------------
 322
 323What:   sound-slot/service-* module aliases and related clutters in
 324        sound/sound_core.c
 325When:   August 2010
 326Why:    OSS sound_core grabs all legacy minors (0-255) of SOUND_MAJOR
 327        (14) and requests modules using custom sound-slot/service-*
 328        module aliases.  The only benefit of doing this is allowing
 329        use of custom module aliases which might as well be considered
 330        a bug at this point.  This preemptive claiming prevents
 331        alternative OSS implementations.
 332
 333        Till the feature is removed, the kernel will be requesting
 334        both sound-slot/service-* and the standard char-major-* module
 335        aliases and allow turning off the pre-claiming selectively via
 336        CONFIG_SOUND_OSS_CORE_PRECLAIM and soundcore.preclaim_oss
 337        kernel parameter.
 338
 339        After the transition phase is complete, both the custom module
 340        aliases and switches to disable it will go away.  This removal
 341        will also allow making ALSA OSS emulation independent of
 342        sound_core.  The dependency will be broken then too.
 343Who:    Tejun Heo <tj@kernel.org>
 344
 345----------------------------
 346
 347What:   sysfs-class-rfkill state file
 348When:   Feb 2014
 349Files:  net/rfkill/core.c
 350Why:    Documented as obsolete since Feb 2010. This file is limited to 3
 351        states while the rfkill drivers can have 4 states.
 352Who:    anybody or Florian Mickler <florian@mickler.org>
 353
 354----------------------------
 355
 356What:   sysfs-class-rfkill claim file
 357When:   Feb 2012
 358Files:  net/rfkill/core.c
 359Why:    It is not possible to claim an rfkill driver since 2007. This is
 360        Documented as obsolete since Feb 2010.
 361Who:    anybody or Florian Mickler <florian@mickler.org>
 362
 363----------------------------
 364
 365What:   KVM paravirt mmu host support
 366When:   January 2011
 367Why:    The paravirt mmu host support is slower than non-paravirt mmu, both
 368        on newer and older hardware.  It is already not exposed to the guest,
 369        and kept only for live migration purposes.
 370Who:    Avi Kivity <avi@redhat.com>
 371
 372----------------------------
 373
 374What:   iwlwifi 50XX module parameters
 375When:   3.0
 376Why:    The "..50" modules parameters were used to configure 5000 series and
 377        up devices; different set of module parameters also available for 4965
 378        with same functionalities. Consolidate both set into single place
 379        in drivers/net/wireless/iwlwifi/iwl-agn.c
 380
 381Who:    Wey-Yi Guy <wey-yi.w.guy@intel.com>
 382
 383----------------------------
 384
 385What:   iwl4965 alias support
 386When:   3.0
 387Why:    Internal alias support has been present in module-init-tools for some
 388        time, the MODULE_ALIAS("iwl4965") boilerplate aliases can be removed
 389        with no impact.
 390
 391Who:    Wey-Yi Guy <wey-yi.w.guy@intel.com>
 392
 393---------------------------
 394
 395What:   xt_NOTRACK
 396Files:  net/netfilter/xt_NOTRACK.c
 397When:   April 2011
 398Why:    Superseded by xt_CT
 399Who:    Netfilter developer team <netfilter-devel@vger.kernel.org>
 400
 401----------------------------
 402
 403What:   IRQF_DISABLED
 404When:   2.6.36
 405Why:    The flag is a NOOP as we run interrupt handlers with interrupts disabled
 406Who:    Thomas Gleixner <tglx@linutronix.de>
 407
 408----------------------------
 409
 410What:   PCI DMA unmap state API
 411When:   August 2012
 412Why:    PCI DMA unmap state API (include/linux/pci-dma.h) was replaced
 413        with DMA unmap state API (DMA unmap state API can be used for
 414        any bus).
 415Who:    FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
 416
 417----------------------------
 418
 419What:   iwlwifi disable_hw_scan module parameters
 420When:   3.0
 421Why:    Hareware scan is the prefer method for iwlwifi devices for
 422        scanning operation. Remove software scan support for all the
 423        iwlwifi devices.
 424
 425Who:    Wey-Yi Guy <wey-yi.w.guy@intel.com>
 426
 427----------------------------
 428
 429What:   Legacy, non-standard chassis intrusion detection interface.
 430When:   June 2011
 431Why:    The adm9240, w83792d and w83793 hardware monitoring drivers have
 432        legacy interfaces for chassis intrusion detection. A standard
 433        interface has been added to each driver, so the legacy interface
 434        can be removed.
 435Who:    Jean Delvare <khali@linux-fr.org>
 436
 437----------------------------
 438
 439What:   xt_connlimit rev 0
 440When:   2012
 441Who:    Jan Engelhardt <jengelh@medozas.de>
 442Files:  net/netfilter/xt_connlimit.c
 443
 444----------------------------
 445
 446What:   ipt_addrtype match include file
 447When:   2012
 448Why:    superseded by xt_addrtype
 449Who:    Florian Westphal <fw@strlen.de>
 450Files:  include/linux/netfilter_ipv4/ipt_addrtype.h
 451
 452----------------------------
 453
 454What:   i2c_driver.attach_adapter
 455        i2c_driver.detach_adapter
 456When:   September 2011
 457Why:    These legacy callbacks should no longer be used as i2c-core offers
 458        a variety of preferable alternative ways to instantiate I2C devices.
 459Who:    Jean Delvare <khali@linux-fr.org>
 460
 461----------------------------
 462
 463What:   Support for driver specific ioctls in the pwc driver (everything
 464        defined in media/pwc-ioctl.h)
 465When:   3.3
 466Why:    This stems from the v4l1 era, with v4l2 everything can be done with
 467        standardized v4l2 API calls
 468Who:    Hans de Goede <hdegoede@redhat.com>
 469
 470----------------------------
 471
 472What:   Driver specific sysfs API in the pwc driver
 473When:   3.3
 474Why:    Setting pan/tilt should be done with v4l2 controls, like with other
 475        cams. The button is available as a standard input device
 476Who:    Hans de Goede <hdegoede@redhat.com>
 477
 478----------------------------
 479
 480What:   Driver specific use of pixfmt.priv in the pwc driver
 481When:   3.3
 482Why:    The .priv field never was intended for this, setting a framerate is
 483        support using the standardized S_PARM ioctl
 484Who:    Hans de Goede <hdegoede@redhat.com>
 485
 486----------------------------
 487
 488What:   Software emulation of arbritary resolutions in the pwc driver
 489When:   3.3
 490Why:    The pwc driver claims to support any resolution between 160x120
 491        and 640x480, but emulates this by simply drawing a black border
 492        around the image. Userspace can draw its own black border if it
 493        really wants one.
 494Who:    Hans de Goede <hdegoede@redhat.com>
 495
 496----------------------------
 497
 498What:   For VIDIOC_S_FREQUENCY the type field must match the device node's type.
 499        If not, return -EINVAL.
 500When:   3.2
 501Why:    It makes no sense to switch the tuner to radio mode by calling
 502        VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
 503        calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
 504        move to more consistent handling of tv and radio tuners.
 505Who:    Hans Verkuil <hans.verkuil@cisco.com>
 506
 507----------------------------
 508
 509What:   Opening a radio device node will no longer automatically switch the
 510        tuner mode from tv to radio.
 511When:   3.3
 512Why:    Just opening a V4L device should not change the state of the hardware
 513        like that. It's very unexpected and against the V4L spec. Instead, you
 514        switch to radio mode by calling VIDIOC_S_FREQUENCY. This is the second
 515        and last step of the move to consistent handling of tv and radio tuners.
 516Who:    Hans Verkuil <hans.verkuil@cisco.com>
 517
 518----------------------------
 519
 520What:   g_file_storage driver
 521When:   3.8
 522Why:    This driver has been superseded by g_mass_storage.
 523Who:    Alan Stern <stern@rowland.harvard.edu>
 524
 525----------------------------
 526
 527What:   threeg and interface sysfs files in /sys/devices/platform/acer-wmi
 528When:   2012
 529Why:    In 3.0, we can now autodetect internal 3G device and already have
 530        the threeg rfkill device. So, we plan to remove threeg sysfs support
 531        for it's no longer necessary.
 532
 533        We also plan to remove interface sysfs file that exposed which ACPI-WMI
 534        interface that was used by acer-wmi driver. It will replaced by
 535        information log when acer-wmi initial.
 536Who:    Lee, Chun-Yi <jlee@novell.com>
 537
 538----------------------------
 539
 540What:   The XFS nodelaylog mount option
 541When:   3.3
 542Why:    The delaylog mode that has been the default since 2.6.39 has proven
 543        stable, and the old code is in the way of additional improvements in
 544        the log code.
 545Who:    Christoph Hellwig <hch@lst.de>
 546
 547----------------------------
 548
 549What:   iwlagn alias support
 550When:   3.5
 551Why:    The iwlagn module has been renamed iwlwifi.  The alias will be around
 552        for backward compatibility for several cycles and then dropped.
 553Who:    Don Fry <donald.h.fry@intel.com>
 554
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.