On Mon, Jan 05, 2015 at 01:51:13PM +0000, Matt Fleming wrote:
> On Thu, 11 Dec, at 03:22:04PM, Peter Jones wrote:
> > Add sysfs files for EFI System Resource Table under
> > /sys/firmware/efi/esrt and for each EFI System Resource Entry under
> > entries/ as a subdir.
> > 
> > v2 with suggestions from bpetkov.
> > v3 with me remembering checkpatch.
> > v4 without me typing struct decls completely wrong somehow.
> > 
> > Signed-off-by: Peter Jones <[email protected]>
> > ---
> >  drivers/firmware/efi/Makefile |   2 +-
> >  drivers/firmware/efi/efi.c    |  46 ++++-
> >  drivers/firmware/efi/esrt.c   | 393 
> > ++++++++++++++++++++++++++++++++++++++++++
> >  include/linux/efi.h           |   6 +
> >  4 files changed, 445 insertions(+), 2 deletions(-)
> >  create mode 100644 drivers/firmware/efi/esrt.c
>  
> When this patch moves out of RFC I'd ideally like to see a much more
> expansive commit message.
> 
> Why do we want this functionality, what's it going to be used for? What
> does the patch actaully do?  Where can we go looking for more
> information about ERST? You'll probably end up copying and pasting
> things from the top of erst.c, but that's fine.

Yeah, fair enough.

> 
> > @@ -220,6 +223,46 @@ err_put:
> >  
> >  subsys_initcall(efisubsys_init);
> >  
> > +/*
> > + * Given a physicall address, determine if it exists within an EFI Memory 
> > Map
> > + * entry, and if so, how much of that map exists at a higher address.  That
> > + * is, if this is the address of something in an EFI map, what's the 
> > highest
> > + * address at which it's likely to end.
> > + */
> > +u64 efi_mem_max_reasonable_size(u64 phys_addr)
> 
> Confused. I think I know what you're saying here, but I'm also doing a
> fair bit of a guesswork.
> 
> Instead, how about,
> 
> extern struct efi_memory_desc_t *efi_mem_desc_lookup(u64 phys_addr);
> 
> /*
>  * Return the end physical address of a EFI memory map region
>  */
> static inline u64 efi_mem_desc_end(struct efi_memory_desc_t *md)
> {
>       u64 size = md->num_pages << EFI_PAGE_SHIFT;
> 
>       return md->phys_addr + size;
> }
> 
> The caller can then do,
> 
>       md = efi_mem_desc_lookup(phys_addr)
>       if (!md)
>               return -1;
> 
>       bytes = efi_mem_desc_end(md) - phys_addr;
>       ioremap(phys_addr, bytes);
> 
> I think leaving this "remaining bytes" logic in the ioremap() caller is
> the most robust solution because it's a quirky thing to want to do,
> whereas the other functions (efi_mem_desc_lookup() and
> efi_mem_desc_end()) are more general.
> 
> Thoughts?

I can be okay with this.

> 
> [...]
> 
> > +static inline int esrt_table_exists(void)
> > +{
> > +   if (!efi_enabled(EFI_CONFIG_TABLES))
> > +           return 0;
> > +   if (efi.esrt == EFI_INVALID_TABLE_ADDR)
> > +           return 0;
> > +   return 1;
> > +}
> 
> Minor detail: this should be using 'bool'.

Thanks.  I'll send a new patch soon.

-- 
        Peter
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to