From: Andrew Cooper <andrew.cooper3@citrix.com>
To: "Wei Liu" <wei.liu2@citrix.com>,
"Roger Pau Monné" <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org,
Ian Jackson <ian.jackson@eu.citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [PATCH v4 31/31] libxl: allow the creation of HVM domains without a device model.
Date: Fri, 7 Aug 2015 19:41:59 +0100 [thread overview]
Message-ID: <55C4FBF7.3060400@citrix.com> (raw)
In-Reply-To: <20150807162430.GZ6005@zion.uk.xensource.com>
On 07/08/15 17:24, Wei Liu wrote:
> On Fri, Aug 07, 2015 at 05:51:02PM +0200, Roger Pau Monné wrote:
> [...]
>>>> It is recommended to accept the default value for new guests. If
>>>> diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
>>>> index 1599de4..d67feb0 100644
>>>> --- a/tools/libxc/xc_dom_x86.c
>>>> +++ b/tools/libxc/xc_dom_x86.c
>>>> @@ -1269,6 +1269,13 @@ static int meminit_hvm(struct xc_dom_image *dom)
>>>> if ( nr_pages > target_pages )
>>>> memflags |= XENMEMF_populate_on_demand;
>>>>
>>>> + /* Make sure there's a MMIO hole for the special pages. */
>>>> + if ( dom->mmio_size == 0 )
>>>> + {
>>>> + dom->mmio_size = NR_SPECIAL_PAGES << PAGE_SHIFT;
>>>> + dom->mmio_start = special_pfn(0);
>>>> + }
>>>> +
>>> Better to just assert(dom->mmio_size != 0);
>>>
>>> It's really libxl's responsibility to generate memory layout for guest.
>>> Libxc doesn't have all information to make the decision.
>> As said in a previous email, libxl doesn't know the size or position of
>> the special pages created by libxc code, so right now it's impossible
>> for libxl to create a correct mmio hole for a HVMlite guest.
>>
> Then your change here doesn't solve the real problem. You can't guarantee
> when dom->mmio_size != 0, 1) the hole is large enough to accommodate all
> special pages, 2) special pages don't clash with real mmio pages.
>
> I still think there should be only one entity that controls what guest
> memory layout looks like. And that entity should be the one which has
> all the information available. In this case, libxl should be the one who
> decides.
Layout and runtime management of guests has been in a very poor state
since forever.
This results from a combination of things not having been written down
to start with, new features bolted on the side, and bits moving around.
Even at the London Hackathon in 2013, a group of us couldn't even work
out whether it was possible for a guest with certain combinations of
features to perform correct calculates not to exhaust its PoD pool and
suffer a domian_crash().
This seems like a good opportunity to take a step back and reconsider
things from scratch with the benefit of hindsight, in the hopes of
finding a way forward which gets us into a better position.
Funnily enough, there happens to be a large collection of people
happening very shortly in Seattle, and a rumour of some whiteboards.
We should consider:
* What there is (potentially) in a guests physical address space
** MMIO holes (including high), VGA hole, RMRR holes, magic emulator
pages, magic Xen pages, ACPI reported regions, etc.
** Ancillary bits such as the PoD pool, Shadow pool, etc.
* What are the architectural and ABI restrictions which exist
* What limits exist, which are static, which are dynamic
* What needs to be known by each entity in the system
** including what shouldn't be known by certain entities.
This will hopefully present a (more) clear picture of which entity
should be making things like layout decisions, and what extra
information they need to know.
It will also hopefully show how to go about fixing the existing runtime
memory management issues.
~Andrew
next prev parent reply other threads:[~2015-08-07 18:42 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-07 10:17 [PATCH v4 00/31] Introduce HVM without dm and new boot ABI Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 01/31] libxl: fix libxl__build_hvm error handling Roger Pau Monne
2015-08-07 10:49 ` Wei Liu
2015-08-07 10:55 ` Roger Pau Monné
2015-08-07 11:03 ` Wei Liu
2015-08-07 11:28 ` Roger Pau Monné
2015-08-07 11:43 ` Wei Liu
2015-08-13 15:04 ` Ian Jackson
2015-08-13 15:06 ` Wei Liu
2015-08-16 8:01 ` Ian Campbell
2015-08-07 10:17 ` [PATCH v4 02/31] libxc: split x86 HVM setup_guest into smaller logical functions Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 03/31] libxc: unify xc_dom_p2m_{host/guest} Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 04/31] libxc: introduce the notion of a container type Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 05/31] libxc: introduce a domain loader for HVM guest firmware Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 06/31] libxc: make arch_setup_meminit a xc_dom_arch hook Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 07/31] libxc: make arch_setup_boot{init/late} xc_dom_arch hooks Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 08/31] libxc: rework BSP initialization Roger Pau Monne
2015-08-07 11:31 ` Wei Liu
2015-08-07 12:04 ` Roger Pau Monné
2015-08-07 12:06 ` Wei Liu
2015-08-07 15:30 ` Andrew Cooper
2015-08-07 15:22 ` Andrew Cooper
2015-08-07 10:17 ` [PATCH v4 09/31] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Roger Pau Monne
2015-08-07 12:00 ` Wei Liu
2015-08-07 15:58 ` Andrew Cooper
2015-08-07 10:17 ` [PATCH v4 10/31] libxl: switch HVM domain building to use xc_dom_* helpers Roger Pau Monne
2015-08-07 12:12 ` Wei Liu
2015-08-07 10:17 ` [PATCH v4 11/31] libxc: remove dead HVM building code Roger Pau Monne
2015-08-07 12:12 ` Wei Liu
2015-08-07 15:59 ` Andrew Cooper
2015-08-07 10:17 ` [PATCH v4 12/31] xen/x86: add bitmap of enabled emulated devices Roger Pau Monne
2015-08-07 16:08 ` Andrew Cooper
2015-08-07 10:17 ` [PATCH v4 13/31] xen/x86: allow disabling the emulated local apic Roger Pau Monne
2015-08-07 14:09 ` Boris Ostrovsky
2015-08-07 15:41 ` Roger Pau Monné
2015-08-07 16:11 ` Boris Ostrovsky
2015-08-07 16:18 ` Roger Pau Monné
2015-08-07 16:29 ` Andrew Cooper
2015-08-07 10:17 ` [PATCH v4 14/31] xen/x86: allow disabling the emulated HPET Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 15/31] xen/x86: allow disabling the pmtimer Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 16/31] xen/x86: allow disabling the emulated RTC Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 17/31] xen/x86: allow disabling the emulated IO APIC Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 18/31] xen/x86: allow disabling the emulated PIC Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 19/31] xen/x86: allow disabling the emulated pmu Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 20/31] xen/x86: allow disabling the emulated VGA Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 21/31] xen/x86: allow disabling the emulated IOMMU Roger Pau Monne
2015-08-07 10:17 ` [PATCH v4 22/31] xen/x86: allow disabling all emulated devices inside of Xen Roger Pau Monne
2015-08-07 16:32 ` Andrew Cooper
2015-08-07 10:18 ` [PATCH v4 23/31] elfnotes: intorduce a new PHYS_ENTRY elfnote Roger Pau Monne
2015-08-07 16:37 ` Andrew Cooper
2015-08-07 16:44 ` Wei Liu
2015-08-07 10:18 ` [PATCH v4 24/31] libxc: allow creating domains without emulated devices Roger Pau Monne
2015-08-07 12:18 ` Wei Liu
2015-08-07 16:36 ` Andrew Cooper
2015-08-17 15:55 ` Roger Pau Monné
2015-08-18 16:25 ` Andrew Cooper
2015-08-07 10:18 ` [PATCH v4 25/31] xen: allow HVM guests to use XENMEM_memory_map Roger Pau Monne
2015-08-07 12:22 ` Wei Liu
2015-08-07 15:44 ` Roger Pau Monné
2015-08-07 15:55 ` Wei Liu
2015-08-07 16:00 ` Roger Pau Monné
2015-08-07 10:18 ` [PATCH v4 26/31] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Roger Pau Monne
2015-08-07 19:03 ` Andrew Cooper
2015-08-12 8:22 ` Jan Beulich
2015-08-07 10:18 ` [PATCH v4 27/31] xenconsole: try to attach to PV console if HVM fails Roger Pau Monne
2015-08-07 12:25 ` Wei Liu
2015-08-07 10:18 ` [PATCH v4 28/31] libxc/xen: introduce HVM_PARAM_CMDLINE_PFN Roger Pau Monne
2015-08-07 12:32 ` Wei Liu
2015-08-07 17:30 ` Andrew Cooper
2015-08-18 10:01 ` Roger Pau Monné
2015-08-18 16:32 ` Andrew Cooper
2015-08-07 10:18 ` [PATCH v4 29/31] libxc/xen: introduce HVM_PARAM_MODLIST_PFN Roger Pau Monne
2015-08-07 12:36 ` Wei Liu
2015-08-07 10:18 ` [PATCH v4 30/31] libxc: switch xc_dom_elfloader to be used with HVMlite domains Roger Pau Monne
2015-08-07 17:43 ` Andrew Cooper
2015-08-07 10:18 ` [PATCH v4 31/31] libxl: allow the creation of HVM domains without a device model Roger Pau Monne
2015-08-07 12:58 ` Wei Liu
2015-08-07 15:51 ` Roger Pau Monné
2015-08-07 16:24 ` Wei Liu
2015-08-07 18:41 ` Andrew Cooper [this message]
2015-08-10 7:57 ` Paul Durrant
2015-08-07 15:18 ` Konrad Rzeszutek Wilk
2015-08-07 15:57 ` Roger Pau Monné
2015-08-07 17:52 ` Andrew Cooper
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=55C4FBF7.3060400@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=roger.pau@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--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 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.