[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 10/31] pcie: Create enums for link speed and width
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 10/31] pcie: Create enums for link speed and width |
Date: |
Mon, 17 Dec 2018 23:17:14 -0500 |
From: Alex Williamson <address@hidden>
In preparation for reporting higher virtual link speeds and widths,
create enums and macros to help us manage them.
Cc: Marcel Apfelbaum <address@hidden>
Tested-by: Geoffrey McRae <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Eric Auger <address@hidden>
Signed-off-by: Alex Williamson <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/hw/pci/pcie_regs.h | 23 +++++++++++++++++++++--
hw/pci/pcie.c | 7 ++++---
hw/vfio/pci.c | 3 ++-
3 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h
index a95522a13b..ad4e7808b8 100644
--- a/include/hw/pci/pcie_regs.h
+++ b/include/hw/pci/pcie_regs.h
@@ -34,10 +34,29 @@
/* PCI_EXP_LINK{CAP, STA} */
/* link speed */
-#define PCI_EXP_LNK_LS_25 1
+typedef enum PCIExpLinkSpeed {
+ QEMU_PCI_EXP_LNK_2_5GT = 1,
+ QEMU_PCI_EXP_LNK_5GT,
+ QEMU_PCI_EXP_LNK_8GT,
+ QEMU_PCI_EXP_LNK_16GT,
+} PCIExpLinkSpeed;
+
+#define QEMU_PCI_EXP_LNKCAP_MLS(speed) (speed)
+#define QEMU_PCI_EXP_LNKSTA_CLS QEMU_PCI_EXP_LNKCAP_MLS
+
+typedef enum PCIExpLinkWidth {
+ QEMU_PCI_EXP_LNK_X1 = 1,
+ QEMU_PCI_EXP_LNK_X2 = 2,
+ QEMU_PCI_EXP_LNK_X4 = 4,
+ QEMU_PCI_EXP_LNK_X8 = 8,
+ QEMU_PCI_EXP_LNK_X12 = 12,
+ QEMU_PCI_EXP_LNK_X16 = 16,
+ QEMU_PCI_EXP_LNK_X32 = 32,
+} PCIExpLinkWidth;
#define PCI_EXP_LNK_MLW_SHIFT ctz32(PCI_EXP_LNKCAP_MLW)
-#define PCI_EXP_LNK_MLW_1 (1 << PCI_EXP_LNK_MLW_SHIFT)
+#define QEMU_PCI_EXP_LNKCAP_MLW(width) (width << PCI_EXP_LNK_MLW_SHIFT)
+#define QEMU_PCI_EXP_LNKSTA_NLW QEMU_PCI_EXP_LNKCAP_MLW
/* PCI_EXP_LINKCAP */
#define PCI_EXP_LNKCAP_ASPMS_SHIFT ctz32(PCI_EXP_LNKCAP_ASPMS)
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 66b73b87c8..aef84c665b 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -68,11 +68,12 @@ pcie_cap_v1_fill(PCIDevice *dev, uint8_t port, uint8_t
type, uint8_t version)
pci_set_long(exp_cap + PCI_EXP_LNKCAP,
(port << PCI_EXP_LNKCAP_PN_SHIFT) |
PCI_EXP_LNKCAP_ASPMS_0S |
- PCI_EXP_LNK_MLW_1 |
- PCI_EXP_LNK_LS_25);
+ QEMU_PCI_EXP_LNKCAP_MLW(QEMU_PCI_EXP_LNK_X1) |
+ QEMU_PCI_EXP_LNKCAP_MLS(QEMU_PCI_EXP_LNK_2_5GT));
pci_set_word(exp_cap + PCI_EXP_LNKSTA,
- PCI_EXP_LNK_MLW_1 | PCI_EXP_LNK_LS_25);
+ QEMU_PCI_EXP_LNKSTA_NLW(QEMU_PCI_EXP_LNK_X1) |
+ QEMU_PCI_EXP_LNKSTA_CLS(QEMU_PCI_EXP_LNK_2_5GT));
if (dev->cap_present & QEMU_PCIE_LNKSTA_DLLLA) {
pci_word_test_and_set_mask(exp_cap + PCI_EXP_LNKSTA,
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 5c7bd96984..74f9a46b4b 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -1897,7 +1897,8 @@ static int vfio_setup_pcie_cap(VFIOPCIDevice *vdev, int
pos, uint8_t size,
PCI_EXP_TYPE_ENDPOINT << 4,
PCI_EXP_FLAGS_TYPE);
vfio_add_emulated_long(vdev, pos + PCI_EXP_LNKCAP,
- PCI_EXP_LNK_MLW_1 | PCI_EXP_LNK_LS_25, ~0);
+ QEMU_PCI_EXP_LNKCAP_MLW(QEMU_PCI_EXP_LNK_X1) |
+ QEMU_PCI_EXP_LNKCAP_MLS(QEMU_PCI_EXP_LNK_2_5GT),
~0);
vfio_add_emulated_word(vdev, pos + PCI_EXP_LNKCTL, 0, ~0);
}
--
MST
- [Qemu-devel] [PULL 00/31] pci, pc, virtio: fixes, features, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 01/31] pcie: set link state inactive/active after hot unplug/plug, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 02/31] pc:piix4: Update smbus I/O space after a migration, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 03/31] virtio: Helper for registering virtio device types, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 04/31] virtio: Provide version-specific variants of virtio PCI devices, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 05/31] tests: Remove unused include, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 06/31] hw/smbios: Restrict access to "hw/smbios/ipmi.h", Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 07/31] hw/smbios: Remove "smbios_ipmi.h", Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 08/31] hw/smbios: Move to the hw/firmware/ subdirectory, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 09/31] hw/pci-bridge: Fix invalid free(), Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 10/31] pcie: Create enums for link speed and width,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 13/31] pcie: Add link speed and width fields to PCIESlot, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 11/31] pci: Sync PCIe downstream port LNKSTA on read, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 12/31] qapi: Define PCIe link speed and width properties, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 16/31] vfio/pci: Remove PCIe Link Status emulation, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 15/31] pcie: Allow generic PCIe root port to specify link speed and width, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 14/31] pcie: Fill PCIESlot link fields to support higher speeds and widths, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 17/31] pcie: Fast PCIe root ports for new machines, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 18/31] intel_iommu: dump correct iova when failed, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 19/31] intel_iommu: convert invalid traces into error reports, Michael S. Tsirkin, 2018/12/17
- [Qemu-devel] [PULL 20/31] intel_iommu: dma read/write draining support, Michael S. Tsirkin, 2018/12/17