Re: [regression, bisected] x86: efi: Pass boot services variableinfo to runtime code

From: Russ Anderson
Date: Fri May 31 2013 - 18:57:42 EST


On Fri, May 31, 2013 at 05:28:16PM +0100, Matthew Garrett wrote:
> On Fri, May 31, 2013 at 10:43:49AM -0500, Russ Anderson wrote:
>
> > When did writing EFI variables to nvram become necessary to boot on
> > UEFI? And if it is necessary, why is it that only linux boot loaders
> > that use EFI stubs (generally grub2) need it? The current kernel
> > boots using EFI/grub and EFI/elilo. It is just when EFI stubs are
> > used that the boot fails.
>
> I think you've misunderstood the problem.

The problem for me is the system not booting. I was not
familiar with the problem you are trying to solve, but
have now looked at the links.

> If nvram becaomes full, some
> systems crash during firmware initialisation. So we can't let nvram
> become full. The obvious thing to do here is to look at the values from
> QueryVariableInfo, but many systems won't perform any garbage collection
> until they're almost out of space and so variables that have been
> deleted still show up as used space.

OK. I get nvram looks full due to lack of garbage collection
on some systems. Does QueryVariableInfo (at runtime) tell you
it is full? Is the problem that it says it is full when it
is not, or does not tell you it is full when it is?

> We can work around that by adding
> up the size of the variables ourselves, but that only gives us the value
> for runtime-visible variables. We also need to know how much space is
> used by variables that are only visible during boot,

Is it valid to assume that only the kernel writes to nvram at
runtime? Can bios log error information to nvram on an SMM
interrupt (for example)?

> hence calling
> QueryVariableInfo before ExitBootServices.

Correct me if I am wrong, but that is called from EFI stubs,
which is only used by some bootloaders (sometimes grub2).
Does that mean EFI/grub and EFI/elilo will not hit the problem,
or will not have your fix?


> > Which means the previous patch(es) that caused the bricking should
> > get pulled, too.
>
> There are no patches that cause the bricking.

I thought that was the problem you were trying to avoid.

--
Russ Anderson, OS RAS/Partitioning Project Lead
SGI - Silicon Graphics Inc rja@xxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/