From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [Qemu-devel] Re: [PATCH 10/10] introduce qemu_ram_map Date: Mon, 26 Apr 2010 16:45:01 -0300 Message-ID: <20100426194501.GJ21425@amt.cnet> References: <2e085c19aac78e6c4335eac4fffeb5cfca4bbb26.1272304746.git.mtosatti@redhat.com> <4BD5DB72.3030707@codemonkey.ws> <20100426185055.GG21425@amt.cnet> <4BD5E221.9080105@codemonkey.ws> <20100426191457.GI21425@amt.cnet> <4BD5E78A.6090507@codemonkey.ws> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Anthony Liguori , Cam Macdonell , qemu-devel@nongnu.org, kvm@vger.kernel.org To: Anthony Liguori Return-path: Received: from mx1.redhat.com ([209.132.183.28]:59941 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753664Ab0DZVaX (ORCPT ); Mon, 26 Apr 2010 17:30:23 -0400 Content-Disposition: inline In-Reply-To: <4BD5E78A.6090507@codemonkey.ws> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, Apr 26, 2010 at 02:20:42PM -0500, Anthony Liguori wrote: > On 04/26/2010 02:14 PM, Marcelo Tosatti wrote: > >On Mon, Apr 26, 2010 at 01:57:37PM -0500, Anthony Liguori wrote: > >>On 04/26/2010 01:50 PM, Marcelo Tosatti wrote: > >>>On Mon, Apr 26, 2010 at 01:29:06PM -0500, Anthony Liguori wrote: > >>>>On 04/26/2010 12:59 PM, Marcelo Tosatti wrote: > >>>>>Which allows drivers to register an mmaped region into ram block mappings. > >>>>>To be used by device assignment driver. > >>>>> > >>>>This is not kvm specific and not required by this pull request so it > >>>>shouldn't really be part of the pull. Something like this should > >>>>only be added when there's an actual consumer. > >>>The user will be hw/device-assignment.c in qemu-kvm. And also Cam has > >>>the need for a similar interface for shared memory drivers. > >>It should be part of one of those submissions. > >OK > > > >>>@@ -726,10 +724,6 @@ > >>> kvm_remove_ioperm_data(region->u.r_baseport, region->r_size); > >>> continue; > >>> } else if (pci_region->type& IORESOURCE_MEM) { > >>>- if (region->e_size> 0) > >>>- kvm_destroy_phys_mem(kvm_context, region->e_physbase, > >>>- TARGET_PAGE_ALIGN(region->e_size)); > >>>- > >>> if (region->u.r_virtbase) { > >>> int ret = munmap(region->u.r_virtbase, > >>> (pci_region->size + 0xFFF)& 0xFFFFF000); > >>How does hot unplug get dealt with? > >The regions will have such mappings unmapped from QEMU (and KVM) via > >cpu_register_physical_memory(IO_MEM_UNASSIGNED) via > >pci_unregister_io_regions. > > But how do you qemu_ram_unmap()? I see you munmap() that address > but it looks like the qemu ram region gets leaked pointing to an > invalid pointer. Yes, qemu_ram_free() is not implemented. last_ram_offset always moves forward. But there should be no references to the memory mapping anymore, after the device is hot-unplugged.