2014-04-11 17:59:23

by Thomas Bächler

[permalink] [raw]
Subject: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

EFI stub support is only missing for a 64 bit kernel on 32-bit firmware,
on 64-bit kernels, EFI stub works as usual.
---

Matt, I don't know if this help was intentionally discouraging,
however, out of curiosity, I tested this with ovmf, and the
kernel boots fine on 64-bit firmware bit with EFI stub, and on
32-bit firmware using efilinux.

Documenting this properly is important for distribution kernels.
We would want to support this on Arch, but not if it means
introducing a regression for EFI stub users.

arch/x86/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 5b8ec0f..2bbbbb9 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1529,8 +1529,8 @@ config EFI_MIXED
mode.

Note that it is not possible to boot a mixed-mode enabled
- kernel via the EFI boot stub - a bootloader that supports
- the EFI handover protocol must be used.
+ kernel via the EFI boot stub on 32-bit firmware - a bootloader
+ that supports the EFI handover protocol must be used.

If unsure, say N.

--
1.9.2


2014-04-11 18:03:30

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

On 04/11/2014 10:59 AM, Thomas B?chler wrote:
> EFI stub support is only missing for a 64 bit kernel on 32-bit firmware,
> on 64-bit kernels, EFI stub works as usual.
> ---
>
> Matt, I don't know if this help was intentionally discouraging,
> however, out of curiosity, I tested this with ovmf, and the
> kernel boots fine on 64-bit firmware bit with EFI stub, and on
> 32-bit firmware using efilinux.
>
> Documenting this properly is important for distribution kernels.
> We would want to support this on Arch, but not if it means
> introducing a regression for EFI stub users.
>
> arch/x86/Kconfig | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 5b8ec0f..2bbbbb9 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -1529,8 +1529,8 @@ config EFI_MIXED
> mode.
>
> Note that it is not possible to boot a mixed-mode enabled
> - kernel via the EFI boot stub - a bootloader that supports
> - the EFI handover protocol must be used.
> + kernel via the EFI boot stub on 32-bit firmware - a bootloader
> + that supports the EFI handover protocol must be used.
>
> If unsure, say N.
>

Right, it is really that it is not possible to boot a mixed-mode kernel
on its non-native firmware using the stub, since the stub itself can
only be one way or the other.

-hpa

2014-04-11 18:44:57

by Matt Fleming

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

On Fri, 11 Apr, at 11:03:13AM, H. Peter Anvin wrote:
> On 04/11/2014 10:59 AM, Thomas B?chler wrote:
> > EFI stub support is only missing for a 64 bit kernel on 32-bit firmware,
> > on 64-bit kernels, EFI stub works as usual.
> > ---
> >
> > Matt, I don't know if this help was intentionally discouraging,
> > however, out of curiosity, I tested this with ovmf, and the
> > kernel boots fine on 64-bit firmware bit with EFI stub, and on
> > 32-bit firmware using efilinux.
> >
> > Documenting this properly is important for distribution kernels.
> > We would want to support this on Arch, but not if it means
> > introducing a regression for EFI stub users.
> >
> > arch/x86/Kconfig | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > index 5b8ec0f..2bbbbb9 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -1529,8 +1529,8 @@ config EFI_MIXED
> > mode.
> >
> > Note that it is not possible to boot a mixed-mode enabled
> > - kernel via the EFI boot stub - a bootloader that supports
> > - the EFI handover protocol must be used.
> > + kernel via the EFI boot stub on 32-bit firmware - a bootloader
> > + that supports the EFI handover protocol must be used.
> >
> > If unsure, say N.
> >
>
> Right, it is really that it is not possible to boot a mixed-mode kernel
> on its non-native firmware using the stub, since the stub itself can
> only be one way or the other.

Yeah, my help text was a bit... unhelpful.

CONFIG_EFI_MIXED does not introduce a regression of any sort, you can
enable it without worrying about that.

All the boot configurations that used to work will continue to work.

What I meant to say was that it isn't possible to use the EFI mixed
*feature* (booting a 64-bit kernel with 32-bit firmware) with the EFI
boot stub - so you can build support into your kernel but there's no way
to make the CPU actually execute those code paths.

--
Matt Fleming, Intel Open Source Technology Center

2014-04-14 07:15:41

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED


* Matt Fleming <[email protected]> wrote:

