* [PATCH v2 0/2] fsi: sbefifo: Add sysfs file indicating a timeout error
@ 2021-10-19 21:17 Eddie James
2021-10-19 21:17 ` [PATCH v2 1/2] docs: ABI: testing: Document the SBEFIFO timeout interface Eddie James
2021-10-19 21:17 ` [PATCH v2 2/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
0 siblings, 2 replies; 3+ messages in thread
From: Eddie James @ 2021-10-19 21:17 UTC (permalink / raw)
To: linux-fsi; +Cc: linux-kernel, jk, joel, alistair, eajames
Add a sysfs file in the SBEFIFO device driver to indicate a timeout error, and
notify pollers when a timeout occurs. Document the file in the testing
directory.
Changes since v1:
- Add the documentation
Eddie James (2):
docs: ABI: testing: Document the SBEFIFO timeout interface
fsi: sbefifo: Add sysfs file indicating a timeout error
.../ABI/testing/sysfs-bus-fsi-devices-sbefifo | 10 ++++++++++
drivers/fsi/fsi-sbefifo.c | 16 ++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
--
2.27.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 1/2] docs: ABI: testing: Document the SBEFIFO timeout interface
2021-10-19 21:17 [PATCH v2 0/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
@ 2021-10-19 21:17 ` Eddie James
2021-10-19 21:17 ` [PATCH v2 2/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
1 sibling, 0 replies; 3+ messages in thread
From: Eddie James @ 2021-10-19 21:17 UTC (permalink / raw)
To: linux-fsi; +Cc: linux-kernel, jk, joel, alistair, eajames
Add documentation for the new sysfs entry that indicates whether or not
the SBE has timed out.
Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
.../ABI/testing/sysfs-bus-fsi-devices-sbefifo | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
diff --git a/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo b/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
new file mode 100644
index 000000000000..531fe9d6b40a
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
@@ -0,0 +1,10 @@
+What: /sys/bus/fsi/devices/XX.XX.00:06/sbefifoX/timeout
+KernelVersion: 5.15
+Contact: eajames@linux.ibm.com
+Description:
+ Indicates whether or not this SBE device has experienced a
+ timeout; i.e. the SBE did not respond within the time allotted
+ by the driver. A value of 1 indicates that a timeout has
+ ocurred and no transfers have completed since the timeout. A
+ value of 0 indicates that no timeout has ocurred, or if one
+ has, more recent transfers have completed successful.
--
2.27.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 2/2] fsi: sbefifo: Add sysfs file indicating a timeout error
2021-10-19 21:17 [PATCH v2 0/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
2021-10-19 21:17 ` [PATCH v2 1/2] docs: ABI: testing: Document the SBEFIFO timeout interface Eddie James
@ 2021-10-19 21:17 ` Eddie James
1 sibling, 0 replies; 3+ messages in thread
From: Eddie James @ 2021-10-19 21:17 UTC (permalink / raw)
To: linux-fsi; +Cc: linux-kernel, jk, joel, alistair, eajames
The SBEFIFO timeout error requires special handling in userspace
to do recovery operations. Add a sysfs file to indicate a timeout
error, and notify pollers when a timeout occurs.
Signed-off-by: Eddie James <eajames@linux.ibm.com>
Reviewed-by: Joel Stanley <joel@jms.id.au>
---
drivers/fsi/fsi-sbefifo.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
index 84cb965bfed5..b414ab4431ef 100644
--- a/drivers/fsi/fsi-sbefifo.c
+++ b/drivers/fsi/fsi-sbefifo.c
@@ -124,6 +124,7 @@ struct sbefifo {
bool broken;
bool dead;
bool async_ffdc;
+ bool timed_out;
};
struct sbefifo_user {
@@ -136,6 +137,14 @@ struct sbefifo_user {
static DEFINE_MUTEX(sbefifo_ffdc_mutex);
+static ssize_t timeout_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct sbefifo *sbefifo = container_of(dev, struct sbefifo, dev);
+
+ return sysfs_emit(buf, "%d\n", sbefifo->timed_out ? 1 : 0);
+}
+static DEVICE_ATTR_RO(timeout);
static void __sbefifo_dump_ffdc(struct device *dev, const __be32 *ffdc,
size_t ffdc_sz, bool internal)
@@ -462,11 +471,14 @@ static int sbefifo_wait(struct sbefifo *sbefifo, bool up,
break;
}
if (!ready) {
+ sysfs_notify(&sbefifo->dev.kobj, NULL, dev_attr_timeout.attr.name);
+ sbefifo->timed_out = true;
dev_err(dev, "%s FIFO Timeout ! status=%08x\n", up ? "UP" : "DOWN", sts);
return -ETIMEDOUT;
}
dev_vdbg(dev, "End of wait status: %08x\n", sts);
+ sbefifo->timed_out = false;
*status = sts;
return 0;
@@ -993,6 +1005,8 @@ static int sbefifo_probe(struct device *dev)
child_name);
}
+ device_create_file(&sbefifo->dev, &dev_attr_timeout);
+
return 0;
err_free_minor:
fsi_free_minor(sbefifo->dev.devt);
@@ -1018,6 +1032,8 @@ static int sbefifo_remove(struct device *dev)
dev_dbg(dev, "Removing sbefifo device...\n");
+ device_remove_file(&sbefifo->dev, &dev_attr_timeout);
+
mutex_lock(&sbefifo->lock);
sbefifo->dead = true;
mutex_unlock(&sbefifo->lock);
--
2.27.0
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-10-19 21:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-19 21:17 [PATCH v2 0/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
2021-10-19 21:17 ` [PATCH v2 1/2] docs: ABI: testing: Document the SBEFIFO timeout interface Eddie James
2021-10-19 21:17 ` [PATCH v2 2/2] fsi: sbefifo: Add sysfs file indicating a timeout error Eddie James
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®