bus/pci: fix missing MMIO APIs in Windows
Checks
Commit Message
MMIO read and write APIs were defined in PCI bus. But the corresponding
implementations are not done in windows. This patch fixes this.
Bugzilla ID: 1245
Fixes: 095cf6e68b28 ("bus/pci: introduce MMIO read/write")
Cc: stable@dpdk.org
Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
---
drivers/bus/pci/windows/pci.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
Comments
> -----Original Message-----
> From: Chenbo Xia <chenbo.xia@intel.com>
> Sent: Thursday, June 8, 2023 10:43 AM
> To: dev@dpdk.org
> Cc: david.marchand@redhat.com; NBU-Contact-Thomas Monjalon
> (EXTERNAL) <thomas@monjalon.net>; Ali Alnubani <alialnu@nvidia.com>;
> probb@iol.unh.edu; miao.li@intel.com; stable@dpdk.org; Yahui Cao
> <yahui.cao@intel.com>; Sunil Kumar Kori <skori@marvell.com>
> Subject: [PATCH] bus/pci: fix missing MMIO APIs in Windows
>
> MMIO read and write APIs were defined in PCI bus. But the corresponding
> implementations are not done in windows. This patch fixes this.
>
> Bugzilla ID: 1245
> Fixes: 095cf6e68b28 ("bus/pci: introduce MMIO read/write")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
> ---
Resolves the build failure for me, thanks Chenbo.
Tested-by: Ali Alnubani <alialnu@nvidia.com>
> -----Original Message-----
> From: Ali Alnubani <alialnu@nvidia.com>
> Sent: Thursday, June 8, 2023 4:55 PM
> To: Xia, Chenbo <chenbo.xia@intel.com>; dev@dpdk.org
> Cc: david.marchand@redhat.com; NBU-Contact-Thomas Monjalon (EXTERNAL)
> <thomas@monjalon.net>; probb@iol.unh.edu; Li, Miao <miao.li@intel.com>;
> stable@dpdk.org; Cao, Yahui <yahui.cao@intel.com>; Sunil Kumar Kori
> <skori@marvell.com>
> Subject: RE: [PATCH] bus/pci: fix missing MMIO APIs in Windows
>
> > -----Original Message-----
> > From: Chenbo Xia <chenbo.xia@intel.com>
> > Sent: Thursday, June 8, 2023 10:43 AM
> > To: dev@dpdk.org
> > Cc: david.marchand@redhat.com; NBU-Contact-Thomas Monjalon
> > (EXTERNAL) <thomas@monjalon.net>; Ali Alnubani <alialnu@nvidia.com>;
> > probb@iol.unh.edu; miao.li@intel.com; stable@dpdk.org; Yahui Cao
> > <yahui.cao@intel.com>; Sunil Kumar Kori <skori@marvell.com>
> > Subject: [PATCH] bus/pci: fix missing MMIO APIs in Windows
> >
> > MMIO read and write APIs were defined in PCI bus. But the corresponding
> > implementations are not done in windows. This patch fixes this.
> >
> > Bugzilla ID: 1245
> > Fixes: 095cf6e68b28 ("bus/pci: introduce MMIO read/write")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
> > ---
>
> Resolves the build failure for me, thanks Chenbo.
Great to know! Thanks for reporting this and test the fix
with quick action :)
Cheers,
Chenbo
>
> Tested-by: Ali Alnubani <alialnu@nvidia.com>
08/06/2023 10:58, Xia, Chenbo:
> From: Ali Alnubani <alialnu@nvidia.com>
> > From: Chenbo Xia <chenbo.xia@intel.com>
> > >
> > > MMIO read and write APIs were defined in PCI bus. But the corresponding
> > > implementations are not done in windows. This patch fixes this.
> > >
> > > Bugzilla ID: 1245
> > > Fixes: 095cf6e68b28 ("bus/pci: introduce MMIO read/write")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
> > > ---
> >
> > Resolves the build failure for me, thanks Chenbo.
>
> Great to know! Thanks for reporting this and test the fix
> with quick action :)
>
> Cheers,
> Chenbo
>
> >
> > Tested-by: Ali Alnubani <alialnu@nvidia.com>
Adding Reported-by: Ali Alnubani <alialnu@nvidia.com>
Applied, thanks.
@@ -88,6 +88,30 @@ rte_pci_write_config(const struct rte_pci_device *dev __rte_unused,
return 0;
}
+/* Read PCI MMIO space. */
+int
+rte_pci_mmio_read(const struct rte_pci_device *dev, int bar,
+ void *buf, size_t len, off_t offset)
+{
+ if (bar >= PCI_MAX_RESOURCE || dev->mem_resource[bar].addr == NULL ||
+ (uint64_t)offset + len > dev->mem_resource[bar].len)
+ return -1;
+ memcpy(buf, (uint8_t *)dev->mem_resource[bar].addr + offset, len);
+ return len;
+}
+
+/* Write PCI MMIO space. */
+int
+rte_pci_mmio_write(const struct rte_pci_device *dev, int bar,
+ const void *buf, size_t len, off_t offset)
+{
+ if (bar >= PCI_MAX_RESOURCE || dev->mem_resource[bar].addr == NULL ||
+ (uint64_t)offset + len > dev->mem_resource[bar].len)
+ return -1;
+ memcpy((uint8_t *)dev->mem_resource[bar].addr + offset, buf, len);
+ return len;
+}
+
enum rte_iova_mode
pci_device_iova_mode(const struct rte_pci_driver *pdrv __rte_unused,
const struct rte_pci_device *pdev __rte_unused)