[lkml]   [2017]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] firmware: add firmware to new device's devres list for second time cache
Currently, firmware will only be chached if assign_firmware_buf() gets

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 <>
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.
 \ /
  Last update: 2017-08-22 09:53    [W:0.078 / U:11.944 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site