From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [RFC PATCH V5 00/15] Implement 3-level event channel ABI in Xen Date: Tue, 19 Mar 2013 15:15:25 +0000 Message-ID: <1363706140-26989-1-git-send-email-wei.liu2@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: david.vrabel@citrix.com, jbeulich@suse.com, ian.campbell@citrix.com List-Id: xen-devel@lists.xenproject.org This is the 5th RFC series (in fact 6th because I dropped RFC in one of the series I posted) for the 3-level event channel design. Changes since V4: * Rework internal event channel object store to optimize memory usage. * Switch back to function pointers, because it has the same (or less) performance degradation compared to 'switch' statement, while at the same time it allows for clearer code structure. * Separate internal event channel inteface and ABI implementation. * Only enable 3-level event channel for Dom0, this should be a good starting point for testing. The toolstack integration is left open. * A compat shim is missing, but should be trivial to add. Changes since V3: * Dedicated EVTCHNOP for extended ABI query * Dedicated EVTCHNOP for 3-level ABI registration * 3-level ABI is registered in two phases: * register the bitmaps * register per-cpu L2 selector * libxl: evtchn_extended -> evtchn_extended_allowed Changes since V2: * new interface to register extended event channel ABI * use vmap to simplify mapping * replace MAX_EVTCHNS macro with inline function * libxl: evtchn_l3 -> evtchn_extended The most notable bit of this series is the interface change. In order to cope with future ABIs, the interface is renamed to EVTCHNOP_register_extended. It also provides supported ABI query, so that we can remove unused ABI in the future. The semantic meaning of EVTCHNOP_register_extended changes a bit. The `level' in parameter now changes to `cmd', which means we should go down to specific ABI routines. ABI-specific structures are still embedded in the union. Changes since V1: * move all evtchn related macros / struct definitions to event.h * only allow 3-level evtchn for Dom0 and driver domains * add evtchn_l3 flag in libxl Diffstat: xen/arch/arm/domain.c | 1 + xen/arch/x86/domain.c | 1 + xen/arch/x86/irq.c | 7 +- xen/common/Makefile | 1 + xen/common/event_channel.c | 404 +++++++++++++++++++++++++----------- xen/common/evtchn_bitmap_abi.c | 323 ++++++++++++++++++++++++++++ xen/common/keyhandler.c | 6 +- xen/common/schedule.c | 4 +- xen/include/asm-arm/config.h | 1 + xen/include/asm-x86/config.h | 5 +- xen/include/public/event_channel.h | 48 +++++ xen/include/public/xen.h | 35 ++-- xen/include/xen/event.h | 70 ++++++- xen/include/xen/sched.h | 31 ++- 14 files changed, 779 insertions(+), 158 deletions(-)