On 01-Aug-19 2:01 PM, David Marchand wrote:
Hello Anatoly,

On Wed, Jul 31, 2019 at 5:36 AM Takeshi Yoshimura <t...@jp.ibm.com> wrote:

Commit b76fafb174d2 ("eal: fix IOVA mode selection as VA for PCI
drivers") breaks ppc apps with no IOVA configs (or RTE_IOVA_DC)
because of the inconsistency of user's request and the result of
device capability for IOVA mode. I updated the code to force IOVA as
PA in ppc as before because current ppc driver does not support VA
mode.

Theoretically, ppc can support VA mode, but I suspect that ppc with
VA mode may have performance issues to create a big DMA window
(VA often uses higher addresses than PA). So, I didn't change the
code to check device capability in ppc.

Signed-off-by: Takeshi Yoshimura <t...@jp.ibm.com>
---
  lib/librte_eal/linux/eal/eal.c | 6 ++++++
  1 file changed, 6 insertions(+)

diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
index 946222ccd..db2dec922 100644
--- a/lib/librte_eal/linux/eal/eal.c
+++ b/lib/librte_eal/linux/eal/eal.c
@@ -1121,6 +1121,12 @@ rte_eal_init(int argc, char **argv)
                                 RTE_LOG(DEBUG, EAL, "KNI can not work since 
physical addresses are unavailable\n");
                         }
                 }
+#endif
+#ifdef RTE_ARCH_PPC_64
+               if (iova_mode == RTE_IOVA_VA) {
+                       iova_mode = RTE_IOVA_PA;
+                       RTE_LOG(WARNING, EAL, "Forcing IOVA as 'PA' because PPC uses 
PA mode.\n");
+               }
  #endif
                 rte_eal_get_configuration()->iova_mode = iova_mode;
         } else {
--
2.17.1


Afaiu, this problem is linked to a specific iommu implementation.
Does it make sense to introduce a check "iommu_support_va" in eal, a
bit like what we have in the pci bus ?


It probably does. Some platforms simply don't support VA mode (FreeBSD, for one), so that would be useful instead of hardcoding IOVA as PA/VA as defaults.

--
Thanks,
Anatoly

Reply via email to