[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/23] pcie: simplify pcie_add_capability()
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 14/23] pcie: simplify pcie_add_capability() |
Date: |
Fri, 17 Feb 2017 21:54:41 +0200 |
From: Peter Xu <address@hidden>
When we add PCIe extended capabilities, we should be following the rule
that we add the head extended cap (at offset 0x100) first, then the rest
of them. Meanwhile, we are always adding new capability bits at the end
of the list. Here the "next" looks meaningless in all cases since it
should always be zero (along with the "header").
Simplify the function a bit, and it looks more readable now.
Signed-off-by: Peter Xu <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/pci/pcie.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index f4dd177..fc54bfd 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -665,32 +665,24 @@ void pcie_add_capability(PCIDevice *dev,
uint16_t cap_id, uint8_t cap_ver,
uint16_t offset, uint16_t size)
{
- uint32_t header;
- uint16_t next;
-
assert(offset >= PCI_CONFIG_SPACE_SIZE);
assert(offset < offset + size);
assert(offset + size <= PCIE_CONFIG_SPACE_SIZE);
assert(size >= 8);
assert(pci_is_express(dev));
- if (offset == PCI_CONFIG_SPACE_SIZE) {
- header = pci_get_long(dev->config + offset);
- next = PCI_EXT_CAP_NEXT(header);
- } else {
+ if (offset != PCI_CONFIG_SPACE_SIZE) {
uint16_t prev;
/*
* 0xffffffff is not a valid cap id (it's a 16 bit field). use
* internally to find the last capability in the linked list.
*/
- next = pcie_find_capability_list(dev, 0xffffffff, &prev);
-
+ pcie_find_capability_list(dev, 0xffffffff, &prev);
assert(prev >= PCI_CONFIG_SPACE_SIZE);
- assert(next == 0);
pcie_ext_cap_set_next(dev, prev, offset);
}
- pci_set_long(dev->config + offset, PCI_EXT_CAP(cap_id, cap_ver, next));
+ pci_set_long(dev->config + offset, PCI_EXT_CAP(cap_id, cap_ver, 0));
/* Make capability read-only by default */
memset(dev->wmask + offset, 0, size);
--
MST
- [Qemu-devel] [PULL 11/23] virtio: check for vring setup in virtio_queue_update_used_idx, (continued)
[Qemu-devel] [PULL 14/23] pcie: simplify pcie_add_capability(),
Michael S. Tsirkin <=
[Qemu-devel] [PULL 16/23] vfio: introduce vfio_get_vaddr(), Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 15/23] vfio: trace map/unmap for notify as well, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 17/23] vfio: allow to notify unmap for very large region, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 18/23] intel_iommu: add "caching-mode" option, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 19/23] intel_iommu: simplify irq region translation, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 20/23] intel_iommu: renaming gpa to iova where proper, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 23/23] intel_iommu: vtd_slpt_level_shift check level, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 22/23] intel_iommu: convert dbg macros to trace for trans, Michael S. Tsirkin, 2017/02/17
[Qemu-devel] [PULL 21/23] intel_iommu: convert dbg macros to traces for inv, Michael S. Tsirkin, 2017/02/17
Re: [Qemu-devel] [PULL 00/23] virtio, pci: fixes, features, Peter Maydell, 2017/02/20