> On Fri, 11 Apr, at 11:03:13AM, H. Peter Anvin wrote:
> > On 04/11/2014 10:59 AM, Thomas B?chler wrote:
> > > EFI stub support is only missing for a 64 bit kernel on 32-bit firmware,
> > > on 64-bit kernels, EFI stub works as usual.
> > > ---
> > >
> > > Matt, I don't know if this help was intentionally discouraging,
> > > however, out of curiosity, I tested this with ovmf, and the
> > > kernel boots fine on 64-bit firmware bit with EFI stub, and on
> > > 32-bit firmware using efilinux.
> > >
> > > Documenting this properly is important for distribution kernels.
> > > We would want to support this on Arch, but not if it means
> > > introducing a regression for EFI stub users.
> > >
> > > arch/x86/Kconfig | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > > index 5b8ec0f..2bbbbb9 100644
> > > --- a/arch/x86/Kconfig
> > > +++ b/arch/x86/Kconfig
> > > @@ -1529,8 +1529,8 @@ config EFI_MIXED
> > > mode.
> > >
> > > Note that it is not possible to boot a mixed-mode enabled
> > > - kernel via the EFI boot stub - a bootloader that supports
> > > - the EFI handover protocol must be used.
> > > + kernel via the EFI boot stub on 32-bit firmware - a bootloader
> > > + that supports the EFI handover protocol must be used.
> > >
> > > If unsure, say N.
> > >
> >
> > Right, it is really that it is not possible to boot a mixed-mode kernel
> > on its non-native firmware using the stub, since the stub itself can
> > only be one way or the other.
>
> Yeah, my help text was a bit... unhelpful.
>
> CONFIG_EFI_MIXED does not introduce a regression of any sort, you can
> enable it without worrying about that.
>
> All the boot configurations that used to work will continue to work.
>
> What I meant to say was that it isn't possible to use the EFI mixed
> *feature* (booting a 64-bit kernel with 32-bit firmware) with the
> EFI boot stub - so you can build support into your kernel but
> there's no way to make the CPU actually execute those code paths.

Same goes for booting a 32-bit kernel on 64-bit firmware, right?

Thanks,

Ingo

2014-04-14 08:28:23

by Thomas Bächler

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

Am 14.04.2014 09:15, schrieb Ingo Molnar:
>>> Right, it is really that it is not possible to boot a mixed-mode kernel
>>> on its non-native firmware using the stub, since the stub itself can
>>> only be one way or the other.
>>
>> Yeah, my help text was a bit... unhelpful.
>>
>> CONFIG_EFI_MIXED does not introduce a regression of any sort, you can
>> enable it without worrying about that.
>>
>> All the boot configurations that used to work will continue to work.
>>
>> What I meant to say was that it isn't possible to use the EFI mixed
>> *feature* (booting a 64-bit kernel with 32-bit firmware) with the
>> EFI boot stub - so you can build support into your kernel but
>> there's no way to make the CPU actually execute those code paths.
>
> Same goes for booting a 32-bit kernel on 64-bit firmware, right?
>

It seems that isn't implemented:

config EFI_MIXED
bool "EFI mixed-mode support"
depends on EFI_STUB && X86_64



Attachments:
signature.asc (901.00 B)
OpenPGP digital signature

2014-04-14 09:34:25

by Matt Fleming

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

On Mon, 14 Apr, at 10:28:02AM, Thomas B?chler wrote:
> Am 14.04.2014 09:15, schrieb Ingo Molnar:
> >>> Right, it is really that it is not possible to boot a mixed-mode kernel
> >>> on its non-native firmware using the stub, since the stub itself can
> >>> only be one way or the other.
> >>
> >> Yeah, my help text was a bit... unhelpful.
> >>
> >> CONFIG_EFI_MIXED does not introduce a regression of any sort, you can
> >> enable it without worrying about that.
> >>
> >> All the boot configurations that used to work will continue to work.
> >>
> >> What I meant to say was that it isn't possible to use the EFI mixed
> >> *feature* (booting a 64-bit kernel with 32-bit firmware) with the
> >> EFI boot stub - so you can build support into your kernel but
> >> there's no way to make the CPU actually execute those code paths.
> >
> > Same goes for booting a 32-bit kernel on 64-bit firmware, right?
> >
>
> It seems that isn't implemented:
>
> config EFI_MIXED
> bool "EFI mixed-mode support"
> depends on EFI_STUB && X86_64
>

Correct, since that would require translating 64-bit pointers from the
firmware into 32-bit pointers for the kernel, which isn't as straight
forward as the 32-bit firmware / 64-bit kernel case, i.e. ensure all
allocations are < 4GB and truncate 64-bit pointers when they're passed
to the firmware.

That and the fact that no one has said "We really need support".

--
Matt Fleming, Intel Open Source Technology Center

2014-04-14 09:47:46

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH] efi: Clarify Kconfig help for EFI_MIXED

On Mon, Apr 14, 2014 at 10:33:32AM +0100, Matt Fleming wrote:
> That and the fact that no one has said "We really need support".

Don't be putting words in people's mouths :-)

--
Regards/Gruss,
Boris.

Sent from a fat crate under my desk. Formatting is fine.
--