All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] x86 ioport fixes
@ 2016-03-15  6:29 David Marchand
  2016-03-15  6:29 ` [PATCH 1/4] pci: explicitly call ioport handlers for uio_pci_generic David Marchand
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: David Marchand @ 2016-03-15  6:29 UTC (permalink / raw)
  To: dev; +Cc: mauricio.vasquezbernal, yuanhan.liu, huawei.xie

Here is a patchset for little cleanups and a fix on newly introduced pci
ioport api.
The last patch fixes a regression reported by Mauricio V. [1].


[1]: http://dpdk.org/ml/archives/dev/2016-February/033922.html

-- 
David Marchand

David Marchand (4):
  pci: explicitly call ioport handlers for uio_pci_generic
  pci: align ioport unmap error handling to ioport map
  pci: align ioport special case for x86 in read/write/unmap
  pci: fix ioport support for uio_pci_generic on x86

 lib/librte_eal/linuxapp/eal/eal_pci.c | 36 +++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/4] pci: explicitly call ioport handlers for uio_pci_generic
  2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
@ 2016-03-15  6:29 ` David Marchand
  2016-03-15  6:29 ` [PATCH 2/4] pci: align ioport unmap error handling to ioport map David Marchand
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: David Marchand @ 2016-03-15  6:29 UTC (permalink / raw)
  To: dev; +Cc: mauricio.vasquezbernal, yuanhan.liu, huawei.xie

Prepare for fixes on x86 by separating igb_uio and uio_pci_generic cases.

Signed-off-by: David Marchand <david.marchand@6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 9f75252..e2af371 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -617,6 +617,8 @@ rte_eal_pci_ioport_map(struct rte_pci_device *dev, int bar,
 		break;
 #endif
 	case RTE_KDRV_IGB_UIO:
+		ret = pci_uio_ioport_map(dev, bar, p);
+		break;
 	case RTE_KDRV_UIO_GENERIC:
 		ret = pci_uio_ioport_map(dev, bar, p);
 		break;
@@ -646,6 +648,8 @@ rte_eal_pci_ioport_read(struct rte_pci_ioport *p,
 		break;
 #endif
 	case RTE_KDRV_IGB_UIO:
+		pci_uio_ioport_read(p, data, len, offset);
+		break;
 	case RTE_KDRV_UIO_GENERIC:
 		pci_uio_ioport_read(p, data, len, offset);
 		break;
@@ -669,6 +673,8 @@ rte_eal_pci_ioport_write(struct rte_pci_ioport *p,
 		break;
 #endif
 	case RTE_KDRV_IGB_UIO:
+		pci_uio_ioport_write(p, data, len, offset);
+		break;
 	case RTE_KDRV_UIO_GENERIC:
 		pci_uio_ioport_write(p, data, len, offset);
 		break;
@@ -695,6 +701,8 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
 		break;
 #endif
 	case RTE_KDRV_IGB_UIO:
+		ret = pci_uio_ioport_unmap(p);
+		break;
 	case RTE_KDRV_UIO_GENERIC:
 		ret = pci_uio_ioport_unmap(p);
 		break;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/4] pci: align ioport unmap error handling to ioport map
  2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
  2016-03-15  6:29 ` [PATCH 1/4] pci: explicitly call ioport handlers for uio_pci_generic David Marchand
@ 2016-03-15  6:29 ` David Marchand
  2016-03-15  6:29 ` [PATCH 3/4] pci: align ioport special case for x86 in read/write/unmap David Marchand
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: David Marchand @ 2016-03-15  6:29 UTC (permalink / raw)
  To: dev; +Cc: mauricio.vasquezbernal, yuanhan.liu, huawei.xie

Same idea as commit bd80d4730aca ("pci: rework ioport map error handling").

