Hello,
>> Sorry about that. The issue is the BUG in gfn_to_pgn where the pfn is
>> not calculated correctly after looking up the vma.
>> I still don't see how to get the physical address from the vma, since
>> vm_pgoff is zero, and the vm_ops are not filled. The vma does not seem
>> to store the physical base address.
> So it seems the only place the pfns are stored are in the ptes themselves. Is
> there an API to recover the ptes from a virtual address? We could use that
> instead.
I'm also trying to share H/G memory with another solution -
by overwriting shadow page table.
It seems that gfn_to_pfn is the key function which associate
guest memoy with host memory. So I changed gfn_to_pfn
as follows:
pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn)
{
...
} else
if ( shared_gfn && shared_gfn == gfn ){
return shared_pfn; // return pfn which is wanted to share
}else {
pfn = page_to_pfn(page[0]);
}
}
...
}
Here, shared_gfn is registered by walking soft mmu with gva.
And shared_pfn is the page frame number which is hostside.
By rewriting adobe, kvm is foxed and make up new shadow
page table with new mapping after zap all pages.
But I failed to share the memory. Do I have any misunderstanding?
Regards,
Tsuyoshi Ozawa
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html