|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v1 20/74] x86: produce a binary that can be booted as PVH
On Fri, Jan 05, 2018 at 04:39:33AM -0700, Jan Beulich wrote:
> >>> On 04.01.18 at 14:05, <wei.liu2@xxxxxxxxxx> wrote:
> > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>
> Again I assume a description is still being intended to be written
>
> > --- a/xen/arch/x86/Makefile
> > +++ b/xen/arch/x86/Makefile
> > @@ -75,6 +75,8 @@ efi-y := $(shell if [ ! -r
> > $(BASEDIR)/include/xen/compile.h -o \
> > -O $(BASEDIR)/include/xen/compile.h ]; then \
> > echo '$(TARGET).efi'; fi)
> >
> > +shim-$(CONFIG_PVH_GUEST) := $(TARGET)-shim
> > +
> > ifneq ($(build_id_linker),)
> > notes_phdrs = --notes
> > else
> > @@ -93,7 +95,7 @@ endif
> > syms-warn-dup-y := --warn-dup
> > syms-warn-dup-$(CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS) :=
> >
> > -$(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32
> > +$(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32 $(shim-y)
> > ./boot/mkelf32 $(notes_phdrs) $(TARGET)-syms $(TARGET)
> > $(XEN_IMG_OFFSET) \
> > `$(NM) $(TARGET)-syms | sed -ne 's/^\([^ ]*\) .
> > __2M_rwdata_end$$/0x\1/p'`
>
> Hmm, so you mean to build shim and "normal" Xen at the same time,
> with all the same objects? That's rather unexpected following the
> earlier exchange Andrew and I had. I would expect the shim to not
> require quite a few bits and pieces, and hence wanting to be built
> independently.
>
There is a later patch in this series to link xen under tools/firmware/
to build the shim there, which would need build system patch like this.
The can be cleaned up somehow. At the time I wasn't sure how best to
proceed (and certainly didn't take part in the discussion between Andrew
and you).
Suggestions welcome.
> > @@ -144,6 +146,11 @@ $(TARGET)-syms: prelink.o xen.lds
> > $(BASEDIR)/common/symbols-dummy.o
> > >$(@D)/$(@F).map
> > rm -f $(@D)/.$(@F).[0-9]*
> >
> > +# Use elf32-x86-64 if toolchain support exists, elf32-i386 otherwise.
> > +$(TARGET)-shim: FORMAT = $(firstword $(filter elf32-x86-64,$(shell
> > $(OBJCOPY) --help)) elf32-i386)
>
> What are the implications of using one vs the other? If elf32-i386
> works, why not use it all the time?
>
Not sure, Andrew made this change. I will leave this to him.
> > @@ -374,6 +375,15 @@ cs32_switch:
> > /* Jump to earlier loaded address. */
> > jmp *%edi
> >
> > +
> > +#ifdef CONFIG_PVH_GUEST
>
> No double blank lines please.
>
> > +ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, .long sym_offs(__pvh_start))
> > +
> > +__pvh_start:
> > + ud2a
> > +
> > +#endif /* CONFIG_PVH_GUEST */
> > +
> > __start:
>
> Does the new code strictly need to live here? Can't is be kept both
> out of the resulting binary sequence currently resulting here and
> out of this source file altogether (by introducing a new pvh.S or
> shim.S)?
>
We can use a new source file.
> > --- a/xen/arch/x86/xen.lds.S
> > +++ b/xen/arch/x86/xen.lds.S
> > @@ -34,7 +34,7 @@ OUTPUT_ARCH(i386:x86-64)
> > PHDRS
> > {
> > text PT_LOAD ;
> > -#if defined(BUILD_ID) && !defined(EFI)
> > +#if (defined(BUILD_ID) && !defined(EFI)) || defined (CONFIG_PVH_GUEST)
>
> Did you mean
>
> #if (defined(BUILD_ID) || defined(CONFIG_PVH_GUEST)) && !defined(EFI)
>
> ? Of course this would be moot if main and shim binary were to
> be built independently.
>
> Also - stray blank.
>
> > @@ -128,6 +128,12 @@ SECTIONS
> > __param_end = .;
> > } :text
> >
> > +#if defined(CONFIG_PVH_GUEST) && !defined(EFI)
>
> The EFI part here then also wouldn't be necessary, afaict.
>
My goal was to include the note section when building the shim. Your
comment looks correct to me. I will clean this up in the next version.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |