On Mon, 2017-08-07 at 14:18 +0200, Paolo Bonzini wrote: > On 05/08/2017 10:00, Andrei Vlad LUTAS wrote: > > Of course, just how Paolo suggested, we can place finer-grained > > intercepts (such as execute-protect a page in order to ensure no VCPU > > runs code from it while we modify it), but this is a more complicated > > solution and we've never had to think for something other than simply > > pausing the VCPUs, since that was always available so far. > > > > Hope this piece of info helps. > > We can certainly add a "pause the VCPU with a given id" command. The > command reports its success with an event, and replying to the event > restarts the VCPU. If the VCPU is currently in userspace, the event > would be delayed until the next time KVM is re-entered, but this should > not be an issue in general. The introspector can operate as if the VCPU > was paused. I have a plan to modify our application a bit and see how often we query a vCPU outside an event handler. If it's seldom enough, a command that pauses the vCPU and triggers an event should be just fine. > "Pause all VCPUs and stop all DMA" would definitely be a layering > violation, so it cannot be added. > > "Pause all VCPUs" is basically a shortcut for many "pause the VCPU with > a given id" commands. I lean towards omitting it. The case where the introspector wants to scan the guest memory needs a KVMI_PAUSE_VM, which as discussed in a previous email, can be the actual qemu 'pause' command. However, we would like to limit the communication channels we have with the host and not use qmp (or libvirt/etc. if qmp is not exposed). Instead, have a command that triggers a KVM_RUN exit to qemu which in turn will call the underlying pause function used by qmp. Would that be OK with you? > However, now that I'm thinking of it, we need a new event for "new VCPU > created". When the event is enabled, newly-created VCPUs should be in > paused mode. I assume you are thinking about vCPU hotplug here. If so, yes, an event that gives the introspector the chance to update its internal bookkeeping would be useful. -- Mihai Donțu