Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753165AbdLEPxj (ORCPT ); Tue, 5 Dec 2017 10:53:39 -0500 Received: from www62.your-server.de ([213.133.104.62]:52122 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753146AbdLEPxc (ORCPT ); Tue, 5 Dec 2017 10:53:32 -0500 Subject: Re: [PATCH v2 0/6] bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type To: Hendrik Brueckner , Arnaldo Carvalho de Melo , Alexei Starovoitov , Martin Schwidefsky , Will Deacon , Ingo Molnar Cc: Arnd Bergmann , Peter Zijlstra , "David S. Miller" , linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, netdev@vger.kernel.org References: <1512381409-19775-1-git-send-email-brueckner@linux.vnet.ibm.com> From: Daniel Borkmann Message-ID: Date: Tue, 5 Dec 2017 16:53:20 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <1512381409-19775-1-git-send-email-brueckner@linux.vnet.ibm.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Authenticated-Sender: daniel@iogearbox.net Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2746 Lines: 61 On 12/04/2017 10:56 AM, Hendrik Brueckner wrote: > Perf tool bpf selftests revealed a broken uapi for s390 and arm64. > With the BPF_PROG_TYPE_PERF_EVENT program type the bpf_perf_event > structure exports the pt_regs structure for all architectures. > > This fails for s390 and arm64 because pt_regs are not part of the > user api and kept in-kernel only. To mitigate the broken uapi, > introduce a wrapper that exports pt_regs in an asm-generic way. > For arm64, export the exising user_pt_regs structure. For s390, > introduce a user_pt_regs structure that exports the beginning of > pt_regs. > > Note that user_pt_regs must export from the beginning of pt_regs > as BPF_PROG_TYPE_PERF_EVENT program type is not the only type for > running BPF programs. > > Some more background: > For the bpf_perf_event, there is a uapi definition that is > passed to the BPF program. For other "probe" points like > trace points, kprobes, and uprobes, there is no uapi and the > BPF program is always passed pt_regs (which is OK as the BPF > program runs in the kernel context). The perf tool can attach > BPF programs to all of these "probe" points and, optionally, > can create a BPF prologue to access particular arguments > (passed as registers). For this, it uses DWARF/CFI > information to obtain the register and calls a perf-arch > backend function, regs_query_register_offset(). This function > returns the index into (user_)pt_regs for a particular > register. Then, perf creates a BPF prologue that accesses > this register based on the passed stucture from the "probe" > point. > > Part of this series, are also updates to the testing and bpf selftest > to deal with asm-specifics. To complete the bpf support in perf, the > the regs_query_register_offset function is added for s390 to support > BPF prologue creation. > > Changelog v1 -> v2: > - Correct kbuild test bot issues by including > asm-generic/bpf_perf_event.h for archictectures that do not have > their own asm version. > - Added patch to clean-up whitespace and coding style issues in s390 > asm/ptrace.h (#4/6) as suggested by Alexei. > > > Hendrik Brueckner (6): > bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type > s390/bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program > type > arm64/bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program > type > s390/uapi: correct whitespace & coding style in asm/ptrace.h > selftests/bpf: sync kernel headers and introduce arch support in > Makefile > perf s390: add regs_query_register_offset() Series looks good to me, thanks for working on this Hendrik! If nobody hollers, I would take the fixes via bpf tree later tonight. Thanks, Daniel