From nobody Wed May 15 15:54:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1621594908; cv=none; d=zohomail.com; s=zohoarc; b=OqIzywVBaiVk/h66Irq++heutvsFLXoTxnPtwuM96gHpwwR5g+t9Mw0hyIr68FePfXxSPJEkMDcUGK8KD9J2IlhjjX22198F9iN211fybxhJ4D2Y/Z5xurxrWKbOmPBgBskhSar42N0ehsXt2hG9WrrgU9gxys+D4/w54CabTFc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621594908; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=P7NalWaVS98KfU1s8qN4kAAIuB98s5gCwlGTeh/cGbo=; b=eUOpRN6ONYc0kqrqAdLtJKoZAniWJFvY6xZE3x+Kp5QcpTVoDhzcUjNbKX2R7oZ6FaKdKjpew0Z7cAx2E0rVleLm2Zt+1YlcWsGcp8Vt7TO2XMAaNTBuJvtSw/LGLIK4m5UZPRsx44BtDQOV9zUzUeR5elGXiNDDvmyGAeTDcww= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1621594908685881.3793281091564; Fri, 21 May 2021 04:01:48 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-343--gNPW0pMOL-a_acQrNSwvg-1; Fri, 21 May 2021 07:01:44 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 870249F92B; Fri, 21 May 2021 11:01:38 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 122D861145; Fri, 21 May 2021 11:01:38 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5EF681800BB4; Fri, 21 May 2021 11:01:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 14LB1ZS9020377 for ; Fri, 21 May 2021 07:01:35 -0400 Received: by smtp.corp.redhat.com (Postfix) id B818E100238C; Fri, 21 May 2021 11:01:35 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.40.193.232]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6C3CC100164A for ; Fri, 21 May 2021 11:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621594907; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=P7NalWaVS98KfU1s8qN4kAAIuB98s5gCwlGTeh/cGbo=; b=LAQKPeismKlDgnfUr5yYreQJ7e380Tr8hLMV604CgV9snoRLG+FpYcEfPgFMoeNKBX8iS5 884WXaYbqTRH7SxLM0tN4lecoeGpHDm4uOgB1+cNi0zupdjzA2Ya4QmaKZe7LnikgbTgBN EG/JTLAbkGlLZqEtdN8MnH+4NQTL3jA= X-MC-Unique: -gNPW0pMOL-a_acQrNSwvg-1 From: Kristina Hanicova To: libvir-list@redhat.com Subject: [PATCH v3 1/3] qemu_capabilities: Add QEMU_CAPS_INPUT_LINUX Date: Fri, 21 May 2021 13:01:06 +0200 Message-Id: <2baf7660610bd05be4e1ee7869660654f5c8facd.1621594173.git.khanicov@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Kristina Hanicova Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml | 1 + 40 files changed, 41 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index d3f24feb6a..75dd01f06e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -629,6 +629,7 @@ VIR_ENUM_IMPL(virQEMUCaps, /* 400 */ "compat-deprecated", "acpi-index", + "input-linux", ); =20 =20 @@ -1347,6 +1348,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "am53c974", QEMU_CAPS_SCSI_AM53C974 }, { "virtio-pmem-pci", QEMU_CAPS_DEVICE_VIRTIO_PMEM_PCI }, { "vhost-user-blk", QEMU_CAPS_DEVICE_VHOST_USER_BLK }, + { "input-linux", QEMU_CAPS_INPUT_LINUX }, }; =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index fae8492e69..94f2fad05a 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -609,6 +609,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ /* 400 */ QEMU_CAPS_COMPAT_DEPRECATED, /* -compat deprecated-(input|output) is s= upported */ QEMU_CAPS_ACPI_INDEX, /* PCI device 'acpi-index' property */ + QEMU_CAPS_INPUT_LINUX, /* -object input-linux */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.11.0.s390x.xml index 738d0f71e9..aa70cdc234 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -112,6 +112,7 @@ + 2011000 0 39100288 diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.11.0.x86_64.xml index 3bd3f2c9ca..250bebc1a2 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -193,6 +193,7 @@ + 2011000 0 43100288 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qem= ucapabilitiesdata/caps_2.12.0.aarch64.xml index e267495668..b2bff6b09f 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -161,6 +161,7 @@ + 2012000 0 61700289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index 52533f4ebe..e6a95317e8 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -160,6 +160,7 @@ + 2011090 0 42900289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.s390x.xml index f0e4f5de40..3535bb05e5 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -125,6 +125,7 @@ + 2012000 0 39100289 diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.12.0.x86_64.xml index 536e15909e..bf3ab61aa9 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -204,6 +204,7 @@ + 2011090 0 43100289 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.ppc64.xml index 240740eaa2..d70ce46519 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -162,6 +162,7 @@ + 2012050 0 42900239 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv32.xml index c62059c23a..a87072faee 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -95,6 +95,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_3.0.0.riscv64.xml index b1b080ec60..7e470d941a 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -95,6 +95,7 @@ + 3000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.s390x.xml index d6db705a48..8ffd4d1dc7 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml @@ -128,6 +128,7 @@ + 3000000 0 39100239 diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.0.0.x86_64.xml index 60b6d5026a..df815f878d 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -210,6 +210,7 @@ + 3000000 0 43100239 diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.1.0.ppc64.xml index 36009009ff..755f846c2d 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml @@ -167,6 +167,7 @@ + 3000091 0 42900240 diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.1.0.x86_64.xml index 37de68d09a..82921b85f1 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml @@ -213,6 +213,7 @@ + 3000092 0 43100240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.aarch64.xml index a9c3905bf3..83aab20633 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml @@ -176,6 +176,7 @@ + 4000000 0 61700240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_4.0.0.ppc64.xml index 9a6bae1936..52cfe66e70 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml @@ -183,6 +183,7 @@ + 4000000 0 42900240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.riscv32.xml index 5cd782d6cc..1ca04e86c6 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml @@ -175,6 +175,7 @@ + 4000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_4.0.0.riscv64.xml index 1d2ddd425e..f0b6c77fb5 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml @@ -175,6 +175,7 @@ + 4000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_4.0.0.s390x.xml index 08fc8f7ba9..85e0a443b0 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml @@ -139,6 +139,7 @@ + 4000000 0 39100240 diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.0.0.x86_64.xml index 0305ca1ddc..8f39762b6a 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml @@ -221,6 +221,7 @@ + 4000000 0 43100240 diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.1.0.x86_64.xml index 2ade400b71..a1ae5191c1 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -228,6 +228,7 @@ + 4001000 0 43100241 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_4.2.0.aarch64.xml index 0afe6845a8..6a2d54d275 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -191,6 +191,7 @@ + 4001050 0 61700242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_4.2.0.ppc64.xml index d20b17c3e0..9f228fb4fe 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -190,6 +190,7 @@ + 4001050 0 42900242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_4.2.0.s390x.xml index 7492cd8b03..088ac794ac 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -152,6 +152,7 @@ + 4002000 0 39100242 diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.2.0.x86_64.xml index 5f00e28fd5..f7c034bf17 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -239,6 +239,7 @@ + 4002000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_5.0.0.aarch64.xml index 3f0ea56934..331309bbe3 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -201,6 +201,7 @@ + 5000000 0 61700241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_5.0.0.ppc64.xml index 5acc644638..444b7a222f 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -209,6 +209,7 @@ + 5000000 0 42900241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_5.0.0.riscv64.xml index 40da246dc0..84a57d1e0d 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -195,6 +195,7 @@ + 5000000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.0.0.x86_64.xml index 981c805481..a3d9338e86 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -246,6 +246,7 @@ + 5000000 0 43100241 diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml b/tests/qemuca= pabilitiesdata/caps_5.1.0.sparc.xml index bdaf560f30..3075172082 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.sparc.xml @@ -110,6 +110,7 @@ + 5001000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.1.0.x86_64.xml index 586c7917dd..0dae0ad892 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -248,6 +248,7 @@ + 5001000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_5.2.0.aarch64.xml index b0a531c3c2..7615bd9cb6 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -205,6 +205,7 @@ + 5002000 0 61700243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_5.2.0.ppc64.xml index e1a6dfda82..ac5667c1a9 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml @@ -211,6 +211,7 @@ + 5002000 0 42900243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_5.2.0.riscv64.xml index 8d559c18c9..192f9bc7d4 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml @@ -197,6 +197,7 @@ + 5002000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_5.2.0.s390x.xml index d97c399fc5..db72107a0d 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -159,6 +159,7 @@ + 5002000 0 39100243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.2.0.x86_64.xml index c568af3e2b..7cfbebe323 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -249,6 +249,7 @@ + 5002000 0 43100243 diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_6.0.0.s390x.xml index 4c056c484f..3c07e7159b 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -164,6 +164,7 @@ + 6000000 0 39100242 diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.0.0.x86_64.xml index df631cf88d..80ec2e77c1 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -254,6 +254,7 @@ + 6000000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.1.0.x86_64.xml index 1a0621c20d..4df3200219 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -253,6 +253,7 @@ + 6000050 0 43100243 --=20 2.31.1 From nobody Wed May 15 15:54:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1621594916; cv=none; d=zohomail.com; s=zohoarc; b=iwhOBz2IuHWG7/qQjqY1Wc6woYDQ47WPulkAFSLwE9/99esGkvnQg7hTw0Me1sj1zUXSKrrzDpqK4Rxt9lTl7zp5UubgLTevzcwTVziyccwV3UD+IHM2AGEzIpt5XSI+GbaDyCrtEZRQv3oeImiUEVo3OlR49gIh+4V4WVjkHyE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621594916; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=F1PZJG26OFNplqvCCYf99WxdIo7oSRlqw07tH8AGeZE=; b=W7Dim9Moo1p2ARlNIUM/g0Vfr8/bK2iss60Uq+Glp0GPjUUs+yVbHeefA/HhSAP3Ac/jSae8XirvGB0masANoMlt9/m1wmG/qo5yInY7UZw3rboKgwaDH8tETkdPsl59ls7YysxoU9FCFcgbwRFVoyUdpAnlktIreZW9A5QuDlg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1621594916667169.40433365704632; Fri, 21 May 2021 04:01:56 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-85-gefbA6ruOE2pYmgvAd9lIQ-1; Fri, 21 May 2021 07:01:52 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4FC129F92F; Fri, 21 May 2021 11:01:46 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0126110027C4; Fri, 21 May 2021 11:01:46 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9FAF144A5D; Fri, 21 May 2021 11:01:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 14LB1ikT020393 for ; Fri, 21 May 2021 07:01:44 -0400 Received: by smtp.corp.redhat.com (Postfix) id C44EC100238C; Fri, 21 May 2021 11:01:44 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.40.193.232]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD3BD10023AF for ; Fri, 21 May 2021 11:01:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621594914; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=F1PZJG26OFNplqvCCYf99WxdIo7oSRlqw07tH8AGeZE=; b=CkNBdEnkOwR3IGfvwKumvbhqbRiDl59lvKX2E21MW+5oPO+9Si6D5KANQ9E6/MtrbBl7KI VzJkikVsNjsSJYBpIs22GZ4vkPyZn8TpcSmPZi5qHAShQihXB7YheTZpzjIhGWqls8l6L2 9L6ULYPuGYJerETu59FgWfJ4YD/MqIU= X-MC-Unique: gefbA6ruOE2pYmgvAd9lIQ-1 From: Kristina Hanicova To: libvir-list@redhat.com Subject: [PATCH v3 2/3] conf: Parse/format XML input type 'evdev' Date: Fri, 21 May 2021 13:01:07 +0200 Message-Id: <7bb9c7d8fbaba92b5018e84244f6c3764a83ad66.1621594173.git.khanicov@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Kristina Hanicova Reviewed-by: Michal Privoznik --- docs/formatdomain.rst | 37 ++++++++----- docs/schemas/domaincommon.rng | 20 +++++++ src/conf/domain_audit.c | 1 + src/conf/domain_conf.c | 69 ++++++++++++++++++++---- src/conf/domain_conf.h | 12 +++++ src/conf/domain_validate.c | 8 +++ src/libvirt_private.syms | 2 + src/qemu/qemu_cgroup.c | 2 + src/qemu/qemu_command.c | 1 + src/qemu/qemu_domain_address.c | 1 + src/qemu/qemu_hotplug.c | 1 + src/qemu/qemu_validate.c | 6 +++ src/security/security_apparmor.c | 1 + src/security/security_dac.c | 2 + src/security/security_selinux.c | 2 + src/security/virt-aa-helper.c | 3 +- tests/qemuxml2argvdata/input-linux.xml | 31 +++++++++++ tests/qemuxml2xmloutdata/input-linux.xml | 1 + tests/qemuxml2xmltest.c | 2 + 19 files changed, 179 insertions(+), 23 deletions(-) create mode 100644 tests/qemuxml2argvdata/input-linux.xml create mode 120000 tests/qemuxml2xmloutdata/input-linux.xml diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index fa5c14febc..e115165ad2 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -5728,26 +5728,37 @@ to provide a graphics tablet for absolute cursor mo= vement. + + + ... =20 ``input`` The ``input`` element has one mandatory attribute, the ``type`` whose v= alue - can be 'mouse', 'tablet', ( :since:`since 1.2.2` ) 'keyboard' or ( - :since:`since 1.3.0` ) 'passthrough'. The tablet provides absolute curs= or - movement, while the mouse uses relative movement. The optional ``bus`` - attribute can be used to refine the exact device type. It takes values = "xen" - (paravirtualized), "ps2" and "usb" or ( :since:`since 1.3.0` ) "virtio". + can be 'mouse', 'tablet', ( :since:`since 1.2.2` ) 'keyboard', ( + :since:`since 1.3.0` ) 'passthrough' or ( :since:`since 7.4.0` ) 'evdev= '. + The tablet provides absolute cursor movement, while the mouse uses rela= tive + movement. The optional ``bus`` attribute can be used to refine the exact + device type. It takes values "xen" (paravirtualized), "ps2" and "usb" o= r ( + :since:`since 1.3.0` ) "virtio". =20 The ``input`` element has an optional sub-element ``
`` which can = tie -the device to a particular PCI slot, `documented above <#elementsAddress>`= __. On -S390, ``address`` can be used to provide a CCW address for an input device= ( -:since:`since 4.2.0` ). For type ``passthrough``, the mandatory sub-element -``source`` must have an ``evdev`` attribute containing the absolute path t= o the -event device passed through to guests. (KVM only) :since:`Since 5.2.0` , t= he -``input`` element accepts a ``model`` attribute which has the values 'virt= io', -'virtio-transitional' and 'virtio-non-transitional'. See `Virtio transitio= nal -devices <#elementsVirtioTransitional>`__ for more details. +the device to a particular PCI slot, `documented above <#elementsAddress>`= __. +On S390, ``address`` can be used to provide a CCW address for an input dev= ice ( +:since:`since 4.2.0` ). For types ``passthrough`` and ``evdev``, the manda= tory +sub-element ``source`` must have an ``evdev`` (for ``passthrough``) or ``d= ev`` +(for ``evdev``) attribute containing the absolute path to the event device +passed through to guests. +For type ``evdev``, ``source`` can have two optional attributes ``grab`` w= ith +value 'all' which when enabled grabs all input devices instead of just one= and +``repeat`` with value 'on'/'off' to enable/disable auto-repeat events ( +:since:`Since 7.4.0`). +``input`` type ``evdev`` is currently supported only on linux devices. +(KVM only) :since:`Since 5.2.0` , the ``input`` element accepts a +``model`` attribute which has the values 'virtio', 'virtio-transitional' a= nd +'virtio-non-transitional'. See `Virtio transitional devices +<#elementsVirtioTransitional>`__ for more details. =20 The subelement ``driver`` can be used to tune the virtio options of the de= vice: `Virtio-specific options <#elementsVirtio>`__ can also be set. ( :since:`S= ince diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index a2e5c50c1d..16e1c549c2 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -5443,6 +5443,26 @@ + + + evdev + + + + + + + + all + + + + + + + + + diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index b1226fd5dc..b08233fa49 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -956,6 +956,7 @@ virDomainAuditInput(virDomainObj *vm, break; =20 case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: VIR_AUDIT(VIR_AUDIT_RECORD_RESOURCE, success, "virt=3D%s resrc=3Devdev reason=3D%s %s uuid=3D%s path= =3D%s", virt, reason, vmname, uuidstr, VIR_AUDIT_STR(input->sour= ce.evdev)); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e35c38caa3..bb21c9ca50 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -864,6 +864,7 @@ VIR_ENUM_IMPL(virDomainInput, "tablet", "keyboard", "passthrough", + "evdev", ); =20 VIR_ENUM_IMPL(virDomainInputBus, @@ -873,6 +874,7 @@ VIR_ENUM_IMPL(virDomainInputBus, "xen", "parallels", "virtio", + "none", ); =20 VIR_ENUM_IMPL(virDomainInputModel, @@ -883,6 +885,12 @@ VIR_ENUM_IMPL(virDomainInputModel, "virtio-non-transitional", ); =20 +VIR_ENUM_IMPL(virDomainInputSourceGrab, + VIR_DOMAIN_INPUT_SOURCE_GRAB_LAST, + "default", + "all", +); + VIR_ENUM_IMPL(virDomainGraphics, VIR_DOMAIN_GRAPHICS_TYPE_LAST, "sdl", @@ -1879,6 +1887,7 @@ const char *virDomainInputDefGetPath(virDomainInputDe= f *input) return NULL; =20 case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: return input->source.evdev; } return NULL; @@ -11819,10 +11828,10 @@ virDomainInputDefParseXML(virDomainXMLOption *xml= opt, { VIR_XPATH_NODE_AUTORESTORE(ctxt) virDomainInputDef *def; - g_autofree char *evdev =3D NULL; g_autofree char *type =3D NULL; g_autofree char *bus =3D NULL; g_autofree char *model =3D NULL; + xmlNodePtr source =3D NULL; =20 def =3D g_new0(virDomainInputDef, 1); =20 @@ -11924,6 +11933,8 @@ virDomainInputDefParseXML(virDomainXMLOption *xmlop= t, } else if (ARCH_IS_S390(dom->os.arch) || def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH)= { def->bus =3D VIR_DOMAIN_INPUT_BUS_VIRTIO; + } else if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EVDEV) { + def->bus =3D VIR_DOMAIN_INPUT_BUS_NONE; } else { def->bus =3D VIR_DOMAIN_INPUT_BUS_USB; } @@ -11948,12 +11959,36 @@ virDomainInputDefParseXML(virDomainXMLOption *xml= opt, goto error; } =20 - if ((evdev =3D virXPathString("string(./source/@evdev)", ctxt))) - def->source.evdev =3D virFileSanitizePath(evdev); - if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH && !def->source= .evdev) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("Missing evdev path for input device passthrough"= )); - goto error; + if ((source =3D virXPathNode("./source", ctxt))) { + g_autofree char *evdev =3D NULL; + + if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH) + evdev =3D virXMLPropString(source, "evdev"); + else if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EVDEV) + evdev =3D virXMLPropString(source, "dev"); + + if (evdev) + def->source.evdev =3D virFileSanitizePath(evdev); + + if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH || + def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EVDEV) { + if (!def->source.evdev) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Missing evdev path for input device")); + goto error; + } + } + + if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EVDEV) { + if (virXMLPropEnum(source, "grab", + virDomainInputSourceGrabTypeFromString, + VIR_XML_PROP_NONZERO, &def->source.grab) < = 0) + goto error; + + if (virXMLPropTristateSwitch(source, "repeat", + VIR_XML_PROP_NONE, &def->source.r= epeat) < 0) + goto error; + } } =20 if (virDomainVirtioOptionsParseXML(virXPathNode("./driver", ctxt), @@ -25912,9 +25947,12 @@ virDomainInputDefFormat(virBuffer *buf, { const char *type =3D virDomainInputTypeToString(def->type); const char *bus =3D virDomainInputBusTypeToString(def->bus); + const char *grab =3D virDomainInputSourceGrabTypeToString(def->source.= grab); + const char *repeat =3D virTristateSwitchTypeToString(def->source.repea= t); g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; g_auto(virBuffer) childBuf =3D VIR_BUFFER_INIT_CHILD(buf); g_auto(virBuffer) driverAttrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) sourceAttrBuf =3D VIR_BUFFER_INITIALIZER; =20 /* don't format keyboard into migratable XML for backward compatibilit= y */ if (flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE && @@ -25934,7 +25972,9 @@ virDomainInputDefFormat(virBuffer *buf, return -1; } =20 - virBufferAsprintf(&attrBuf, " type=3D'%s' bus=3D'%s'", type, bus); + virBufferAsprintf(&attrBuf, " type=3D'%s'", type); + if (def->bus !=3D VIR_DOMAIN_INPUT_BUS_NONE) + virBufferAsprintf(&attrBuf, " bus=3D'%s'", bus); =20 if (def->model) { const char *model =3D virDomainInputModelTypeToString(def->model); @@ -25952,7 +25992,18 @@ virDomainInputDefFormat(virBuffer *buf, =20 virXMLFormatElement(&childBuf, "driver", &driverAttrBuf, NULL); =20 - virBufferEscapeString(&childBuf, "\n", def->sour= ce.evdev); + if (def->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EVDEV) + virBufferEscapeString(&sourceAttrBuf, " dev=3D'%s'", def->source.e= vdev); + else + virBufferEscapeString(&sourceAttrBuf, " evdev=3D'%s'", def->source= .evdev); + + if (def->source.grab) + virBufferAsprintf(&sourceAttrBuf, " grab=3D'%s'", grab); + if (def->source.repeat) + virBufferAsprintf(&sourceAttrBuf, " repeat=3D'%s'", repeat); + + virXMLFormatElement(&childBuf, "source", &sourceAttrBuf, NULL); + virDomainDeviceInfoFormat(&childBuf, &def->info, flags); =20 virXMLFormatElement(buf, "input", &attrBuf, &childBuf); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index fab856a5c7..8d64d4a1e2 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1387,6 +1387,7 @@ typedef enum { VIR_DOMAIN_INPUT_TYPE_TABLET, VIR_DOMAIN_INPUT_TYPE_KBD, VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH, + VIR_DOMAIN_INPUT_TYPE_EVDEV, =20 VIR_DOMAIN_INPUT_TYPE_LAST } virDomainInputType; @@ -1397,6 +1398,7 @@ typedef enum { VIR_DOMAIN_INPUT_BUS_XEN, VIR_DOMAIN_INPUT_BUS_PARALLELS, /* pseudo device for VNC in containers= */ VIR_DOMAIN_INPUT_BUS_VIRTIO, + VIR_DOMAIN_INPUT_BUS_NONE, =20 VIR_DOMAIN_INPUT_BUS_LAST } virDomainInputBus; @@ -1410,12 +1412,21 @@ typedef enum { VIR_DOMAIN_INPUT_MODEL_LAST } virDomainInputModel; =20 +typedef enum { + VIR_DOMAIN_INPUT_SOURCE_GRAB_DEFAULT, + VIR_DOMAIN_INPUT_SOURCE_GRAB_ALL, + + VIR_DOMAIN_INPUT_SOURCE_GRAB_LAST +} virDomainInputSourceGrab; + struct _virDomainInputDef { int type; int bus; int model; /* virDomainInputModel */ struct { char *evdev; + virDomainInputSourceGrab grab; + virTristateSwitch repeat; } source; virDomainDeviceInfo info; virDomainVirtioOptions *virtio; @@ -3844,6 +3855,7 @@ VIR_ENUM_DECL(virDomainRedirdevBus); VIR_ENUM_DECL(virDomainInput); VIR_ENUM_DECL(virDomainInputBus); VIR_ENUM_DECL(virDomainInputModel); +VIR_ENUM_DECL(virDomainInputSourceGrab); VIR_ENUM_DECL(virDomainGraphics); VIR_ENUM_DECL(virDomainGraphicsListen); VIR_ENUM_DECL(virDomainGraphicsAuthConnected); diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 686b9e8d16..98202a3adc 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1961,6 +1961,14 @@ virDomainInputDefValidate(const virDomainInputDef *i= nput) } break; =20 + case VIR_DOMAIN_INPUT_TYPE_EVDEV: + if (input->bus !=3D VIR_DOMAIN_INPUT_BUS_NONE) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("input evdev doesn't support bus element"= )); + return -1; + } + break; + case VIR_DOMAIN_INPUT_TYPE_LAST: default: virReportEnumRangeError(virDomainInputType, input->type); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6fbdee4124..7c7627052b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -475,6 +475,8 @@ virDomainInputBusTypeToString; virDomainInputDefFind; virDomainInputDefFree; virDomainInputDefGetPath; +virDomainInputSourceGrabTypeFromString; +virDomainInputSourceGrabTypeToString; virDomainInputTypeToString; virDomainIOMMUModelTypeFromString; virDomainIOMMUModelTypeToString; diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 0e8835fb86..038d6478b2 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -362,6 +362,7 @@ qemuSetupInputCgroup(virDomainObj *vm, =20 switch (dev->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: VIR_DEBUG("Process path '%s' for input device", dev->source.evdev); ret =3D virCgroupAllowDevicePath(priv->cgroup, dev->source.evdev, VIR_CGROUP_DEVICE_RW, false); @@ -385,6 +386,7 @@ qemuTeardownInputCgroup(virDomainObj *vm, =20 switch (dev->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: VIR_DEBUG("Process path '%s' for input device", dev->source.evdev); ret =3D virCgroupDenyDevicePath(priv->cgroup, dev->source.evdev, VIR_CGROUP_DEVICE_RWM, false); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index dcc060bde9..9954bb0678 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4017,6 +4017,7 @@ qemuBuildVirtioInputDevStr(const virDomainDef *def, return NULL; } break; + case VIR_DOMAIN_INPUT_TYPE_EVDEV: case VIR_DOMAIN_INPUT_TYPE_LAST: default: virReportEnumRangeError(virDomainInputType, dev->type); diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index a11e40d9b2..10cf5eb6f4 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -973,6 +973,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDef *dev, case VIR_DOMAIN_INPUT_BUS_USB: case VIR_DOMAIN_INPUT_BUS_XEN: case VIR_DOMAIN_INPUT_BUS_PARALLELS: + case VIR_DOMAIN_INPUT_BUS_NONE: case VIR_DOMAIN_INPUT_BUS_LAST: return 0; } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index a64cddb9e7..c6f275e11d 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -5805,6 +5805,7 @@ qemuDomainDetachPrepInput(virDomainObj *vm, case VIR_DOMAIN_INPUT_BUS_LAST: case VIR_DOMAIN_INPUT_BUS_USB: case VIR_DOMAIN_INPUT_BUS_VIRTIO: + case VIR_DOMAIN_INPUT_BUS_NONE: break; } =20 diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index e6ddb43113..168b302904 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4563,6 +4563,7 @@ qemuValidateDomainDeviceDefInput(const virDomainInput= Def *input, case VIR_DOMAIN_INPUT_TYPE_MOUSE: case VIR_DOMAIN_INPUT_TYPE_TABLET: case VIR_DOMAIN_INPUT_TYPE_KBD: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("virtio (non-)transitional models are not " "supported for input type=3D%s"), @@ -4608,6 +4609,11 @@ qemuValidateDomainDeviceDefInput(const virDomainInpu= tDef *input, cap =3D QEMU_CAPS_VIRTIO_INPUT_HOST; ccwCap =3D QEMU_CAPS_LAST; break; + case VIR_DOMAIN_INPUT_TYPE_EVDEV: + baseName =3D "input-linux"; + cap =3D QEMU_CAPS_INPUT_LINUX; + ccwCap =3D QEMU_CAPS_LAST; + break; case VIR_DOMAIN_INPUT_TYPE_LAST: default: virReportEnumRangeError(virDomainInputType, diff --git a/src/security/security_apparmor.c b/src/security/security_appar= mor.c index a2a8435fe4..84363015dc 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -720,6 +720,7 @@ AppArmorSetInputLabel(virSecurityManager *mgr, =20 switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: if (input->source.evdev =3D=3D NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, _("%s: passthrough input device has no source"), diff --git a/src/security/security_dac.c b/src/security/security_dac.c index e973964735..76bfce7762 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1815,6 +1815,7 @@ virSecurityDACSetInputLabel(virSecurityManager *mgr, =20 switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: if (virSecurityDACGetIds(seclabel, priv, &user, &group, NULL, NULL= ) < 0) return -1; =20 @@ -1843,6 +1844,7 @@ virSecurityDACRestoreInputLabel(virSecurityManager *m= gr, =20 switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: ret =3D virSecurityDACRestoreFileLabel(mgr, input->source.evdev); break; =20 diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 29628d8953..b50f4463cc 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -1513,6 +1513,7 @@ virSecuritySELinuxSetInputLabel(virSecurityManager *m= gr, =20 switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: if (virSecuritySELinuxSetFilecon(mgr, input->source.evdev, seclabel->imagelabel, true) < 0) return -1; @@ -1543,6 +1544,7 @@ virSecuritySELinuxRestoreInputLabel(virSecurityManage= r *mgr, =20 switch ((virDomainInputType)input->type) { case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH: + case VIR_DOMAIN_INPUT_TYPE_EVDEV: rc =3D virSecuritySELinuxRestoreFileLabel(mgr, input->source.evdev= , true); break; =20 diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index e0d78ae309..52cfebf6e0 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -1149,7 +1149,8 @@ get_files(vahControl * ctl) =20 for (i =3D 0; i < ctl->def->ninputs; i++) { if (ctl->def->inputs[i] && - ctl->def->inputs[i]->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PAS= STHROUGH) { + (ctl->def->inputs[i]->type =3D=3D VIR_DOMAIN_INPUT_TYPE_PA= SSTHROUGH || + ctl->def->inputs[i]->type =3D=3D VIR_DOMAIN_INPUT_TYPE_EV= DEV)) { if (vah_add_file(&buf, ctl->def->inputs[i]->source.evdev, "rw"= ) !=3D 0) goto cleanup; } diff --git a/tests/qemuxml2argvdata/input-linux.xml b/tests/qemuxml2argvdat= a/input-linux.xml new file mode 100644 index 0000000000..cbc28830ef --- /dev/null +++ b/tests/qemuxml2argvdata/input-linux.xml @@ -0,0 +1,31 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 + 219100 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-i386 + + +
+ + + + + + +