Thread (8 messages) 8 messages, 3 authors, 2018-01-31

Re: [PATCH] net/tap: fix build issue with ARM32

From: Jerin Jacob <hidden>
Date: 2018-01-31 11:31:12

-----Original Message-----
Date: Wed, 31 Jan 2018 10:38:32 +0000
From: Ophir Munk <redacted>
To: Jerin Jacob <redacted>
CC: "dev@dpdk.org" <redacted>, Thomas Monjalon <redacted>,
 Pascal Mazon [off-list ref], Jan Viktorin
 [off-list ref], Jianbo Liu [off-list ref]
Subject: RE: [dpdk-dev]  [PATCH] net/tap: fix build issue with ARM32

Hi,
Please see inline
quoted
-----Original Message-----
From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
Sent: Wednesday, January 31, 2018 12:24 PM
To: Ophir Munk <redacted>
Cc: dev@dpdk.org; Thomas Monjalon <redacted>; Pascal
Mazon [off-list ref]; Jan Viktorin
[off-list ref]; Jianbo Liu [off-list ref]
Subject: Re: [dpdk-dev] [PATCH] net/tap: fix build issue with ARM32

-----Original Message-----
quoted
Date: Wed, 31 Jan 2018 09:59:45 +0000
From: Ophir Munk <redacted>
To: Jerin Jacob <redacted>, "dev@dpdk.org"
 [off-list ref]
CC: Thomas Monjalon <redacted>, Pascal Mazon
[off-list ref], Jan Viktorin [off-list ref],
Jianbo  Liu [off-list ref]
Subject: RE: [dpdk-dev]  [PATCH] net/tap: fix build issue with ARM32

Hi,
Please see comments inline
quoted
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jerin Jacob
Sent: Wednesday, January 31, 2018 7:14 AM
To: dev@dpdk.org
Cc: Thomas Monjalon <redacted>; Jerin Jacob
[off-list ref]; Pascal Mazon
[off-list ref]; Jan Viktorin [off-list ref];
Jianbo Liu [off-list ref]
Subject: [dpdk-dev] [PATCH] net/tap: fix build issue with ARM32

arm32 Linux does not support eBPF interface.
Since tap PMD driver has a dependency on eBPF(the symbol __NR_bpf),
disabling it armv7 config.

compilation error log:
In file included from /tmp/dpdk/drivers/net/tap/tap_bpf_api.c:15:0:
/tmp/dpdk/drivers/net/tap/tap_bpf.h:103:4: error: #error __NR_bpf
not defined  #  error __NR_bpf not defined
    ^
arm architecture is missing is file drivers/tap/tap_bpf.h I suggest
adding it, for example

# elif defined(__arm__)
#  define __NR_bpf 386
By looking at Linux source code
https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Felixi
r.free-
electrons.com%2Flinux%2Fv4.15%2Fsource%2Ftools%2Fbuild%2Ffeature%2
Ftest-
bpf.c%23L6&data=02%7C01%7Cophirmu%40mellanox.com%7C19f50ad7f27
34d00173808d56894c997%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%
7C0%7C636529910613736017&sdata=ynsxHG9fvao4LyfWLo4GVJjlKNmcF0q
0BkFocJyarAE%3D&reserved=0
I am not sure, Is eBPF support available for arm32 support?
TAP eBPF has a graceful approach: it must successfully compile on all Linux
distributions. If a specific kernel cannot support eBPF it will gracefully
refuse the eBPF netlink message sent to it. 
Thus, there is no harm even if there is no eBPF support available for arm32.
OK. But, To enable grace full refuse, we should not any random system call number like #define __NR_bpf 386.
It should at least unused for arm32.
You should enable TAP compilation for cases where you only need TAP without eBPF.
Yes. It would have been better if new eBPF depended features would have
under conditional compilation flag so it it can be turned off selectively.
quoted
quoted
It should work for you. Can you please try it?
I don't have access to an arm32 board. I was facing cross compilation build
issue with arm32.
quoted
If it doesn't work for you, please have a look in this link:
https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsou
quoted
rceforge.net%2Fp%2Fpredef%2Fwiki%2FArchitectures%2F&data=02%7C01%
7Coph
quoted
irmu%40mellanox.com%7C19f50ad7f2734d00173808d56894c997%7Ca6529
71c7d2e4
quoted
d9ba6a4d149256f461b%7C0%7C0%7C636529910613736017&sdata=g5fEkG
Gwm%2BJgR
quoted
KyDrxJgbFII0%2B1%2BxtbT%2FE4Qy1HACEg%3D&reserved=0
where you can see more arm architecture definitions.
You should find the one suitable for you.
I guess, it is not just matter of enabling the build for arm32. It should work at
runtime too, If some can confirm following addition in the
drivers/net/tap/tap_bpf.h works then we can add it.
As mentioned above it must not work at runtime too.
quoted
# elif defined(__arm__)
#  define __NR_bpf 386
quoted
quoted
/tmp/dpdk/drivers/net/tap/tap_bpf_api.c: In function ‘sys_bpf’:
/tmp/dpdk/drivers/net/tap/tap_bpf_api.c:92:17: error: ‘__NR_bpf’
undeclared (first use in this function)
  return syscall(__NR_bpf, cmd, attr, size);
                 ^
/tmp/dpdk/drivers/net/tap/tap_bpf_api.c:92:17: note: each undeclared
identifier is reported only once for each function it appears in
/tmp/dpdk/drivers/net/tap/tap_bpf_api.c:93:1: error: control reaches
end of non-void function [-Werror=return-type]  }  ^
cc1: all warnings being treated as errors

Fixes: b02d85e1 ("net/tap: add eBPF API")

Cc: Pascal Mazon <redacted>
Cc: Jan Viktorin <redacted>
Cc: Jianbo Liu <redacted>

Signed-off-by: Jerin Jacob <redacted>
---
 config/defconfig_arm-armv7a-linuxapp-gcc | 1 +
 1 file changed, 1 insertion(+)
diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc
b/config/defconfig_arm-armv7a-linuxapp-gcc
index a20b7a85f..4a55bb397 100644
--- a/config/defconfig_arm-armv7a-linuxapp-gcc
+++ b/config/defconfig_arm-armv7a-linuxapp-gcc
@@ -80,3 +80,4 @@ CONFIG_RTE_LIBRTE_BNX2X_PMD=n
CONFIG_RTE_LIBRTE_QEDE_PMD=n
CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n
quoted
quoted
CONFIG_RTE_LIBRTE_AVP_PMD=n
+CONFIG_RTE_LIBRTE_PMD_TAP=n
--
I suggest fixing the compilation issue by adding the missing
architecture system call number (as suggested above) instead of
disabling TAP compilation by default
quoted
2.16.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help