u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] sandbox: provide /chosen/boot-hartid property
@ 2021-08-28  9:42 Heinrich Schuchardt
  2021-08-28  9:42 ` [PATCH 1/2] sandbox: correct cpu nodes Heinrich Schuchardt
  2021-08-28  9:42 ` [PATCH 2/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
  0 siblings, 2 replies; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-08-28  9:42 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, Sean Anderson, u-boot, Heinrich Schuchardt

For booting via UEFI on RISC-V the devicetree must provide the
/chosen/boot-hartid property.

Fix /cpus node of the sandbox test devicetree to provide a matching cpu.

Heinrich Schuchardt (2):
  sandbox: correct cpu nodes
  sandbox: provide /chosen/boot-hartid property

 arch/sandbox/dts/test.dts    | 14 +++++++++++---
 arch/sandbox/lib/Makefile    |  2 +-
 arch/sandbox/lib/fdt_fixup.c | 25 +++++++++++++++++++++++++
 drivers/cpu/cpu_sandbox.c    |  2 +-
 test/dm/cpu.c                |  2 +-
 test/dm/timer.c              |  6 +++---
 6 files changed, 42 insertions(+), 9 deletions(-)
 create mode 100644 arch/sandbox/lib/fdt_fixup.c

--
2.30.2


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

* [PATCH 1/2] sandbox: correct cpu nodes
  2021-08-28  9:42 [PATCH 0/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
@ 2021-08-28  9:42 ` Heinrich Schuchardt
  2021-09-02 16:41   ` Simon Glass
  2021-09-26 18:40   ` Simon Glass
  2021-08-28  9:42 ` [PATCH 2/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
  1 sibling, 2 replies; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-08-28  9:42 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, Sean Anderson, u-boot, Heinrich Schuchardt

The cpu nodes in arch/sandbox/dts/test.dts should conform to the devicetree
specification:

* property device_type must be set to "cpu"
* the reg property must be provided
* the cpu nodes must have an address

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 arch/sandbox/dts/test.dts | 14 +++++++++++---
 drivers/cpu/cpu_sandbox.c |  2 +-
 test/dm/cpu.c             |  2 +-
 test/dm/timer.c           |  6 +++---
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 962bdbe556..9046fcf558 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -805,19 +805,27 @@
 	};

 	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
 		timebase-frequency = <2000000>;
-		cpu-test1 {
+		cpu1: cpu@1 {
+			device_type = "cpu";
+			reg = <0x1>;
 			timebase-frequency = <3000000>;
 			compatible = "sandbox,cpu_sandbox";
 			u-boot,dm-pre-reloc;
 		};

-		cpu-test2 {
+		cpu2: cpu@2 {
+			device_type = "cpu";
+			reg = <0x2>;
 			compatible = "sandbox,cpu_sandbox";
 			u-boot,dm-pre-reloc;
 		};

-		cpu-test3 {
+		cpu3: cpu@3 {
+			device_type = "cpu";
+			reg = <0x3>;
 			compatible = "sandbox,cpu_sandbox";
 			u-boot,dm-pre-reloc;
 		};
diff --git a/drivers/cpu/cpu_sandbox.c b/drivers/cpu/cpu_sandbox.c
index fe6772ba5a..2e871fe313 100644
--- a/drivers/cpu/cpu_sandbox.c
+++ b/drivers/cpu/cpu_sandbox.c
@@ -38,7 +38,7 @@ static int cpu_sandbox_get_vendor(const struct udevice *dev, char *buf,
 	return 0;
 }

-static const char *cpu_current = "cpu-test1";
+static const char *cpu_current = "cpu@1";

 void cpu_sandbox_set_current(const char *name)
 {
diff --git a/test/dm/cpu.c b/test/dm/cpu.c
index ed12cafee2..d7e596ee39 100644
--- a/test/dm/cpu.c
+++ b/test/dm/cpu.c
@@ -27,7 +27,7 @@ static int dm_test_cpu(struct unit_test_state *uts)
 	     uclass_find_next_device(&dev))
 		ut_assert(dev_get_flags(dev) & DM_FLAG_ACTIVATED);

-	ut_assertok(uclass_get_device_by_name(UCLASS_CPU, "cpu-test1", &dev));
+	ut_assertok(uclass_get_device_by_name(UCLASS_CPU, "cpu@1", &dev));
 	ut_asserteq_ptr(cpu_get_current_dev(), dev);
 	ut_asserteq(cpu_is_current(dev), 1);

diff --git a/test/dm/timer.c b/test/dm/timer.c
index 70043b9eee..9f94d47692 100644
--- a/test/dm/timer.c
+++ b/test/dm/timer.c
@@ -33,16 +33,16 @@ static int dm_test_timer_timebase_fallback(struct unit_test_state *uts)
 {
 	struct udevice *dev;

-	cpu_sandbox_set_current("cpu-test1");
+	cpu_sandbox_set_current("cpu@1");
 	ut_assertok(uclass_get_device_by_name(UCLASS_TIMER, "timer@1", &dev));
 	ut_asserteq(3000000, timer_get_rate(dev));
 	ut_assertok(device_remove(dev, DM_REMOVE_NORMAL));

-	cpu_sandbox_set_current("cpu-test2");
+	cpu_sandbox_set_current("cpu@2");
 	ut_assertok(uclass_get_device_by_name(UCLASS_TIMER, "timer@1", &dev));
 	ut_asserteq(2000000, timer_get_rate(dev));

-	cpu_sandbox_set_current("cpu-test1");
+	cpu_sandbox_set_current("cpu@1");

 	return 0;
 }
--
2.30.2


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

* [PATCH 2/2] sandbox: provide /chosen/boot-hartid property
  2021-08-28  9:42 [PATCH 0/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
  2021-08-28  9:42 ` [PATCH 1/2] sandbox: correct cpu nodes Heinrich Schuchardt
@ 2021-08-28  9:42 ` Heinrich Schuchardt
  2021-10-19 22:54   ` Simon Glass
  1 sibling, 1 reply; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-08-28  9:42 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, Sean Anderson, u-boot, Heinrich Schuchardt

On RISC-V the sandbox must provide the /chosen/boot-hartid in the
devicetree.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 arch/sandbox/lib/Makefile    |  2 +-
 arch/sandbox/lib/fdt_fixup.c | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 arch/sandbox/lib/fdt_fixup.c

diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
index b4ff717e78..a2bc5a7ee6 100644
--- a/arch/sandbox/lib/Makefile
+++ b/arch/sandbox/lib/Makefile
@@ -5,7 +5,7 @@
 # (C) Copyright 2002-2006
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.

-obj-y	+= interrupts.o sections.o
+obj-y	+= fdt_fixup.o interrupts.o sections.o
 obj-$(CONFIG_PCI)	+= pci_io.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-$(CONFIG_CMD_BOOTZ) += bootm.o
diff --git a/arch/sandbox/lib/fdt_fixup.c b/arch/sandbox/lib/fdt_fixup.c
new file mode 100644
index 0000000000..a646f2059c
--- /dev/null
+++ b/arch/sandbox/lib/fdt_fixup.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#define LOG_CATEGORY LOGC_ARCH
+
+#include <common.h>
+#include <fdt_support.h>
+#include <log.h>
+
+#if defined(__riscv)
+int arch_fixup_fdt(void *blob)
+{
+	int ret;
+
+	ret = fdt_find_or_add_subnode(blob, 0, "chosen");;
+	if (ret < 0)
+		goto err;
+	ret = fdt_setprop_u32(blob, ret, "boot-hartid", 1);
+	if (ret < 0)
+		goto err;
+	return 0;
+err:
+	log_err("Setting /chosen/boot-hartid failed: %s\n", fdt_strerror(ret));
+	return ret;
+}
+#endif
--
2.30.2


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

* Re: [PATCH 1/2] sandbox: correct cpu nodes
  2021-08-28  9:42 ` [PATCH 1/2] sandbox: correct cpu nodes Heinrich Schuchardt
@ 2021-09-02 16:41   ` Simon Glass
  2021-09-26 18:40   ` Simon Glass
  1 sibling, 0 replies; 8+ messages in thread
From: Simon Glass @ 2021-09-02 16:41 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Bin Meng, Sean Anderson, U-Boot Mailing List

On Sat, 28 Aug 2021 at 03:42, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> The cpu nodes in arch/sandbox/dts/test.dts should conform to the devicetree
> specification:
>
> * property device_type must be set to "cpu"
> * the reg property must be provided
> * the cpu nodes must have an address
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  arch/sandbox/dts/test.dts | 14 +++++++++++---
>  drivers/cpu/cpu_sandbox.c |  2 +-
>  test/dm/cpu.c             |  2 +-
>  test/dm/timer.c           |  6 +++---
>  4 files changed, 16 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* Re: [PATCH 1/2] sandbox: correct cpu nodes
  2021-08-28  9:42 ` [PATCH 1/2] sandbox: correct cpu nodes Heinrich Schuchardt
  2021-09-02 16:41   ` Simon Glass
@ 2021-09-26 18:40   ` Simon Glass
  1 sibling, 0 replies; 8+ messages in thread
From: Simon Glass @ 2021-09-26 18:40 UTC (permalink / raw)
  To: Simon Glass
  Cc: Bin Meng, Sean Anderson, U-Boot Mailing List, Heinrich Schuchardt

On Sat, 28 Aug 2021 at 03:42, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> The cpu nodes in arch/sandbox/dts/test.dts should conform to the devicetree
> specification:
>
> * property device_type must be set to "cpu"
> * the reg property must be provided
> * the cpu nodes must have an address
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  arch/sandbox/dts/test.dts | 14 +++++++++++---
>  drivers/cpu/cpu_sandbox.c |  2 +-
>  test/dm/cpu.c             |  2 +-
>  test/dm/timer.c           |  6 +++---
>  4 files changed, 16 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm/next, thanks!

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

* Re: [PATCH 2/2] sandbox: provide /chosen/boot-hartid property
  2021-08-28  9:42 ` [PATCH 2/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
@ 2021-10-19 22:54   ` Simon Glass
  2021-10-20  5:06     ` Heinrich Schuchardt
  2021-10-21 18:49     ` Simon Glass
  0 siblings, 2 replies; 8+ messages in thread
From: Simon Glass @ 2021-10-19 22:54 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Bin Meng, Sean Anderson, U-Boot Mailing List

Hi Heinrich,

On Sat, 28 Aug 2021 at 03:42, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> On RISC-V the sandbox must provide the /chosen/boot-hartid in the
> devicetree.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  arch/sandbox/lib/Makefile    |  2 +-
>  arch/sandbox/lib/fdt_fixup.c | 25 +++++++++++++++++++++++++
>  2 files changed, 26 insertions(+), 1 deletion(-)
>  create mode 100644 arch/sandbox/lib/fdt_fixup.c

Can you add a bit more detail here? This is for the sandbox build, so
we don't actually get to boot the kernel. So who is actually using
this data?

Regards,
Simon


>
> diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
> index b4ff717e78..a2bc5a7ee6 100644
> --- a/arch/sandbox/lib/Makefile
> +++ b/arch/sandbox/lib/Makefile
> @@ -5,7 +5,7 @@
>  # (C) Copyright 2002-2006
>  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>
> -obj-y  += interrupts.o sections.o
> +obj-y  += fdt_fixup.o interrupts.o sections.o
>  obj-$(CONFIG_PCI)      += pci_io.o
>  obj-$(CONFIG_CMD_BOOTM) += bootm.o
>  obj-$(CONFIG_CMD_BOOTZ) += bootm.o
> diff --git a/arch/sandbox/lib/fdt_fixup.c b/arch/sandbox/lib/fdt_fixup.c
> new file mode 100644
> index 0000000000..a646f2059c
> --- /dev/null
> +++ b/arch/sandbox/lib/fdt_fixup.c
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +
> +#define LOG_CATEGORY LOGC_ARCH
> +
> +#include <common.h>
> +#include <fdt_support.h>
> +#include <log.h>
> +
> +#if defined(__riscv)
> +int arch_fixup_fdt(void *blob)
> +{
> +       int ret;
> +
> +       ret = fdt_find_or_add_subnode(blob, 0, "chosen");;
> +       if (ret < 0)
> +               goto err;
> +       ret = fdt_setprop_u32(blob, ret, "boot-hartid", 1);
> +       if (ret < 0)
> +               goto err;
> +       return 0;
> +err:
> +       log_err("Setting /chosen/boot-hartid failed: %s\n", fdt_strerror(ret));
> +       return ret;
> +}
> +#endif
> --
> 2.30.2
>

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

* Re: [PATCH 2/2] sandbox: provide /chosen/boot-hartid property
  2021-10-19 22:54   ` Simon Glass
@ 2021-10-20  5:06     ` Heinrich Schuchardt
  2021-10-21 18:49     ` Simon Glass
  1 sibling, 0 replies; 8+ messages in thread
From: Heinrich Schuchardt @ 2021-10-20  5:06 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, Sean Anderson, U-Boot Mailing List

On 10/20/21 00:54, Simon Glass wrote:
> Hi Heinrich,
>
> On Sat, 28 Aug 2021 at 03:42, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>>
>> On RISC-V the sandbox must provide the /chosen/boot-hartid in the
>> devicetree.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
>> ---
>>   arch/sandbox/lib/Makefile    |  2 +-
>>   arch/sandbox/lib/fdt_fixup.c | 25 +++++++++++++++++++++++++
>>   2 files changed, 26 insertions(+), 1 deletion(-)
>>   create mode 100644 arch/sandbox/lib/fdt_fixup.c
>
> Can you add a bit more detail here? This is for the sandbox build, so
> we don't actually get to boot the kernel. So who is actually using
> this data?

The U-Boot sandbox can be built on RISC-V. It is very convenient to
debug the Linux EFI stub and its interaction with other UEFI software
like GRUB.

The Linux EFI stub reads the /chosen/boot-hartid property in function
get_boot_hartid_from_fdt(), drivers/firmware/efi/libstub/riscv-stub.c.
It will stop booting if /chosen/boot-hartid is not found.

Of course the kernel will fail when trying to set up virtual memory. But
that is after most of the interesting stuff in the EFI stub have
occurred. Linux can run in nommu mode. So maybe you could even run Linux
on the sandbox.

Best regards

Heinrich

>
> Regards,
> Simon
>
>
>>
>> diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
>> index b4ff717e78..a2bc5a7ee6 100644
>> --- a/arch/sandbox/lib/Makefile
>> +++ b/arch/sandbox/lib/Makefile
>> @@ -5,7 +5,7 @@
>>   # (C) Copyright 2002-2006
>>   # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>>
>> -obj-y  += interrupts.o sections.o
>> +obj-y  += fdt_fixup.o interrupts.o sections.o
>>   obj-$(CONFIG_PCI)      += pci_io.o
>>   obj-$(CONFIG_CMD_BOOTM) += bootm.o
>>   obj-$(CONFIG_CMD_BOOTZ) += bootm.o
>> diff --git a/arch/sandbox/lib/fdt_fixup.c b/arch/sandbox/lib/fdt_fixup.c
>> new file mode 100644
>> index 0000000000..a646f2059c
>> --- /dev/null
>> +++ b/arch/sandbox/lib/fdt_fixup.c
>> @@ -0,0 +1,25 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +
>> +#define LOG_CATEGORY LOGC_ARCH
>> +
>> +#include <common.h>
>> +#include <fdt_support.h>
>> +#include <log.h>
>> +
>> +#if defined(__riscv)
>> +int arch_fixup_fdt(void *blob)
>> +{
>> +       int ret;
>> +
>> +       ret = fdt_find_or_add_subnode(blob, 0, "chosen");;
>> +       if (ret < 0)
>> +               goto err;
>> +       ret = fdt_setprop_u32(blob, ret, "boot-hartid", 1);
>> +       if (ret < 0)
>> +               goto err;
>> +       return 0;
>> +err:
>> +       log_err("Setting /chosen/boot-hartid failed: %s\n", fdt_strerror(ret));
>> +       return ret;
>> +}
>> +#endif
>> --
>> 2.30.2
>>

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

* Re: [PATCH 2/2] sandbox: provide /chosen/boot-hartid property
  2021-10-19 22:54   ` Simon Glass
  2021-10-20  5:06     ` Heinrich Schuchardt
@ 2021-10-21 18:49     ` Simon Glass
  1 sibling, 0 replies; 8+ messages in thread
From: Simon Glass @ 2021-10-21 18:49 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Bin Meng, Sean Anderson, U-Boot Mailing List, Simon Glass

On 10/20/21 00:54, Simon Glass wrote:
> Hi Heinrich,
>
> On Sat, 28 Aug 2021 at 03:42, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>>
>> On RISC-V the sandbox must provide the /chosen/boot-hartid in the
>> devicetree.
>>
>> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
>> ---
>>   arch/sandbox/lib/Makefile    |  2 +-
>>   arch/sandbox/lib/fdt_fixup.c | 25 +++++++++++++++++++++++++
>>   2 files changed, 26 insertions(+), 1 deletion(-)
>>   create mode 100644 arch/sandbox/lib/fdt_fixup.c
>
> Can you add a bit more detail here? This is for the sandbox build, so
> we don't actually get to boot the kernel. So who is actually using
> this data?

The U-Boot sandbox can be built on RISC-V. It is very convenient to
debug the Linux EFI stub and its interaction with other UEFI software
like GRUB.

The Linux EFI stub reads the /chosen/boot-hartid property in function
get_boot_hartid_from_fdt(), drivers/firmware/efi/libstub/riscv-stub.c.
It will stop booting if /chosen/boot-hartid is not found.

Of course the kernel will fail when trying to set up virtual memory. But
that is after most of the interesting stuff in the EFI stub have
occurred. Linux can run in nommu mode. So maybe you could even run Linux
on the sandbox.

Best regards

Heinrich

>
> Regards,
> Simon
>
>
>>
Applied to u-boot-dm, thanks!

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

end of thread, other threads:[~2021-10-21 18:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-28  9:42 [PATCH 0/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
2021-08-28  9:42 ` [PATCH 1/2] sandbox: correct cpu nodes Heinrich Schuchardt
2021-09-02 16:41   ` Simon Glass
2021-09-26 18:40   ` Simon Glass
2021-08-28  9:42 ` [PATCH 2/2] sandbox: provide /chosen/boot-hartid property Heinrich Schuchardt
2021-10-19 22:54   ` Simon Glass
2021-10-20  5:06     ` Heinrich Schuchardt
2021-10-21 18:49     ` Simon Glass

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