[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