From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 27/50] KVM: Support assigning userspace memory to the guest Date: Sun, 23 Dec 2007 20:16:11 +0200 Message-ID: <476EA5EB.8090205@qumranet.com> References: <1198421495-31481-1-git-send-email-avi@qumranet.com> <1198421495-31481-28-git-send-email-avi@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Return-path: In-Reply-To: <1198421495-31481-28-git-send-email-avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Avi Kivity wrote: > From: Izik Eidus > > Instead of having the kernel allocate memory to the guest, let userspace > allocate it and pass the address to the kernel. > > This is required for s390 support, but also enables features like memory > sharing and using hugetlbfs backed memory. > > [...] > @@ -728,11 +752,27 @@ static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, > > memset(new.phys_mem, 0, npages * sizeof(struct page *)); > memset(new.rmap, 0, npages * sizeof(*new.rmap)); > - for (i = 0; i < npages; ++i) { > - new.phys_mem[i] = alloc_page(GFP_HIGHUSER > - | __GFP_ZERO); > - if (!new.phys_mem[i]) > + if (user_alloc) { > + unsigned long pages_num; > + > + new.user_alloc = 1; > + down_read(¤t->mm->mmap_sem); > + > + pages_num = get_user_pages(current, current->mm, > + mem->userspace_addr, > + npages, 1, 0, new.phys_mem, > + NULL); > + > I just combined a patch that changes the 'force' parameter to get_user_pages from 0 to 1, into this patch, to avoid introducing a bug and its fix in the same patchset. I won't be resending this patch since the change is too trivial. Same change applies to patch 48, "KVM: MMU: Partial swapping of guest memory". -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/