[Lguest] PAE support
Rusty Russell
rusty at rustcorp.com.au
Fri Oct 17 14:38:01 EST 2008
On Friday 17 October 2008 09:50:38 Matias Zabaljauregui wrote:
> Hello Rusty,
>
> >> I started to look at kvm hypercalls code.
> >> If you can give some hints about this issue, I can try to do it.
> >
> > Sure. The first step is to use the kvm_hypercall* functions in
> > asm/kvm_para.h. I think that will come out as a UD trap (trap 6) into
> > the host, which will then have to check the ringlevel == GUEST_PL, check
> > the instruction sequence was really a vmcall, then run the hypercall like
> > normal.
>
> ok, with your explanation I was able to get to the point where hcall
> function (in lguest_hcall.h) is like this
>
> hcall(unsigned long call,
> unsigned long arg1, unsigned long arg2, unsigned long arg3)
> {
> kvm_hypercall3(call, arg2, arg3, arg1);
> return call;
> }
>
> and it works.
> Now, what would be the next step ?
> We can easily replace hcall() calls with the corresponding
> kvm_hypercallX (X depending on the arguments count).
>
> But, we have a lot of lazy_hcall() invocations, no matter the amount
> of arguments.
> So I guess we could write lazy_callX() variants, where X is the the
> arguments count or
> just call kvm_hypercall3(call, arg2, arg3, arg1) from lazy_call() and
> forget about the number
> of arguments (which is exactly what actual code does).
Hmm, I guess we should do lazy_hcallX, and change the hcall() callers to use
kvm_hypercallX directly. It's fairly clear, at least.
Thanks!
Rusty.
More information about the Lguest
mailing list