All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE
@ 2021-03-22  8:17 Michal Orzel
  2021-03-24 12:53 ` Bertrand Marquis
  2021-03-24 20:38 ` Julien Grall
  0 siblings, 2 replies; 3+ messages in thread
From: Michal Orzel @ 2021-03-22  8:17 UTC (permalink / raw
  To: xen-devel
  Cc: Stefano Stabellini, Julien Grall, Volodymyr Babchuk,
	Andrew Cooper, George Dunlap, Ian Jackson, Jan Beulich, Wei Liu,
	bertrand.marquis

Currently in order to link existing DTB into Xen image
we need to either specify option CONFIG_DTB_FILE on the
command line or manually add it into .config.
Add Kconfig entry: CONFIG_DTB_FILE
to be able to provide the path to DTB we want to embed
into Xen image. If no path provided - the dtb will not
be embedded.

Remove the line: AFLAGS-y += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
as it is not needed since Kconfig will define it in a header
with all the other config options.

Move definition of _sdtb into dtb.S to prevent defining it
if there is no reference to it or if someone protects
_sdtb with #ifdef rather than with .ifnes. If the latter,
we will get a compiler error.

Signed-off-by: Michal Orzel <michal.orzel@arm.com>
---
 xen/arch/arm/Makefile     |  5 ++---
 xen/arch/arm/arm32/head.S |  4 ++--
 xen/arch/arm/arm64/head.S |  4 ++--
 xen/arch/arm/dtb.S        |  1 +
 xen/arch/arm/xen.lds.S    |  3 ---
 xen/common/Kconfig        | 10 ++++++++++
 6 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 16e6523e2c..46e6a95fec 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -68,9 +68,8 @@ extra-y += $(TARGET_SUBARCH)/head.o
 
 #obj-bin-y += ....o
 
-ifdef CONFIG_DTB_FILE
+ifneq ($(CONFIG_DTB_FILE),"")
 obj-y += dtb.o
-AFLAGS-y += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
 endif
 
 ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS)
@@ -137,7 +136,7 @@ asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
 xen.lds: xen.lds.S
 	$(CPP) -P $(a_flags) -MQ $@ -o $@ $<
 
-dtb.o: $(CONFIG_DTB_FILE)
+dtb.o: $(patsubst "%",%,$(CONFIG_DTB_FILE))
 
 .PHONY: clean
 clean::
diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index c404fa973e..50f019ed98 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -156,10 +156,10 @@ past_zImage:
         sub   r10, r9, r0            /* r10 := phys-offset */
 
         /* Using the DTB in the .dtb section? */
-#ifdef CONFIG_DTB_FILE
+.ifnes CONFIG_DTB_FILE,""
         ldr   r8, =_sdtb
         add   r8, r10                /* r8 := paddr(DTB) */
-#endif
+.endif
 
         /* Initialize the UART if earlyprintk has been enabled. */
 #ifdef CONFIG_EARLY_PRINTK
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 5d44667bd8..f38a8dfca7 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -296,9 +296,9 @@ real_start_efi:
         sub   x20, x19, x0           /* x20 := phys-offset */
 
         /* Using the DTB in the .dtb section? */
-#ifdef CONFIG_DTB_FILE
+.ifnes CONFIG_DTB_FILE,""
         load_paddr x21, _sdtb
-#endif
+.endif
 
         /* Initialize the UART if earlyprintk has been enabled. */
 #ifdef CONFIG_EARLY_PRINTK
diff --git a/xen/arch/arm/dtb.S b/xen/arch/arm/dtb.S
index c703aef12b..c39f3a095c 100644
--- a/xen/arch/arm/dtb.S
+++ b/xen/arch/arm/dtb.S
@@ -1,2 +1,3 @@
         .section .dtb,#alloc
+        GLOBAL(_sdtb)
         .incbin CONFIG_DTB_FILE
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 004b182acb..fc1d39a886 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -220,11 +220,8 @@ SECTIONS
   } :text
   _end = . ;
 
-#ifdef CONFIG_DTB_FILE
   /* Section for the device tree blob (if any). */
