[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 20/20] libxl/acpi: Build ACPI tables for HVMlite guests
On 07/06/2016 12:04 PM, Julien Grall wrote: > Hi Boris, > > On 06/07/16 16:50, Boris Ostrovsky wrote: >> On 07/06/2016 07:05 AM, Julien Grall wrote: >>>> +static int populate_acpi_pages(struct xc_dom_image *dom, >>>> + xen_pfn_t *extents, >>>> + unsigned int num_pages, >>>> + struct acpi_ctxt *ctxt) >>>> +{ >>>> + int rc; >>>> + xc_interface *xch = dom->xch; >>>> + uint32_t domid = dom->guest_domid; >>>> + unsigned long idx, first_high_idx = (1ull << (32 - >>>> ctxt->page_shift)); >>>> + >>>> + for (; num_pages; num_pages--, extents++) { >>>> + >>>> + if (xc_domain_populate_physmap(xch, domid, 1, 0, 0, extents) >>>> == 1) >>> >>> It looks like this is working because libxl is setting the maximum >>> size of the domain with some slack (1MB). You might get in trouble if >>> the slack is reduced or used by someone or the ACPI blob is increasing. >> >> >> I saw your conversation about slack with Stefano and I am not sure I >> understood what it was about. If this was about padding guest's memory >> to be able to put there some additional data (such ACPI tables) then >> this is not my intention here: if I can't populate (because it is >> already populated, I guess) then I try to move memory around with code >> below. That's what mem_hole_populate_ram() does as well. > > The maximum amount of memory that could be assigned to a domain is > fixed per-domain. This maximum amount does not take into account the > size of the ACPI blob. So you may end up to fail because all the > memory was assigned somewhere else. Why shouldn't max amount of guest's memory include ACPI tables? I think we should fail and not rely on this slack if no more memory is available. ... > >> >>> However, as mentioned in the ACPI thread [1], all the blobs are >>> generally loaded by libxc and not libxl. This is more true on ARM >>> because the guest address space is controlled by libxc (the position >>> of all the blob are decided by it). >> >> The difference is that I not only load the tables here but also build >> them. Which may or may not be the right thing to do in libxc. >> >> I suppose I can defer loading (and then keep pointer to tables in >> acpitable_blob) but the then I need to keep RSDP descriptor somewhere >> else (it is not part of the blob since it lives in lower MB of the >> guest). > > The device tree for ARM are built in libxl and loaded for libxc. IHMO, > it would be strange to have a different pattern for ACPI. Is RSDP part of the ACPI blob for ARM? If not, how do you load it? -boris _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |