From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: [PATCHv3 0/11] Xen: FIFO-based event channel ABI Date: Fri, 13 Sep 2013 17:56:02 +0100 Message-ID: <1379091373-30293-1-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Keir Fraser , David Vrabel , Jan Beulich List-Id: xen-devel@lists.xenproject.org This is a complete implementation of the hypervisor parts of the FIFO-based event channel ABI described in this design document: http://xenbits.xen.org/people/dvrabel/event-channels-E.pdf Changes in draft E are: - Control blocks are no longer required to be in the same page as the vcpu_info. - Added padding to struct evtchn_init_control. Remaining work: * Extend libxl and xl to allow the event channel limit to be set. Without this DomUs are limited the default number of event channels (4096). I use a trivial C program to set the limit. * Decide whether EVTCHNOP_set_limit should be a DOMCTL instead. * Allocation of struct event channels to use less memory when fewer event channels are in use. I plan to have d->evtchns point to a page contains N struct evtchns and M group pointers with the remainder event channels being indexed by group/bucket in patch 6. Patch 1-4 do some preparatory work for supporting alternate ABIs. Patch 5-6 expand the number of evtchn objects a domain may have to changing how they are allocated. Patch 7 adds the ABI. Patch 8 adds the EVTCHNOP_set_priority implementation. This will return -ENOSYS for ABIs that do not support priority. Patch 9-10 adds the EVTCHNOP_set_limit implementation and adds a function to libxc. This will also work with the 2-level ABI. Patch 11 adds the FIFO-based ABI implementation. 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.