Amit Shah wrote:
> On Wednesday 19 December 2007 17:48:14 Zhang, Xiantao wrote:
>> Hi, all
>> As you know, in the past two months, commnity worked out cross-arch
>> framework support for kvm.  Thank you all for your contributions !
>> Especially for Avi's quick response in mailing list! !
>> Currently, following userspace suppport, we have completed code
>> rebase for kvm/ia64 support according to new framework.  With its
>> support, we can boot up windows/ Linux guests with open guest
>> firmware, and get reasonable performance compared with other
>> virtualization projects.  The current status are as following:
>> 1. Both UP Linux & Windows  are OK, but short of SMP guest support.
>> (see attached screen snapshort) 
>> 2. Stability and performance are also good!
>> 3. Short of save/restore live migration support.
>> 4. Short of host swapping support.
> 
>> Kvm/ia64 architecture also has two parts, one is kvm module, and the
>> other one is GVMM module.  The responsibility of kvm module is
>> similar with x86's, and you can refer to kvm's docs for more
>> information. GVMM module is mainly focusing on performance-critical
>> component virutlization, such as processor and memory virtulization.
>> They are working together to build virtualization environment for
>> virtual machines. I attached a figure to better understand  their
>> workflow. From the graph, we can see transition code is used for
>> world switch. In this transition code, it completes the address
>> space switch, and this is a must, because processor hardware doesn't
>> provide address switch machanism due to large register set in
>> Itanium processors.  Now, GVMM runs in isolated address space with
>> host side, here we use 0xd000000000000000 to avoid possbile
>> confilicts with host side. 
>> 
>> In this mode, there are two kinds of vm exits, one is called
>> light-weight exits, such as memory tlb miss,  priviliged register
>> access. They can be handled in GVMM side, and doen't need to switch
>> back to host side.  The other one is heavey-weight exit, they need
>> to switch back to host side, such as IO operations, Physical
>> external interrupts, firmware emulation, guest IPI and so on.  You
>> know,  light-weight exits should be dominant for all exit events. 
>> Even if heavey-weight exit,  it only consumes hundreds itc cycles. 
>> So ,it doesn't have big performance impact, and our performance data
>> also confirms our guess. 
>> 
>> In all, let's work togerther to make it run better and better.
>> 
>> But, anyway, this is the first time for us to see kvm boot up on
>> non-x86 processors. :)
> 
> Great! Looks like we'll soon have support for more architectures :-)
> 
> Can you please also put this documentation on the wiki? Some of the
> parts that are not expected to change much can also be put in
> Documentation/, with the rest being a pointer to the wiki.
> 
> Since the 0/nn patches aren't committed, such documentation can be
> easily lost.

I will update it. Thank you! :)

>> Now, it's time for us sending the code out for review and check-in. 
>> We are appreciating any comments ! :)
>> [1/17] Adding kvm compile support in Kconfig and Makefile file
> 
> Please order patches so that after applying each one, the kernel is
> buildable. This one adds entries for arch/ia64/kvm/Kconfig, but those
> files aren't added yet. Compiles will fail and bisecting will just
> add more frustration while hunting down that elusive bug.

OK, this should be the last one. And others has no order requirement, I
think. 

>> [2/17] Add kvm.h, kvm_para.h and kvm_host.h for ia64.
>> [3/17] Add kvm-ia64.c to support kvm module on Itanium processors.
> 
> I see code that's commented out. Do you plan to send in cleanup
> patches later? 

Yes, some code need to keep it there for some hints, since some
functionality doesn't implment completely yet.

> Also, have you run these through checkpatch.pl? It looks like
> there'll be a few complaints.

I have checked it with this scripts.  Only some warnings didn't to
solve, such as 
If (xx) {
        xxxxxxxx
}
It will report an WARNING: braces {} are not necessary for single
statement blocks. Do we need to clean up them ?

But for assembly code, seems this script is not smart, and report
inexistent style issues. 

>> [4/17] Add firmware virtualization support.
> 
> Can you explain (in the git commit message) what this is? There are
> also a few typos, like pal_logical_to_physica() (missing 'l' for
> physical). 

Oh, that should be a typo. I will check it again. Thank you!

> Also, please add #defines for the constants used.
> 
> Indentation is also a problem in some places.
> 
> Mostly, these comments apply to all the patches in this series.

>> [5/17] Add TR operation routines.
>> [6/17] Add some header files for kvm use.
>> [7/17] Add GVMM interfaces, it provides GVMM information for host
>> use. [8/17] TLB virtulization [9/17] Add MMIO decoder support.
>> [10/17] Add Interruption vector table for GVMM
>> [11/17] Add trampoline code for host/guest mode switch.
>> [12/17] Add processor virtulization support
>> [13/17] Some optimizations for virtulization faults.
>> [14/17] Generating offset values for assembly code use.
>> [15/17] Guest interruption injection support.
>> [16/17] Add Kconfig for choosing kvm support on IA64.
>> [17/17] Add Makefile for compiling source files.
>> 
>> In addition, current linux upstream tree is not fully friendly to
>> kvm, so a kernel patch is prepared for kvm, and will be sending to
>> linux-ia64 mailing list.
> 
> Why don't you send these patches to the ia64 list as well? I think
> there can be better review of the code from the people who understand
> the arch. 

Good idea! I will send out an updated version, and also cc to ia64 list
:)

Xiantao


-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to