| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Mark Salyzyn <salyzyn@android.com> |
| Date: Wed, 13 Nov 2019 12:22:46 -0800 |
| Subject: FROMGIT: firmware_class: make firmware caching configurable |
| |
| Because firmware caching generates uevent messages that are sent over |
| a netlink socket, it can prevent suspend on many platforms. It's |
| also not always useful, so make it a configurable option. |
| |
| Signed-off-by: Mark Salyzyn <salyzyn@android.com> |
| Cc: Tim Murray <timmurray@google.com> |
| Cc: Venkata Narendra Kumar Gutta <vnkgutta@codeaurora.org> |
| Cc: Luis Chamberlain <mcgrof@kernel.org> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Rafael J. Wysocki <rafael@kernel.org> |
| Cc: linux-kernel@vger.kernel.org |
| Cc: kernel-team@android.com |
| Acked-by: Luis Chamberlain <mcgrof@kernel.org> |
| Link: https://lore.kernel.org/r/20191113225429.118495-1-salyzyn@android.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| (cherry picked from commit c74f8056621738f5be9f5d3d7e0caa927b21aef6 git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git driver-core-testing) |
| Signed-off-by: Mark Salyzyn <salyzyn@google.com> |
| Bug: 32180327 |
| Bug: 137566496 |
| Change-Id: I1250512b27edb56caa78d536e5ccf1fb669476ad |
| (cherry picked from commit cd403ef6a75c38bc126b1b7f2362ab6426062df0) |
| --- |
| drivers/base/firmware_loader/Kconfig | 12 ++++++++++++ |
| drivers/base/firmware_loader/main.c | 6 +++--- |
| 2 files changed, 15 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig |
| index 3f9e274e2ed3..33e6552ddbb6 100644 |
| --- a/drivers/base/firmware_loader/Kconfig |
| +++ b/drivers/base/firmware_loader/Kconfig |
| @@ -169,5 +169,17 @@ config FW_LOADER_COMPRESS |
| be compressed with either none or crc32 integrity check type (pass |
| "-C crc32" option to xz command). |
| |
| +config FW_CACHE |
| + bool "Enable firmware caching during suspend" |
| + depends on PM_SLEEP |
| + default y if PM_SLEEP |
| + help |
| + Because firmware caching generates uevent messages that are sent |
| + over a netlink socket, it can prevent suspend on many platforms. |
| + It is also not always useful, so on such platforms we have the |
| + option. |
| + |
| + If unsure, say Y. |
| + |
| endif # FW_LOADER |
| endmenu |
| diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c |
| index bf44c79beae9..1c9f03514a47 100644 |
| --- a/drivers/base/firmware_loader/main.c |
| +++ b/drivers/base/firmware_loader/main.c |
| @@ -51,7 +51,7 @@ struct firmware_cache { |
| struct list_head head; |
| int state; |
| |
| -#ifdef CONFIG_PM_SLEEP |
| +#ifdef CONFIG_FW_CACHE |
| /* |
| * Names of firmware images which have been cached successfully |
| * will be added into the below list so that device uncache |
| @@ -556,7 +556,7 @@ static void fw_set_page_data(struct fw_priv *fw_priv, struct firmware *fw) |
| (unsigned int)fw_priv->size); |
| } |
| |
| -#ifdef CONFIG_PM_SLEEP |
| +#ifdef CONFIG_FW_CACHE |
| static void fw_name_devm_release(struct device *dev, void *res) |
| { |
| struct fw_name_devm *fwn = res; |
| @@ -1046,7 +1046,7 @@ request_firmware_nowait( |
| } |
| EXPORT_SYMBOL(request_firmware_nowait); |
| |
| -#ifdef CONFIG_PM_SLEEP |
| +#ifdef CONFIG_FW_CACHE |
| static ASYNC_DOMAIN_EXCLUSIVE(fw_cache_domain); |
| |
| /** |