From: Alex Williamson <alex.williamson@redhat.com>
To: qemu-devel@nongnu.org
Cc: jan.kiszka@siemens.com, armbru@redhat.com,
alex.williamson@redhat.com, kraxel@redhat.com,
cam@cs.ualberta.ca, paul@codesourcery.com
Subject: [Qemu-devel] [PATCH 03/15] pci: Implement BusInfo.get_dev_path()
Date: Wed, 23 Jun 2010 22:41:13 -0600 [thread overview]
Message-ID: <20100624044112.16168.70618.stgit@localhost.localdomain> (raw)
In-Reply-To: <20100624044046.16168.32804.stgit@localhost.localdomain>
This works great for PCI since a <segment>:<bus>:<dev>.<fn> uniquely
describes a global address. No need to traverse up the qdev tree.
PCI segment support is a placeholder for compatibility once we
support multiple segments.
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
hw/pci.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index 7787005..5c9d6b4 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -58,11 +58,13 @@ struct PCIBus {
};
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
+static char *pcibus_get_dev_path(DeviceState *dev);
static struct BusInfo pci_bus_info = {
.name = "PCI",
.size = sizeof(PCIBus),
.print_dev = pcibus_dev_print,
+ .get_dev_path = pcibus_get_dev_path,
.props = (Property[]) {
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
DEFINE_PROP_STRING("romfile", PCIDevice, romfile),
@@ -1853,6 +1855,18 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent)
}
}
+static char *pcibus_get_dev_path(DeviceState *dev)
+{
+ PCIDevice *d = (PCIDevice *)dev;
+ char path[16];
+
+ snprintf(path, sizeof(path), "%04x:%02x:%02x.%x",
+ 0 /* FIXME for segment support */, d->config[PCI_SECONDARY_BUS],
+ PCI_SLOT(d->devfn), PCI_FUNC(d->devfn));
+
+ return strdup(path);
+}
+
static PCIDeviceInfo bridge_info = {
.qdev.name = "pci-bridge",
.qdev.size = sizeof(PCIBridge),
next prev parent reply other threads:[~2010-06-24 4:41 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-24 4:40 [Qemu-devel] [PATCH 00/15] Make migration work with hotplug Alex Williamson
2010-06-24 4:40 ` [Qemu-devel] [PATCH 01/15] Remove uses of ram.last_offset (aka last_ram_offset) Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 02/15] qdev: Add a get_dev_path() function to BusInfo Alex Williamson
2010-06-24 4:41 ` Alex Williamson [this message]
2010-06-24 7:39 ` [Qemu-devel] [PATCH 03/15] pci: Implement BusInfo.get_dev_path() Isaku Yamahata
2010-06-24 15:05 ` Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 04/15] savevm: Add DeviceState param Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 05/15] savevm: Make use of DeviceState Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 06/15] eepro100: Add a dev field to eeprom new/free functions Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 07/15] virtio-net: Incorporate a DeviceState pointer and let savevm track instances Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 08/15] qemu_ram_alloc: Add DeviceState and name parameters Alex Williamson
2010-06-24 4:41 ` [Qemu-devel] [PATCH 09/15] ramblocks: Make use of DeviceState pointer and BusInfo.get_dev_path Alex Williamson
2010-06-24 4:42 ` [Qemu-devel] [PATCH 10/15] savevm: Migrate RAM based on name/offset Alex Williamson
2010-06-24 5:49 ` [Qemu-devel] " Paolo Bonzini
2010-06-24 4:42 ` [Qemu-devel] [PATCH 11/15] savevm: Use RAM blocks for basis of migration Alex Williamson
2010-06-24 4:42 ` [Qemu-devel] [PATCH 12/15] savevm: Create a new continue flag to avoid resending block name Alex Williamson
2010-06-24 5:51 ` [Qemu-devel] " Paolo Bonzini
2010-06-24 15:06 ` Alex Williamson
2010-06-24 4:42 ` [Qemu-devel] [PATCH 13/15] qemu_ram_free: Implement it Alex Williamson
2010-06-24 4:42 ` [Qemu-devel] [PATCH 14/15] pci: Free the space allocated for the option rom on removal Alex Williamson
2010-06-24 4:42 ` [Qemu-devel] [PATCH 15/15] ramblocks: No more being lazy about duplicate names Alex Williamson
2010-06-24 6:02 ` [Qemu-devel] [PATCH 00/15] Make migration work with hotplug Yoshiaki Tamura
2010-06-24 15:04 ` Alex Williamson
2010-06-24 15:23 ` Alex Williamson
2010-06-25 2:01 ` Yoshiaki Tamura
2010-06-25 17:08 ` [Qemu-devel] [PATCH v2 00/16] " Alex Williamson
2010-06-25 17:08 ` [Qemu-devel] [PATCH v2 01/16] Remove uses of ram.last_offset (aka last_ram_offset) Alex Williamson
2010-07-06 15:45 ` Anthony Liguori
2010-06-25 17:08 ` [Qemu-devel] [PATCH v2 02/16] pc: Allocate all ram in a single qemu_ram_alloc() Alex Williamson
2010-06-25 17:08 ` [Qemu-devel] [PATCH v2 03/16] qdev: Add a get_dev_path() function to BusInfo Alex Williamson
2010-06-25 17:08 ` [Qemu-devel] [PATCH v2 04/16] pci: Implement BusInfo.get_dev_path() Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 05/16] savevm: Add DeviceState param Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 06/16] savevm: Make use of DeviceState Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 07/16] eepro100: Add a dev field to eeprom new/free functions Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 08/16] virtio-net: Incorporate a DeviceState pointer and let savevm track instances Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 09/16] qemu_ram_alloc: Add DeviceState and name parameters Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 10/16] ramblocks: Make use of DeviceState pointer and BusInfo.get_dev_path Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 11/16] savevm: Migrate RAM based on name/offset Alex Williamson
2010-06-25 17:09 ` [Qemu-devel] [PATCH v2 12/16] savevm: Use RAM blocks for basis of migration Alex Williamson
2010-06-25 17:10 ` [Qemu-devel] [PATCH v2 13/16] savevm: Create a new continue flag to avoid resending block name Alex Williamson
2010-06-25 17:10 ` [Qemu-devel] [PATCH v2 14/16] qemu_ram_free: Implement it Alex Williamson
2010-06-25 17:10 ` [Qemu-devel] [PATCH v2 15/16] pci: Free the space allocated for the option rom on removal Alex Williamson
2010-06-25 17:10 ` [Qemu-devel] [PATCH v2 16/16] ramblocks: No more being lazy about duplicate names Alex Williamson
2010-07-02 17:11 ` [Qemu-devel] [PATCH v3 00/16] Make migration work with hotplug Alex Williamson
2010-07-02 17:11 ` [Qemu-devel] [PATCH v3 01/16] Remove uses of ram.last_offset (aka last_ram_offset) Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 02/16] pc: Allocate all ram in a single qemu_ram_alloc() Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 03/16] qdev: Add a get_dev_path() function to BusInfo Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 04/16] pci: Implement BusInfo.get_dev_path() Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 05/16] savevm: Add DeviceState param Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 06/16] savevm: Make use of DeviceState Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 07/16] eepro100: Add a dev field to eeprom new/free functions Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 08/16] virtio-net: Incorporate a DeviceState pointer and let savevm track instances Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 09/16] qemu_ram_alloc: Add DeviceState and name parameters Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 10/16] ramblocks: Make use of DeviceState pointer and BusInfo.get_dev_path Alex Williamson
2010-07-02 17:12 ` [Qemu-devel] [PATCH v3 11/16] savevm: Migrate RAM based on name/offset Alex Williamson
2010-07-02 17:13 ` [Qemu-devel] [PATCH v3 12/16] savevm: Use RAM blocks for basis of migration Alex Williamson
2010-07-02 17:13 ` [Qemu-devel] [PATCH v3 13/16] savevm: Create a new continue flag to avoid resending block name Alex Williamson
2010-07-02 17:13 ` [Qemu-devel] [PATCH v3 14/16] qemu_ram_free: Implement it Alex Williamson
2010-07-02 17:13 ` [Qemu-devel] [PATCH v3 15/16] pci: Free the space allocated for the option rom on removal Alex Williamson
2010-07-02 17:13 ` [Qemu-devel] [PATCH v3 16/16] ramblocks: No more being lazy about duplicate names Alex Williamson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100624044112.16168.70618.stgit@localhost.localdomain \
--to=alex.williamson@redhat.com \
--cc=armbru@redhat.com \
--cc=cam@cs.ualberta.ca \
--cc=jan.kiszka@siemens.com \
--cc=kraxel@redhat.com \
--cc=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).