Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751484AbdFBTdz (ORCPT ); Fri, 2 Jun 2017 15:33:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:55916 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751301AbdFBTcB (ORCPT ); Fri, 2 Jun 2017 15:32:01 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCD4F239FF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=sstabellini@kernel.org Date: Fri, 2 Jun 2017 12:31:45 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-X260 To: xen-devel@lists.xen.org cc: linux-kernel@vger.kernel.org, sstabellini@kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com Subject: [PATCH v3 00/18] introduce the Xen PV Calls backend Message-ID: User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2872 Lines: 75 Hi all, this series introduces the backend for the newly introduced PV Calls procotol. PV Calls is a paravirtualized protocol that allows the implementation of a set of POSIX functions in a different domain. The PV Calls frontend sends POSIX function calls to the backend, which implements them and returns a value to the frontend and acts on the function call. For more information about PV Calls, please read: https://xenbits.xen.org/docs/unstable/misc/pvcalls.html I tried to split the source code into small pieces to make it easier to read and understand. Please review! Changes in v3: - added reviewed-bys - return err from pvcalls_back_probe - remove old comments - use a xenstore transaction in pvcalls_back_probe - ignore errors from xenbus_switch_state - rename pvcalls_back_priv to pvcalls_fedata - remove addr from backend_connect - remove priv->work, add comment about theoretical race - use IPPROTO_IP - refactor active socket allocation in a single new function Changes in v2: - allocate one ioworker per socket (rather than 1 per vcpu) - rename privs to frontends - add newlines - define "1" in the public header - better error returns in pvcalls_back_probe - do not set XenbusStateClosed twice in set_backend_state - add more comments - replace rw_semaphore with semaphore - rename pvcallss to socket_lock - move xenbus_map_ring_valloc closer to first use in backend_connect - use more traditional return codes from pvcalls_back_handle_cmd and callees - remove useless dev == NULL checks - replace lock_sock with more appropriate and fine grained socket locks Stefano Stabellini (18): xen: introduce the pvcalls interface header xen/pvcalls: introduce the pvcalls xenbus backend xen/pvcalls: initialize the module and register the xenbus backend xen/pvcalls: xenbus state handling xen/pvcalls: connect to a frontend xen/pvcalls: handle commands from the frontend xen/pvcalls: implement socket command xen/pvcalls: implement connect command xen/pvcalls: implement bind command xen/pvcalls: implement listen command xen/pvcalls: implement accept command xen/pvcalls: implement poll command xen/pvcalls: implement release command xen/pvcalls: disconnect and module_exit xen/pvcalls: implement the ioworker functions xen/pvcalls: implement read xen/pvcalls: implement write xen: introduce a Kconfig option to enable the pvcalls backend drivers/xen/Kconfig | 12 + drivers/xen/Makefile | 1 + drivers/xen/pvcalls-back.c | 1228 ++++++++++++++++++++++++++++++++++++ include/xen/interface/io/pvcalls.h | 121 ++++ include/xen/interface/io/ring.h | 2 + 5 files changed, 1364 insertions(+) create mode 100644 drivers/xen/pvcalls-back.c create mode 100644 include/xen/interface/io/pvcalls.h