Re: [PATCH v10 4/8] PCI/sysfs: Allow userspace to query and set device reset mechanism

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 21/07/27 06:28PM, Bjorn Helgaas wrote:
> On Fri, Jul 09, 2021 at 06:08:09PM +0530, Amey Narkhede wrote:
> > Add reset_method sysfs attribute to enable user to query and set user
> > preferred device reset methods and their ordering.
> >
> > Co-developed-by: Alex Williamson <alex.williamson@xxxxxxxxxx>
> > Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx>
> > Signed-off-by: Amey Narkhede <ameynarkhede03@xxxxxxxxx>
> > ---
> >  Documentation/ABI/testing/sysfs-bus-pci |  19 +++++
> >  drivers/pci/pci-sysfs.c                 | 103 ++++++++++++++++++++++++
> >  2 files changed, 122 insertions(+)
> >
> > diff --git a/Documentation/ABI/testing/sysfs-bus-pci b/Documentation/ABI/testing/sysfs-bus-pci
> > index ef00fada2..43f4e33c7 100644
> > --- a/Documentation/ABI/testing/sysfs-bus-pci
> > +++ b/Documentation/ABI/testing/sysfs-bus-pci
> > @@ -121,6 +121,25 @@ Description:
> >  		child buses, and re-discover devices removed earlier
> >  		from this part of the device tree.
> >
> > +What:		/sys/bus/pci/devices/.../reset_method
> > +Date:		March 2021
> > +Contact:	Amey Narkhede <ameynarkhede03@xxxxxxxxx>
> > +Description:
> > +		Some devices allow an individual function to be reset
> > +		without affecting other functions in the same slot.
> > +
> > +		For devices that have this support, a file named
> > +		reset_method will be present in sysfs. Initially reading
> > +		this file will give names of the device supported reset
> > +		methods and their ordering. After write, this file will
> > +		give names and ordering of currently enabled reset methods.
> > +		Writing the name or comma separated list of names of any of
> > +		the device supported reset methods to this file will set
> > +		the reset methods and their ordering to be used when
> > +		resetting the device. Writing empty string to this file
> > +		will disable ability to reset the device and writing
> > +		"default" will return to the original value.
> > +
> >  What:		/sys/bus/pci/devices/.../reset
> >  Date:		July 2009
> >  Contact:	Michael S. Tsirkin <mst@xxxxxxxxxx>
>
[...]

> > +		int i;
> > +
> > +		if (sysfs_streq(name, ""))
> > +			continue;
> > +
> > +		name = strim(name);
> > +
> > +		for (i = 1; i < PCI_NUM_RESET_METHODS; i++) {
> > +			if (sysfs_streq(name, pci_reset_fn_methods[i].name) &&
> > +			    !pci_reset_fn_methods[i].reset_fn(pdev, 1)) {
> > +				reset_methods[n++] = i;
>
> Can we build this directly in pdev->reset_methods[] so we don't need
> the memcpy() below?
>
This is to avoid writing partial values directly to dev->reset_methods.
So for example if user writes flr,unsupported_value then
dev->reset_methods should not be modified even though flr is valid reset
method in this example to avoid partial writes. Either operation(in this
case writing supported reset methods to reset_method attr) succeeds
completely or it fails othewise.

Thanks,
Amey

[...]



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux