From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH 3/4] pci: add default pci subsystem id for all devices.
Date: Wed, 27 Aug 2008 15:45:22 +0200 [thread overview]
Message-ID: <1219844723-17469-3-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1219844723-17469-1-git-send-email-kraxel@redhat.com>
This sets a default PCI subsystem ID for all emulated PCI devices. PCI
specs require this, so do it. The defaults are global variables so
they can easily be changed (before device creation) as Xen probably
wants to use the XenSource vendor ID instead of the qemu default.
The defaults are pre-filled by pci_register_device(). Individual
drivers can overwrite it of course when setting up the config space
for the emulated device.
TODO: get an official vendor ID assigned, or borrow one (maybe
Qumranet which already sponsors the virtio IDs ???).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/pci.c | 11 +++++++++++
hw/pci.h | 2 ++
2 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index bc55989..15e8173 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -50,6 +50,8 @@ static void pci_update_mappings(PCIDevice *d);
static void pci_set_irq(void *opaque, int irq_num, int level);
target_phys_addr_t pci_mem_base;
+uint16_t pci_default_sub_vendor_id = 0xfffa; /* FIXME: get one assigned */
+uint16_t pci_default_sub_device_id = 0x0001;
static int pci_irq_index;
static PCIBus *first_bus;
@@ -145,6 +147,14 @@ int pci_device_load(PCIDevice *s, QEMUFile *f)
return 0;
}
+static int pci_set_default_subsystem_id(PCIDevice *pci_dev)
+{
+ struct pci_config_header *conf = (void*)pci_dev->config;
+
+ conf->sub_vendor_id = write_le16(pci_default_sub_vendor_id);
+ conf->sub_device_id = write_le16(pci_default_sub_device_id);
+}
+
/* -1 for devfn means auto assign */
PCIDevice *pci_register_device(PCIBus *bus, const char *name,
int instance_size, int devfn,
@@ -171,6 +181,7 @@ PCIDevice *pci_register_device(PCIBus *bus, const char *name,
pci_dev->devfn = devfn;
pstrcpy(pci_dev->name, sizeof(pci_dev->name), name);
memset(pci_dev->irq_state, 0, sizeof(pci_dev->irq_state));
+ pci_set_default_subsystem_id(pci_dev);
if (!config_read)
config_read = pci_default_read_config;
diff --git a/hw/pci.h b/hw/pci.h
index f518e5e..28e8fb5 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -33,6 +33,8 @@ struct pci_config_header {
};
extern target_phys_addr_t pci_mem_base;
+extern uint16_t pci_default_sub_vendor_id;
+extern uint16_t pci_default_sub_device_id;
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev,
uint32_t address, uint32_t data, int len);
--
1.5.5.1
next prev parent reply other threads:[~2008-08-27 13:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-27 13:45 [Qemu-devel] [PATCH 1/4] add byteordered types and accessor functions to qemu Gerd Hoffmann
2008-08-27 13:45 ` [Qemu-devel] [PATCH 2/4] pci: add config space struct (from qemu-xen) Gerd Hoffmann
2008-08-27 13:45 ` Gerd Hoffmann [this message]
2008-08-27 13:45 ` [Qemu-devel] [PATCH 4/4] pci: use pci_config_header in pci.c Gerd Hoffmann
2008-08-27 14:20 ` [Qemu-devel] [PATCH 1/4] add byteordered types and accessor functions to qemu M. Warner Losh
-- strict thread matches above, loose matches on Subject: below --
2008-08-28 8:36 [Qemu-devel] [PATCH 1/4] add byteordered types " Gerd Hoffmann
2008-08-28 8:36 ` [Qemu-devel] [PATCH 3/4] pci: add default pci subsystem id for all devices Gerd Hoffmann
2008-08-28 20:37 ` Anthony Liguori
2008-08-29 9:05 ` Gerd Hoffmann
2008-09-07 2:39 ` Anthony Liguori
2008-09-08 8:45 ` Gerd Hoffmann
2008-09-22 16:38 ` Gerd Hoffmann
2008-09-10 11:45 [Qemu-devel] [PATCH 1/4] add byteordered types to qemu Gerd Hoffmann
2008-09-10 11:45 ` [Qemu-devel] [PATCH 3/4] pci: add default pci subsystem id for all devices Gerd Hoffmann
2008-09-10 12:43 ` Paul Brook
2008-09-10 13:40 ` Gerd Hoffmann
2008-10-01 14:12 [Qemu-devel] [PATCH 1/4] add byteordered types to qemu Gerd Hoffmann
2008-10-01 14:12 ` [Qemu-devel] [PATCH 3/4] pci: add default pci subsystem id for all devices Gerd Hoffmann
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=1219844723-17469-3-git-send-email-kraxel@redhat.com \
--to=kraxel@redhat.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).