Re: [PATCH v2] x86/efi: Safely enable unaccepted memory in UEFI

From: Kirill A. Shutemov
Date: Mon Jan 16 2023 - 07:31:15 EST


On Mon, Jan 16, 2023 at 11:56:48AM +0100, Gerd Hoffmann wrote:
> On Sat, Jan 14, 2023 at 01:20:24AM +0300, Kirill A. Shutemov wrote:
> > On Fri, Jan 13, 2023 at 09:29:26PM +0000, Dionna Glaze wrote:
> > > This patch depends on Kirill A. Shutemov's series
> > >
> > > [PATCHv8 00/14] mm, x86/cc: Implement support for unaccepted memory
> > >
> > > The UEFI v2.9 specification includes a new memory type to be used in
> > > environments where the OS must accept memory that is provided from its
> > > host. Before the introduction of this memory type, all memory was
> > > accepted eagerly in the firmware. In order for the firmware to safely
> > > stop accepting memory on the OS's behalf, the OS must affirmatively
> > > indicate support to the firmware.
> >
> > I think it is a bad idea.
> >
> > This approach breaks use case with a bootloader between BIOS and OS.
> > As the bootloader does ExitBootServices() it has to make the call on
> > behalf of OS when it has no idea if the OS supports unaccepted.
>
> Nothing breaks, it'll error on the safe side. If the protocol callback
> is not called the firmware will simply accept all memory. The guest OS
> will only see unaccepted memory if it explicitly asked for it (assuming
> the firmware wants know to support both cases, of course the firmware
> could also enforce the one or the other and just not offer the
> protocol).

How bootloader suppose to know if OS will ask for unaccepted memory?
It can't. It means the use-case with bootloader cannot ever use
unaccepted memory. That's broken design.

--
Kiryl Shutsemau / Kirill A. Shutemov