On 01.08.2010, at 16:02, Avi Kivity wrote:
> On 07/29/2010 03:47 PM, Alexander Graf wrote:
>> On PPC we run PR=0 (kernel mode) code in PR=1 (user mode) and don't use the
>> hypervisor extensions.
>>
>> While that is all great to show that virtualization is possible, there are
>> quite some cases where the emulation overhead of privileged instructions is
>> killing performance.
>>
>> This patchset tackles exactly that issue. It introduces a paravirtual
>> framework
>> using which KVM and Linux share a page to exchange register state with. That
>> way we don't have to switch to the hypervisor just to change a value of a
>> privileged register.
>>
>> To prove my point, I ran the same test I did for the MMU optimizations
>> against
>> the PV framework. Here are the results:
>>
>> [without]
>>
>> debian-powerpc:~# time for i in {1..1000}; do /bin/echo hello> /dev/null;
>> done
>>
>> real 0m14.659s
>> user 0m8.967s
>> sys 0m5.688s
>>
>> [with]
>>
>> debian-powerpc:~# time for i in {1..1000}; do /bin/echo hello> /dev/null;
>> done
>>
>> real 0m7.557s
>> user 0m4.121s
>> sys 0m3.426s
>>
>>
>> So this is a significant performance improvement! I'm quite happy how fast
>> this
>> whole thing becomes :)
>>
>> I tried to take all comments I've heard from people so far about such a PV
>> framework into account. In case you told me something before that is a no-go
>> and I still did it, please just tell me again.
>>
>> To make use of this whole thing you also need patches to qemu and openbios. I
>> have them in my queue, but want to see this set upstream first before I start
>> sending patches to the other projects.
>>
>> Now go and have fun with fast VMs on PPC! Get yourself a G5 on ebay and start
>> experiencing the power yourself. - heh
>>
>> v1 -> v2:
>>
>> - change hypervisor calls to use r0 and r3
>> - make crit detection only trigger in supervisor mode
>> - RMO -> PAM
>> - introduce kvm_patch_ins
>> - only flush icache when patching
>> - introduce kvm_patch_ins_b
>> - update documentation
>>
>> v2 -> v3:
>>
>> - use pPAPR conventions for hypercall interface
>> - only use r0 as magic sc number
>> - remove PVR detection
>> - remove BookE shared page mapping support
>> - combine book3s-64 and -32 magic page ra override
>> - add self-test check if the mapping works to guest code
>> - add safety check for relocatable kernels
>>
>
> Looks reasonable. Since it's fair to say I understand nothing about powerpc,
> I'd like someone who does to review it and ack, please, with an emphasis on
> the interfaces.
Sounds good. Preferably someone with access to the ePAPR spec :).
Alex
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html