Linux-RISC-V Archive on lore.kernel.org
 help / Atom feed
* [PATCH] arch: riscv: support kernel command line forcing when no DTB passed
@ 2018-12-18  3:15 Paul Walmsley
  2019-01-15 15:44 ` Christoph Hellwig
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Paul Walmsley @ 2018-12-18  3:15 UTC (permalink / raw)
  To: linux-riscv, linux-kernel; +Cc: paul, palmer, aou


CONFIG_CMDLINE_FORCE doesn't work on RISC-V when no DTB is passed into
the kernel.  This is because the code that forces the kernel command
line only runs if a valid DTB is present at boot.  During debugging,
it's useful to have the ability to force kernel command lines even
when no DTB is present.  This patch adds support for doing so.

Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: linux-riscv@lists.infradead.org
Cc: linux-kernel@vger.kernel.org (open list)
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---

Applies on v4.20-rc7.

 arch/riscv/kernel/setup.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index 2c290e6aaa6e..e6b962ff39b1 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -171,7 +171,14 @@ asmlinkage void __init setup_vm(void)
 
 void __init parse_dtb(unsigned int hartid, void *dtb)
 {
-	early_init_dt_scan(__va(dtb));
+	if (!early_init_dt_scan(__va(dtb)))
+		return;
+
+	pr_err("No DTB passed to the kernel\n");
+#ifdef CONFIG_CMDLINE_FORCE
+	strlcpy(boot_command_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
+	pr_info("Forcing kernel command line to: %s\n", boot_command_line);
+#endif
 }
 
 static void __init setup_bootmem(void)
-- 
2.20.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH] arch: riscv: support kernel command line forcing when no DTB passed
  2018-12-18  3:15 [PATCH] arch: riscv: support kernel command line forcing when no DTB passed Paul Walmsley
@ 2019-01-15 15:44 ` Christoph Hellwig
  2019-02-05 17:43 ` Andreas Schwab
  2019-02-07 14:44 ` [PATCH] arch: riscv: fix logic error in parse_dtb Andreas Schwab
  2 siblings, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2019-01-15 15:44 UTC (permalink / raw)
  To: Paul Walmsley; +Cc: linux-riscv, paul, palmer, linux-kernel, aou

On Mon, Dec 17, 2018 at 07:15:12PM -0800, Paul Walmsley wrote:
> 
> CONFIG_CMDLINE_FORCE doesn't work on RISC-V when no DTB is passed into
> the kernel.  This is because the code that forces the kernel command
> line only runs if a valid DTB is present at boot.  During debugging,
> it's useful to have the ability to force kernel command lines even
> when no DTB is present.  This patch adds support for doing so.

This looks fine to me:

Reviewed-by: Christoph Hellwig <hch@lst.de>

I just wish all this command line magic could be moved to common
code somewhere instead of being reinvented badly in every port..

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH] arch: riscv: support kernel command line forcing when no DTB passed
  2018-12-18  3:15 [PATCH] arch: riscv: support kernel command line forcing when no DTB passed Paul Walmsley
  2019-01-15 15:44 ` Christoph Hellwig
@ 2019-02-05 17:43 ` Andreas Schwab
  2019-02-19 21:19   ` Paul Walmsley
  2019-02-07 14:44 ` [PATCH] arch: riscv: fix logic error in parse_dtb Andreas Schwab
  2 siblings, 1 reply; 7+ messages in thread
From: Andreas Schwab @ 2019-02-05 17:43 UTC (permalink / raw)
  To: Paul Walmsley; +Cc: linux-riscv, paul, palmer, linux-kernel, aou

On Dez 17 2018, Paul Walmsley <paul.walmsley@sifive.com> wrote:

> diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> index 2c290e6aaa6e..e6b962ff39b1 100644
> --- a/arch/riscv/kernel/setup.c
> +++ b/arch/riscv/kernel/setup.c
> @@ -171,7 +171,14 @@ asmlinkage void __init setup_vm(void)
>  
>  void __init parse_dtb(unsigned int hartid, void *dtb)
>  {
> -	early_init_dt_scan(__va(dtb));
> +	if (!early_init_dt_scan(__va(dtb)))
> +		return;
> +
> +	pr_err("No DTB passed to the kernel\n");

Isn't that backwards?  early_init_dt_scan returns true if it found a
DTB.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* [PATCH] arch: riscv: fix logic error in parse_dtb
  2018-12-18  3:15 [PATCH] arch: riscv: support kernel command line forcing when no DTB passed Paul Walmsley
  2019-01-15 15:44 ` Christoph Hellwig
  2019-02-05 17:43 ` Andreas Schwab
@ 2019-02-07 14:44 ` Andreas Schwab
  2019-02-07 22:47   ` Atish Patra
  2019-02-19 21:20   ` Paul Walmsley
  2 siblings, 2 replies; 7+ messages in thread
From: Andreas Schwab @ 2019-02-07 14:44 UTC (permalink / raw)
  To: Paul Walmsley; +Cc: linux-riscv, paul, palmer, linux-kernel, aou

The function early_init_dt_scan returns true if a DTB was detected.

Fixes: 8fd6e05c7463 ("arch: riscv: support kernel command line forcing when no DTB passed")
Signed-off-by: Andreas Schwab <schwab@suse.de>
---
 arch/riscv/kernel/setup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index 45e9a2f053dc..84f19ca6d88b 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -140,7 +140,7 @@ asmlinkage void __init setup_vm(void)
 
 void __init parse_dtb(unsigned int hartid, void *dtb)
 {
-	if (!early_init_dt_scan(__va(dtb)))
+	if (early_init_dt_scan(__va(dtb)))
 		return;
 
 	pr_err("No DTB passed to the kernel\n");
-- 
2.20.1

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH] arch: riscv: fix logic error in parse_dtb
  2019-02-07 14:44 ` [PATCH] arch: riscv: fix logic error in parse_dtb Andreas Schwab
@ 2019-02-07 22:47   ` Atish Patra
  2019-02-19 21:20   ` Paul Walmsley
  1 sibling, 0 replies; 7+ messages in thread
From: Atish Patra @ 2019-02-07 22:47 UTC (permalink / raw)
  To: Andreas Schwab, Paul Walmsley
  Cc: linux-riscv, palmer, paul, aou, linux-kernel

On 2/7/19 6:44 AM, Andreas Schwab wrote:
> The function early_init_dt_scan returns true if a DTB was detected.
> 
> Fixes: 8fd6e05c7463 ("arch: riscv: support kernel command line forcing when no DTB passed")
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
>   arch/riscv/kernel/setup.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> index 45e9a2f053dc..84f19ca6d88b 100644
> --- a/arch/riscv/kernel/setup.c
> +++ b/arch/riscv/kernel/setup.c
> @@ -140,7 +140,7 @@ asmlinkage void __init setup_vm(void)
>   
>   void __init parse_dtb(unsigned int hartid, void *dtb)
>   {
> -	if (!early_init_dt_scan(__va(dtb)))
> +	if (early_init_dt_scan(__va(dtb)))
>   		return;
>   
>   	pr_err("No DTB passed to the kernel\n");
> 

Good catch. I was surprised to see "No DTB passed.." message with rc5.

Reviewed-by: Atish Patra <atish.patra@wdc.com>

Regards,
Atish

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH] arch: riscv: support kernel command line forcing when no DTB passed
  2019-02-05 17:43 ` Andreas Schwab
@ 2019-02-19 21:19   ` Paul Walmsley
  0 siblings, 0 replies; 7+ messages in thread
From: Paul Walmsley @ 2019-02-19 21:19 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: paul, aou, palmer, linux-kernel, Paul Walmsley, linux-riscv



On Tue, 5 Feb 2019, Andreas Schwab wrote:

> On Dez 17 2018, Paul Walmsley <paul.walmsley@sifive.com> wrote:
> 
> > diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> > index 2c290e6aaa6e..e6b962ff39b1 100644
> > --- a/arch/riscv/kernel/setup.c
> > +++ b/arch/riscv/kernel/setup.c
> > @@ -171,7 +171,14 @@ asmlinkage void __init setup_vm(void)
> >  
> >  void __init parse_dtb(unsigned int hartid, void *dtb)
> >  {
> > -	early_init_dt_scan(__va(dtb));
> > +	if (!early_init_dt_scan(__va(dtb)))
> > +		return;
> > +
> > +	pr_err("No DTB passed to the kernel\n");
> 
> Isn't that backwards?  early_init_dt_scan returns true if it found a
> DTB.

Yes, it's backwards.  Thanks for the catch.  Looks like I sent an older 
version of the patch. 

- Paul

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH] arch: riscv: fix logic error in parse_dtb
  2019-02-07 14:44 ` [PATCH] arch: riscv: fix logic error in parse_dtb Andreas Schwab
  2019-02-07 22:47   ` Atish Patra
@ 2019-02-19 21:20   ` Paul Walmsley
  1 sibling, 0 replies; 7+ messages in thread
From: Paul Walmsley @ 2019-02-19 21:20 UTC (permalink / raw)
  To: Andreas Schwab
  Cc: paul, aou, palmer, linux-kernel, Paul Walmsley, linux-riscv



On Thu, 7 Feb 2019, Andreas Schwab wrote:

> The function early_init_dt_scan returns true if a DTB was detected.
> 
> Fixes: 8fd6e05c7463 ("arch: riscv: support kernel command line forcing when no DTB passed")
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
>  arch/riscv/kernel/setup.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> index 45e9a2f053dc..84f19ca6d88b 100644
> --- a/arch/riscv/kernel/setup.c
> +++ b/arch/riscv/kernel/setup.c
> @@ -140,7 +140,7 @@ asmlinkage void __init setup_vm(void)
>  
>  void __init parse_dtb(unsigned int hartid, void *dtb)
>  {
> -	if (!early_init_dt_scan(__va(dtb)))
> +	if (early_init_dt_scan(__va(dtb)))
>  		return;
>  
>  	pr_err("No DTB passed to the kernel\n");
> -- 
> 2.20.1

Reviewed-by: Paul Walmsley <paul.walmsley@sifive.com>
Tested-by: Paul Walmsley <paul.walmsley@sifive.com> # FU540 HiFive-U BBL

- Paul

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

end of thread, back to index

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-18  3:15 [PATCH] arch: riscv: support kernel command line forcing when no DTB passed Paul Walmsley
2019-01-15 15:44 ` Christoph Hellwig
2019-02-05 17:43 ` Andreas Schwab
2019-02-19 21:19   ` Paul Walmsley
2019-02-07 14:44 ` [PATCH] arch: riscv: fix logic error in parse_dtb Andreas Schwab
2019-02-07 22:47   ` Atish Patra
2019-02-19 21:20   ` Paul Walmsley

Linux-RISC-V Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-riscv/0 linux-riscv/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-riscv linux-riscv/ https://lore.kernel.org/linux-riscv \
		linux-riscv@lists.infradead.org infradead-linux-riscv@archiver.kernel.org
	public-inbox-index linux-riscv


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-riscv


AGPL code for this site: git clone https://public-inbox.org/ public-inbox