Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about hypercall implementation in kernel_repo #18

Open
c2hpxq opened this issue Oct 14, 2021 · 2 comments
Open

Question about hypercall implementation in kernel_repo #18

c2hpxq opened this issue Oct 14, 2021 · 2 comments

Comments

@c2hpxq
Copy link

c2hpxq commented Oct 14, 2021

I find nop instead of vmcall instruction in each kernel/hypercall.c

I'm not that familiar with virtualization but it seems that the hypercall implementation will never call into VMM?

Please help me with it. Do I misunderstand sth about the implementation or how should I modify it to make razzer work?

Thanks.

@lifeasageek
Copy link
Contributor

It's our hacky custom hypercall implementation --- I don't recall, but we faced several challenges to implement a direct hypercall interface.

So what we do is following: QEMU takes kernel's hypercall address, and it keeps monitoring if the guest kernel is executing the hypercall. You can have a look at _HYPERCALL_ADDR in QEMU.

@c2hpxq
Copy link
Author

c2hpxq commented Oct 16, 2021

It's our hacky custom hypercall implementation --- I don't recall, but we faced several challenges to implement a direct hypercall interface.

So what we do is following: QEMU takes kernel's hypercall address, and it keeps monitoring if the guest kernel is executing the hypercall. You can have a look at _HYPERCALL_ADDR in QEMU.

Oh, I see. Thanks a lot!

By the way, do you have any recommending material about QEMU&KVM? I can understand the static analysis part. However, as for your modification to QEMU... It's somewhat complicated to me but I really want to understand it in detail.

As you can tell I'm quite a newbie in VMM, so do you have any suggestion for me?

Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants