Hi Simon, On Wed, Jul 22, 2015 at 11:49 PM, Simon Glass <s...@chromium.org> wrote: > The EFI stub can pass a table to U-Boot with information about the memory map > Potentially other things will follow. Add a way to access this table. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- >
Reviewed-by: Bin Meng <bmeng...@gmail.com> But please see nits below. > lib/efi/Makefile | 1 + > lib/efi/efi_info.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 48 insertions(+) > create mode 100644 lib/efi/efi_info.c > > diff --git a/lib/efi/Makefile b/lib/efi/Makefile > index ba2824e..84bc5e3 100644 > --- a/lib/efi/Makefile > +++ b/lib/efi/Makefile > @@ -5,6 +5,7 @@ > # > > obj-$(CONFIG_ARCH_EFI) += efi_app.o efi.o > +obj-$(CONFIG_EFI_STUB) += efi_info.o > > CFLAGS_REMOVE_efi_stub.o := -mregparm=3 \ > $(if $(CONFIG_EFI_STUB_64BIT),-march=i386 -m32) > diff --git a/lib/efi/efi_info.c b/lib/efi/efi_info.c > new file mode 100644 > index 0000000..0cd9a7e > --- /dev/null > +++ b/lib/efi/efi_info.c > @@ -0,0 +1,47 @@ > +/* > + * Copyright (c) 2015 Google, Inc > + * > + * SPDX-License-Identifier: GPL-2.0+ > + * > + * Access to the EFI information table > + */ > + > +#include <common.h> > +#include <efi.h> > +#include <errno.h> > +#include <mapmem.h> > + > +int efi_info_get(enum efi_entry_t type, void **datap, int *sizep) > +{ > + struct efi_entry_hdr *entry; > + struct efi_info_hdr *info; > + int ret; > + > + if (!gd->arch.table) > + return -ENODATA; > + > + info = map_sysmem(gd->arch.table, 0); Is map_sysmem() necessary? I think it only matters for sandbox. If not, please remove. > + if (info->version != EFI_TABLE_VERSION) { > + ret = -EPROTONOSUPPORT; > + goto err; > + } > + > + entry = (struct efi_entry_hdr *)((ulong)info + info->hdr_size); > + while (entry->type != EFIET_END) { > + if (entry->type == type) { > + if (entry->addr) > + *datap = map_sysmem(entry->addr, entry->size); > + else > + *datap = entry + 1; > + *sizep = entry->size; > + return 0; > + } > + entry = (struct efi_entry_hdr *)((ulong)entry + entry->link); > + } > + > + ret = -ENOENT; > +err: > + unmap_sysmem(info); > + > + return ret; > +} > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot