All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Vladimir 'φ-coder/phcoder' Serbinenko" <phcoder@gmail.com>
To: Daniel Kiper <daniel.kiper@oracle.com>
Cc: grub-devel@gnu.org, keir@xen.org, ian.campbell@citrix.com,
	stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org,
	jbeulich@suse.com, ross.philipson@citrix.com,
	richard.l.maliszewski@intel.com
Subject: Re: EFI + GRUB2 + Xen - Boot Services issues
Date: Wed, 19 Mar 2014 20:58:43 +0800	[thread overview]
Message-ID: <53299483.2040505@gmail.com> (raw)
In-Reply-To: <20140319094259.GE3454@olila.local.net-space.pl>

[-- Attachment #1: Type: text/plain, Size: 2678 bytes --]

On 19.03.2014 17:42, Daniel Kiper wrote:
> Hey,
> 
> On Thu, Mar 06, 2014 at 08:29:25PM +0100, Daniel Kiper wrote:
>> Hi,
>>
>> Vladimir, during my work on final multiboot2 protocol support in Xen on
>> EFI platform I stated that GRUB2 patch 0df77d793c0436be656f982d96d4edaea4993f96
>> (Implement multiboot2 EFI BS specification) may not give access to Boot
>> Services as we earlier expected.
>>
>> In general above mentioned patch gives a way to prevent ExitBootServices()
>> call in GRUB2 which is good. However, it looks that this is only part of
>> the bigger puzzle. Sadly GRUB2 before jumping into the loaded image switches
>> x86 processor mode to 32-bit and disables PG bit in CR0. This is not native
>> EFI processor mode. Especially it is very painful on 64-bit EFI implementations.
>> Even if you can disable ExitBootServices() call later you are not able to call
>> Boot Services functions without switching processor mode (this is quite simple)
>> and recreating page tables (this could be quite complicated). I do not mention
>> that system table could be unavailable in 32-bit mode because pointer to it
>> is 64-bit and there is no guarantee that it will be placed below 4 GiB. However,
>> worst thing is that there is no access to ImageHandle which is needed to call
>> ExitBootServices(). Hence, I think that if MULTIBOOT2_HEADER_TAG_EFI_BS tag
>> is in force at least GRUB2 loader should not touch processor mode on EFI platform
>> and it should pass pointer to ImageHandle. I am aware that this is very intrusive
>> change and maybe we should consider reverting 0df77d793c0436be656f982d96d4edaea4993f96
>> (Implement multiboot2 EFI BS specification) patch from GRUB2 version 2.02 at this
>> stage of development because there is no guarantee that this change will solve
>> all problems with BS. This way we avoid situation in which new feature is broken
>> from the beginning and we are not able to remove it.
>>
>> Additionally, I discovered that BS could be overwritten during relocation because
>> grub_relocator32_boot() is called with last argument (avoid_efi_bootservices)
>> set to 0 even if MULTIBOOT2_HEADER_TAG_EFI_BS tag is in force.
> 
> Is there anybody out there?
> 
Sorry, I was travelling. I've seen your mail, just didn't respond to it
yet. In nutshell, I think that even in current form it's still useful to
allow payloads to follow 32-bit path as long as they wish to keep it and
still use BS if they need to. I'll fix clobbering problem. As for long
mode entry, it's separate issue, I'm thinking about. There are couple of
problems including where to place the paging tables.
> Daniel
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 274 bytes --]

  parent reply	other threads:[~2014-03-19 12:59 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-06 19:29 EFI + GRUB2 + Xen - Boot Services issues Daniel Kiper
2014-03-12  8:22 ` Daniel Kiper
2014-03-12  8:22 ` Daniel Kiper
2014-03-19  9:42 ` Daniel Kiper
2014-03-19 12:58   ` Vladimir 'φ-coder/phcoder' Serbinenko
2014-03-19 12:58   ` Vladimir 'φ-coder/phcoder' Serbinenko [this message]
2014-03-20 11:56     ` Daniel Kiper
2014-03-20 11:56     ` Daniel Kiper
2014-03-19  9:42 ` Daniel Kiper
  -- strict thread matches above, loose matches on Subject: below --
2014-03-06 19:29 Daniel Kiper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53299483.2040505@gmail.com \
    --to=phcoder@gmail.com \
    --cc=daniel.kiper@oracle.com \
    --cc=grub-devel@gnu.org \
    --cc=ian.campbell@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --cc=richard.l.maliszewski@intel.com \
    --cc=ross.philipson@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.