[{"id":3680459,"web_url":"http://patchwork.ozlabs.org/comment/3680459/","msgid":"<C85C3BAE-7458-4DA0-B3B2-C117E3C37CE8@unpredictable.fr>","list_archive_url":null,"date":"2026-04-22T10:43:49","subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","submitter":{"id":91318,"url":"http://patchwork.ozlabs.org/api/people/91318/","name":"Mohamed Mediouni","email":"mohamed@unpredictable.fr"},"content":"> On 21. Apr 2026, at 22:57, Mohamed Mediouni <mohamed@unpredictable.fr> wrote:\n> \n> WHvResetPartition resets partition state, and is not supported on Windows 10.\n> \n> On Arm, it's supposed to be used for reboots. The prior location of the\n> WHvResetPartition call wasn't right, as other vCPUs might still have\n> been running, causing the call to fail.\n> \n> Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>\ncc qemu-stable@\n\nI believe this one is a good candidate for qemu-stable too\n\n> ---\n> accel/accel-system.c       |  9 +++++++++\n> accel/whpx/whpx-common.c   | 13 +++++++++++++\n> include/accel/accel-ops.h  |  1 +\n> include/qemu/accel.h       |  3 +++\n> system/runstate.c          |  5 +++++\n> target/arm/whpx/whpx-all.c |  2 --\n> 6 files changed, 31 insertions(+), 2 deletions(-)\n> \n> diff --git a/accel/accel-system.c b/accel/accel-system.c\n> index 150af05bf5..5352ccd937 100644\n> --- a/accel/accel-system.c\n> +++ b/accel/accel-system.c\n> @@ -75,6 +75,15 @@ void accel_pre_resume(MachineState *ms, bool step_pending)\n>     }\n> }\n> \n> +void accel_reset(MachineState *ms)\n> +{\n> +    AccelState *accel = ms->accelerator;\n> +    AccelClass *acc = ACCEL_GET_CLASS(accel);\n> +    if (acc->reset_vm) {\n> +        acc->reset_vm(accel);\n> +    }\n> +}\n> +\n> /* initialize the arch-independent accel operation interfaces */\n> void accel_init_ops_interfaces(AccelClass *ac)\n> {\n> diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c\n> index 6fe44d5910..1f7b7d764d 100644\n> --- a/accel/whpx/whpx-common.c\n> +++ b/accel/whpx/whpx-common.c\n> @@ -205,6 +205,18 @@ static void do_whpx_cpu_synchronize_pre_loadvm(CPUState *cpu,\n>     cpu->vcpu_dirty = true;\n> }\n> \n> +/*\n> + * Partition support\n> + */\n> +\n> +static void whpx_partition_reset(AccelState* as)\n> +{\n> +    struct whpx_state *whpx = &whpx_global;\n> +    if (whp_dispatch.WHvResetPartition) {\n> +        whp_dispatch.WHvResetPartition(whpx->partition);\n> +    }\n> +}\n> +\n> /*\n>  * CPU support.\n>  */\n> @@ -622,6 +634,7 @@ static void whpx_accel_class_init(ObjectClass *oc, const void *data)\n>     ac->name = \"WHPX\";\n>     ac->init_machine = whpx_accel_init;\n>     ac->pre_resume_vm = whpx_pre_resume_vm;\n> +    ac->reset_vm = whpx_partition_reset;\n>     ac->allowed = &whpx_allowed;\n> \n>     object_class_property_add(oc, \"kernel-irqchip\", \"on|off|split\",\n> diff --git a/include/accel/accel-ops.h b/include/accel/accel-ops.h\n> index f46492e3fe..a1c9f3ae7b 100644\n> --- a/include/accel/accel-ops.h\n> +++ b/include/accel/accel-ops.h\n> @@ -33,6 +33,7 @@ struct AccelClass {\n>     /* system related hooks */\n>     void (*setup_post)(AccelState *as);\n>     void (*pre_resume_vm)(AccelState *as, bool step_pending);\n> +    void (*reset_vm)(AccelState *as);\n>     bool (*has_memory)(AccelState *accel, AddressSpace *as,\n>                        hwaddr start_addr, hwaddr size);\n> \n> diff --git a/include/qemu/accel.h b/include/qemu/accel.h\n> index d3638c7bfd..0e12aea7db 100644\n> --- a/include/qemu/accel.h\n> +++ b/include/qemu/accel.h\n> @@ -54,6 +54,9 @@ void accel_setup_post(MachineState *ms);\n> \n> void accel_pre_resume(MachineState *ms, bool step_pending);\n> \n> +/* Reset accelerator state. */\n> +void accel_reset(MachineState *ms);\n> +\n> /**\n>  * accel_cpu_instance_init:\n>  * @cpu: The CPU that needs to do accel-specific object initializations.\n> diff --git a/system/runstate.c b/system/runstate.c\n> index 2d4e95a216..734e3c037c 100644\n> --- a/system/runstate.c\n> +++ b/system/runstate.c\n> @@ -564,6 +564,11 @@ void qemu_system_reset(ShutdownCause reason)\n>         qapi_event_send_reset(shutdown_caused_by_guest(reason), reason);\n>     }\n> \n> +    if (current_machine) {\n> +        /* Tell the accelerator that the VM is being reset. */\n> +        accel_reset(current_machine);\n> +    }\n> +\n>     /*\n>      * Some boards use the machine reset callback to point CPUs to the firmware\n>      * entry point.  Assume that this is not the case for boards that support\n> diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c\n> index 4019a513aa..f345fea4fe 100644\n> --- a/target/arm/whpx/whpx-all.c\n> +++ b/target/arm/whpx/whpx-all.c\n> @@ -472,8 +472,6 @@ int whpx_vcpu_run(CPUState *cpu)\n>             if (arm_cpu->power_state != PSCI_OFF) {\n>                 whpx_psci_cpu_off(arm_cpu);\n>             }\n> -            /* Partition-wide reset, to reset state for reboots to succeed. */\n> -            whp_dispatch.WHvResetPartition(whpx->partition);\n>             bql_unlock();\n>             break;\n>         case WHvRunVpExitReasonNone:\n> -- \n> 2.50.1 (Apple Git-155)\n>","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=LcEs1D3V;\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 4g0wrG47Hrz1yHB\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:46:22 +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 1wFV4Q-0001w8-DS; Wed, 22 Apr 2026 06:44:38 -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 <mohamed@unpredictable.fr>)\n id 1wFV3y-0000Tz-S7\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 06:44:18 -0400","from p-east2-cluster5-host1-snip4-8.eps.apple.com ([57.103.79.11]\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 1wFV3v-0003Da-Ow\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 06:44:10 -0400","from outbound.st.icloud.com (unknown [127.0.0.2])\n by p00-icloudmta-asmtp-us-east-1a-60-percent-4 (Postfix) with ESMTPS id\n 6CC6B1800417; Wed, 22 Apr 2026 10:44:05 +0000 (UTC)","from smtpclient.apple (unknown [17.42.251.67])\n by p00-icloudmta-asmtp-us-east-1a-60-percent-4 (Postfix) with ESMTPSA id\n 88CF71800097; Wed, 22 Apr 2026 10:44:01 +0000 (UTC)"],"X-ICL-Out-Info":"\n HUtFAUMHWwJACUgBTUQeDx5WFlZNRAJCTQFIHV8DWRxBAUkdXw9LVxQEFVwFVgZXFHkNXR1FDlYZWgxSD1sOHBZLWFUJCgZdGFgVVgl3HlwASx1XBFQfUxJVHR0LRUtAEwRAEwVSB11NVg1HD1geXBQXC0dDXgheH0wcHQ5YBhIATQoONgZZBV4JVgNDBTYSFF1FRgNHGVcUUBtHDFUHV15fChMAXg8PTHpABi4EKXM1FE8HWA9GBjR4SB4vBCkAXXpJAlpyWHFDDjt2VXceXABLHVcEVB9TElUdHQtFVRIEQAhWUFQeQQRWFWwJWAZTGVc=","Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr;\n s=sig1; t=1776854646; x=1779446646;\n bh=UYGshsVpXsiTJgLMvkXMm2iq6dV3ukV2xgw2p6SYvPY=;\n h=Content-Type:Mime-Version:Subject:From:Date:Message-Id:To:x-icloud-hme;\n b=LcEs1D3V4L12SzzS6rr/YdXs/sXwHchcZ9aSZpd9u5gaY+5955olQ4K1cegS4aPjSoGy/JhoExKRN9ghVyuk7Uxcpb5ChbEgUZgo63Eea/TZJ0cjX8mmVg5xta5MlXzwpSVi1I9UbsIWJHTqjkVN7pNDn6HhjCGQGQz0zZggekLMAOmHrpiWT+Fkq27ujC+TbgPsr4cRP0S4iLaMyAYjdkp+z+t3iKGZ/jbEfWdNMn+z4lF4AfOIxGr44fD6aeehaDRmrsu5DCYG2URF+GPaPjxLiiirQwuyBAiV30i8JrhCf0RPlogaChl+ql0uqgRml5chr5pcQ+sUABxc/mA97A==","mail-alias-created-date":"1752046281608","Content-Type":"text/plain;\n\tcharset=us-ascii","Mime-Version":"1.0 (Mac OS X Mail 16.0 \\(3864.500.181\\))","Subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","From":"Mohamed Mediouni <mohamed@unpredictable.fr>","In-Reply-To":"<20260421205749.55060-1-mohamed@unpredictable.fr>","Date":"Wed, 22 Apr 2026 12:43:49 +0200","Cc":"Richard Henderson <richard.henderson@linaro.org>,\n Pedro Barbuda <pbarbuda@microsoft.com>,\n Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n qemu-stable@nongnu.org","Content-Transfer-Encoding":"quoted-printable","Message-Id":"<C85C3BAE-7458-4DA0-B3B2-C117E3C37CE8@unpredictable.fr>","References":"<20260421205749.55060-1-mohamed@unpredictable.fr>","To":"qemu-devel@nongnu.org","X-Mailer":"Apple Mail (2.3864.500.181)","X-Authority-Info-Out":"v=2.4 cv=KoZAGGWN c=1 sm=1 tr=0 ts=69e8a676\n cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117\n a=YrL12D//S6tul8v/L+6tKg==:17 a=kj9zAlcOel0A:10 a=A5OVakUREuEA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=A3C6YRHjnLZ7LpmBN_kA:9 a=CjuIK1q_8ugA:10","X-Proofpoint-GUID":"JHnvgY1GcBfyXxfaVNhnI9TpW9_MBqsj","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDEwMiBTYWx0ZWRfXwdnAShNmmHzN\n Qj4dZ3bdjFe4uSCWH4jPKppEIV3UEVQasKC0kxg/w9oWy1Q4OwD0WsomaVU1TKLEQ0RgRG5PfrY\n mL/v2LtwGE67d8Xdu/FkzCLn3jX21hW8ATZr7xljCs8j/txue+IMTysB4ANWkmQy9+2Kahk5JJT\n S9fcJdSO9W3kDHXLZ6J6g34q8Ze2pHHnb/E9w2rz74gFeO4q2FtFjIwbVvspZkQl1Q62QZygdlT\n d4mJnJZFGxA/c90gtMvaNBLXV0dDN+fGEpv+ANh4Up8el5Db9r/eiLoAvIY19v+G2+dWmtyBKMJ\n +/qXtatGXG/7bcVwW5xuORmC48ONHOu6ZeMii5Jo09HWr5/8SvzMpSNsOdu6xM=","X-Proofpoint-ORIG-GUID":"JHnvgY1GcBfyXxfaVNhnI9TpW9_MBqsj","Received-SPF":"pass client-ip=57.103.79.11;\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 SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=unavailable 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"}},{"id":3680604,"web_url":"http://patchwork.ozlabs.org/comment/3680604/","msgid":"<a8cb94f0-9970-40b8-912b-3ab81a5907f4@linaro.org>","list_archive_url":null,"date":"2026-04-22T12:46:28","subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"+Ani\n\nOn 21/4/26 22:57, Mohamed Mediouni wrote:\n> WHvResetPartition resets partition state, and is not supported on Windows 10.\n> \n> On Arm, it's supposed to be used for reboots. The prior location of the\n> WHvResetPartition call wasn't right, as other vCPUs might still have\n> been running, causing the call to fail.\n\nIs it very different from the conceptual step introduced in commit\n4003e5e65fe (\"hw/accel: add a per-accelerator callback to change\nVM accelerator handle\")?\n\n> \n> Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>\n> ---\n>   accel/accel-system.c       |  9 +++++++++\n>   accel/whpx/whpx-common.c   | 13 +++++++++++++\n>   include/accel/accel-ops.h  |  1 +\n>   include/qemu/accel.h       |  3 +++\n>   system/runstate.c          |  5 +++++\n>   target/arm/whpx/whpx-all.c |  2 --\n>   6 files changed, 31 insertions(+), 2 deletions(-)\n> \n> diff --git a/accel/accel-system.c b/accel/accel-system.c\n> index 150af05bf5..5352ccd937 100644\n> --- a/accel/accel-system.c\n> +++ b/accel/accel-system.c\n> @@ -75,6 +75,15 @@ void accel_pre_resume(MachineState *ms, bool step_pending)\n>       }\n>   }\n>   \n> +void accel_reset(MachineState *ms)\n> +{\n> +    AccelState *accel = ms->accelerator;\n> +    AccelClass *acc = ACCEL_GET_CLASS(accel);\n> +    if (acc->reset_vm) {\n> +        acc->reset_vm(accel);\n> +    }\n> +}\n> +\n>   /* initialize the arch-independent accel operation interfaces */\n>   void accel_init_ops_interfaces(AccelClass *ac)\n>   {\n> diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c\n> index 6fe44d5910..1f7b7d764d 100644\n> --- a/accel/whpx/whpx-common.c\n> +++ b/accel/whpx/whpx-common.c\n> @@ -205,6 +205,18 @@ static void do_whpx_cpu_synchronize_pre_loadvm(CPUState *cpu,\n>       cpu->vcpu_dirty = true;\n>   }\n>   \n> +/*\n> + * Partition support\n> + */\n> +\n> +static void whpx_partition_reset(AccelState* as)\n> +{\n> +    struct whpx_state *whpx = &whpx_global;\n> +    if (whp_dispatch.WHvResetPartition) {\n> +        whp_dispatch.WHvResetPartition(whpx->partition);\n> +    }\n> +}\n> +\n>   /*\n>    * CPU support.\n>    */\n> @@ -622,6 +634,7 @@ static void whpx_accel_class_init(ObjectClass *oc, const void *data)\n>       ac->name = \"WHPX\";\n>       ac->init_machine = whpx_accel_init;\n>       ac->pre_resume_vm = whpx_pre_resume_vm;\n> +    ac->reset_vm = whpx_partition_reset;\n>       ac->allowed = &whpx_allowed;\n>   \n>       object_class_property_add(oc, \"kernel-irqchip\", \"on|off|split\",\n> diff --git a/include/accel/accel-ops.h b/include/accel/accel-ops.h\n> index f46492e3fe..a1c9f3ae7b 100644\n> --- a/include/accel/accel-ops.h\n> +++ b/include/accel/accel-ops.h\n> @@ -33,6 +33,7 @@ struct AccelClass {\n>       /* system related hooks */\n>       void (*setup_post)(AccelState *as);\n>       void (*pre_resume_vm)(AccelState *as, bool step_pending);\n> +    void (*reset_vm)(AccelState *as);\n>       bool (*has_memory)(AccelState *accel, AddressSpace *as,\n>                          hwaddr start_addr, hwaddr size);\n>   \n> diff --git a/include/qemu/accel.h b/include/qemu/accel.h\n> index d3638c7bfd..0e12aea7db 100644\n> --- a/include/qemu/accel.h\n> +++ b/include/qemu/accel.h\n> @@ -54,6 +54,9 @@ void accel_setup_post(MachineState *ms);\n>   \n>   void accel_pre_resume(MachineState *ms, bool step_pending);\n>   \n> +/* Reset accelerator state. */\n> +void accel_reset(MachineState *ms);\n> +\n>   /**\n>    * accel_cpu_instance_init:\n>    * @cpu: The CPU that needs to do accel-specific object initializations.\n> diff --git a/system/runstate.c b/system/runstate.c\n> index 2d4e95a216..734e3c037c 100644\n> --- a/system/runstate.c\n> +++ b/system/runstate.c\n> @@ -564,6 +564,11 @@ void qemu_system_reset(ShutdownCause reason)\n>           qapi_event_send_reset(shutdown_caused_by_guest(reason), reason);\n>       }\n>   \n> +    if (current_machine) {\n> +        /* Tell the accelerator that the VM is being reset. */\n> +        accel_reset(current_machine);\n> +    }\n> +\n>       /*\n>        * Some boards use the machine reset callback to point CPUs to the firmware\n>        * entry point.  Assume that this is not the case for boards that support\n> diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c\n> index 4019a513aa..f345fea4fe 100644\n> --- a/target/arm/whpx/whpx-all.c\n> +++ b/target/arm/whpx/whpx-all.c\n> @@ -472,8 +472,6 @@ int whpx_vcpu_run(CPUState *cpu)\n>               if (arm_cpu->power_state != PSCI_OFF) {\n>                   whpx_psci_cpu_off(arm_cpu);\n>               }\n> -            /* Partition-wide reset, to reset state for reboots to succeed. */\n> -            whp_dispatch.WHvResetPartition(whpx->partition);\n>               bql_unlock();\n>               break;\n>           case WHvRunVpExitReasonNone:","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=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=N8TgEuXI;\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 4g0zXP0Jzbz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 22:47:49 +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 1wFWz5-0003gD-Mv; Wed, 22 Apr 2026 08:47:17 -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 <philmd@linaro.org>) id 1wFWyW-0003ZW-Cr\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 08:46:42 -0400","from mail-wr1-x435.google.com ([2a00:1450:4864:20::435])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wFWyS-0003uH-Nh\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 08:46:40 -0400","by mail-wr1-x435.google.com with SMTP id\n ffacd0b85a97d-43cf7683a28so3689698f8f.2\n for <qemu-devel@nongnu.org>; Wed, 22 Apr 2026 05:46:31 -0700 (PDT)","from [192.168.69.210] (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4cb11b4sm46545447f8f.2.2026.04.22.05.46.28\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Wed, 22 Apr 2026 05:46:29 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776861990; x=1777466790; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:content-language:from\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=pdIGFris0LcFliAfxkjkRyx8MOk+sTo4lkSE4XaOh8E=;\n b=N8TgEuXI6gw8tUYOhWPYhdP2EX8xQrm/akCXiVIXSWgtTCGbNBgz7540wdR6wtUZaf\n glqojxxOXjOzJoQrNGf6uakNH1XgNr6qLauvAmYAOtNQ373vZ+5MHNiUSPS5sElkfuUM\n CnljWnqI4PsRzNjZu3mQsiJX3XKHB5Wc7Ls9VvUZXyQdfA36b7Z4A3hxNObod69R61xS\n Cc/B9KVbrDhuLOioVofbK4B2qLfNAAsuovW7vV+sLrEEHffhcMVHfboZYv9IVMD5EYbp\n M4A5rhzgZ1ctRGbIET9+yCNQVrXEoRggd0kJ4ExIn9CGy5TNvKe28myyjDUXgb/qRg/J\n WOGA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776861990; x=1777466790;\n h=content-transfer-encoding:in-reply-to:content-language:from\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=pdIGFris0LcFliAfxkjkRyx8MOk+sTo4lkSE4XaOh8E=;\n b=TswbEwMG8qgkRb+B4FjAu9wspN5i5HjQA3J/7NADMPZcJ4G4nyziFTSwMOLyxyk6F2\n NebnL2OebcIyy4ZKakmdPcWwGlJ9VRuaExiD5NhSprr9UaQJzn7UAuYp01FyrhaQL2nS\n h3oZwlk1+Fa2B6GtvUWH2THoX/lFIWS9NuenoGEh6pPE0gloPvK28OsHJAb687Rok8TA\n yODkjVaFfnLkTkFMab0BTN4cr/Xex5heDhhuuqQ/PAQ0j331dg/90cK6rdUKnffChwGX\n OZExp3FPNWVVcytBvHZmjcfxJ6wSLWyiEqBeXgy1iAhzmxHHwsaN79AfUEnlFiSIv0Nj\n CcSw==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+WPgJUfsFBQKLU9q8UnaWRwhp12x1HzmFEf7PbeBlj+KSgocULzMD2kY2wuF2lJnv2fi9FOd6Q3Ckq@nongnu.org","X-Gm-Message-State":"AOJu0Yyh3d3RtGgy3n/OTY2M6viEWEESOGJnUms4tcquZupYRRxvV4be\n kDtGE4fQYcEUOkBLLfhQ1JgCTENLD41EhrRHRLFaAsdk6BxQ0KCsZZAc7mCfUOg4A/4=","X-Gm-Gg":"AeBDiesz4eu+TxyqcfA5+LD2ScASbj9n30OLl+bx+qUN73qKWOsDcsCOEIssqjg8Fur\n qnf2TIfjfXBvsOeEofkFVdZ8rumLL+MOLsJ7D1ssLJHdDY9L1qgegc8cgxv2JrweRnSpwlQPQ44\n 6TrIKw1S8ih4rQTX1NOQ7IGK6Kd+lAIImzYKwFBRWZX/iDPVIBLQRr7PGJTeIP1XXBR07aglfQZ\n rjkiqHsXdGl8tnEtRsdwMWtpZuK26RuQ9H4r+B5BLwktIy+GVySWqnreIFyg0sHlLNUoXHCmLWJ\n 3XHGKfFugIv9Yu5G4o97yoHwkQYtQkKBs8jXsv50j7VImOAJ8nTTtpjsdblrxbeSBAIUgFDminO\n 5DBXskDUDPGhvMQlgmz0r7vD9ZalTE/8kC/5wU5sgoVfUtEedkcbdn2omjGAGjkUIX8nzuTziK3\n 7Ij8IYHOxM13uXx6thEK1RtX79jMlA+uOi4Yi3dxFO/TOTdVBMYmb+chLykTR8fRGmfNWeH1a8e\n lQn","X-Received":"by 2002:a05:6000:2f8a:b0:43d:7a08:a5e6 with SMTP id\n ffacd0b85a97d-43fe3e073c9mr36804737f8f.29.1776861989671;\n Wed, 22 Apr 2026 05:46:29 -0700 (PDT)","Message-ID":"<a8cb94f0-9970-40b8-912b-3ab81a5907f4@linaro.org>","Date":"Wed, 22 Apr 2026 14:46:28 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","To":"Mohamed Mediouni <mohamed@unpredictable.fr>, qemu-devel@nongnu.org,\n Ani Sinha <anisinha@redhat.com>","Cc":"Richard Henderson <richard.henderson@linaro.org>,\n Pedro Barbuda <pbarbuda@microsoft.com>,\n Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>","References":"<20260421205749.55060-1-mohamed@unpredictable.fr>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Content-Language":"en-US","In-Reply-To":"<20260421205749.55060-1-mohamed@unpredictable.fr>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::435;\n envelope-from=philmd@linaro.org; helo=mail-wr1-x435.google.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_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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"}},{"id":3680619,"web_url":"http://patchwork.ozlabs.org/comment/3680619/","msgid":"<94C6AAAA-BF20-4202-9965-081192A392A2@unpredictable.fr>","list_archive_url":null,"date":"2026-04-22T13:08:14","subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","submitter":{"id":91318,"url":"http://patchwork.ozlabs.org/api/people/91318/","name":"Mohamed Mediouni","email":"mohamed@unpredictable.fr"},"content":"> On 22. Apr 2026, at 14:46, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:\n> \n> +Ani\n> \n> On 21/4/26 22:57, Mohamed Mediouni wrote:\n>> WHvResetPartition resets partition state, and is not supported on Windows 10.\n>> On Arm, it's supposed to be used for reboots. The prior location of the\n>> WHvResetPartition call wasn't right, as other vCPUs might still have\n>> been running, causing the call to fail.\n> \n> Is it very different from the conceptual step introduced in commit\n> 4003e5e65fe (\"hw/accel: add a per-accelerator callback to change\n> VM accelerator handle\")?\n\nHello,\n\nThe difference is that we reset the partition state but don’t have to \nre-do any of the memory mappings in the Hyper-V case (or otherwise tear\ndown the context).\n\nWe could fallback outright into the CoCo case which would work too.\n> \n>> Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>\n>> ---\n>>  accel/accel-system.c       |  9 +++++++++\n>>  accel/whpx/whpx-common.c   | 13 +++++++++++++\n>>  include/accel/accel-ops.h  |  1 +\n>>  include/qemu/accel.h       |  3 +++\n>>  system/runstate.c          |  5 +++++\n>>  target/arm/whpx/whpx-all.c |  2 --\n>>  6 files changed, 31 insertions(+), 2 deletions(-)\n>> diff --git a/accel/accel-system.c b/accel/accel-system.c\n>> index 150af05bf5..5352ccd937 100644\n>> --- a/accel/accel-system.c\n>> +++ b/accel/accel-system.c\n>> @@ -75,6 +75,15 @@ void accel_pre_resume(MachineState *ms, bool step_pending)\n>>      }\n>>  }\n>>  +void accel_reset(MachineState *ms)\n>> +{\n>> +    AccelState *accel = ms->accelerator;\n>> +    AccelClass *acc = ACCEL_GET_CLASS(accel);\n>> +    if (acc->reset_vm) {\n>> +        acc->reset_vm(accel);\n>> +    }\n>> +}\n>> +\n>>  /* initialize the arch-independent accel operation interfaces */\n>>  void accel_init_ops_interfaces(AccelClass *ac)\n>>  {\n>> diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c\n>> index 6fe44d5910..1f7b7d764d 100644\n>> --- a/accel/whpx/whpx-common.c\n>> +++ b/accel/whpx/whpx-common.c\n>> @@ -205,6 +205,18 @@ static void do_whpx_cpu_synchronize_pre_loadvm(CPUState *cpu,\n>>      cpu->vcpu_dirty = true;\n>>  }\n>>  +/*\n>> + * Partition support\n>> + */\n>> +\n>> +static void whpx_partition_reset(AccelState* as)\n>> +{\n>> +    struct whpx_state *whpx = &whpx_global;\n>> +    if (whp_dispatch.WHvResetPartition) {\n>> +        whp_dispatch.WHvResetPartition(whpx->partition);\n>> +    }\n>> +}\n>> +\n>>  /*\n>>   * CPU support.\n>>   */\n>> @@ -622,6 +634,7 @@ static void whpx_accel_class_init(ObjectClass *oc, const void *data)\n>>      ac->name = \"WHPX\";\n>>      ac->init_machine = whpx_accel_init;\n>>      ac->pre_resume_vm = whpx_pre_resume_vm;\n>> +    ac->reset_vm = whpx_partition_reset;\n>>      ac->allowed = &whpx_allowed;\n>>        object_class_property_add(oc, \"kernel-irqchip\", \"on|off|split\",\n>> diff --git a/include/accel/accel-ops.h b/include/accel/accel-ops.h\n>> index f46492e3fe..a1c9f3ae7b 100644\n>> --- a/include/accel/accel-ops.h\n>> +++ b/include/accel/accel-ops.h\n>> @@ -33,6 +33,7 @@ struct AccelClass {\n>>      /* system related hooks */\n>>      void (*setup_post)(AccelState *as);\n>>      void (*pre_resume_vm)(AccelState *as, bool step_pending);\n>> +    void (*reset_vm)(AccelState *as);\n>>      bool (*has_memory)(AccelState *accel, AddressSpace *as,\n>>                         hwaddr start_addr, hwaddr size);\n>>  diff --git a/include/qemu/accel.h b/include/qemu/accel.h\n>> index d3638c7bfd..0e12aea7db 100644\n>> --- a/include/qemu/accel.h\n>> +++ b/include/qemu/accel.h\n>> @@ -54,6 +54,9 @@ void accel_setup_post(MachineState *ms);\n>>    void accel_pre_resume(MachineState *ms, bool step_pending);\n>>  +/* Reset accelerator state. */\n>> +void accel_reset(MachineState *ms);\n>> +\n>>  /**\n>>   * accel_cpu_instance_init:\n>>   * @cpu: The CPU that needs to do accel-specific object initializations.\n>> diff --git a/system/runstate.c b/system/runstate.c\n>> index 2d4e95a216..734e3c037c 100644\n>> --- a/system/runstate.c\n>> +++ b/system/runstate.c\n>> @@ -564,6 +564,11 @@ void qemu_system_reset(ShutdownCause reason)\n>>          qapi_event_send_reset(shutdown_caused_by_guest(reason), reason);\n>>      }\n>>  +    if (current_machine) {\n>> +        /* Tell the accelerator that the VM is being reset. */\n>> +        accel_reset(current_machine);\n>> +    }\n>> +\n>>      /*\n>>       * Some boards use the machine reset callback to point CPUs to the firmware\n>>       * entry point.  Assume that this is not the case for boards that support\n>> diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c\n>> index 4019a513aa..f345fea4fe 100644\n>> --- a/target/arm/whpx/whpx-all.c\n>> +++ b/target/arm/whpx/whpx-all.c\n>> @@ -472,8 +472,6 @@ int whpx_vcpu_run(CPUState *cpu)\n>>              if (arm_cpu->power_state != PSCI_OFF) {\n>>                  whpx_psci_cpu_off(arm_cpu);\n>>              }\n>> -            /* Partition-wide reset, to reset state for reboots to succeed. */\n>> -            whp_dispatch.WHvResetPartition(whpx->partition);\n>>              bql_unlock();\n>>              break;\n>>          case WHvRunVpExitReasonNone:\n> \n>","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=K9mMOfHP;\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 4g100y2fggz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 23:09:04 +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 1wFXJk-0001Wf-KY; Wed, 22 Apr 2026 09:08:36 -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 <mohamed@unpredictable.fr>)\n id 1wFXJi-0001Tc-II\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 09:08:34 -0400","from p-west2-cluster3-host8-snip4-1.eps.apple.com ([57.103.69.54]\n helo=outbound.mr.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 1wFXJf-0003L3-Cy\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 09:08:34 -0400","from outbound.mr.icloud.com (unknown [127.0.0.2])\n by p00-icloudmta-asmtp-us-west-2a-60-percent-11 (Postfix) with ESMTPS id\n E7D191800217; Wed, 22 Apr 2026 13:08:28 +0000 (UTC)","from smtpclient.apple (unknown [17.57.152.38])\n by p00-icloudmta-asmtp-us-west-2a-60-percent-11 (Postfix) with ESMTPSA id\n 05D0018000AA; Wed, 22 Apr 2026 13:08:26 +0000 (UTC)"],"X-ICL-Out-Info":"\n HUtFAUMHWwJACUgBTUQeDx5WFlZNRAJCTQFIHV8DWRxBAUkdXw9LVxQEFVwFVgZXFHkNXR1FDlYZWgxSD1sOHBZLWFUJCgZdGFgVVgl3HlwASx1XBFQfUxJVHR0LRUtAEwRAEwVSB11NVg1HD1geXBQXFUFDXgheH0wcHQ5YBhIATQoONgZZBV4JVgNDBTYSFF1FRgNHGVcUUBtHDFUHV15fChMAXg8PTABMcFt2KnMxFDp1XwdGBkIJSh5UDl0HXQlAAlwOWXNDAEpyX3ceXABLHVcEVB9TElUdHQtFVRIEQAhWUFQeQQRWFWwJWAZTGVc=","Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr;\n s=sig1; t=1776863309; x=1779455309;\n bh=pjFEJ1eB1ud6FWWEeyw9vMEU4zhXWmqigPJjqKRWMKM=;\n h=Content-Type:Mime-Version:Subject:From:Date:Message-Id:To:x-icloud-hme;\n b=K9mMOfHP7555gC0gJvbr/3a8FQ79A58F6OPNoMlM+s6PhkfD7yqGfRouReG/kxlmqKiG6EFEVKEUzlsQOWlp0J/MGzllTJtU+OP8sBKvt8YUcPB/ip3JR68gxmUMUqdd7MOSWj5lAEk3ziC0IB8DqWAhz/IcM0er3g7tK3apgSJVy00cMQhMXvMWDVcjHox+8PYA69A834GtIJc1NWTeBA3oP+WEL6TfZNr75UxjQw2vNGzu4CkIKybWql9hfi9SgMrgJTTK0wBcMtmobYjBZIzH+FFRt6BR1oWpmE096hCFSxOYuRwfNKQxVIvFWq2vZrkHur0Q9CH/6CSwmK302w==","mail-alias-created-date":"1752046281608","Content-Type":"text/plain;\n\tcharset=utf-8","Mime-Version":"1.0 (Mac OS X Mail 16.0 \\(3864.500.181\\))","Subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","From":"Mohamed Mediouni <mohamed@unpredictable.fr>","In-Reply-To":"<a8cb94f0-9970-40b8-912b-3ab81a5907f4@linaro.org>","Date":"Wed, 22 Apr 2026 15:08:14 +0200","Cc":"qemu-devel@nongnu.org, Ani Sinha <anisinha@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Pedro Barbuda <pbarbuda@microsoft.com>,\n Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>","Content-Transfer-Encoding":"quoted-printable","Message-Id":"<94C6AAAA-BF20-4202-9965-081192A392A2@unpredictable.fr>","References":"<20260421205749.55060-1-mohamed@unpredictable.fr>\n <a8cb94f0-9970-40b8-912b-3ab81a5907f4@linaro.org>","To":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","X-Mailer":"Apple Mail (2.3864.500.181)","X-Proofpoint-ORIG-GUID":"uC-xzI9OiKuQxiX_7nUvM98VUwu4dGTi","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDEyNyBTYWx0ZWRfX804div8TrNVJ\n V5IMrh8BRrk4MUmkNWP0mSKShQPOV31lUQ37nj+FiWAvaFZIm5W4bU+qUrVBjt0FNatAmPWQlvn\n EQ1CYLx7REzyqLx+8OWno1hRZIUOVhYNBpzTNXivStkAWDo1JDWsqCcfLHdJD0YnTm3BVpdkiXI\n CFgZOZ+gEKRsMCKxCqu/65LizoMxKOHWqiiuNUpua4JYudK4iVsxs5t6U+MkKLmw4EkeHIIfwEm\n 7fEhHhLg+iNv0CxYn33j9K+zz4PTvOO6acdPf1LPgQch0aaSxB34FyMLeooex7Nkh88hXWH0NGu\n 2z+ftNEJ4N7tFIuhL9q5Jcg/iOx1csvUnkQcW4AVxD1YLXNbz9AluUUsjo/wgY=","X-Authority-Info-Out":"v=2.4 cv=aNv9aL9m c=1 sm=1 tr=0 ts=69e8c84d\n cx=c_apl:c_pps:t_out a=9OgfyREA4BUYbbCgc0Y0oA==:117\n a=9OgfyREA4BUYbbCgc0Y0oA==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=_JJPVulPvL2OzXI3qN8A:9\n a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22","X-Proofpoint-GUID":"uC-xzI9OiKuQxiX_7nUvM98VUwu4dGTi","Received-SPF":"pass client-ip=57.103.69.54;\n envelope-from=mohamed@unpredictable.fr; helo=outbound.mr.icloud.com","X-Spam_score_int":"-27","X-Spam_score":"-2.8","X-Spam_bar":"--","X-Spam_report":"(-2.8 / 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_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=unavailable 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"}},{"id":3680631,"web_url":"http://patchwork.ozlabs.org/comment/3680631/","msgid":"<351348CF-9E88-4DDE-AA19-2628D7A288A6@unpredictable.fr>","list_archive_url":null,"date":"2026-04-22T13:25:24","subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","submitter":{"id":91318,"url":"http://patchwork.ozlabs.org/api/people/91318/","name":"Mohamed Mediouni","email":"mohamed@unpredictable.fr"},"content":"> On 22. Apr 2026, at 15:08, Mohamed Mediouni <mohamed@unpredictable.fr> wrote:\n> \n> \n> \n>> On 22. Apr 2026, at 14:46, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:\n>> \n>> +Ani\n>> \n>> On 21/4/26 22:57, Mohamed Mediouni wrote:\n>>> WHvResetPartition resets partition state, and is not supported on Windows 10.\n>>> On Arm, it's supposed to be used for reboots. The prior location of the\n>>> WHvResetPartition call wasn't right, as other vCPUs might still have\n>>> been running, causing the call to fail.\n>> \n>> Is it very different from the conceptual step introduced in commit\n>> 4003e5e65fe (\"hw/accel: add a per-accelerator callback to change\n>> VM accelerator handle\")?\n> \n> Hello,\n> \n> The difference is that we reset the partition state but don’t have to \n> re-do any of the memory mappings in the Hyper-V case (or otherwise tear\n> down the context).\n> \n> We could fallback outright into the CoCo case which would work too.\n\nMore context:\n\nAnother potential option for the arm64 functionality issues on reboots \nis to poke the proper activity registers for PSCI state and skip \nWHvResetPartition() outright (we might need to do save/restore those\nregisters later on for proper anyhow for migration).\n\nBut Microsoft told me that I’m expected to call WHvResetPartition().","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=HlKUWNj4;\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 4g10P14HSFz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 23:26:29 +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 1wFXaO-00062H-WC; Wed, 22 Apr 2026 09:25:49 -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 <mohamed@unpredictable.fr>)\n id 1wFXaN-00061p-MB\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 09:25:47 -0400","from p-east2-cluster5-host5-snip4-10.eps.apple.com ([57.103.79.93]\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 1wFXaJ-0007V6-Qz\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 09:25:47 -0400","from outbound.st.icloud.com (unknown [127.0.0.2])\n by p00-icloudmta-asmtp-us-east-1a-100-percent-4 (Postfix) with ESMTPS id\n BF47618008F9; Wed, 22 Apr 2026 13:25:38 +0000 (UTC)","from smtpclient.apple (unknown [17.42.251.67])\n by p00-icloudmta-asmtp-us-east-1a-100-percent-4 (Postfix) with ESMTPSA id\n B074818008E6; Wed, 22 Apr 2026 13:25:36 +0000 (UTC)"],"X-ICL-Out-Info":"\n HUtFAUMHWwJACUgBTUQeDx5WFlZNRAJCTQFIHV8DWRxBAUkdXw9LVxQEFVwFVgZXFHkNXR1FDlYZWgxSD1sOHBZLWFUJCgZdGFgVVgl3HlwASx1XBFQfUxJVHR0LRUtAEwRAEwVSB11NVg1HD1geXBQXC0dDXgheH0wcHQ5YBhIATQoONgZZBV4JVgNDBTYSFF1FRgNHGVcUUBtHDFUHV15fChMAXg8PTApNAl4DU3E2FEF2VQ9GBjR9PR4sdloLXQtOAVVzXHNCAUByW3ceXABLHVcEVB9TElUdHQtFVRIEQAhWUFQeQQRWFWwJWAZTGVc=","Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr;\n s=sig1; t=1776864341; x=1779456341;\n bh=DwCwwab7tv0CYRhwvb/eZwUgn9C1Kl+QfpKBXNKsDFs=;\n h=Content-Type:Mime-Version:Subject:From:Date:Message-Id:To:x-icloud-hme;\n b=HlKUWNj48nY5pl35Y+UKB+8G1ZE9Ega/nuEVqUxIFFxHPWWcYFPlxHl6kzW1sah+YcjaQEE0Vt2UhDOds/G7SmEughhxIAW6yT23hn7FwBjrB905unq+MENx8GSn1z7JeZS8MEq0adUMtLJZj6KceuU1Z6yIZIVrVsdKw5zzmrrcvTbcFTbM6RbZpYxD/ntlglZj94k6/Ue4UVkON2gWHsuxxoTnsQclztvwz835ggvTOvi1aSjruwX8WIl+t2m2qWnMK+5raRdcauqbEzKHhggIzRt/uFkr565OJuYnh4l93gfU95ESHugHtnuZGLaTHKfnJz1Wpr+LKI1lO8YGHw==","mail-alias-created-date":"1752046281608","Content-Type":"text/plain;\n\tcharset=utf-8","Mime-Version":"1.0 (Mac OS X Mail 16.0 \\(3864.500.181\\))","Subject":"Re: [PATCH v2] whpx: i386, arm: do partition reset on boot CPU reset","From":"Mohamed Mediouni <mohamed@unpredictable.fr>","In-Reply-To":"<94C6AAAA-BF20-4202-9965-081192A392A2@unpredictable.fr>","Date":"Wed, 22 Apr 2026 15:25:24 +0200","Cc":"qemu-devel@nongnu.org, Ani Sinha <anisinha@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n Pedro Barbuda <pbarbuda@microsoft.com>,\n Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>","Content-Transfer-Encoding":"quoted-printable","Message-Id":"<351348CF-9E88-4DDE-AA19-2628D7A288A6@unpredictable.fr>","References":"<20260421205749.55060-1-mohamed@unpredictable.fr>\n <a8cb94f0-9970-40b8-912b-3ab81a5907f4@linaro.org>\n <94C6AAAA-BF20-4202-9965-081192A392A2@unpredictable.fr>","To":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","X-Mailer":"Apple Mail (2.3864.500.181)","X-Authority-Info-Out":"v=2.4 cv=b+m/I9Gx c=1 sm=1 tr=0 ts=69e8cc53\n cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117\n a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=rO6M6RRrFnvplcZrBd8A:9\n a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22","X-Proofpoint-ORIG-GUID":"UepB5Nvh3Z8GCk7NZt8IjIjVnwr_ny7I","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDEyOSBTYWx0ZWRfX2X29vwngeI3K\n ZzQrhiR1cy8Dt6HNkTLNapSklbUIAG6ChKqOZzgpkwHJl+5qjN2730287x1ItEGvDru6u0PXBU+\n wt84Q2QVi1fSDPFeIMjt8LTCl1B7Kdh6lBgZwTLyMT1tNlqll4Xu1+rAd4tcjbXK+VCKuK0kbAg\n hr1799G6sZLNAYR5WRDxBbCizG7d/l6ozHqFF/KL6RWpQQsnjMxJw0A3TkBWVnyrGr2ULZdn/7U\n vlZ6ndEx/1brn2B/YSOmCtO/Z+KTHzkpyDggm/rfK0OhIKOybjgwJ4+/YxYWuNbyqLy1ZHuc/3T\n 0E3isF2GjPfwAZma2u5ilFQSNhQCG1ieof8DEJN3EKAHeJogE+UsZkOBjRMhB8=","X-Proofpoint-GUID":"UepB5Nvh3Z8GCk7NZt8IjIjVnwr_ny7I","Received-SPF":"pass client-ip=57.103.79.93;\n envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com","X-Spam_score_int":"-27","X-Spam_score":"-2.8","X-Spam_bar":"--","X-Spam_report":"(-2.8 / 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_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=unavailable 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"}}]