• Dan Williams's avatar
    cxl/acpi: Add root device lockdep validation · d864b8ea
    Dan Williams authored
    The CXL "root" device, ACPI0017, is an attach point for coordinating
    platform level CXL resources and is the parent device for a CXL port
    topology tree. As such it has distinct locking rules relative to other
    CXL subsystem objects, but because it is an ACPI device the lock class
    is established well before it is given to the cxl_acpi driver.
    
    However, the lockdep API does support changing the lock class "live" for
    situations like this. Add a device_lock_set_class() helper that a driver
    can use in ->probe() to set a custom lock class, and
    device_lock_reset_class() to return to the default "no validate" class
    before the custom lock class key goes out of scope after ->remove().
    
    Note the helpers are all macros to support dead code elimination in the
    CONFIG_PROVE_LOCKING=n case, however device_set_lock_class() still needs
    #ifdef CONFIG_PROVE_LOCKING since lockdep_match_class() explicitly does
    not have a helper in the CONFIG_PROVE_LOCKING=n case (see comment in
    lockdep.h). The lockdep API needs 2 small tweaks to prevent "unused"
    warnings for the @key argument to lock_set_class(), and a new
    lock_set_novalidate_class() is added to supplement
    lockdep_set_novalidate_class() in the cases where the lock class is
    converted while the lock is held.
    Suggested-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Alison Schofield <alison.schofield@intel.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Ben Widawsky <ben.widawsky@intel.com>
    Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
    Link: https://lore.kernel.org/r/165100081305.1528964.11138612430659737238.stgit@dwillia2-desk3.amr.corp.intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    d864b8ea
acpi.c 8.84 KB