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: PRISM54 10When: 2.6.34 11 12Why: prism54 FullMAC PCI / Cardbus devices used to be supported only by the 13 prism54 wireless driver. After Intersil stopped selling these 14 devices in preference for the newer more flexible SoftMAC devices 15 a SoftMAC device driver was required and prism54 did not support 16 them. The p54pci driver now exists and has been present in the kernel for 17 a while. This driver supports both SoftMAC devices and FullMAC devices. 18 The main difference between these devices was the amount of memory which 19 could be used for the firmware. The SoftMAC devices support a smaller 20 amount of memory. Because of this the SoftMAC firmware fits into FullMAC 21 devices's memory. p54pci supports not only PCI / Cardbus but also USB 22 and SPI. Since p54pci supports all devices prism54 supports 23 you will have a conflict. I'm not quite sure how distributions are 24 handling this conflict right now. prism54 was kept around due to 25 claims users may experience issues when using the SoftMAC driver. 26 Time has passed users have not reported issues. If you use prism54 27 and for whatever reason you cannot use p54pci please let us know! 28 E-mail us at: linux-wireless@vger.kernel.org 29 30 For more information see the p54 wiki page: 31 32 http://wireless.kernel.org/en/users/Drivers/p54 33 34Who: Luis R. Rodriguez <lrodriguez@atheros.com> 35 36--------------------------- 37 38What: AR9170USB 39When: 2.6.40 40 41Why: This driver is deprecated and the firmware is no longer 42 maintained. The replacement driver "carl9170" has been 43 around for a while, so the devices are still supported. 44 45Who: Christian Lamparter <chunkeey@googlemail.com> 46 47--------------------------- 48 49What: IRQF_SAMPLE_RANDOM 50Check: IRQF_SAMPLE_RANDOM 51When: July 2009 52 53Why: Many of IRQF_SAMPLE_RANDOM users are technically bogus as entropy 54 sources in the kernel's current entropy model. To resolve this, every 55 input point to the kernel's entropy pool needs to better document the 56 type of entropy source it actually is. This will be replaced with 57 additional add_*_randomness functions in drivers/char/random.c 58 59Who: Robin Getz <rgetz@blackfin.uclinux.org> & Matt Mackall <mpm@selenic.com> 60 61--------------------------- 62 63What: Deprecated snapshot ioctls 64When: 2.6.36 65 66Why: The ioctls in kernel/power/user.c were marked as deprecated long time 67 ago. Now they notify users about that so that they need to replace 68 their userspace. After some more time, remove them completely. 69 70Who: Jiri Slaby <jirislaby@gmail.com> 71 72--------------------------- 73 74What: The ieee80211_regdom module parameter 75When: March 2010 / desktop catchup 76 77Why: This was inherited by the CONFIG_WIRELESS_OLD_REGULATORY code, 78 and currently serves as an option for users to define an 79 ISO / IEC 3166 alpha2 code for the country they are currently 80 present in. Although there are userspace API replacements for this 81 through nl80211 distributions haven't yet caught up with implementing 82 decent alternatives through standard GUIs. Although available as an 83 option through iw or wpa_supplicant its just a matter of time before 84 distributions pick up good GUI options for this. The ideal solution 85 would actually consist of intelligent designs which would do this for 86 the user automatically even when travelling through different countries. 87 Until then we leave this module parameter as a compromise. 88 89 When userspace improves with reasonable widely-available alternatives for 90 this we will no longer need this module parameter. This entry hopes that 91 by the super-futuristically looking date of "March 2010" we will have 92 such replacements widely available. 93 94Who: Luis R. Rodriguez <lrodriguez@atheros.com> 95 96--------------------------- 97 98What: dev->power.power_state 99When: July 2007 100Why: Broken design for runtime control over driver power states, confusing 101 driver-internal runtime power management with: mechanisms to support 102 system-wide sleep state transitions; event codes that distinguish 103 different phases of swsusp "sleep" transitions; and userspace policy 104 inputs. This framework was never widely used, and most attempts to 105 use it were broken. Drivers should instead be exposing domain-specific 106 interfaces either to kernel or to userspace. 107Who: Pavel Machek <pavel@ucw.cz> 108 109--------------------------- 110 111What: sys_sysctl 112When: September 2010 113Option: CONFIG_SYSCTL_SYSCALL 114Why: The same information is available in a more convenient from 115 /proc/sys, and none of the sysctl variables appear to be 116 important performance wise. 117 118 Binary sysctls are a long standing source of subtle kernel 119 bugs and security issues. 120 121 When I looked several months ago all I could find after 122 searching several distributions were 5 user space programs and 123 glibc (which falls back to /proc/sys) using this syscall. 124 125 The man page for sysctl(2) documents it as unusable for user 126 space programs. 127 128 sysctl(2) is not generally ABI compatible to a 32bit user 129 space application on a 64bit and a 32bit kernel. 130 131 For the last several months the policy has been no new binary 132 sysctls and no one has put forward an argument to use them. 133 134 Binary sysctls issues seem to keep happening appearing so 135 properly deprecating them (with a warning to user space) and a 136 2 year grace warning period will mean eventually we can kill 137 them and end the pain. 138 139 In the mean time individual binary sysctls can be dealt with 140 in a piecewise fashion. 141 142Who: Eric Biederman <ebiederm@xmission.com> 143 144--------------------------- 145 146What: /proc/<pid>/oom_adj 147When: August 2012 148Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's 149 badness heuristic used to determine which task to kill when the kernel 150 is out of memory. 151 152 The badness heuristic has since been rewritten since the introduction of 153 this tunable such that its meaning is deprecated. The value was 154 implemented as a bitshift on a score generated by the badness() 155 function that did not have any precise units of measure. With the 156 rewrite, the score is given as a proportion of available memory to the 157 task allocating pages, so using a bitshift which grows the score 158 exponentially is, thus, impossible to tune with fine granularity. 159 160 A much more powerful interface, /proc/<pid>/oom_score_adj, was 161 introduced with the oom killer rewrite that allows users to increase or 162 decrease the badness() score linearly. This interface will replace 163 /proc/<pid>/oom_adj. 164 165 A warning will be emitted to the kernel log if an application uses this 166 deprecated interface. After it is printed once, future warnings will be 167 suppressed until the kernel is rebooted. 168 169--------------------------- 170 171What: CS5535/CS5536 obsolete GPIO driver 172When: June 2011 173Files: drivers/staging/cs5535_gpio/* 174Check: drivers/staging/cs5535_gpio/cs5535_gpio.c 175Why: A newer driver replaces this; it is drivers/gpio/cs5535-gpio.c, and 176 integrates with the Linux GPIO subsystem. The old driver has been 177 moved to staging, and will be removed altogether around 2.6.40. 178 Please test the new driver, and ensure that the functionality you 179 need and any bugfixes from the old driver are available in the new 180 one. 181Who: Andres Salomon <dilinger@queued.net> 182 183-------------------------- 184 185What: remove EXPORT_SYMBOL(kernel_thread) 186When: August 2006 187Files: arch/*/kernel/*_ksyms.c 188Check: kernel_thread 189Why: kernel_thread is a low-level implementation detail. Drivers should 190 use the <linux/kthread.h> API instead which shields them from 191 implementation details and provides a higherlevel interface that 192 prevents bugs and code duplication 193Who: Christoph Hellwig <hch@lst.de> 194 195--------------------------- 196 197What: Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports 198 (temporary transition config option provided until then) 199 The transition config option will also be removed at the same time. 200When: before 2.6.19 201Why: Unused symbols are both increasing the size of the kernel binary 202 and are often a sign of "wrong API" 203Who: Arjan van de Ven <arjan@linux.intel.com> 204 205--------------------------- 206 207What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment 208When: October 2008 209Why: The stacking of class devices makes these values misleading and 210 inconsistent. 211 Class devices should not carry any of these properties, and bus 212 devices have SUBSYTEM and DRIVER as a replacement. 213Who: Kay Sievers <kay.sievers@suse.de> 214 215--------------------------- 216 217What: ACPI procfs interface 218When: July 2008 219Why: ACPI sysfs conversion should be finished by January 2008. 220 ACPI procfs interface will be removed in July 2008 so that 221 there is enough time for the user space to catch up. 222Who: Zhang Rui <rui.zhang@intel.com> 223 224--------------------------- 225 226What: CONFIG_ACPI_PROCFS_POWER 227When: 2.6.39 228Why: sysfs I/F for ACPI power devices, including AC and Battery, 229 has been working in upstream kenrel since 2.6.24, Sep 2007. 230 In 2.6.37, we make the sysfs I/F always built in and this option 231 disabled by default. 232 Remove this option and the ACPI power procfs interface in 2.6.39. 233Who: Zhang Rui <rui.zhang@intel.com> 234 235--------------------------- 236 237What: /proc/acpi/event 238When: February 2008 239Why: /proc/acpi/event has been replaced by events via the input layer 240 and netlink since 2.6.23. 241Who: Len Brown <len.brown@intel.com> 242 243--------------------------- 244 245What: i386/x86_64 bzImage symlinks 246When: April 2010 247 248Why: The i386/x86_64 merge provides a symlink to the old bzImage 249 location so not yet updated user space tools, e.g. package 250 scripts, do not break. 251Who: Thomas Gleixner <tglx@linutronix.de> 252 253--------------------------- 254 255What: GPIO autorequest on gpio_direction_{input,output}() in gpiolib 256When: February 2010 257Why: All callers should use explicit gpio_request()/gpio_free(). 258 The autorequest mechanism in gpiolib was provided mostly as a 259 migration aid for legacy GPIO interfaces (for SOC based GPIOs). 260 Those users have now largely migrated. Platforms implementing 261 the GPIO interfaces without using gpiolib will see no changes. 262Who: David Brownell <dbrownell@users.sourceforge.net> 263--------------------------- 264 265What: b43 support for firmware revision < 410 266When: The schedule was July 2008, but it was decided that we are going to keep the 267 code as long as there are no major maintanance headaches. 268 So it _could_ be removed _any_ time now, if it conflicts with something new. 269Why: The support code for the old firmware hurts code readability/maintainability 270 and slightly hurts runtime performance. Bugfixes for the old firmware 271 are not provided by Broadcom anymore. 272Who: Michael Buesch <mb@bu3sch.de> 273 274--------------------------- 275 276What: /sys/o2cb symlink 277When: January 2010 278Why: /sys/fs/o2cb is the proper location for this information - /sys/o2cb 279 exists as a symlink for backwards compatibility for old versions of 280 ocfs2-tools. 2 years should be sufficient time to phase in new versions 281 which know to look in /sys/fs/o2cb. 282Who: ocfs2-devel@oss.oracle.com 283 284--------------------------- 285 286What: Ability for non root users to shm_get hugetlb pages based on mlock 287 resource limits 288When: 2.6.31 289Why: Non root users need to be part of /proc/sys/vm/hugetlb_shm_group or 290 have CAP_IPC_LOCK to be able to allocate shm segments backed by 291 huge pages. The mlock based rlimit check to allow shm hugetlb is 292 inconsistent with mmap based allocations. Hence it is being 293 deprecated. 294Who: Ravikiran Thirumalai <kiran@scalex86.org> 295 296--------------------------- 297 298What: CONFIG_THERMAL_HWMON 299When: January 2009 300Why: This option was introduced just to allow older lm-sensors userspace 301 to keep working over the upgrade to 2.6.26. At the scheduled time of 302 removal fixed lm-sensors (2.x or 3.x) should be readily available. 303Who: Rene Herman <rene.herman@gmail.com> 304 305--------------------------- 306 307What: Code that is now under CONFIG_WIRELESS_EXT_SYSFS 308 (in net/core/net-sysfs.c) 309When: After the only user (hal) has seen a release with the patches 310 for enough time, probably some time in 2010. 311Why: Over 1K .text/.data size reduction, data is available in other 312 ways (ioctls) 313Who: Johannes Berg <johannes@sipsolutions.net> 314 315--------------------------- 316 317What: sysfs ui for changing p4-clockmod parameters 318When: September 2009 319Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and 320 e088e4c9cdb618675874becb91b2fd581ee707e6. 321 Removal is subject to fixing any remaining bugs in ACPI which may 322 cause the thermal throttling not to happen at the right time. 323Who: Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com> 324 325----------------------------- 326 327What: fakephp and associated sysfs files in /sys/bus/pci/slots/ 328When: 2011 329Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to 330 represent a machine's physical PCI slots. The change in semantics 331 had userspace implications, as the hotplug core no longer allowed 332 drivers to create multiple sysfs files per physical slot (required 333 for multi-function devices, e.g.). fakephp was seen as a developer's 334 tool only, and its interface changed. Too late, we learned that 335 there were some users of the fakephp interface. 336 337 In 2.6.30, the original fakephp interface was restored. At the same 338 time, the PCI core gained the ability that fakephp provided, namely 339 function-level hot-remove and hot-add. 340 341 Since the PCI core now provides the same functionality, exposed in: 342 343 /sys/bus/pci/rescan 344 /sys/bus/pci/devices/.../remove 345 /sys/bus/pci/devices/.../rescan 346 347 there is no functional reason to maintain fakephp as well. 348 349 We will keep the existing module so that 'modprobe fakephp' will 350 present the old /sys/bus/pci/slots/... interface for compatibility, 351 but users are urged to migrate their applications to the API above. 352 353 After a reasonable transition period, we will remove the legacy 354 fakephp interface. 355Who: Alex Chiang <achiang@hp.com> 356 357--------------------------- 358 359What: CONFIG_RFKILL_INPUT 360When: 2.6.33 361Why: Should be implemented in userspace, policy daemon. 362Who: Johannes Berg <johannes@sipsolutions.net> 363 364---------------------------- 365 366What: sound-slot/service-* module aliases and related clutters in 367 sound/sound_core.c 368When: August 2010 369Why: OSS sound_core grabs all legacy minors (0-255) of SOUND_MAJOR 370 (14) and requests modules using custom sound-slot/service-* 371 module aliases. The only benefit of doing this is allowing 372 use of custom module aliases which might as well be considered 373 a bug at this point. This preemptive claiming prevents 374 alternative OSS implementations. 375 376 Till the feature is removed, the kernel will be requesting 377 both sound-slot/service-* and the standard char-major-* module 378 aliases and allow turning off the pre-claiming selectively via 379 CONFIG_SOUND_OSS_CORE_PRECLAIM and soundcore.preclaim_oss 380 kernel parameter. 381 382 After the transition phase is complete, both the custom module 383 aliases and switches to disable it will go away. This removal 384 will also allow making ALSA OSS emulation independent of 385 sound_core. The dependency will be broken then too. 386Who: Tejun Heo <tj@kernel.org> 387 388---------------------------- 389 390What: sysfs-class-rfkill state file 391When: Feb 2014 392Files: net/rfkill/core.c 393Why: Documented as obsolete since Feb 2010. This file is limited to 3 394 states while the rfkill drivers can have 4 states. 395Who: anybody or Florian Mickler <florian@mickler.org> 396 397---------------------------- 398 399What: sysfs-class-rfkill claim file 400When: Feb 2012 401Files: net/rfkill/core.c 402Why: It is not possible to claim an rfkill driver since 2007. This is 403 Documented as obsolete since Feb 2010. 404Who: anybody or Florian Mickler <florian@mickler.org> 405 406---------------------------- 407 408What: capifs 409When: February 2011 410Files: drivers/isdn/capi/capifs.* 411Why: udev fully replaces this special file system that only contains CAPI 412 NCCI TTY device nodes. User space (pppdcapiplugin) works without 413 noticing the difference. 414Who: Jan Kiszka <jan.kiszka@web.de> 415 416---------------------------- 417 418What: KVM paravirt mmu host support 419When: January 2011 420Why: The paravirt mmu host support is slower than non-paravirt mmu, both 421 on newer and older hardware. It is already not exposed to the guest, 422 and kept only for live migration purposes. 423Who: Avi Kivity <avi@redhat.com> 424 425---------------------------- 426 427What: iwlwifi 50XX module parameters 428When: 2.6.40 429Why: The "..50" modules parameters were used to configure 5000 series and 430 up devices; different set of module parameters also available for 4965 431 with same functionalities. Consolidate both set into single place 432 in drivers/net/wireless/iwlwifi/iwl-agn.c 433 434Who: Wey-Yi Guy <wey-yi.w.guy@intel.com> 435 436---------------------------- 437 438What: iwl4965 alias support 439When: 2.6.40 440Why: Internal alias support has been present in module-init-tools for some 441 time, the MODULE_ALIAS("iwl4965") boilerplate aliases can be removed 442 with no impact. 443 444Who: Wey-Yi Guy <wey-yi.w.guy@intel.com> 445 446--------------------------- 447 448What: xt_NOTRACK 449Files: net/netfilter/xt_NOTRACK.c 450When: April 2011 451Why: Superseded by xt_CT 452Who: Netfilter developer team <netfilter-devel@vger.kernel.org> 453 454---------------------------- 455 456What: IRQF_DISABLED 457When: 2.6.36 458Why: The flag is a NOOP as we run interrupt handlers with interrupts disabled 459Who: Thomas Gleixner <tglx@linutronix.de> 460 461---------------------------- 462 463What: The acpi_sleep=s4_nonvs command line option 464When: 2.6.37 465Files: arch/x86/kernel/acpi/sleep.c 466Why: superseded by acpi_sleep=nonvs 467Who: Rafael J. Wysocki <rjw@sisk.pl> 468 469---------------------------- 470 471What: PCI DMA unmap state API 472When: August 2012 473Why: PCI DMA unmap state API (include/linux/pci-dma.h) was replaced 474 with DMA unmap state API (DMA unmap state API can be used for 475 any bus). 476Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> 477 478---------------------------- 479 480What: DMA_xxBIT_MASK macros 481When: Jun 2011 482Why: DMA_xxBIT_MASK macros were replaced with DMA_BIT_MASK() macros. 483Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> 484 485---------------------------- 486 487What: namespace cgroup (ns_cgroup) 488When: 2.6.38 489Why: The ns_cgroup leads to some problems: 490 * cgroup creation is out-of-control 491 * cgroup name can conflict when pids are looping 492 * it is not possible to have a single process handling 493 a lot of namespaces without falling in a exponential creation time 494 * we may want to create a namespace without creating a cgroup 495 496 The ns_cgroup is replaced by a compatibility flag 'clone_children', 497 where a newly created cgroup will copy the parent cgroup values. 498 The userspace has to manually create a cgroup and add a task to 499 the 'tasks' file. 500Who: Daniel Lezcano <daniel.lezcano@free.fr> 501 502---------------------------- 503 504What: iwlwifi disable_hw_scan module parameters 505When: 2.6.40 506Why: Hareware scan is the prefer method for iwlwifi devices for 507 scanning operation. Remove software scan support for all the 508 iwlwifi devices. 509 510Who: Wey-Yi Guy <wey-yi.w.guy@intel.com> 511 512---------------------------- 513 514What: access to nfsd auth cache through sys_nfsservctl or '.' files 515 in the 'nfsd' filesystem. 516When: 2.6.40 517Why: This is a legacy interface which have been replaced by a more 518 dynamic cache. Continuing to maintain this interface is an 519 unnecessary burden. 520Who: NeilBrown <neilb@suse.de> 521 522---------------------------- 523 524What: cancel_rearming_delayed_work[queue]() 525When: 2.6.39 526 527Why: The functions have been superceded by cancel_delayed_work_sync() 528 quite some time ago. The conversion is trivial and there is no 529 in-kernel user left. 530Who: Tejun Heo <tj@kernel.org> 531 532---------------------------- 533 534What: Legacy, non-standard chassis intrusion detection interface. 535When: June 2011 536Why: The adm9240, w83792d and w83793 hardware monitoring drivers have 537 legacy interfaces for chassis intrusion detection. A standard 538 interface has been added to each driver, so the legacy interface 539 can be removed. 540Who: Jean Delvare <khali@linux-fr.org> 541 542---------------------------- 543 544What: xt_connlimit rev 0 545When: 2012 546Who: Jan Engelhardt <jengelh@medozas.de> 547Files: net/netfilter/xt_connlimit.c 548 549---------------------------- 550 551What: noswapaccount kernel command line parameter 552When: 2.6.40 553Why: The original implementation of memsw feature enabled by 554 CONFIG_CGROUP_MEM_RES_CTLR_SWAP could be disabled by the noswapaccount 555 kernel parameter (introduced in 2.6.29-rc1). Later on, this decision 556 turned out to be not ideal because we cannot have the feature compiled 557 in and disabled by default and let only interested to enable it 558 (e.g. general distribution kernels might need it). Therefore we have 559 added swapaccount[=0|1] parameter (introduced in 2.6.37) which provides 560 the both possibilities. If we remove noswapaccount we will have 561 less command line parameters with the same functionality and we 562 can also cleanup the parameter handling a bit (). 563Who: Michal Hocko <mhocko@suse.cz> 564 565---------------------------- 566 567What: ipt_addrtype match include file 568When: 2012 569Why: superseded by xt_addrtype 570Who: Florian Westphal <fw@strlen.de> 571Files: include/linux/netfilter_ipv4/ipt_addrtype.h 572 573---------------------------- 574 575What: i2c_driver.attach_adapter 576 i2c_driver.detach_adapter 577When: September 2011 578Why: These legacy callbacks should no longer be used as i2c-core offers 579 a variety of preferable alternative ways to instantiate I2C devices. 580Who: Jean Delvare <khali@linux-fr.org> 581 582---------------------------- 583