[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 16/17] libxc/xc_dom_arm: Copy ACPI tables to guest space
On 07/25/2016 07:40 PM, Stefano Stabellini wrote: On Mon, 25 Jul 2016, Boris Ostrovsky wrote:On 07/25/2016 06:06 PM, Stefano Stabellini wrote:On Mon, 25 Jul 2016, George Dunlap wrote:On Thu, Jul 21, 2016 at 10:15 PM, Stefano Stabellini <sstabellini@xxxxxxxxxx> wrote:You are assuming that the guest will map the ACPI blob with the same attributes as the rest of the superpage. IHMO, a sane operating system will want to map the ACPI blob read-only.That's true. But there are other things which might be mapped differently and could shatter a stage-1 superpage mapping (especially on x86 that has a much more complex memory map than ARM). Obviously adding one more is not doing it any good, but it might not make a difference in practice. Anyway, I agree with Julien that his suggestion is the best for ARM. If the libxl maintainers are willing to accept two different code paths for this on ARM and x86, then I am fine with it too.Sorry to be a bit late to this thread -- there's a interface principle that I think we should at some point have a larger discussion about: whether "maxmem" means the amount of RAM which the guest sees as RAM, or whether "maxmem" means the amount of RAM that the administrator sees as used by the guest. At the moment tnhere's no consistent answer actually; but I am strongly of the opinion that for usability the best answer is for "memory" to be the *total* amount of *host* memory used by the guest. In an ideal world, the admin should be able to do "xl info", see that there is 3000MiB free, and then start a guest with 3000MiB and expect it to succeed. At the moment he has to guess.I don't want to add to the confusion, but maxmem is often higher than the actual memory allocated for the guest at any given moment, given that it's the upper limit enforced by the hypervisor (maxmem and mem are often different, think about ballooning). So how can it be "the amount of RAM that the administrator sees as used by the guest"? At best it could be "the amount of RAM that the administrator sees could be at most used by the guest" or "the amount of RAM that the administrator sees as allocated on behalf of the guest at boot".To confirm, do you include memory allocated by the hypervisor to keep track of the guest (i.e struc domain, struct vcpu...)? If not, the problem stays the same because the admin will have to know how much memory Xen will allocate to keep track of the guest. So if "xl info" tells you that 3000MiB is free, you will only be able to use 3000MiB - few kilobytes.That's right, unfortunately all those structs allocated by the hypervisor are completely unknown to the tootlstack. However they should be an order of magnitude or two smaller than things like the videoram, the ethernet blob (on x86) or the ACPI blob. So taking the memory for ACPI and videoram from the existing maxmem pool without increasing it, would significantly improve, but not completely solve, the problem described by George. Going back to the discussion about how to account for the ACPI blob in maxmem, let's make this simple, if we increase maxmem by the size of the ACPI blob: - the toolstack allocates more RAM than expected (bad) - when the admin specifies 1GB of RAM, the guest actually gets 1GB of usable RAM (good) - things are faster as Xen and the guest can exploit superpage mappings more easily at stage-1 and stage-2 (good) Let's call this option A. If we do not increase maxmem: - the toolstack allocates less RAM, closer to the size specified in the VM config file (good) - the guest gets less usable memory than expected, less than what was specified in the VM config file (bad)Not sure I agree with this, at least for x86/Linux: guest gets 1GB of usable RAM and part of that RAM stores ACPI stuff. Guest is free to stash ACPI tables somewhere else or ignore them altogether and use that memory for whatever it wants.On ARM it will be a ROM (from guest POV) In which case I don't see why we should take it from maxmem allocation. I somehow thought that there was a choice of whether to put it in ROM or RAM on ARM but if it's ROM only then I don't think there is an option. IIUIC the toolstack pretends that the blob goes to memory because that's how its interfaces work but that space is not really what we think about when we set memory/maxmem in the configuration file. Unlike x86. -boris _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |