xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Matt Fleming <matt@codeblueprint.co.uk>
To: "Roger Pau Monné" <roger.pau@citrix.com>
Cc: "Michael Chang" <MChang@suse.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Jim Fehlig" <jfehlig@suse.com>,
	"Jan Beulich" <JBeulich@suse.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Daniel Kiper" <daniel.kiper@oracle.com>,
	"X86 ML" <x86@kernel.org>, "Vojtěch Pavlík" <vojtech@suse.cz>,
	"Gary Lin" <GLin@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"Jeffrey Cheung" <JCheung@suse.com>,
	"Charles Arndol" <carnold@suse.com>,
	"Stefano Stabellini" <stefano.stabellini@eu.citrix.com>,
	joeyli <jlee@suse.com>, "Borislav Petkov" <bp@alien8.de>,
	"Boris Ostrovsky" <boris.ostrovsky@oracle.com>,
	"Juergen Gross" <jgross@suse.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Julien Grall" <julien.grall@arm.com>,
	"Andy Lutomirski" <luto@amacapital.net>,
	"Luis R. Rodriguez" <mcgrof@kernel.org>,
	"David Vrabel" <david.vrabel@citrix.com>
Subject: Re: HVMLite / PVHv2 - using x86 EFI boot entry
Date: Wed, 13 Apr 2016 11:15:15 +0100	[thread overview]
Message-ID: <20160413101515.GJ2829__38475.1591751867$1460542585$gmane$org@codeblueprint.co.uk> (raw)
In-Reply-To: <20160413090202.bg2vfdl3iol7eedv@mac>

On Wed, 13 Apr, at 11:02:02AM, Roger Pau Monné wrote:
> 
> With my FreeBSD committer hat:
> 
> The FreeBSD kernel doesn't contain an EFI entry point, it just contains one 
> single entry point that's used for both legacy BIOS and EFI. Then the 
> FreeBSD loader is the one that contains the different entry points. I would 
> really like to avoid adding an EFI entry point and the PE header to the 
> FreeBSD kernel. The current trampoline in FreeBSD to tie the Xen entry point 
> into the native path contains 96 lines of assembly (half of them are 
> actually comments) and 66 lines of C. I think adding an EFI entry point is 
> going to add a lot more of code than this, and we would probably need 
> changes to the build system in order to assembly the PE header and the ELF 
> headers together.
 
What does the boot flow look like for PVH2 on FreeBSD today?
Presumably it doesn't have the same entry point that Boris proposed
for Linux?

Does it go, Hypervisor -> FreeBSD loader -> FreeBSD kernel? Or are you
able to directly boot the kernel from the hypervisor and skip the
middle part by having secondary entry point for Xen marked by the ELF
note?

> IMHO, if we want to boot PVH using EFI the right solution is to use OVMF (or 
> any other UEFI firmware) and port it so it's able to run as a PVH guest. I 
> guess it should even be possible to use it for Dom0, although I think this 
> is cumbersome.

There are two levels of EFI boot entry features being discussed,

 1. Make the OS kernel a PE/COFF executable
 2. Provide some level of EFI service functionality

You can adopt 1. without 2, i.e. without actually providing any EFI
services at all, as long as the Xen hypervisor grows a PE/COFF loader
(since EFI firmware has to provide you one, for EFI platforms you
could use the LoadImage() service in the firmware, but for BIOS
platforms you'd need your own in Xen).

On Linux, this has the advantage of deferring the decompression of the
bzImage (x86 Linux kernel file format) to the stub on the front of the
bzImage. And while I realise that the toolstack already has support
for decompressing bzImages, given what Andrew has said about reducing
attack surface, having the guest perform the decompression should be a
win.

Of course, this is offset somewhat by the fact that you need to audit
the PE/COFF loader ;) But decompression in general is notoriously
vulnerable to security issues.

Using the in-kernel decompressor is how most (all?) Linux boot loaders
work today, so there's the added benefit of reducing the differences
between booting on Xen and booting bare metal. For example, you'd
probably be able to use CONFIG_RANDOMIZE_BASE (ASLR for kernel image)
for Xen if you use the kernel's decompressor. Xen would also get
future features in this area for free, and there is a tendency to push
boot features into the early stub.

For 1. we'd basically be using the PE/COFF file format with the EFI
ABI as an OS agnostic boot protocol, but not as a full firmware
runtime environment.

