Re: WARNING: CPU: 3 PID: 2952 at drivers/base/firmware_class.c:1225 _request_firmware+0x329/0x890
From: Marcel Holtmann <marcel@holtmann.org>
Date: 2017-08-28 14:17:37
Hi Kai-Heng,
quoted hunk ↗ jump to hunk
quoted
Found this thread google searching. 4.13.0-0.rc4.git1.1.fc27.x86_64 Problem sometimes happens with this kernel. This translates to git 623ce3456671. 4.13.0-0.rc3.git0.1.fc27.x86_64 But not this kernel, which translates to the actual rc3 release (clean). It seems to be a regression between those two. The problem only happens when waking from suspend to RAM, but it doesn't always happen.My theory is that if you request firmware when firmware_class is in cache mode consecutively, and the device is changed, you will hit this issue. Can you give this patch a try?diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index bfbe1e154128..910dce498f53 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c@@ -1177,6 +1177,9 @@ _request_firmware_prepare(struct firmware**firmware_p, const char *name, ret = fw_lookup_and_allocate_buf(name, &fw_cache, &buf, dbuf, size); + if (!firmware_enabled() && device && (ret == 0 || ret == 1)) + fw_add_devm_name(device, buf->fw_id); + /* * bind with 'buf' now to avoid warning in failure path * of requesting firmware.
if a fix in firmware_class can handle this, then I assume we also do not need all the per driver / hardware workarounds for firmware caching? Or are these other patches also needed? Regards Marcel