1. 23 2月, 2020 1 次提交
    • A
      efi/libstub/arm: Make efi_entry() an ordinary PE/COFF entrypoint · 9f922377
      Ard Biesheuvel 提交于
      Expose efi_entry() as the PE/COFF entrypoint directly, instead of
      jumping into a wrapper that fiddles with stack buffers and other
      stuff that the compiler is much better at. The only reason this
      code exists is to obtain a pointer to the base of the image, but
      we can get the same value from the loaded_image protocol, which
      we already need for other reasons anyway.
      
      Update the return type as well, to make it consistent with what
      is required for a PE/COFF executable entrypoint.
      Signed-off-by: NArd Biesheuvel <ardb@kernel.org>
      9f922377
  2. 25 12月, 2019 7 次提交
  3. 07 11月, 2019 1 次提交
  4. 19 6月, 2019 1 次提交
  5. 16 2月, 2019 1 次提交
  6. 04 2月, 2019 1 次提交
    • A
      efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted · 4e46c2a9
      Ard Biesheuvel 提交于
      The UEFI spec revision 2.7 errata A section 8.4 has the following to
      say about the virtual memory runtime services:
      
        "This section contains function definitions for the virtual memory
        support that may be optionally used by an operating system at runtime.
        If an operating system chooses to make EFI runtime service calls in a
        virtual addressing mode instead of the flat physical mode, then the
        operating system must use the services in this section to switch the
        EFI runtime services from flat physical addressing to virtual
        addressing."
      
      So it is pretty clear that calling SetVirtualAddressMap() is entirely
      optional, and so there is no point in doing so unless it achieves
      anything useful for us.
      
      This is not the case for 64-bit ARM. The identity mapping used by the
      firmware is arbitrarily converted into another permutation of userland
      addresses (i.e., bits [63:48] cleared), and the runtime code could easily
      deal with the original layout in exactly the same way as it deals with
      the converted layout. However, due to constraints related to page size
      differences if the OS is not running with 4k pages, and related to
      systems that may expose the individual sections of PE/COFF runtime
      modules as different memory regions, creating the virtual layout is a
      bit fiddly, and requires us to sort the memory map and reason about
      adjacent regions with identical memory types etc etc.
      
      So the obvious fix is to stop calling SetVirtualAddressMap() altogether
      on arm64 systems. However, to avoid surprises, which are notoriously
      hard to diagnose when it comes to OS<->firmware interactions, let's
      start by making it an opt-out feature, and implement support for the
      'efi=novamap' kernel command line parameter on ARM and arm64 systems.
      
      ( Note that 32-bit ARM generally does require SetVirtualAddressMap() to be
        used, given that the physical memory map and the kernel virtual address
        map are not guaranteed to be non-overlapping like on arm64. However,
        having support for efi=novamap,noruntime on 32-bit ARM, combined with
        the recently proposed support for earlycon=efifb, is likely to be useful
        to diagnose boot issues on such systems if they have no accessible serial
        port. )
      Tested-by: NJeffrey Hugo <jhugo@codeaurora.org>
      Tested-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Tested-by: NLee Jones <lee.jones@linaro.org>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
      Cc: Leif Lindholm <leif.lindholm@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Jones <pjones@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-efi@vger.kernel.org
      Link: http://lkml.kernel.org/r/20190202094119.13230-8-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      4e46c2a9
  7. 11 12月, 2018 1 次提交
    • S
      arm64: mm: Introduce DEFAULT_MAP_WINDOW · 363524d2
      Steve Capper 提交于
      We wish to introduce a 52-bit virtual address space for userspace but
      maintain compatibility with software that assumes the maximum VA space
      size is 48 bit.
      
      In order to achieve this, on 52-bit VA systems, we make mmap behave as
      if it were running on a 48-bit VA system (unless userspace explicitly
      requests a VA where addr[51:48] != 0).
      
      On a system running a 52-bit userspace we need TASK_SIZE to represent
      the 52-bit limit as it is used in various places to distinguish between
      kernelspace and userspace addresses.
      
      Thus we need a new limit for mmap, stack, ELF loader and EFI (which uses
      TTBR0) to represent the non-extended VA space.
      
      This patch introduces DEFAULT_MAP_WINDOW and DEFAULT_MAP_WINDOW_64 and
      switches the appropriate logic to use that instead of TASK_SIZE.
      Signed-off-by: NSteve Capper <steve.capper@arm.com>
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      363524d2
  8. 30 11月, 2018 1 次提交
    • A
      efi: Permit multiple entries in persistent memreserve data structure · 5f0b0ecf
      Ard Biesheuvel 提交于
      In preparation of updating efi_mem_reserve_persistent() to cause less
      fragmentation when dealing with many persistent reservations, update
      the struct definition and the code that handles it currently so it
      can describe an arbitrary number of reservations using a single linked
      list entry. The actual optimization will be implemented in a subsequent
      patch.
      Tested-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Arend van Spriel <arend.vanspriel@broadcom.com>
      Cc: Bhupesh Sharma <bhsharma@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Dave Hansen <dave.hansen@intel.com>
      Cc: Eric Snowberg <eric.snowberg@oracle.com>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Jon Hunter <jonathanh@nvidia.com>
      Cc: Julien Thierry <julien.thierry@arm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Nathan Chancellor <natechancellor@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
      Cc: Sedat Dilek <sedat.dilek@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: YiFei Zhu <zhuyifei1999@gmail.com>
      Cc: linux-efi@vger.kernel.org
      Link: http://lkml.kernel.org/r/20181129171230.18699-10-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      5f0b0ecf
  9. 15 11月, 2018 1 次提交
  10. 26 9月, 2018 1 次提交
  11. 22 7月, 2018 1 次提交
  12. 16 7月, 2018 1 次提交
    • A
      efi/libstub/arm: Add opt-in Kconfig option for the DTB loader · 3d7ee348
      Ard Biesheuvel 提交于
      There are various ways a platform can provide a device tree binary
      to the kernel, with different levels of sophistication:
      
      - ideally, the UEFI firmware, which is tightly coupled with the
        platform, provides a device tree image directly as a UEFI
        configuration table, and typically permits the contents to be
        manipulated either via menu options or via UEFI environment
        variables that specify a replacement image,
      
      - GRUB for ARM has a 'devicetree' directive which allows a device
        tree image to be loaded from any location accessible to GRUB, and
        supersede the one provided by the firmware,
      
      - the EFI stub implements a dtb= command line option that allows a
        device tree image to be loaded from a file residing in the same
        file system as the one the kernel image was loaded from.
      
      The dtb= command line option was never intended to be more than a
      development feature, to allow the other options to be implemented
      in parallel. So let's make it an opt-in feature that is disabled
      by default, but can be re-enabled at will.
      
      Note that we already disable the dtb= command line option when we
      detect that we are running with UEFI Secure Boot enabled.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Reviewed-by: NAlexander Graf <agraf@suse.de>
      Acked-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-efi@vger.kernel.org
      Link: http://lkml.kernel.org/r/20180711094040.12506-7-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      3d7ee348
  13. 28 10月, 2017 1 次提交
    • A
      efi/libstub: arm: omit sorting of the UEFI memory map · 29f9007b
      Ard Biesheuvel 提交于
      ARM shares its EFI stub implementation with arm64, which has some
      special handling in the virtual remapping code to
      a) make sure that we can map everything even if the OS executes
         with 64k page size, and
      b) make sure that adjacent regions with the same attributes are not
         reordered or moved apart in memory.
      
      The latter is a workaround for a 'feature' that was shortly recommended
      by UEFI spec v2.5, but deprecated shortly after, due to the fact that
      it broke many OS installers, including non-Linux ones, and it was never
      widely implemented for ARM systems. Before implementing b), the arm64
      code simply rounded up all regions to 64 KB granularity, but given that
      that results in moving adjacent regions apart, it had to be refined when
      b) was implemented.
      
      The adjacency check requires a sort() pass, due to the fact that the
      UEFI spec does not mandate any ordering, and the inclusion of the
      lib/sort.c code into the ARM EFI stub is causing some trouble with
      the decompressor build due to the fact that its EXPORT_SYMBOL() call
      triggers the creation of ksymtab/kcrctab sections.
      
      So let's simply do away with the adjacency check for ARM, and simply put
      all UEFI runtime regions together if they have the same memory attributes.
      This is guaranteed to work, given that ARM only supports 4 KB pages,
      and allows us to remove the sort() call entirely.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Tested-by: NJeffy Chen <jeffy.chen@rock-chips.com>
      Tested-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
      Tested-by: NMatthias Brugger <matthias.bgg@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      29f9007b
  14. 25 10月, 2017 1 次提交
    • A
      efi/libstub/arm: Don't randomize runtime regions when CONFIG_HIBERNATION=y · 38fb6652
      Ard Biesheuvel 提交于
      Commit:
      
        e69176d6 ("ef/libstub/arm/arm64: Randomize the base of the UEFI rt services region")
      
      implemented randomization of the virtual mapping that the OS chooses for
      the UEFI runtime services. This was motivated by the fact that UEFI usually
      does not bother to specify any permission restrictions for those regions,
      making them prime real estate for exploitation now that the OS is getting
      more and more careful not to leave any R+W+X mapped regions lying around.
      
      However, this randomization breaks assumptions in the resume from
      hibernation code, which expects all memory regions populated by UEFI to
      remain in the same place, including their virtual mapping into the OS
      memory space. While this assumption may not be entirely reasonable in the
      first place, breaking it deliberately does not make a lot of sense either.
      So let's refrain from this randomization pass if CONFIG_HIBERNATION=y.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: James Morse <james.morse@arm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-efi@vger.kernel.org
      Link: http://lkml.kernel.org/r/20171025100448.26056-3-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      38fb6652
  15. 26 8月, 2017 1 次提交
  16. 17 4月, 2017 1 次提交
  17. 05 4月, 2017 4 次提交
    • A
      ef/libstub/arm/arm64: Randomize the base of the UEFI rt services region · e69176d6
      Ard Biesheuvel 提交于
      Update the allocation logic for the virtual mapping of the UEFI runtime
      services to start from a randomized base address if KASLR is in effect,
      and if the UEFI firmware exposes an implementation of EFI_RNG_PROTOCOL.
      
      This makes it more difficult to predict the location of exploitable
      data structures in the runtime UEFI firmware, which increases robustness
      against attacks. Note that these regions are only mapped during the
      time a runtime service call is in progress, and only on a single CPU
      at a time, bit given the lack of a downside, let's enable it nonetheless.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: bhe@redhat.com
      Cc: bhsharma@redhat.com
      Cc: eugene@hp.com
      Cc: evgeny.kalugin@intel.com
      Cc: jhugo@codeaurora.org
      Cc: leif.lindholm@linaro.org
      Cc: linux-efi@vger.kernel.org
      Cc: mark.rutland@arm.com
      Cc: roy.franz@cavium.com
      Cc: rruigrok@codeaurora.org
      Link: http://lkml.kernel.org/r/20170404160910.28115-3-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      e69176d6
    • A
      efi/libstub/arm/arm64: Disable debug prints on 'quiet' cmdline arg · eeff7d63
      Ard Biesheuvel 提交于
      The EFI stub currently prints a number of diagnostic messages that do
      not carry a lot of information. Since these prints are not controlled
      by 'loglevel' or other command line parameters, and since they appear on
      the EFI framebuffer as well (if enabled), it would be nice if we could
      turn them off.
      
      So let's add support for the 'quiet' command line parameter in the stub,
      and disable the non-error prints if it is passed.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: bhe@redhat.com
      Cc: bhsharma@redhat.com
      Cc: bp@alien8.de
      Cc: eugene@hp.com
      Cc: evgeny.kalugin@intel.com
      Cc: jhugo@codeaurora.org
      Cc: leif.lindholm@linaro.org
      Cc: linux-efi@vger.kernel.org
      Cc: roy.franz@cavium.com
      Cc: rruigrok@codeaurora.org
      Link: http://lkml.kernel.org/r/20170404160910.28115-2-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      eeff7d63
    • A
      efi/libstub: Unify command line param parsing · 60f38de7
      Ard Biesheuvel 提交于
      Merge the parsing of the command line carried out in arm-stub.c with
      the handling in efi_parse_options(). Note that this also fixes the
      missing handling of CONFIG_CMDLINE_FORCE=y, in which case the builtin
      command line should supersede the one passed by the firmware.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: bhe@redhat.com
      Cc: bhsharma@redhat.com
      Cc: bp@alien8.de
      Cc: eugene@hp.com
      Cc: evgeny.kalugin@intel.com
      Cc: jhugo@codeaurora.org
      Cc: leif.lindholm@linaro.org
      Cc: linux-efi@vger.kernel.org
      Cc: mark.rutland@arm.com
      Cc: roy.franz@cavium.com
      Cc: rruigrok@codeaurora.org
      Link: http://lkml.kernel.org/r/20170404160910.28115-1-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      60f38de7
    • A
      efi/arm-stub: Correct FDT and initrd allocation rules for arm64 · 138728dd
      Ard Biesheuvel 提交于
      On arm64, we have made some changes over the past year to the way the
      kernel itself is allocated and to how it deals with the initrd and FDT.
      This patch brings the allocation logic in the EFI stub in line with that,
      which is necessary because the introduction of KASLR has created the
      possibility for the initrd to be allocated in a place where the kernel
      may not be able to map it. (This is mostly a theoretical scenario, since
      it only affects systems where the physical memory footprint exceeds the
      size of the linear mapping.)
      
      Since we know the kernel itself will be covered by the linear mapping,
      choose a suitably sized window (i.e., based on the size of the linear
      region) covering the kernel when allocating memory for the initrd.
      
      The FDT may be anywhere in memory on arm64 now that we map it via the
      fixmap, so we can lift the address restriction there completely.
      Tested-by: NRichard Ruigrok <rruigrok@codeaurora.org>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Reviewed-by: NJeffrey Hugo <jhugo@codeaurora.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-efi@vger.kernel.org
      Link: http://lkml.kernel.org/r/20170404160245.27812-4-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      138728dd
  18. 07 2月, 2017 1 次提交
  19. 01 2月, 2017 1 次提交
  20. 13 11月, 2016 1 次提交
  21. 28 4月, 2016 3 次提交
  22. 24 2月, 2016 1 次提交
  23. 22 2月, 2016 1 次提交
  24. 14 12月, 2015 1 次提交
  25. 01 10月, 2015 1 次提交
    • A
      arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions · 0ce3cc00
      Ard Biesheuvel 提交于
      The new Properties Table feature introduced in UEFIv2.5 may
      split memory regions that cover PE/COFF memory images into
      separate code and data regions. Since these regions only differ
      in the type (runtime code vs runtime data) and the permission
      bits, but not in the memory type attributes (UC/WC/WT/WB), the
      spec does not require them to be aligned to 64 KB.
      
      Since the relative offset of PE/COFF .text and .data segments
      cannot be changed on the fly, this means that we can no longer
      pad out those regions to be mappable using 64 KB pages.
      Unfortunately, there is no annotation in the UEFI memory map
      that identifies data regions that were split off from a code
      region, so we must apply this logic to all adjacent runtime
      regions whose attributes only differ in the permission bits.
      
      So instead of rounding each memory region to 64 KB alignment at
      both ends, only round down regions that are not directly
      preceded by another runtime region with the same type
      attributes. Since the UEFI spec does not mandate that the memory
      map be sorted, this means we also need to sort it first.
      
      Note that this change will result in all EFI_MEMORY_RUNTIME
      regions whose start addresses are not aligned to the OS page
      size to be mapped with executable permissions (i.e., on kernels
      compiled with 64 KB pages). However, since these mappings are
      only active during the time that UEFI Runtime Services are being
      invoked, the window for abuse is rather small.
      Tested-by: NMark Salter <msalter@redhat.com>
      Tested-by: Mark Rutland <mark.rutland@arm.com> [UEFI 2.4 only]
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
      Reviewed-by: NMark Salter <msalter@redhat.com>
      Reviewed-by: NMark Rutland <mark.rutland@arm.com>
      Cc: <stable@vger.kernel.org> # v4.0+
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Leif Lindholm <leif.lindholm@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: linux-kernel@vger.kernel.org
      Link: http://lkml.kernel.org/r/1443218539-7610-3-git-send-email-matt@codeblueprint.co.ukSigned-off-by: NIngo Molnar <mingo@kernel.org>
      0ce3cc00
  26. 01 4月, 2015 1 次提交
  27. 16 1月, 2015 1 次提交
    • A
      arm64/efi: efistub: Apply __init annotation · ddeeefe2
      Ard Biesheuvel 提交于
      This ensures all stub component are freed when the kernel proper is
      done booting, by prefixing the names of all ELF sections that have
      the SHF_ALLOC attribute with ".init". This approach ensures that even
      implicitly emitted allocated data (like initializer values and string
      literals) are covered.
      
      At the same time, remove some __init annotations in the stub that have
      now become redundant, and add the __init annotation to handle_kernel_image
      which will now trigger a section mismatch warning without it.
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
      ddeeefe2
  28. 13 1月, 2015 1 次提交
    • A
      arm64/efi: move SetVirtualAddressMap() to UEFI stub · f3cdfd23
      Ard Biesheuvel 提交于
      In order to support kexec, the kernel needs to be able to deal with the
      state of the UEFI firmware after SetVirtualAddressMap() has been called.
      To avoid having separate code paths for non-kexec and kexec, let's move
      the call to SetVirtualAddressMap() to the stub: this will guarantee us
      that it will only be called once (since the stub is not executed during
      kexec), and ensures that the UEFI state is identical between kexec and
      normal boot.
      
      This implies that the layout of the virtual mapping needs to be created
      by the stub as well. All regions are rounded up to a naturally aligned
      multiple of 64 KB (for compatibility with 64k pages kernels) and recorded
      in the UEFI memory map. The kernel proper reads those values and installs
      the mappings in a dedicated set of page tables that are swapped in during
      UEFI Runtime Services calls.
      Acked-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Acked-by: NMatt Fleming <matt.fleming@intel.com>
      Tested-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      f3cdfd23
  29. 05 11月, 2014 1 次提交
    • M
      efi: efi-stub: notify on DTB absence · 0bcaa904
      Mark Rutland 提交于
      In the absence of a DTB configuration table, the EFI stub will happily
      continue attempting to boot a kernel, despite the fact that this kernel
      may not function without a description of the hardware. In this case, as
      with a typo'd "dtb=" option (e.g. "dbt=") or many other possible
      failures, the only output seen by the user will be the rather terse
      output from the EFI stub:
      
      EFI stub: Booting Linux Kernel...
      
      To aid those attempting to debug such failures, this patch adds a notice
      when no DTB is found, making the output more helpful:
      
      EFI stub: Booting Linux Kernel...
      EFI stub: Generating empty DTB
      
      Additionally, a positive acknowledgement is added when a user-specified
      DTB is in use:
      
      EFI stub: Booting Linux Kernel...
      EFI stub: Using DTB from command line
      
      Similarly, a positive acknowledgement is added when a DTB from a
      configuration table is in use:
      
      EFI stub: Booting Linux Kernel...
      EFI stub: Using DTB from configuration table
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Acked-by: NLeif Lindholm <leif.lindholm@linaro.org>
      Acked-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: NRoy Franz <roy.franz@linaro.org>
      Acked-by: NMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      0bcaa904