Hi, On Sun, 11 Jun 2017 19:24:45 +0200 Ćukasz Jendrysik <sc...@yandex.com> wrote: > Today I tried for first time installing openBSD on a physical machine. > You probably figured out that I'm new to openBSD and I hope for your > understanding. > > Now to the point: when I boot in UEFI native mode (without CSM), my > display gets crazy producing fancy glitch art, see attached glitch.png. > > I also attach dmesg from both boot modes -- UEFI Hybrid (with CSM) and > UEFI Native (without CSM). Didn't notice any meaningful differences though. > > Tested on HP EliteBook 2570p and openBSD 6.1 amd64. Unfortunately I > didn't test -current yet. > Please let me know if I can provide you with any details regarding this > issue.
Can you test the diff attached at last or http://yasuoka.net/~yasuoka/BOOTX64.EFI The boot program is launched, please type "machine test<Enter>" and show me the result? diff --git a/sys/arch/amd64/stand/efiboot/efiboot.c b/sys/arch/amd64/stand/efiboot/efiboot.c index 9b6d5fc00fd..0f2613a2a15 100644 --- a/sys/arch/amd64/stand/efiboot/efiboot.c +++ b/sys/arch/amd64/stand/efiboot/efiboot.c @@ -855,3 +855,59 @@ Xpoweroff_efi(void) EFI_CALL(RS->ResetSystem, EfiResetShutdown, EFI_SUCCESS, 0, NULL); return (0); } + + +int +Xtest(void) +{ + int i, bestmode = -1; + EFI_STATUS status; + EFI_GRAPHICS_OUTPUT *gop; + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION + *gopi = NULL; + UINTN sz, gopsiz, bestsiz = 0; + + status = EFI_CALL(BS->LocateProtocol, &gop_guid, NULL, (void **)&gop); + if (!EFI_ERROR(status)) { + for (i = 0; i < gop->Mode->MaxMode; i++) { + status = EFI_CALL(gop->QueryMode, gop, i, &sz, &gopi); + if (EFI_ERROR(status)) + continue; + gopsiz = gopi->HorizontalResolution * + gopi->VerticalResolution; + if (gopsiz > bestsiz) { + bestmode = i; + bestsiz = gopsiz; + } + } + if (bestmode >= 0) { + status = EFI_CALL(gop->SetMode, gop, bestmode); + if (EFI_ERROR(status) && gop->Mode->Mode != bestmode) + printf("GOP setmode failed(%d)\n", status); + } + gopi = gop->Mode->Info; + printf( + "FrameBufferBase = 0x%lx\n" + "FrameBufferSize = 0x%x\n" + "VerticalResolution = %u\n" + "HorizontalResolution = %u\n" + "PixelsPerScanLine = %u\n" + "PixelFormat = %d\n" + " RedMask = 0x%lx\n" + " GreenMask = 0x%lx\n" + " BlueMask = 0x%lx\n" + " ReservedMask = 0x%lx\n", + gop->Mode->FrameBufferBase, + gop->Mode->FrameBufferSize, + gopi->VerticalResolution, + gopi->HorizontalResolution, + gopi->PixelsPerScanLine, + gopi->PixelFormat, + gopi->PixelInformation.RedMask, + gopi->PixelInformation.GreenMask, + gopi->PixelInformation.BlueMask, + gopi->PixelInformation.ReservedMask); + } + + return (0); +} diff --git a/sys/arch/amd64/stand/libsa/cmd_i386.c b/sys/arch/amd64/stand/libsa/cmd_i386.c index 592cca49547..d5c014ad31b 100644 --- a/sys/arch/amd64/stand/libsa/cmd_i386.c +++ b/sys/arch/amd64/stand/libsa/cmd_i386.c @@ -40,6 +40,7 @@ #ifdef EFIBOOT #include "efiboot.h" #include "efidev.h" +int Xtest(void); #endif extern const char version[]; @@ -64,6 +65,7 @@ const struct cmd_table cmd_machine[] = { { "video", CMDT_CMD, Xvideo_efi }, { "exit", CMDT_CMD, Xexit_efi }, { "poweroff", CMDT_CMD, Xpoweroff_efi }, + { "test", CMDT_CMD, Xtest }, #endif #ifdef DEBUG { "regs", CMDT_CMD, Xregs },