2. is also interesting, though I think less so than 1. I agree that
making OVMF work as a PVH guest is probably the right way to go, even
for Dom0, not least because you'd have a much cleaner/less buggy
implementation than what we see in the real world ;)

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2016-04-13 10:15 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160406024027.GX1990@wotan.suse.de>
2016-04-06  9:40 ` HVMLite / PVHv2 - using x86 EFI boot entry David Vrabel
2016-04-06 11:07 ` George Dunlap
2016-04-06 11:11 ` Daniel Kiper
     [not found] ` <CAFLBxZbRjB6QWH5GbG6osCXat9NQVUAyDYrAMrdALbCofpX3Dg@mail.gmail.com>
2016-04-06 15:02   ` Matt Fleming
2016-04-07 18:51   ` Luis R. Rodriguez
     [not found]   ` <20160406150240.GO2701@codeblueprint.co.uk>
2016-04-06 16:05     ` Konrad Rzeszutek Wilk
2016-04-06 16:23       ` Konrad Rzeszutek Wilk
2016-04-08 21:53         ` Luis R. Rodriguez
2016-04-13 10:03     ` Roger Pau Monné
     [not found]     ` <20160413100312.647eocdtbmak4btk@mac>
2016-04-13 10:21       ` Matt Fleming
     [not found]   ` <20160407185148.GL1990@wotan.suse.de>
2016-04-08 14:16     ` George Dunlap
     [not found]     ` <5707BD2E.20204@citrix.com>
2016-04-08 21:58       ` Luis R. Rodriguez
     [not found]       ` <20160408215854.GU1990@wotan.suse.de>
2016-04-12 22:12         ` Luis R. Rodriguez
2016-04-13  9:54         ` Roger Pau Monné
     [not found]         ` <20160412221225.GN1990@wotan.suse.de>
2016-04-13 10:05           ` George Dunlap
2016-04-13 10:25           ` Roger Pau Monné
     [not found]           ` <CAFLBxZbiGppNad=Z6-fLgx89O0yAFrSyARTCwv=vHBR3zJ=NsA@mail.gmail.com>
2016-04-13 18:54             ` Luis R. Rodriguez
     [not found]             ` <20160413185451.GY1990@wotan.suse.de>
2016-04-14  9:42               ` George Dunlap
     [not found]               ` <570F65F7.5050108@citrix.com>
2016-04-14 19:59                 ` Luis R. Rodriguez
     [not found]           ` <20160413102156.b4qwhwbqvnnpmxgw@mac>
2016-04-13 19:10             ` Luis R. Rodriguez
     [not found]         ` <20160413095428.5mcbrimvc6vxffcw@mac>
2016-04-13 18:50           ` Luis R. Rodriguez
     [not found]           ` <20160413185010.GX1990@wotan.suse.de>
2016-04-13 19:02             ` Konrad Rzeszutek Wilk
2016-04-13 19:14               ` Luis R. Rodriguez
     [not found]               ` <20160413191408.GA1990@wotan.suse.de>
2016-04-13 19:22                 ` Konrad Rzeszutek Wilk
2016-04-13 20:01                   ` Luis R. Rodriguez
     [not found]                   ` <20160413200118.GC1990@wotan.suse.de>
