[PATCH 6/6] Add debug to firmware loader
Dave Gordon
david.s.gordon at intel.com
Tue Jul 26 12:07:45 UTC 2016
specifically to the ABORT case
Signed-off-by: Dave Gordon <david.s.gordon at intel.com>
---
drivers/base/firmware_class.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 773fc30..9ce7924 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -453,6 +453,9 @@ static struct firmware_priv *to_firmware_priv(struct device *dev)
static void __fw_load_abort(struct firmware_buf *buf)
{
+ pr_warn("aborting load of %s, status was 0x%lx\n",
+ buf->fw_id, buf->status);
+
/*
* There is a small window in which user can write to 'loading'
* between loading done and disappearance of 'loading'
@@ -462,6 +465,7 @@ static void __fw_load_abort(struct firmware_buf *buf)
list_del_init(&buf->pending_list);
set_bit(FW_STATUS_ABORT, &buf->status);
+
complete_all(&buf->completion);
}
@@ -670,6 +674,9 @@ static ssize_t firmware_loading_store(struct device *dev,
*/
list_del_init(&fw_buf->pending_list);
if (rc) {
+ pr_warn("aborting load of %s, status was 0x%lx\n",
+ fw_buf->fw_id, fw_buf->status);
+
set_bit(FW_STATUS_ABORT, &fw_buf->status);
written = rc;
}
@@ -974,7 +981,7 @@ static void kill_requests_without_uevent(void)
struct device *device, unsigned int opt_flags,
long timeout)
{
- return -ENOENT;
+ return -ETXTBSY;
}
/* No abort during direct loading */
@@ -995,7 +1002,9 @@ static int sync_cached_firmware_buf(struct firmware_buf *buf)
mutex_lock(&fw_lock);
while (!test_bit(FW_STATUS_DONE, &buf->status)) {
if (is_fw_load_aborted(buf)) {
- ret = -ENOENT;
+ pr_warn("load of %s was aborted, status 0x%lx\n",
+ buf->fw_id, buf->status);
+ ret = -ETXTBSY;
break;
}
mutex_unlock(&fw_lock);
@@ -1058,8 +1067,10 @@ static int assign_firmware_buf(struct firmware *fw, struct device *device,
mutex_lock(&fw_lock);
if (!buf->size || is_fw_load_aborted(buf)) {
+ pr_warn("can't assign fw buf for %s, size %zu, status 0x%lx\n",
+ buf->fw_id, buf->size, buf->status);
mutex_unlock(&fw_lock);
- return -ENOENT;
+ return -ETXTBSY;
}
/*
--
1.9.1
More information about the Intel-gfx-trybot
mailing list