From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LQ592-00015g-Qa for qemu-devel@nongnu.org; Thu, 22 Jan 2009 14:23:16 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LQ590-00014e-4o for qemu-devel@nongnu.org; Thu, 22 Jan 2009 14:23:16 -0500 Received: from [199.232.76.173] (port=37524 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LQ58z-00014Y-RY for qemu-devel@nongnu.org; Thu, 22 Jan 2009 14:23:13 -0500 Received: from mx2.redhat.com ([66.187.237.31]:35329) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LQ58y-0005O5-2i for qemu-devel@nongnu.org; Thu, 22 Jan 2009 14:23:12 -0500 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n0MJNApq002110 for ; Thu, 22 Jan 2009 14:23:10 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n0MJNB8K027644 for ; Thu, 22 Jan 2009 14:23:11 -0500 Received: from pike.pond.sub.org (vpn-10-65.str.redhat.com [10.32.10.65]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n0MJNAQw020934 for ; Thu, 22 Jan 2009 14:23:10 -0500 From: Markus Armbruster Date: Thu, 22 Jan 2009 20:23:08 +0100 Message-ID: <87ocxzrvqb.fsf@pike.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: [Qemu-devel] [RFC PATCH 0/9] Configurable PCI device addresses Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This patch series makes PCI device addresses configurable for a number of devices. For now, I just covered the ones I consider important and/or where the change is somewhat invasive. Why is a configurable PCI device address useful? Currently, QEMU assigns a few device addresses statically, and the rest dynamically on a first come, first serve basis[*]. If you add or remove a device, all devices registering later change address. I'm told a certain operating system that can't be named in polite company can get rather upset about that. Making the device address configurable looks like the simplest solution to this problem. Only users who really mind changing addresses have to deal with the new configuration parameter. I started with Izik's proposal to "allow setting static slot values for pci devices from the command line", see http://lists.gnu.org/archive/html/qemu-devel/2008-01/msg00601.html http://lists.gnu.org/archive/html/qemu-devel/2007-11/msg00620.html but ended up doing it quite differently. I'm just soliciting comments. I do *not* ask for a commit of anything right now. The patch series consists of these parts: [1/9] PCI device registration helpers [2/9] Clean up handling of name=value,... part of -vga option argument [3/9] Support pci=... in option argument of -vga [4/9] Convert virtio_init_pci() to pci_register_device_2() [5/9] Support pci=... in option argument of -net nic [6/9] Make drives_opt[] accessible from device initialization [7/9] Support pci=... in option argument of -drive if=virtio [8/9] New option -audio as a more flexible alternative to -soundhw [9/9] Support pci=... in option argument of -audio Overall diffstat: hw/ac97.c | 11 +--- hw/audiodev.h | 4 +- hw/cirrus_vga.c | 6 +- hw/e1000.c | 6 +- hw/eepro100.c | 19 ++++---- hw/es1370.c | 11 +--- hw/mips_malta.c | 17 +++---- hw/ne2000.c | 7 +-- hw/pc.c | 23 ++++------ hw/pc.h | 11 +--- hw/pci.c | 109 ++++++++++++++++++++++++++++++++++++++++++++-- hw/pci.h | 25 ++++++---- hw/pcnet.c | 6 +- hw/ppc440_bamboo.c | 5 +- hw/ppc_chrp.c | 4 +- hw/ppc_oldworld.c | 4 +- hw/ppc_prep.c | 4 +- hw/r2d.c | 8 ++-- hw/realview.c | 2 +- hw/rtl8139.c | 7 +-- hw/sun4u.c | 4 +- hw/versatilepb.c | 2 +- hw/vga.c | 40 ++++++++-------- hw/virtio-balloon.c | 2 +- hw/virtio-blk.c | 4 +- hw/virtio-blk.h | 2 +- hw/virtio-console.c | 2 +- hw/virtio-net.c | 5 +- hw/virtio-net.h | 2 +- hw/virtio.c | 5 +- hw/virtio.h | 2 +- hw/vmware_vga.c | 7 ++- net.c | 1 + net.h | 1 + sysemu.h | 13 +++++- vl.c | 120 ++++++++++++++++++++++++++++++++------------------- 36 files changed, 315 insertions(+), 186 deletions(-) [*] To be precise: it assigns the dev.func part dynamically. The domain:bus: part is still statically assigned.