2016-04-13 20:11                     ` Konrad Rzeszutek Wilk
2016-04-13 20:35                       ` Luis R. Rodriguez
     [not found]                       ` <CAB=NE6VdTB1Bc=c0oCd_tTHpwwkQcxhnOFdcLfck2jX=JjuOAQ@mail.gmail.com>
2016-04-13 20:48                         ` Konrad Rzeszutek Wilk
2016-04-14 10:13                 ` George Dunlap
2016-04-13 15:44     ` George Dunlap
     [not found]     ` <CAFLBxZbJ4QyJQ1-ZuXg_Q-9YNXnWzDyPNp4SX=d9g0DS8mJKaw@mail.gmail.com>
2016-04-13 19:52       ` Luis R. Rodriguez
     [not found]       ` <20160413195257.GB1990@wotan.suse.de>
2016-04-14  9:53         ` George Dunlap
     [not found]         ` <570F68AB.2040400@citrix.com>
2016-04-14 19:44           ` Luis R. Rodriguez
     [not found]           ` <20160414194408.GP1990@wotan.suse.de>
2016-04-14 20:38             ` Konrad Rzeszutek Wilk
     [not found]             ` <20160414203847.GB21657@localhost.localdomain>
2016-04-14 21:12               ` Luis R. Rodriguez
     [not found]               ` <20160414211201.GS1990@wotan.suse.de>
2016-04-15  2:14                 ` Konrad Rzeszutek Wilk
2016-04-15  5:50             ` Juergen Gross
2016-04-15  9:59             ` George Dunlap
     [not found]             ` <57108121.1070307@suse.com>
2016-04-15 15:24               ` Luis R. Rodriguez
     [not found]             ` <5710BB74.2060409@citrix.com>
2016-04-15 15:30               ` Luis R. Rodriguez
     [not found]               ` <20160415153028.GX1990@wotan.suse.de>
2016-04-15 16:03                 ` George Dunlap
     [not found]                 ` <571110BB.2000408@citrix.com>
2016-04-15 17:17                   ` Luis R. Rodriguez
     [not found] ` <5704D978.1050101@citrix.com>
2016-04-08 20:40   ` Luis R. Rodriguez
     [not found]   ` <20160408204032.GR1990@wotan.suse.de>
2016-04-11  5:12     ` Juergen Gross
     [not found]     ` <570B3228.90400@suse.com>
2016-04-12 21:02       ` Andy Lutomirski
     [not found]       ` <CALCETrXvGR3XKJf5Ab_ZPc-iuNuzR8AzLpRBciemKz4r0vSrGA@mail.gmail.com>
2016-04-13  9:02         ` Roger Pau Monné
     [not found]         ` <20160413090202.bg2vfdl3iol7eedv@mac>
2016-04-13 10:15           ` Matt Fleming [this message]
     [not found]           ` <20160413101515.GJ2829@codeblueprint.co.uk>
2016-04-13 10:40             ` Matt Fleming
2016-04-13 11:12             ` George Dunlap
2016-04-13 11:59             ` Roger Pau Monné
     [not found]             ` <20160413115846.hyt4lg24rfkenbxu@mac>
2016-04-15 22:53               ` Matt Fleming
2016-04-13 18:29       ` Luis R. Rodriguez
     [not found]       ` <20160413182951.GW1990@wotan.suse.de>
2016-04-13 18:56         ` Konrad Rzeszutek Wilk
2016-04-13 20:40           ` Luis R. Rodriguez
     [not found]           ` <20160413204055.GD1990@wotan.suse.de>
2016-04-13 21:08             ` Konrad Rzeszutek Wilk
2016-04-13 22:23               ` Luis R. Rodriguez
     [not found]               ` <20160413222317.GH1990@wotan.suse.de>
2016-04-14  1:01                 ` Konrad Rzeszutek Wilk
     [not found]                 ` <20160414010131.GA21510@localhost.localdomain>
2016-04-14 18:40                   ` Luis R. Rodriguez
     [not found]                   ` <20160414184048.GM1990@wotan.suse.de>
2016-04-14 19:56                     ` Konrad Rzeszutek Wilk
2016-04-14 20:56                       ` Luis R. Rodriguez
     [not found]                       ` <20160414205619.GR1990@wotan.suse.de>
2016-04-15  2:02                         ` Konrad Rzeszutek Wilk
2016-04-15 10:06                         ` Julien Grall
     [not found]                         ` <5710BD0B.2070306@arm.com>
2016-04-15 14:55                           ` Luis R. Rodriguez
     [not found]                           ` <CAB=NE6UDuLOnW8xfTcgCGSbJ1aS4TkkokcGdeJGHMBps0T9=Sg@mail.gmail.com>
2016-04-15 18:44                             ` Stefano Stabellini
     [not found]                         ` <20160415020246.GA6956@localhost.localdomain>
2016-04-15 17:08                           ` Luis R. Rodriguez
     [not found] ` <20160406111130.GG3489@olila.local.net-space.pl>
2016-04-07 19:12   ` Luis R. Rodriguez
2016-04-09 17:02   ` Luis R. Rodriguez
2016-04-06  2:40 Luis R. Rodriguez

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='20160413101515.GJ2829__38475.1591751867$1460542585$gmane$org@codeblueprint.co.uk' \
    --to=matt@codeblueprint.co.uk \
    --cc=GLin@suse.com \
    --cc=JBeulich@suse.com \
    --cc=JCheung@suse.com \
    --cc=MChang@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=carnold@suse.com \
    --cc=daniel.kiper@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=hpa@zytor.com \
    --cc=jfehlig@suse.com \
    --cc=jgross@suse.com \
    --cc=jlee@suse.com \
    --cc=julien.grall@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mcgrof@kernel.org \
    --cc=roger.pau@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=vojtech@suse.cz \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).