On Mon, May 03, 2021 at 02:35:44PM -0700, Russ Weight wrote: > Extend the FPGA Security Manager class driver to include > an update/remaining_size sysfs node that can be read to > determine how much data remains to be transferred to the > secure update engine. This file can be used to monitor > progress during the "writing" phase of an update. > > Signed-off-by: Russ Weight <russell.h.weight@xxxxxxxxx> > Reviewed-by: Tom Rix <trix@xxxxxxxxxx> > --- > v12: > - Updated Date and KernelVersion fields in ABI documentation > v11: > - No change > v10: > - Rebased to 5.12-rc2 next > - Updated Date and KernelVersion in ABI documentation > v9: > - Updated Date and KernelVersion in ABI documentation > v8: > - No change > v7: > - Changed Date in documentation file to December 2020 > v6: > - No change > v5: > - Use new function sysfs_emit() in the remaining_size_show() function > v4: > - Changed from "Intel FPGA Security Manager" to FPGA Security Manager" > and removed unnecessary references to "Intel". > - Changed: imgr -> smgr, ifpga_ to fpga_ > v3: > - No change > v2: > - Bumped documentation date and version > --- > Documentation/ABI/testing/sysfs-class-fpga-sec-mgr | 11 +++++++++++ > drivers/fpga/fpga-sec-mgr.c | 10 ++++++++++ > 2 files changed, 21 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-class-fpga-sec-mgr b/Documentation/ABI/testing/sysfs-class-fpga-sec-mgr > index 24890d04521f..c5d0b9d7c7e4 100644 > --- a/Documentation/ABI/testing/sysfs-class-fpga-sec-mgr > +++ b/Documentation/ABI/testing/sysfs-class-fpga-sec-mgr > @@ -28,6 +28,17 @@ Description: Read-only. Returns a string describing the current > as it will be signaled by sysfs_notify() on each > state change. > > +What: /sys/class/fpga_sec_mgr/fpga_secX/update/remaining_size > +Date: June 2021 > +KernelVersion: 5.14 > +Contact: Russ Weight <russell.h.weight@xxxxxxxxx> > +Description: Read-only. Returns the size of data that remains to > + be written to the secure update engine. The size > + value is initialized to the full size of the file > + image and the value is updated periodically during > + the "writing" phase of the update. > + Format: "%u". > + > What: /sys/class/fpga_sec_mgr/fpga_secX/update/error > Date: June 2021 > KernelVersion: 5.14 > diff --git a/drivers/fpga/fpga-sec-mgr.c b/drivers/fpga/fpga-sec-mgr.c > index e43fa2797d27..2487042ace82 100644 > --- a/drivers/fpga/fpga-sec-mgr.c > +++ b/drivers/fpga/fpga-sec-mgr.c > @@ -198,6 +198,15 @@ error_show(struct device *dev, struct device_attribute *attr, char *buf) > } > static DEVICE_ATTR_RO(error); > > +static ssize_t remaining_size_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct fpga_sec_mgr *smgr = to_sec_mgr(dev); > + > + return sysfs_emit(buf, "%u\n", smgr->remaining_size); > +} > +static DEVICE_ATTR_RO(remaining_size); > + > static ssize_t filename_store(struct device *dev, struct device_attribute *attr, > const char *buf, size_t count) > { > @@ -234,6 +243,7 @@ static struct attribute *sec_mgr_update_attrs[] = { > &dev_attr_filename.attr, > &dev_attr_status.attr, > &dev_attr_error.attr, > + &dev_attr_remaining_size.attr, > NULL, > }; > > -- > 2.25.1 > Looks good, Moritz