From: Magnus Kulke <magnuskulke@linux.microsoft.com>
To: "Doru Blânzeanu" <dblanzeanu@linux.microsoft.com>
Cc: qemu-devel@nongnu.org, Wei Liu <wei.liu@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Zhao Liu <zhao1.liu@intel.com>
Subject: Re: [PATCH 6/6] target/i386/mshv: use the register page to set registers
Date: Wed, 29 Apr 2026 13:38:21 +0200 [thread overview]
Message-ID: <afHtrYCfOwAKoL+B@example.com> (raw)
In-Reply-To: <20260428135053.251200-7-dblanzeanu@linux.microsoft.com>
On Tue, Apr 28, 2026 at 04:50:53PM +0300, Doru Blânzeanu wrote:
> Update mshv_store_regs to use the register page when it is mmapped and
> valid to set registers.
> Otherwise use the ioctls to set the registers.
>
> Signed-off-by: Doru Blânzeanu <dblanzeanu@linux.microsoft.com>
> ---
> target/i386/mshv/mshv-cpu.c | 45 +++++++++++++++++++++++++++++++++----
> 1 file changed, 41 insertions(+), 4 deletions(-)
>
> diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c
> index 7949493e97..6bb3e6d4a9 100644
> --- a/target/i386/mshv/mshv-cpu.c
> +++ b/target/i386/mshv/mshv-cpu.c
> @@ -294,14 +294,51 @@ static int set_standard_regs(const CPUState *cpu)
> return 0;
> }
>
> +static void mshv_set_standard_regs_vp_page(CPUState *cpu)
> +{
> + X86CPU *x86cpu = X86_CPU(cpu);
> + CPUX86State *env = &x86cpu->env;
> +
> + env->regs_page->rax = env->regs[R_EAX];
> + env->regs_page->rbx = env->regs[R_EBX];
> + env->regs_page->rcx = env->regs[R_ECX];
> + env->regs_page->rdx = env->regs[R_EDX];
> + env->regs_page->rsi = env->regs[R_ESI];
> + env->regs_page->rdi = env->regs[R_EDI];
> + env->regs_page->rsp = env->regs[R_ESP];
> + env->regs_page->rbp = env->regs[R_EBP];
> + env->regs_page->r8 = env->regs[R_R8];
> + env->regs_page->r9 = env->regs[R_R9];
> + env->regs_page->r10 = env->regs[R_R10];
> + env->regs_page->r11 = env->regs[R_R11];
> + env->regs_page->r12 = env->regs[R_R12];
> + env->regs_page->r13 = env->regs[R_R13];
> + env->regs_page->r14 = env->regs[R_R14];
> + env->regs_page->r15 = env->regs[R_R15];
> + env->regs_page->rip = env->eip;
> + lflags_to_rflags(env);
> + env->regs_page->rflags = env->eflags;
> +
> + env->regs_page->dirty |= (1u << HV_X64_REGISTER_CLASS_GENERAL)
> + | (1u << HV_X64_REGISTER_CLASS_IP)
> + | (1u << HV_X64_REGISTER_CLASS_FLAGS);
> +}
> +
> int mshv_store_regs(CPUState *cpu)
> {
> + X86CPU *x86cpu = X86_CPU(cpu);
> + CPUX86State *env = &x86cpu->env;
> int ret;
>
> - ret = set_standard_regs(cpu);
> - if (ret < 0) {
> - error_report("Failed to store standard registers");
> - return -1;
> + /* Use register vp page to optimize registers access */
> + if (env->regs_page && env->regs_page->isvalid != 0) {
> + mshv_set_standard_regs_vp_page(cpu);
> + } else {
> + ret = set_standard_regs(cpu);
> + if (ret < 0) {
> + error_report("Failed to store standard registers");
> + return -1;
> + }
> }
I think for consistency sake it would be better to also write back
sregs, but this is reworked in the migration patch series anyway, so we
can leave it as is here.
>
> return 0;
> --
> 2.53.0
Reviewed-By: Magnus Kulke <magnuskulke@linux.microsoft.com>
next prev parent reply other threads:[~2026-04-29 11:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 13:50 [PATCH 0/6] target/i386/mshv: use hv_vp_register_page for fast register access Doru Blânzeanu
2026-04-28 13:50 ` [PATCH 1/6] target/i386/mshv: remove duplicate function for reading vcpu registers Doru Blânzeanu
2026-04-29 10:19 ` Magnus Kulke
2026-04-28 13:50 ` [PATCH 2/6] accel/mshv: move vcpu arch specific initialization after vcpu creation Doru Blânzeanu
2026-04-29 10:21 ` Magnus Kulke
2026-04-28 13:50 ` [PATCH 3/6] include/hw/hyperv: add hv_vp_register_page struct definition Doru Blânzeanu
2026-04-28 17:44 ` Mohamed Mediouni
2026-04-29 10:28 ` Magnus Kulke
2026-04-28 13:50 ` [PATCH 4/6] target/i386/mshv: hv_vp_register_page setup for the vcpu Doru Blânzeanu
2026-04-28 17:49 ` Mohamed Mediouni
2026-04-29 11:21 ` Magnus Kulke
2026-04-28 13:50 ` [PATCH 5/6] target/i386/mshv: use the register page to get registers Doru Blânzeanu
2026-04-28 18:04 ` Mohamed Mediouni
2026-04-29 11:31 ` Magnus Kulke
2026-04-28 13:50 ` [PATCH 6/6] target/i386/mshv: use the register page to set registers Doru Blânzeanu
2026-04-28 18:05 ` Mohamed Mediouni
2026-04-29 11:38 ` Magnus Kulke [this message]
2026-04-28 18:36 ` [PATCH 0/6] target/i386/mshv: use hv_vp_register_page for fast register access Mohamed Mediouni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=afHtrYCfOwAKoL+B@example.com \
--to=magnuskulke@linux.microsoft.com \
--cc=dblanzeanu@linux.microsoft.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=wei.liu@kernel.org \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.