Re: re-writing on powerpc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 13.12.2010, at 20:03, Scott Wood wrote:

> On Mon, 13 Dec 2010 10:45:30 +0200
> Avi Kivity <avi@xxxxxxxxxx> wrote:
> 
>> On 12/13/2010 10:42 AM, Alexander Graf wrote:
>>> Yeah, let me rephrase my exact memory on this:
>>> 
>>> If the HV just rewrites instructions in the guest, it behaves different from real hw which is bad. It could potentially break checksumming inside the guest.
>>> 
>>> If, however, the guest sends a hypercall to the HV saying "please patch me" or there's a flag on creation time to enable patching, I have a hard time finding a reason to do it inside the guest context.
>>> 
>>> Back when I implemented this, we did however have discussions on exactly that distinction between patching in host or guest space and for some reason I remember that you and Hollis figured that guest patching is superior. I just really can't remember why and couldn't find traces of this in my inbox either :).
>> 
>> The interface is a lot simpler.  The guest decides what to patch and 
>> where to jump.  A "please patch me" flag needs a ton of documentation on 
>> what patch means and what the constraints on the guest environment are.
>> 
> 
> The constraints need to be documented, but I think "a ton" is a bit of
> an exaggeration -- and having the guest do the patching itself means
> that the structure of the shared page must become stable ABI.  Having
> the hypervisor do the bulk of the work also makes it easier to add
> paravirt to new OSes (in the embedded world, often the reason someone
> wants to do virtualization is to run some custom OS alongside Linux).
> 
> OTOH, having the guest do it makes it easier to do more complex
> rewriting such as mtmsr[1].  And the fact that we've already got an
> implementation makes for a compelling tie-breaker.
> 
> -Scott
> 
> [1] Speaking of which, what happens when an interrupt is raised in the
> middle of a paravirt critical section?  KVM will hold off the
> interrupt delivery if it sees the critical flag set, but when will it
> deliver the postponed interrupt?  Seems like it will wait until the next
> time an exit happens for some other reason.

mtmsr with IF=1 checks for pending interrupts and enables them with a real mtmsr then which again checks interrupts in vm entry, so it immediately gets injected :).


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM Development]     [KVM ARM]     [KVM ia64]     [Linux Virtualization]     [Linux USB Devel]     [Linux Video]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux