* [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c @ 2016-04-04 17:01 Naveen N. Rao 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Naveen N. Rao @ 2016-04-04 17:01 UTC (permalink / raw) To: linux-kernel, linuxppc-dev, netdev Cc: Alexei Starovoitov, Daniel Borkmann, David S . Miller, Ananth N Mavinakayanahalli, Michael Ellerman Building BPF samples is failing with the below error: samples/bpf/map_perf_test_user.c: In function ‘main’: samples/bpf/map_perf_test_user.c:134:9: error: variable ‘r’ has initializer but incomplete type struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; ^ samples/bpf/map_perf_test_user.c:134:21: error: ‘RLIM_INFINITY’ undeclared (first use in this function) struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; ^ samples/bpf/map_perf_test_user.c:134:21: note: each undeclared identifier is reported only once for each function it appears in samples/bpf/map_perf_test_user.c:134:9: warning: excess elements in struct initializer [enabled by default] struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; ^ samples/bpf/map_perf_test_user.c:134:9: warning: (near initialization for ‘r’) [enabled by default] samples/bpf/map_perf_test_user.c:134:9: warning: excess elements in struct initializer [enabled by default] samples/bpf/map_perf_test_user.c:134:9: warning: (near initialization for ‘r’) [enabled by default] samples/bpf/map_perf_test_user.c:134:16: error: storage size of ‘r’ isn’t known struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; ^ samples/bpf/map_perf_test_user.c:139:2: warning: implicit declaration of function ‘setrlimit’ [-Wimplicit-function-declaration] setrlimit(RLIMIT_MEMLOCK, &r); ^ samples/bpf/map_perf_test_user.c:139:12: error: ‘RLIMIT_MEMLOCK’ undeclared (first use in this function) setrlimit(RLIMIT_MEMLOCK, &r); ^ samples/bpf/map_perf_test_user.c:134:16: warning: unused variable ‘r’ [-Wunused-variable] struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; ^ make[2]: *** [samples/bpf/map_perf_test_user.o] Error 1 Fix this by including the necessary header file. Cc: Alexei Starovoitov <ast@fb.com> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: David S. Miller <davem@davemloft.net> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- v2: no changes samples/bpf/map_perf_test_user.c | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/bpf/map_perf_test_user.c b/samples/bpf/map_perf_test_user.c index 95af56e..3147377 100644 --- a/samples/bpf/map_perf_test_user.c +++ b/samples/bpf/map_perf_test_user.c @@ -17,6 +17,7 @@ #include <linux/bpf.h> #include <string.h> #include <time.h> +#include <sys/resource.h> #include "libbpf.h" #include "bpf_load.h" -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value 2016-04-04 17:01 [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c Naveen N. Rao @ 2016-04-04 17:01 ` Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 2016-04-04 17:01 ` [PATCHv2 net 3/3] samples/bpf: Enable powerpc support Naveen N. Rao 2016-04-06 20:01 ` [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c David Miller 2 siblings, 2 replies; 8+ messages in thread From: Naveen N. Rao @ 2016-04-04 17:01 UTC (permalink / raw) To: linux-kernel, linuxppc-dev, netdev Cc: Alexei Starovoitov, David S . Miller, Daniel Borkmann, Ananth N Mavinakayanahalli, Michael Ellerman While at it, remove the generation of .s files and fix some typos in the related comment. Cc: Alexei Starovoitov <ast@fb.com> Cc: David S. Miller <davem@davemloft.net> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- v2: removed generation of .s files samples/bpf/Makefile | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 502c9fc..b820cc9 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -76,16 +76,10 @@ HOSTLOADLIBES_offwaketime += -lelf HOSTLOADLIBES_spintest += -lelf HOSTLOADLIBES_map_perf_test += -lelf -lrt -# point this to your LLVM backend with bpf support -LLC=$(srctree)/tools/bpf/llvm/bld/Debug+Asserts/bin/llc - -# asm/sysreg.h inline assmbly used by it is incompatible with llvm. -# But, ehere is not easy way to fix it, so just exclude it since it is +# asm/sysreg.h - inline assembly used by it is incompatible with llvm. +# But, there is no easy way to fix it, so just exclude it since it is # useless for BPF samples. $(obj)/%.o: $(src)/%.c clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \ -D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \ - -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=obj -o $@ - clang $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) \ - -D__KERNEL__ -D__ASM_SYSREG_H -Wno-unused-value -Wno-pointer-sign \ - -O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf -filetype=asm -o $@.s + -O2 -emit-llvm -c $< -o -| llc -march=bpf -filetype=obj -o $@ -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao @ 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 1 sibling, 0 replies; 8+ messages in thread From: Alexei Starovoitov @ 2016-04-04 17:24 UTC (permalink / raw) To: Naveen N. Rao Cc: linux-kernel, linuxppc-dev, netdev, Alexei Starovoitov, David S . Miller, Daniel Borkmann, Ananth N Mavinakayanahalli, Michael Ellerman On Mon, Apr 04, 2016 at 10:31:33PM +0530, Naveen N. Rao wrote: > While at it, remove the generation of .s files and fix some typos in the > related comment. > > Cc: Alexei Starovoitov <ast@fb.com> > Cc: David S. Miller <davem@davemloft.net> > Cc: Daniel Borkmann <daniel@iogearbox.net> > Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Acked-by: Alexei Starovoitov <ast@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov @ 2016-04-06 20:02 ` David Miller 1 sibling, 0 replies; 8+ messages in thread From: David Miller @ 2016-04-06 20:02 UTC (permalink / raw) To: naveen.n.rao; +Cc: linux-kernel, linuxppc-dev, netdev, ast, daniel, ananth, mpe From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Date: Mon, 4 Apr 2016 22:31:33 +0530 > While at it, remove the generation of .s files and fix some typos in the > related comment. > > Cc: Alexei Starovoitov <ast@fb.com> > Cc: David S. Miller <davem@davemloft.net> > Cc: Daniel Borkmann <daniel@iogearbox.net> > Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Applied. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCHv2 net 3/3] samples/bpf: Enable powerpc support 2016-04-04 17:01 [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c Naveen N. Rao 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao @ 2016-04-04 17:01 ` Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 2016-04-06 20:01 ` [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c David Miller 2 siblings, 2 replies; 8+ messages in thread From: Naveen N. Rao @ 2016-04-04 17:01 UTC (permalink / raw) To: linux-kernel, linuxppc-dev, netdev Cc: Alexei Starovoitov, Daniel Borkmann, David S . Miller, Ananth N Mavinakayanahalli, Michael Ellerman Add the necessary definitions for building bpf samples on ppc. Since ppc doesn't store function return address on the stack, modify how PT_REGS_RET() and PT_REGS_FP() work. Also, introduce PT_REGS_IP() to access the instruction pointer. Cc: Alexei Starovoitov <ast@fb.com> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: David S. Miller <davem@davemloft.net> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- v2: updated macros using ({ }) gcc extension as per Alexei samples/bpf/bpf_helpers.h | 26 ++++++++++++++++++++++++++ samples/bpf/spintest_kern.c | 2 +- samples/bpf/tracex2_kern.c | 4 ++-- samples/bpf/tracex4_kern.c | 2 +- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/samples/bpf/bpf_helpers.h b/samples/bpf/bpf_helpers.h index 9363500..7904a2a 100644 --- a/samples/bpf/bpf_helpers.h +++ b/samples/bpf/bpf_helpers.h @@ -82,6 +82,7 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag #define PT_REGS_FP(x) ((x)->bp) #define PT_REGS_RC(x) ((x)->ax) #define PT_REGS_SP(x) ((x)->sp) +#define PT_REGS_IP(x) ((x)->ip) #elif defined(__s390x__) @@ -94,6 +95,7 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag #define PT_REGS_FP(x) ((x)->gprs[11]) /* Works only with CONFIG_FRAME_POINTER */ #define PT_REGS_RC(x) ((x)->gprs[2]) #define PT_REGS_SP(x) ((x)->gprs[15]) +#define PT_REGS_IP(x) ((x)->ip) #elif defined(__aarch64__) @@ -106,6 +108,30 @@ static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flag #define PT_REGS_FP(x) ((x)->regs[29]) /* Works only with CONFIG_FRAME_POINTER */ #define PT_REGS_RC(x) ((x)->regs[0]) #define PT_REGS_SP(x) ((x)->sp) +#define PT_REGS_IP(x) ((x)->pc) + +#elif defined(__powerpc__) + +#define PT_REGS_PARM1(x) ((x)->gpr[3]) +#define PT_REGS_PARM2(x) ((x)->gpr[4]) +#define PT_REGS_PARM3(x) ((x)->gpr[5]) +#define PT_REGS_PARM4(x) ((x)->gpr[6]) +#define PT_REGS_PARM5(x) ((x)->gpr[7]) +#define PT_REGS_RC(x) ((x)->gpr[3]) +#define PT_REGS_SP(x) ((x)->sp) +#define PT_REGS_IP(x) ((x)->nip) #endif + +#ifdef __powerpc__ +#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ (ip) = (ctx)->link; }) +#define BPF_KRETPROBE_READ_RET_IP BPF_KPROBE_READ_RET_IP +#else +#define BPF_KPROBE_READ_RET_IP(ip, ctx) ({ \ + bpf_probe_read(&(ip), sizeof(ip), (void *)PT_REGS_RET(ctx)); }) +#define BPF_KRETPROBE_READ_RET_IP(ip, ctx) ({ \ + bpf_probe_read(&(ip), sizeof(ip), \ + (void *)(PT_REGS_FP(ctx) + sizeof(ip))); }) +#endif + #endif diff --git a/samples/bpf/spintest_kern.c b/samples/bpf/spintest_kern.c index 4b27619..ce0167d 100644 --- a/samples/bpf/spintest_kern.c +++ b/samples/bpf/spintest_kern.c @@ -34,7 +34,7 @@ struct bpf_map_def SEC("maps") stackmap = { #define PROG(foo) \ int foo(struct pt_regs *ctx) \ { \ - long v = ctx->ip, *val; \ + long v = PT_REGS_IP(ctx), *val; \ \ val = bpf_map_lookup_elem(&my_map, &v); \ bpf_map_update_elem(&my_map, &v, &v, BPF_ANY); \ diff --git a/samples/bpf/tracex2_kern.c b/samples/bpf/tracex2_kern.c index 09c1adc..6d6eefd 100644 --- a/samples/bpf/tracex2_kern.c +++ b/samples/bpf/tracex2_kern.c @@ -27,10 +27,10 @@ int bpf_prog2(struct pt_regs *ctx) long init_val = 1; long *value; - /* x64/s390x specific: read ip of kfree_skb caller. + /* read ip of kfree_skb caller. * non-portable version of __builtin_return_address(0) */ - bpf_probe_read(&loc, sizeof(loc), (void *)PT_REGS_RET(ctx)); + BPF_KPROBE_READ_RET_IP(loc, ctx); value = bpf_map_lookup_elem(&my_map, &loc); if (value) diff --git a/samples/bpf/tracex4_kern.c b/samples/bpf/tracex4_kern.c index ac46714..6dd8e38 100644 --- a/samples/bpf/tracex4_kern.c +++ b/samples/bpf/tracex4_kern.c @@ -40,7 +40,7 @@ int bpf_prog2(struct pt_regs *ctx) long ip = 0; /* get ip address of kmem_cache_alloc_node() caller */ - bpf_probe_read(&ip, sizeof(ip), (void *)(PT_REGS_FP(ctx) + sizeof(ip))); + BPF_KRETPROBE_READ_RET_IP(ip, ctx); struct pair v = { .val = bpf_ktime_get_ns(), -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net 3/3] samples/bpf: Enable powerpc support 2016-04-04 17:01 ` [PATCHv2 net 3/3] samples/bpf: Enable powerpc support Naveen N. Rao @ 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 1 sibling, 0 replies; 8+ messages in thread From: Alexei Starovoitov @ 2016-04-04 17:24 UTC (permalink / raw) To: Naveen N. Rao Cc: linux-kernel, linuxppc-dev, netdev, Alexei Starovoitov, Daniel Borkmann, David S . Miller, Ananth N Mavinakayanahalli, Michael Ellerman On Mon, Apr 04, 2016 at 10:31:34PM +0530, Naveen N. Rao wrote: > Add the necessary definitions for building bpf samples on ppc. > > Since ppc doesn't store function return address on the stack, modify how > PT_REGS_RET() and PT_REGS_FP() work. > > Also, introduce PT_REGS_IP() to access the instruction pointer. > > Cc: Alexei Starovoitov <ast@fb.com> > Cc: Daniel Borkmann <daniel@iogearbox.net> > Cc: David S. Miller <davem@davemloft.net> > Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Acked-by: Alexei Starovoitov <ast@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net 3/3] samples/bpf: Enable powerpc support 2016-04-04 17:01 ` [PATCHv2 net 3/3] samples/bpf: Enable powerpc support Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov @ 2016-04-06 20:02 ` David Miller 1 sibling, 0 replies; 8+ messages in thread From: David Miller @ 2016-04-06 20:02 UTC (permalink / raw) To: naveen.n.rao; +Cc: linux-kernel, linuxppc-dev, netdev, ast, daniel, ananth, mpe From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Date: Mon, 4 Apr 2016 22:31:34 +0530 > Add the necessary definitions for building bpf samples on ppc. > > Since ppc doesn't store function return address on the stack, modify how > PT_REGS_RET() and PT_REGS_FP() work. > > Also, introduce PT_REGS_IP() to access the instruction pointer. > > Cc: Alexei Starovoitov <ast@fb.com> > Cc: Daniel Borkmann <daniel@iogearbox.net> > Cc: David S. Miller <davem@davemloft.net> > Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Applied. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c 2016-04-04 17:01 [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c Naveen N. Rao 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao 2016-04-04 17:01 ` [PATCHv2 net 3/3] samples/bpf: Enable powerpc support Naveen N. Rao @ 2016-04-06 20:01 ` David Miller 2 siblings, 0 replies; 8+ messages in thread From: David Miller @ 2016-04-06 20:01 UTC (permalink / raw) To: naveen.n.rao; +Cc: linux-kernel, linuxppc-dev, netdev, ast, daniel, ananth, mpe From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Date: Mon, 4 Apr 2016 22:31:32 +0530 > Building BPF samples is failing with the below error: ... > Fix this by including the necessary header file. > > Cc: Alexei Starovoitov <ast@fb.com> > Cc: Daniel Borkmann <daniel@iogearbox.net> > Cc: David S. Miller <davem@davemloft.net> > Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Acked-by: Alexei Starovoitov <ast@kernel.org> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Applied. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-04-06 20:02 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-04-04 17:01 [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c Naveen N. Rao 2016-04-04 17:01 ` [PATCHv2 net 2/3] samples/bpf: Use llc in PATH, rather than a hardcoded value Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 2016-04-04 17:01 ` [PATCHv2 net 3/3] samples/bpf: Enable powerpc support Naveen N. Rao 2016-04-04 17:24 ` Alexei Starovoitov 2016-04-06 20:02 ` David Miller 2016-04-06 20:01 ` [PATCHv2 net 1/3] samples/bpf: Fix build breakage with map_perf_test_user.c David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).