[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCHv4 0/11] Xen: FIFO-based event channel ABI

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


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

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


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.

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.