kernel-ark/Documentation/ABI/testing
Rafael J. Wysocki 4f3549d72d Driver core: Add offline/online device operations
In some cases, graceful hot-removal of devices is not possible,
although in principle the devices in question support hotplug.
For example, that may happen for the last CPU in the system or
for memory modules holding kernel memory.

In those cases it is nice to be able to check if the given device
can be gracefully hot-removed before triggering a removal procedure
that cannot be aborted or reversed.  Unfortunately, however, the
kernel currently doesn't provide any support for that.

To address that deficiency, introduce support for offline and
online operations that can be performed on devices, respectively,
before a hot-removal and in case when it is necessary (or convenient)
to put a device back online after a successful offline (that has not
been followed by removal).  The idea is that the offline will fail
whenever the given device cannot be gracefully removed from the
system and it will not be allowed to use the device after a
successful offline (until a subsequent online) in analogy with the
existing CPU offline/online mechanism.

For now, the offline and online operations are introduced at the
bus type level, as that should be sufficient for the most urgent use
cases (CPUs and memory modules).  In the future, however, the
approach may be extended to cover some more complicated device
offline/online scenarios involving device drivers etc.

The lock_device_hotplug() and unlock_device_hotplug() functions are
introduced because subsequent patches need to put larger pieces of
code under device_hotplug_lock to prevent race conditions between
device offline and removal from happening.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Toshi Kani <toshi.kani@hp.com>
2013-05-12 14:14:09 +02:00
..
configfs-spear-pcie-gadget ST SPEAr: PCIE gadget suppport 2011-03-22 17:44:10 -07:00
debugfs-ec Documentation: Add new /sys/kernel/debug/ec/* files to ABI 2010-08-03 09:49:07 -04:00
debugfs-ideapad ideapad: add debugfs support 2011-10-24 16:52:39 +02:00
debugfs-olpc x86/olpc: Add debugfs interface for EC commands 2012-03-27 20:54:52 +02:00
debugfs-pfo-nx-crypto powerpc/crypto: debugfs routines and docs for the nx device driver 2012-05-16 15:05:45 +10:00
debugfs-pktcdvd doc: use correct debugfs mountpoint 2009-04-13 15:04:33 -07:00
dev-kmsg doc: fix quite a few typos within Documentation 2012-11-19 14:28:24 +01:00
evm evm: re-release 2011-07-18 12:29:40 -04:00
ima_policy ima: add policy support for file system uuid 2013-02-06 10:40:29 -05:00
procfs-diskstats tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
pstore pstore: Create a convenient mount point for pstore 2013-02-12 13:07:22 -08:00
sysfs-ata [libata] Add ATA transport class 2010-10-21 20:21:03 -04:00
sysfs-block block: Implement support for WRITE SAME 2012-09-20 14:31:45 +02:00
sysfs-block-bcache bcache: A block layer cache 2013-03-23 16:11:31 -07:00
sysfs-block-dm dm: document sysfs entries 2012-03-28 18:41:23 +01:00
sysfs-block-rssd mtip32xx: Remove 'registers' and 'flags' from sysfs 2012-06-05 09:13:48 +02:00
sysfs-block-zram Documentation: Add newline at end-of-file to files lacking one 2012-07-20 23:10:28 +02:00
sysfs-bus-bcma Documentation/ABI/: update version number references from 2.6.x to 3.x 2011-08-05 13:32:40 +02:00
sysfs-bus-css Fix common misspellings 2011-03-31 11:26:23 -03:00
sysfs-bus-event_source-devices-events perf: Document the ABI of perf sysfs entries 2013-01-31 13:07:51 -03:00
sysfs-bus-event_source-devices-format perf: Adding sysfs group format attribute for pmu device 2012-03-16 14:06:06 -03:00
sysfs-bus-fcoe libfcoe, fcoe, bnx2fc: Add new fcoe control interface 2012-12-14 10:38:54 -08:00
sysfs-bus-hsi HSI: Add HSI ABI documentation 2012-04-23 14:23:32 +03:00
sysfs-bus-i2c-devices-fsa9480 drivers/misc: add support the FSA9480 USB Switch 2011-07-25 20:57:14 -07:00
sysfs-bus-i2c-devices-hm6352 hmc6352: add driver for the HMC6352 compass 2010-08-09 20:45:10 -07:00
sysfs-bus-i2c-devices-lm3533 mfd: Remove lm3533 boost attributes 2012-05-20 17:27:01 +02:00
sysfs-bus-iio iio: Add pressure channel type 2012-11-20 21:26:38 +00:00
sysfs-bus-iio-frequency-ad9523 iio: frequency: New driver for AD9523 SPI Low Jitter Clock Generator 2012-06-04 21:19:05 -07:00
sysfs-bus-iio-frequency-adf4350 iio: frequency: New driver for Analog Devices ADF4350/ADF4351 Wideband Synthesizers 2012-06-04 21:19:40 -07:00
sysfs-bus-iio-light-lm3533-als iio: cleanup sysfs-bus-iio-light-lm3533-als 2012-06-15 14:39:18 -07:00
sysfs-bus-iio-mpu6050 Invensense MPU6050 Device Driver. 2013-02-10 17:42:43 +00:00
sysfs-bus-mdio phylib: mdio: Add sysfs attribute for PHY identifiers. 2012-11-09 16:38:15 -05:00
sysfs-bus-media [media] media: Media device 2011-03-22 04:53:09 -03:00
sysfs-bus-mei mei: bus: Initial MEI Client bus type implementation 2013-03-29 08:35:47 -07:00
sysfs-bus-pci PCI: SRIOV control and status via sysfs (documentation) 2012-11-28 11:25:47 -07:00
sysfs-bus-pci-devices-cciss cciss: add transport mode attribute to sys 2011-08-08 11:40:17 +02:00
sysfs-bus-pci-drivers-ehci_hcd USB: document ehci-hcd's "companion" sysfs attribute 2011-09-18 01:48:37 -07:00
sysfs-bus-rbd rbd: don't create sysfs entries for non-mapped snapshots 2013-05-01 21:19:25 -07:00
sysfs-bus-rpmsg rpmsg: add virtio-based remote processor messaging bus 2012-02-08 22:53:58 +02:00
sysfs-bus-umc
sysfs-bus-usb USB: remove CONFIG_USB_SUSPEND from Documentation 2013-03-28 14:45:56 -07:00
sysfs-bus-usb-devices-usbsevseg Documentation: Add newline at end-of-file to files lacking one 2012-07-20 23:10:28 +02:00
sysfs-c2port
sysfs-cfq-target-latency Documentation: Add sysfs ABI change for cfq's target latency. 2012-04-01 14:33:40 -07:00
sysfs-class driver-core: documentation: fix up Greg's email address 2012-02-15 14:48:01 -08:00
sysfs-class-backlight-driver-adp8870 Documentation: Add newline at end-of-file to files lacking one 2012-07-20 23:10:28 +02:00
sysfs-class-backlight-driver-lm3533 backlight: add LM3533 backlight driver 2012-05-29 16:22:29 -07:00
sysfs-class-bdi bdi: allow block devices to say that they require stable page writes 2013-02-21 17:22:19 -08:00
sysfs-class-devfreq PM / devfreq: Add sysfs node to expose available governors 2012-11-20 18:46:24 +09:00
sysfs-class-extcon extcon: fix typos in sys-class-extcon 2012-09-05 12:18:11 -07:00
sysfs-class-lcd video/lcd: document sysfs interface 2009-08-28 15:21:12 -04:00
sysfs-class-led Fix common misspellings 2011-03-31 11:26:23 -03:00
sysfs-class-led-driver-lm3533 leds: add LM3533 LED driver 2012-05-29 16:22:32 -07:00
sysfs-class-mtd Documentation: mtd: amend the sysfs docs after mtdchar merge 2013-04-05 13:19:09 +01:00
sysfs-class-net-batman-adv batman-adv: sysfs documentation should keep alphabetical order 2012-11-21 12:34:50 +01:00
sysfs-class-net-grcan can: grcan: Add device driver for GRCAN and GRHCAN cores 2012-11-15 20:47:26 +01:00
sysfs-class-net-mesh batman-adv: network coding - add the initial infrastructure code 2013-03-13 22:53:48 +01:00
sysfs-class-pktcdvd
sysfs-class-power ds2760_battery: Document ABI change 2010-05-19 12:25:39 +04:00
sysfs-class-regulator regulator: core: Support bypass mode 2012-09-10 11:25:10 +08:00
sysfs-class-rtc-rtc0-device-rtc_calibration rtc/ab8500: add calibration attribute to AB8500 RTC 2012-01-10 16:30:52 -08:00
sysfs-class-scsi_host [SCSI] isci: Adding documentation to API change and fixup sysfs registration 2011-08-23 19:54:24 -07:00
sysfs-class-uwb_rc
sysfs-class-uwb_rc-wusbhc USB: wusb: add wusb_phy_rate sysfs file to host controllers 2009-12-11 11:55:16 -08:00
sysfs-dev
sysfs-devices driver-core: documentation: fix up Greg's email address 2012-02-15 14:48:01 -08:00
sysfs-devices-edac Edac: Add ABI Documentation for the new device nodes 2012-06-11 13:23:47 -03:00
sysfs-devices-firmware_node ACPI: Add new sysfs interface to export device description 2012-10-06 15:52:16 -04:00
sysfs-devices-lpss_ltr ACPI / LPSS: Add support for exposing LTR registers to user space 2013-03-21 22:45:15 +01:00
sysfs-devices-memory Documentation: update broken web addresses. 2010-08-04 15:21:40 +02:00
sysfs-devices-mmc mmc: export eMMC4.4 enhanced area details to sysfs 2011-03-15 13:48:01 -04:00
sysfs-devices-online Driver core: Add offline/online device operations 2013-05-12 14:14:09 +02:00
sysfs-devices-platform-_UDC_-gadget USB: gadget: storage: optional SCSI WRITE FUA bit 2010-08-10 14:35:42 -07:00
sysfs-devices-platform-docg3 Documentation: add sysfs entries for mtd docg3 chips 2012-01-09 18:12:17 +00:00
sysfs-devices-platform-sh_mobile_lcdc_fb fbdev: sh_mobile_lcdc: Implement overlays support 2012-06-20 10:02:54 +02:00
sysfs-devices-power Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
sysfs-devices-power_resources_D0 ACPI / PM: Expose lists of device power resources to user space 2013-01-25 21:51:32 +01:00
sysfs-devices-power_resources_D1 ACPI / PM: Expose lists of device power resources to user space 2013-01-25 21:51:32 +01:00
sysfs-devices-power_resources_D2 ACPI / PM: Expose lists of device power resources to user space 2013-01-25 21:51:32 +01:00
sysfs-devices-power_resources_D3hot ACPI / PM: Expose lists of device power resources to user space 2013-01-25 21:51:32 +01:00
sysfs-devices-power_resources_wakeup ACPI / PM: Expose lists of device wakeup power resources to user space 2013-04-11 22:41:48 +02:00
sysfs-devices-power_state ACPI / PM: Expose power states of ACPI devices to user space 2013-01-24 12:49:59 +01:00
sysfs-devices-real_power_state ACPI / PM: Expose power states of ACPI devices to user space 2013-01-24 12:49:59 +01:00
sysfs-devices-resource_in_use ACPI / PM: Expose current status of ACPI power resources 2013-01-24 12:50:09 +01:00
sysfs-devices-soc Documentation: add information for new sysfs soc bus functionality 2012-02-10 11:42:25 -08:00
sysfs-devices-sun ACPI: create _SUN sysfs file 2012-11-16 02:56:59 +01:00
sysfs-devices-system-cpu Documentation: Add ABI entry for crash_notes and crash_notes_size 2013-03-29 09:17:22 -07:00
sysfs-devices-system-ibm-rtl IBM Real-Time "SMI Free" mode driver -v7 2010-10-21 10:10:46 -04:00
sysfs-devices-system-xen_cpu xen/pcpu: Xen physical cpus online/offline sys interface 2012-07-19 15:51:39 -04:00
sysfs-driver-hid HID: Add HID Report Descriptor to sysfs 2011-02-17 13:23:14 +01:00
sysfs-driver-hid-lenovo-tpkbd HID: Driver for Lenovo Keyboard with Trackpoint 2012-06-08 10:44:10 +02:00
sysfs-driver-hid-logitech-lg4ff misc latin1 to utf8 conversions 2012-01-02 13:04:55 +01:00
sysfs-driver-hid-multitouch HID: multitouch: create sysfs attribute to control quirks from user-space 2011-11-23 14:50:38 +01:00
sysfs-driver-hid-picolcd HID: split picolcd's operation_mode sysfs attribute 2010-04-27 15:31:26 +02:00
sysfs-driver-hid-prodikeys HID: Prodikeys PC-MIDI HID Driver 2010-05-12 15:18:59 +02:00
sysfs-driver-hid-roccat-arvo HID: roccat: Add 'Users:' tag to sysfs documentation 2011-02-03 17:29:49 +01:00
sysfs-driver-hid-roccat-isku HID: roccat: add support for IskuFX 2013-03-14 11:50:49 +01:00
sysfs-driver-hid-roccat-kone Documentation: fix minor typos/spelling 2011-04-04 17:51:47 -07:00
sysfs-driver-hid-roccat-koneplus HID: roccat: deprecate some Koneplus attributes 2012-11-12 15:30:28 +01:00
sysfs-driver-hid-roccat-konepure HID: roccat: add support for Roccat Kone Pure gaming mouse 2013-03-14 11:50:49 +01:00
sysfs-driver-hid-roccat-kovaplus HID: roccat: deprecate some Kovaplus attributes 2012-11-12 15:30:29 +01:00
sysfs-driver-hid-roccat-lua HID: roccat: add support for Roccat Lua 2012-10-17 10:44:47 +02:00
sysfs-driver-hid-roccat-pyra HID: roccat: deprecated some Pyra attributes 2012-11-12 15:30:28 +01:00
sysfs-driver-hid-roccat-savu HID: roccat: enable Savu device reset 2012-11-05 13:17:39 +01:00
sysfs-driver-hid-srws1 USB: HID: Steelseries SRW-S1 Add support controlling all LEDs simultaneously 2013-01-31 16:39:32 +01:00
sysfs-driver-hid-thingm HID: add ThingM blink(1) USB RGB LED support 2013-02-19 11:31:46 +01:00
sysfs-driver-hid-wiimote HID: wiimote: Add extension sysfs attribute 2011-11-22 23:09:08 +01:00
sysfs-driver-ppi doc: fix quite a few typos within Documentation 2012-11-19 14:28:24 +01:00
sysfs-driver-samsung-laptop Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2012-03-28 14:20:23 -07:00
sysfs-driver-wacom HID: wacom: OLEDs control over sysfs for Intuos4 2012-08-15 10:29:11 +02:00
sysfs-firmware-acpi ACPI / hotplug: Introduce user space interface for hotplug profiles 2013-03-04 14:25:32 +01:00
sysfs-firmware-dmi firmware: Fix grammar in sysfs-firmware-dmi doc 2011-04-19 16:45:51 -07:00
sysfs-firmware-gsmi driver: Google EFI SMI 2011-04-29 18:09:34 -07:00
sysfs-firmware-log driver: Google Memory Console 2011-04-29 18:09:34 -07:00
sysfs-firmware-memmap
sysfs-firmware-sfi SFI: add sysfs interface for SFI tables. 2010-05-27 12:46:20 -04:00
sysfs-firmware-sgi_uv
sysfs-fs-ext4 ext4: make the zero-out chunk size tunable 2012-08-17 09:54:17 -04:00
sysfs-gpio gpiolib: allow poll() on value 2009-09-23 07:39:48 -07:00
sysfs-i2c-bmp085 drivers/misc: support for the pressure sensor BMP085 from Bosch Sensortec 2010-08-09 20:45:05 -07:00
sysfs-ibft
sysfs-kernel-fscaps kernel/ksysfs.c: expose file_caps_enabled in sysfs 2011-04-19 16:45:51 -07:00
sysfs-kernel-iommu_groups iommu: IOMMU Groups 2012-06-25 13:48:15 +02:00
sysfs-kernel-mm
sysfs-kernel-mm-hugepages
sysfs-kernel-mm-ksm ksm: add sysfs ABI Documentation 2013-02-23 17:50:19 -08:00
sysfs-kernel-slab slub: document setting min order with debug_guardpage_minorder > 0 2012-01-12 20:13:04 -08:00
sysfs-kernel-uids
sysfs-memory-page-offline HWPOISON: Add soft page offline support 2009-12-16 12:20:00 +01:00
sysfs-module modules: sysfs - export: taint, coresize, initsize 2012-01-13 09:32:15 +10:30
sysfs-ocfs2
sysfs-platform-asus-laptop Documentation: fix minor typos/spelling 2011-04-04 17:51:47 -07:00
sysfs-platform-asus-wmi asus-wmi: enable resume on lid open 2012-07-28 00:11:49 -04:00
sysfs-platform-at91 can: at91_can: make can_id of mailbox 0 configurable 2011-01-24 14:56:37 +01:00
sysfs-platform-eeepc-laptop eeepc-laptop: set the right paths in the documentation 2010-02-28 19:30:57 +01:00
sysfs-platform-ideapad-laptop ideapad: add Lenovo IdeaPad Z570 support (part 3) 2012-08-20 12:44:41 -04:00
sysfs-platform-kim drivers:misc: ti-st: move from rfkill to sysfs 2011-02-04 12:41:20 -08:00
sysfs-platform-msi-laptop msi-laptop: Add missing ABI documentation 2013-02-24 14:49:53 -08:00
sysfs-platform-ts5500 x86: Add TS-5500 platform support 2013-01-25 19:40:23 +01:00
sysfs-power PM / Sleep: add knob for printing device resume times 2012-07-01 13:31:22 +02:00
sysfs-pps LinuxPPS: core support 2009-06-18 13:04:04 -07:00
sysfs-profiling doc: Update the name of profiling based on sysfs 2012-12-03 11:11:51 +01:00
sysfs-ptp ptp: clarify the clock_name sysfs attribute 2012-09-22 15:42:46 -04:00
sysfs-tty uart: add other serial core layer get attributes 2012-10-30 14:05:32 -07:00
sysfs-wusb_cbaf