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
WARNING: multiple messages have this Message-ID (diff)
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. 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:13 UTC|newest] Thread overview: 44+ 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 ` 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 ` 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 ` 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 ` 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 ` 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 18:12 ` Luis R. Rodriguez 2018-05-08 22:42 ` Kees Cook 2018-05-08 22:42 ` Kees Cook 2018-05-09 20:55 ` Luis R. Rodriguez 2018-05-09 20:55 ` Luis R. Rodriguez 2018-05-09 23:01 ` Kees Cook 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 ` 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 2018-05-08 18:12 ` Luis R. Rodriguez [this message] 2018-05-08 18:12 ` [PATCH v6 08/13] firmware: add firmware_request_nowarn() - load firmware without warnings Luis R. Rodriguez 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 ` 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 ` 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 ` Luis R. Rodriguez 2018-05-08 18:12 ` [PATCH v6 12/13] Documentation: remove stale firmware API reference Luis R. Rodriguez 2018-05-08 18:12 ` Luis R. Rodriguez 2018-05-09 15:12 ` Mauro Carvalho Chehab 2018-05-09 15:12 ` Mauro Carvalho Chehab 2018-05-09 19:43 ` Luis R. Rodriguez 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:12 ` Luis R. Rodriguez 2018-05-08 18:53 ` Andres Rodriguez 2018-05-08 18:53 ` Andres Rodriguez 2018-05-09 13:21 ` Mauro Carvalho Chehab 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 2018-05-08 22:45 ` 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 \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.