Hi,

On Fri, 26 Mar 2021 09:30:43 +0100
Jan Klemkow <j.klem...@wemelug.de> wrote:
> If you want to boot OpenBSD on an HP EliteBook 830 G7/G8, the bootloader
> will hang while loading the kernel.  Because, the UEFI loads the
> bootloader on the same place in memory, where the bootloader will copy
> the kernel.  We are unable to load the kernel on arbitrary memory.
> Thus, the following diff will help you, to get OpenBSD running on these
> machines.  It moves the hardcoded Kernel address to a free place.

The openbsd efiboot copies the kernel to that place after
ExitBootServices().

sys/arch/amd64/stand/efiboot/exec_i386.c
    152         /*
    153          * Move the loaded kernel image to the usual place after calling
    154          * ExitBootServices().
    155          */
    156 #ifdef __amd64__
    157         protect_writeable(marks[MARK_START] + delta,
    158             marks[MARK_END] - marks[MARK_START]);
    159 #endif
    160         memmove((void *)marks[MARK_START] + delta, (void 
*)marks[MARK_START],
    161             marks[MARK_END] - marks[MARK_START]);
    162         for (i = 0; i < MARK_MAX; i++)
    163                 marks[i] += delta;
    164 
    165 #ifdef __amd64__
    166         (*run_i386)((u_long)run_i386, entry, howto, bootdev, 
BOOTARG_APIVER,
    167             marks[MARK_END], extmem, cnvmem, ac, (intptr_t)av);


I think it should work without the ld.script change..

Reply via email to