mbox series

[U-Boot,00/18] x86: efi: Fixes and enhancements to application and payload support

Message ID 1528637118-32739-1-git-send-email-bmeng.cn@gmail.com
Headers show
Series x86: efi: Fixes and enhancements to application and payload support | expand

Message

Bin Meng June 10, 2018, 1:24 p.m. UTC
Unfortunately the EFI x86 application and payload support have been
broken for quite a while. This series addresses various bug fixes,
plus several enhancements like toolchain compatibility (eg: kernel.org
i386-linux-gcc), introduction of generic EFI payload which can run
on any x86 board, and a EFI framebuffer driver for the payload.

This series is available at u-boot-x86/efi-working for testing.


Bin Meng (16):
  x86: doc: Fix reference to EFI doc in U-Boot
  x86: Conditionally build the pinctrl_ich6 driver
  x86: efi: app: Fix broken EFI application
  x86: efi: payload: Enforce toolchain to generate 64-bit EFI payload
    stub codes
  efi: Fix efi_uintn_t for 64-bit EFI payload
  x86: efi: Refactor the directory of EFI app and payload support
  x86: efi: payload: Add arch_cpu_init()
  x86: efi: payload: Minor clean up on error message output
  x86: Add generic EFI payload support
  x86: Drop QEMU-specific EFI payload support
  x86: baytrail: Drop EFI-specific test logics
  efi: stub: Pass EFI GOP information to U-Boot payload
  dm: video: Add an EFI framebuffer driver
  x86: efi: payload: Add EFI framebuffer driver support
  x86: Rename efi-x86 target to efi-x86_app
  x86: efi: app: Display correct CPU info during boot

Christian Gmeiner (2):
  dm: pci: Make ranges dt property optional
  dm: pci: Use a 1:1 mapping for bus <-> phy addresses

 arch/x86/Kconfig                                   |   9 +-
 arch/x86/cpu/Makefile                              |   5 +-
 arch/x86/cpu/baytrail/Kconfig                      |   7 +-
 arch/x86/cpu/baytrail/valleyview.c                 |   3 -
 arch/x86/{lib => cpu}/efi/Kconfig                  |   0
 arch/x86/cpu/efi/Makefile                          |   9 +-
 arch/x86/cpu/efi/{efi.c => app.c}                  |   2 +-
 arch/x86/{lib => cpu}/efi/car.S                    |   0
 arch/x86/{lib/efi/efi.c => cpu/efi/payload.c}      |  11 +-
 arch/x86/cpu/intel_common/Makefile                 |   2 +-
 arch/x86/cpu/ivybridge/Kconfig                     |   1 +
 arch/x86/cpu/qemu/Makefile                         |   2 -
 arch/x86/cpu/qemu/qemu.c                           |   4 -
 arch/x86/dts/Makefile                              |   3 +-
 arch/x86/dts/{efi.dts => efi-x86_app.dts}          |   4 +-
 arch/x86/dts/efi-x86_payload.dts                   |  40 ++++++
 arch/x86/lib/Makefile                              |   7 +-
 arch/x86/lib/efi/Makefile                          |   7 -
 board/advantech/som-db5800-som-6867/Kconfig        |   5 +-
 board/congatec/conga-qeval20-qa3-e3845/Kconfig     |   5 +-
 board/dfi/dfi-bt700/Kconfig                        |   5 +-
 board/efi/Kconfig                                  |  15 ++-
 board/efi/{efi-x86 => efi-x86_app}/Kconfig         |   6 +-
 board/efi/{efi-x86 => efi-x86_app}/MAINTAINERS     |   0
 board/efi/{efi-x86 => efi-x86_app}/Makefile        |   2 +-
 board/efi/{efi-x86/efi.c => efi-x86_app/app.c}     |   0
 board/efi/efi-x86_payload/Kconfig                  |  39 ++++++
 board/efi/efi-x86_payload/MAINTAINERS              |   7 +
 board/efi/efi-x86_payload/Makefile                 |   5 +
 board/efi/efi-x86_payload/start.S                  |   8 ++
 board/emulation/qemu-x86/Kconfig                   |   6 +-
 board/intel/minnowmax/Kconfig                      |   5 +-
 .../{efi-x86_defconfig => efi-x86_app_defconfig}   |  12 +-
 ...oad32_defconfig => efi-x86_payload32_defconfig} |  24 +---
 ...oad64_defconfig => efi-x86_payload64_defconfig} |  24 +---
 doc/README.x86                                     |   2 +-
 drivers/pci/pci-uclass.c                           |  33 +++--
 drivers/video/Kconfig                              |   9 ++
 drivers/video/Makefile                             |   1 +
 drivers/video/efi.c                                | 146 +++++++++++++++++++++
 include/configs/{efi-x86.h => efi-x86_app.h}       |   0
 include/configs/efi-x86_payload.h                  |  32 +++++
 include/efi.h                                      |  35 +++++
 include/efi_api.h                                  |   4 +
 lib/efi/Makefile                                   |   6 +-
 lib/efi/efi_stub.c                                 |  23 +++-
 46 files changed, 454 insertions(+), 121 deletions(-)
 rename arch/x86/{lib => cpu}/efi/Kconfig (100%)
 rename arch/x86/cpu/efi/{efi.c => app.c} (92%)
 rename arch/x86/{lib => cpu}/efi/car.S (100%)
 rename arch/x86/{lib/efi/efi.c => cpu/efi/payload.c} (97%)
 rename arch/x86/dts/{efi.dts => efi-x86_app.dts} (82%)
 create mode 100644 arch/x86/dts/efi-x86_payload.dts
 delete mode 100644 arch/x86/lib/efi/Makefile
 rename board/efi/{efi-x86 => efi-x86_app}/Kconfig (64%)
 rename board/efi/{efi-x86 => efi-x86_app}/MAINTAINERS (100%)
 rename board/efi/{efi-x86 => efi-x86_app}/Makefile (82%)
 rename board/efi/{efi-x86/efi.c => efi-x86_app/app.c} (100%)
 create mode 100644 board/efi/efi-x86_payload/Kconfig
 create mode 100644 board/efi/efi-x86_payload/MAINTAINERS
 create mode 100644 board/efi/efi-x86_payload/Makefile
 create mode 100644 board/efi/efi-x86_payload/start.S
 rename configs/{efi-x86_defconfig => efi-x86_app_defconfig} (83%)
 rename configs/{qemu-x86_efi_payload32_defconfig => efi-x86_payload32_defconfig} (61%)
 rename configs/{qemu-x86_efi_payload64_defconfig => efi-x86_payload64_defconfig} (62%)
 create mode 100644 drivers/video/efi.c
 rename include/configs/{efi-x86.h => efi-x86_app.h} (100%)
 create mode 100644 include/configs/efi-x86_payload.h

