12 Apr, 2019

2 commits


10 Apr, 2019

4 commits

  • Add required Kconfig symbols, Makefile bits and macro fixes in a
    few places to support LZO and DT compression in U-Boot. This can
    save a lot of space with multi-DTB fitImages.

    Signed-off-by: Marek Vasut
    Cc: Nobuhiro Iwamatsu
    Cc: Simon Glass
    Cc: Tom Rini

    Signed-off-by: Marek Vasut

    Marek Vasut
     
  • Allow enabling both LZO and GZIP DT compression in SPL and fix a
    bug where if the GZIP decompression failed, the LZO decompression
    would not even be attempted.

    Signed-off-by: Marek Vasut
    Cc: Nobuhiro Iwamatsu
    Cc: Simon Glass
    Cc: Tom Rini

    Marek Vasut
     
  • Split fdtdec_setup_memory_banksize() into fdtdec_setup_memory_banksize_fdt(),
    which allows the caller to pass custom blob into the function and the
    original fdtdec_setup_memory_banksize(), which uses the gd->fdt_blob. This
    is useful when configuring the DRAM properties from a FDT blob fragment
    passed in by the firmware.

    Signed-off-by: Marek Vasut
    Cc: Nobuhiro Iwamatsu
    Cc: Simon Glass
    Cc: Tom Rini
    Reviewed-by: Simon Glass

    Marek Vasut
     
  • Split fdtdec_setup_mem_size_base() into fdtdec_setup_mem_size_base_fdt(),
    which allows the caller to pass custom blob into the function and the
    original fdtdec_setup_mem_size_base(), which uses the gd->fdt_blob. This
    is useful when configuring the DRAM properties from a FDT blob fragment
    passed in by the firmware.

    Signed-off-by: Marek Vasut
    Cc: Nobuhiro Iwamatsu
    Cc: Simon Glass
    Cc: Tom Rini
    Reviewed-by: Simon Glass

    Marek Vasut
     

07 Apr, 2019

