[U-Boot] [PATCH v2 1/3] efi: Fix truncation of constant value

Eugeniu Rosca erosca at de.adit-jv.com
Mon Jul 16 06:12:03 UTC 2018


Hi Heinrich,

Thanks for your review comments. See my reply below.

On Mon, Jul 16, 2018 at 07:52:20AM +0200, Heinrich Schuchardt wrote:
[--snip--]
> > diff --git a/include/efi.h b/include/efi.h
> > index 0fe15e65c06c..eb2a569fe010 100644
> > --- a/include/efi.h
> > +++ b/include/efi.h
> > @@ -162,20 +162,16 @@ enum efi_mem_type {
> >  };
> >  
> >  /* Attribute values */
> > -enum {
> > -	EFI_MEMORY_UC_SHIFT	= 0,	/* uncached */
> > -	EFI_MEMORY_WC_SHIFT	= 1,	/* write-coalescing */
> > -	EFI_MEMORY_WT_SHIFT	= 2,	/* write-through */
> > -	EFI_MEMORY_WB_SHIFT	= 3,	/* write-back */
> > -	EFI_MEMORY_UCE_SHIFT	= 4,	/* uncached, exported */
> > -	EFI_MEMORY_WP_SHIFT	= 12,	/* write-protect */
> > -	EFI_MEMORY_RP_SHIFT	= 13,	/* read-protect */
> > -	EFI_MEMORY_XP_SHIFT	= 14,	/* execute-protect */
> > -	EFI_MEMORY_RUNTIME_SHIFT = 63,	/* range requires runtime mapping */
> > -
> > -	EFI_MEMORY_RUNTIME = 1ULL << EFI_MEMORY_RUNTIME_SHIFT,
> > -	EFI_MEM_DESC_VERSION	= 1,
> > -};
> > +#define EFI_MEMORY_UC		((u64)0x0000000000000001ULL)	/* uncached */
> 
> Unsigned long long int (ULL) is at least 64bit wide and unsigned (cf.
> https://gcc.gnu.org/onlinedocs/gcc/Long-Long.html). Why do you introduce
> the (u64) conversion?

Because this is how it appears in Linux kernel:

$ git blame ./include/linux/efi.h | grep 'define EFI_MEMORY_.*u64'
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   90) #define EFI_MEMORY_UC		((u64)0x0000000000000001ULL)	/* uncached */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   91) #define EFI_MEMORY_WC		((u64)0x0000000000000002ULL)	/* write-coalescing */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   92) #define EFI_MEMORY_WT		((u64)0x0000000000000004ULL)	/* write-through */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   93) #define EFI_MEMORY_WB		((u64)0x0000000000000008ULL)	/* write-back */
9c97e0bdd4b4a (Laszlo Ersek        2014-09-03 13:32:19 +0200   94) #define EFI_MEMORY_UCE		((u64)0x0000000000000010ULL)	/* uncached, exported */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   95) #define EFI_MEMORY_WP		((u64)0x0000000000001000ULL)	/* write-protect */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   96) #define EFI_MEMORY_RP		((u64)0x0000000000002000ULL)	/* read-protect */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700   97) #define EFI_MEMORY_XP		((u64)0x0000000000004000ULL)	/* execute-protect */
c016ca08f89c6 (Robert Elliott      2016-02-01 22:07:06 +0000   98) #define EFI_MEMORY_NV		((u64)0x0000000000008000ULL)	/* non-volatile */
87db73aebf555 (Ard Biesheuvel      2015-08-07 09:36:54 +0100  101) #define EFI_MEMORY_RO		((u64)0x0000000000020000ULL)	/* read-only */
^1da177e4c3f4 (Linus Torvalds      2005-04-16 15:20:36 -0700  102) #define EFI_MEMORY_RUNTIME	((u64)0x8000000000000000ULL)	/* range requires runtime mapping */

Unless we see a potential issue with that (and I don't see), IMO we
should stick to kernel sources as much as possible, since this makes
integration/re-sync process easier.

> 
> Otherwise
> 
> Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> 
> > +#define EFI_MEMORY_WC		((u64)0x0000000000000002ULL)	/* write-coalescing */
> > +#define EFI_MEMORY_WT		((u64)0x0000000000000004ULL)	/* write-through */
> > +#define EFI_MEMORY_WB		((u64)0x0000000000000008ULL)	/* write-back */
> > +#define EFI_MEMORY_UCE		((u64)0x0000000000000010ULL)	/* uncached, exported */
> > +#define EFI_MEMORY_WP		((u64)0x0000000000001000ULL)	/* write-protect */
> > +#define EFI_MEMORY_RP		((u64)0x0000000000002000ULL)	/* read-protect */
> > +#define EFI_MEMORY_XP		((u64)0x0000000000004000ULL)	/* execute-protect */
> > +#define EFI_MEMORY_RUNTIME	((u64)0x8000000000000000ULL)	/* range requires runtime mapping */
> > +#define EFI_MEM_DESC_VERSION	1
> >  
> >  #define EFI_PAGE_SHIFT		12
> >  #define EFI_PAGE_SIZE		(1UL << EFI_PAGE_SHIFT)

Best regards,
Eugeniu.


More information about the U-Boot mailing list