Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Feb 2019 19:04:56 -0700
From:      Rebecca Cran <rebecca@bluestop.org>
To:        freebsd-current@freebsd.org
Subject:   i386 EFI booting is broken (ExitBootServices called in two places)
Message-ID:  <e823176d-943d-148f-a358-d7b9ebe56d0c@bluestop.org>

next in thread | raw e-mail | index | archive | help
I've been working on some EFI changes, and in the process found that 
i386 booting is broken. On real hardware - my MinnowBoard Turbot - the 
loader hangs when calling ExitBootServices, while in a VM I get a panic 
saying "exec returned".

The problem appears to be that ExitBootServices is called twice: 
elf32_exec in arch/i386/efimd.c calls bi_load which calls 
bi_load_efi_data in bootinfo.c - which calls ExitBootServices the first 
time. Then elf32_exec keeps going, and after printing "Start @ 0x....." 
calls ldr_enter which tries to call ExitBootServices again - this time 
with a mapkey whose value is zero since it never attempts to fetch the 
memory map. I'm guessing that subsequently causes the exec to fail.


-- 
Rebecca Cran




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?e823176d-943d-148f-a358-d7b9ebe56d0c>