16 commits

  • In the extended text input protocol CTRL-A - CTRL-Z have to be signaled as
    Unicode characters a-z or A-Z depending on the shift state and not as 0x01
    to 0x1a.

    Update Python unit test.

    This patch is required for using the EFI shell `edit` command.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • EFI shell command edit uses the SetInfo() methods to unset the read only
    attribute of the file to be edited. So let efi_file_setinfo() return
    success in this case.

    Return an error if the function is called for to rename or resize a file
    as we do not support this yet.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • The EFI shell expects that after opening a file with EFI_FILE_MODE_CREATE
    GetInfo() succeeds. Up to now we do not actually create the file when
    method Open() of the EFI_FILE_PROTOCOL is called.

    If method Open() of the EFI_FILE_PROTOCOL is called with
    EFI_FILE_MODE_CREATE and the file does not yet exist, call fs_write() with
    a buffer size of zero to actually create the file.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • For debugging it is helpful to know the address of the file handle created
    by the Open() method of the EFI file protocol. So let's write it with
    EFI_PRINT().

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • Those two functions will be used later to re-implement do_bootefi_exec().

    Signed-off-by: AKASHI Takahiro
    Reviewed-by: Heinrich Schuchardt
    Signed-off-by: Heinrich Schuchardt

    AKASHI Takahiro
     
  • To meet UEFI spec v2.7a section 9.2, we should add
    EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL to image handle,
    instead of EFI_DEVICE_PATH_PROTOCOL.

    Signed-off-by: AKASHI Takahiro
    Reviewed-by: Heinrich Schuchardt

    AKASHI Takahiro
     
  • Since TianoCore EDK2 commit d65f2cea36d1 ("ShellPkg/CommandLib: Locate
    proper UnicodeCollation instance") in edk2 the UEFI Shell crashes if EFI
    variable PlatformLang is not defined.

    As this variable is anyway prescribed in the UEFI 2.7 spec let's define it
    to L"en-US". Use the same value for PlatformLangCodes that defines the list
    of all supported languages.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • For debug messages inside EFI API functions we should use the EFI_PRINT
    macro which gives us well aligned output like:

    EFI: Entry efi_allocate_pool_ext(4, 14, 000000007edd7718)
    EFI: efi_add_memory_map: 0x7dcfa000 0x1 4 yes
    EFI: Exit: efi_allocate_pool_ext: 0

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • For debug messages inside EFI API functions we should use the EFI_PRINT
    macro which gives us well aligned output like:

    EFI: Entry efi_get_variable("PlatformLang" ...)
    EFI: get 'efi_8be4df61-93ca-11d2-aa0d-00e098032b8c_PlatformLang'
    EFI: Exit: efi_get_variable: 14

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • Add parameter checks in the StartImage() and Exit() boottime services:
    - check that the image handle is valid and has the loaded image protocol
    installed
    - in StartImage() record the current image
    - in Exit() check that the image is the current image

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • To avoid forward declarations move efi_start_image() and efi_exit() down.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • Use a checksum to validate that efi_free_pool() is only called for memory
    allocated by efi_allocated_pool().

    Add a plausibility check to efi_free_pages() checking that the address
    passed is page aligned.

    Update related function comments to match Sphinx style.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • In efi_selftest_start_image_exit.c test the image_base and image_size are
    correctly set in the loaded image protocol.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • Currently, image's image_base points to an address where the image was
    temporarily uploaded for further loading. Since efi_loader relocates
    the image to final destination, image_base and image_size should reflect
    that.

    This bug was detected in UEFI SCT, "Loaded Image Protocol Test - test 2,"
    which shows that 'Unload' function doesn't fit into a range suggested by
    image_base and image_size.

    TestCase/UEFI/EFI/Protocol/LoadedImage/BlackBoxTest/
    LoadedImageBBTestMain.c:1002

    Changes in this patch also includes:
    * reverts a patch, "efi_loader: save image relocation address
    and size" since newly added fields are no longer needed.
    * copy PE headers as well since those information will be needed
    for module loading, in particular, at gurb.
    (This bug was reported by Heinrich.)

    Reported-by: Heinrich Schuchardt
    Signed-off-by: AKASHI Takahiro

    Rebase patch.
    Remove unused fields from struct efi_loaded_image_obj.

    Reviewed-by: Heinrich Schuchardt

    AKASHI Takahiro
     
  • See UEFI v2.7, section 3.1.2 for details of the specification.

    With efidebug command, you can run any EFI boot option as follows:
    => efi boot add 1 SHELL ...
    => efi boot add 2 HELLO ...
    => efi boot order 1 2
    => efi bootmgr
    (starting SHELL ...)

    => efi boot next 2
    => efi bootmgr
    (starting HELLO ...)
    => env print -e

    BootCurrent: {boot,run}(blob)
    00000000: 02 00 ..
    BootOrder: {boot,run}(blob)
    00000000: 01 00 02 00 ....

    Signed-off-by: AKASHI Takahiro
    Reviewed-by: Heinrich Schuchardt

    AKASHI Takahiro
     
  • Commit 0e18f584de59 ("efi_loader: LoadImage: always allocate new pages")
    ensured that whether we load an image from file or from memory we end up
    with the same number of newly allocated buffers. But essentially we ended
    up with one buffer too many in both cases:

    efi_load_pe() copies and rebases the UEFI image.
    We do not need the buffer with the file contents afterwards.

    Fixes: 0e18f584de59 ("efi_loader: LoadImage: always allocate new pages")
    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     

03 Apr, 2019

1 commit


29 Mar, 2019

2 commits


28 Mar, 2019

1 commit


27 Mar, 2019

1 commit


25 Mar, 2019

1 commit


21 Mar, 2019

6 commits


15 Mar, 2019

1 commit

  • Since commit f51a226436a87 ("efi_loader: provide freestanding library") in
    parallel builds errors

    lib/efi_selftest/../efi_loader/efi_freestanding.o:
    file not recognized: File truncated

    occur. Obviously make cannot correctly sequence parallel builds with a
    dependency like ../efi_loader/efi_freestanding.o.

    Fixes: f51a226436a87 ("efi_loader: provide freestanding library")
    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     

11 Mar, 2019

1 commit

  • Function term_read_reply tries to read from the serial console until
    the end_char was read. This can hang forever if we are, for some reason,
    not able to read the full response (e.g. serial buffer too small,
    frame error). This patch moves the timeout detection into
    term_read_reply() to assure we will make progress.

    Fixes: 6bb591f704 ("efi_loader: query serial console size reliably")
    Signed-off-by: Matthias Brugger

    Throw missing error when an incomplete reply for the cursor position is
    received.

    Change type of argument of term_get_char() *s32. This renders the function
    reusable in efi_cin_read_key().

    Reviewed-by: Heinrich Schuchardt

    Matthias Brugger
     

03 Mar, 2019

3 commits

  • When package types are not supported by our implementation of the HII
    database protocol supported error messages are displayed.

    Essentially the output is only needed for debugging. By using EFI_PRINT()
    the messages are only written for in debug mode and with correct
    indentation.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     
  • In new_package_list() we call new_packagelist() to create a new package
    list. Next we try to add the packages which fails for form packages. Due
    to this error we call free_packagelist(). Now in free_packagelist()
    list_del() is called for an uninitialized field hii->link. This leads to
    changing random memory addresses.

    To solve the problem move the initialization of hii->link to
    new_packagelist().

    Signed-off-by: Heinrich Schuchardt
    Reviewed-by: AKASHI Takahiro

    Heinrich Schuchardt
     
  • In the `efidebug boot add` command we do not want an unsolicited leading
    backslash added to the file name.

    There is no good reason to mark a loaded file with a backslash as absolute.
    Anyway when reading files the file name will be interpreted as relative to
    root directory of the device.

    So let's get rid of this backslash.

    Signed-off-by: Heinrich Schuchardt

    Heinrich Schuchardt
     

25 Feb, 2019

1 commit