• Dan Williams's avatar
    PM, libnvdimm: Add runtime firmware activation support · 48001ea5
    Dan Williams authored
    Abstract platform specific mechanics for nvdimm firmware activation
    behind a handful of generic ops. At the bus level ->activate_state()
    indicates the unified state (idle, busy, armed) of all DIMMs on the bus,
    and ->capability() indicates the system state expectations for activate.
    At the DIMM level ->activate_state() indicates the per-DIMM state,
    ->activate_result() indicates the outcome of the last activation
    attempt, and ->arm() attempts to transition the DIMM from 'idle' to
    'armed'.
    
    A new hibernate_quiet_exec() facility is added to support firmware
    activation in an OS defined system quiesce state. It leverages the fact
    that the hibernate-freeze state wants to assert that a memory
    hibernation snapshot can be taken. This is in contrast to a platform
    firmware defined quiesce state that may forcefully quiet the memory
    controller independent of whether an individual device-driver properly
    supports hibernate-freeze.
    
    The libnvdimm sysfs interface is extended to support detection of a
    firmware activate capability. The mechanism supports enumeration and
    triggering of firmware activate, optionally in the
    hibernate_quiet_exec() context.
    
    [rafael: hibernate_quiet_exec() proposal]
    [vishal: fix up sparse warning, grammar in Documentation/]
    
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Co-developed-by: default avatar"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatar"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarVishal Verma <vishal.l.verma@intel.com>
    48001ea5
hibernate.c 30.4 KB