Nice fix.

ok yasuoka

On Sat, 23 Apr 2016 15:55:21 +0200 (CEST)
Mark Kettenis <[email protected]> wrote:
>> Date: Sat, 23 Apr 2016 08:25:22 -0400
>> From: Kenneth Westerback <[email protected]>
>> 
>> > 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