• R
    Driver core: Add offline/online device operations · 4f3549d7
    Rafael J. Wysocki 提交于
    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: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: NToshi Kani <toshi.kani@hp.com>
    4f3549d7
device.h 39.6 KB