Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2233148/?format=api
{ "id": 2233148, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2233148/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260505185028.237207-5-dblanzeanu@linux.microsoft.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.2/projects/14/?format=api", "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": "<20260505185028.237207-5-dblanzeanu@linux.microsoft.com>", "list_archive_url": null, "date": "2026-05-05T18:50:25", "name": "[v2,4/7] target/i386/mshv: hv_vp_register_page setup for the vcpu", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "6da8f460d90a8bf136ac63e32914f7b7ccac4761", "submitter": { "id": 93106, "url": "http://patchwork.ozlabs.org/api/1.2/people/93106/?format=api", "name": "Doru Blânzeanu", "email": "dblanzeanu@linux.microsoft.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260505185028.237207-5-dblanzeanu@linux.microsoft.com/mbox/", "series": [ { "id": 502882, "url": "http://patchwork.ozlabs.org/api/1.2/series/502882/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502882", "date": "2026-05-05T18:50:22", "name": "target/i386/mshv: use hv_vp_register_page for fast register access", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/502882/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2233148/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2233148/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=b79crTMf;\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 4g970g4bL3z1yJx\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 04:52:03 +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 1wKKr6-0000g1-F2; Tue, 05 May 2026 14:50:52 -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 <dblanzeanu@linux.microsoft.com>)\n id 1wKKr4-0000fg-6K\n for qemu-devel@nongnu.org; Tue, 05 May 2026 14:50:50 -0400", "from linux.microsoft.com ([13.77.154.182])\n by eggs.gnu.org with esmtp (Exim 4.90_1)\n (envelope-from <dblanzeanu@linux.microsoft.com>) id 1wKKr1-0006jG-Tf\n for qemu-devel@nongnu.org; Tue, 05 May 2026 14:50:49 -0400", "from laptop.localdomain (unknown [86.121.140.248])\n by linux.microsoft.com (Postfix) with ESMTPSA id AD4BD20B716C;\n Tue, 5 May 2026 11:50:40 -0700 (PDT)" ], "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com AD4BD20B716C", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1778007042;\n bh=0BKwOecAhGjoVx5AIvhBMINDtDxE83/qd2X5k8o4a3M=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=b79crTMftNC+TelxPmY49Gsnezfg5vHhvkJapjNewH3I83BVriVlIgLzkKauWqL7x\n pc7pbmE9+sLvx94I6zjzZHZ7KdWUDQc5jofu0cpWBsxnct0EQ5B/1G/ESmtpV5QHOX\n TRBs3YiCaSP47FF2I3C6xNiaGfyy7ayfYgsGUo9Y=", "From": "=?utf-8?q?Doru_Bl=C3=A2nzeanu?= <dblanzeanu@linux.microsoft.com>", "To": "qemu-devel@nongnu.org", "Cc": "=?utf-8?q?Doru_Bl=C3=A2nzeanu?= <dblanzeanu@linux.microsoft.com>,\n Magnus Kulke <magnuskulke@linux.microsoft.com>,\n Zhao Liu <zhao1.liu@intel.com>, Wei Liu <wei.liu@kernel.org>,\n Paolo Bonzini <pbonzini@redhat.com>", "Subject": "[PATCH v2 4/7] target/i386/mshv: hv_vp_register_page setup for the\n vcpu", "Date": "Tue, 5 May 2026 21:50:25 +0300", "Message-ID": "<20260505185028.237207-5-dblanzeanu@linux.microsoft.com>", "X-Mailer": "git-send-email 2.53.0", "In-Reply-To": "<20260505185028.237207-1-dblanzeanu@linux.microsoft.com>", "References": "<20260505185028.237207-1-dblanzeanu@linux.microsoft.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=13.77.154.182;\n envelope-from=dblanzeanu@linux.microsoft.com; helo=linux.microsoft.com", "X-Spam_score_int": "-19", "X-Spam_score": "-2.0", "X-Spam_bar": "--", "X-Spam_report": "(-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001,\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": "When the vcpu is created, call mmap to configure access to the register page.\nIn case the call to mmap fails, we log an error and continue with the\nprevious logic (using hypercalls).\n\nUpdate CPUArchState to store a pointer to the mmapped hv_vp_register_page.\n\nSigned-off-by: Doru Blânzeanu <dblanzeanu@linux.microsoft.com>\n---\n target/i386/cpu.h | 5 +++++\n target/i386/mshv/mshv-cpu.c | 22 ++++++++++++++++++++++\n 2 files changed, 27 insertions(+)", "diff": "diff --git a/target/i386/cpu.h b/target/i386/cpu.h\nindex 16de67e546..fd4c3712b1 100644\n--- a/target/i386/cpu.h\n+++ b/target/i386/cpu.h\n@@ -2019,6 +2019,11 @@ typedef struct CPUArchState {\n uint64_t msr_bndcfgs;\n uint64_t efer;\n \n+#ifdef CONFIG_MSHV\n+ /* Shared register page */\n+ struct hv_vp_register_page *regs_page;\n+#endif\n+\n /* Beginning of state preserved by INIT (dummy marker). */\n struct {} start_init_save;\n \ndiff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c\nindex 9defd05db6..3a3c269c33 100644\n--- a/target/i386/mshv/mshv-cpu.c\n+++ b/target/i386/mshv/mshv-cpu.c\n@@ -1587,6 +1587,7 @@ void mshv_arch_init_vcpu(CPUState *cpu)\n CPUX86State *env = &x86_cpu->env;\n AccelCPUState *state = cpu->accel;\n size_t page = HV_HYP_PAGE_SIZE;\n+ void *regs_page;\n void *mem = qemu_memalign(page, 2 * page);\n \n /* sanity check, to make sure we don't overflow the page */\n@@ -1595,6 +1596,22 @@ void mshv_arch_init_vcpu(CPUState *cpu)\n + sizeof(hv_input_get_vp_registers)\n > HV_HYP_PAGE_SIZE));\n \n+\n+ /* mmap the registers page */\n+ regs_page = mmap(NULL, page, PROT_READ | PROT_WRITE,\n+ MAP_SHARED, mshv_vcpufd(cpu),\n+ MSHV_VP_MMAP_OFFSET_REGISTERS * page);\n+ if (regs_page == MAP_FAILED) {\n+ /*\n+ * Error is not fatal, but we won't be able to use the\n+ * fast path for register access\n+ */\n+ error_report(\"register page mmap failed: %s\", strerror(errno));\n+ env->regs_page = NULL;\n+ } else {\n+ env->regs_page = (struct hv_vp_register_page *) regs_page;\n+ }\n+\n state->hvcall_args.base = mem;\n state->hvcall_args.input_page = mem;\n state->hvcall_args.output_page = (uint8_t *)mem + page;\n@@ -1608,6 +1625,11 @@ void mshv_arch_destroy_vcpu(CPUState *cpu)\n CPUX86State *env = &x86_cpu->env;\n AccelCPUState *state = cpu->accel;\n \n+ /* Unmap the register page */\n+ if (env->regs_page) {\n+ munmap(env->regs_page, HV_HYP_PAGE_SIZE);\n+ env->regs_page = NULL;\n+ }\n g_free(state->hvcall_args.base);\n state->hvcall_args = (MshvHvCallArgs){0};\n g_clear_pointer(&env->emu_mmio_buf, g_free);\n", "prefixes": [ "v2", "4/7" ] }