diff mbox series

[RFC,v2,3/4] pcie: Add a PCIe capability version helper

Message ID 20230526231558.1660396-4-alex.williamson@redhat.com (mailing list archive)
State New, archived
Headers show
Series vfio/pci: Atomic Ops completer support | expand

Commit Message

Alex Williamson May 26, 2023, 11:15 p.m. UTC
Report the PCIe capability version for a device

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
 hw/pci/pcie.c         | 7 +++++++
 include/hw/pci/pcie.h | 1 +
 2 files changed, 8 insertions(+)

Comments

Cédric Le Goater May 30, 2023, 12:30 p.m. UTC | #1
On 5/27/23 01:15, Alex Williamson wrote:
> Report the PCIe capability version for a device
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>

Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.

> ---
>   hw/pci/pcie.c         | 7 +++++++
>   include/hw/pci/pcie.h | 1 +
>   2 files changed, 8 insertions(+)
> 
> diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
> index b8c24cf45f7e..b7f107ed8dd4 100644
> --- a/hw/pci/pcie.c
> +++ b/hw/pci/pcie.c
> @@ -274,6 +274,13 @@ uint8_t pcie_cap_get_type(const PCIDevice *dev)
>               PCI_EXP_FLAGS_TYPE) >> PCI_EXP_FLAGS_TYPE_SHIFT;
>   }
>   
> +uint8_t pcie_cap_get_version(const PCIDevice *dev)
> +{
> +    uint32_t pos = dev->exp.exp_cap;
> +    assert(pos > 0);
> +    return pci_get_word(dev->config + pos + PCI_EXP_FLAGS) & PCI_EXP_FLAGS_VERS;
> +}
> +
>   /* MSI/MSI-X */
>   /* pci express interrupt message number */
>   /* 7.8.2 PCI Express Capabilities Register: Interrupt Message Number */
> diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h
> index 3cc2b159570f..51ab57bc3c50 100644
> --- a/include/hw/pci/pcie.h
> +++ b/include/hw/pci/pcie.h
> @@ -93,6 +93,7 @@ void pcie_cap_exit(PCIDevice *dev);
>   int pcie_endpoint_cap_v1_init(PCIDevice *dev, uint8_t offset);
>   void pcie_cap_v1_exit(PCIDevice *dev);
>   uint8_t pcie_cap_get_type(const PCIDevice *dev);
> +uint8_t pcie_cap_get_version(const PCIDevice *dev);
>   void pcie_cap_flags_set_vector(PCIDevice *dev, uint8_t vector);
>   uint8_t pcie_cap_flags_get_vector(PCIDevice *dev);
>
Robin Voetter May 31, 2023, 10:02 p.m. UTC | #2
On 5/27/23 01:15, Alex Williamson wrote:
> Report the PCIe capability version for a device
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>Reviewed-by: Robin Voetter <robin@streamhpc.com>
Tested-by: Robin Voetter <robin@streamhpc.com>

Kind regards,

Robin Voetter
Philippe Mathieu-Daudé May 31, 2023, 10:19 p.m. UTC | #3
On 1/6/23 00:02, Robin Voetter wrote:
> On 5/27/23 01:15, Alex Williamson wrote:
>> Report the PCIe capability version for a device
>>
>> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>

Reviewed-by: Robin Voetter <robin@streamhpc.com>
Tested-by: Robin Voetter <robin@streamhpc.com>

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

> 
> Kind regards,
> 
> Robin Voetter
>
diff mbox series

Patch

diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index b8c24cf45f7e..b7f107ed8dd4 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -274,6 +274,13 @@  uint8_t pcie_cap_get_type(const PCIDevice *dev)
             PCI_EXP_FLAGS_TYPE) >> PCI_EXP_FLAGS_TYPE_SHIFT;
 }
 
+uint8_t pcie_cap_get_version(const PCIDevice *dev)
+{
+    uint32_t pos = dev->exp.exp_cap;
+    assert(pos > 0);
+    return pci_get_word(dev->config + pos + PCI_EXP_FLAGS) & PCI_EXP_FLAGS_VERS;
+}
+
 /* MSI/MSI-X */
 /* pci express interrupt message number */
 /* 7.8.2 PCI Express Capabilities Register: Interrupt Message Number */
diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h
index 3cc2b159570f..51ab57bc3c50 100644
--- a/include/hw/pci/pcie.h
+++ b/include/hw/pci/pcie.h
@@ -93,6 +93,7 @@  void pcie_cap_exit(PCIDevice *dev);
 int pcie_endpoint_cap_v1_init(PCIDevice *dev, uint8_t offset);
 void pcie_cap_v1_exit(PCIDevice *dev);
 uint8_t pcie_cap_get_type(const PCIDevice *dev);
+uint8_t pcie_cap_get_version(const PCIDevice *dev);
 void pcie_cap_flags_set_vector(PCIDevice *dev, uint8_t vector);
 uint8_t pcie_cap_flags_get_vector(PCIDevice *dev);