From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NKfMr-0003vU-1B for qemu-devel@nongnu.org; Tue, 15 Dec 2009 16:55:41 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NKfMl-0003rn-2Q for qemu-devel@nongnu.org; Tue, 15 Dec 2009 16:55:40 -0500 Received: from [199.232.76.173] (port=50427 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NKfMk-0003rk-VQ for qemu-devel@nongnu.org; Tue, 15 Dec 2009 16:55:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45657) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NKfMk-0005U6-Nt for qemu-devel@nongnu.org; Tue, 15 Dec 2009 16:55:34 -0500 Date: Tue, 15 Dec 2009 23:52:44 +0200 From: "Michael S. Tsirkin" Subject: Re: Proper support for PCI-based option rom loading (was Re: [Qemu-devel] Re: qdev property bug?) Message-ID: <20091215215244.GI26712@redhat.com> References: <4B26A0DE.5000304@redhat.com> <20091214203428.GI6150@redhat.com> <20091214203603.GJ6150@redhat.com> <4B26A3B2.2030006@codemonkey.ws> <20091214205141.GC6398@redhat.com> <4B26F678.4010603@codemonkey.ws> <4B27541F.9020603@redhat.com> <4B27E1C2.5090506@codemonkey.ws> <20091215211900.GG26712@redhat.com> <4B280374.5010604@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B280374.5010604@codemonkey.ws> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: glommer@redhat.com, qemu-devel@nongnu.org, Alexander Graf , Kevin O'Connor , Gerd Hoffmann , Sebastian Herbszt On Tue, Dec 15, 2009 at 03:45:24PM -0600, Anthony Liguori wrote: > Michael S. Tsirkin wrote: >> On Tue, Dec 15, 2009 at 01:21:38PM -0600, Anthony Liguori wrote: >> >>> Gerd Hoffmann wrote: >>> >>>> On 12/15/09 03:37, Anthony Liguori wrote: >>>> >>>>> Okay, I think I've figured out how this is supposed to work. With these >>>>> two patches to SeaBIOS and the patch to qemu, I can run: >>>>> >>>>> qemu -net nic,model=rtl8139 -net nic,model=virtio -net nic,model=e1000 >>>>> -boot menu=on >>>>> >>>>> And all three option roms load. I can also select which NIC I want to >>>>> boot from using the F12 menu. This works by not actually loading the >>>>> option roms in the 1M space, but instead making them mappable through >>>>> the PCI devices. With PMM and DDIM, the result is that we only have to >>>>> copy in 2K for each option rom which means we can support up to 48 >>>>> unique option roms. That should be plenty for now. >>>>> >>>>> These patches are very rough but I'll clean them up tomorrow. I'm not >>>>> sure the best way to integrate with the rom infrastructure since we no >>>>> longer have a physical address to map to. Any suggestions Gerd? >>>>> >>>> Is this needed in the first place? >>>> >>> Only if we care about 'info roms' working. Problem is roms is very >>> centric now to roms at a static guest physical location. In this >>> case, the rom lives in hardware and is mapped into physical memory >>> based on what the guest does. >>> >>> Regards, >>> >>> Anthony Liguori >>> >> >> >> I also think it is very important to have roms sent during >> migration, otherwise things break if we migrate in the middle >> of accessing roms. >> > > Heh, this is going to be really broken with my patches :-) > > We're during qemu_ram_alloc() and we currently don't have a means to > associate ram with anything meaningful. This means that if you hot plug > on two ends in different orders (even with fixed slots), the returned > qemu_ram_alloc() pointers will be different for the same device. This > means when you did the live migration of the rom contents, you'd get the > wrong roms in the wrong places. > > I think we need to improve how we do qemu_ram_alloc() such that we can > associate some meaningful context with each allocated chunk that we can > migrate with the chunk of ram. > > Regards, > > Anthony Liguori Hmm. You think all this is 0.12 material?