[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 Mon, Jul 11, 2016 at 10:40:17AM -0400, Boris Ostrovsky wrote: > On 07/11/2016 09:41 AM, Wei Liu wrote: > > On Mon, Jul 11, 2016 at 09:33:21AM -0400, Boris Ostrovsky wrote: > >> On 07/11/2016 06:47 AM, Wei Liu wrote: > >>> On Fri, Jul 08, 2016 at 01:20:46PM -0400, Boris Ostrovsky wrote: > >>>> On 07/08/2016 12:07 PM, Wei Liu wrote: > >>>>> On Fri, Jul 08, 2016 at 10:48:52AM -0400, Boris Ostrovsky wrote: > >>>>>> On 07/08/2016 06:55 AM, Wei Liu wrote: > >>>>>>>> + > >>>>>>>> + /* Map page that will hold RSDP */ > >>>>>>>> + extent = RSDP_ADDRESS >> ctxt.page_shift; > >>>>>>>> + rc = populate_acpi_pages(dom, &extent, 1, &ctxt); > >>>>>>>> + if (rc) { > >>>>>>>> + LOG(ERROR, "%s: populate_acpi_pages for rsdp failed with > >>>>>>>> %d", > >>>>>>>> + __FUNCTION__, rc); > >>>>>>>> + goto out; > >>>>>>>> + } > >>>>>>>> + config.rsdp = (unsigned long)xc_map_foreign_range(xch, domid, > >>>>>>>> + > >>>>>>>> ctxt.page_size, > >>>>>>>> + PROT_READ | > >>>>>>>> PROT_WRITE, > >>>>>>>> + RSDP_ADDRESS > >>>>>>>> >> ctxt.page_shift); > >>>>>>> I think with Anthony's on-going work you should be more flexible for > >>>>>>> all > >>>>>>> you tables. > >>>>>> Not sure I understand what you mean here. You want the address > >>>>>> (RSDP_ADDRESS) to be a variable as opposed to a macro? > >>>>>> > >>>>> I'm still trying to wrap my head around the possible interaction between > >>>>> Anthony's work and your work. > >>>>> > >>>>> Anthony's work allows dynamically loading of firmware blobs. If you use > >>>>> a fixed address, theoretically it can clash with firmware blobs among > >>>>> other things libxc can load. The high address is a safe bet so that > >>>>> probably won't happen in practice. > >>>>> > >>>>> Anthony's work allows loading arbitrary blobs actually. Can you take > >>>>> advantage of that mechanism as well? That is, to specify all your tables > >>>>> as modules and let libxc handle actually loading them into guest > >>>>> memory. > >>>>> > >>>>> Does this make sense? > >>>>> > >>>>> Also CC Anthony here. > >>>> My understanding of Anthony's series is that its goal was to provide an > >>>> interface to pass DSDT (and maybe some other tables) from the toolstack > >>>> to hvmloader. > >>>> > >>>> Here we don't have hvmloader, we are loading the tables directly into > >>>> guest's memory. > >>>> > >>> Do you use the same hvm_start_info structure? I don't think that > >>> structure is restricted to hvmloader. > >> > >> Yes, we do. However, in PVH(v2) case it will be seen next by the guest > >> who will expect the tables to already be in memory. I.e. there is no > >> intermediate Xen component, such as hvmloader, who can load the blobs. > >> > > Maybe you misunderstood. Anthony's work will load the blobs into guest > > memory -- all fields in hvm_start_info points to guest physical address > > IIRC. Hvmloader might want to relocate them, but that's a different > > matter. > > What's the status on Anthony's series? I can rebase on top of his tree > (I might indeed be able to reuse some of his code) but if this is way > off the dependencies become problematic (because Shannon's series would > also be delayed). > His series is very close to get merged. I believe toolstack in his series only require cosmetic changes and hvmloader patches are all acked. > > > >> Having said that, I wonder whether we (both x86 and ARM) could use > >> Anthony's xc_dom_image.full_acpi_module instead > > > (no full_acpi_module anymore, I was looking at an earlier series > version. I guess it's system_firmware_module now) > > > >> of acpitables_blob that > >> Shannon's series added. (even if we can't, I think > >> xc_hvm_firmware_module is the right datastructure to store the blob > >> since it has both toolstack's virtual and guest's physical addresses). > >> > > Yes, that's along the line I'm thinking about. > > So I am confused about xc_hvm_firmware_mode: is guest_addr_out meant to > be guest's physical or virtual? > > One one hand it looks like virtual: > > in > https://lists.xenproject.org/archives/html/xen-devel/2016-06/msg02901.html > + module->guest_addr_out = seg.vstart; > > but then in > https://lists.xenproject.org/archives/html/xen-devel/2016-06/msg02902.html > > + modlist[index].paddr = module->guest_addr_out; > It should be guest physical. Wei. > > -boris > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |