[{"id":1761920,"web_url":"http://patchwork.ozlabs.org/comment/1761920/","msgid":"<20170901190349.mc63kiia45m3fxul@naverao1-tp.localdomain>","list_archive_url":null,"date":"2017-09-01T19:03:49","subject":"Re: [PATCH 1/1] bpf: take advantage of stack_depth tracking in\n\tpowerpc JIT","submitter":{"id":15185,"url":"http://patchwork.ozlabs.org/api/people/15185/","name":"Naveen N. Rao","email":"naveen.n.rao@linux.vnet.ibm.com"},"content":"On 2017/09/02 12:23AM, Sandipan Das wrote:\n> Take advantage of stack_depth tracking, originally introduced for\n> x64, in powerpc JIT as well. Round up allocated stack by 16 bytes\n> to make sure it stays aligned for functions called from JITed bpf\n> program.\n> \n> Signed-off-by: Sandipan Das <sandipan@linux.vnet.ibm.com>\n> ---\n\nLGTM, thanks!\nReviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>\n\nMichael,\nSeeing as this is powerpc specific, can you please take this through \nyour tree?\n\n\nThanks,\nNaveen\n\n>  arch/powerpc/net/bpf_jit64.h      |  7 ++++---\n>  arch/powerpc/net/bpf_jit_comp64.c | 16 ++++++++++------\n>  2 files changed, 14 insertions(+), 9 deletions(-)\n> \n> diff --git a/arch/powerpc/net/bpf_jit64.h b/arch/powerpc/net/bpf_jit64.h\n> index 62fa7589db2b..8bdef7ed28a8 100644\n> --- a/arch/powerpc/net/bpf_jit64.h\n> +++ b/arch/powerpc/net/bpf_jit64.h\n> @@ -23,7 +23,7 @@\n>   *\t\t[   nv gpr save area\t] 8*8\t\t|\n>   *\t\t[    tail_call_cnt\t] 8\t\t|\n>   *\t\t[    local_tmp_var\t] 8\t\t|\n> - * fp (r31) -->\t[   ebpf stack space\t] 512\t\t|\n> + * fp (r31) -->\t[   ebpf stack space\t] upto 512\t|\n>   *\t\t[     frame header\t] 32/112\t|\n>   * sp (r1) --->\t[    stack pointer\t] --------------\n>   */\n> @@ -32,8 +32,8 @@\n>  #define BPF_PPC_STACK_SAVE\t(8*8)\n>  /* for bpf JIT code internal usage */\n>  #define BPF_PPC_STACK_LOCALS\t16\n> -/* Ensure this is quadword aligned */\n> -#define BPF_PPC_STACKFRAME\t(STACK_FRAME_MIN_SIZE + MAX_BPF_STACK + \\\n> +/* stack frame excluding BPF stack, ensure this is quadword aligned */\n> +#define BPF_PPC_STACKFRAME\t(STACK_FRAME_MIN_SIZE + \\\n>  \t\t\t\t BPF_PPC_STACK_LOCALS + BPF_PPC_STACK_SAVE)\n> \n>  #ifndef __ASSEMBLY__\n> @@ -103,6 +103,7 @@ struct codegen_context {\n>  \t */\n>  \tunsigned int seen;\n>  \tunsigned int idx;\n> +\tunsigned int stack_size;\n>  };\n> \n>  #endif /* !__ASSEMBLY__ */\n> diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c\n> index 6ba5d253e857..a01362c88f6a 100644\n> --- a/arch/powerpc/net/bpf_jit_comp64.c\n> +++ b/arch/powerpc/net/bpf_jit_comp64.c\n> @@ -69,7 +69,7 @@ static inline bool bpf_has_stack_frame(struct codegen_context *ctx)\n>  static int bpf_jit_stack_local(struct codegen_context *ctx)\n>  {\n>  \tif (bpf_has_stack_frame(ctx))\n> -\t\treturn STACK_FRAME_MIN_SIZE + MAX_BPF_STACK;\n> +\t\treturn STACK_FRAME_MIN_SIZE + ctx->stack_size;\n>  \telse\n>  \t\treturn -(BPF_PPC_STACK_SAVE + 16);\n>  }\n> @@ -82,8 +82,9 @@ static int bpf_jit_stack_tailcallcnt(struct codegen_context *ctx)\n>  static int bpf_jit_stack_offsetof(struct codegen_context *ctx, int reg)\n>  {\n>  \tif (reg >= BPF_PPC_NVR_MIN && reg < 32)\n> -\t\treturn (bpf_has_stack_frame(ctx) ? BPF_PPC_STACKFRAME : 0)\n> -\t\t\t\t\t\t\t- (8 * (32 - reg));\n> +\t\treturn (bpf_has_stack_frame(ctx) ?\n> +\t\t\t(BPF_PPC_STACKFRAME + ctx->stack_size) : 0)\n> +\t\t\t\t- (8 * (32 - reg));\n> \n>  \tpr_err(\"BPF JIT is asking about unknown registers\");\n>  \tBUG();\n> @@ -134,7 +135,7 @@ static void bpf_jit_build_prologue(u32 *image, struct codegen_context *ctx)\n>  \t\t\tPPC_BPF_STL(0, 1, PPC_LR_STKOFF);\n>  \t\t}\n> \n> -\t\tPPC_BPF_STLU(1, 1, -BPF_PPC_STACKFRAME);\n> +\t\tPPC_BPF_STLU(1, 1, -(BPF_PPC_STACKFRAME + ctx->stack_size));\n>  \t}\n> \n>  \t/*\n> @@ -161,7 +162,7 @@ static void bpf_jit_build_prologue(u32 *image, struct codegen_context *ctx)\n>  \t/* Setup frame pointer to point to the bpf stack area */\n>  \tif (bpf_is_seen_register(ctx, BPF_REG_FP))\n>  \t\tPPC_ADDI(b2p[BPF_REG_FP], 1,\n> -\t\t\t\tSTACK_FRAME_MIN_SIZE + MAX_BPF_STACK);\n> +\t\t\t\tSTACK_FRAME_MIN_SIZE + ctx->stack_size);\n>  }\n> \n>  static void bpf_jit_emit_common_epilogue(u32 *image, struct codegen_context *ctx)\n> @@ -183,7 +184,7 @@ static void bpf_jit_emit_common_epilogue(u32 *image, struct codegen_context *ctx\n> \n>  \t/* Tear down our stack frame */\n>  \tif (bpf_has_stack_frame(ctx)) {\n> -\t\tPPC_ADDI(1, 1, BPF_PPC_STACKFRAME);\n> +\t\tPPC_ADDI(1, 1, BPF_PPC_STACKFRAME + ctx->stack_size);\n>  \t\tif (ctx->seen & SEEN_FUNC) {\n>  \t\t\tPPC_BPF_LL(0, 1, PPC_LR_STKOFF);\n>  \t\t\tPPC_MTLR(0);\n> @@ -993,6 +994,9 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)\n> \n>  \tmemset(&cgctx, 0, sizeof(struct codegen_context));\n> \n> +\t/* Make sure that the stack is quadword aligned. */\n> +\tcgctx.stack_size = round_up(fp->aux->stack_depth, 16);\n> +\n>  \t/* Scouting faux-generate pass 0 */\n>  \tif (bpf_jit_build_body(fp, 0, &cgctx, addrs)) {\n>  \t\t/* We hit something illegal or unsupported. */\n> -- \n> 2.13.5\n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xkTDl6Vkgz9sPt\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  2 Sep 2017 05:04:07 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752294AbdIATEF (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 1 Sep 2017 15:04:05 -0400","from mx0b-001b2d01.pphosted.com ([148.163.158.5]:37146 \"EHLO\n\tmx0a-001b2d01.pphosted.com\" rhost-flags-OK-OK-OK-FAIL)\n\tby vger.kernel.org with ESMTP id S1752118AbdIATEE (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 1 Sep 2017 15:04:04 -0400","from pps.filterd (m0098417.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv81IwjkZ069075\n\tfor <netdev@vger.kernel.org>; Fri, 1 Sep 2017 15:04:03 -0400","from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com [202.81.31.148])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2cq90ur7pd-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <netdev@vger.kernel.org>; Fri, 01 Sep 2017 15:03:59 -0400","from localhost\n\tby e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <netdev@vger.kernel.org> from <naveen.n.rao@linux.vnet.ibm.com>; \n\tSat, 2 Sep 2017 05:03:56 +1000","from d23relay07.au.ibm.com (202.81.31.226)\n\tby e23smtp06.au.ibm.com (202.81.31.212) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tSat, 2 Sep 2017 05:03:54 +1000","from d23av03.au.ibm.com (d23av03.au.ibm.com [9.190.234.97])\n\tby d23relay07.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n\tv81J3sZP38862850\n\tfor <netdev@vger.kernel.org>; Sat, 2 Sep 2017 05:03:54 +1000","from d23av03.au.ibm.com (localhost [127.0.0.1])\n\tby d23av03.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id\n\tv81J3jo4015394\n\tfor <netdev@vger.kernel.org>; Sat, 2 Sep 2017 05:03:46 +1000","from localhost ([9.124.221.137])\n\tby d23av03.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id\n\tv81J3hBX015351; Sat, 2 Sep 2017 05:03:44 +1000"],"Date":"Sat, 2 Sep 2017 00:33:49 +0530","From":"\"Naveen N. Rao\" <naveen.n.rao@linux.vnet.ibm.com>","To":"Sandipan Das <sandipan@linux.vnet.ibm.com>","Cc":"mpe@ellerman.id.au, daniel@iogearbox.net, ast@fb.com,\n\tnetdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org","Subject":"Re: [PATCH 1/1] bpf: take advantage of stack_depth tracking in\n\tpowerpc JIT","References":"<20170901185301.17978-1-sandipan@linux.vnet.ibm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20170901185301.17978-1-sandipan@linux.vnet.ibm.com>","User-Agent":"NeoMutt/20170714 (1.8.3)","X-TM-AS-MML":"disable","x-cbid":"17090119-0040-0000-0000-00000352734E","X-IBM-AV-DETECTION":"SAVI=unused REMOTE=unused XFE=unused","x-cbparentid":"17090119-0041-0000-0000-00000CD07DB2","Message-Id":"<20170901190349.mc63kiia45m3fxul@naverao1-tp.localdomain>","X-Proofpoint-Virus-Version":"vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-01_05:, , signatures=0","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709010273","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1761933,"web_url":"http://patchwork.ozlabs.org/comment/1761933/","msgid":"<59A9B1D5.7030307@iogearbox.net>","list_archive_url":null,"date":"2017-09-01T19:15:33","subject":"Re: [PATCH 1/1] bpf: take advantage of stack_depth tracking in\n\tpowerpc JIT","submitter":{"id":65705,"url":"http://patchwork.ozlabs.org/api/people/65705/","name":"Daniel Borkmann","email":"daniel@iogearbox.net"},"content":"On 09/01/2017 08:53 PM, Sandipan Das wrote:\n> Take advantage of stack_depth tracking, originally introduced for\n> x64, in powerpc JIT as well. Round up allocated stack by 16 bytes\n> to make sure it stays aligned for functions called from JITed bpf\n> program.\n>\n> Signed-off-by: Sandipan Das <sandipan@linux.vnet.ibm.com>\n\nAwesome, thanks for following up! :)","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xkTV80qCLz9sPt\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  2 Sep 2017 05:15:44 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752213AbdIATPm (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 1 Sep 2017 15:15:42 -0400","from www62.your-server.de ([213.133.104.62]:40880 \"EHLO\n\twww62.your-server.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751715AbdIATPl (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 1 Sep 2017 15:15:41 -0400","from [92.105.166.74] (helo=localhost.localdomain)\n\tby www62.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-SHA:256)\n\t(Exim 4.85_2) (envelope-from <daniel@iogearbox.net>)\n\tid 1dnrPi-000420-5p; Fri, 01 Sep 2017 21:15:34 +0200"],"Message-ID":"<59A9B1D5.7030307@iogearbox.net>","Date":"Fri, 01 Sep 2017 21:15:33 +0200","From":"Daniel Borkmann <daniel@iogearbox.net>","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.7.0","MIME-Version":"1.0","To":"Sandipan Das <sandipan@linux.vnet.ibm.com>, mpe@ellerman.id.au","CC":"naveen.n.rao@linux.vnet.ibm.com, ast@fb.com,\n\tnetdev@vger.kernel.org, linuxppc-dev@lists.ozlabs.org","Subject":"Re: [PATCH 1/1] bpf: take advantage of stack_depth tracking in\n\tpowerpc JIT","References":"<20170901185301.17978-1-sandipan@linux.vnet.ibm.com>","In-Reply-To":"<20170901185301.17978-1-sandipan@linux.vnet.ibm.com>","Content-Type":"text/plain; charset=windows-1252; format=flowed","Content-Transfer-Encoding":"7bit","X-Authenticated-Sender":"daniel@iogearbox.net","X-Virus-Scanned":"Clear (ClamAV 0.99.2/23753/Fri Sep  1 18:36:32 2017)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1800904,"web_url":"http://patchwork.ozlabs.org/comment/1800904/","msgid":"<3yWlys2R6yz9s7F@ozlabs.org>","list_archive_url":null,"date":"2017-11-07T23:30:13","subject":"Re: [1/1] bpf: take advantage of stack_depth tracking in powerpc JIT","submitter":{"id":69509,"url":"http://patchwork.ozlabs.org/api/people/69509/","name":"Michael Ellerman","email":"patch-notifications@ellerman.id.au"},"content":"On Fri, 2017-09-01 at 18:53:01 UTC, Sandipan Das wrote:\n> Take advantage of stack_depth tracking, originally introduced for\n> x64, in powerpc JIT as well. Round up allocated stack by 16 bytes\n> to make sure it stays aligned for functions called from JITed bpf\n> program.\n> \n> Signed-off-by: Sandipan Das <sandipan@linux.vnet.ibm.com>\n> Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>\n\nApplied to powerpc next, thanks.\n\nhttps://git.kernel.org/powerpc/c/ac0761ebcb08830d8f64b9181f6736\n\ncheers","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yWlyy5ypWz9t2S\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed,  8 Nov 2017 10:30:18 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S933283AbdKGXaP (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 7 Nov 2017 18:30:15 -0500","from ozlabs.org ([103.22.144.67]:40623 \"EHLO ozlabs.org\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S933226AbdKGXaO (ORCPT <rfc822;netdev@vger.kernel.org>);\n\tTue, 7 Nov 2017 18:30:14 -0500","by ozlabs.org (Postfix, from userid 1034)\n\tid 3yWlys2R6yz9s7F; Wed,  8 Nov 2017 10:30:13 +1100 (AEDT)"],"X-powerpc-patch-notification":"thanks","X-powerpc-patch-commit":"ac0761ebcb08830d8f64b9181f6736b1a00bf746","In-Reply-To":"<20170901185301.17978-1-sandipan@linux.vnet.ibm.com>","To":"Sandipan Das <sandipan@linux.vnet.ibm.com>","From":"Michael Ellerman <patch-notifications@ellerman.id.au>","Cc":"netdev@vger.kernel.org, naveen.n.rao@linux.vnet.ibm.com,\n\tlinuxppc-dev@lists.ozlabs.org, daniel@iogearbox.net, ast@fb.com","Subject":"Re: [1/1] bpf: take advantage of stack_depth tracking in powerpc JIT","Message-Id":"<3yWlys2R6yz9s7F@ozlabs.org>","Date":"Wed,  8 Nov 2017 10:30:13 +1100 (AEDT)","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]