On 09.07.2017 09:39, Ady Wahyudi Paundu wrote: > Hi all, > > My name is Ady from NAIST Japan. > Currently I'm trying to learn how KVM work, especially on KVM-exit > part (where the guest mode handle the control to the Kernel mode/KVM). > > 1) I know that there are about 45 KVM exit reasons. However, I can't > find any enough information about those exit-reasons on the net. Maybe > I've been using wrong keywords. Can you give me some pointer on where > to look? For example, what is PENDING_INTERRUPT reason, and when it is > called. You are referring to VMX exit reasons. You should have a look at the VMX specification contained in the SDM (Intel 64 and IA-32 Architectures Software Developer's Manual). e.g. "APPENDIX C VMX BASIC EXIT REASONS" lists all reasons. > > 2) I know that the guest-mode exit to kernel-mode when the guest > system need to execute 'sensitive' operation. Are there any detail on > the internet what are those 'sensitive' operations? > for example, if the guest system execute some hardware API, such as > clflush (that flush the CPU cache), is it need to be executed in > kernel mode or it can be executed in guest mode without KVM exit? > The SDM contains a chapter about "CHANGES TO INSTRUCTION BEHAVIOR IN VMX NON-ROOT OPERATION". Here, it is mentioned, which instructions behave differently in VMX non-root mode, especially which ones force a VM exit instead of being executed/interpreted by the HW. Also, the description of instructions directly contain a comment if treated specially in VM non-root mode. As I can't find anything special for clflush, I assume it is executed in non-root kernel/user mode by the HW. > Thank you in advance for your kind attention. You really should have a look at the SDM, it should contain everything you need. > > ~Ady > -- Thanks, David