[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V3 01/15] move x86 EFI boot code to common/efi



ink On Sun, 2014-09-07 at 20:53 -0700, Roy Franz wrote:
> This moves the boot.c,the file that implements the EFI entry point
> to efi/common, and builds with both EFI/non-EFI toolchains.

I'm not that familiar with the existing EFI stuff so maybe this is a
dump question, but do you mean that it *can* now be built with either
EFI or non-EFI, not that it *is* multiply compiled in a given build?

>   No code
> changes, just file movement and make updates.

For next time could you please pass -M to git send-email/format-patch so
that handles moves more efficiently and shows only the actual changes.

> diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
> index c1e244d..5256bdf 100644
> --- a/xen/arch/x86/Makefile
> +++ b/xen/arch/x86/Makefile
> @@ -75,6 +75,13 @@ $(TARGET): $(TARGET)-syms $(efi-y) boot/mkelf32
>  
>  ALL_OBJS := $(BASEDIR)/arch/x86/boot/built_in.o 
> $(BASEDIR)/arch/x86/efi/built_in.o $(ALL_OBJS)
>  
> +
> +# This seems to be required to get parallel builds to work, otherwise 
> prelink-efi.o complains about
> +# no rule to make boot.init.o

I suppose we must recurse into common and arch at the same time.
> +# Not sure what the right fix is

Me neither. This doesn't look right to me though, given that
xen/common/efi is also entered via a subdir-y in xen/common/Makefile.

Perhaps Jan has some ideas but I'm wondering if we ought not to recurse
into xen/common/efi from here and not from xen/common, or at least to
not include extra-$(efi) += boot.init.o in xen/common/efi/Makefile (that
would also let the x86 specific checkng code stay here, might it?)

symbols-dummy.o has a similar hack, but notice that it is not build from
xen/common/Makefile.

Anyway, I'm flailing, perhaps Jan can suggest the correct fix.

> +$(BASEDIR)/common/efi/boot.init.o: $(BASEDIR)/common/efi/boot.c
> +     $(MAKE) -f $(BASEDIR)/Rules.mk -C $(BASEDIR)/common/efi/ boot.init.o
> +
>  ifeq ($(lto),y)
>  # Gather all LTO objects together
>  prelink_lto.o: $(ALL_OBJS)
> @@ -87,13 +94,13 @@ prelink-efi_lto.o: $(ALL_OBJS) efi/runtime.o efi/compat.o
>  prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) 
> prelink_lto.o
>       $(LD) $(LDFLAGS) -r -o $@ $^
>  
> -prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) 
> prelink-efi_lto.o efi/boot.init.o
> +prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) 
> prelink-efi_lto.o $(BASEDIR)/common/efi/boot.init.o
>       $(guard) $(LD) $(LDFLAGS) -r -o $@ $^
>  else
>  prelink.o: $(ALL_OBJS)
>       $(LD) $(LDFLAGS) -r -o $@ $^
>  
> -prelink-efi.o: $(ALL_OBJS) efi/boot.init.o efi/runtime.o efi/compat.o
> +prelink-efi.o: $(ALL_OBJS) $(BASEDIR)/common/efi/boot.init.o efi/runtime.o 
> efi/compat.o
>       $(guard) $(LD) $(LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
>  endif
>  
> @@ -143,8 +150,8 @@ $(TARGET).efi: prelink-efi.o efi.lds efi/relocs-dummy.o 
> $(BASEDIR)/common/symbol
>       if $(guard) false; then rm -f $@; echo 'EFI support disabled'; fi
>       rm -f $(@D)/.$(@F).[0-9]*
>  
> -efi/boot.init.o efi/runtime.o efi/compat.o: 
> $(BASEDIR)/arch/x86/efi/built_in.o
> -efi/boot.init.o efi/runtime.o efi/compat.o: ;
> +efi/runtime.o efi/compat.o: $(BASEDIR)/arch/x86/efi/built_in.o
> +efi/runtime.o efi/compat.o: ;
>  
>  asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
>       $(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
> diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
> index 1daa7ac..609d05b 100644
> --- a/xen/arch/x86/efi/Makefile
> +++ b/xen/arch/x86/efi/Makefile
> @@ -7,8 +7,8 @@ create = test -e $(1) || touch -t 199901010000 $(1)
>  efi := $(filter y,$(x86_64)$(shell rm -f disabled))
>  efi := $(if $(efi),$(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c 
> check.c 2>disabled && echo y))
>  efi := $(if $(efi),$(shell $(LD) -mi386pep --subsystem=10 -o check.efi 
> check.o 2>disabled && echo y))
> -efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,boot.init.o); 
> $(call create,runtime.o)))
> +efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,runtime.o)))
>  
> -extra-$(efi) += boot.init.o relocs-dummy.o runtime.o compat.o
> +extra-$(efi) += relocs-dummy.o runtime.o compat.o
>  
>  stub.o: $(extra-y)
[...]
> diff --git a/xen/common/Makefile b/xen/common/Makefile
> index 3683ae3..e5c7044 100644
> --- a/xen/common/Makefile
> +++ b/xen/common/Makefile
> @@ -67,4 +67,5 @@ subdir-$(x86_64) += hvm
>  subdir-$(coverage) += gcov
>  
>  subdir-y += libelf
> +subdir-y += efi
>  subdir-$(HAS_DEVICE_TREE) += libfdt
> diff --git a/xen/common/efi/Makefile b/xen/common/efi/Makefile
> new file mode 100644
> index 0000000..4313a4e
> --- /dev/null
> +++ b/xen/common/efi/Makefile
> @@ -0,0 +1,14 @@
> +CFLAGS += -fshort-wchar
> +
> +obj-y += dummy.o
> +
> +create = test -e $(1) || touch -t 199901010000 $(1)
> +
> +efi := $(filter y,$(x86_64)$(shell rm -f disabled))
> +efi := $(if $(efi),$(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c 
> check.c 2>disabled && echo y))
> +efi := $(if $(efi),$(shell $(LD) -mi386pep --subsystem=10 -o check.efi 
> check.o 2>disabled && echo y))
> +efi := $(if $(efi),$(shell rm disabled)y,$(shell $(call create,boot.init.o); 
> $(call create,runtime.o)))
> +
> +extra-$(efi) += boot.init.o
> +
> +dummy.o: boot.init.o $(extra-y)



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.