LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: gregkh@linuxfoundation.org
Cc: akpm@linux-foundation.org, keescook@chromium.org,
josh@joshtriplett.org, maco@android.com, andy.gross@linaro.org,
david.brown@linaro.org, bjorn.andersson@linaro.org, teg@jklm.no,
wagi@monom.org, hdegoede@redhat.com, andresx7@gmail.com,
zohar@linux.vnet.ibm.com, kubakici@wp.pl, shuah@kernel.org,
mfuzzey@parkeon.com, dhowells@redhat.com, pali.rohar@gmail.com,
tiwai@suse.de, kvalo@codeaurora.org,
arend.vanspriel@broadcom.com, zajec5@gmail.com, nbroeking@me.com,
markivx@codeaurora.org, broonie@kernel.org,
dmitry.torokhov@gmail.com, dwmw2@infradead.org,
torvalds@linux-foundation.org, Abhay_Salunke@dell.com,
jewalt@lgsinnovations.com, oneukum@suse.com,
cantabile.desu@gmail.com, ast@fb.com, hare@suse.com,
jejb@linux.vnet.ibm.com, martin.petersen@oracle.com,
khc@pm.waw.pl, davem@davemloft.net, arve@android.com,
tkjos@android.com, corbet@lwn.net, mchehab+samsung@kernel.org,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-scsi@vger.kernel.org, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org, "Luis R . Rodriguez" <mcgrof@kernel.org>
Subject: [PATCH v6 08/13] firmware: add firmware_request_nowarn() - load firmware without warnings
Date: Tue, 8 May 2018 11:12:42 -0700 [thread overview]
Message-ID: <20180508181247.19431-9-mcgrof@kernel.org> (raw)
In-Reply-To: <20180508181247.19431-1-mcgrof@kernel.org>
From: Andres Rodriguez <andresx7@gmail.com>
Currently the firmware loader only exposes one silent path for querying
optional firmware, and that is firmware_request_direct(). This function
also disables the sysfs fallback mechanism, which might not always be the
desired behaviour [0].
This patch introduces a variations of request_firmware() that enable the
caller to disable the undesired warning messages but enables the sysfs
fallback mechanism. This is equivalent to adding FW_OPT_NO_WARN to the
old behaviour.
[0]: https://git.kernel.org/linus/c0cc00f250e1
Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
Acked-by: Luis R. Rodriguez <mcgrof@kernel.org>
[mcgrof: used the old API calls as the full rename is not done yet, and
add the caller for when FW_LOADER is disabled, enhance documentation ]
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
.../driver-api/firmware/request_firmware.rst | 5 ++++
drivers/base/firmware_loader/main.c | 27 +++++++++++++++++++
include/linux/firmware.h | 10 +++++++
3 files changed, 42 insertions(+)
diff --git a/Documentation/driver-api/firmware/request_firmware.rst b/Documentation/driver-api/firmware/request_firmware.rst
index d5ec95a7195b..f62bdcbfed5b 100644
--- a/Documentation/driver-api/firmware/request_firmware.rst
+++ b/Documentation/driver-api/firmware/request_firmware.rst
@@ -20,6 +20,11 @@ request_firmware
.. kernel-doc:: drivers/base/firmware_loader/main.c
:functions: request_firmware
+firmware_request_nowarn
+-----------------------
+.. kernel-doc:: drivers/base/firmware_loader/main.c
+ :functions: firmware_request_nowarn
+
request_firmware_direct
-----------------------
.. kernel-doc:: drivers/base/firmware_loader/main.c
diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
index abdc4e4d55f1..2be79ee773c0 100644
--- a/drivers/base/firmware_loader/main.c
+++ b/drivers/base/firmware_loader/main.c
@@ -631,6 +631,33 @@ request_firmware(const struct firmware **firmware_p, const char *name,
}
EXPORT_SYMBOL(request_firmware);
+/**
+ * firmware_request_nowarn() - request for an optional fw module
+ * @firmware: pointer to firmware image
+ * @name: name of firmware file
+ * @device: device for which firmware is being loaded
+ *
+ * This function is similar in behaviour to request_firmware(), except
+ * it doesn't produce warning messages when the file is not found.
+ * The sysfs fallback mechanism is enabled if direct filesystem lookup fails,
+ * however, however failures to find the firmware file with it are still
+ * supressed. It is therefore up to the driver to check for the return value
+ * of this call and to decide when to inform the users of errors.
+ **/
+int firmware_request_nowarn(const struct firmware **firmware, const char *name,
+ struct device *device)
+{
+ int ret;
+
+ /* Need to pin this module until return */
+ __module_get(THIS_MODULE);
+ ret = _request_firmware(firmware, name, device, NULL, 0,
+ FW_OPT_UEVENT | FW_OPT_NO_WARN);
+ module_put(THIS_MODULE);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(firmware_request_nowarn);
+
/**
* request_firmware_direct() - load firmware directly without usermode helper
* @firmware_p: pointer to firmware image
diff --git a/include/linux/firmware.h b/include/linux/firmware.h
index 41050417cafb..2dd566c91d44 100644
--- a/include/linux/firmware.h
+++ b/include/linux/firmware.h
@@ -42,6 +42,8 @@ struct builtin_fw {
#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
int request_firmware(const struct firmware **fw, const char *name,
struct device *device);
+int firmware_request_nowarn(const struct firmware **fw, const char *name,
+ struct device *device);
int request_firmware_nowait(
struct module *module, bool uevent,
const char *name, struct device *device, gfp_t gfp, void *context,
@@ -59,6 +61,14 @@ static inline int request_firmware(const struct firmware **fw,
{
return -EINVAL;
}
+
+static inline int firmware_request_nowarn(const struct firmware **fw,
+ const char *name,
+ struct device *device)
+{
+ return -EINVAL;
+}
+
static inline int request_firmware_nowait(
struct module *module, bool uevent,
const char *name, struct device *device, gfp_t gfp, void *context,
--
2.17.0
next prev parent reply other threads:[~2018-05-08 18:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-08 18:12 [PATCH v6 00/13] firmware_loader changes for v4.18 Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 01/13] firmware: wrap FW_OPT_* into an enum Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 02/13] firmware: use () to terminate kernel-doc function names Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 03/13] firmware: rename fw_sysfs_fallback to firmware_fallback_sysfs() Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 04/13] firmware_loader: document firmware_sysfs_fallback() Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 05/13] firmware_loader: enhance Kconfig documentation over FW_LOADER Luis R. Rodriguez
2018-05-08 22:42 ` Kees Cook
2018-05-09 20:55 ` Luis R. Rodriguez
2018-05-09 23:01 ` Kees Cook
2018-05-08 18:12 ` [PATCH v6 06/13] firmware_loader: move kconfig FW_LOADER entries to its own file Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 07/13] firmware_loader: make firmware_fallback_sysfs() print more useful Luis R. Rodriguez
2018-05-08 18:12 ` Luis R. Rodriguez [this message]
2018-05-08 18:12 ` [PATCH v6 09/13] ath10k: use firmware_request_nowarn() to load firmware Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 10/13] ath10k: re-enable the firmware fallback mechanism for testmode Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 11/13] Documentation: fix few typos and clarifications for the firmware loader Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 12/13] Documentation: remove stale firmware API reference Luis R. Rodriguez
2018-05-09 15:12 ` Mauro Carvalho Chehab
2018-05-09 19:43 ` Luis R. Rodriguez
2018-05-08 18:12 ` [PATCH v6 13/13] Documentation: clarify firmware_class provenance and why we can't rename the module Luis R. Rodriguez
2018-05-08 18:53 ` Andres Rodriguez
2018-05-09 13:21 ` Mauro Carvalho Chehab
2018-05-08 22:45 ` [PATCH v6 00/13] firmware_loader changes for v4.18 Kees Cook
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180508181247.19431-9-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=Abhay_Salunke@dell.com \
--cc=akpm@linux-foundation.org \
--cc=andresx7@gmail.com \
--cc=andy.gross@linaro.org \
--cc=arend.vanspriel@broadcom.com \
--cc=arve@android.com \
--cc=ast@fb.com \
--cc=bjorn.andersson@linaro.org \
--cc=broonie@kernel.org \
--cc=cantabile.desu@gmail.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=david.brown@linaro.org \
--cc=dhowells@redhat.com \
--cc=dmitry.torokhov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=gregkh@linuxfoundation.org \
--cc=hare@suse.com \
--cc=hdegoede@redhat.com \
--cc=jejb@linux.vnet.ibm.com \
--cc=jewalt@lgsinnovations.com \
--cc=josh@joshtriplett.org \
--cc=keescook@chromium.org \
--cc=khc@pm.waw.pl \
--cc=kubakici@wp.pl \
--cc=kvalo@codeaurora.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=maco@android.com \
--cc=markivx@codeaurora.org \
--cc=martin.petersen@oracle.com \
--cc=mchehab+samsung@kernel.org \
--cc=mfuzzey@parkeon.com \
--cc=nbroeking@me.com \
--cc=netdev@vger.kernel.org \
--cc=oneukum@suse.com \
--cc=pali.rohar@gmail.com \
--cc=shuah@kernel.org \
--cc=teg@jklm.no \
--cc=tiwai@suse.de \
--cc=tkjos@android.com \
--cc=torvalds@linux-foundation.org \
--cc=wagi@monom.org \
--cc=zajec5@gmail.com \
--cc=zohar@linux.vnet.ibm.com \
--subject='Re: [PATCH v6 08/13] firmware: add firmware_request_nowarn() - load firmware without warnings' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).