diff mbox

[Xen-devel,for-4.5,V6,01/14] move x86 EFI boot/runtime code to common/efi

Message ID 1411534992-27443-2-git-send-email-roy.franz@linaro.org
State New
Headers show

Commit Message

Roy Franz Sept. 24, 2014, 5:02 a.m. UTC
This moves the EFI boot and runtime services code to the common/efi directory.
This code is symbolicly linked back into the arch/x86/efi directory where it is
built if a build-time check for PE/COFF support in the toolchain passes.  In
the PE/COFF supporting case, both the EFI executable and the normal Xen image
(with stubbed EFI functions) are built.  We can't use the normal common build
infrastructure since we are building two versions at the same time, with
different EFI related code in each.  No code changes, just file movement and
make updates.  The files are symbolicly linked at build time back toe the
original arch/x86/efi directory.  This is in preparation for adding ARM EFI
support where much of these files can be shared.

Signed-off-by: Roy Franz <roy.franz@linaro.org>
---
 .gitignore                             | 4 ++++
 xen/Makefile                           | 4 ++++
 xen/{arch/x86 => common}/efi/boot.c    | 0
 xen/{arch/x86 => common}/efi/compat.c  | 0
 xen/{arch/x86 => common}/efi/efi.h     | 0
 xen/{arch/x86 => common}/efi/runtime.c | 0
 6 files changed, 8 insertions(+)
 rename xen/{arch/x86 => common}/efi/boot.c (100%)
 rename xen/{arch/x86 => common}/efi/compat.c (100%)
 rename xen/{arch/x86 => common}/efi/efi.h (100%)
 rename xen/{arch/x86 => common}/efi/runtime.c (100%)

diff --git a/xen/arch/x86/efi/boot.c b/xen/common/efi/boot.c
similarity index 100%
rename from xen/arch/x86/efi/boot.c
rename to xen/common/efi/boot.c
diff --git a/xen/arch/x86/efi/compat.c b/xen/common/efi/compat.c
similarity index 100%
rename from xen/arch/x86/efi/compat.c
rename to xen/common/efi/compat.c
diff --git a/xen/arch/x86/efi/efi.h b/xen/common/efi/efi.h
similarity index 100%
rename from xen/arch/x86/efi/efi.h
rename to xen/common/efi/efi.h
diff --git a/xen/arch/x86/efi/runtime.c b/xen/common/efi/runtime.c
similarity index 100%
rename from xen/arch/x86/efi/runtime.c
rename to xen/common/efi/runtime.c

Comments

Jan Beulich Sept. 24, 2014, 3:50 p.m. UTC | #1
>>> On 24.09.14 at 07:02, <roy.franz@linaro.org> wrote:
> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -100,6 +100,10 @@ $(TARGET): delete-unfresh-files
>  	$(MAKE) -C tools
>  	$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
>  	[ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
> +	[ -e arch/$(TARGET_ARCH)/efi ] && ln -nsf ../../../common/efi/boot.c arch/$(TARGET_ARCH)/efi/;\
> +			ln -nsf ../../../common/efi/runtime.c arch/$(TARGET_ARCH)/efi/;\
> +			ln -nsf ../../../common/efi/compat.c arch/$(TARGET_ARCH)/efi/;\
> +			ln -nsf ../../../common/efi/efi.h arch/$(TARGET_ARCH)/efi/;

I don't think this does what you want: The && applies only to the first
ln invocation, the others will be done unconditionally. And this would
be better done with "for f in boot.c runtime.c ..." anyway, at which
point the issue magically disappears.

Furthermore (I'm sorry for not paying attention to the before) you
shouldn't use && in make rules without some extra care: If the left
side evaluates to false, the whole compound command (and hence
the make rule) will fail. Either use || or invoke /bin/true as last
operation.

Jan
Roy Franz Sept. 24, 2014, 7:41 p.m. UTC | #2
On Wed, Sep 24, 2014 at 8:50 AM, Jan Beulich <JBeulich@suse.com> wrote:
>>>> On 24.09.14 at 07:02, <roy.franz@linaro.org> wrote:
>> --- a/xen/Makefile
>> +++ b/xen/Makefile
>> @@ -100,6 +100,10 @@ $(TARGET): delete-unfresh-files
>>       $(MAKE) -C tools
>>       $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
>>       [ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
>> +     [ -e arch/$(TARGET_ARCH)/efi ] && ln -nsf ../../../common/efi/boot.c arch/$(TARGET_ARCH)/efi/;\
>> +                     ln -nsf ../../../common/efi/runtime.c arch/$(TARGET_ARCH)/efi/;\
>> +                     ln -nsf ../../../common/efi/compat.c arch/$(TARGET_ARCH)/efi/;\
>> +                     ln -nsf ../../../common/efi/efi.h arch/$(TARGET_ARCH)/efi/;
>
> I don't think this does what you want: The && applies only to the first
> ln invocation, the others will be done unconditionally. And this would
> be better done with "for f in boot.c runtime.c ..." anyway, at which
> point the issue magically disappears.
>
> Furthermore (I'm sorry for not paying attention to the before) you
> shouldn't use && in make rules without some extra care: If the left
> side evaluates to false, the whole compound command (and hence
> the make rule) will fail. Either use || or invoke /bin/true as last
> operation.
>
> Jan
>

I had overlooked that effect of the failure -  I'll redo this as a for loop.

thanks,
Roy
diff mbox

Patch

diff --git a/.gitignore b/.gitignore
index 8e34b85..35e4147 100644
--- a/.gitignore
+++ b/.gitignore
@@ -254,6 +254,10 @@  xen/arch/x86/efi.lds
 xen/arch/x86/efi/check.efi
 xen/arch/x86/efi/disabled
 xen/arch/x86/efi/mkreloc
+xen/arch/x86/efi/boot.c
+xen/arch/x86/efi/runtime.c
+xen/arch/x86/efi/compat.c
+xen/arch/x86/efi/efi.h
 xen/ddb/*
 xen/include/headers.chk
 xen/include/asm
diff --git a/xen/Makefile b/xen/Makefile
index 0e58bce..d3c9bf2 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -100,6 +100,10 @@  $(TARGET): delete-unfresh-files
 	$(MAKE) -C tools
 	$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
 	[ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
+	[ -e arch/$(TARGET_ARCH)/efi ] && ln -nsf ../../../common/efi/boot.c arch/$(TARGET_ARCH)/efi/;\
+			ln -nsf ../../../common/efi/runtime.c arch/$(TARGET_ARCH)/efi/;\
+			ln -nsf ../../../common/efi/compat.c arch/$(TARGET_ARCH)/efi/;\
+			ln -nsf ../../../common/efi/efi.h arch/$(TARGET_ARCH)/efi/;
 	$(MAKE) -f $(BASEDIR)/Rules.mk -C include
 	$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
 	$(MAKE) -f $(BASEDIR)/Rules.mk include/asm-$(TARGET_ARCH)/asm-offsets.h