From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43234 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OO99M-0005gb-5r for qemu-devel@nongnu.org; Mon, 14 Jun 2010 08:52:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OO99K-000546-TL for qemu-devel@nongnu.org; Mon, 14 Jun 2010 08:52:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:7237) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OO99K-00053u-Mq for qemu-devel@nongnu.org; Mon, 14 Jun 2010 08:52:22 -0400 Subject: Re: [Qemu-devel] [RFC PATCH 1/5] qdev: Create qdev_get_dev_path() From: Alex Williamson In-Reply-To: References: <20100614054923.879.33717.stgit@localhost.localdomain> <20100614055119.879.92321.stgit@localhost.localdomain> Content-Type: text/plain; charset="UTF-8" Date: Mon, 14 Jun 2010 06:52:10 -0600 Message-ID: <1276519930.12015.104.camel@x201> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: chrisw@redhat.com, kvm@vger.kernel.org, paul@codesourcery.com, qemu-devel@nongnu.org, avi@redhat.com, kraxel@redhat.com On Mon, 2010-06-14 at 08:39 +0200, Markus Armbruster wrote: > Alex Williamson writes: > > > qdev_get_dev_path() is intended to be the canonical utility for creating > > a string representing the qdev hierarchy of a device. The path consists > > of bus and device names as well as identified properties of the immediate > > parent bus and device. This results in strings like: > > > > "/main-system-bus/pci.0,addr=00.0/i440FX" > > "/main-system-bus/pci.0,addr=01.0/PIIX3" > > "/main-system-bus/pci.0,addr=02.0/cirrus-vga" > > "/main-system-bus/pci.0/isa.0/mc146818rtc" > > "/main-system-bus/pci.0/isa.0/isa-serial" > > "/main-system-bus/pci.0/isa.0/i8042" > > "/main-system-bus/pci.0/isa.0/isa-fdc" > > "/main-system-bus/pci.0,addr=03.0/i82551,mac=52:54:00:12:34:56" > > "/main-system-bus/pci.0,addr=04.0/virtio-net-pci,mac=52:54:00:12:34:57" > > "/main-system-bus/pci.0,addr=05.0/e1000,mac=52:54:00:12:34:58" > > "/main-system-bus/pci.0,addr=06.0/rtl8139,mac=52:54:00:12:34:59" > > "/main-system-bus/pci.0,addr=07.0/pcnet,mac=52:54:00:12:34:5a" > > "/main-system-bus/pci.0,addr=01.1/piix3-ide" > > "/main-system-bus/pci.0,addr=01.3/PIIX4_PM" > > "/main-system-bus/pci.0,addr=08.0/lsi53c895a" > > "/main-system-bus/pci.0,addr=09.0/virtio-blk-pci" > > > > There are two primary targets for these strings. The first is vmsave, where > > we currently use a device provided string plus instance number to track > > SaveStateEntries. This fails when we introduce device hotplug, particularly > > in a case were we have gaps in the instance numbers that cannot easily be > > reproduced on a migration target. The second is for naming RAMBlocks. For > > these, we would like a string that matches the vmstate string. > > Could you explain why you add "identified properties of the immediate > parent bus and device"? They make the result ver much *not* a "dev > path" in the qdev sense... In order to try to get a unique string. Without looking into device properties, two e1000s would both be: /main-system-bus/pci.0/e1000 /main-system-bus/pci.0/e1000 Which is no better than simply "e1000" and would require us to fall back to instance ids again. The goal here is that anything that makes use of passing a dev when registering a vmstate gets an instance id of zero. Alex