From patchwork Fri Sep 30 18:11:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Rzeszutek Wilk X-Patchwork-Id: 9358729 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id DD92B60757 for ; Fri, 30 Sep 2016 18:14:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D63E42A14C for ; Fri, 30 Sep 2016 18:14:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CB0D92A153; Fri, 30 Sep 2016 18:14:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 035112A14C for ; Fri, 30 Sep 2016 18:14:41 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bq2IU-0005pz-Ry; Fri, 30 Sep 2016 18:12:34 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bq2IS-0005nQ-RP for xen-devel@lists.xenproject.org; Fri, 30 Sep 2016 18:12:33 +0000 Received: from [85.158.137.68] by server-17.bemta-3.messagelabs.com id D5/0B-27186-F0BAEE75; Fri, 30 Sep 2016 18:12:31 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFLMWRWlGSWpSXmKPExsXSO6nOVZd39bt wg+ezbSy+b5nM5MDocfjDFZYAxijWzLyk/IoE1ozpf1ezFHQUVJxsWM/UwLg6oIuRi0NIYCKT RMeSXiYI5zejxMNJr9kgnI2MEjM3/maFcCYwSsw7vhYow8HBJmAi8WaVYxcjJ4eIgKnE9oknW UBqmAWmMUp8OnWECaRGWCBcYv06RZAaFgFViUNPLjKD2LwCrhK3r71mBSmREJCXeHa7HiTMKe AmcXvLNEYQWwiopPPPCVYQW0LAUOLzxqXMExj5FjAyrGJUL04tKkst0rXQSyrKTM8oyU3MzNE 1NDDWy00tLk5MT81JTCrWS87P3cQIDBMGINjBeKHd+RCjJAeTkiiv7NG34UJ8SfkplRmJxRnx RaU5qcWHGGU4OJQkeB+ufBcuJFiUmp5akZaZAwxYmLQEB4+SCK8ESJq3uCAxtzgzHSJ1ilFRS px3JUhCACSRUZoH1waLkkuMslLCvIxAhwjxFKQW5WaWoMq/YhTnYFQS5v0IMoUnM68EbvoroM VMQIvzj74BWVySiJCSamBUOrzT6tFsp6pd13zyvPds9n8cum6fLOc3W+E9O64tPPq9ICTKRdM v8Gf65JlN8mlsSnxn1N4+Xxwdui90Ieu1b1Ic7iq5L06uMpvHzqEuyV3t+u+d84VnPq9OLSvl vuxy4Zv8Kn3zDqndzh/2bW38NbV9Yf31Zv80Wem73g9tTDreigbbv7BQYinOSDTUYi4qTgQA9 6pQ/Y0CAAA= X-Env-Sender: konrad.wilk@oracle.com X-Msg-Ref: server-3.tower-31.messagelabs.com!1475259147!63813510!1 X-Originating-IP: [141.146.126.69] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogMTQxLjE0Ni4xMjYuNjkgPT4gMjc3MjE4\n X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 56480 invoked from network); 30 Sep 2016 18:12:29 -0000 Received: from aserp1040.oracle.com (HELO aserp1040.oracle.com) (141.146.126.69) by server-3.tower-31.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 30 Sep 2016 18:12:29 -0000 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u8UICJlN005549 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 30 Sep 2016 18:12:20 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0022.oracle.com (8.14.4/8.13.8) with ESMTP id u8UICJUe017884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 30 Sep 2016 18:12:19 GMT Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id u8UICJ31016553; Fri, 30 Sep 2016 18:12:19 GMT Received: from localhost.us.oracle.com (/10.154.132.195) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 30 Sep 2016 11:12:18 -0700 From: Konrad Rzeszutek Wilk To: xen-devel@lists.xenproject.org, konrad@kernel.org Date: Fri, 30 Sep 2016 14:11:53 -0400 Message-Id: <1475259114-8693-9-git-send-email-konrad.wilk@oracle.com> X-Mailer: git-send-email 2.4.11 In-Reply-To: <1475259114-8693-1-git-send-email-konrad.wilk@oracle.com> References: <1475259114-8693-1-git-send-email-konrad.wilk@oracle.com> X-Source-IP: userv0022.oracle.com [156.151.31.74] Cc: Wei Liu , Ian Jackson , Konrad Rzeszutek Wilk Subject: [Xen-devel] [PATCH v2 8/9] tmem/xc_tmem_control: Rename 'arg1' to 'len' and 'arg2' to arg. X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP That is what they are used for. Lets make it more clear. Of all the various sub-commands, the only one that needed semantic change is XEN_SYSCTL_TMEM_OP_SAVE_BEGIN. That in the past used 'arg1', and now we are moving it to use 'arg'. Since that code is only used during migration which is tied to the toolstack it is OK to change it. We should increment the XEN_SYSCTL_INTERFACE_VERSION because of this, and that was fortunatly done in the patch titled: "tmem/libxc: Squash XEN_SYSCTL_TMEM_OP_[SET|SAVE].." While at it, also fix xc_tmem_control_oid to properly handle the 'buf' and bounce it as appropiate. Acked-by: Wei Liu Signed-off-by: Konrad Rzeszutek Wilk Acked-by: Andrew cooper --- Cc: Ian Jackson Cc: Wei Liu v1: First submission. v2: Added Wei's Ack. Rebased on "tmem/sysctl: Add union in struct xen_sysctl_tmem_op" Expand the commit description to talk about XEN_SYSCTL_INTERFACE_VERSION. --- tools/libxc/include/xenctrl.h | 4 ++-- tools/libxc/xc_tmem.c | 37 ++++++++++++++++++------------------- tools/libxl/libxl.c | 4 ++-- tools/python/xen/lowlevel/xc/xc.c | 16 ++++++++-------- xen/common/tmem.c | 16 ++++++++-------- xen/common/tmem_control.c | 8 ++++---- xen/include/public/sysctl.h | 4 ++-- 7 files changed, 44 insertions(+), 45 deletions(-) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index d35f171..2c83544 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -2067,11 +2067,11 @@ int xc_disable_turbo(xc_interface *xch, int cpuid); */ int xc_tmem_control_oid(xc_interface *xch, int32_t pool_id, uint32_t subop, - uint32_t cli_id, uint32_t arg1, uint32_t arg2, + uint32_t cli_id, uint32_t len, uint32_t arg, struct xen_tmem_oid oid, void *buf); int xc_tmem_control(xc_interface *xch, int32_t pool_id, uint32_t subop, uint32_t cli_id, - uint32_t arg1, uint32_t arg2, void *buf); + uint32_t len, uint32_t arg, void *buf); int xc_tmem_auth(xc_interface *xch, int cli_id, char *uuid_str, int arg1); int xc_tmem_save(xc_interface *xch, int dom, int live, int fd, int field_marker); int xc_tmem_save_extra(xc_interface *xch, int dom, int fd, int field_marker); diff --git a/tools/libxc/xc_tmem.c b/tools/libxc/xc_tmem.c index 6c7ad93..3b66d10 100644 --- a/tools/libxc/xc_tmem.c +++ b/tools/libxc/xc_tmem.c @@ -49,20 +49,20 @@ int xc_tmem_control(xc_interface *xch, int32_t pool_id, uint32_t cmd, uint32_t cli_id, - uint32_t arg1, - uint32_t arg2, + uint32_t len, + uint32_t arg, void *buf) { DECLARE_SYSCTL; - DECLARE_HYPERCALL_BOUNCE(buf, arg1, XC_HYPERCALL_BUFFER_BOUNCE_OUT); + DECLARE_HYPERCALL_BOUNCE(buf, len, XC_HYPERCALL_BUFFER_BOUNCE_OUT); int rc; sysctl.cmd = XEN_SYSCTL_tmem_op; sysctl.u.tmem_op.pool_id = pool_id; sysctl.u.tmem_op.cmd = cmd; sysctl.u.tmem_op.cli_id = cli_id; - sysctl.u.tmem_op.arg1 = arg1; - sysctl.u.tmem_op.arg2 = arg2; + sysctl.u.tmem_op.len = len; + sysctl.u.tmem_op.arg = arg; sysctl.u.tmem_op.pad = 0; sysctl.u.tmem_op.oid.oid[0] = 0; sysctl.u.tmem_op.oid.oid[1] = 0; @@ -72,8 +72,7 @@ int xc_tmem_control(xc_interface *xch, { HYPERCALL_BOUNCE_SET_DIR(buf, XC_HYPERCALL_BUFFER_BOUNCE_IN); } - - if ( arg1 ) + if ( len ) { if ( buf == NULL ) { @@ -91,7 +90,7 @@ int xc_tmem_control(xc_interface *xch, rc = do_sysctl(xch, &sysctl); - if ( arg1 ) + if ( len ) xc_hypercall_bounce_post(xch, buf); return rc; @@ -101,25 +100,25 @@ int xc_tmem_control_oid(xc_interface *xch, int32_t pool_id, uint32_t cmd, uint32_t cli_id, - uint32_t arg1, - uint32_t arg2, + uint32_t len, + uint32_t arg, struct xen_tmem_oid oid, void *buf) { DECLARE_SYSCTL; - DECLARE_HYPERCALL_BOUNCE(buf, arg1, XC_HYPERCALL_BUFFER_BOUNCE_OUT); + DECLARE_HYPERCALL_BOUNCE(buf, len, XC_HYPERCALL_BUFFER_BOUNCE_OUT); int rc; sysctl.cmd = XEN_SYSCTL_tmem_op; sysctl.u.tmem_op.pool_id = pool_id; sysctl.u.tmem_op.cmd = cmd; sysctl.u.tmem_op.cli_id = cli_id; - sysctl.u.tmem_op.arg1 = arg1; - sysctl.u.tmem_op.arg2 = arg2; + sysctl.u.tmem_op.len = len; + sysctl.u.tmem_op.arg = arg; sysctl.u.tmem_op.pad = 0; sysctl.u.tmem_op.oid = oid; - if ( cmd == XEN_SYSCTL_TMEM_OP_LIST && arg1 != 0 ) + if ( len ) { if ( buf == NULL ) { @@ -137,8 +136,8 @@ int xc_tmem_control_oid(xc_interface *xch, rc = do_sysctl(xch, &sysctl); - if ( cmd == XEN_SYSCTL_TMEM_OP_LIST && arg1 != 0 ) - xc_hypercall_bounce_post(xch, buf); + if ( len ) + xc_hypercall_bounce_post(xch, buf); return rc; } @@ -224,7 +223,7 @@ int xc_tmem_save(xc_interface *xch, xen_tmem_client_t info; rc = xc_tmem_control(xch, 0, XEN_SYSCTL_TMEM_OP_SAVE_BEGIN, - dom, live, 0, NULL); + dom, 0 /* len*/ , live, NULL); if ( rc ) { /* Nothing to save - no tmem enabled. */ @@ -239,7 +238,7 @@ int xc_tmem_save(xc_interface *xch, if ( xc_tmem_control(xch, 0 /* pool_id */, XEN_SYSCTL_TMEM_OP_GET_CLIENT_INFO, - dom /* cli_id */, sizeof(info) /* arg1 */, 0 /* arg2 */, + dom /* cli_id */, sizeof(info), 0 /* arg */, &info) < 0 ) return -1; @@ -396,7 +395,7 @@ int xc_tmem_restore(xc_interface *xch, int dom, int io_fd) if ( xc_tmem_control(xch, 0 /* pool_id */, XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO, - dom /* cli_id */, sizeof(info) /* arg1 */, 0 /* arg2 */, + dom /* cli_id */, sizeof(info), 0 /* arg */, &info) < 0 ) return -1; diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 81f8361..432e5d9 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -6173,7 +6173,7 @@ int libxl_tmem_set(libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set) r = xc_tmem_control(ctx->xch, -1 /* pool_id */, XEN_SYSCTL_TMEM_OP_GET_CLIENT_INFO, - domid, sizeof(info), 0 /* arg2 */, &info); + domid, sizeof(info), 0 /* arg */, &info); if (r < 0) { LOGE(ERROR, "Can not get tmem data!"); rc = ERROR_FAIL; @@ -6187,7 +6187,7 @@ int libxl_tmem_set(libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set) } r = xc_tmem_control(ctx->xch, -1 /* pool_id */, XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO, - domid, sizeof(info), 0 /* arg2 */, &info); + domid, sizeof(info), 0 /* arg */, &info); if (r < 0) { LOGE(ERROR, "Can not set tmem %s", name); rc = ERROR_FAIL; diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c index a117737..39be1d5 100644 --- a/tools/python/xen/lowlevel/xc/xc.c +++ b/tools/python/xen/lowlevel/xc/xc.c @@ -1612,8 +1612,8 @@ static PyObject *pyxc_tmem_control(XcObject *self, int32_t pool_id; uint32_t subop; uint32_t cli_id; - uint32_t arg1; - uint32_t arg2; + uint32_t len; + uint32_t arg; char *buf; char _buffer[32768], *buffer = _buffer; int rc; @@ -1621,13 +1621,13 @@ static PyObject *pyxc_tmem_control(XcObject *self, static char *kwd_list[] = { "pool_id", "subop", "cli_id", "arg1", "arg2", "buf", NULL }; if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiiis", kwd_list, - &pool_id, &subop, &cli_id, &arg1, &arg2, &buf) ) + &pool_id, &subop, &cli_id, &len, &arg, &buf) ) return NULL; - if ( (subop == XEN_SYSCTL_TMEM_OP_LIST) && (arg1 > 32768) ) - arg1 = 32768; + if ( (subop == XEN_SYSCTL_TMEM_OP_LIST) && (len > 32768) ) + len = 32768; - if ( (rc = xc_tmem_control(self->xc_handle, pool_id, subop, cli_id, arg1, arg2, buffer)) < 0 ) + if ( (rc = xc_tmem_control(self->xc_handle, pool_id, subop, cli_id, len, arg, buffer)) < 0 ) return Py_BuildValue("i", rc); switch (subop) { @@ -2506,8 +2506,8 @@ static PyMethodDef pyxc_methods[] = { " pool_id [int]: Identifier of the tmem pool (-1 == all).\n" " subop [int]: Supplementary Operation.\n" " cli_id [int]: Client identifier (-1 == all).\n" - " arg1 [int]: Argument.\n" - " arg2 [int]: Argument.\n" + " len [int]: Length of 'buf'.\n" + " arg [int]: Argument.\n" " buf [str]: Buffer.\n\n" "Returns: [int] 0 or [str] tmem info on success; exception on error.\n" }, diff --git a/xen/common/tmem.c b/xen/common/tmem.c index 510d11c..14a12ca 100644 --- a/xen/common/tmem.c +++ b/xen/common/tmem.c @@ -1651,7 +1651,7 @@ static int tmemc_shared_pool_auth(domid_t cli_id, uint64_t uuid_lo, } static int tmemc_save_subop(int cli_id, uint32_t pool_id, - uint32_t subop, tmem_cli_va_param_t buf, uint32_t arg1) + uint32_t subop, tmem_cli_va_param_t buf, uint32_t arg) { struct client *client = tmem_client_from_cli_id(cli_id); uint32_t p; @@ -1672,7 +1672,7 @@ static int tmemc_save_subop(int cli_id, uint32_t pool_id, client->was_frozen = client->info.flags.u.frozen; client->info.flags.u.frozen = 1; - if ( arg1 != 0 ) + if ( arg != 0 ) client->info.flags.u.migrating = 1; rc = 0; break; @@ -1844,22 +1844,22 @@ int do_tmem_control(struct xen_sysctl_tmem_op *op) case XEN_SYSCTL_TMEM_OP_RESTORE_BEGIN: case XEN_SYSCTL_TMEM_OP_SAVE_END: ret = tmemc_save_subop(op->cli_id, pool_id, cmd, - guest_handle_cast(op->u.buf, char), op->arg1); + guest_handle_cast(op->u.buf, char), op->arg); break; case XEN_SYSCTL_TMEM_OP_SAVE_GET_NEXT_PAGE: ret = tmemc_save_get_next_page(op->cli_id, pool_id, - guest_handle_cast(op->u.buf, char), op->arg1); + guest_handle_cast(op->u.buf, char), op->len); break; case XEN_SYSCTL_TMEM_OP_SAVE_GET_NEXT_INV: ret = tmemc_save_get_next_inv(op->cli_id, - guest_handle_cast(op->u.buf, char), op->arg1); + guest_handle_cast(op->u.buf, char), op->len); break; case XEN_SYSCTL_TMEM_OP_RESTORE_PUT_PAGE: - ret = tmemc_restore_put_page(op->cli_id, pool_id, oidp, op->arg2, - guest_handle_cast(op->u.buf, char), op->arg1); + ret = tmemc_restore_put_page(op->cli_id, pool_id, oidp, op->arg, + guest_handle_cast(op->u.buf, char), op->len); break; case XEN_SYSCTL_TMEM_OP_RESTORE_FLUSH_PAGE: - ret = tmemc_restore_flush_page(op->cli_id, pool_id, oidp, op->arg2); + ret = tmemc_restore_flush_page(op->cli_id, pool_id, oidp, op->arg); break; default: ret = -1; diff --git a/xen/common/tmem_control.c b/xen/common/tmem_control.c index 151d8ef..6eb08aa 100644 --- a/xen/common/tmem_control.c +++ b/xen/common/tmem_control.c @@ -344,7 +344,7 @@ static int tmemc_get_client_info(int cli_id, } static int tmemc_save_subop(int cli_id, uint32_t pool_id, uint32_t subop, - XEN_GUEST_HANDLE_PARAM(char) buf, uint32_t arg1) + XEN_GUEST_HANDLE_PARAM(char) buf, uint32_t arg) { struct client *client = tmem_client_from_cli_id(cli_id); struct tmem_pool *pool = (client == NULL || pool_id >= MAX_POOLS_PER_DOMAIN) @@ -398,11 +398,11 @@ int tmem_control(struct xen_sysctl_tmem_op *op) ret = tmemc_freeze_pools(op->cli_id, cmd); break; case XEN_SYSCTL_TMEM_OP_FLUSH: - ret = tmemc_flush_mem(op->cli_id,op->arg1); + ret = tmemc_flush_mem(op->cli_id, op->arg); break; case XEN_SYSCTL_TMEM_OP_LIST: ret = tmemc_list(op->cli_id, - guest_handle_cast(op->u.buf, char), op->arg1, op->arg2); + guest_handle_cast(op->u.buf, char), op->len, op->arg); break; case XEN_SYSCTL_TMEM_OP_SET_CLIENT_INFO: ret = tmemc_set_client_info(op->cli_id, op->u.client); @@ -417,7 +417,7 @@ int tmem_control(struct xen_sysctl_tmem_op *op) case XEN_SYSCTL_TMEM_OP_SAVE_GET_POOL_NPAGES: case XEN_SYSCTL_TMEM_OP_SAVE_GET_POOL_UUID: ret = tmemc_save_subop(op->cli_id, pool_id, cmd, - guest_handle_cast(op->u.buf, char), op->arg1); + guest_handle_cast(op->u.buf, char), op->arg); break; default: ret = do_tmem_control(op); diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h index 86a1d91..0b8afaf 100644 --- a/xen/include/public/sysctl.h +++ b/xen/include/public/sysctl.h @@ -819,8 +819,8 @@ struct xen_sysctl_tmem_op { uint32_t cli_id; /* IN: client id, 0 for XEN_SYSCTL_TMEM_QUERY_FREEABLE_MB for all others can be the domain id or XEN_SYSCTL_TMEM_OP_ALL_CLIENTS for all. */ - uint32_t arg1; /* IN: If not applicable to command use 0. */ - uint32_t arg2; /* IN: If not applicable to command use 0. */ + uint32_t len; /* IN: length of 'buf'. If not applicable to use 0. */ + uint32_t arg; /* IN: If not applicable to command use 0. */ uint32_t pad; /* Padding so structure is the same under 32 and 64. */ xen_tmem_oid_t oid; /* IN: If not applicable to command use 0s. */ union {