Thank you for your report and test.  Next snapshot will include the fix.

On Mon, 5 Oct 2015 15:35:34 -0500
Brian Conway <bcon...@rcesoftware.com> wrote:
> (Re-adding misc@ for the thrilling conclusion.)
> 
> Success! It boots to installer without issue. EFI-enabled dmesg follows.
> 
> Thanks again for your work.
> 
> Brian
> 
> OpenBSD 5.8-current (RAMDISK_CD) #1254: Tue Sep 22 19:46:40 MDT 2015
>     dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/RAMDISK_CD
> real mem = 7979794432 (7610MB)
> avail mem = 7736233984 (7377MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xebe50 (48 entries)
> bios0: vendor American Megatrends Inc. version "V10.2" date 12/24/2014
> bios0: MSI MS-7865
> acpi0 at bios0: rev 2
> acpi0: tables DSDT FACP APIC FPDT MCFG HPET SSDT SSDT CRAT SSDT
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> cpu0 at mainbus0: apid 0 (boot processor)
> cpu0: AMD Athlon(tm) 5350 APU with Radeon(tm) R3, 2046.44 MHz
> cpu0: 
> FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,NXE,MMXX,FFXSR,PAGE1GB,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,TOPEXT,ITSC,BMI1
> cpu0: 32KB 64b/line 2-way I-cache, 32KB 64b/line 8-way D-cache, 2MB
> 64b/line 16-way L2 cache
> cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
> cpu0: DTLB 40 4KB entries fully associative, 8 4MB entries fully associative
> cpu0: apic clock running at 99MHz
> cpu0: mwait min=64, max=64, IBE
> cpu at mainbus0: not configured
> cpu at mainbus0: not configured
> cpu at mainbus0: not configured
> ioapic0 at mainbus0: apid 5 pa 0xfec00000, version 21, 24 pins
> ioapic1 at mainbus0: apid 6 pa 0xfec01000, version 21, 32 pins
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpiprt1 at acpi0: bus -1 (GPP0)
> acpiprt2 at acpi0: bus -1 (GPP3)
> acpiprt3 at acpi0: bus 1 (BR11)
> acpiprt4 at acpi0: bus -1 (GPP2)
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "AMD AMD64 16h Host" rev 0x00
> vendor "ATI", unknown product 0x9830 (class display subclass VGA, rev
> 0x00) at pci0 dev 1 function 0 not configured
> vendor "ATI", unknown product 0x9840 (class multimedia subclass
> hdaudio, rev 0x00) at pci0 dev 1 function 1 not configured
> pchb1 at pci0 dev 2 function 0 vendor "AMD", unknown product 0x1538 rev 0x00
> ppb0 at pci0 dev 2 function 1 "AMD AMD64 16h PCIE" rev 0x00: msi
> pci1 at ppb0 bus 1
> em0 at pci1 dev 0 function 0 "Intel 82574L" rev 0x00: msi, address
> 68:05:ca:24:f3:3e
> xhci0 at pci0 dev 16 function 0 vendor "AMD", unknown product 0x7814
> rev 0x01: msi
> usb0 at xhci0: USB revision 3.0
> uhub0 at usb0 "AMD xHCI root hub" rev 3.00/1.00 addr 1
> ahci0 at pci0 dev 17 function 0 "AMD Hudson-2 SATA" rev 0x40: msi, AHCI 1.3
> ahci0: port 0: 3.0Gb/s
> ahci0: port 1: 3.0Gb/s
> scsibus0 at ahci0: 32 targets
> sd0 at scsibus0 targ 0 lun 0: <ATA, Hitachi HDS72202, JKAO> SCSI3
> 0/direct fixed naa.5000cca221f7a107
> sd0: 1907729MB, 512 bytes/sector, 3907029168 sectors
> sd1 at scsibus0 targ 1 lun 0: <ATA, Hitachi HDS72202, JKAO> SCSI3
> 0/direct fixed naa.5000cca221f2c7aa
> sd1: 1907729MB, 512 bytes/sector, 3907029168 sectors
> ohci0 at pci0 dev 18 function 0 "AMD Hudson-2 USB" rev 0x39: apic 5
> int 18, version 1.0, legacy support
> ehci0 at pci0 dev 18 function 2 "AMD Hudson-2 USB2" rev 0x39: apic 5 int 17
> usb1 at ehci0: USB revision 2.0
> uhub1 at usb1 "AMD EHCI root hub" rev 2.00/1.00 addr 1
> ohci1 at pci0 dev 19 function 0 "AMD Hudson-2 USB" rev 0x39: apic 5
> int 18, version 1.0, legacy support
> ehci1 at pci0 dev 19 function 2 "AMD Hudson-2 USB2" rev 0x39: apic 5 int 17
> usb2 at ehci1: USB revision 2.0
> uhub2 at usb2 "AMD EHCI root hub" rev 2.00/1.00 addr 1
> "AMD Hudson-2 SMBus" rev 0x3a at pci0 dev 20 function 0 not configured
> "AMD Hudson-2 LPC" rev 0x11 at pci0 dev 20 function 3 not configured
> pchb2 at pci0 dev 24 function 0 "AMD AMD64 16h Link Cfg" rev 0x00
> pchb3 at pci0 dev 24 function 1 "AMD AMD64 16h Address Map" rev 0x00
> pchb4 at pci0 dev 24 function 2 "AMD AMD64 16h DRAM Cfg" rev 0x00
> pchb5 at pci0 dev 24 function 3 "AMD AMD64 16h Misc Cfg" rev 0x00
> pchb6 at pci0 dev 24 function 4 "AMD AMD64 16h CPU Power" rev 0x00
> pchb7 at pci0 dev 24 function 5 vendor "AMD", unknown product 0x1535 rev 0x00
> usb3 at ohci0: USB revision 1.0
> uhub3 at usb3 "AMD OHCI root hub" rev 1.00/1.00 addr 1
> usb4 at ohci1: USB revision 1.0
> uhub4 at usb4 "AMD OHCI root hub" rev 1.00/1.00 addr 1
> isa0 at mainbus0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com0: probed fifo depth: 15 bytes
> pckbc0 at isa0 port 0x60/5 irq 1 irq 12
> pckbd0 at pckbc0 (kbd slot)
> wskbd0 at pckbd0: console keyboard
> efifb0 at mainbus0
> wsdisplay0 at efifb0 mux 1: console (std, vt100 emulation), using wskbd0
> uhidev0 at uhub0 port 4 configuration 1 interface 0 "Microsoft Comfort
> Curve Keyboard 3000" rev 2.00/1.70 addr 2
> uhidev0: iclass 3/1
> ukbd0 at uhidev0
> wskbd1 at ukbd0 mux 1
> wskbd1: connecting to wsdisplay0
> uhidev1 at uhub0 port 4 configuration 1 interface 1 "Microsoft Comfort
> Curve Keyboard 3000" rev 2.00/1.70 addr 2
> uhidev1: iclass 3/0, 1 report id
> uhid at uhidev1 reportid 1 not configured
> umass0 at uhub2 port 2 configuration 1 interface 0 " Patriot Memory"
> rev 2.00/1.00 addr 2
> umass0: using SCSI over Bulk-Only
> scsibus1 at umass0: 2 targets, initiator 0
> sd2 at scsibus1 targ 1 lun 0: <, Patriot Memory, PMAP> SCSI2 0/direct
> removable serial.13fe3e002446EDB2A631
> sd2: 30544MB, 512 bytes/sector, 62554112 sectors
> softraid0 at root
> scsibus2 at softraid0: 256 targets
> sd3 at scsibus2 targ 1 lun 0: <OPENBSD, SR RAID 1, 005> SCSI2 0/direct fixed
> sd3: 1907724MB, 512 bytes/sector, 3907020272 sectors
> root on rd0a swap on rd0b dump on rd0b
> 
> On Sun, Oct 4, 2015 at 11:45 PM, YASUOKA Masahiko <yasu...@openbsd.org> wrote:
>> It seems I could fix the problem.
>>
>>   http://yasuoka.net/~yasuoka/BOOTX64.EFI
>>   (updated)
>>
>> This diff avoids conflicting address space kernel and UEFI OS loader.
>>
>> I'll commit this to OpenBSD repository soon, but please try if you
>> can.
>>
>> Index: sys//arch/amd64/include/loadfile_machdep.h
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/amd64/include/loadfile_machdep.h,v
>> retrieving revision 1.5
>> diff -u -p -r1.5 loadfile_machdep.h
>> --- sys//arch/amd64/include/loadfile_machdep.h  17 Jul 2015 20:44:38 -0000   
>>    1.5
>> +++ sys//arch/amd64/include/loadfile_machdep.h  5 Oct 2015 04:42:04 -0000
>> @@ -41,7 +41,13 @@
>>  #define LOAD_KERNEL            LOAD_ALL
>>  #define COUNT_KERNEL           COUNT_ALL
>>
>> +#ifdef EFIBOOT
>> +extern u_long                  efi_loadaddr;
>> +#define LOADADDR(a)            (((((u_long)(a)) + offset)&0xfffffff) + \
>> +                                   efi_loadaddr)
>> +#else
>>  #define LOADADDR(a)            ((((u_long)(a)) + offset)&0xfffffff)
>> +#endif
>>  #define ALIGNENTRY(a)          ((u_long)(a))
>>  #define READ(f, b, c)          read((f), (void *)LOADADDR(b), (c))
>>  #define BCOPY(s, d, c)         memcpy((void *)LOADADDR(d), (void *)(s), (c))
>> Index: sys//arch/amd64/stand/efiboot/efiboot.c
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/amd64/stand/efiboot/efiboot.c,v
>> retrieving revision 1.5
>> diff -u -p -r1.5 efiboot.c
>> --- sys//arch/amd64/stand/efiboot/efiboot.c     23 Sep 2015 03:29:26 -0000   
>>    1.5
>> +++ sys//arch/amd64/stand/efiboot/efiboot.c     5 Oct 2015 04:42:04 -0000
>> @@ -36,6 +36,8 @@
>>  #include "eficall.h"
>>  #include "run_i386.h"
>>
>> +#define        KERN_LOADSPACE_SIZE     (32 * 1024 * 1024)
>> +
>>  EFI_SYSTEM_TABLE       *ST;
>>  EFI_BOOT_SERVICES      *BS;
>>  EFI_RUNTIME_SERVICES   *RS;
>> @@ -46,6 +48,7 @@ UINTN                  heapsiz = 1 * 1024 * 1024;
>>  UINTN                   mmap_key;
>>  static EFI_GUID                 imgdp_guid = { 0xbc62157e, 0x3e33, 0x4fec,
>>                             { 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf 
>> }};
>> +u_long                  efi_loadaddr;
>>
>>  static void     efi_heap_init(void);
>>  static void     efi_memprobe_internal(void);
>> @@ -61,9 +64,10 @@ extern int bios_bootdev;
>>  EFI_STATUS
>>  efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
>>  {
>> -       extern char     *progname;
>> -       EFI_DEVICE_PATH *dp0 = NULL, *dp;
>> -       EFI_STATUS       status;
>> +       extern char             *progname;
>> +       EFI_DEVICE_PATH         *dp0 = NULL, *dp;
>> +       EFI_STATUS               status;
>> +       EFI_PHYSICAL_ADDRESS     stack;
>>
>>         ST = systab;
>>         BS = ST->BootServices;
>> @@ -101,8 +105,27 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TA
>>
>>         progname = "EFIBOOT";
>>
>> -       boot(bios_bootdev);
>> +       /*
>> +        * Move the stack before calling boot().  UEFI on some machines
>> +        * locate the stack on our kernel load address.
>> +        */
>> +       status = EFI_CALL(BS->AllocatePages, AllocateMaxAddress, 
>> EfiLoaderData,
>> +           EFI_SIZE_TO_PAGES(128 * 1024), &stack);
>> +       if (status != EFI_SUCCESS)
>> +               panic("BS->AllocatePages()");
>>
>> +#if defined(__amd64__)
>> +       asm("movq       %0, %%rsp;"
>> +           "mov        %1, %%edi;"
>> +           "call       boot@PLT;"
>> +           :: "r"(stack + 128 * 1024 - 32), "r"(bios_bootdev));
>> +#else
>> +       asm("movl       %0, %%esp;"
>> +           "movl       %1, (%%esp);"
>> +           "call       boot@PLT;"
>> +           :: "r"(stack + 128 * 1024 - 32), "r"(bios_bootdev));
>> +#endif
>> +       /* must not reach here */
>>         return (EFI_SUCCESS);
>>  }
>>
>> @@ -212,6 +235,15 @@ efi_memprobe(void)
>>  {
>>         u_int            n = 0;
>>         bios_memmap_t   *bm;
>> +       EFI_STATUS       status;
>> +       EFI_PHYSICAL_ADDRESS
>> +                        addr = 0x10000000ULL;  /* Below 256MB */
>> +
>> +       status = EFI_CALL(BS->AllocatePages, AllocateMaxAddress, 
>> EfiLoaderData,
>> +           EFI_SIZE_TO_PAGES(KERN_LOADSPACE_SIZE), &addr);
>> +       if (status != EFI_SUCCESS)
>> +               panic("BS->AllocatePages()");
>> +       efi_loadaddr = addr;
>>
>>         printf(" mem[");
>>         efi_memprobe_internal();
>> @@ -236,7 +268,7 @@ efi_memprobe_internal(void)
>>         UINT32                   mmver;
>>         EFI_MEMORY_DESCRIPTOR   *mm0, *mm;
>>         int                      i, n;
>> -       bios_memmap_t            *bm, bm0;
>> +       bios_memmap_t           *bm, bm0;
>>
>>         cnvmem = extmem = 0;
>>         bios_memmap[0].type = BIOS_MAP_END;
>> Index: sys//arch/amd64/stand/libsa/exec_i386.c
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/amd64/stand/libsa/exec_i386.c,v
>> retrieving revision 1.14
>> diff -u -p -r1.14 exec_i386.c
>> --- sys//arch/amd64/stand/libsa/exec_i386.c     2 Sep 2015 04:09:24 -0000    
>>    1.14
>> +++ sys//arch/amd64/stand/libsa/exec_i386.c     5 Oct 2015 04:42:04 -0000
>> @@ -37,6 +37,7 @@
>>
>>  #include "disk.h"
>>  #include "libsa.h"
>> +#include "cmd.h"
>>
>>  #ifdef SOFTRAID
>>  #include <dev/softraidvar.h>
>> @@ -72,8 +73,11 @@ run_loadfile(u_long *marks, int howto)
>>         bios_bootsr_t bootsr;
>>         struct sr_boot_volume *bv;
>>  #endif
>> +#if defined(EFIBOOT)
>> +       int i;
>> +       u_long delta;
>> +       extern u_long efi_loadaddr;
>>
>> -#ifdef EFIBOOT
>>         if ((av = alloc(ac)) == NULL)
>>                 panic("alloc for bootarg");
>>         efi_makebootargs();
>> @@ -131,17 +135,29 @@ run_loadfile(u_long *marks, int howto)
>>         printf("entry point at 0x%lx [%x, %x, %x, %x]\n", entry,
>>             ((int *)entry)[0], ((int *)entry)[1],
>>             ((int *)entry)[2], ((int *)entry)[3]);
>> -
>> -#if defined(EFIBOOT)
>> +#ifndef EFIBOOT
>> +       /* stack and the gung is ok at this point, so, no need for asm setup 
>> */
>> +       (*(startfuncp)entry)(howto, bootdev, BOOTARG_APIVER, marks[MARK_END],
>> +           extmem, cnvmem, ac, (int)av);
>> +#else
>> +       /*
>> +        * Move the loaded kernel image to the usual place after calling
>> +        * ExitBootServervice()
>> +        */
>> +       delta = DEFAULT_KERNEL_ADDRESS - efi_loadaddr;
>>         efi_cleanup();
>> -#endif
>> -#if defined(EFIBOOT) && defined(__amd64__)
>> +       memcpy((void *)marks[MARK_START] + delta, (void *)marks[MARK_START],
>> +           marks[MARK_END] - marks[MARK_START]);
>> +       for (i = 0; i < MARK_MAX; i++)
>> +               marks[i] += delta;
>> +       entry += delta;
>> +#ifdef __amd64__
>>         (*run_i386)((u_long)run_i386, entry, howto, bootdev, BOOTARG_APIVER,
>>             marks[MARK_END], extmem, cnvmem, ac, (intptr_t)av);
>>  #else
>> -       /* stack and the gung is ok at this point, so, no need for asm setup 
>> */
>>         (*(startfuncp)entry)(howto, bootdev, BOOTARG_APIVER, marks[MARK_END],
>>             extmem, cnvmem, ac, (int)av);
>> -       /* not reached */
>>  #endif
>> +#endif
>> +       /* not reached */
>>  }
>>
>>
>> On Wed, 30 Sep 2015 21:24:09 -0500
>> Brian Conway <bcon...@rcesoftware.com> wrote:
>>> Fantastic!
>>>
>>> Brian Conway
>>> Software Engineer, Owner
>>> RCE Software, LLC
>>>
>>> On Sep 30, 2015 9:11 PM, "YASUOKA Masahiko" <yasu...@openbsd.org> wrote:
>>>
>>>> I got a AM1l and I could repeat the problem.  I'll try to fix the
>>>> problem on this weekend.
>>>>
>>>> On Sun, 27 Sep 2015 19:55:07 -0500
>>>> Brian Conway <bcon...@rcesoftware.com> wrote:
>>>> > Thanks for all your hard work. Let me know if there's any additional
>>>> > testing I can provide.
>>>> >
>>>> > Brian Conway
>>>> > Software Engineer, Owner
>>>> > RCE Software, LLC
>>>> >
>>>> >
>>>> > On Sun, Sep 27, 2015 at 6:23 PM, YASUOKA Masahiko <yasu...@openbsd.org>
>>>> wrote:
>>>> >> Thank you for your report.
>>>> >>
>>>> >> On Sun, 27 Sep 2015 14:08:49 -0500
>>>> >> Brian Conway <bcon...@rcesoftware.com> wrote:
>>>> >>> Great, we're getting closer! The kernel finishes loading, there's a
>>>> >>> quick screen flash with a resolution change and I see "entry point at
>>>> >>> ..." for a split second, and then the system reboots and the bios
>>>> >>> loading screen comes up.
>>>> >>>
>>>> >>> Thanks again.
>>>> >>>
>>>> >>> Brian Conway


Reply via email to