Comments

Simon Glass June 11, 2018, 2:53 p.m. UTC | #1
Hi Bin,

On 10 June 2018 at 05:24, Bin Meng <bmeng.cn@gmail.com> wrote:
> Unfortunately the EFI x86 application and payload support have been
> broken for quite a while. This series addresses various bug fixes,
> plus several enhancements like toolchain compatibility (eg: kernel.org
> i386-linux-gcc), introduction of generic EFI payload which can run
> on any x86 board, and a EFI framebuffer driver for the payload.
>
> This series is available at u-boot-x86/efi-working for testing.

I wonder if it is possible to put qemu testing of the EFI stuff into travis?

Also, are the problems only with the i386 compiler, or are things
truly broken everywhere?

Regards,
Simon
Bin Meng June 11, 2018, 3:53 p.m. UTC | #2
Hi Simon,

On Mon, Jun 11, 2018 at 10:53 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 10 June 2018 at 05:24, Bin Meng <bmeng.cn@gmail.com> wrote:
>> Unfortunately the EFI x86 application and payload support have been
>> broken for quite a while. This series addresses various bug fixes,
>> plus several enhancements like toolchain compatibility (eg: kernel.org
>> i386-linux-gcc), introduction of generic EFI payload which can run
>> on any x86 board, and a EFI framebuffer driver for the payload.
>>
>> This series is available at u-boot-x86/efi-working for testing.
>
> I wonder if it is possible to put qemu testing of the EFI stuff into travis?

I will take a look.

>
> Also, are the problems only with the i386 compiler, or are things
> truly broken everywhere?
>

Current mainline status of the EFI stuff is:

1. EFI application does not boot
2. EFI 32-bit payload boots fine
3. EFI 64-bit payload does not boot
4. i386-linux-gcc compiler does not build EFI 64-bit payload, but can
build 32-bit payload and application
5. x86_64-linux-gcc compiler can build everything

Regards,
Bin
Simon Glass June 11, 2018, 7:38 p.m. UTC | #3
Hi Bin,

On 11 June 2018 at 09:53, Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Hi Simon,
>
> On Mon, Jun 11, 2018 at 10:53 PM, Simon Glass <sjg@chromium.org> wrote:
> > Hi Bin,
> >
> > On 10 June 2018 at 05:24, Bin Meng <bmeng.cn@gmail.com> wrote:
> >> Unfortunately the EFI x86 application and payload support have been
> >> broken for quite a while. This series addresses various bug fixes,
> >> plus several enhancements like toolchain compatibility (eg: kernel.org
> >> i386-linux-gcc), introduction of generic EFI payload which can run
> >> on any x86 board, and a EFI framebuffer driver for the payload.
> >>
> >> This series is available at u-boot-x86/efi-working for testing.
> >
> > I wonder if it is possible to put qemu testing of the EFI stuff into travis?
>
> I will take a look.
>
> >
> > Also, are the problems only with the i386 compiler, or are things
> > truly broken everywhere?
> >
>
> Current mainline status of the EFI stuff is:
>
> 1. EFI application does not boot
> 2. EFI 32-bit payload boots fine
> 3. EFI 64-bit payload does not boot
> 4. i386-linux-gcc compiler does not build EFI 64-bit payload, but can
> build 32-bit payload and application
> 5. x86_64-linux-gcc compiler can build everything

OK great, thank you.

Re (1) it seems a bit tricky since as you say it is a shared library.
I suppose we could get a list of unresolved symbols and check them
against a whitelist. Or statically link the efi app just for testing
purposes.

Regards,
Simon