From patchwork Thu Nov 21 18:12:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Grytsov X-Patchwork-Id: 11256723 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB8DE930 for ; Thu, 21 Nov 2019 18:14:21 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 96984206CC for ; Thu, 21 Nov 2019 18:14:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="O4QyPFMD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 96984206CC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iXqxG-0003h8-Ef; Thu, 21 Nov 2019 18:13:22 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iXqxE-0003h0-Fu for xen-devel@lists.xenproject.org; Thu, 21 Nov 2019 18:13:20 +0000 X-Inumbo-ID: 960fc6b6-0c8a-11ea-b678-bc764e2007e4 Received: from mail-lj1-x241.google.com (unknown [2a00:1450:4864:20::241]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 960fc6b6-0c8a-11ea-b678-bc764e2007e4; Thu, 21 Nov 2019 18:13:15 +0000 (UTC) Received: by mail-lj1-x241.google.com with SMTP id n21so4259026ljg.12 for ; Thu, 21 Nov 2019 10:13:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vmHjM/yNQDVb3d99oqBTxU/+bM3gnk43l/8H0I2tmtU=; b=O4QyPFMDRX9OVEZdz0G3896rv+IK37ZbbdTkzI3ySL35+N4GVD++Yeo9xooBbqKmvN iyb0DL02thxr4Zgj8GSD6HKbg1B07PW+/TFqsH5KViX8gk7/XHM4os0xp4h/2+yXqtem HIAfgAPJxPoSJ4EWygld0kMrTzCofGKUR6g4LxMbddsw++5jsEb7sIO2AGReOhqIv99M EVhRFGWBf2w8A8TzvCLSIGcUG9WsNfXcrVPjvrqayZPcNQoQYVZHvADJ8qeaeowYCa5J 8ayOWcoJKSoHnbj8YyOInEO/EavV+whQVG1X3EgKeHGBCC8lltXfrL0SkdtzsIjxoRtp LL7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vmHjM/yNQDVb3d99oqBTxU/+bM3gnk43l/8H0I2tmtU=; b=Pd7xQVnD/C1+MCrCn+2PRi8/lkL9wWV+i1SAFCr1cLqKRj4flcIbMrtTzqyZllIEfq 8qaPE9hq05CtrtcTyiWD8WbgbpO0F5Jfv7jrwaMCMi9F0kiKhL3BeIUYuM7BUf4niYhy z6Y2UZWbXAMEMwXhkRqDnW+w44UxxsJGGNGwYAdX85prCoPwsQtfrCwUtvhPth/cszjH h8MPoHIPD6bIqe7mmdT3JnOwc+z5OnFy4WFW8/yu9gWGS8ATK7eKHm2OMMqDzW/gyPvv HbuULewvEMhFm+3tcstJqY7kJYxW/Fzcl5T7LAapb2DjrmMa+WK4E9bi3gotzRLnDc7H 6uiw== X-Gm-Message-State: APjAAAXMbh066dA4XAfIytVED8Yj39ECtPz4pxhTPX29UYYisTFcVLr4 9h0L15Us4+L+vpl3eFCp8/jneYo26nGUxA== X-Google-Smtp-Source: APXvYqwsNLAYhMrP8Xmxwu7zD00lD1RYqbG5kAgRvhecoowEbwwrHPxvWyqickkOmJbjPDtVNgQosQ== X-Received: by 2002:a2e:22c1:: with SMTP id i184mr8998683lji.1.1574359994401; Thu, 21 Nov 2019 10:13:14 -0800 (PST) Received: from al1-pc.kyiv.epam.com (ll-74.141.223.85.sovam.net.ua. [85.223.141.74]) by smtp.gmail.com with ESMTPSA id v12sm1855473lfb.47.2019.11.21.10.13.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2019 10:13:13 -0800 (PST) From: Oleksandr Grytsov To: xen-devel@lists.xenproject.org Date: Thu, 21 Nov 2019 20:12:58 +0200 Message-Id: <20191121181300.6497-2-al1img@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191121181300.6497-1-al1img@gmail.com> References: <20191121181300.6497-1-al1img@gmail.com> Subject: [Xen-devel] [PATCH v2 1/3] libxl: introduce new backend type VINPUT X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: anthony.perard@citrix.com, Oleksandr Grytsov , ian.jackson@eu.citrix.com, wl@xen.org MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Oleksandr Grytsov There are two kind of VKBD devices: with QEMU backend and user space PV backend. In current implementation they can't be distinguished as both use VKBD backend type. As result, user space PV KBD backend is started and stopped as QEMU backend. This commit adds new device kind VINPUT to be used as backend type for user space PV KBD backend. Signed-off-by: Oleksandr Grytsov Acked-by: Ian Jackson Acked-by: Anthony PERARD --- tools/libxl/libxl_types_internal.idl | 1 + tools/libxl/libxl_vkb.c | 29 ++++++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/libxl/libxl_types_internal.idl b/tools/libxl/libxl_types_internal.idl index cb85c3b37f..3593e21dbb 100644 --- a/tools/libxl/libxl_types_internal.idl +++ b/tools/libxl/libxl_types_internal.idl @@ -31,6 +31,7 @@ libxl__device_kind = Enumeration("device_kind", [ (13, "VUART"), (14, "PVCALLS"), (15, "VSND"), + (16, "VINPUT"), ]) libxl__console_backend = Enumeration("console_backend", [ diff --git a/tools/libxl/libxl_vkb.c b/tools/libxl/libxl_vkb.c index 26376a7eef..4c44a813c1 100644 --- a/tools/libxl/libxl_vkb.c +++ b/tools/libxl/libxl_vkb.c @@ -38,9 +38,6 @@ static int libxl__set_xenstore_vkb(libxl__gc *gc, uint32_t domid, flexarray_t *back, flexarray_t *front, flexarray_t *ro_front) { - flexarray_append_pair(back, "backend-type", - (char *)libxl_vkb_backend_to_string(vkb->backend_type)); - if (vkb->unique_id) { flexarray_append_pair(back, XENKBD_FIELD_UNIQUE_ID, vkb->unique_id); } @@ -93,7 +90,8 @@ static int libxl__vkb_from_xenstore(libxl__gc *gc, const char *libxl_path, libxl_devid devid, libxl_device_vkb *vkb) { - const char *be_path, *be_type, *fe_path, *tmp; + const char *be_path, *fe_path, *tmp; + libxl__device dev; int rc; vkb->devid = devid; @@ -111,13 +109,11 @@ static int libxl__vkb_from_xenstore(libxl__gc *gc, const char *libxl_path, rc = libxl__backendpath_parse_domid(gc, be_path, &vkb->backend_domid); if (rc) goto out; - rc = libxl__xs_read_mandatory(gc, XBT_NULL, - GCSPRINTF("%s/backend-type", be_path), - &be_type); + rc = libxl__parse_backend_path(gc, be_path, &dev); if (rc) goto out; - rc = libxl_vkb_backend_from_string(be_type, &vkb->backend_type); - if (rc) goto out; + vkb->backend_type = dev.backend_kind == LIBXL__DEVICE_KIND_VINPUT ? + LIBXL_VKB_BACKEND_LINUX : LIBXL_VKB_BACKEND_QEMU; vkb->unique_id = xs_read(CTX->xsh, XBT_NULL, GCSPRINTF("%s/"XENKBD_FIELD_UNIQUE_ID, be_path), NULL); @@ -218,6 +214,20 @@ out: return rc; } +static int libxl__device_from_vkb(libxl__gc *gc, uint32_t domid, + libxl_device_vkb *type, libxl__device *device) +{ + device->backend_devid = type->devid; + device->backend_domid = type->backend_domid; + device->backend_kind = type->backend_type == LIBXL_VKB_BACKEND_LINUX ? + LIBXL__DEVICE_KIND_VINPUT : LIBXL__DEVICE_KIND_VKBD; + device->devid = type->devid; + device->domid = domid; + device->kind = LIBXL__DEVICE_KIND_VKBD; + + return 0; +} + int libxl_device_vkb_add(libxl_ctx *ctx, uint32_t domid, libxl_device_vkb *vkb, const libxl_asyncop_how *ao_how) { @@ -318,7 +328,6 @@ out: return rc; } -static LIBXL_DEFINE_DEVICE_FROM_TYPE(vkb) static LIBXL_DEFINE_UPDATE_DEVID(vkb) #define libxl__add_vkbs NULL