{"id":2224377,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2224377/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260417105618.3621-8-magnuskulke@linux.microsoft.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.2/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260417105618.3621-8-magnuskulke@linux.microsoft.com>","list_archive_url":null,"date":"2026-04-17T10:55:51","name":"[07/34] accel/mshv: add irq_routes to state","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"7d24b4d374e53220b3090bb55beafbfac9a404ad","submitter":{"id":90753,"url":"http://patchwork.ozlabs.org/api/1.2/people/90753/?format=json","name":"Magnus Kulke","email":"magnuskulke@linux.microsoft.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260417105618.3621-8-magnuskulke@linux.microsoft.com/mbox/","series":[{"id":500310,"url":"http://patchwork.ozlabs.org/api/1.2/series/500310/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=500310","date":"2026-04-17T10:55:44","name":"Add migration support to the MSHV accelerator","version":1,"mbox":"http://patchwork.ozlabs.org/series/500310/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2224377/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2224377/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.microsoft.com header.i=@linux.microsoft.com\n header.a=rsa-sha256 header.s=default header.b=SkPXj0Bq;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxsKB2Zt0z1yJ8\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 20:57:16 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wDgsY-0000Nu-4g; Fri, 17 Apr 2026 06:56:54 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <magnuskulke@linux.microsoft.com>)\n id 1wDgsW-0000NU-UT\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 06:56:52 -0400","from linux.microsoft.com ([13.77.154.182])\n by eggs.gnu.org with esmtp (Exim 4.90_1)\n (envelope-from <magnuskulke@linux.microsoft.com>) id 1wDgsV-0001XU-Ck\n for qemu-devel@nongnu.org; Fri, 17 Apr 2026 06:56:52 -0400","from DESKTOP-TUU1E5L.fritz.box (p5086d620.dip0.t-ipconnect.de\n [80.134.214.32])\n by linux.microsoft.com (Postfix) with ESMTPSA id A678520B712D;\n Fri, 17 Apr 2026 03:56:47 -0700 (PDT)"],"DKIM-Filter":"OpenDKIM Filter v2.11.0 linux.microsoft.com A678520B712D","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1776423410;\n bh=Q99VB31zJMe+kwy7P7q526bcuOKPTBKL3PaUmcduhVg=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=SkPXj0BqV5Sz7eDBWcWL5BLnQialbzeLC5dE8Wwt0G+CXMcBchC35s3DzM3+xKHRO\n KmJS9l4CcHgS7RXkOF7rGJQCVsOsTjjNpDorf9kGudl+iKXS7kFOAJKWdHPJJONLE2\n QjEszt93PUpiJ0FqWPA864vtinSIirkg1Z/vydKk=","From":"Magnus Kulke <magnuskulke@linux.microsoft.com>","To":"qemu-devel@nongnu.org","Cc":"kvm@vger.kernel.org, Magnus Kulke <magnuskulke@microsoft.com>,\n Wei Liu <liuwe@microsoft.com>, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\t=?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@redhat.com>,\n Zhao Liu <zhao1.liu@intel.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Paolo Bonzini <pbonzini@redhat.com>, Wei Liu <wei.liu@kernel.org>,\n Magnus Kulke <magnuskulke@linux.microsoft.com>,\n Alex Williamson <alex@shazbot.org>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, =?utf-8?q?Philippe_Mathieu-D?=\n\t=?utf-8?q?aud=C3=A9?= <philmd@linaro.org>,\n Marcelo Tosatti <mtosatti@redhat.com>","Subject":"[PATCH 07/34] accel/mshv: add irq_routes to state","Date":"Fri, 17 Apr 2026 12:55:51 +0200","Message-Id":"<20260417105618.3621-8-magnuskulke@linux.microsoft.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20260417105618.3621-1-magnuskulke@linux.microsoft.com>","References":"<20260417105618.3621-1-magnuskulke@linux.microsoft.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=13.77.154.182;\n envelope-from=magnuskulke@linux.microsoft.com; helo=linux.microsoft.com","X-Spam_score_int":"-42","X-Spam_score":"-4.3","X-Spam_bar":"----","X-Spam_report":"(-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"This change adds fields related to irq routing to the MSHV state, following\nsimilar fields in the KVM implementation.\n\nSo far the fields are only initialized, they will be used in subsequent\ncommits for bookkeeping purposes and storing uncommitted interrupt routes.\n\nThe TYPE_MSHV_ACCEL defines have been moved to the header.\n\nSigned-off-by: Magnus Kulke <magnuskulke@linux.microsoft.com>\n---\n accel/mshv/irq.c          | 10 ++++++++++\n accel/mshv/mshv-all.c     |  6 ++----\n include/system/mshv.h     |  7 +++++++\n include/system/mshv_int.h |  5 +++++\n 4 files changed, 24 insertions(+), 4 deletions(-)","diff":"diff --git a/accel/mshv/irq.c b/accel/mshv/irq.c\nindex 3c238c33c3..82f2022c7c 100644\n--- a/accel/mshv/irq.c\n+++ b/accel/mshv/irq.c\n@@ -396,3 +396,13 @@ int mshv_reserve_ioapic_msi_routes(int vm_fd)\n \n     return 0;\n }\n+\n+void mshv_init_irq_routing(MshvState *s)\n+{\n+    int gsi_count = MSHV_MAX_MSI_ROUTES;\n+\n+    s->irq_routes = g_malloc0(sizeof(*s->irq_routes));\n+    s->nr_allocated_irq_routes = 0;\n+    s->gsi_count = gsi_count;\n+    s->used_gsi_bitmap = bitmap_new(gsi_count);\n+}\ndiff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c\nindex 04d248fe1d..8acb080db1 100644\n--- a/accel/mshv/mshv-all.c\n+++ b/accel/mshv/mshv-all.c\n@@ -43,10 +43,6 @@\n #include <err.h>\n #include <sys/ioctl.h>\n \n-#define TYPE_MSHV_ACCEL ACCEL_CLASS_NAME(\"mshv\")\n-\n-DECLARE_INSTANCE_CHECKER(MshvState, MSHV_STATE, TYPE_MSHV_ACCEL)\n-\n bool mshv_allowed;\n \n MshvState *mshv_state;\n@@ -457,6 +453,8 @@ static int mshv_init(AccelState *as, MachineState *ms)\n \n     mshv_state = s;\n \n+    mshv_init_irq_routing(s);\n+\n     register_mshv_memory_listener(s, &s->memory_listener, &address_space_memory,\n                                   0, \"mshv-memory\");\n     memory_listener_register(&mshv_io_listener, &address_space_io);\ndiff --git a/include/system/mshv.h b/include/system/mshv.h\nindex 1e96b3a606..0d1745315b 100644\n--- a/include/system/mshv.h\n+++ b/include/system/mshv.h\n@@ -45,7 +45,13 @@ extern bool mshv_allowed;\n #define mshv_msi_via_irqfd_enabled() mshv_enabled()\n #endif\n \n+#define TYPE_MSHV_ACCEL ACCEL_CLASS_NAME(\"mshv\")\n+\n typedef struct MshvState MshvState;\n+\n+DECLARE_INSTANCE_CHECKER(MshvState, MSHV_STATE,\n+                         TYPE_MSHV_ACCEL)\n+\n extern MshvState *mshv_state;\n \n /* interrupt */\n@@ -60,5 +66,6 @@ void mshv_irqchip_release_virq(int virq);\n int mshv_irqchip_add_irqfd_notifier_gsi(const EventNotifier *n,\n                                         const EventNotifier *rn, int virq);\n int mshv_irqchip_remove_irqfd_notifier_gsi(const EventNotifier *n, int virq);\n+void mshv_init_irq_routing(MshvState *s);\n \n #endif\ndiff --git a/include/system/mshv_int.h b/include/system/mshv_int.h\nindex 70631ca6ba..56fda76a9c 100644\n--- a/include/system/mshv_int.h\n+++ b/include/system/mshv_int.h\n@@ -48,6 +48,11 @@ struct MshvState {\n     int nr_as;\n     MshvAddressSpace *as;\n     int fd;\n+    /* irqchip routing */\n+    struct mshv_user_irq_table *irq_routes;\n+    int nr_allocated_irq_routes;\n+    unsigned long *used_gsi_bitmap;\n+    unsigned int gsi_count;\n };\n \n typedef struct MshvMsiControl {\n","prefixes":["07/34"]}