Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2215423/?format=api
{ "id": 2215423, "url": "http://patchwork.ozlabs.org/api/patches/2215423/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260324151323.74473-2-mohamed@unpredictable.fr/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/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": "<20260324151323.74473-2-mohamed@unpredictable.fr>", "list_archive_url": null, "date": "2026-03-24T15:13:12", "name": "[v3,01/12] whpx: i386: workaround for Windows 10 support", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "ebde2bff7423663d7112a435c352ae4943053eb7", "submitter": { "id": 91318, "url": "http://patchwork.ozlabs.org/api/people/91318/?format=api", "name": "Mohamed Mediouni", "email": "mohamed@unpredictable.fr" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260324151323.74473-2-mohamed@unpredictable.fr/mbox/", "series": [ { "id": 497303, "url": "http://patchwork.ozlabs.org/api/series/497303/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=497303", "date": "2026-03-24T15:13:13", "name": "whpx: i386: Windows 10 and performance fixes", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/497303/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2215423/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2215423/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 (2048-bit key;\n unprotected) header.d=unpredictable.fr header.i=@unpredictable.fr\n header.a=rsa-sha256 header.s=sig1 header.b=YXdze5cC;\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=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.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 4fgDBY206Bz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 02:15:49 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w53Tb-0006JE-7k; Tue, 24 Mar 2026 11:15:30 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mohamed@unpredictable.fr>)\n id 1w53Sl-0005sJ-O0\n for qemu-devel@nongnu.org; Tue, 24 Mar 2026 11:14:37 -0400", "from p-east2-cluster6-host9-snip4-3.eps.apple.com ([57.103.76.194]\n helo=outbound.st.icloud.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mohamed@unpredictable.fr>)\n id 1w53Sf-0005rb-T5\n for qemu-devel@nongnu.org; Tue, 24 Mar 2026 11:14:33 -0400", "from outbound.st.icloud.com (unknown [127.0.0.2])\n by p00-icloudmta-asmtp-us-east-1a-60-percent-7 (Postfix) with ESMTPS id\n A904B1835330; Tue, 24 Mar 2026 15:14:20 +0000 (UTC)", "from localhost.localdomain (unknown [17.42.251.67])\n by p00-icloudmta-asmtp-us-east-1a-60-percent-7 (Postfix) with ESMTPSA id\n 76F531816469; Tue, 24 Mar 2026 15:13:39 +0000 (UTC)" ], "Dkim-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr;\n s=sig1; t=1774365263; x=1776957263;\n bh=2GvRGzc1MRHwmLUZVIfY+An7ZJn+U4NKEHF+iW/SlLc=;\n h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme;\n b=YXdze5cCcS7gLIWuMGjJXSvn1be0/VizQDTZ8ogAUP916zQ1f/RXhhCyhtZSZuxpczLVISs7M6oST86GiJG0QwDWoNc9PtAFoLtK4dG5CaquhIvmfsLu2p/1IUZRVQk81CPySdKsncwguQDa/eCIqSGP9yulaYvcN9BULyQ146Ty+SF50X8tSJqx5NUQSwvCvrsc4LIwGXEjtIiFeOghpaGm10l1KxdNpkP6wRRf+GS1UjADRhKpi+z6Bq37XYGvdOCoGPQdn7rogRZuEo4iE0PRwU8cRrnem1UFfvX7sNy0Dcawa+0caUCJh/0/Of5zAqdTz/50jaYuO6qFtbLKvw==", "mail-alias-created-date": "1752046281608", "From": "Mohamed Mediouni <mohamed@unpredictable.fr>", "To": "qemu-devel@nongnu.org", "Cc": "Roman Bolshakov <rbolshakov@ddn.com>,\n Mohamed Mediouni <mohamed@unpredictable.fr>, Wei Liu <wei.liu@kernel.org>,\n Phil Dennis-Jordan <phil@philjordan.eu>,\n Pedro Barbuda <pbarbuda@microsoft.com>", "Subject": "[PATCH v3 01/12] whpx: i386: workaround for Windows 10 support", "Date": "Tue, 24 Mar 2026 16:13:12 +0100", "Message-ID": "<20260324151323.74473-2-mohamed@unpredictable.fr>", "X-Mailer": "git-send-email 2.50.1", "In-Reply-To": "<20260324151323.74473-1-mohamed@unpredictable.fr>", "References": "<20260324151323.74473-1-mohamed@unpredictable.fr>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-GUID": "n_6K2D1LUnbfKCfE9J_EBOEkGIDtfc12", "X-Authority-Info-Out": "v=2.4 cv=YdqwJgRf c=1 sm=1 tr=0 ts=69c2aa4d\n cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117\n a=YrL12D//S6tul8v/L+6tKg==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=0RUPog5Yt9CtxV4tMQEA:9", "X-Proofpoint-ORIG-GUID": "n_6K2D1LUnbfKCfE9J_EBOEkGIDtfc12", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMzI0MDExOSBTYWx0ZWRfX5wkxYLIoM5KY\n Vore0Pep8XvXXKQ4a8MJiOiytnKTw20sA0n2OCcJqxNBn9UHV6xZ/pSv9P3LbO+RCKOAhv5sWRE\n w0SEeSEUMLibA40cIFd6o59/0aV3T5iMGzKT+tGqQOD6TiMotjOHjExIWLoydAMdZMntKbWwKMY\n l0ZCXutoQ/6l/fe9mD8J+7YvmrRGe1pPCgYNnN/2R7bXYCDp3ARNFcGkw8k9iTMt39YzAl9lGKo\n EZmUJVGzgO1YTNS/9ZYfcHFeZjx/vStYl/rxqkOL/UJr2C+8kbYz+SY+rCkWXI843XEOEv4nbh7\n pqk3QPyBU5E5a+S1wgEJiH1VchHTMPpoqZCJlSSm9k9p/3gtXxwAmlIPFDZ1Vg=", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-03-24_03,2026-03-23_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0 adultscore=0\n mlxscore=0 bulkscore=0 clxscore=1030 suspectscore=0 phishscore=0\n lowpriorityscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 classifier=spam\n authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000\n definitions=main-2603240119", "Received-SPF": "pass client-ip=57.103.76.194;\n envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,\n RCVD_IN_VALIDITY_RPBL_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": "Windows Server 2022 and later support\nWHvCapabilityCodeProcessorPerfmonFeatures and\nWHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks.\n\nWindows 10 supports neither of those.\n\nAs the QEMU executable doesn't have a manifest, OS version\nqueries do not return the actual Windows version but 6.2.9200\nwhich corresponds to Windows 8. Windows Server 2022 and Windows\n11 still use the 10.0 number, with distinction being the build\nnumber.\n\nAs such, use the absence of perf monitoring feature query as\na cutoff to detect if a legacy OS is present.\n\nSigned-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>\n---\n target/i386/whpx/whpx-all.c | 43 ++++++++++++++++++++++++-------------\n 1 file changed, 28 insertions(+), 15 deletions(-)", "diff": "diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c\nindex 4d5d3dbd24..015c0f1dc9 100644\n--- a/target/i386/whpx/whpx-all.c\n+++ b/target/i386/whpx/whpx-all.c\n@@ -1948,6 +1948,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms)\n WHV_CAPABILITY_FEATURES features = {0};\n WHV_PROCESSOR_FEATURES_BANKS processor_features;\n WHV_PROCESSOR_PERFMON_FEATURES perfmon_features;\n+ bool is_legacy_os = false;\n \n whpx = &whpx_global;\n \n@@ -2096,21 +2097,29 @@ int whpx_accel_init(AccelState *as, MachineState *ms)\n hr = whp_dispatch.WHvGetCapability(\n WHvCapabilityCodeProcessorPerfmonFeatures, &perfmon_features,\n sizeof(WHV_PROCESSOR_PERFMON_FEATURES), &whpx_cap_size);\n+ /*\n+ * Relying on this is a crutch to maintain Windows 10 support.\n+ *\n+ * WHvCapabilityCodeProcessorPerfmonFeatures and\n+ * WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks\n+ * are implemented starting from Windows Server 2022 (build 20348).\n+ */\n if (FAILED(hr)) {\n- error_report(\"WHPX: Failed to get performance monitoring features, hr=%08lx\", hr);\n- ret = -ENOSPC;\n- goto error;\n- }\n-\n- hr = whp_dispatch.WHvSetPartitionProperty(\n- whpx->partition,\n- WHvPartitionPropertyCodeProcessorPerfmonFeatures,\n- &perfmon_features,\n- sizeof(WHV_PROCESSOR_PERFMON_FEATURES));\n- if (FAILED(hr)) {\n- error_report(\"WHPX: Failed to set performance monitoring features, hr=%08lx\", hr);\n- ret = -EINVAL;\n- goto error;\n+ warn_report(\"WHPX: Failed to get performance \"\n+ \"monitoring features, hr=%08lx\", hr);\n+ is_legacy_os = true;\n+ } else {\n+ hr = whp_dispatch.WHvSetPartitionProperty(\n+ whpx->partition,\n+ WHvPartitionPropertyCodeProcessorPerfmonFeatures,\n+ &perfmon_features,\n+ sizeof(WHV_PROCESSOR_PERFMON_FEATURES));\n+ if (FAILED(hr)) {\n+ error_report(\"WHPX: Failed to set performance \"\n+ \"monitoring features, hr=%08lx\", hr);\n+ ret = -EINVAL;\n+ goto error;\n+ }\n }\n \n /* Enable synthetic processor features */\n@@ -2138,7 +2147,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms)\n synthetic_features.Bank0.DirectSyntheticTimers = 1;\n }\n \n- if (whpx->hyperv_enlightenments_allowed) {\n+ if (!is_legacy_os && whpx->hyperv_enlightenments_allowed) {\n hr = whp_dispatch.WHvSetPartitionProperty(\n whpx->partition,\n WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks,\n@@ -2149,6 +2158,10 @@ int whpx_accel_init(AccelState *as, MachineState *ms)\n ret = -EINVAL;\n goto error;\n }\n+ } else if (is_legacy_os && whpx->hyperv_enlightenments_required) {\n+ error_report(\"Hyper-V enlightenments not available on legacy Windows\");\n+ ret = -EINVAL;\n+ goto error;\n }\n \n /* Register for MSR and CPUID exits */\n", "prefixes": [ "v3", "01/12" ] }