linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/18] introduce the Xen PV Calls backend
@ 2017-06-15 19:09 Stefano Stabellini
  2017-06-15 19:09 ` [PATCH v4 01/18] xen: introduce the pvcalls interface header Stefano Stabellini
  0 siblings, 1 reply; 43+ messages in thread
From: Stefano Stabellini @ 2017-06-15 19:09 UTC (permalink / raw)
  To: xen-devel; +Cc: linux-kernel, sstabellini, jgross, boris.ostrovsky

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 v4:
- add reviewed-bys
- fix return values of many functions
- remove pointless initializers
- print a warning if ring_order > MAX_RING_ORDER
- remove map->ioworker.cpu
- use queue_work instead of queue_work_on
- add sock_release() on error paths where appropriate
- add a comment in __pvcalls_back_accept about racing with
  pvcalls_back_accept and atomicity of reqcopy
- remove unneded (void*) casts
- remove unneded {}
- fix backend_disconnect if !mappass
- remove pointless continue in backend_disconnect
- remove pointless memset of &pvcalls_back_global
- pass *opaque to pvcalls_conn_back_read
- improve WARN_ON in pvcalls_conn_back_read
- fix error checks in pvcalls_conn_back_write
- XEN_PVCALLS_BACKEND depends on XEN_BACKEND
- rename priv to fedata across all patches

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         | 1232 ++++++++++++++++++++++++++++++++++++
 include/xen/interface/io/pvcalls.h |  121 ++++
 include/xen/interface/io/ring.h    |    2 +
 5 files changed, 1368 insertions(+)
 create mode 100644 drivers/xen/pvcalls-back.c
 create mode 100644 include/xen/interface/io/pvcalls.h

^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2017-06-23  9:39 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-15 19:09 [PATCH v4 00/18] introduce the Xen PV Calls backend Stefano Stabellini
2017-06-15 19:09 ` [PATCH v4 01/18] xen: introduce the pvcalls interface header Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 02/18] xen/pvcalls: introduce the pvcalls xenbus backend Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 03/18] xen/pvcalls: initialize the module and register the " Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 04/18] xen/pvcalls: xenbus state handling Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 05/18] xen/pvcalls: connect to a frontend Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 06/18] xen/pvcalls: handle commands from the frontend Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 07/18] xen/pvcalls: implement socket command Stefano Stabellini
2017-06-20 15:49     ` Boris Ostrovsky
2017-06-20 16:11     ` [Xen-devel] " Roger Pau Monné
2017-06-21 20:16       ` Stefano Stabellini
2017-06-22  8:26         ` Roger Pau Monné
2017-06-22 18:29           ` Stefano Stabellini
2017-06-22 18:36             ` Andrew Cooper
2017-06-22 18:38               ` Stefano Stabellini
2017-06-23  9:39             ` Roger Pau Monné
2017-06-15 19:09   ` [PATCH v4 08/18] xen/pvcalls: implement connect command Stefano Stabellini
2017-06-20 15:43     ` Boris Ostrovsky
2017-06-20 15:47       ` Boris Ostrovsky
2017-06-21 20:26         ` Stefano Stabellini
2017-06-21 20:25       ` Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 09/18] xen/pvcalls: implement bind command Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 10/18] xen/pvcalls: implement listen command Stefano Stabellini
2017-06-20 15:51     ` Boris Ostrovsky
2017-06-15 19:09   ` [PATCH v4 11/18] xen/pvcalls: implement accept command Stefano Stabellini
2017-06-20 16:02     ` Boris Ostrovsky
2017-06-21 20:29       ` Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 12/18] xen/pvcalls: implement poll command Stefano Stabellini
2017-06-20 16:43     ` Boris Ostrovsky
2017-06-21 20:39       ` Stefano Stabellini
2017-06-21 20:55         ` Boris Ostrovsky
2017-06-21 21:49           ` Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 13/18] xen/pvcalls: implement release command Stefano Stabellini
2017-06-20 17:15     ` Boris Ostrovsky
2017-06-21 21:33       ` Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 14/18] xen/pvcalls: disconnect and module_exit Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 15/18] xen/pvcalls: implement the ioworker functions Stefano Stabellini
2017-06-20 17:26     ` Boris Ostrovsky
2017-06-15 19:09   ` [PATCH v4 16/18] xen/pvcalls: implement read Stefano Stabellini
2017-06-21 22:37     ` Boris Ostrovsky
2017-06-21 23:32       ` Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 17/18] xen/pvcalls: implement write Stefano Stabellini
2017-06-15 19:09   ` [PATCH v4 18/18] xen: introduce a Kconfig option to enable the pvcalls backend Stefano Stabellini

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).