• Vishal Verma's avatar
    cxl: add a firmware update mechanism using the sysfs firmware loader · 9521875b
    Vishal Verma authored
    The sysfs based firmware loader mechanism was created to easily allow
    userspace to upload firmware images to FPGA cards. This also happens to
    be pretty suitable to create a user-initiated but kernel-controlled
    firmware update mechanism for CXL devices, using the CXL specified
    mailbox commands.
    
    Since firmware update commands can be long-running, and can be processed
    in the background by the endpoint device, it is desirable to have the
    ability to chunk the firmware transfer down to smaller pieces, so that
    one operation does not monopolize the mailbox, locking out any other
    long running background commands entirely - e.g. security commands like
    'sanitize' or poison scanning operations.
    
    The firmware loader mechanism allows a natural way to perform this
    chunking, as after each mailbox command, that is restricted to the
    maximum mailbox payload size, the cxl memdev driver relinquishes control
    back to the fw_loader system and awaits the next chunk of data to
    transfer. This opens opportunities for other background commands to
    access the mailbox and send their own slices of background commands.
    
    Add the necessary helpers and state tracking to be able to perform the
    'Get FW Info', 'Transfer FW', and 'Activate FW' mailbox commands as
    described in the CXL spec. Wire these up to the firmware loader
    callbacks, and register with that system to create the memX/firmware/
    sysfs ABI.
    
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
    Cc: Russ Weight <russell.h.weight@intel.com>
    Cc: Alison Schofield <alison.schofield@intel.com>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Ben Widawsky <bwidawsk@kernel.org>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarDave Jiang <dave.jiang@intel.com>
    Signed-off-by: default avatarVishal Verma <vishal.l.verma@intel.com>
    Link: https://lore.kernel.org/r/20230602-vv-fw_update-v4-1-c6265bd7343b@intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    9521875b
Kconfig 5.39 KB