From: Roman Bolshakov <r.bolshakov@yadro.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
qemu-devel@nongnu.org, Cameron Esfahani <dirty@apple.com>,
Claudio Fontana <cfontana@suse.de>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH v2 4/9] i386: hvf: Implement CPU kick
Date: Tue, 30 Jun 2020 18:50:59 +0300 [thread overview]
Message-ID: <20200630155059.GA78555@SPB-NB-133.local> (raw)
In-Reply-To: <d75c6bd1-b588-796b-e238-21ff41fce60d@redhat.com>
On Tue, Jun 30, 2020 at 02:33:42PM +0200, Paolo Bonzini wrote:
> On 30/06/20 12:28, Roman Bolshakov wrote:
> > @@ -966,6 +964,20 @@ int hvf_vcpu_exec(CPUState *cpu)
> > return ret;
> > }
> >
> > +void hvf_vcpu_kick(CPUState *cpu)
> > +{
> > + X86CPU *x86_cpu = X86_CPU(cpu);
> > + CPUX86State *env = &x86_cpu->env;
> > + hv_return_t err;
> > +
> > + atomic_set(&env->hvf_deadline, 0);
> > + err = hv_vcpu_interrupt(&cpu->hvf_fd, 1);
> > + if (err) {
> > + fprintf(stderr, "qemu:%s error %#x\n", __func__, err);
> > + exit(1);
> > + }
>
> Can a signal interrupt hv_vcpu_run? If so you actually don't need
> hv_vcpu_interrupt at all.
Existing signal masking and SIG_IPI didn't work IIRC when I tried to add
a primitive version of gdbstub support.
> You can also require the preemption time, all
> processor that support HVF have it, but never set it by default. The
> deadline can be left at 0 all the time; instead, you toggle the bit in
> the pin-based controls. In the signal handler you do:
>
> if (atomic_xchg(&env->hvf_in_guest, false)) {
> wvmcs(cpu->hvf_fd, VMCS_PIN_BASED_CTLS,
> rvmcs(cpu->hvf_fd, VMCS_PIN_BASED_CTLS)
> | VMCS_PIN_BASED_CTLS_VMX_PREEMPT_TIMER);
> }
>
> In the main loop you do:
>
> atomic_set(&env->hvf_guest_mode, true);
> smp_mb();
> hv_vcpu_run(...);
> atomic_set(&env->hvf_guest_mode, false);
>
> and in the preemption timer vmexit handler:
>
> wvmcs(cpu->hvf_fd, VMCS_PIN_BASED_CTLS,
> rvmcs(cpu->hvf_fd, VMCS_PIN_BASED_CTLS)
> & ~VMCS_PIN_BASED_CTLS_VMX_PREEMPT_TIMER);
>
Ok, I'll look into that. Thanks for the advices!
-Roman
next prev parent reply other threads:[~2020-06-30 15:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-30 10:28 [PATCH v2 0/9] Improve synchronization between QEMU and HVF Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 1/9] i386: hvf: Set env->eip in macvm_set_rip() Roman Bolshakov
2020-06-30 12:35 ` Paolo Bonzini
2020-06-30 10:28 ` [PATCH v2 2/9] i386: hvf: Move synchronize functions to sysemu Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 3/9] i386: hvf: Add hvf_cpu_synchronize_pre_loadvm() Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 4/9] i386: hvf: Implement CPU kick Roman Bolshakov
2020-06-30 12:33 ` Paolo Bonzini
2020-06-30 15:50 ` Roman Bolshakov [this message]
2020-06-30 16:04 ` Paolo Bonzini
2020-07-01 18:36 ` Roman Bolshakov
2020-07-01 18:50 ` Paolo Bonzini
2020-06-30 10:28 ` [PATCH v2 5/9] i386: hvf: Make long mode enter and exit clearer Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 6/9] i386: hvf: Move Guest LMA reset to macvm_set_cr0() Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 7/9] i386: hvf: Don't duplicate register reset Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 8/9] i386: hvf: Clean up synchronize functions Roman Bolshakov
2020-06-30 10:28 ` [PATCH v2 9/9] MAINTAINERS: Add Cameron as HVF co-maintainer Roman Bolshakov
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=20200630155059.GA78555@SPB-NB-133.local \
--to=r.bolshakov@yadro.com \
--cc=cfontana@suse.de \
--cc=dirty@apple.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.