xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
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

  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).