[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4] arm: Add Kconfig entry to select CONFIG_DTB_FILE
On 11.03.2021 12:11, Julien Grall wrote: > > > On 11/03/2021 10:41, Michal Orzel wrote: >> Hi Julien, > > Hi, > >> >> On 11.03.2021 11:34, Julien Grall wrote: >>> Hi Michal, >>> >>> On 10/03/2021 06:58, 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. >>>> >>>> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx> >>>> --- >>>> xen/arch/arm/Makefile | 5 ++--- >>>> xen/common/Kconfig | 8 ++++++++ >>>> 2 files changed, 10 insertions(+), 3 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/common/Kconfig b/xen/common/Kconfig >>>> index eb953d171e..a27836bf47 100644 >>>> --- a/xen/common/Kconfig >>>> +++ b/xen/common/Kconfig >>>> @@ -400,6 +400,14 @@ 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. >>> >>> With this approach, CONFIG_DTB_FILE will always be defined. This means that >>> Xen will always be compiled to use the "embedded" DTB. When the string is >>> "", it will be garbagge. >>> >>> So I think we need a second config to that indicates whether the string is >>> empty or not. >>> >>> Interestingly, your first version of patch didn't expose the problem >>> because CONFIG_DTB_FILE would not be defined if the CONFIG_LINK_DTB is not >>> selected. Although, it would still happily build if CONFIG_DTB_FILE is "". >>> >>> Cheers, >>> >> I do not agrree. We do not need another config. > > Did you test that Xen will still boot if the string is empty? > >> If string is empty - the dtb.o will not be created and there will be no dtb >> section in xen binary. > > The dtb.o will not be created but the section will because the linker use > #ifdef CONFIG_DTB_FILE: > > 42sh> grep CONFIG_DTB .config > CONFIG_DTB_FILE="" > 42sh> nm xen-syms | grep _sdtb > 00000000003560f8 B _sdtb > > And to show this is going to be used: > > 42sh> git diff > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index 5d44667bd89d..2b680b8226d2 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -297,6 +297,7 @@ real_start_efi: > > /* Using the DTB in the .dtb section? */ > #ifdef CONFIG_DTB_FILE > + e > load_paddr x21, _sdtb > #endif > > 42hs> make > [...] > CC arm64/head.o > arm64/head.S: Assembler messages: > arm64/head.S:300: Error: unknown mnemonic `e' -- `e' > /home/ANT.AMAZON.COM/jgrall/works/oss/xen/xen/Rules.mk:204: recipe for target > 'arm64/head.o' failed > > So _sdtb is going to always be used... > > Cheers, > Yes you are right. So I could add another config like: config DTB_VALID def_bool y if DTB_FILE != "" and change all the lines containing: #ifdef CONFIG_DTB_FILE to #ifdef CONFIG_DTB_VALID What do u think? Michal
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |