> Date: Sat, 23 Apr 2016 08:25:22 -0400
> From: Kenneth Westerback <kwesterb...@gmail.com>
> 
> > And here is a possible fix.  Got the inspiration from the SYSLINUX
> > bootloader.  This forces alignment of the EFI-specific 64-bit types.
> > It leaves the normal int64_t/uint64_t alone, but we shouldn't use
> > those directly to define EFI data structures.
> >
> > John, can you confirm that this fixes the issue for you?
> >
> > Jonathan, Ken, provided that it does, ok?
> >
> >
> > Index: efi/include/i386/efibind.h
> > ===================================================================
> > RCS file: /home/cvs/src/sys/arch/amd64/stand/efi/include/i386/efibind.h,v
> > retrieving revision 1.2
> > diff -u -p -r1.2 efibind.h
> > --- efi/include/i386/efibind.h  11 Dec 2015 20:17:10 -0000      1.2
> > +++ efi/include/i386/efibind.h  23 Apr 2016 11:38:26 -0000
> > @@ -88,8 +88,8 @@ Revision History
> >  #ifndef ACPI_THREAD_ID         /* ACPI's definitions are fine, use those */
> >  #define ACPI_USE_SYSTEM_INTTYPES 1     /* Tell ACPI we've defined types */
> >
> > -typedef uint64_t   UINT64;
> > -typedef int64_t    INT64;
> > +typedef uint64_t   UINT64 __attribute__((__aligned__(8)));
> > +typedef int64_t    INT64 __attribute__((__aligned__(8)));
> >
> >  #ifndef _BASETSD_H_
> >      typedef uint32_t   UINT32;
> >
> 
> Your analysis is much more useful than mine was. :-). I was wondering
> how many other places might get bit by the mis-alignment, but this
> approach would seem to get them all in one fell swoop.
> 
> If this works it is ok with me. It would be good to get yasuoka@ ok too.

I can confirm it works here.  Just did an install on the eMMC of the
lenovo stick 300.  Got the same messages that John reported.  But
boots fine now after installing the BOOTIA32.EFI with my fix.

Reply via email to