Jun Koi wrote: > On 6/26/07, Dor Laor <[EMAIL PROTECTED]> wrote: >> ... >> +static __init struct kvm_paravirt_state *paravirt_alloc_state(void) >> +{ >> + struct kvm_paravirt_state *state; >> + >> + state = (void *)get_zeroed_page(GFP_KERNEL); >> + if (!state) >> + goto err; >> + >> + state->vmca = (void *)get_zeroed_page(GFP_KERNEL); >> + if (!state->vmca) >> + goto err; >> + >> + /* FIXME: what do I need for this to be executable on 64 bit? */ >> + state->hypercall = (void *)get_zeroed_page(GFP_KERNEL); >> >> Why do you alloc a page for the hypercall instead of using Ingo's code >> below? This way it can work for 64 bit too. >> >> Ingo's code: >> /* >> * This is the vm-syscall address - to be patched by the host to >> * VMCALL (Intel) or VMMCALL (AMD), depending on the CPU model: >> */ >> asm ( >> " .globl hypercall_addr \n" >> " .align 4 \n" >> " hypercall_addr: \n" >> " movl $-38, %eax \n" >> " ret \n" >> ); > > The assembly code "movl $-38, %eax; \nret" is only a "reserved place", > which is later overwritten by hypercall address from the host, isnt > it? > > If so, why dont we simply put 4 NOPs there?
So if the hypervisor fails to patch it, we get a proper errno instead of running off into random code. Regards, Anthony Liguori > Thanks, > Jun > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel