linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path
@ 2012-10-24  2:49 Ming Lei
  2012-10-24  3:18 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Ming Lei @ 2012-10-24  2:49 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, Ming Lei, Linus Torvalds

This patch introduces one kernel parameter of 'fw_path' to support
customizing firmware image search path, so that people can use its
own firmware path if the default built-in paths can't meet their demand[1].

[1], https://lkml.org/lkml/2012/10/11/337

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
 Documentation/firmware_class/README |    1 +
 Documentation/kernel-parameters.txt |    9 +++++++++
 drivers/base/firmware_class.c       |   24 ++++++++++++++++++++++--
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/Documentation/firmware_class/README b/Documentation/firmware_class/README
index 815b711..af63ad3 100644
--- a/Documentation/firmware_class/README
+++ b/Documentation/firmware_class/README
@@ -22,6 +22,7 @@
 	- calls request_firmware(&fw_entry, $FIRMWARE, device)
 	- kernel searchs the fimware image with name $FIRMWARE directly
 	in the below search path of root filesystem:
+		User customized search path by kernel parameter of 'fw_path'
 		"/lib/firmware/updates/" UTS_RELEASE,
 		"/lib/firmware/updates",
 		"/lib/firmware/" UTS_RELEASE,
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 9776f06..d1125c5 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -52,6 +52,7 @@ parameter is applicable:
 	EVM	Extended Verification Module
 	FB	The frame buffer device is enabled.
 	FTRACE	Function tracing enabled.
+	FW      The firmware loader is enabled.
 	GCOV	GCOV profiling is enabled.
 	HW	Appropriate hardware is enabled.
 	IA-64	IA-64 architecture is enabled.
@@ -843,6 +844,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 			Format: <interval>,<probability>,<space>,<times>
 			See also Documentation/fault-injection/.
 
+	fw_path=	[FW]
+			Customized firmware image search path for kernel
+			direct loading, which has higher priority than
+			built-in default search path.
+			Format: <string>, length < 256
+				direcory path, such as /lib/firmware.
+			See Documentation/firmware_class/README.
+
 	floppy=		[HW]
 			See Documentation/blockdev/floppy.txt.
 
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 8945f4e..e7db931 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -274,6 +274,17 @@ static const char *fw_path[] = {
 	"/lib/firmware"
 };
 
+static char fw_path_para[256];
+static int __init customized_path(char *str)
+{
+	if (strlen(str) < 256)
+		strlcpy(fw_path_para, str, sizeof(fw_path_para));
+	return 1;
+}
+__setup("fw_path=", customized_path);
+module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644);
+MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path");
+
 /* Don't inline this: 'struct kstat' is biggish */
 static noinline long fw_file_size(struct file *file)
 {
@@ -313,9 +324,18 @@ static bool fw_get_filesystem_firmware(struct firmware_buf *buf)
 	bool success = false;
 	char *path = __getname();
 
-	for (i = 0; i < ARRAY_SIZE(fw_path); i++) {
+	for (i = -1; i < ARRAY_SIZE(fw_path); i++) {
 		struct file *file;
-		snprintf(path, PATH_MAX, "%s/%s", fw_path[i], buf->fw_id);
+
+		if (i < 0) {
+			if (!fw_path_para[0])	/* No customized path */
+				continue;
+			snprintf(path, PATH_MAX, "%s/%s", fw_path_para,
+				 buf->fw_id);
+		} else {
+			snprintf(path, PATH_MAX, "%s/%s", fw_path[i],
+				 buf->fw_id);
+		}
 
 		file = filp_open(path, O_RDONLY, 0);
 		if (IS_ERR(file))
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path
  2012-10-24  2:49 [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path Ming Lei
@ 2012-10-24  3:18 ` Greg Kroah-Hartman
  2012-10-24  3:31   ` Ming Lei
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2012-10-24  3:18 UTC (permalink / raw)
  To: Ming Lei; +Cc: linux-kernel, Linus Torvalds

On Wed, Oct 24, 2012 at 10:49:53AM +0800, Ming Lei wrote:
> This patch introduces one kernel parameter of 'fw_path' to support
> customizing firmware image search path, so that people can use its
> own firmware path if the default built-in paths can't meet their demand[1].
> 
> [1], https://lkml.org/lkml/2012/10/11/337
> 
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Ming Lei <ming.lei@canonical.com>

Ick, no, not another kernel boot parameter.  I would prefer the /proc/
file solution instead, just like /proc/sys/kernel/hotplug is.

But, that really wouldn't work for boot time, so, again just like
hotplug works, make it also a Kconfig option for those distros that
build their own kernels and keep their firmware in odd places, or don't
have a /lib/ directory, can override it easily.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path
  2012-10-24  3:18 ` Greg Kroah-Hartman
@ 2012-10-24  3:31   ` Ming Lei
  2012-10-24  5:42     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Ming Lei @ 2012-10-24  3:31 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, Linus Torvalds

On Wed, Oct 24, 2012 at 11:18 AM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> Ick, no, not another kernel boot parameter.  I would prefer the /proc/
> file solution instead, just like /proc/sys/kernel/hotplug is.

OK, got it, but we could use the module parameter(firmware_class.path
via kernel command) to customize the search path too, couldn't we?

>
> But, that really wouldn't work for boot time, so, again just like
> hotplug works, make it also a Kconfig option for those distros that
> build their own kernels and keep their firmware in odd places, or don't
> have a /lib/ directory, can override it easily.

Sound like still a solution, :-)

If you agree on module parameter, that might be more flexible, IMO


Thanks,
--
Ming Lei

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path
  2012-10-24  3:31   ` Ming Lei
@ 2012-10-24  5:42     ` Greg Kroah-Hartman
  2012-10-24  6:51       ` Ming Lei
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2012-10-24  5:42 UTC (permalink / raw)
  To: Ming Lei; +Cc: linux-kernel, Linus Torvalds

On Wed, Oct 24, 2012 at 11:31:16AM +0800, Ming Lei wrote:
> On Wed, Oct 24, 2012 at 11:18 AM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > Ick, no, not another kernel boot parameter.  I would prefer the /proc/
> > file solution instead, just like /proc/sys/kernel/hotplug is.
> 
> OK, got it, but we could use the module parameter(firmware_class.path
> via kernel command) to customize the search path too, couldn't we?

Yes, but why?  Let's not overdesign this, get the basics working and
then, if someone really needs it, we can add it.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path
  2012-10-24  5:42     ` Greg Kroah-Hartman
@ 2012-10-24  6:51       ` Ming Lei
  0 siblings, 0 replies; 5+ messages in thread
From: Ming Lei @ 2012-10-24  6:51 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-kernel, Linus Torvalds

On Wed, Oct 24, 2012 at 1:42 PM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:

> Yes, but why?  Let's not overdesign this, get the basics working and
> then, if someone really needs it, we can add it.

OK, I will remove the kernel parameter and related documentation,
and just keep it as module parameter, sorry about that.


Thanks,
--
Ming Lei

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-10-24  6:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-24  2:49 [PATCH 2/2] firmware loader: introduce kernel parameter to customize fw search path Ming Lei
2012-10-24  3:18 ` Greg Kroah-Hartman
2012-10-24  3:31   ` Ming Lei
2012-10-24  5:42     ` Greg Kroah-Hartman
2012-10-24  6:51       ` Ming Lei

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).