[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 46/49] hw/pci: Introduce pci_requester_id()
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 46/49] hw/pci: Introduce pci_requester_id() |
Date: |
Fri, 16 Oct 2015 10:50:08 +0200 |
From: Pavel Fedin <address@hidden>
For GICv3 ITS implementation we are going to use requester IDs in KVM IRQ
routing code. This patch introduces reusable convenient way to obtain this
ID from the device pointer. The new function is now used in some places,
where the same calculation was used.
MemTxAttrs.stream_id also renamed to requester_id in order to better
reflect semantics of the field.
Signed-off-by: Pavel Fedin <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/i386/kvm/pci-assign.c | 2 +-
hw/pci/msi.c | 2 +-
hw/pci/pcie_aer.c | 2 +-
include/exec/memattrs.h | 4 ++--
include/hw/pci/pci.h | 5 +++++
5 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c
index 44beee3..e48cae6 100644
--- a/hw/i386/kvm/pci-assign.c
+++ b/hw/i386/kvm/pci-assign.c
@@ -1483,7 +1483,7 @@ static int assigned_device_pci_cap_init(PCIDevice
*pci_dev, Error **errp)
* error bits, leave the rest. */
status = pci_get_long(pci_dev->config + pos + PCI_X_STATUS);
status &= ~(PCI_X_STATUS_BUS | PCI_X_STATUS_DEVFN);
- status |= (pci_bus_num(pci_dev->bus) << 8) | pci_dev->devfn;
+ status |= pci_requester_id(pci_dev);
status &= ~(PCI_X_STATUS_SPL_DISC | PCI_X_STATUS_UNX_SPL |
PCI_X_STATUS_SPL_ERR);
pci_set_long(pci_dev->config + pos + PCI_X_STATUS, status);
diff --git a/hw/pci/msi.c b/hw/pci/msi.c
index f9c0484..c1dd531 100644
--- a/hw/pci/msi.c
+++ b/hw/pci/msi.c
@@ -294,7 +294,7 @@ void msi_send_message(PCIDevice *dev, MSIMessage msg)
{
MemTxAttrs attrs = {};
- attrs.stream_id = (pci_bus_num(dev->bus) << 8) | dev->devfn;
+ attrs.requester_id = pci_requester_id(dev);
address_space_stl_le(&dev->bus_master_as, msg.address, msg.data,
attrs, NULL);
}
diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c
index 46e0ad8..98d2c18 100644
--- a/hw/pci/pcie_aer.c
+++ b/hw/pci/pcie_aer.c
@@ -979,7 +979,7 @@ static int do_pcie_aer_inject_error(Monitor *mon,
}
}
err.status = error_status;
- err.source_id = (pci_bus_num(dev->bus) << 8) | dev->devfn;
+ err.source_id = pci_requester_id(dev);
err.flags = 0;
if (correctable) {
diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h
index f8537a8..e601061 100644
--- a/include/exec/memattrs.h
+++ b/include/exec/memattrs.h
@@ -35,8 +35,8 @@ typedef struct MemTxAttrs {
unsigned int secure:1;
/* Memory access is usermode (unprivileged) */
unsigned int user:1;
- /* Stream ID (for MSI for example) */
- unsigned int stream_id:16;
+ /* Requester ID (for MSI for example) */
+ unsigned int requester_id:16;
} MemTxAttrs;
/* Bus masters which don't specify any attributes will get this,
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 551cb3d..f5e7fd8 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -677,6 +677,11 @@ static inline uint32_t pci_config_size(const PCIDevice *d)
return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE;
}
+static inline uint16_t pci_requester_id(PCIDevice *dev)
+{
+ return (pci_bus_num(dev->bus) << 8) | dev->devfn;
+}
+
/* DMA access functions */
static inline AddressSpace *pci_get_address_space(PCIDevice *dev)
{
--
2.5.0
- [Qemu-devel] [PULL 43/49] qemu-char: cleanup after completed conversion to cd->create, (continued)
- [Qemu-devel] [PULL 43/49] qemu-char: cleanup after completed conversion to cd->create, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 40/49] qemu-char: convert spice backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 41/49] qemu-char: convert vc backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 36/49] qemu-char: convert braille backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 38/49] qemu-char: convert stdio backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 39/49] qemu-char: convert console backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 42/49] qemu-char: convert ringbuf backend to data-driven creation, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 44/49] doc/rcu: fix g_free_rcu() usage example, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 48/49] kvm: Move x86-specific functions into target-i386/kvm.c, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 45/49] kvm: Make KVM_CAP_SIGNAL_MSI globally available, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 46/49] hw/pci: Introduce pci_requester_id(),
Paolo Bonzini <=
- [Qemu-devel] [PULL 49/49] kvm: Allow the Hyper-V vendor ID to be specified, Paolo Bonzini, 2015/10/16
- [Qemu-devel] [PULL 47/49] kvm: Pass PCI device pointer to MSI routing functions, Paolo Bonzini, 2015/10/16
- Re: [Qemu-devel] [PULL 00/49] Misc patches for 2015-10-16, Paolo Bonzini, 2015/10/16