From: Yacine <y_hebbal@esi.dz>
To: kvm@vger.kernel.org
Subject: Difference between vcpu_load and kvm_sched_in ?
Date: Tue, 20 Oct 2015 09:57:51 +0000 (UTC) [thread overview]
Message-ID: <loom.20151020T115351-372@post.gmane.org> (raw)
Hi, I'm a student working on virtual machine introspection.
I'm trying to implement an application on top of KVM in which I need to trap
writes to CR3 (host with 8 cores and guest with one vcpu).
When I do this when handling a VM EXIT using:
vmcs_set_bits(CPU_BASED_VM_EXEC_CONTROL, CPU_BASED_CR3_LOAD_EXITING), it
works correctly and I can see the traps in my log file.
Now when I do the same thing after receiving a command from Qemu (command is
handled in kvm_vm_ioctl by calling a function I added to kvm_x86_ops
vmx_x86_ops) I get a vmwrite error. I found out that the problem is because
the logical processor on the host that is handling the ioctl command is not
the same that is running the VM and holding its state; so I must do the
vmwrite on the one executing the VM
To change the logical cpu executing the VM, I tried this:
vcpu_load; start cr3 trapping; vcpu_put
it worked correctly (in my logs I see that vcpu.cpu become equal to "cpu =
raw_smp_processor_id();") but the VM blocks for a lot of time due to mutex
in vcpu_load (up to serveral seconds and sometimes minutes !)
I replaced vcpu_load with kvm_sched_in, now everything works perfectly and
the VM doesn't block at all (logs here: http://pastebin.com/h5XNNMcb).
So, what I want to know is: what is the difference between vcpu_load and
kvm_sched_in ? both of this functions call kvm_arch_vcpu_loadbut the latter
one does it without doing a mutex
Is there a problem in using kvm_sched_in instead of vcpu_load for my use case ?
next reply other threads:[~2015-10-20 10:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-20 9:57 Yacine [this message]
2015-10-20 15:44 ` Difference between vcpu_load and kvm_sched_in ? Paolo Bonzini
2015-10-20 22:57 ` Wanpeng Li
2015-10-21 6:46 ` Paolo Bonzini
2015-10-21 10:20 ` Yacine HEBBAL
2015-10-22 7:33 ` Wanpeng Li
[not found] ` <CACEoar52w8qU2bbSTGKJdq++jz3gppLQ0N-xqsS-pnYMNnaK3Q@mail.gmail.com>
2015-10-21 10:25 ` Paolo Bonzini
2015-10-21 17:21 ` Yacine HEBBAL
2015-10-22 9:37 ` Paolo Bonzini
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=loom.20151020T115351-372@post.gmane.org \
--to=y_hebbal@esi.dz \
--cc=kvm@vger.kernel.org \
/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.