Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1717137

[PATCH] firmware: add firmware to new device's devres list for second time cache

From Kai-Heng Feng <kai.heng.feng@canonical.com>
Newsgroups linux.kernel
Subject [PATCH] firmware: add firmware to new device's devres list for second time cache
Date 2017-08-22 10:00 +0200
Message-ID <uhcgr-7KH-49@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Currently, firmware will only be chached if assign_firmware_buf() gets
called.

When a device loses its power or a USB device gets plugged to another
port under suspend, request_firmware() can still find cached firmware,
but firmware name no longer associates with the new device's devres.
So next time the system suspend, those firmware won't be cached.

Hence, we should add the firmware name to the devres when the firmware
is found in cache, to make the firmware cacheable next time.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/base/firmware_class.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index bfbe1e154128..a99de34e3fdc 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -1177,6 +1177,10 @@ _request_firmware_prepare(struct firmware **firmware_p, const char *name,
 
 	ret = fw_lookup_and_allocate_buf(name, &fw_cache, &buf, dbuf, size);
 
+	/* device might be a new one, add it to devres list */
+	if (ret == 0 || ret == 1)
+		fw_add_devm_name(device, name);
+
 	/*
 	 * bind with 'buf' now to avoid warning in failure path
 	 * of requesting firmware.
-- 
2.14.1

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH] firmware: add firmware to new device's devres list for second time cache Kai-Heng Feng <kai.heng.feng@canonical.com> - 2017-08-22 10:00 +0200

csiph-web