-  _sdtb = .;
   .dtb : { *(.dtb) } :text
-#endif
 
   /* Sections to be discarded */
   /DISCARD/ : {
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index eb953d171e..a1755cd380 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -400,6 +400,16 @@ config DOM0_MEM
 
 	  Leave empty if you are not sure what to specify.
 
+config DTB_FILE
+	string "Absolute path to device tree blob"
+	depends on HAS_DEVICE_TREE
+	help
+	  When using a bootloader that has no device tree support or when there
+	  is no bootloader at all, use this option to specify the absolute path
+	  to a device tree that will be linked directly inside Xen binary.
+
+	  This is an optional config. Leave empty if not needed.
+
 config TRACEBUFFER
 	bool "Enable tracing infrastructure" if EXPERT
 	default y
-- 
2.29.0



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

* Re: [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE
  2021-03-22  8:17 [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE Michal Orzel
@ 2021-03-24 12:53 ` Bertrand Marquis
  2021-03-24 20:38 ` Julien Grall
  1 sibling, 0 replies; 3+ messages in thread
From: Bertrand Marquis @ 2021-03-24 12:53 UTC (permalink / raw
  To: Michal Orzel
  Cc: Xen-devel, Stefano Stabellini, Julien Grall, Volodymyr Babchuk,
	Andrew Cooper, George Dunlap, Ian Jackson, Jan Beulich, Wei Liu

Hi Michal,

> On 22 Mar 2021, at 08:17, Michal Orzel <Michal.Orzel@arm.com> wrote:
> 
> Currently in order to link existing DTB into Xen image
> we need to either specify option CONFIG_DTB_FILE on the
> command line or manually add it into .config.
> Add Kconfig entry: CONFIG_DTB_FILE
> to be able to provide the path to DTB we want to embed
> into Xen image. If no path provided - the dtb will not
> be embedded.
> 
> Remove the line: AFLAGS-y += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
> as it is not needed since Kconfig will define it in a header
> with all the other config options.
> 
> Move definition of _sdtb into dtb.S to prevent defining it
> if there is no reference to it or if someone protects
> _sdtb with #ifdef rather than with .ifnes. If the latter,
> we will get a compiler error.
> 
> Signed-off-by: Michal Orzel <michal.orzel@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> xen/arch/arm/Makefile     |  5 ++---
> xen/arch/arm/arm32/head.S |  4 ++--
> xen/arch/arm/arm64/head.S |  4 ++--
> xen/arch/arm/dtb.S        |  1 +
> xen/arch/arm/xen.lds.S    |  3 ---
> xen/common/Kconfig        | 10 ++++++++++
> 6 files changed, 17 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index 16e6523e2c..46e6a95fec 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -68,9 +68,8 @@ extra-y += $(TARGET_SUBARCH)/head.o
> 
> #obj-bin-y += ....o
> 
> -ifdef CONFIG_DTB_FILE
> +ifneq ($(CONFIG_DTB_FILE),"")
> obj-y += dtb.o
> -AFLAGS-y += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
> endif
> 
> ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS)
> @@ -137,7 +136,7 @@ asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
> xen.lds: xen.lds.S
> 	$(CPP) -P $(a_flags) -MQ $@ -o $@ $<
> 
> -dtb.o: $(CONFIG_DTB_FILE)
> +dtb.o: $(patsubst "%",%,$(CONFIG_DTB_FILE))
> 
> .PHONY: clean
> clean::
> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
> index c404fa973e..50f019ed98 100644
> --- a/xen/arch/arm/arm32/head.S
> +++ b/xen/arch/arm/arm32/head.S
> @@ -156,10 +156,10 @@ past_zImage:
>         sub   r10, r9, r0            /* r10 := phys-offset */
> 
>         /* Using the DTB in the .dtb section? */
> -#ifdef CONFIG_DTB_FILE
> +.ifnes CONFIG_DTB_FILE,""
>         ldr   r8, =_sdtb
>         add   r8, r10                /* r8 := paddr(DTB) */
> -#endif
> +.endif
> 
>         /* Initialize the UART if earlyprintk has been enabled. */
> #ifdef CONFIG_EARLY_PRINTK
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 5d44667bd8..f38a8dfca7 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -296,9 +296,9 @@ real_start_efi:
>         sub   x20, x19, x0           /* x20 := phys-offset */
> 
>         /* Using the DTB in the .dtb section? */
> -#ifdef CONFIG_DTB_FILE
> +.ifnes CONFIG_DTB_FILE,""
>         load_paddr x21, _sdtb
> -#endif
> +.endif
> 
>         /* Initialize the UART if earlyprintk has been enabled. */
> #ifdef CONFIG_EARLY_PRINTK
> diff --git a/xen/arch/arm/dtb.S b/xen/arch/arm/dtb.S
> index c703aef12b..c39f3a095c 100644
> --- a/xen/arch/arm/dtb.S
> +++ b/xen/arch/arm/dtb.S
> @@ -1,2 +1,3 @@
>         .section .dtb,#alloc
> +        GLOBAL(_sdtb)
>         .incbin CONFIG_DTB_FILE
> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> index 004b182acb..fc1d39a886 100644
> --- a/xen/arch/arm/xen.lds.S
> +++ b/xen/arch/arm/xen.lds.S
> @@ -220,11 +220,8 @@ SECTIONS
>   } :text
>   _end = . ;
> 
> -#ifdef CONFIG_DTB_FILE
>   /* Section for the device tree blob (if any). */
> -  _sdtb = .;
>   .dtb : { *(.dtb) } :text
> -#endif
> 
>   /* Sections to be discarded */
>   /DISCARD/ : {
> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
> index eb953d171e..a1755cd380 100644
> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -400,6 +400,16 @@ config DOM0_MEM
> 
> 	  Leave empty if you are not sure what to specify.
> 
> +config DTB_FILE
> +	string "Absolute path to device tree blob"
> +	depends on HAS_DEVICE_TREE
> +	help
> +	  When using a bootloader that has no device tree support or when there
> +	  is no bootloader at all, use this option to specify the absolute path
> +	  to a device tree that will be linked directly inside Xen binary.
> +
> +	  This is an optional config. Leave empty if not needed.
> +
> config TRACEBUFFER
> 	bool "Enable tracing infrastructure" if EXPERT
> 	default y
> -- 
> 2.29.0
> 



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

* Re: [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE
  2021-03-22  8:17 [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE Michal Orzel
  2021-03-24 12:53 ` Bertrand Marquis
@ 2021-03-24 20:38 ` Julien Grall
  1 sibling, 0 replies; 3+ messages in thread
From: Julien Grall @ 2021-03-24 20:38 UTC (permalink / raw
  To: Michal Orzel, xen-devel
  Cc: Stefano Stabellini, Volodymyr Babchuk, Andrew Cooper,
	George Dunlap, Ian Jackson, Jan Beulich, Wei Liu,
	bertrand.marquis

Hi Michal,

On 22/03/2021 08:17, Michal Orzel wrote:
> Currently in order to link existing DTB into Xen image
> we need to either specify option CONFIG_DTB_FILE on the
> command line or manually add it into .config.
> Add Kconfig entry: CONFIG_DTB_FILE
> to be able to provide the path to DTB we want to embed
> into Xen image. If no path provided - the dtb will not
> be embedded.
> 
> Remove the line: AFLAGS-y += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
> as it is not needed since Kconfig will define it in a header
> with all the other config options.
> 
> Move definition of _sdtb into dtb.S to prevent defining it
> if there is no reference to it or if someone protects
> _sdtb with #ifdef rather than with .ifnes. If the latter,
> we will get a compiler error.
> 
> Signed-off-by: Michal Orzel <michal.orzel@arm.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

I have committed to my for-next/4.16 branch for now. This will soon 
reached staging.

Cheers,

-- 
Julien Grall


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

end of thread, other threads:[~2021-03-24 20:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-22  8:17 [PATCH v8] arm: Add Kconfig entry to select CONFIG_DTB_FILE Michal Orzel
2021-03-24 12:53 ` Bertrand Marquis
2021-03-24 20:38 ` Julien Grall

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.