From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120265; cv=none; d=zohomail.com; s=zohoarc; b=hnGDryCWQVlBpYtaxTv6Zc8uGVvjlwIvg5bjgb3uAjm21bu01E75XLO9vHKCczn1SJw99eEEhLwWnzCjsjeWzQTGTNPkmY9VHwfLSutE7aTMVIG701KO6F6QroqE4j2J6tkEOAiVgpSalSld412RMWAtZCajGM2XdQrC7bhLpJU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120265; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=h/Rq0T4qHdj5P4fsrjuVBaKf49W5WppINvxKA/pkbYI=; b=n725ZuvvpnT5AtFeLnG9vUJI5r9udLqY58wHfkuOs7XmBHoJZIk9S7I5+Xvcbw8pUh+WhN7zqrXKVybOwx15asGmGYdRr22U2Oe/EMmTAqVKnWddjrXA64Y5i56xyeEWzzWnyLWO5S0eou4LxocYrm9Jzq4VG1o6vrWZJjoohY8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120265562338.7326614208133; Mon, 13 Jun 2022 04:37:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347970.574275 (Exim 4.92) (envelope-from ) id 1o0iNZ-0003uj-QX; Mon, 13 Jun 2022 11:37:09 +0000 Received: by outflank-mailman (output) from mailman id 347970.574275; Mon, 13 Jun 2022 11:37:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNZ-0003uc-NY; Mon, 13 Jun 2022 11:37:09 +0000 Received: by outflank-mailman (input) for mailman id 347970; Mon, 13 Jun 2022 11:37:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNX-0003eX-MF for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:07 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 267835d0-eb0d-11ec-8901-93a377f238d6; Mon, 13 Jun 2022 13:37:06 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-617-fRcmcX6VO6ac2iBNsirumA-1; Mon, 13 Jun 2022 07:36:59 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CA5A7100BAC0; Mon, 13 Jun 2022 11:36:58 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 42140492C3B; Mon, 13 Jun 2022 11:36:58 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id DCEDF18007B8; Mon, 13 Jun 2022 13:36:55 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 267835d0-eb0d-11ec-8901-93a377f238d6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=h/Rq0T4qHdj5P4fsrjuVBaKf49W5WppINvxKA/pkbYI=; b=AjtSITVHGveVtwQ83/na/jnjS+JNhAN/KOBxdJC2iMyNPVeBkKffB+jdeIDxeCCt/Os3cZ RIMlW7i+q+TuIJI8xwovoJ6LMUUPVZm3zIW7kXF5D3k8uSLBr3LnD4f+ob1TeC7JGGE0iz FvD1f3jEy3MZwObx+Vq8u/+v238I6Ho= X-MC-Unique: fRcmcX6VO6ac2iBNsirumA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , =?UTF-8?q?Volker=20R=C3=BCmelin?= Subject: [PULL 01/16] ui/gtk-gl-area: implement GL context destruction Date: Mon, 13 Jun 2022 13:36:40 +0200 Message-Id: <20220613113655.3693872-2-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267715100004 From: Volker R=C3=BCmelin The counterpart function for gd_gl_area_create_context() is currently empty. Implement the gd_gl_area_destroy_context() function to avoid GL context leaks. Signed-off-by: Volker R=C3=BCmelin Message-Id: <20220605085131.7711-1-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann --- ui/gtk-gl-area.c | 8 +++++++- ui/trace-events | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index fc5a082eb846..0e20ea031d34 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -201,7 +201,13 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *= dgc, =20 void gd_gl_area_destroy_context(DisplayGLCtx *dgc, QEMUGLContext ctx) { - /* FIXME */ + GdkGLContext *current_ctx =3D gdk_gl_context_get_current(); + + trace_gd_gl_area_destroy_context(ctx, current_ctx); + if (ctx =3D=3D current_ctx) { + gdk_gl_context_clear_current(); + } + g_clear_object(&ctx); } =20 void gd_gl_area_scanout_texture(DisplayChangeListener *dcl, diff --git a/ui/trace-events b/ui/trace-events index f78b5e66061f..1040ba0f88c7 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -26,6 +26,7 @@ gd_key_event(const char *tab, int gdk_keycode, int qkeyco= de, const char *action) gd_grab(const char *tab, const char *device, const char *reason) "tab=3D%s= , dev=3D%s, reason=3D%s" gd_ungrab(const char *tab, const char *device) "tab=3D%s, dev=3D%s" gd_keymap_windowing(const char *name) "backend=3D%s" +gd_gl_area_destroy_context(void *ctx, void *current_ctx) "ctx=3D%p, curren= t_ctx=3D%p" =20 # vnc-auth-sasl.c # vnc-auth-vencrypt.c --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120264; cv=none; d=zohomail.com; s=zohoarc; b=KmN2IbLLbmq5qntJrS6IAmQmdaB002heGlzZsPUJiZEG/izRYVVH+ldBLEeY7dJ8ldLx/jKLoxaTI6p6ltZg0aTTLApVN0YEbDjapmY42894oEC3okf2qUAP1Vp+gSy4GongfYhnuSEbcvNoUio1vM/3Wr6OIwrzVk+UMllpjIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120264; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wx3J1U/WRMVytLzUKnVNwgCHbbzsbHu+DjsV7mqclmI=; b=GfMlTCN/P97saT1t98hirILp7Qh7CSLzO2SqrocVY95J5K+SHe9Fi4fnO1RlE3p3FhMJkm8NEqibKfR/5KhKoD3lZIxIn8tF7zI2XBlb9iyqvtqbVKAYJkG4rqZGnKPie2fgY3C9m2KLH6/0AH56Xayo88330b1DOJ2Wur7KvdI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120264486872.8270473803684; Mon, 13 Jun 2022 04:37:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347973.574292 (Exim 4.92) (envelope-from ) id 1o0iNa-000472-RF; Mon, 13 Jun 2022 11:37:10 +0000 Received: by outflank-mailman (output) from mailman id 347973.574292; Mon, 13 Jun 2022 11:37:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNa-00044H-Ft; Mon, 13 Jun 2022 11:37:10 +0000 Received: by outflank-mailman (input) for mailman id 347973; Mon, 13 Jun 2022 11:37:08 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNY-0003eY-Cc for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:08 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 25fc9ad4-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:05 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-517-IuligG2ANNOtbllnN2TiEQ-1; Mon, 13 Jun 2022 07:37:01 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 78A86802E5B; Mon, 13 Jun 2022 11:37:00 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 16446C27E97; Mon, 13 Jun 2022 11:37:00 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id EB21C1800908; Mon, 13 Jun 2022 13:36:55 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 25fc9ad4-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wx3J1U/WRMVytLzUKnVNwgCHbbzsbHu+DjsV7mqclmI=; b=amrHM4ipEeiRTQLE9kMWKYMXVzaROc7yI1/4/+A6EqSylCcko55lbJSHYI8kyQ9BjYtXeU 64UpcqI3w5yPfLO/r8zunBOxsdbgWEce2gns8fH7ZmHhuYhTPAAkKCwqawPe5w+++O5aXx JRZnhV9qlkPwQxhPXdTgvfd8zH0mKSc= X-MC-Unique: IuligG2ANNOtbllnN2TiEQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , =?UTF-8?q?Volker=20R=C3=BCmelin?= Subject: [PULL 02/16] ui/gtk-gl-area: create the requested GL context version Date: Mon, 13 Jun 2022 13:36:41 +0200 Message-Id: <20220613113655.3693872-3-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120265788100001 From: Volker R=C3=BCmelin Since about 2018 virglrenderer (commit fa835b0f88 "vrend: don't hardcode context version") tries to open the highest available GL context version. This is done by creating the known GL context versions from the highest to the lowest until (*create_gl_context) returns a context !=3D NULL. This does not work properly with the current QEMU gd_gl_area_create_context() function, because gdk_gl_context_realize() on Wayland creates a version 3.0 legacy context if the requested GL context version can't be created. In order for virglrenderer to find the highest available GL context version, return NULL if the created context version is lower than the requested version. This fixes the following error: QEMU started with -device virtio-vga-gl -display gtk,gl=3Don. Under Wayland, the guest window remains black and the following information can be seen on the host. gl_version 30 - compat profile (qemu:5978): Gdk-WARNING **: 16:19:01.533: gdk_gl_context_set_required_version - GL context versions less than 3.2 are not supported. (qemu:5978): Gdk-WARNING **: 16:19:01.537: gdk_gl_context_set_required_version - GL context versions less than 3.2 are not supported. (qemu:5978): Gdk-WARNING **: 16:19:01.554: gdk_gl_context_set_required_version - GL context versions less than 3.2 are not supported. vrend_renderer_fill_caps: Entering with stale GL error: 1282 To reproduce this error, an OpenGL driver is required on the host that doesn't have the latest OpenGL extensions fully implemented. An example for this is the Intel i965 driver on a Haswell processor. Signed-off-by: Volker R=C3=BCmelin Message-Id: <20220605085131.7711-2-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann --- ui/gtk-gl-area.c | 31 ++++++++++++++++++++++++++++++- ui/trace-events | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index 0e20ea031d34..2e0129c28cd4 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -170,6 +170,23 @@ void gd_gl_area_switch(DisplayChangeListener *dcl, } } =20 +static int gd_cmp_gl_context_version(int major, int minor, QEMUGLParams *p= arams) +{ + if (major > params->major_ver) { + return 1; + } + if (major < params->major_ver) { + return -1; + } + if (minor > params->minor_ver) { + return 1; + } + if (minor < params->minor_ver) { + return -1; + } + return 0; +} + QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *dgc, QEMUGLParams *params) { @@ -177,8 +194,8 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *d= gc, GdkWindow *window; GdkGLContext *ctx; GError *err =3D NULL; + int major, minor; =20 - gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area)); window =3D gtk_widget_get_window(vc->gfx.drawing_area); ctx =3D gdk_window_create_gl_context(window, &err); if (err) { @@ -196,6 +213,18 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *= dgc, g_clear_object(&ctx); return NULL; } + + gdk_gl_context_make_current(ctx); + gdk_gl_context_get_version(ctx, &major, &minor); + gdk_gl_context_clear_current(); + gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area)); + + if (gd_cmp_gl_context_version(major, minor, params) =3D=3D -1) { + /* created ctx version < requested version */ + g_clear_object(&ctx); + } + + trace_gd_gl_area_create_context(ctx, params->major_ver, params->minor_= ver); return ctx; } =20 diff --git a/ui/trace-events b/ui/trace-events index 1040ba0f88c7..a922f00e10b4 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -26,6 +26,7 @@ gd_key_event(const char *tab, int gdk_keycode, int qkeyco= de, const char *action) gd_grab(const char *tab, const char *device, const char *reason) "tab=3D%s= , dev=3D%s, reason=3D%s" gd_ungrab(const char *tab, const char *device) "tab=3D%s, dev=3D%s" gd_keymap_windowing(const char *name) "backend=3D%s" +gd_gl_area_create_context(void *ctx, int major, int minor) "ctx=3D%p, majo= r=3D%d, minor=3D%d" gd_gl_area_destroy_context(void *ctx, void *current_ctx) "ctx=3D%p, curren= t_ctx=3D%p" =20 # vnc-auth-sasl.c --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120266; cv=none; d=zohomail.com; s=zohoarc; b=Qaa51lwLQjj6EZBj8T+bCO4HK+fxDlQZMIl6105t7QaqvuQXC8jsHXS7n2bdVdKPgZWIMlQLeCcYaH2E5lJHWPd93WnJte6LwP9gL8HDC4AAkcfEIbftIVTBxJf6flwUMWn+TOFY572/3GuYUt+LLEnd749Qen53SEebZoFTik8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120266; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qgE0u/psF+5HbFaMEFEBF+1+y1Gn5UXWEs7HICOeN3Q=; b=HZzfp3LixbYm+wKFE46p2U48Gi4i+a44rmE/d1bh5lC44nw2c07g1l8hz59rfY7CBgKU5dwMGT3mpy+qfOl7jeMjn9aNYZ/3gGyASORroZjGYlEqg6ZdMitnk/aPfPjnrUY8jj/QgNhwj6kD0nRVAUpPwM7pWQQWDoRnQBpSQ6Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120266927489.4251281274129; Mon, 13 Jun 2022 04:37:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347974.574299 (Exim 4.92) (envelope-from ) id 1o0iNb-0004L5-Cm; Mon, 13 Jun 2022 11:37:11 +0000 Received: by outflank-mailman (output) from mailman id 347974.574299; Mon, 13 Jun 2022 11:37:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNb-0004I5-5d; Mon, 13 Jun 2022 11:37:11 +0000 Received: by outflank-mailman (input) for mailman id 347974; Mon, 13 Jun 2022 11:37:09 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNZ-0003eY-5m for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:09 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 26bc0433-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:06 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-294-d-L92S3vMnanKezqCR8Mgg-1; Mon, 13 Jun 2022 07:37:00 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5F65929AA3B9; Mon, 13 Jun 2022 11:37:00 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2A9D9404E4C3; Mon, 13 Jun 2022 11:37:00 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 031B8180091C; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 26bc0433-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qgE0u/psF+5HbFaMEFEBF+1+y1Gn5UXWEs7HICOeN3Q=; b=h+S36l/LCxfuEc3Y4TeKx8GaNlE/NcuWNEUhCygKkUvXQ5I3aYCIueI8GOWwh7WPCKO8ft 04Tje2bRNd/fCvXfM/zocp0T7KQfZ+pvR9yPD+9rjK8QXfAH9OXZoO5Ma3HDd94ehI23A8 3O871IA9ZCOfSsBcBN5J9TmDOT+s7wQ= X-MC-Unique: d-L92S3vMnanKezqCR8Mgg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 03/16] ui/cocoa: Fix poweroff request code Date: Mon, 13 Jun 2022 13:36:42 +0200 Message-Id: <20220613113655.3693872-4-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267705100003 From: Akihiko Odaki Signed-off-by: Akihiko Odaki Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20220529082508.89097-1-akihiko.odaki@gmail.com> Signed-off-by: Gerd Hoffmann --- ui/cocoa.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index 09a62817f2a9..84c84e98fc5e 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -35,6 +35,7 @@ #include "ui/kbd-state.h" #include "sysemu/sysemu.h" #include "sysemu/runstate.h" +#include "sysemu/runstate-action.h" #include "sysemu/cpu-throttle.h" #include "qapi/error.h" #include "qapi/qapi-commands-block.h" @@ -1290,7 +1291,10 @@ - (void)applicationWillTerminate:(NSNotification *)a= Notification { COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n"); =20 - qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI); + with_iothread_lock(^{ + shutdown_action =3D SHUTDOWN_ACTION_POWEROFF; + qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI); + }); =20 /* * Sleep here, because returning will cause OSX to kill us --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120268; cv=none; d=zohomail.com; s=zohoarc; b=hs+22WqUzUzi0FNb29GAR+zmJY+yqpMK2tP3iwBUXOmDtVzBbCe/sEgj2KP0RPyyfoQh5l0GfqAtDDpIrEOBJxEoJnZs+QJ7CPZ9/doet6W1k4CbI1qO2j6L1A3L5mYv2wGYP305vXUomEcrnB0HXiG0VBBGusiLvPwIID77YDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120268; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=70clork2yZyYjdUXKnsu9VZIWlpSX2dH9Nrdwr2C7Z4=; b=T4qkDMXqAIgUZ5LnHXmRVZgNeQ1cCq5HsCBC/V9c4SGH/GMnFz+fgE/E7Ii6XRTMly4HP/XI2avgkpO9AogkhKHdAgkda/gCYz97H80bkZs3PNYFbzGzXl8THwZUx0xCH4i9XiCYxMTbgqDtg6vvNBsxVQXKvayomxB6uBg6vJM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120268170870.2247944844615; Mon, 13 Jun 2022 04:37:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347972.574287 (Exim 4.92) (envelope-from ) id 1o0iNa-000424-I7; Mon, 13 Jun 2022 11:37:10 +0000 Received: by outflank-mailman (output) from mailman id 347972.574287; Mon, 13 Jun 2022 11:37:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNa-0003z8-78; Mon, 13 Jun 2022 11:37:10 +0000 Received: by outflank-mailman (input) for mailman id 347972; Mon, 13 Jun 2022 11:37:08 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNY-0003eX-6p for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:08 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 26cf7725-eb0d-11ec-8901-93a377f238d6; Mon, 13 Jun 2022 13:37:06 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-541-38gwYqZlPOWMLeH1dIGXsA-1; Mon, 13 Jun 2022 07:37:02 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1DE043C10226; Mon, 13 Jun 2022 11:37:02 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AE3471410DDB; Mon, 13 Jun 2022 11:37:01 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 1412E180091D; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 26cf7725-eb0d-11ec-8901-93a377f238d6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=70clork2yZyYjdUXKnsu9VZIWlpSX2dH9Nrdwr2C7Z4=; b=ht4pV8TG1aq9WsPR6cHCuvKjxaIAZea4KAc27RNujDs1wkTGlfb4WqGGD6F7/7UPkYAoh4 SN3KF+2yvwuD0lcP731wOfQFiMRl4mtvUtruYAKfGHOiIhy1nb6iSZCKLJQ+2a/J0M7FyJ I2QWbXxfdZpEjwddEMM6fM9KGmx8Bxg= X-MC-Unique: 38gwYqZlPOWMLeH1dIGXsA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 04/16] hw/usb: Add CanoKey Implementation Date: Mon, 13 Jun 2022 13:36:43 +0200 Message-Id: <20220613113655.3693872-5-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120269751100022 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" This commit added a new emulated device called CanoKey to QEMU. CanoKey implements platform independent features in canokey-core https://github.com/canokeys/canokey-core, and leaves the USB implementation to the platform. In this commit the USB part was implemented in QEMU using QEMU's USB APIs, therefore the emulated CanoKey can communicate with the guest OS using USB. Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- hw/usb/canokey.h | 69 +++++++++++ hw/usb/canokey.c | 300 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 hw/usb/canokey.h create mode 100644 hw/usb/canokey.c diff --git a/hw/usb/canokey.h b/hw/usb/canokey.h new file mode 100644 index 000000000000..24cf30420346 --- /dev/null +++ b/hw/usb/canokey.h @@ -0,0 +1,69 @@ +/* + * CanoKey QEMU device header. + * + * Copyright (c) 2021-2022 Canokeys.org + * Written by Hongren (Zenithal) Zheng + * + * This code is licensed under the Apache-2.0. + */ + +#ifndef CANOKEY_H +#define CANOKEY_H + +#include "hw/qdev-core.h" + +#define TYPE_CANOKEY "canokey" +#define CANOKEY(obj) \ + OBJECT_CHECK(CanoKeyState, (obj), TYPE_CANOKEY) + +/* + * State of Canokey (i.e. hw/canokey.c) + */ + +/* CTRL INTR BULK */ +#define CANOKEY_EP_NUM 3 +/* BULK/INTR IN can be up to 1352 bytes, e.g. get key info */ +#define CANOKEY_EP_IN_BUFFER_SIZE 2048 +/* BULK OUT can be up to 270 bytes, e.g. PIV import cert */ +#define CANOKEY_EP_OUT_BUFFER_SIZE 512 + +typedef enum { + CANOKEY_EP_IN_WAIT, + CANOKEY_EP_IN_READY, + CANOKEY_EP_IN_STALL +} CanoKeyEPState; + +typedef struct CanoKeyState { + USBDevice dev; + + /* IN packets from canokey device loop */ + uint8_t ep_in[CANOKEY_EP_NUM][CANOKEY_EP_IN_BUFFER_SIZE]; + /* + * See canokey_emu_transmit + * + * For large INTR IN, receive multiple data from canokey device loop + * in this case ep_in_size would increase with every call + */ + uint32_t ep_in_size[CANOKEY_EP_NUM]; + /* + * Used in canokey_handle_data + * for IN larger than p->iov.size, we would do multiple handle_data() + * + * The difference between ep_in_pos and ep_in_size: + * We first increase ep_in_size to fill ep_in buffer in device_loop, + * then use ep_in_pos to submit data from ep_in buffer in handle_data + */ + uint32_t ep_in_pos[CANOKEY_EP_NUM]; + CanoKeyEPState ep_in_state[CANOKEY_EP_NUM]; + + /* OUT pointer to canokey recv buffer */ + uint8_t *ep_out[CANOKEY_EP_NUM]; + uint32_t ep_out_size[CANOKEY_EP_NUM]; + /* For large BULK OUT, multiple write to ep_out is needed */ + uint8_t ep_out_buffer[CANOKEY_EP_NUM][CANOKEY_EP_OUT_BUFFER_SIZE]; + + /* Properties */ + char *file; /* canokey-file */ +} CanoKeyState; + +#endif /* CANOKEY_H */ diff --git a/hw/usb/canokey.c b/hw/usb/canokey.c new file mode 100644 index 000000000000..6cb8b7cdb089 --- /dev/null +++ b/hw/usb/canokey.c @@ -0,0 +1,300 @@ +/* + * CanoKey QEMU device implementation. + * + * Copyright (c) 2021-2022 Canokeys.org + * Written by Hongren (Zenithal) Zheng + * + * This code is licensed under the Apache-2.0. + */ + +#include "qemu/osdep.h" +#include + +#include "qemu/module.h" +#include "qapi/error.h" +#include "hw/usb.h" +#include "hw/qdev-properties.h" +#include "desc.h" +#include "canokey.h" + +#define CANOKEY_EP_IN(ep) ((ep) & 0x7F) + +#define CANOKEY_VENDOR_NUM 0x20a0 +#define CANOKEY_PRODUCT_NUM 0x42d2 + +/* + * placeholder, canokey-qemu implements its own usb desc + * Namely we do not use usb_desc_handle_contorl + */ +enum { + STR_MANUFACTURER =3D 1, + STR_PRODUCT, + STR_SERIALNUMBER +}; + +static const USBDescStrings desc_strings =3D { + [STR_MANUFACTURER] =3D "canokeys.org", + [STR_PRODUCT] =3D "CanoKey QEMU", + [STR_SERIALNUMBER] =3D "0" +}; + +static const USBDescDevice desc_device_canokey =3D { + .bcdUSB =3D 0x0, + .bMaxPacketSize0 =3D 16, + .bNumConfigurations =3D 0, + .confs =3D NULL, +}; + +static const USBDesc desc_canokey =3D { + .id =3D { + .idVendor =3D CANOKEY_VENDOR_NUM, + .idProduct =3D CANOKEY_PRODUCT_NUM, + .bcdDevice =3D 0x0100, + .iManufacturer =3D STR_MANUFACTURER, + .iProduct =3D STR_PRODUCT, + .iSerialNumber =3D STR_SERIALNUMBER, + }, + .full =3D &desc_device_canokey, + .high =3D &desc_device_canokey, + .str =3D desc_strings, +}; + + +/* + * libcanokey-qemu.so side functions + * All functions are called from canokey_emu_device_loop + */ +int canokey_emu_stall_ep(void *base, uint8_t ep) +{ + CanoKeyState *key =3D base; + uint8_t ep_in =3D CANOKEY_EP_IN(ep); /* INTR IN has ep 129 */ + key->ep_in_size[ep_in] =3D 0; + key->ep_in_state[ep_in] =3D CANOKEY_EP_IN_STALL; + return 0; +} + +int canokey_emu_set_address(void *base, uint8_t addr) +{ + CanoKeyState *key =3D base; + key->dev.addr =3D addr; + return 0; +} + +int canokey_emu_prepare_receive( + void *base, uint8_t ep, uint8_t *pbuf, uint16_t size) +{ + CanoKeyState *key =3D base; + key->ep_out[ep] =3D pbuf; + key->ep_out_size[ep] =3D size; + return 0; +} + +int canokey_emu_transmit( + void *base, uint8_t ep, const uint8_t *pbuf, uint16_t size) +{ + CanoKeyState *key =3D base; + uint8_t ep_in =3D CANOKEY_EP_IN(ep); /* INTR IN has ep 129 */ + memcpy(key->ep_in[ep_in] + key->ep_in_size[ep_in], + pbuf, size); + key->ep_in_size[ep_in] +=3D size; + key->ep_in_state[ep_in] =3D CANOKEY_EP_IN_READY; + /* + * ready for more data in device loop + * + * Note: this is a quirk for CanoKey CTAPHID + * because it calls multiple emu_transmit in one device_loop + * but w/o data_in it would stuck in device_loop + * This has no side effect for CCID as it is strictly + * OUT then IN transfer + * However it has side effect for Control transfer + */ + if (ep_in !=3D 0) { + canokey_emu_data_in(ep_in); + } + return 0; +} + +uint32_t canokey_emu_get_rx_data_size(void *base, uint8_t ep) +{ + CanoKeyState *key =3D base; + return key->ep_out_size[ep]; +} + +/* + * QEMU side functions + */ +static void canokey_handle_reset(USBDevice *dev) +{ + CanoKeyState *key =3D CANOKEY(dev); + for (int i =3D 0; i !=3D CANOKEY_EP_NUM; ++i) { + key->ep_in_state[i] =3D CANOKEY_EP_IN_WAIT; + key->ep_in_pos[i] =3D 0; + key->ep_in_size[i] =3D 0; + } + canokey_emu_reset(); +} + +static void canokey_handle_control(USBDevice *dev, USBPacket *p, + int request, int value, int index, int length, uint8_t *dat= a) +{ + CanoKeyState *key =3D CANOKEY(dev); + + canokey_emu_setup(request, value, index, length); + + uint32_t dir_in =3D request & DeviceRequest; + if (!dir_in) { + /* OUT */ + if (key->ep_out[0] !=3D NULL) { + memcpy(key->ep_out[0], data, length); + } + canokey_emu_data_out(p->ep->nr, data); + } + + canokey_emu_device_loop(); + + /* IN */ + switch (key->ep_in_state[0]) { + case CANOKEY_EP_IN_WAIT: + p->status =3D USB_RET_NAK; + break; + case CANOKEY_EP_IN_STALL: + p->status =3D USB_RET_STALL; + break; + case CANOKEY_EP_IN_READY: + memcpy(data, key->ep_in[0], key->ep_in_size[0]); + p->actual_length =3D key->ep_in_size[0]; + /* reset state */ + key->ep_in_state[0] =3D CANOKEY_EP_IN_WAIT; + key->ep_in_size[0] =3D 0; + key->ep_in_pos[0] =3D 0; + break; + } +} + +static void canokey_handle_data(USBDevice *dev, USBPacket *p) +{ + CanoKeyState *key =3D CANOKEY(dev); + + uint8_t ep_in =3D CANOKEY_EP_IN(p->ep->nr); + uint8_t ep_out =3D p->ep->nr; + uint32_t in_len; + uint32_t out_pos; + uint32_t out_len; + switch (p->pid) { + case USB_TOKEN_OUT: + usb_packet_copy(p, key->ep_out_buffer[ep_out], p->iov.size); + out_pos =3D 0; + while (out_pos !=3D p->iov.size) { + /* + * key->ep_out[ep_out] set by prepare_receive + * to be a buffer inside libcanokey-qemu.so + * key->ep_out_size[ep_out] set by prepare_receive + * to be the buffer length + */ + out_len =3D MIN(p->iov.size - out_pos, key->ep_out_size[ep_out= ]); + memcpy(key->ep_out[ep_out], + key->ep_out_buffer[ep_out] + out_pos, out_len); + out_pos +=3D out_len; + /* update ep_out_size to actual len */ + key->ep_out_size[ep_out] =3D out_len; + canokey_emu_data_out(ep_out, NULL); + } + break; + case USB_TOKEN_IN: + if (key->ep_in_pos[ep_in] =3D=3D 0) { /* first time IN */ + canokey_emu_data_in(ep_in); + canokey_emu_device_loop(); /* may call transmit multiple times= */ + } + switch (key->ep_in_state[ep_in]) { + case CANOKEY_EP_IN_WAIT: + /* NAK for early INTR IN */ + p->status =3D USB_RET_NAK; + break; + case CANOKEY_EP_IN_STALL: + p->status =3D USB_RET_STALL; + break; + case CANOKEY_EP_IN_READY: + /* submit part of ep_in buffer to USBPacket */ + in_len =3D MIN(key->ep_in_size[ep_in] - key->ep_in_pos[ep_in], + p->iov.size); + usb_packet_copy(p, + key->ep_in[ep_in] + key->ep_in_pos[ep_in], in_len); + key->ep_in_pos[ep_in] +=3D in_len; + /* reset state if all data submitted */ + if (key->ep_in_pos[ep_in] =3D=3D key->ep_in_size[ep_in]) { + key->ep_in_state[ep_in] =3D CANOKEY_EP_IN_WAIT; + key->ep_in_size[ep_in] =3D 0; + key->ep_in_pos[ep_in] =3D 0; + } + break; + } + break; + default: + p->status =3D USB_RET_STALL; + break; + } +} + +static void canokey_realize(USBDevice *base, Error **errp) +{ + CanoKeyState *key =3D CANOKEY(base); + + if (key->file =3D=3D NULL) { + error_setg(errp, "You must provide file=3D/path/to/canokey-file"); + return; + } + + usb_desc_init(base); + + for (int i =3D 0; i !=3D CANOKEY_EP_NUM; ++i) { + key->ep_in_state[i] =3D CANOKEY_EP_IN_WAIT; + key->ep_in_size[i] =3D 0; + key->ep_in_pos[i] =3D 0; + } + + if (canokey_emu_init(key, key->file)) { + error_setg(errp, "canokey can not create or read %s", key->file); + return; + } +} + +static void canokey_unrealize(USBDevice *base) +{ +} + +static Property canokey_properties[] =3D { + DEFINE_PROP_STRING("file", CanoKeyState, file), + DEFINE_PROP_END_OF_LIST(), +}; + +static void canokey_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + USBDeviceClass *uc =3D USB_DEVICE_CLASS(klass); + + uc->product_desc =3D "CanoKey QEMU"; + uc->usb_desc =3D &desc_canokey; + uc->handle_reset =3D canokey_handle_reset; + uc->handle_control =3D canokey_handle_control; + uc->handle_data =3D canokey_handle_data; + uc->handle_attach =3D usb_desc_attach; + uc->realize =3D canokey_realize; + uc->unrealize =3D canokey_unrealize; + dc->desc =3D "CanoKey QEMU"; + device_class_set_props(dc, canokey_properties); + set_bit(DEVICE_CATEGORY_MISC, dc->categories); +} + +static const TypeInfo canokey_info =3D { + .name =3D TYPE_CANOKEY, + .parent =3D TYPE_USB_DEVICE, + .instance_size =3D sizeof(CanoKeyState), + .class_init =3D canokey_class_init +}; + +static void canokey_register_types(void) +{ + type_register_static(&canokey_info); +} + +type_init(canokey_register_types) --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120266; cv=none; d=zohomail.com; s=zohoarc; b=UBJz+w9J10do/HlBbfqJLF8Aq3WWx5IkRpP9QOHQejg76GxUKjOFMXMiFlj2+s2LuWJfHotR3IyXIVHrcWQ8cUlFe40SqV17oHP88lPvCsDWeLt9OWWGZaSuh7Iav3AnB+Drh+d+f/12B1+dNxd0j1EFxUhEvgLtfLrZ+c8b+xA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120266; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XMFb51C69E0Si128czVwJqlqgwkrMEmsc4JCjQtiyLU=; b=HBaTmwpY9eUBthiVtKGjrvAFD9tCGrYP4mbSxONCps1GKKVjhyj/Rl7sn41YuCiwBzr6sh3YPqBkfUjWpHZIDc0NMWU5gY6OFJCKa76NfOha5/v41zic1cEUa9JUNrC9PQU/Rs07XPlbXmUfFflxKTzzS0YeJIqeg542/LwITx8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16551202668960.12923370826047176; Mon, 13 Jun 2022 04:37:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347975.574309 (Exim 4.92) (envelope-from ) id 1o0iNc-0004Tu-0v; Mon, 13 Jun 2022 11:37:12 +0000 Received: by outflank-mailman (output) from mailman id 347975.574309; Mon, 13 Jun 2022 11:37:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNb-0004RS-Lp; Mon, 13 Jun 2022 11:37:11 +0000 Received: by outflank-mailman (input) for mailman id 347975; Mon, 13 Jun 2022 11:37:10 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNa-0003eY-66 for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:10 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 27558830-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:07 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-189-0fjs8QgvNs-urwr1APxO5Q-1; Mon, 13 Jun 2022 07:37:02 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1FD5380B90D; Mon, 13 Jun 2022 11:37:02 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AEE1B1410F34; Mon, 13 Jun 2022 11:37:01 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 23AC31800925; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 27558830-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120226; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XMFb51C69E0Si128czVwJqlqgwkrMEmsc4JCjQtiyLU=; b=SZcXq/grJ5Bjkjgyeo1d+NkA8ZH5NUPw9Iy0UmL9f0oIIRJqsq/o/mGvW+nJnjlmCvvI71 FyRBitZXPk7jHqabIKJmJ8NFAu0C4bu+3ffhL5hy6K02wYnRCsmMz68mCgPdGfa4FR/eBG Z9sGMozsUSMcHkeNgeEI7Vh3MgwdTU8= X-MC-Unique: 0fjs8QgvNs-urwr1APxO5Q-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 05/16] hw/usb/canokey: Add trace events Date: Mon, 13 Jun 2022 13:36:44 +0200 Message-Id: <20220613113655.3693872-6-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267738100005 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- hw/usb/canokey.c | 13 +++++++++++++ hw/usb/trace-events | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/hw/usb/canokey.c b/hw/usb/canokey.c index 6cb8b7cdb089..4a08b1cbd776 100644 --- a/hw/usb/canokey.c +++ b/hw/usb/canokey.c @@ -14,6 +14,7 @@ #include "qapi/error.h" #include "hw/usb.h" #include "hw/qdev-properties.h" +#include "trace.h" #include "desc.h" #include "canokey.h" =20 @@ -66,6 +67,7 @@ static const USBDesc desc_canokey =3D { */ int canokey_emu_stall_ep(void *base, uint8_t ep) { + trace_canokey_emu_stall_ep(ep); CanoKeyState *key =3D base; uint8_t ep_in =3D CANOKEY_EP_IN(ep); /* INTR IN has ep 129 */ key->ep_in_size[ep_in] =3D 0; @@ -75,6 +77,7 @@ int canokey_emu_stall_ep(void *base, uint8_t ep) =20 int canokey_emu_set_address(void *base, uint8_t addr) { + trace_canokey_emu_set_address(addr); CanoKeyState *key =3D base; key->dev.addr =3D addr; return 0; @@ -83,6 +86,7 @@ int canokey_emu_set_address(void *base, uint8_t addr) int canokey_emu_prepare_receive( void *base, uint8_t ep, uint8_t *pbuf, uint16_t size) { + trace_canokey_emu_prepare_receive(ep, size); CanoKeyState *key =3D base; key->ep_out[ep] =3D pbuf; key->ep_out_size[ep] =3D size; @@ -92,6 +96,7 @@ int canokey_emu_prepare_receive( int canokey_emu_transmit( void *base, uint8_t ep, const uint8_t *pbuf, uint16_t size) { + trace_canokey_emu_transmit(ep, size); CanoKeyState *key =3D base; uint8_t ep_in =3D CANOKEY_EP_IN(ep); /* INTR IN has ep 129 */ memcpy(key->ep_in[ep_in] + key->ep_in_size[ep_in], @@ -125,6 +130,7 @@ uint32_t canokey_emu_get_rx_data_size(void *base, uint8= _t ep) */ static void canokey_handle_reset(USBDevice *dev) { + trace_canokey_handle_reset(); CanoKeyState *key =3D CANOKEY(dev); for (int i =3D 0; i !=3D CANOKEY_EP_NUM; ++i) { key->ep_in_state[i] =3D CANOKEY_EP_IN_WAIT; @@ -137,6 +143,7 @@ static void canokey_handle_reset(USBDevice *dev) static void canokey_handle_control(USBDevice *dev, USBPacket *p, int request, int value, int index, int length, uint8_t *dat= a) { + trace_canokey_handle_control_setup(request, value, index, length); CanoKeyState *key =3D CANOKEY(dev); =20 canokey_emu_setup(request, value, index, length); @@ -144,6 +151,7 @@ static void canokey_handle_control(USBDevice *dev, USBP= acket *p, uint32_t dir_in =3D request & DeviceRequest; if (!dir_in) { /* OUT */ + trace_canokey_handle_control_out(); if (key->ep_out[0] !=3D NULL) { memcpy(key->ep_out[0], data, length); } @@ -163,6 +171,7 @@ static void canokey_handle_control(USBDevice *dev, USBP= acket *p, case CANOKEY_EP_IN_READY: memcpy(data, key->ep_in[0], key->ep_in_size[0]); p->actual_length =3D key->ep_in_size[0]; + trace_canokey_handle_control_in(p->actual_length); /* reset state */ key->ep_in_state[0] =3D CANOKEY_EP_IN_WAIT; key->ep_in_size[0] =3D 0; @@ -182,6 +191,7 @@ static void canokey_handle_data(USBDevice *dev, USBPack= et *p) uint32_t out_len; switch (p->pid) { case USB_TOKEN_OUT: + trace_canokey_handle_data_out(ep_out, p->iov.size); usb_packet_copy(p, key->ep_out_buffer[ep_out], p->iov.size); out_pos =3D 0; while (out_pos !=3D p->iov.size) { @@ -226,6 +236,7 @@ static void canokey_handle_data(USBDevice *dev, USBPack= et *p) key->ep_in_size[ep_in] =3D 0; key->ep_in_pos[ep_in] =3D 0; } + trace_canokey_handle_data_in(ep_in, in_len); break; } break; @@ -237,6 +248,7 @@ static void canokey_handle_data(USBDevice *dev, USBPack= et *p) =20 static void canokey_realize(USBDevice *base, Error **errp) { + trace_canokey_realize(); CanoKeyState *key =3D CANOKEY(base); =20 if (key->file =3D=3D NULL) { @@ -260,6 +272,7 @@ static void canokey_realize(USBDevice *base, Error **er= rp) =20 static void canokey_unrealize(USBDevice *base) { + trace_canokey_unrealize(); } =20 static Property canokey_properties[] =3D { diff --git a/hw/usb/trace-events b/hw/usb/trace-events index 9773cb53300d..914ca7166829 100644 --- a/hw/usb/trace-events +++ b/hw/usb/trace-events @@ -345,3 +345,19 @@ usb_serial_set_baud(int bus, int addr, int baud) "dev = %d:%u baud rate %d" usb_serial_set_data(int bus, int addr, int parity, int data, int stop) "de= v %d:%u parity %c, data bits %d, stop bits %d" usb_serial_set_flow_control(int bus, int addr, int index) "dev %d:%u flow = control %d" usb_serial_set_xonxoff(int bus, int addr, uint8_t xon, uint8_t xoff) "dev = %d:%u xon 0x%x xoff 0x%x" + +# canokey.c +canokey_emu_stall_ep(uint8_t ep) "ep %d" +canokey_emu_set_address(uint8_t addr) "addr %d" +canokey_emu_prepare_receive(uint8_t ep, uint16_t size) "ep %d size %d" +canokey_emu_transmit(uint8_t ep, uint16_t size) "ep %d size %d" +canokey_thread_start(void) +canokey_thread_stop(void) +canokey_handle_reset(void) +canokey_handle_control_setup(int request, int value, int index, int length= ) "request 0x%04X value 0x%04X index 0x%04X length 0x%04X" +canokey_handle_control_out(void) +canokey_handle_control_in(int actual_len) "len %d" +canokey_handle_data_out(uint8_t ep_out, uint32_t out_len) "ep %d len %d" +canokey_handle_data_in(uint8_t ep_in, uint32_t in_len) "ep %d len %d" +canokey_realize(void) +canokey_unrealize(void) --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120268; cv=none; d=zohomail.com; s=zohoarc; b=MyuzwvZ8+Ed0ryTTQezwBJO7uMRLrLDALHJzNufIvgcYUD1/QMA86ENnNItIEWz+gSDLULqoTJD4414jxCYrqR2DUwoRzJ8oQJNYrSCfCI/gtDO26/5mX2HbkQeWjSy1NC5ztJqhcPY0VRQhGudHx+8lB9xraQJhQX4sd23aOs0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120268; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HZ4OtpGl92/4vTO64NR8x1+3AJHChGb6d9Bq7oyIeKQ=; b=GrBpVXGlcNJZDt+vM22C0tnsTOUfw/QdLGaLEout806l5p6HD2zcBDym68eQGAYLPettW2GW2ljTD8/JBjbVe6irX9uTDkvFs5jPi/CflLdpKt54K6Vjsl55KPZwRVdtqGnKSTzgoy60BzB9e+f2Yn+EXJD4/ajUncLDG667LoU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120268628707.6167266464345; Mon, 13 Jun 2022 04:37:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347971.574281 (Exim 4.92) (envelope-from ) id 1o0iNa-0003xy-5l; Mon, 13 Jun 2022 11:37:10 +0000 Received: by outflank-mailman (output) from mailman id 347971.574281; Mon, 13 Jun 2022 11:37:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNZ-0003x2-Vt; Mon, 13 Jun 2022 11:37:09 +0000 Received: by outflank-mailman (input) for mailman id 347971; Mon, 13 Jun 2022 11:37:07 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNX-0003eY-Qs for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:07 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 26358c7f-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:05 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-84-XcL-NPu1MMSUI68sguCZOw-1; Mon, 13 Jun 2022 07:37:04 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8D8598027EE; Mon, 13 Jun 2022 11:37:03 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4BF6E1121314; Mon, 13 Jun 2022 11:37:03 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3F255180092E; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 26358c7f-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HZ4OtpGl92/4vTO64NR8x1+3AJHChGb6d9Bq7oyIeKQ=; b=EK8l8Bjjx7WZAII0BCiPxAPZcq+tnQJ+XaUCEjEiMnhpqGSDMdQMnoUuEdo+xiOaXkFjXf scd/A0poM22sqtuOkTfIRoYHWi6wm0sP4wEGG++i40Qw/qMoBx8ZMahpOEYZr6Z0ZkSRon A8dy5z+IPO7ZA6a18vNMp2n/sfzby9U= X-MC-Unique: XcL-NPu1MMSUI68sguCZOw-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 06/16] meson: Add CanoKey Date: Mon, 13 Jun 2022 13:36:45 +0200 Message-Id: <20220613113655.3693872-7-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120269713100018 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- meson_options.txt | 2 ++ hw/usb/Kconfig | 5 +++++ hw/usb/meson.build | 5 +++++ meson.build | 6 ++++++ scripts/meson-buildoptions.sh | 3 +++ 5 files changed, 21 insertions(+) diff --git a/meson_options.txt b/meson_options.txt index 2de94af03712..0e8197386b99 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -189,6 +189,8 @@ option('spice_protocol', type : 'feature', value : 'aut= o', description: 'Spice protocol support') option('u2f', type : 'feature', value : 'auto', description: 'U2F emulation support') +option('canokey', type : 'feature', value : 'auto', + description: 'CanoKey support') option('usb_redir', type : 'feature', value : 'auto', description: 'libusbredir support') option('l2tpv3', type : 'feature', value : 'auto', diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index 53f8283ffdc1..ce4f4339763e 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -119,6 +119,11 @@ config USB_U2F default y depends on USB =20 +config USB_CANOKEY + bool + default y + depends on USB + config IMX_USBPHY bool default y diff --git a/hw/usb/meson.build b/hw/usb/meson.build index de853d780dd8..793df42e2127 100644 --- a/hw/usb/meson.build +++ b/hw/usb/meson.build @@ -63,6 +63,11 @@ if u2f.found() softmmu_ss.add(when: 'CONFIG_USB_U2F', if_true: [u2f, files('u2f-emulate= d.c')]) endif =20 +# CanoKey +if canokey.found() + softmmu_ss.add(when: 'CONFIG_USB_CANOKEY', if_true: [canokey, files('can= okey.c')]) +endif + # usb redirect if usbredir.found() usbredir_ss =3D ss.source_set() diff --git a/meson.build b/meson.build index 21cd949082dc..0c2e11ff0715 100644 --- a/meson.build +++ b/meson.build @@ -1408,6 +1408,12 @@ if have_system method: 'pkg-config', kwargs: static_kwargs) endif +canokey =3D not_found +if have_system + canokey =3D dependency('canokey-qemu', required: get_option('canokey'), + method: 'pkg-config', + kwargs: static_kwargs) +endif usbredir =3D not_found if not get_option('usb_redir').auto() or have_system usbredir =3D dependency('libusbredirparser-0.5', required: get_option('u= sb_redir'), diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 00ea4d8cd169..1fc1d2e2c362 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -73,6 +73,7 @@ meson_options_help() { printf "%s\n" ' bpf eBPF support' printf "%s\n" ' brlapi brlapi character device driver' printf "%s\n" ' bzip2 bzip2 support for DMG images' + printf "%s\n" ' canokey CanoKey support' printf "%s\n" ' cap-ng cap_ng support' printf "%s\n" ' capstone Whether and how to find the capstone li= brary' printf "%s\n" ' cloop cloop image format support' @@ -204,6 +205,8 @@ _meson_option_parse() { --disable-brlapi) printf "%s" -Dbrlapi=3Ddisabled ;; --enable-bzip2) printf "%s" -Dbzip2=3Denabled ;; --disable-bzip2) printf "%s" -Dbzip2=3Ddisabled ;; + --enable-canokey) printf "%s" -Dcanokey=3Denabled ;; + --disable-canokey) printf "%s" -Dcanokey=3Ddisabled ;; --enable-cap-ng) printf "%s" -Dcap_ng=3Denabled ;; --disable-cap-ng) printf "%s" -Dcap_ng=3Ddisabled ;; --enable-capstone) printf "%s" -Dcapstone=3Denabled ;; --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120267; cv=none; d=zohomail.com; s=zohoarc; b=Uk/1OGv4gQ0hIoVw/p6JrLR/u2pmL8k5+MIrR3BZ/IzvTeO1AVjSx/XZmj4Qw50b+Vmb6ibNn3ig7NY0YQ64hjhfakRWnxSim8QBLewOYX1ITdT4GSBi54nt72yciucqdp+iytJEbEYwSE+n9RRD+C2qb1BDWAJs/vLgv0pEGbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120267; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Iypp4lhP0vK8zaOIYv4YGS15C6hr5eRaL+NEXu7qlj4=; b=LF8f1dEPesysJ4gA54FcwNOtDePyKWq1yyCHiOLOwaXWj/mZaXR2Kgo1szYljh3CDzsvNFA92XOh3z9/HxL7owD8Jw/Df2ia+qtNv1TihYkdwfoSrUTNQuNMnM3ZMAsnDVNIoINBTuYopEt4DhHdHyHyNJjNxfkXBb8IKGOPrMo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120267167796.5751960670401; Mon, 13 Jun 2022 04:37:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347977.574335 (Exim 4.92) (envelope-from ) id 1o0iNe-0005BX-7M; Mon, 13 Jun 2022 11:37:14 +0000 Received: by outflank-mailman (output) from mailman id 347977.574335; Mon, 13 Jun 2022 11:37:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNd-00058P-Ou; Mon, 13 Jun 2022 11:37:13 +0000 Received: by outflank-mailman (input) for mailman id 347977; Mon, 13 Jun 2022 11:37:11 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNb-0003eY-6R for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:11 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 27c6e11e-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:08 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-98-ZPHpoTR3PRSnuCVXjGyOLQ-1; Mon, 13 Jun 2022 07:37:04 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A600E811E76; Mon, 13 Jun 2022 11:37:03 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4D42E1402406; Mon, 13 Jun 2022 11:37:03 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 4E9211800932; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 27c6e11e-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Iypp4lhP0vK8zaOIYv4YGS15C6hr5eRaL+NEXu7qlj4=; b=hNX5Bo7TS7CWIu7Y8+W0CDfPyTCXaJQt+NAk9Khus7Hp6l2Qn2Pa/NQl2KKJk3cf9o/jw7 uzRFzmpn5Fv61A7W2iFNmeGLFrPUJ0jOSUBE7xxFTxWguuSvOH6lf6xcvawFoGUowsP2b2 9y+bbok4EMBqf2X9y5NGr57Sl4e3TdM= X-MC-Unique: ZPHpoTR3PRSnuCVXjGyOLQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 07/16] docs: Add CanoKey documentation Date: Mon, 13 Jun 2022 13:36:46 +0200 Message-Id: <20220613113655.3693872-8-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267746100010 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- docs/system/device-emulation.rst | 1 + docs/system/devices/canokey.rst | 168 +++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 docs/system/devices/canokey.rst diff --git a/docs/system/device-emulation.rst b/docs/system/device-emulatio= n.rst index 3b729b920d7c..05060060563f 100644 --- a/docs/system/device-emulation.rst +++ b/docs/system/device-emulation.rst @@ -92,3 +92,4 @@ Emulated Devices devices/vhost-user.rst devices/virtio-pmem.rst devices/vhost-user-rng.rst + devices/canokey.rst diff --git a/docs/system/devices/canokey.rst b/docs/system/devices/canokey.= rst new file mode 100644 index 000000000000..169f99b8eb82 --- /dev/null +++ b/docs/system/devices/canokey.rst @@ -0,0 +1,168 @@ +.. _canokey: + +CanoKey QEMU +------------ + +CanoKey [1]_ is an open-source secure key with supports of + +* U2F / FIDO2 with Ed25519 and HMAC-secret +* OpenPGP Card V3.4 with RSA4096, Ed25519 and more [2]_ +* PIV (NIST SP 800-73-4) +* HOTP / TOTP +* NDEF + +All these platform-independent features are in canokey-core [3]_. + +For different platforms, CanoKey has different implementations, +including both hardware implementions and virtual cards: + +* CanoKey STM32 [4]_ +* CanoKey Pigeon [5]_ +* (virt-card) CanoKey USB/IP +* (virt-card) CanoKey FunctionFS + +In QEMU, yet another CanoKey virt-card is implemented. +CanoKey QEMU exposes itself as a USB device to the guest OS. + +With the same software configuration as a hardware key, +the guest OS can use all the functionalities of a secure key as if +there was actually an hardware key plugged in. + +CanoKey QEMU provides much convenience for debuging: + +* libcanokey-qemu supports debuging output thus developers can + inspect what happens inside a secure key +* CanoKey QEMU supports trace event thus event +* QEMU USB stack supports pcap thus USB packet between the guest + and key can be captured and analysed + +Then for developers: + +* For developers on software with secure key support (e.g. FIDO2, OpenPGP), + they can see what happens inside the secure key +* For secure key developers, USB packets between guest OS and CanoKey + can be easily captured and analysed + +Also since this is a virtual card, it can be easily used in CI for testing +on code coping with secure key. + +Building +=3D=3D=3D=3D=3D=3D=3D=3D + +libcanokey-qemu is required to use CanoKey QEMU. + +.. code-block:: shell + + git clone https://github.com/canokeys/canokey-qemu + mkdir canokey-qemu/build + pushd canokey-qemu/build + +If you want to install libcanokey-qemu in a different place, +add ``-DCMAKE_INSTALL_PREFIX=3D/path/to/your/place`` to cmake below. + +.. code-block:: shell + + cmake .. + make + make install # may need sudo + popd + +Then configuring and building: + +.. code-block:: shell + + # depending on your env, lib/pkgconfig can be lib64/pkgconfig + export PKG_CONFIG_PATH=3D/path/to/your/place/lib/pkgconfig:$PKG_CONFIG= _PATH + ./configure --enable-canokey && make + +Using CanoKey QEMU +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +CanoKey QEMU stores all its data on a file of the host specified by the ar= gument +when invoking qemu. + +.. parsed-literal:: + + |qemu_system| -usb -device canokey,file=3D$HOME/.canokey-file + +Note: you should keep this file carefully as it may contain your private k= ey! + +The first time when the file is used, it is created and initialized by Can= oKey, +afterwards CanoKey QEMU would just read this file. + +After the guest OS boots, you can check that there is a USB device. + +For example, If the guest OS is an Linux machine. You may invoke lsusb +and find CanoKey QEMU there: + +.. code-block:: shell + + $ lsusb + Bus 001 Device 002: ID 20a0:42d4 Clay Logic CanoKey QEMU + +You may setup the key as guided in [6]_. The console for the key is at [7]= _. + +Debuging +=3D=3D=3D=3D=3D=3D=3D=3D + +CanoKey QEMU consists of two parts, ``libcanokey-qemu.so`` and ``canokey.c= ``, +the latter of which resides in QEMU. The former provides core functionality +of a secure key while the latter provides platform-dependent functions: +USB packet handling. + +If you want to trace what happens inside the secure key, when compiling +libcanokey-qemu, you should add ``-DQEMU_DEBUG_OUTPUT=3DON`` in cmake comm= and +line: + +.. code-block:: shell + + cmake .. -DQEMU_DEBUG_OUTPUT=3DON + +If you want to trace events happened in canokey.c, use + +.. parsed-literal:: + + |qemu_system| --trace "canokey_*" \\ + -usb -device canokey,file=3D$HOME/.canokey-file + +If you want to capture USB packets between the guest and the host, you can: + +.. parsed-literal:: + + |qemu_system| -usb -device canokey,file=3D$HOME/.canokey-file,pcap=3Dk= ey.pcap + +Limitations +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Currently libcanokey-qemu.so has dozens of global variables as it was orig= inally +designed for embedded systems. Thus one qemu instance can not have +multiple CanoKey QEMU running, namely you can not + +.. parsed-literal:: + + |qemu_system| -usb -device canokey,file=3D$HOME/.canokey-file \\ + -device canokey,file=3D$HOME/.canokey-file2 + +Also, there is no lock on canokey-file, thus two CanoKey QEMU instance +can not read one canokey-file at the same time. + +Another limitation is that this device is not compatible with ``qemu-xhci`= `, +in that this device would hang when there are FIDO2 packets (traffic on +interrupt endpoints). If you do not use FIDO2 then it works as intended, +but for full functionality you should use old uhci/ehci bus and attach can= okey +to it, for example + +.. parsed-literal:: + + |qemu_system| -device piix3-usb-uhci,id=3Duhci -device canokey,bus=3Duh= ci.0 + +References +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +.. [1] ``_ +.. [2] `= `_ +.. [3] ``_ +.. [4] ``_ +.. [5] ``_ +.. [6] ``_ +.. [7] ``_ --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120260; cv=none; d=zohomail.com; s=zohoarc; b=iwaqgt8BVA1I9MCt7DTZRDi1TihG3Qtn+AyjPGCdCypwTzA2PyHvpnhltqQRGNQCceQdnGBUu/B0qjGwi7Hywr+Wkeb7Ib0z6kksg9XI//kJlU894zap80QZcSPLvnvvtnlAyjR/040Vy4NDf5DduxGsjwr0YFdCbiMvkUi7jW4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120260; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TqkIe5B5GmtLHYDEQNksBwY0pKybp1zEh7xnID9ieAU=; b=ma886V8K0z1WgLOGaprs4TP5KcY1egEQS7RsCVSQ/uEvXQ5TnQUEHAOT/dnLVABe3G+WM/UBioZYwfVStctjyV+MPpgUtbHlAjaUkxEWdUBkkLNThL37GP/lOrn6uDMuvsNpd2XfetZAOjvwBvRz3L5enfP4rLIZtDwwHwG+8OE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120260689699.1777897321103; Mon, 13 Jun 2022 04:37:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347978.574349 (Exim 4.92) (envelope-from ) id 1o0iNf-0005Qy-IU; Mon, 13 Jun 2022 11:37:15 +0000 Received: by outflank-mailman (output) from mailman id 347978.574349; Mon, 13 Jun 2022 11:37:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNf-0005Oo-0a; Mon, 13 Jun 2022 11:37:15 +0000 Received: by outflank-mailman (input) for mailman id 347978; Mon, 13 Jun 2022 11:37:12 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNc-0003eY-6M for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:12 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 28770cea-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:09 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-220-y95P-MdnMjCHDvW2Dm1Vhw-1; Mon, 13 Jun 2022 07:37:05 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0241429AA3B9; Mon, 13 Jun 2022 11:37:05 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C162540C1247; Mon, 13 Jun 2022 11:37:04 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 5A37E180093F; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 28770cea-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TqkIe5B5GmtLHYDEQNksBwY0pKybp1zEh7xnID9ieAU=; b=IT0vB0yzUqYvDyhlJfhFrOZz2LlmKix7r3rGVOhHQFf9hYCCHPEgxXbqn5EwO+tFxnlBnk VfaLBuQD+jorOCPfrlWvqfKEJGfSzOa2777M8340ezc86DqrShbbKGYWjJqNf0K5uld0xo abJPDHKYhmTmqQDiUApUnAsXYBGV5t4= X-MC-Unique: y95P-MdnMjCHDvW2Dm1Vhw-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 08/16] docs/system/devices/usb: Add CanoKey to USB devices examples Date: Mon, 13 Jun 2022 13:36:47 +0200 Message-Id: <20220613113655.3693872-9-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120261952100002 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- docs/system/devices/usb.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/system/devices/usb.rst b/docs/system/devices/usb.rst index afb7d6c2268d..872d9167589b 100644 --- a/docs/system/devices/usb.rst +++ b/docs/system/devices/usb.rst @@ -199,6 +199,10 @@ option or the ``device_add`` monitor command. Availabl= e devices are: ``u2f-{emulated,passthru}`` Universal Second Factor device =20 +``canokey`` + An Open-source Secure Key implementing FIDO2, OpenPGP, PIV and more. + For more information, see :ref:`canokey`. + Physical port addressing ^^^^^^^^^^^^^^^^^^^^^^^^ =20 --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120260; cv=none; d=zohomail.com; s=zohoarc; b=HYhP4mCbHnuWvr+K+L56GBJT04LRzJF5t4GxWH+k0iMQFdKbICDbk2bKXpdkijT1RMb2BbBj3ebPp6Vyt3ZtnfFPAMgKlsle7eBFQJE5m9THrZmuiBX1w8VTlDWY3KlvElMVAkGHBr/Wdvhj4bvnEIkyJmiXV4oaCh5Gwbr1kBM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120260; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PVva2fRC3vGqvRDPoZrUChjHwOIX197Reg0ezh6aFRw=; b=J9UMR/jrKO0OoR3fQbpwtKKFCmZ8DuHW9hK+9XhWb7EFwdUArr3y6v8IPdnnUP+VVcUBCAVeS2PZahwdbRkSv0LIcwvxBAVxoVoEScKPJNlIj9BnQ/7Iz/0XawR1H9ntJlkz+2I7KAq3ytF1+aqkjxQ2PmnwwL9u6BOf1/3LPm8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120260380480.25539389574453; Mon, 13 Jun 2022 04:37:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347976.574318 (Exim 4.92) (envelope-from ) id 1o0iNc-0004gJ-Ma; Mon, 13 Jun 2022 11:37:12 +0000 Received: by outflank-mailman (output) from mailman id 347976.574318; Mon, 13 Jun 2022 11:37:12 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNc-0004c8-7d; Mon, 13 Jun 2022 11:37:12 +0000 Received: by outflank-mailman (input) for mailman id 347976; Mon, 13 Jun 2022 11:37:10 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNa-0003eX-Jw for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:10 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 28a296ef-eb0d-11ec-8901-93a377f238d6; Mon, 13 Jun 2022 13:37:09 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-389-p75XZMsjNVew4lyNOVT2PA-1; Mon, 13 Jun 2022 07:37:05 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 10CE6801E80; Mon, 13 Jun 2022 11:37:05 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D41A21121319; Mon, 13 Jun 2022 11:37:04 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 658871800981; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 28a296ef-eb0d-11ec-8901-93a377f238d6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120228; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PVva2fRC3vGqvRDPoZrUChjHwOIX197Reg0ezh6aFRw=; b=Xe3iMIllfTIis8k3Evid8xsMXzTTEXvinvpJ0HJ9wJlVBnVLSzQiVkv2+OESUREcaSdkir oB6mQz3//D+NBz+eM00Dn8Zvu3X/1RiJVrHBZFh6U5P8PwUTAGf8IhLhoj+2DZox+6n5P0 k9JbUlK70pW/mqOvtlbFXhOPfOZEHJU= X-MC-Unique: p75XZMsjNVew4lyNOVT2PA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 09/16] MAINTAINERS: add myself as CanoKey maintainer Date: Mon, 13 Jun 2022 13:36:48 +0200 Message-Id: <20220613113655.3693872-10-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120261925100001 Content-Type: text/plain; charset="utf-8" From: "Hongren (Zenithal) Zheng" Signed-off-by: Hongren (Zenithal) Zheng Message-Id: Signed-off-by: Gerd Hoffmann --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 0df25ed4b0a3..4cf6174f9f37 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2427,6 +2427,14 @@ F: hw/intc/s390_flic*.c F: include/hw/s390x/s390_flic.h L: qemu-s390x@nongnu.org =20 +CanoKey +M: Hongren (Zenithal) Zheng +S: Maintained +R: Canokeys.org +F: hw/usb/canokey.c +F: hw/usb/canokey.h +F: docs/system/devices/canokey.rst + Subsystems ---------- Overall Audio backends --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120270; cv=none; d=zohomail.com; s=zohoarc; b=PHV+4WI1sAxxWAO7fMDTpmd0SU/ae68MfQpMMFEiM+9vCLUbN/KYnxpC1bQzQ6m5eIhl1QhJ8xRCa0xpYozg3EUSH8Gr750t5olsd5vvkBr7fybHuuXGgFcl3WM92DP2xdjxDhlFSjzTFrrMDs+boz3WAPxEzzb3EsDVu+f3yuk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120270; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=obSiKgR2g439N1NCymTkGuD5ZtC+AWQDUPf1CsA55V4=; b=gbYnZGADeAsHr/LNDBmBsXA4Y1dw+1/xioJj4GFsO/t3CCeCKHqjfsE+YP9zzqBQO0mxvNuMYMK0++fh7Ni7gLjzSXp5aR6UaOGgOtrdNkji/fasNwRauvzA2ale/X366r/WHlsQPl9tIp0ARsSvq7rKRFmhBIFGGDzbm4/IuGc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120270108601.6007360962553; Mon, 13 Jun 2022 04:37:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347979.574354 (Exim 4.92) (envelope-from ) id 1o0iNg-0005dh-CU; Mon, 13 Jun 2022 11:37:16 +0000 Received: by outflank-mailman (output) from mailman id 347979.574354; Mon, 13 Jun 2022 11:37:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNf-0005bA-QJ; Mon, 13 Jun 2022 11:37:15 +0000 Received: by outflank-mailman (input) for mailman id 347979; Mon, 13 Jun 2022 11:37:13 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNd-0003eY-6O for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:13 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2961440f-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:11 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-501-KvVginEiNHufd-nXx3l_YA-1; Mon, 13 Jun 2022 07:37:07 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B0C0380A0B0; Mon, 13 Jun 2022 11:37:06 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6788810725; Mon, 13 Jun 2022 11:37:06 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 715551800989; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2961440f-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120230; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=obSiKgR2g439N1NCymTkGuD5ZtC+AWQDUPf1CsA55V4=; b=HVbCChnxBj2IzVd6Ktjgn2FMM5amz7rlRjBP10bXGzPdsB6GvA/0oJ+3xn++XzockA+x1k EiT2NZ8yKv4sZ/dNDuV8mP9CEpswinrVVJv40Pf414HQI5qZ+OJ8E/7ZxAwMwTjeB3O92F a0TsSHj9uYvA/Q9/QZCNzBToMWCufyI= X-MC-Unique: KvVginEiNHufd-nXx3l_YA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , Arnout Engelen Subject: [PULL 10/16] hw/usb/hcd-ehci: fix writeback order Date: Mon, 13 Jun 2022 13:36:49 +0200 Message-Id: <20220613113655.3693872-11-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120271753100027 Content-Type: text/plain; charset="utf-8" From: Arnout Engelen The 'active' bit passes control over a qTD between the guest and the controller: set to 1 by guest to enable execution by the controller, and the controller sets it to '0' to hand back control to the guest. ehci_state_writeback write two dwords to main memory using DMA: the third dword of the qTD (containing dt, total bytes to transfer, cpage, cerr and status) and the fourth dword of the qTD (containing the offset). This commit makes sure the fourth dword is written before the third, avoiding a race condition where a new offset written into the qTD by the guest after it observed the status going to go to '0' gets overwritten by a 'late' DMA writeback of the previous offset. This race condition could lead to 'cpage out of range (5)' errors, and reproduced by: ./qemu-system-x86_64 -enable-kvm -bios $SEABIOS/bios.bin -m 4096 -device us= b-ehci -blockdev driver=3Dfile,read-only=3Don,filename=3D/home/aengelen/Dow= nloads/openSUSE-Tumbleweed-DVD-i586-Snapshot20220428-Media.iso,node-name=3D= iso -device usb-storage,drive=3Diso,bootindex=3D0 -chardev pipe,id=3Dshell,= path=3D/tmp/pipe -device virtio-serial -device virtconsole,chardev=3Dshell = -device virtio-rng-pci -serial mon:stdio -nographic (press a key, select 'Installation' (2), and accept the default values. On my machine the 'cpage out of range' is reproduced while loading the Linux Kernel about once per 7 attempts. With the fix in this commit it no longer fails) This problem was previously reported as a seabios problem in https://mail.coreboot.org/hyperkitty/list/seabios@seabios.org/thread/OUTHT5= ISSQJGXPNTUPY3O5E5EPZJCHM3/ and as a nixos CI build failure in https://github.com/NixOS/nixpkgs/issues/170803 Signed-off-by: Arnout Engelen Signed-off-by: Gerd Hoffmann --- hw/usb/hcd-ehci.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index 33a8a377bd95..d4da8dcb8d15 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -2011,7 +2011,10 @@ static int ehci_state_writeback(EHCIQueue *q) ehci_trace_qtd(q, NLPTR_GET(p->qtdaddr), (EHCIqtd *) &q->qh.next_qtd); qtd =3D (uint32_t *) &q->qh.next_qtd; addr =3D NLPTR_GET(p->qtdaddr); - put_dwords(q->ehci, addr + 2 * sizeof(uint32_t), qtd + 2, 2); + /* First write back the offset */ + put_dwords(q->ehci, addr + 3 * sizeof(uint32_t), qtd + 3, 1); + /* Then write back the token, clearing the 'active' bit */ + put_dwords(q->ehci, addr + 2 * sizeof(uint32_t), qtd + 2, 1); ehci_free_packet(p); =20 /* --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120266; cv=none; d=zohomail.com; s=zohoarc; b=UXQz7id5HQPC7fkvIOsaq2ACfnyDKVzHMdKykcKFU5k7EgGckfYuO++Gzz9wVgxQyits+/loy4dvXvKBjFk9dJGas65pE3puANCz1GmArUztFBJ/R8LQTHx4RGVjjYHEYnRZsujtG7r3lU9GDC53PTm14eDub+vpRUwrCQteyJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120266; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZStqjDDMtLMpDsz58F8O29JWAJ6F3RkNGXfWxICk7zU=; b=custtlFISjMRitWHbdz2T/WnM9bdzennuhPPux2Pp4uMiW1nRRbqTS8pm6BDoddVQaXlvOpNyWMqy/bW70rE/Ri2MmFXyygtg+cNgI5yWWtJGMTgkVlTR+JIfrQtGUD7AEChHrmXL8gZ4dtVtcdH7ZHpPzeZ9FbMj5/xqi5Q53k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 165512026672523.79920899648971; Mon, 13 Jun 2022 04:37:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347983.574393 (Exim 4.92) (envelope-from ) id 1o0iNl-0006iQ-EW; Mon, 13 Jun 2022 11:37:21 +0000 Received: by outflank-mailman (output) from mailman id 347983.574393; Mon, 13 Jun 2022 11:37:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNk-0006cd-B5; Mon, 13 Jun 2022 11:37:20 +0000 Received: by outflank-mailman (input) for mailman id 347983; Mon, 13 Jun 2022 11:37:15 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNf-0003eX-7l for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:15 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 2b61a9a0-eb0d-11ec-8901-93a377f238d6; Mon, 13 Jun 2022 13:37:14 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-393-QhGqS3mJPgWJlaJrwV9AAQ-1; Mon, 13 Jun 2022 07:37:08 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6085A29ABA0C; Mon, 13 Jun 2022 11:37:07 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 69AC61415103; Mon, 13 Jun 2022 11:37:06 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 7D149180098C; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2b61a9a0-eb0d-11ec-8901-93a377f238d6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZStqjDDMtLMpDsz58F8O29JWAJ6F3RkNGXfWxICk7zU=; b=fCm3a/3IykoUiHzE8p7cym22MSTvpjCjvtz9Jm8n7LzbXOuxETVo4e1dvHul2bGb6VkeKS vM5wQ6r7aoIMCCPxArUzwz3bgagEE+F9OQIwW7LTh6Bz2GVTBGQO48Krlg3rDJZ1WpVlnj Xg61MGlpmZJKDvOfzO4O8yGv7AcF0l0= X-MC-Unique: QhGqS3mJPgWJlaJrwV9AAQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , Joelle van Dyne Subject: [PULL 11/16] usbredir: avoid queuing hello packet on snapshot restore Date: Mon, 13 Jun 2022 13:36:50 +0200 Message-Id: <20220613113655.3693872-12-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267740100007 Content-Type: text/plain; charset="utf-8" From: Joelle van Dyne When launching QEMU with "-loadvm", usbredir_create_parser() should avoid setting up the hello packet (just as with "-incoming". On the latest version of libusbredir, usbredirparser_unserialize() will return error if the parser is not "pristine." Signed-off-by: Joelle van Dyne Message-Id: <20220507041850.98716-1-j@getutm.app> Signed-off-by: Gerd Hoffmann --- hw/usb/redirect.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index fd7df599bc0b..1bd30efc3ef0 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1280,7 +1280,8 @@ static void usbredir_create_parser(USBRedirDevice *de= v) } #endif =20 - if (runstate_check(RUN_STATE_INMIGRATE)) { + if (runstate_check(RUN_STATE_INMIGRATE) || + runstate_check(RUN_STATE_PRELAUNCH)) { flags |=3D usbredirparser_fl_no_hello; } usbredirparser_init(dev->parser, VERSION, caps, USB_REDIR_CAPS_SIZE, --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120267; cv=none; d=zohomail.com; s=zohoarc; b=TN7gtCszPJI0HBTFzEi9TgeQ5q13A8ykOA1amvnPfrLEfCf/jhMMhPlD6ICFduAii6Q2nkOIp3LRxKhEutB0z/33nQ1YwgVnk17Bn+m8ovC0BcUlt/ED73s9TDt63dNwgRVLtiyhhwKtfQ8wkF/j2aOTL4Rn+RcVVXxJfaDSKRA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120267; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nK8ui8MGXo28dreQTzjS6bbhtNnN1TEyDDyCd/Q1Dgo=; b=QMRPOYz2lpuRvh3yV25bXyg3zMaNiadWuINhVnVsMHbRErpXl0He1mZyMzQKN6uDw3FGSiIFleF8SRUlgNbkMS+kxLOw3T403mA5ldzQYjjjfAMAq75YeM3/IoYn9p+3fYi6u24eAfGXNevF5226S+eNxrsP0B6fqLut8Nlv1s0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120267340375.9806832223301; Mon, 13 Jun 2022 04:37:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347982.574384 (Exim 4.92) (envelope-from ) id 1o0iNk-0006R9-98; Mon, 13 Jun 2022 11:37:20 +0000 Received: by outflank-mailman (output) from mailman id 347982.574384; Mon, 13 Jun 2022 11:37:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNj-0006IS-2w; Mon, 13 Jun 2022 11:37:19 +0000 Received: by outflank-mailman (input) for mailman id 347982; Mon, 13 Jun 2022 11:37:15 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNf-0003eY-76 for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:15 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2afc526e-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:13 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-453-ZA2PRSFFPTCRRQFx6USuKA-1; Mon, 13 Jun 2022 07:37:09 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4C1BB1C0F682; Mon, 13 Jun 2022 11:37:08 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 183B32166B29; Mon, 13 Jun 2022 11:37:08 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 898F11800993; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2afc526e-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nK8ui8MGXo28dreQTzjS6bbhtNnN1TEyDDyCd/Q1Dgo=; b=ShSwsLEc6+lolBaSVZna0NxTqKJHDFKc/jukYgpMVVQZWdGD6iqvIfqIvABDWOz5XyD3Qu v5zRmkuknRcRsIkOX+UjXdCs0cXfOiCjz+EUwtyrquPY1UzHAW4nuRGgD47o9x0GRHMW5P 2IF7yoSQzXoKQN0u3Kw5RKdTn2cnYtA= X-MC-Unique: ZA2PRSFFPTCRRQFx6USuKA-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , Dongwon Kim , Vivek Kasireddy Subject: [PULL 12/16] virtio-gpu: update done only on the scanout associated with rect Date: Mon, 13 Jun 2022 13:36:51 +0200 Message-Id: <20220613113655.3693872-13-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267739100006 Content-Type: text/plain; charset="utf-8" From: Dongwon Kim It only needs to update the scanouts containing the rect area coming with the resource-flush request from the guest. Cc: Gerd Hoffmann Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim Message-Id: <20220505214030.4261-1-dongwon.kim@intel.com> Signed-off-by: Gerd Hoffmann --- hw/display/virtio-gpu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index cd4a56056fd9..55c6dd576318 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -514,6 +514,9 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g, for (i =3D 0; i < g->parent_obj.conf.max_outputs; i++) { scanout =3D &g->parent_obj.scanout[i]; if (scanout->resource_id =3D=3D res->resource_id && + rf.r.x >=3D scanout->x && rf.r.y >=3D scanout->y && + rf.r.x + rf.r.width <=3D scanout->x + scanout->width && + rf.r.y + rf.r.height <=3D scanout->y + scanout->height && console_has_gl(scanout->con)) { dpy_gl_update(scanout->con, 0, 0, scanout->width, scanout->height); --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120268; cv=none; d=zohomail.com; s=zohoarc; b=MyNjyBHEoOfSEBm/EqhGffeC0Dw7gYVwzlvB/CPMLBPD9BYVZvkLsYL8N2D0k5SagxUaFwnxloS1c9oSPPpj1u3pHxhvE1p6eH3+5MPnLcDLwD1bKTFin+GYFO92fAtu5ouMtTui4AnQF/nhy5yQZnieVAFevdEbbHt92LyTsIY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120268; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hTTJvnegxxvfJsWseZ7+SmUjba5GRnY9ME/e3uOvaP0=; b=FmoKKFIudP/Q4wuq7iIE6HB3r3R6YphH0WABMcdy4Npl6XzOVXo55me7KaQQIfFY+x/8GEPJ4XVHjJ4ZbnoXLZijo/599u49atI1eefQnzl2mNzmBuQ7fWLkaR/fyEilX1zqtt8XchYzEsLVC7Sn+O8pMUr6Jz9kw/dnIqcnQsg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120268563126.16781452691487; Mon, 13 Jun 2022 04:37:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347981.574375 (Exim 4.92) (envelope-from ) id 1o0iNi-00068b-S3; Mon, 13 Jun 2022 11:37:18 +0000 Received: by outflank-mailman (output) from mailman id 347981.574375; Mon, 13 Jun 2022 11:37:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNh-00063G-SZ; Mon, 13 Jun 2022 11:37:17 +0000 Received: by outflank-mailman (input) for mailman id 347981; Mon, 13 Jun 2022 11:37:14 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNe-0003eY-8x for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:14 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2a964cce-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:13 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-382-FkGXzRJ0PEWejaqlg6YRjg-1; Mon, 13 Jun 2022 07:37:09 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D7C5685A580; Mon, 13 Jun 2022 11:37:08 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9D66940CF8EB; Mon, 13 Jun 2022 11:37:08 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 9C5BB1800995; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2a964cce-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hTTJvnegxxvfJsWseZ7+SmUjba5GRnY9ME/e3uOvaP0=; b=BrBYKwRauwgZI0QtOUWV3bf9up6SdDUFYcu6ACMNpqH0sxvYuYXeDfcat53CMkSb6evpcE Ii1xzDZVNPAlJckIr0cdg1pcD2fzbyEWasenRbKOrDGYJVkE+G2z0i/F8uBJvO7Ky9RvKG gYTy+PA9UOGi+yZuLybZKuW7W0D6GH4= X-MC-Unique: FkGXzRJ0PEWejaqlg6YRjg-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 13/16] ui/console: Do not return a value with ui_info Date: Mon, 13 Jun 2022 13:36:52 +0200 Message-Id: <20220613113655.3693872-14-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120269682100017 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki The returned value is not used and misleading. Signed-off-by: Akihiko Odaki Message-Id: <20220226115516.59830-2-akihiko.odaki@gmail.com> Signed-off-by: Gerd Hoffmann --- include/ui/console.h | 2 +- hw/display/virtio-gpu-base.c | 6 +++--- hw/display/virtio-vga.c | 5 ++--- hw/vfio/display.c | 8 +++----- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index c44b28a972ca..642d6f5248cf 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -432,7 +432,7 @@ typedef struct GraphicHwOps { bool gfx_update_async; /* if true, calls graphic_hw_update_done() */ void (*text_update)(void *opaque, console_ch_t *text); void (*update_interval)(void *opaque, uint64_t interval); - int (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info); + void (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info); void (*gl_block)(void *opaque, bool block); } GraphicHwOps; =20 diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index 790cec333c8c..b21d6e5b0be8 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -69,12 +69,12 @@ static void virtio_gpu_notify_event(VirtIOGPUBase *g, u= int32_t event_type) virtio_notify_config(&g->parent_obj); } =20 -static int virtio_gpu_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info) +static void virtio_gpu_ui_info(void *opaque, uint32_t idx, QemuUIInfo *inf= o) { VirtIOGPUBase *g =3D opaque; =20 if (idx >=3D g->conf.max_outputs) { - return -1; + return; } =20 g->req_state[idx].x =3D info->xoff; @@ -92,7 +92,7 @@ static int virtio_gpu_ui_info(void *opaque, uint32_t idx,= QemuUIInfo *info) =20 /* send event to guest */ virtio_gpu_notify_event(g, VIRTIO_GPU_EVENT_DISPLAY); - return 0; + return; } =20 static void diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index c206b5da384b..4dcb34c4a740 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -47,15 +47,14 @@ static void virtio_vga_base_text_update(void *opaque, c= onsole_ch_t *chardata) } } =20 -static int virtio_vga_base_ui_info(void *opaque, uint32_t idx, QemuUIInfo = *info) +static void virtio_vga_base_ui_info(void *opaque, uint32_t idx, QemuUIInfo= *info) { VirtIOVGABase *vvga =3D opaque; VirtIOGPUBase *g =3D vvga->vgpu; =20 if (g->hw_ops->ui_info) { - return g->hw_ops->ui_info(g, idx, info); + g->hw_ops->ui_info(g, idx, info); } - return -1; } =20 static void virtio_vga_base_gl_block(void *opaque, bool block) diff --git a/hw/vfio/display.c b/hw/vfio/display.c index 89bc90508fb8..78f4d82c1c35 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -106,14 +106,14 @@ err: return; } =20 -static int vfio_display_edid_ui_info(void *opaque, uint32_t idx, - QemuUIInfo *info) +static void vfio_display_edid_ui_info(void *opaque, uint32_t idx, + QemuUIInfo *info) { VFIOPCIDevice *vdev =3D opaque; VFIODisplay *dpy =3D vdev->dpy; =20 if (!dpy->edid_regs) { - return 0; + return; } =20 if (info->width && info->height) { @@ -121,8 +121,6 @@ static int vfio_display_edid_ui_info(void *opaque, uint= 32_t idx, } else { vfio_display_edid_update(vdev, false, 0, 0); } - - return 0; } =20 static void vfio_display_edid_init(VFIOPCIDevice *vdev) --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120268; cv=none; d=zohomail.com; s=zohoarc; b=RYtLLU1l45RVqlb+q3SgZV9+H47Dn81ZCUKHTBko8vWxtTWg+nK82klQA+L/TvuygsnI2r0UGqbFreqYvNl0SryBp0cwU5p3WQsC9TILHhH6nptkkxqM/nHeopoEd0/IYWxxoOiD5Xabqtzzm1X4REhIX/y3rmpcIeu2nIkRdPA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120268; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ebiRccH2awWxGwAppvEzoFJ/M1x++CURc9+zFzjg06Y=; b=PDBE2jgUKGOpJkEkgrPqwBh9gP5kybMgLzYo39mBs/XrszcD3urIAkh/9kgOvTe8Qde6XNT86OaUv95S1OmgzuPvR+axWWfD0eo6lQjggiIM4XJMX2JZhnJO9SQPWSutL+X5ARY/ghTlIbJkqwyPKYnS6OJQOMlmSVwB5EG8zYI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120268643902.6402323327487; Mon, 13 Jun 2022 04:37:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347984.574406 (Exim 4.92) (envelope-from ) id 1o0iNn-0007HI-ME; Mon, 13 Jun 2022 11:37:23 +0000 Received: by outflank-mailman (output) from mailman id 347984.574406; Mon, 13 Jun 2022 11:37:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNm-0007AS-Q8; Mon, 13 Jun 2022 11:37:22 +0000 Received: by outflank-mailman (input) for mailman id 347984; Mon, 13 Jun 2022 11:37:16 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNg-0003eY-72 for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:16 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2b4ec38a-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:14 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-538-4jw5iIGhO3-Xtypzh9OvfQ-1; Mon, 13 Jun 2022 07:37:10 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DC26B3C10221; Mon, 13 Jun 2022 11:37:09 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 82CD718EA1; Mon, 13 Jun 2022 11:37:09 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id B578C1800996; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2b4ec38a-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120233; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ebiRccH2awWxGwAppvEzoFJ/M1x++CURc9+zFzjg06Y=; b=ULmjhGTFSRW37t2Ny9X73SCFOf/8UX60iYuYYH3LmLQSgiYfEv/gO01wYueT4GZXh16mLU Ko+C2VvzAjSHEe0L8YNnPUtirAZCSh+WvSPs0j4HK5LkO65OvvU5Wv6EOBfo+BRsGHR4fN Yy5HWliroLuWhHShg09cHghbCD6wHfQ= X-MC-Unique: 4jw5iIGhO3-Xtypzh9OvfQ-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 14/16] ui: Deliver refresh rate via QemuUIInfo Date: Mon, 13 Jun 2022 13:36:53 +0200 Message-Id: <20220613113655.3693872-15-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120269718100020 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki This change adds a new member, refresh_rate to QemuUIInfo in include/ui/console.h. It represents the refresh rate of the physical display backend, and it is more appropriate than GUI update interval as the refresh rate which the emulated device reports: - sdl may set GUI update interval shorter than the refresh rate of the physical display to respond to user-generated events. - sdl and vnc aggressively changes GUI update interval, but a guests is typically not designed to respond to frequent refresh rate changes, or frequent "display mode" changes in general. The frequency of refresh rate changes of the physical display backend matches better to the guest's expectation. QemuUIInfo also has other members representing "display mode", which makes it suitable for refresh rate representation. It has a throttling of update notifications, and prevents frequent changes of the display mode. Signed-off-by: Akihiko Odaki Message-Id: <20220226115516.59830-3-akihiko.odaki@gmail.com> Signed-off-by: Gerd Hoffmann --- include/ui/console.h | 2 +- include/ui/gtk.h | 2 +- hw/display/xenfb.c | 14 +++++++++++--- ui/console.c | 6 ------ ui/gtk-egl.c | 4 ++-- ui/gtk-gl-area.c | 3 +-- ui/gtk.c | 45 +++++++++++++++++++++++++------------------- 7 files changed, 42 insertions(+), 34 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 642d6f5248cf..b64d82436097 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -139,6 +139,7 @@ typedef struct QemuUIInfo { int yoff; uint32_t width; uint32_t height; + uint32_t refresh_rate; } QemuUIInfo; =20 /* cursor data format is 32bit RGBA */ @@ -431,7 +432,6 @@ typedef struct GraphicHwOps { void (*gfx_update)(void *opaque); bool gfx_update_async; /* if true, calls graphic_hw_update_done() */ void (*text_update)(void *opaque, console_ch_t *text); - void (*update_interval)(void *opaque, uint64_t interval); void (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info); void (*gl_block)(void *opaque, bool block); } GraphicHwOps; diff --git a/include/ui/gtk.h b/include/ui/gtk.h index 101b147d1b98..ae0f53740d19 100644 --- a/include/ui/gtk.h +++ b/include/ui/gtk.h @@ -155,7 +155,7 @@ extern bool gtk_use_gl_area; =20 /* ui/gtk.c */ void gd_update_windowsize(VirtualConsole *vc); -int gd_monitor_update_interval(GtkWidget *widget); +void gd_update_monitor_refresh_rate(VirtualConsole *vc, GtkWidget *widget); void gd_hw_gl_flushed(void *vc); =20 /* ui/gtk-egl.c */ diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index cea10fe3c780..50857cd97a0b 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -777,16 +777,24 @@ static void xenfb_update(void *opaque) xenfb->up_fullscreen =3D 0; } =20 -static void xenfb_update_interval(void *opaque, uint64_t interval) +static void xenfb_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info) { struct XenFB *xenfb =3D opaque; + uint32_t refresh_rate; =20 if (xenfb->feature_update) { #ifdef XENFB_TYPE_REFRESH_PERIOD if (xenfb_queue_full(xenfb)) { return; } - xenfb_send_refresh_period(xenfb, interval); + + refresh_rate =3D info->refresh_rate; + if (!refresh_rate) { + refresh_rate =3D 75; + } + + /* T =3D 1 / f =3D 1 [s*Hz] / f =3D 1000*1000 [ms*mHz] / f */ + xenfb_send_refresh_period(xenfb, 1000 * 1000 / refresh_rate); #endif } } @@ -983,5 +991,5 @@ struct XenDevOps xen_framebuffer_ops =3D { static const GraphicHwOps xenfb_ops =3D { .invalidate =3D xenfb_invalidate, .gfx_update =3D xenfb_update, - .update_interval =3D xenfb_update_interval, + .ui_info =3D xenfb_ui_info, }; diff --git a/ui/console.c b/ui/console.c index 36c80cd1de85..9331b85203a0 100644 --- a/ui/console.c +++ b/ui/console.c @@ -160,7 +160,6 @@ static void gui_update(void *opaque) uint64_t dcl_interval; DisplayState *ds =3D opaque; DisplayChangeListener *dcl; - QemuConsole *con; =20 ds->refreshing =3D true; dpy_refresh(ds); @@ -175,11 +174,6 @@ static void gui_update(void *opaque) } if (ds->update_interval !=3D interval) { ds->update_interval =3D interval; - QTAILQ_FOREACH(con, &consoles, next) { - if (con->hw_ops->update_interval) { - con->hw_ops->update_interval(con->hw, interval); - } - } trace_console_refresh(interval); } ds->last_update =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index e3bd4bc27431..b5bffbab2522 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -140,8 +140,8 @@ void gd_egl_refresh(DisplayChangeListener *dcl) { VirtualConsole *vc =3D container_of(dcl, VirtualConsole, gfx.dcl); =20 - vc->gfx.dcl.update_interval =3D gd_monitor_update_interval( - vc->window ? vc->window : vc->gfx.drawing_area); + gd_update_monitor_refresh_rate( + vc, vc->window ? vc->window : vc->gfx.drawing_area); =20 if (!vc->gfx.esurface) { gd_egl_init(vc); diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index 2e0129c28cd4..682638a197d2 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -121,8 +121,7 @@ void gd_gl_area_refresh(DisplayChangeListener *dcl) { VirtualConsole *vc =3D container_of(dcl, VirtualConsole, gfx.dcl); =20 - vc->gfx.dcl.update_interval =3D gd_monitor_update_interval( - vc->window ? vc->window : vc->gfx.drawing_area); + gd_update_monitor_refresh_rate(vc, vc->window ? vc->window : vc->gfx.d= rawing_area); =20 if (!vc->gfx.gls) { if (!gtk_widget_get_realized(vc->gfx.drawing_area)) { diff --git a/ui/gtk.c b/ui/gtk.c index c57c36749e0e..2a791dd2aa04 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -710,11 +710,20 @@ static gboolean gd_window_close(GtkWidget *widget, Gd= kEvent *event, return TRUE; } =20 -static void gd_set_ui_info(VirtualConsole *vc, gint width, gint height) +static void gd_set_ui_refresh_rate(VirtualConsole *vc, int refresh_rate) { QemuUIInfo info; =20 - memset(&info, 0, sizeof(info)); + info =3D *dpy_get_ui_info(vc->gfx.dcl.con); + info.refresh_rate =3D refresh_rate; + dpy_set_ui_info(vc->gfx.dcl.con, &info, true); +} + +static void gd_set_ui_size(VirtualConsole *vc, gint width, gint height) +{ + QemuUIInfo info; + + info =3D *dpy_get_ui_info(vc->gfx.dcl.con); info.width =3D width; info.height =3D height; dpy_set_ui_info(vc->gfx.dcl.con, &info, true); @@ -738,33 +747,32 @@ static void gd_resize_event(GtkGLArea *area, { VirtualConsole *vc =3D (void *)opaque; =20 - gd_set_ui_info(vc, width, height); + gd_set_ui_size(vc, width, height); } =20 #endif =20 -/* - * If available, return the update interval of the monitor in ms, - * else return 0 (the default update interval). - */ -int gd_monitor_update_interval(GtkWidget *widget) +void gd_update_monitor_refresh_rate(VirtualConsole *vc, GtkWidget *widget) { #ifdef GDK_VERSION_3_22 GdkWindow *win =3D gtk_widget_get_window(widget); + int refresh_rate; =20 if (win) { GdkDisplay *dpy =3D gtk_widget_get_display(widget); GdkMonitor *monitor =3D gdk_display_get_monitor_at_window(dpy, win= ); - int refresh_rate =3D gdk_monitor_get_refresh_rate(monitor); /* [mH= z] */ - - if (refresh_rate) { - /* T =3D 1 / f =3D 1 [s*Hz] / f =3D 1000*1000 [ms*mHz] / f */ - return MIN(1000 * 1000 / refresh_rate, - GUI_REFRESH_INTERVAL_DEFAULT); - } + refresh_rate =3D gdk_monitor_get_refresh_rate(monitor); /* [mHz] */ + } else { + refresh_rate =3D 0; } + + gd_set_ui_refresh_rate(vc, refresh_rate); + + /* T =3D 1 / f =3D 1 [s*Hz] / f =3D 1000*1000 [ms*mHz] / f */ + vc->gfx.dcl.update_interval =3D refresh_rate ? + MIN(1000 * 1000 / refresh_rate, GUI_REFRESH_INTERVAL_DEFAULT) : + GUI_REFRESH_INTERVAL_DEFAULT; #endif - return 0; } =20 static gboolean gd_draw_event(GtkWidget *widget, cairo_t *cr, void *opaque) @@ -801,8 +809,7 @@ static gboolean gd_draw_event(GtkWidget *widget, cairo_= t *cr, void *opaque) return FALSE; } =20 - vc->gfx.dcl.update_interval =3D - gd_monitor_update_interval(vc->window ? vc->window : s->window); + gd_update_monitor_refresh_rate(vc, vc->window ? vc->window : s->window= ); =20 fbw =3D surface_width(vc->gfx.ds); fbh =3D surface_height(vc->gfx.ds); @@ -1691,7 +1698,7 @@ static gboolean gd_configure(GtkWidget *widget, { VirtualConsole *vc =3D opaque; =20 - gd_set_ui_info(vc, cfg->width, cfg->height); + gd_set_ui_size(vc, cfg->width, cfg->height); return FALSE; } =20 --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120266; cv=none; d=zohomail.com; s=zohoarc; b=lACZh8TtsHw+Sx8Ro7lBKqm4lMQFuciqcdAa7r5CByZEkDbW2f/kFaIXgPzPhV1YHRip0REyyEs6T58KETlugayMYzn7bYz5+qQY7orvuhq1Iz8oXuQXYFplnKt1anDnnbCWhyFCpTznzHhlpws/PqvmKprTEU/5wuKtjHNpRY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120266; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fjkT/ghvgIP+ASWCtRqN8cFZ3mDw+gAHZxFgoi4zHGM=; b=EeyFEQjdrSgoZAZmDL+WtCBZ7kKLilsfo4MORavBHUXwMuUJMYk11B0OxBz7Q/IaYDISHd/ZFno6WZKxOuHvHBr+kI9VX5/FRO7u58oG9iDSXDBgLb/NHt68SVHMLBQqUnWfAQdvholq13MLdFJ1w2EQHWQPtdQ4mmAu49nRyvw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120266937407.3354293504224; Mon, 13 Jun 2022 04:37:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.347980.574365 (Exim 4.92) (envelope-from ) id 1o0iNh-0005rh-I0; Mon, 13 Jun 2022 11:37:17 +0000 Received: by outflank-mailman (output) from mailman id 347980.574365; Mon, 13 Jun 2022 11:37:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNg-0005mi-P8; Mon, 13 Jun 2022 11:37:16 +0000 Received: by outflank-mailman (input) for mailman id 347980; Mon, 13 Jun 2022 11:37:14 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNd-0003eX-T4 for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:14 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 2a94b216-eb0d-11ec-8901-93a377f238d6; Mon, 13 Jun 2022 13:37:13 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-546-czJqyPJ_Ov-1NAke0vpC9w-1; Mon, 13 Jun 2022 07:37:11 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4C54C833975; Mon, 13 Jun 2022 11:37:10 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 190C740C1247; Mon, 13 Jun 2022 11:37:10 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id C60EF1800999; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2a94b216-eb0d-11ec-8901-93a377f238d6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120232; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fjkT/ghvgIP+ASWCtRqN8cFZ3mDw+gAHZxFgoi4zHGM=; b=Ww6QgDXtpfiElI2nnlXuCkIzBD8thxW+HH/0px5Ug+/ps4Fx4sPn78QMlXWH5DxlihiojO aA5/1SAwE5beBZYRINs6KlyrnSBxXzjOfRwiY9hvYfBAbZDQLM+OoUWzzNQoA/WTEFiZ41 3oIvmRMBf+9zXkFKVU1oFXxI9OLxPJM= X-MC-Unique: czJqyPJ_Ov-1NAke0vpC9w-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann Subject: [PULL 15/16] virtio-gpu: Respect UI refresh rate for EDID Date: Mon, 13 Jun 2022 13:36:54 +0200 Message-Id: <20220613113655.3693872-16-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120267745100009 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki Signed-off-by: Akihiko Odaki Message-Id: <20220226115516.59830-4-akihiko.odaki@gmail.com> Signed-off-by: Gerd Hoffmann --- include/hw/virtio/virtio-gpu.h | 1 + hw/display/virtio-gpu-base.c | 1 + hw/display/virtio-gpu.c | 1 + 3 files changed, 3 insertions(+) diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index afff9e158e31..2e28507efe21 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -80,6 +80,7 @@ struct virtio_gpu_scanout { struct virtio_gpu_requested_state { uint16_t width_mm, height_mm; uint32_t width, height; + uint32_t refresh_rate; int x, y; }; =20 diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index b21d6e5b0be8..a29f191aa82e 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -79,6 +79,7 @@ static void virtio_gpu_ui_info(void *opaque, uint32_t idx= , QemuUIInfo *info) =20 g->req_state[idx].x =3D info->xoff; g->req_state[idx].y =3D info->yoff; + g->req_state[idx].refresh_rate =3D info->refresh_rate; g->req_state[idx].width =3D info->width; g->req_state[idx].height =3D info->height; g->req_state[idx].width_mm =3D info->width_mm; diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 55c6dd576318..20cc703dcc6e 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -217,6 +217,7 @@ virtio_gpu_generate_edid(VirtIOGPU *g, int scanout, .height_mm =3D b->req_state[scanout].height_mm, .prefx =3D b->req_state[scanout].width, .prefy =3D b->req_state[scanout].height, + .refresh_rate =3D b->req_state[scanout].refresh_rate, }; =20 edid->size =3D cpu_to_le32(sizeof(edid->edid)); --=20 2.36.1 From nobody Sun May 19 04:05:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655120328; cv=none; d=zohomail.com; s=zohoarc; b=NBc7RR+cST8hqwpwakXASygfOvsdXq56XJ+i7MKKSYv+4NLcj5ZJi4GpjyYwGk2MQ2uC8Xw1pd83d2i1weCztJz1lMauDVo17Wo74cX7O47niF9+PuWbqDrOEJI4ntn3a25bwmbx9PzXA0dhj0OnoYf6k5tlYujGAkkBiaeDKcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655120328; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TCo33ax1Q4GDO812+rq/YD1R1Ny1sNrWx6I6aptpWo8=; b=H2rSS9OJOJ59NVc/yfT7WmDyOydm/yIASlQEF8eMl6zpXROVL9ZRJjl1iXBe+F0dUPapJlqSWO/+GX900V904rg9UEMAq0/Y7+3JXgcb5lUTKF9JsXTYObs4NHJobY3g1kmJ97YIXesVgCiBKmfrqXXBJldswJwgNSQYc3ByNw8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1655120328542119.41654954721082; Mon, 13 Jun 2022 04:38:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.348022.574441 (Exim 4.92) (envelope-from ) id 1o0iOr-00049c-6N; Mon, 13 Jun 2022 11:38:29 +0000 Received: by outflank-mailman (output) from mailman id 348022.574441; Mon, 13 Jun 2022 11:38:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iOr-00049T-2p; Mon, 13 Jun 2022 11:38:29 +0000 Received: by outflank-mailman (input) for mailman id 348022; Mon, 13 Jun 2022 11:38:28 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1o0iNh-0003eY-8B for xen-devel@lists.xenproject.org; Mon, 13 Jun 2022 11:37:17 +0000 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 2c35fb1a-eb0d-11ec-bd2c-47488cf2e6aa; Mon, 13 Jun 2022 13:37:15 +0200 (CEST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-263-5G3LNvV0Mv2PeFSjsuQA_Q-1; Mon, 13 Jun 2022 07:37:12 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 78034100BADB; Mon, 13 Jun 2022 11:37:11 +0000 (UTC) Received: from sirius.home.kraxel.org (unknown [10.39.192.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1812F2166B26; Mon, 13 Jun 2022 11:37:11 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id D761818009AC; Mon, 13 Jun 2022 13:36:56 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2c35fb1a-eb0d-11ec-bd2c-47488cf2e6aa DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655120235; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TCo33ax1Q4GDO812+rq/YD1R1Ny1sNrWx6I6aptpWo8=; b=OwdDXeOKhnSy0uao4RqpTaBfiLfIApt0tgW+fkB8TAMdg9UT4t2uGNClnqm5S38eyhPvKb TP6RoO9H6VnGr5dYg+906gUZr3X2gN44gUk9tv20CqEa3lLVKu+KZrOsLLjqVxTZPMiK16 jBD7MDI2RdMRNGL3fqal6jFcixaJkuc= X-MC-Unique: 5G3LNvV0Mv2PeFSjsuQA_Q-1 From: Gerd Hoffmann To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, Akihiko Odaki , "Hongren (Zenithal) Zheng" , Peter Maydell , Alex Williamson , Stefano Stabellini , "Canokeys.org" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paul Durrant , Anthony Perard , Gerd Hoffmann , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PULL 16/16] ui: move 'pc-bios/keymaps' to 'ui/keymaps' Date: Mon, 13 Jun 2022 13:36:55 +0200 Message-Id: <20220613113655.3693872-17-kraxel@redhat.com> In-Reply-To: <20220613113655.3693872-1-kraxel@redhat.com> References: <20220613113655.3693872-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655120330543100001 From: Daniel P. Berrang=C3=A9 The 'keymaps' directory contents is nothing to do with the firmware blobs. The 'pc-bios/keymaps' directory appears to have been used previously as a convenience for getting the files installed into a subdir of the firmware install dir, as well as to make it easier to launch QEMU directly from the build tree. These requirements do not need to be reflected in the source tree arrangement. The keymaps logically belong with the UI code, and meson can install them into the right place. For in-tree execution, we merely need a suitable symlink from the source tree to the build tree. Signed-off-by: Daniel P. Berrang=C3=A9 Message-Id: <20220613084456.470068-1-berrange@redhat.com> Signed-off-by: Gerd Hoffmann --- configure | 4 ++++ pc-bios/meson.build | 1 - {pc-bios =3D> ui}/keymaps/ar | 0 {pc-bios =3D> ui}/keymaps/bepo | 0 {pc-bios =3D> ui}/keymaps/cz | 0 {pc-bios =3D> ui}/keymaps/da | 0 {pc-bios =3D> ui}/keymaps/de | 0 {pc-bios =3D> ui}/keymaps/de-ch | 0 {pc-bios =3D> ui}/keymaps/en-gb | 0 {pc-bios =3D> ui}/keymaps/en-us | 0 {pc-bios =3D> ui}/keymaps/es | 0 {pc-bios =3D> ui}/keymaps/et | 0 {pc-bios =3D> ui}/keymaps/fi | 0 {pc-bios =3D> ui}/keymaps/fo | 0 {pc-bios =3D> ui}/keymaps/fr | 0 {pc-bios =3D> ui}/keymaps/fr-be | 0 {pc-bios =3D> ui}/keymaps/fr-ca | 0 {pc-bios =3D> ui}/keymaps/fr-ch | 0 {pc-bios =3D> ui}/keymaps/hr | 0 {pc-bios =3D> ui}/keymaps/hu | 0 {pc-bios =3D> ui}/keymaps/is | 0 {pc-bios =3D> ui}/keymaps/it | 0 {pc-bios =3D> ui}/keymaps/ja | 0 {pc-bios =3D> ui}/keymaps/lt | 0 {pc-bios =3D> ui}/keymaps/lv | 0 {pc-bios =3D> ui}/keymaps/meson.build | 0 {pc-bios =3D> ui}/keymaps/mk | 0 {pc-bios =3D> ui}/keymaps/nl | 0 {pc-bios =3D> ui}/keymaps/no | 0 {pc-bios =3D> ui}/keymaps/pl | 0 {pc-bios =3D> ui}/keymaps/pt | 0 {pc-bios =3D> ui}/keymaps/pt-br | 0 {pc-bios =3D> ui}/keymaps/ru | 0 {pc-bios =3D> ui}/keymaps/sl | 0 {pc-bios =3D> ui}/keymaps/sv | 0 {pc-bios =3D> ui}/keymaps/th | 0 {pc-bios =3D> ui}/keymaps/tr | 0 ui/meson.build | 1 + 38 files changed, 5 insertions(+), 1 deletion(-) rename {pc-bios =3D> ui}/keymaps/ar (100%) rename {pc-bios =3D> ui}/keymaps/bepo (100%) rename {pc-bios =3D> ui}/keymaps/cz (100%) rename {pc-bios =3D> ui}/keymaps/da (100%) rename {pc-bios =3D> ui}/keymaps/de (100%) rename {pc-bios =3D> ui}/keymaps/de-ch (100%) rename {pc-bios =3D> ui}/keymaps/en-gb (100%) rename {pc-bios =3D> ui}/keymaps/en-us (100%) rename {pc-bios =3D> ui}/keymaps/es (100%) rename {pc-bios =3D> ui}/keymaps/et (100%) rename {pc-bios =3D> ui}/keymaps/fi (100%) rename {pc-bios =3D> ui}/keymaps/fo (100%) rename {pc-bios =3D> ui}/keymaps/fr (100%) rename {pc-bios =3D> ui}/keymaps/fr-be (100%) rename {pc-bios =3D> ui}/keymaps/fr-ca (100%) rename {pc-bios =3D> ui}/keymaps/fr-ch (100%) rename {pc-bios =3D> ui}/keymaps/hr (100%) rename {pc-bios =3D> ui}/keymaps/hu (100%) rename {pc-bios =3D> ui}/keymaps/is (100%) rename {pc-bios =3D> ui}/keymaps/it (100%) rename {pc-bios =3D> ui}/keymaps/ja (100%) rename {pc-bios =3D> ui}/keymaps/lt (100%) rename {pc-bios =3D> ui}/keymaps/lv (100%) rename {pc-bios =3D> ui}/keymaps/meson.build (100%) rename {pc-bios =3D> ui}/keymaps/mk (100%) rename {pc-bios =3D> ui}/keymaps/nl (100%) rename {pc-bios =3D> ui}/keymaps/no (100%) rename {pc-bios =3D> ui}/keymaps/pl (100%) rename {pc-bios =3D> ui}/keymaps/pt (100%) rename {pc-bios =3D> ui}/keymaps/pt-br (100%) rename {pc-bios =3D> ui}/keymaps/ru (100%) rename {pc-bios =3D> ui}/keymaps/sl (100%) rename {pc-bios =3D> ui}/keymaps/sv (100%) rename {pc-bios =3D> ui}/keymaps/th (100%) rename {pc-bios =3D> ui}/keymaps/tr (100%) diff --git a/configure b/configure index e69537c7566c..77c68642514b 100755 --- a/configure +++ b/configure @@ -2226,6 +2226,10 @@ for f in $LINKS ; do fi done =20 +# Keymaps needs slightly different location in build +# dir as we are simulating the installed data dir layout +symlink "$source_path/ui/keymaps" "pc-bios/keymaps" + # Mac OS X ships with a broken assembler roms=3D probe_target_compilers i386 x86_64 diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 41ba1c0ec7ba..e49c0e5f56de 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -97,4 +97,3 @@ foreach f : blobs endforeach =20 subdir('descriptors') -subdir('keymaps') diff --git a/pc-bios/keymaps/ar b/ui/keymaps/ar similarity index 100% rename from pc-bios/keymaps/ar rename to ui/keymaps/ar diff --git a/pc-bios/keymaps/bepo b/ui/keymaps/bepo similarity index 100% rename from pc-bios/keymaps/bepo rename to ui/keymaps/bepo diff --git a/pc-bios/keymaps/cz b/ui/keymaps/cz similarity index 100% rename from pc-bios/keymaps/cz rename to ui/keymaps/cz diff --git a/pc-bios/keymaps/da b/ui/keymaps/da similarity index 100% rename from pc-bios/keymaps/da rename to ui/keymaps/da diff --git a/pc-bios/keymaps/de b/ui/keymaps/de similarity index 100% rename from pc-bios/keymaps/de rename to ui/keymaps/de diff --git a/pc-bios/keymaps/de-ch b/ui/keymaps/de-ch similarity index 100% rename from pc-bios/keymaps/de-ch rename to ui/keymaps/de-ch diff --git a/pc-bios/keymaps/en-gb b/ui/keymaps/en-gb similarity index 100% rename from pc-bios/keymaps/en-gb rename to ui/keymaps/en-gb diff --git a/pc-bios/keymaps/en-us b/ui/keymaps/en-us similarity index 100% rename from pc-bios/keymaps/en-us rename to ui/keymaps/en-us diff --git a/pc-bios/keymaps/es b/ui/keymaps/es similarity index 100% rename from pc-bios/keymaps/es rename to ui/keymaps/es diff --git a/pc-bios/keymaps/et b/ui/keymaps/et similarity index 100% rename from pc-bios/keymaps/et rename to ui/keymaps/et diff --git a/pc-bios/keymaps/fi b/ui/keymaps/fi similarity index 100% rename from pc-bios/keymaps/fi rename to ui/keymaps/fi diff --git a/pc-bios/keymaps/fo b/ui/keymaps/fo similarity index 100% rename from pc-bios/keymaps/fo rename to ui/keymaps/fo diff --git a/pc-bios/keymaps/fr b/ui/keymaps/fr similarity index 100% rename from pc-bios/keymaps/fr rename to ui/keymaps/fr diff --git a/pc-bios/keymaps/fr-be b/ui/keymaps/fr-be similarity index 100% rename from pc-bios/keymaps/fr-be rename to ui/keymaps/fr-be diff --git a/pc-bios/keymaps/fr-ca b/ui/keymaps/fr-ca similarity index 100% rename from pc-bios/keymaps/fr-ca rename to ui/keymaps/fr-ca diff --git a/pc-bios/keymaps/fr-ch b/ui/keymaps/fr-ch similarity index 100% rename from pc-bios/keymaps/fr-ch rename to ui/keymaps/fr-ch diff --git a/pc-bios/keymaps/hr b/ui/keymaps/hr similarity index 100% rename from pc-bios/keymaps/hr rename to ui/keymaps/hr diff --git a/pc-bios/keymaps/hu b/ui/keymaps/hu similarity index 100% rename from pc-bios/keymaps/hu rename to ui/keymaps/hu diff --git a/pc-bios/keymaps/is b/ui/keymaps/is similarity index 100% rename from pc-bios/keymaps/is rename to ui/keymaps/is diff --git a/pc-bios/keymaps/it b/ui/keymaps/it similarity index 100% rename from pc-bios/keymaps/it rename to ui/keymaps/it diff --git a/pc-bios/keymaps/ja b/ui/keymaps/ja similarity index 100% rename from pc-bios/keymaps/ja rename to ui/keymaps/ja diff --git a/pc-bios/keymaps/lt b/ui/keymaps/lt similarity index 100% rename from pc-bios/keymaps/lt rename to ui/keymaps/lt diff --git a/pc-bios/keymaps/lv b/ui/keymaps/lv similarity index 100% rename from pc-bios/keymaps/lv rename to ui/keymaps/lv diff --git a/pc-bios/keymaps/meson.build b/ui/keymaps/meson.build similarity index 100% rename from pc-bios/keymaps/meson.build rename to ui/keymaps/meson.build diff --git a/pc-bios/keymaps/mk b/ui/keymaps/mk similarity index 100% rename from pc-bios/keymaps/mk rename to ui/keymaps/mk diff --git a/pc-bios/keymaps/nl b/ui/keymaps/nl similarity index 100% rename from pc-bios/keymaps/nl rename to ui/keymaps/nl diff --git a/pc-bios/keymaps/no b/ui/keymaps/no similarity index 100% rename from pc-bios/keymaps/no rename to ui/keymaps/no diff --git a/pc-bios/keymaps/pl b/ui/keymaps/pl similarity index 100% rename from pc-bios/keymaps/pl rename to ui/keymaps/pl diff --git a/pc-bios/keymaps/pt b/ui/keymaps/pt similarity index 100% rename from pc-bios/keymaps/pt rename to ui/keymaps/pt diff --git a/pc-bios/keymaps/pt-br b/ui/keymaps/pt-br similarity index 100% rename from pc-bios/keymaps/pt-br rename to ui/keymaps/pt-br diff --git a/pc-bios/keymaps/ru b/ui/keymaps/ru similarity index 100% rename from pc-bios/keymaps/ru rename to ui/keymaps/ru diff --git a/pc-bios/keymaps/sl b/ui/keymaps/sl similarity index 100% rename from pc-bios/keymaps/sl rename to ui/keymaps/sl diff --git a/pc-bios/keymaps/sv b/ui/keymaps/sv similarity index 100% rename from pc-bios/keymaps/sv rename to ui/keymaps/sv diff --git a/pc-bios/keymaps/th b/ui/keymaps/th similarity index 100% rename from pc-bios/keymaps/th rename to ui/keymaps/th diff --git a/pc-bios/keymaps/tr b/ui/keymaps/tr similarity index 100% rename from pc-bios/keymaps/tr rename to ui/keymaps/tr diff --git a/ui/meson.build b/ui/meson.build index e9f48c531588..25c9a5ff8cd9 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -170,6 +170,7 @@ if have_system or xkbcommon.found() endif =20 subdir('shader') +subdir('keymaps') =20 if have_system subdir('icons') --=20 2.36.1