xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xen.org
Cc: Keir Fraser <keir@xen.org>,
	David Vrabel <david.vrabel@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCHv4 0/11] Xen: FIFO-based event channel ABI
Date: Fri, 27 Sep 2013 11:55:48 +0100	[thread overview]
Message-ID: <1380279359-28817-1-git-send-email-david.vrabel@citrix.com> (raw)

This is a complete implementation of the hypervisor and xl toolstack
parts of the FIFO-based event channel ABI described in this design
document:

http://xenbits.xen.org/people/dvrabel/event-channels-F.pdf

Changes in draft F are:

- READY field in the control block is now 32-bits (so guests only need
  to support atomic bit ops on 32-bit words).  This is only a
  documentation change as the implementation already used a uint32_t.

- DOMCTL_set_max_evtchn replaces EVTCHNOP_set_limit.

- DomUs default to unlimited number of event channels requiring
  the toolstack to set a limit.

The toolstack defaults to limiting guests to 127 event channels if the
event_channels option is omitted.  This means the minimum amount of
both Xen heap and global mapping space is used regardless of which ABI
is used.  If this is considered too restrictive a limit, 1023 would be
another sensible default (limits the guest to a single event array
page but 5 xenheap pages for the struct evtchns).

An updated version of the Linux patch series is not quite ready yet.
There is one remaining issue but fixing this will not require any
changes to the hypervisor ABI or implementation.  The remaining issue
requires preallocating space in the evtchn-to-irq map as this cannot
be expanded in pirq_startup() (since this function cannot return a
failure).

The latest Linux changes can be found in the orochi-v4w branch of:

  git://xenbits.xen.org/people/dvrabel/linux.git

Patch 1-4 do some preparatory work for supporting alternate ABIs.

Patch 5 expands the number of evtchn objects a domain may have by
changing how they are allocated.

Patch 6 adds the public ABI.

Patch 7 adds the EVTCHNOP_set_priority implementation.  This will
return -ENOSYS for ABIs that do not support priority.

Patch 8 adds the FIFO-based ABI implementation.

Patch 9-10 adds the DOMCTL_set_max_evtchn implementation and adds a
function to libxc. This will also work with the 2-level ABI.

Patch 11 add the event_channels configuration option to xl and libxl
bits needed for this.

Changes in v4:

- Updates for Draft F of the design.
- DOMCTL_set_max_evtchn replaces EVTCHNOP_set_limit.
- Hypervisor defaults to unlimited event channels for for DomU.
- Optimized memory allocation for struct evtchn's when fewer than 128
  are required (see patch 5).
- Added event_channels option to the xl domain configuration file and
  plumbed this through libxl_build_info.  Defaults to 127.

Changes in v3:

- Updates for Draft E of the design.
- Store priority in struct evtchn.
- Implement set_priority with generic code + hook.
- Implement set_limit and add libxc function.
- Add ABI specific output to 'e' debug key.

Changes in v2:

- Updates for Draft D of the design.
- 130,000+ event channels are now supported.
- event_port.c -> event_2l.c and only contains 2l functions.
- Addresses various review comments
  - int -> unsigned in lots of places
  - use write_atomic() to set HEAD
  - removed MAX_EVTCHNS
  - evtchn_ops are const.
- Pack struct evtchns better to reduce memory needed.

             reply	other threads:[~2013-09-27 10:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-27 10:55 David Vrabel [this message]
2013-09-27 10:55 ` [PATCH 01/11] debug: remove some event channel info from the 'i' and 'q' debug keys David Vrabel
2013-09-27 10:55 ` [PATCH 02/11] evtchn: refactor low-level event channel port ops David Vrabel
2013-09-27 10:55 ` [PATCH 03/11] evtchn: print ABI specific state with the 'e' debug key David Vrabel
2013-09-27 10:55 ` [PATCH 04/11] evtchn: use a per-domain variable for the max number of event channels David Vrabel
2013-09-27 10:55 ` [PATCH 05/11] evtchn: allow many more evtchn objects to be allocated per domain David Vrabel
2013-09-27 10:55 ` [PATCH 06/11] evtchn: add FIFO-based event channel ABI David Vrabel
2013-09-27 10:55 ` [PATCH 07/11] evtchn: implement EVTCHNOP_set_priority and add the set_priority hook David Vrabel
2013-09-27 10:55 ` [PATCH 08/11] evtchn: add FIFO-based event channel hypercalls and port ops David Vrabel
2013-09-27 12:34   ` Jan Beulich
2013-09-27 10:55 ` [PATCH 09/11] xen: Add DOMCTL to limit the number of event channels a domain may use David Vrabel
2013-09-27 12:40   ` Jan Beulich
2013-09-27 14:29   ` Daniel De Graaf
2013-09-27 10:55 ` [PATCH 10/11] libxc: add xc_domain_set_max_evtchn() David Vrabel
2013-10-01 12:30   ` Ian Campbell
2013-09-27 10:55 ` [PATCH 11/11] libxl, xl: add event_channels option to xl configuration file David Vrabel
2013-10-01 12:36   ` Ian Campbell
2013-10-01 12:53     ` David Vrabel
2013-09-27 12:41 ` [PATCHv4 0/11] Xen: FIFO-based event channel ABI Jan Beulich
2013-09-30 18:41 ` Konrad Rzeszutek Wilk
2013-10-01 10:25   ` Jan Beulich
2013-10-01 14:22     ` Konrad Rzeszutek Wilk
2013-10-01 14:41       ` Jan Beulich

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=1380279359-28817-1-git-send-email-david.vrabel@citrix.com \
    --to=david.vrabel@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --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).