From: Ian Campbell <ian.campbell@citrix.com>
To: xen-devel <xen-devel@lists.xen.org>
Cc: Wei Liu <wei.liu2@citrix.com>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [Minios-devel] [PATCH v4 0/<VARIOUS>] Begin to disentangle libxenctrl and provide some stable libraries
Date: Mon, 9 Nov 2015 12:02:50 +0000 [thread overview]
Message-ID: <1447070570.27774.13.camel@citrix.com> (raw)
In-Reply-To: <1445442435.9563.184.camel@citrix.com>
I've just sent out v5. Anyone got any thoughts on how to proceed with qemu-
xen?
On Wed, 2015-10-21 at 16:47 +0100, Ian Campbell wrote:
> (Trimming CCs a bit)
>
> On Wed, 2015-10-21 at 16:22 +0100, Ian Campbell wrote:
> >
> [...]
> > Still to come would be libraries for specific out of tree purposes
> > (device model, kexec), which would be adding new library at the same
> > level as libxc I think, rather than underneath, i.e. also using the
> > libraries split out here, but hopefully not libxenctrl itself.
>
> Next steps for qemu-xen, with reference to:
>
> http://xenbits.xen.org/people/ianc/libxenctrl-split/v4.html#by-functional-area
>
> First the two simple cases:
>
> The PV backend support now only (I think) uses got from these new libraries.
>
> The PV domain builder is now configured off by default, I don't intend to
> make this
> use a stable API so when enabling this qemu will then be linked against the
> unstable
> libxen{guest,ctrl} libraries.
>
> Now the more complex cases.
>
> The actual DM functionality looks in reasonably good shape, from the
> pandoc
> source to the above (the "S" columns represent whether the column to the
> left is a stable interface or not):
>
> Interface S Underlying Interface S Other users
> ---------------------------------- - ------------------------------ - ---------------
> `xenevtchn_bind_interdomain` Y
> `xenevtchn_close` Y
> `xenevtchn_fd` Y
> `xenevtchn_notify` Y
> `xenevtchn_open` Y
> `xenevtchn_pending` Y
> `xenevtchn_unmask` Y
> `xenforeignmemory_map` Y
> `xenforeignmemory_open` Y
> `xenforeignmemory_unmap` Y
> `xc_domain_add_to_physmap` N `XENMEM_add_to_physmap` Y libxc (dombuilder)
> `xc_domain_populate_physmap_exact` N `XENMEM_populate_physmap` Y libxc (several)
> `xc_domain_pin_memory_cacheattr` N `XEN_DOMCTL_pin_mem_cacheattr` N None
> `xc_domain_shutdown` N `SCHEDOP_remote_shutdown` Y libxl
> `xc_set_hvm_param` N `HVM_PARAM_ACPI_S_STATE` Y None
> `xc_hvm_inject_msi` N `HVMOP_inject_msi` Y None
> `xc_hvm_modified_memory` N `HVMOP_modified_memory` Y None
> `xc_hvm_set_isa_irq_level` N `HVMOP_set_isa_irq_level` Y None
> `xc_hvm_set_mem_type` N `HVMOP_set_mem_type` Y None
> `xc_hvm_set_pci_intx_level` N `HVMOP_set_pci_intx_level` Y None
> `xc_hvm_set_pci_link_route` N `HVMOP_set_pci_link_route` Y None
> `xc_hvm_track_dirty_vram` N `HVMOP_track_dirty_vram` Y None
> `xc_hvm_unmap_io_range_from_ir...` N `HVMOP_IO_RANGE_(PORT|MEM...)` Y None
> `xc_hvm_unmap_pcidev_from_iore...` N `HVMOP_unmap_io_range_from...` Y None
>
> I think it would be reasonable to add a new library (say,
> libxendevicemodel, for arguments sake) with a stable ABI and to move all
> of the xc_hvm_* above into it. They are not used for anything else and
> are based on HVMOP which is a stable interface (AFAIK).
>
> Within qemu xc_domain_add_to_physmap and xc_domain_pin_memory_cacheattr are
> used in tandem solely to populate VRAM with WB memory and to remove again.
>
> xc_domain_populate_physmap_exact is used only to populate RAM and
> xc_domain_shutdown is used on shutdown.
>
> I think having three or four functions in libxendevicemodel which offer
> these exact facilities while retaining the underlying (possibly more
> flexible) functionality in libxenctrl for other users (dombuilder, other in
> tree tools) would be tolerable.
>
> Three or four functions depends on whether the uses of
> xc_domain_add_to_physmap+xc_domain_pin_memory_cacheattr and
> xc_domain_populate_physmap_exact can be satisfied with a single API or not.
> I don't know that yet.
>
> The main question would then be whether libxendevicemodel should wrap
> libxenctrl in a stable layer or whether it should actually duplicate the
> functionality in the thin wrappers.
>
> Wrapping libxenctrl would mean that libxendevicemodel would need to be
> built by all releases with a fixed ABI such that the corresponding one
> (linking against the correct libxenctrl) can be flipped into place on boot.
> I think that is going to be too tricky for distros and users a like and
> that the small amount of duplication is therefore more tolerable.
>
> The only blocker for that is that xc_domain_pin_memory_cacheattr is
> XEN_DOMCTL_pin_mem_cacheattr (i.e. not stable), but this route would either
> require it to move to a stable hypercall interface or for the library to
> DTRT for all versions. I think moving to a stable h/call interface is more
> feasible.
>
> In terms of deprivileging QEMU (one of the end goals of this work) I think
> all the xen* libraries could very easily gain a xen???_set_target_domain
> which would make an appropriate ioctl to lock the underlying fd into
> operating only on that domain (another argument in finding a way to do
> pin_mem_cacheattr as a stable API). This would require support from all the
> underlying drivers, but could be added right away with errno=ENOTTY +
> return -1 and then plumbed in later. Obviously qemu would need to check the
> return values.
>
> The PCI passthrough case is less clear:
>
> Interface S Underlying Interface S Other users
> ---------------------------------- - ------------------------------ - ---------------
> `xc_domain_bind_pt_pci_irq` N `XEN_DOMCTL_bind_pt_irq` N None
> `xc_domain_ioport_mapping` N `XEN_DOMCTL_ioport_mapping` N None
> `xc_domain_memory_mapping` N `XEN_DOMCTL_memory_mapping` N libxl
> `xc_domain_unbind_msi_irq` N `XEN_DOMCTL_unbind_pt_irq` N None
> `xc_domain_unbind_pt_irq` N `XEN_DOMCTL_unbind_pt_irq` N None
> `xc_domain_update_msi_irq` N `XEN_DOMCTL_bind_pt_irq` N None
> `xc_physdev_map_pirq` N `PHYSDEVOP_map_pirq` Y libxl
> `xc_physdev_map_pirq_msi` N `PHYSDEVOP_map_pirq` Y None
> `xc_physdev_unmap_pirq` N `PHYSDEVOP_unmap_pirq` Y libxl
>
> NB: More might be used by libxl in the future e.g. for ARM or PVH
> passthrough?
>
> It seems like much of this would be candidates for adding to
> libxendevicemodel, but the underlying unstable interfaces pose a problem
> there. I'm going to leave this for another day.
>
> Ian.
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-11-09 12:02 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-21 15:22 [PATCH v4 0/<VARIOUS>] Begin to disentangle libxenctrl and provide some stable libraries Ian Campbell
2015-10-21 15:23 ` [PATCH XEN v4 00/23] " Ian Campbell
2015-10-21 15:23 ` [PATCH XEN v4 01/23] tools/Rules.mk: Properly handle libraries with recursive dependencies Ian Campbell
2015-10-29 16:27 ` Wei Liu
2015-11-02 14:20 ` Ian Campbell
2015-10-21 15:23 ` [PATCH XEN v4 02/23] tools: Refactor "xentoollog" into its own library Ian Campbell
2015-10-29 16:27 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 03/23] tools/libxc: Remove osdep indirection for xc_evtchn Ian Campbell
2015-10-29 16:27 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 04/23] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn Ian Campbell
2015-10-29 16:27 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 05/23] tools: Arrange to check public headers for ANSI compatiblity Ian Campbell
2015-10-29 16:27 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 06/23] tools/libxc: Remove osdep indirection for xc_gnt{shr, tab} Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 07/23] tools: Refactor /dev/xen/gnt{dev, shr} wrappers into libxengnttab Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-11-04 16:08 ` Ian Campbell
2015-10-21 15:23 ` [PATCH XEN v4 08/23] tools/libxc: Remove osdep indirection for privcmd Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 09/23] tools: Refactor hypercall calling wrappers into libxencall Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 10/23] tools/libxc: drop xc_map_foreign_bulk_compat wrappers Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 11/23] tools: Remove xc_map_foreign_batch Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 12/23] tools: Implement xc_map_foreign_range(s) in terms of common helper Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 13/23] tools: Refactor foreign memory mapping into libxenforeignmemory Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 14/23] tools: foreignmemory: provide xenforeignmemory_unmap Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 15/23] foreignmemory: use size_t for size arguments Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 16/23] tools/libs/evtchn: Review and update doc comments Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 17/23] tools/libs: Clean up hard tabs Ian Campbell
2015-10-29 16:28 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 18/23] tools/libs/gnttab: Review and update doc comments Ian Campbell
2015-10-29 16:29 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 19/23] tools/libs/call: Update some log messages to not refer to xc Ian Campbell
2015-10-29 16:29 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 20/23] tools/libs/call: Avoid xc_memalign in netbsd and solaris backends Ian Campbell
2015-10-29 16:29 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 21/23] tools/libs/foreignmemory: Mention restrictions on fork in docs Ian Campbell
2015-10-29 16:29 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 22/23] tools: Update CFLAGS for qemu-xen to allow it to use new libraries Ian Campbell
2015-10-29 16:29 ` Wei Liu
2015-10-21 15:23 ` [PATCH XEN v4 23/23] HACK: Update Config.mk to pull all the right bits from my xenbits trees Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 0/9] Begin to disentangle libxenctrl and provide some stable libraries Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 1/9] xen_console: correctly cleanup primary console on teardown Ian Campbell
2015-10-22 16:46 ` Stefano Stabellini
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 2/9] xen: Switch to libxenevtchn interface for compat shims Ian Campbell
2015-10-23 11:06 ` Stefano Stabellini
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 3/9] xen: Switch to libxengnttab " Ian Campbell
2015-10-23 11:06 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1510221754220.15801@kaball.uk.xensource.com>
2015-10-23 11:15 ` Ian Campbell
2015-10-23 12:42 ` Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 4/9] xen: Switch uses of xc_map_foreign_range into xc_map_foreign_bulk Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 5/9] xen: Switch uses of xc_map_foreign_pages " Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 6/9] xen: Switch uses of xc_map_foreign_bulk to use libxenforeignmemory API Ian Campbell
2015-10-23 11:06 ` Stefano Stabellini
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 7/9] xen: Use stable library interfaces when they are available Ian Campbell
2015-10-23 11:31 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1510231214140.15801@kaball.uk.xensource.com>
2015-10-23 12:25 ` Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 8/9] xen: domainbuild: reopen libxenctrl interface after forking for domain watcher Ian Campbell
2015-10-21 15:23 ` [PATCH QEMU-XEN v4 9/9] xen: make it possible to build without the Xen PV domain builder Ian Campbell
2015-10-22 11:07 ` Ian Campbell
2015-10-23 11:12 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1510231209070.15801@kaball.uk.xensource.com>
2015-10-23 11:19 ` Ian Campbell
[not found] ` <1445599197.2374.127.camel@citrix.com>
2015-10-23 11:35 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1510231235120.15801@kaball.uk.xensource.com>
2015-10-23 12:23 ` Ian Campbell
[not found] ` <1445441038-25903-5-git-send-email-ian.campbell@citrix.com>
2015-10-23 11:07 ` [PATCH QEMU-XEN v4 4/9] xen: Switch uses of xc_map_foreign_range into xc_map_foreign_bulk Stefano Stabellini
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 0/5] Begin to disentangle libxenctrl and provide some stable libraries Ian Campbell
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 1/5] qemu-xen-traditional: Use xentoollog as a separate library Ian Campbell
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 2/5] qemu-xen-traditional: Use libxenevtchn Ian Campbell
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 3/5] qemu-xen-traditional: Use libxengnttab Ian Campbell
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 4/5] qemu-xen-traditional: Add libxencall to rpath-link Ian Campbell
2015-10-21 15:24 ` [PATCH QEMU-XEN-TRADITIONAL v4 5/5] qemu-xen-traditional: Add libxenforeignmemory " Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 0/5] Begin to disentangle libxenctrl and provide some stable libraries Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 1/5] mini-os: Include libxentoollog with libxc Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 2/5] mini-os: Include libxenevtchn " Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 3/5] mini-os: Include libxengnttab " Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 4/5] mini-os: Include libxencall " Ian Campbell
2015-10-21 15:24 ` [PATCH MINI-OS v4 5/5] mini-os: Include libxenforeignmemory " Ian Campbell
2015-10-22 20:42 ` [PATCH MINI-OS v4 0/5] Begin to disentangle libxenctrl and provide some stable libraries Samuel Thibault
2015-10-23 9:43 ` Ian Campbell
2015-10-26 14:43 ` Wei Liu
2015-10-21 15:47 ` [Minios-devel] [PATCH v4 0/<VARIOUS>] " Ian Campbell
2015-11-09 12:02 ` Ian Campbell [this message]
2015-11-19 16:20 ` Stefano Stabellini
2015-11-19 17:01 ` Ian Campbell
2015-11-20 11:07 ` Stefano Stabellini
2015-11-20 11:24 ` Ian Campbell
2015-11-20 14:11 ` Stefano Stabellini
2015-11-20 11:38 ` Ian Campbell
2015-11-20 11:40 ` Ian Campbell
2015-11-20 13:49 ` Stefano Stabellini
2015-11-23 12:49 ` Ian Campbell
2015-12-03 9:44 ` Ian Campbell
-- strict thread matches above, loose matches on Subject: below --
2015-11-09 11:59 Ian Campbell
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=1447070570.27774.13.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=roger.pau@citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.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).