From: Anthony L. <an...@co...> - 2008-04-29 22:25:49
|
Avi Kivity wrote: > Anthony Liguori wrote: > >> This patch allows VMA's that contain no backing page to be used for guest >> memory. This is a drop-in replacement for Ben-Ami's first page in his direct >> mmio series. Here, we continue to allow mmio pages to be represented in the >> rmap. >> >> >> > > I like this very much, as it only affects accessors and not the mmu core > itself. > > Hollis/Xiantao/Carsten, can you confirm that this approach works for > you? Carsten, I believe you don't have mmio, but at least this > shouldn't interfere. > > >> >> struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn) >> { >> - return pfn_to_page(gfn_to_pfn(kvm, gfn)); >> + pfn_t pfn; >> + >> + pfn = gfn_to_pfn(kvm, gfn); >> + if (pfn_valid(pfn)) >> + return pfn_to_page(pfn); >> + >> + return NULL; >> } >> >> > > You're returning NULL here, not bad_page. > My thinking was that bad_page indicates that the gfn is invalid. This is a different type of error though. The problem is that the guest is we are trying to kmap() a page that has no struct page associated with it. I'm not sure what the right thing to do here is. Perhaps we should be replacing consumers of gfn_to_page() with copy_to_user() instead? Regards, Anthony Liguori |