@@ -6,6 +6,7 @@ config ARM_64
def_bool y
depends on !ARM_32
select 64BIT
+ select ARM_EFI
select HAS_FAST_MULTIPLY
config ARM
@@ -33,6 +34,9 @@ config ACPI
Advanced Configuration and Power Interface (ACPI) support for Xen is
an alternative to device tree on ARM64.
+config ARM_EFI
+ bool
+
config GICV3
bool "GICv3 driver"
depends on ARM_64 && !NEW_VGIC
@@ -1,6 +1,5 @@
obj-$(CONFIG_ARM_32) += arm32/
obj-$(CONFIG_ARM_64) += arm64/
-obj-$(CONFIG_ARM_64) += efi/
obj-$(CONFIG_ACPI) += acpi/
obj-$(CONFIG_HAS_PCI) += pci/
ifneq ($(CONFIG_NO_PLAT),y)
@@ -20,6 +19,7 @@ obj-y += domain.o
obj-y += domain_build.init.o
obj-y += domctl.o
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
+obj-y += efi/
obj-y += gic.o
obj-y += gic-v2.o
obj-$(CONFIG_GICV3) += gic-v3.o
@@ -1,4 +1,12 @@
include $(srctree)/common/efi/efi-common.mk
+ifeq ($(CONFIG_ARM_EFI),y)
obj-y += $(EFIOBJ-y)
obj-$(CONFIG_ACPI) += efi-dom0.init.o
+else
+# Add stub.o to EFIOBJ-y to re-use the clean-files in
+# efi-common.mk. Otherwise the link of stub.c in arm/efi
+# will not be cleaned in "make clean".
+EFIOBJ-y += stub.o
+obj-y += stub.o
+endif
@@ -1,7 +1,5 @@
#include <xen/efi.h>
-#include <xen/errno.h>
#include <xen/init.h>
-#include <xen/lib.h>
#include <asm/asm_defns.h>
#include <asm/efibind.h>
#include <asm/page.h>
@@ -10,6 +8,7 @@
#include <efi/eficon.h>
#include <efi/efidevp.h>
#include <efi/efiapi.h>
+#include "../../../common/efi/stub.c"
/*
* Here we are in EFI stub. EFI calls are not supported due to lack
@@ -45,11 +44,6 @@ void __init noreturn efi_multiboot2(EFI_HANDLE ImageHandle,
unreachable();
}
-bool efi_enabled(unsigned int feature)
-{
- return false;
-}
-
void __init efi_init_memory(void) { }
bool efi_boot_mem_unused(unsigned long *start, unsigned long *end)
@@ -62,32 +56,8 @@ bool efi_boot_mem_unused(unsigned long *start, unsigned long *end)
void efi_update_l4_pgtable(unsigned int l4idx, l4_pgentry_t l4e) { }
-bool efi_rs_using_pgtables(void)
-{
- return false;
-}
-
-unsigned long efi_get_time(void)
-{
- BUG();
- return 0;
-}
-
-void efi_halt_system(void) { }
-void efi_reset_system(bool warm) { }
-
-int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
-{
- return -ENOSYS;
-}
-
int efi_compat_get_info(uint32_t idx, union compat_pf_efi_info *)
__attribute__((__alias__("efi_get_info")));
-int efi_runtime_call(struct xenpf_efi_runtime_call *op)
-{
- return -ENOSYS;
-}
-
int efi_compat_runtime_call(struct compat_pf_efi_runtime_call *)
__attribute__((__alias__("efi_runtime_call")));
@@ -9,7 +9,8 @@ CFLAGS-y += -iquote $(srcdir)
# e.g.: It transforms "dir/foo/bar" into successively
# "dir foo bar", ".. .. ..", "../../.."
$(obj)/%.c: $(srctree)/common/efi/%.c FORCE
- $(Q)ln -nfs $(subst $(space),/,$(patsubst %,..,$(subst /, ,$(obj))))/source/common/efi/$(<F) $@
+ $(Q)test -f $@ || \
+ ln -nfs $(subst $(space),/,$(patsubst %,..,$(subst /, ,$(obj))))/source/common/efi/$(<F) $@
clean-files += $(patsubst %.o, %.c, $(EFIOBJ-y:.init.o=.o) $(EFIOBJ-))
new file mode 100644
@@ -0,0 +1,32 @@
+#include <xen/efi.h>
+#include <xen/errno.h>
+#include <xen/lib.h>
+
+bool efi_enabled(unsigned int feature)
+{
+ return false;
+}
+
+bool efi_rs_using_pgtables(void)
+{
+ return false;
+}
+
+unsigned long efi_get_time(void)
+{
+ BUG();
+ return 0;
+}
+
+void efi_halt_system(void) { }
+void efi_reset_system(bool warm) { }
+
+int efi_get_info(uint32_t idx, union xenpf_efi_info *info)
+{
+ return -ENOSYS;
+}
+
+int efi_runtime_call(struct xenpf_efi_runtime_call *op)
+{
+ return -ENOSYS;
+}