Signed-off-by: David Marchand <david.marchand@6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index e2af371..7707292 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -690,12 +690,11 @@ rte_eal_pci_ioport_write(struct rte_pci_ioport *p,
 int
 rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
 {
-	int ret;
+	int ret = -1;
 
 	switch (p->dev->kdrv) {
 #ifdef VFIO_PRESENT
 	case RTE_KDRV_VFIO:
-		ret = -1;
 		if (pci_vfio_is_enabled())
 			ret = pci_vfio_ioport_unmap(p);
 		break;
@@ -710,8 +709,6 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
 #if defined(RTE_ARCH_X86)
 		/* special case for x86 ... nothing to do */
 		ret = 0;
-#else
-		ret = -1;
 #endif
 		break;
 	}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/4] pci: align ioport special case for x86 in read/write/unmap
  2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
  2016-03-15  6:29 ` [PATCH 1/4] pci: explicitly call ioport handlers for uio_pci_generic David Marchand
  2016-03-15  6:29 ` [PATCH 2/4] pci: align ioport unmap error handling to ioport map David Marchand
@ 2016-03-15  6:29 ` David Marchand
  2016-03-15  6:29 ` [PATCH 4/4] pci: fix ioport support for uio_pci_generic on x86 David Marchand
  2016-03-16 20:21 ` [PATCH 0/4] x86 ioport fixes Thomas Monjalon
  4 siblings, 0 replies; 6+ messages in thread
From: David Marchand @ 2016-03-15  6:29 UTC (permalink / raw)
  To: dev; +Cc: mauricio.vasquezbernal, yuanhan.liu, huawei.xie

Commit b8eb345378bd ("pci: ignore devices already managed in Linux when
mapping x86 ioport") did not update other parts of the ioport api.

The application is not supposed to call these read/write/unmap ioport
functions if map call failed but I prefer aligning the code for the sake
of consistency.

Signed-off-by: David Marchand <david.marchand@6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 7707292..74c6919 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -653,12 +653,13 @@ rte_eal_pci_ioport_read(struct rte_pci_ioport *p,
 	case RTE_KDRV_UIO_GENERIC:
 		pci_uio_ioport_read(p, data, len, offset);
 		break;
-	default:
+	case RTE_KDRV_NONE:
 #if defined(RTE_ARCH_X86)
-		/* special case for x86 ... */
 		pci_uio_ioport_read(p, data, len, offset);
 #endif
 		break;
+	default:
+		break;
 	}
 }
 
@@ -678,12 +679,13 @@ rte_eal_pci_ioport_write(struct rte_pci_ioport *p,
 	case RTE_KDRV_UIO_GENERIC:
 		pci_uio_ioport_write(p, data, len, offset);
 		break;
-	default:
+	case RTE_KDRV_NONE:
 #if defined(RTE_ARCH_X86)
-		/* special case for x86 ... */
 		pci_uio_ioport_write(p, data, len, offset);
 #endif
 		break;
+	default:
+		break;
 	}
 }
 
@@ -705,12 +707,13 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
 	case RTE_KDRV_UIO_GENERIC:
 		ret = pci_uio_ioport_unmap(p);
 		break;
-	default:
+	case RTE_KDRV_NONE:
 #if defined(RTE_ARCH_X86)
-		/* special case for x86 ... nothing to do */
 		ret = 0;
 #endif
 		break;
+	default:
+		break;
 	}
 
 	return ret;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/4] pci: fix ioport support for uio_pci_generic on x86
  2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
                   ` (2 preceding siblings ...)
  2016-03-15  6:29 ` [PATCH 3/4] pci: align ioport special case for x86 in read/write/unmap David Marchand
@ 2016-03-15  6:29 ` David Marchand
  2016-03-16 20:21 ` [PATCH 0/4] x86 ioport fixes Thomas Monjalon
  4 siblings, 0 replies; 6+ messages in thread
From: David Marchand @ 2016-03-15  6:29 UTC (permalink / raw)
  To: dev; +Cc: mauricio.vasquezbernal, yuanhan.liu, huawei.xie

uio_pci_generic does not offer the same sysfs helpers as igb_uio.
In this case, ioport number can only be retrieved by parsing /proc/ioports.

Fixes: 756ce64b1ecd ("eal: introduce PCI ioport API")

Reported-by: Mauricio Vásquez <mauricio.vasquezbernal@studenti.polito.it>
Signed-off-by: David Marchand <david.marchand@6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal_pci.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 74c6919..dbf12a8 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -620,7 +620,11 @@ rte_eal_pci_ioport_map(struct rte_pci_device *dev, int bar,
 		ret = pci_uio_ioport_map(dev, bar, p);
 		break;
 	case RTE_KDRV_UIO_GENERIC:
+#if defined(RTE_ARCH_X86)
+		ret = pci_ioport_map(dev, bar, p);
+#else
 		ret = pci_uio_ioport_map(dev, bar, p);
+#endif
 		break;
 	case RTE_KDRV_NONE:
 #if defined(RTE_ARCH_X86)
@@ -705,7 +709,11 @@ rte_eal_pci_ioport_unmap(struct rte_pci_ioport *p)
 		ret = pci_uio_ioport_unmap(p);
 		break;
 	case RTE_KDRV_UIO_GENERIC:
+#if defined(RTE_ARCH_X86)
+		ret = 0;
+#else
 		ret = pci_uio_ioport_unmap(p);
+#endif
 		break;
 	case RTE_KDRV_NONE:
 #if defined(RTE_ARCH_X86)
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/4] x86 ioport fixes
  2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
                   ` (3 preceding siblings ...)
  2016-03-15  6:29 ` [PATCH 4/4] pci: fix ioport support for uio_pci_generic on x86 David Marchand
@ 2016-03-16 20:21 ` Thomas Monjalon
  4 siblings, 0 replies; 6+ messages in thread
From: Thomas Monjalon @ 2016-03-16 20:21 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, mauricio.vasquezbernal, yuanhan.liu, huawei.xie

2016-03-15 07:29, David Marchand:
> Here is a patchset for little cleanups and a fix on newly introduced pci
> ioport api.
> The last patch fixes a regression reported by Mauricio V. [1].
> 
> [1]: http://dpdk.org/ml/archives/dev/2016-February/033922.html

Applied, thanks

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-03-16 20:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-15  6:29 [PATCH 0/4] x86 ioport fixes David Marchand
2016-03-15  6:29 ` [PATCH 1/4] pci: explicitly call ioport handlers for uio_pci_generic David Marchand
2016-03-15  6:29 ` [PATCH 2/4] pci: align ioport unmap error handling to ioport map David Marchand
2016-03-15  6:29 ` [PATCH 3/4] pci: align ioport special case for x86 in read/write/unmap David Marchand
2016-03-15  6:29 ` [PATCH 4/4] pci: fix ioport support for uio_pci_generic on x86 David Marchand
2016-03-16 20:21 ` [PATCH 0/4] x86 ioport fixes Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.