All of lore.kernel.org
 help / color / mirror / Atom feed
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 4/6] target/i386/mshv: hv_vp_register_page setup for the vcpu
Date: Wed, 29 Apr 2026 13:21:24 +0200	[thread overview]
Message-ID: <afHptC4d/vEs7sQv@example.com> (raw)
In-Reply-To: <20260428135053.251200-5-dblanzeanu@linux.microsoft.com>

On Tue, Apr 28, 2026 at 04:50:51PM +0300, Doru Blânzeanu wrote:
> When the vcpu is created, call mmap to configure access to the register page.
> 
> Update CPUArchState to store a pointer to the mmapped hv_vp_register_page.
> 
> Signed-off-by: Doru Blânzeanu <dblanzeanu@linux.microsoft.com>
> ---
>  target/i386/cpu.h           |  3 +++
>  target/i386/mshv/mshv-cpu.c | 18 ++++++++++++++++++
>  2 files changed, 21 insertions(+)
> 
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index 0b539155c4..0108e2157b 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -2016,6 +2016,9 @@ typedef struct CPUArchState {
>      uint64_t msr_bndcfgs;
>      uint64_t efer;
>  
> +    /* Shared register page */
> +    struct hv_vp_register_page *regs_page;
> +

We probably want to put this behind a compile-time guard:

#if defined(CONFIG_MSHV)
...
#endif

>      /* Beginning of state preserved by INIT (dummy marker).  */
>      struct {} start_init_save;
>  
> diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c
> index 9defd05db6..42b6fb1912 100644
> --- a/target/i386/mshv/mshv-cpu.c
> +++ b/target/i386/mshv/mshv-cpu.c
> @@ -1595,6 +1595,19 @@ void mshv_arch_init_vcpu(CPUState *cpu)
>                        + sizeof(hv_input_get_vp_registers)
>                        > HV_HYP_PAGE_SIZE));
>  
> +
> +    /* mmap the registers page */
> +    void *rp = mmap(NULL, page, PROT_READ | PROT_WRITE,
> +                    MAP_SHARED, mshv_vcpufd(cpu),
> +                    MSHV_VP_MMAP_OFFSET_REGISTERS * page);

nit: convention is to declare variables at the top of a fn:

int cpu_fd = mshv_vcpufd(cpu);
void *regs_page;
...
regs_page = mmap(..., cpu_fd, ...);

> +    if (rp == MAP_FAILED) {
> +        warn_report("register page mmap failed, falling back to hypercalls: %s",

We're not falling back at this specific place. so it probably makes
sense to just say register page mmap failed and leave it at that here.

> +                    strerror(errno));
> +        env->regs_page = NULL;
> +    } else {
> +        env->regs_page = (struct hv_vp_register_page *) rp;
> +    }
> +
>      state->hvcall_args.base = mem;
>      state->hvcall_args.input_page = mem;
>      state->hvcall_args.output_page = (uint8_t *)mem + page;
> @@ -1608,6 +1621,11 @@ void mshv_arch_destroy_vcpu(CPUState *cpu)
>      CPUX86State *env = &x86_cpu->env;
>      AccelCPUState *state = cpu->accel;
>  
> +    /* Unmap the register page */
> +    if (env->regs_page) {
> +        munmap(env->regs_page, HV_HYP_PAGE_SIZE);
> +        env->regs_page = NULL;
> +    }
>      g_free(state->hvcall_args.base);
>      state->hvcall_args = (MshvHvCallArgs){0};
>      g_clear_pointer(&env->emu_mmio_buf, g_free);
> -- 
> 2.53.0


  parent reply	other threads:[~2026-04-29 11:22 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 [this message]
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
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=afHptC4d/vEs7sQv@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.