From patchwork Wed Apr 26 23:49:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexei Starovoitov X-Patchwork-Id: 755705 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wCxdm726Wz9s82 for ; Thu, 27 Apr 2017 09:50:04 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="aK5BRftb"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="XTHQZ65s"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1033100AbdDZXuC (ORCPT ); Wed, 26 Apr 2017 19:50:02 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:40020 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1033095AbdDZXt7 (ORCPT ); Wed, 26 Apr 2017 19:49:59 -0400 Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.16.0.20/8.16.0.20) with SMTP id v3QNnNfU005497; Wed, 26 Apr 2017 16:49:41 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=subject : to : references : cc : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=XQMtZyoKtegLJqB1kHh4SzOtProApxtpf4ZdshGjN54=; b=aK5BRftb47OiXTx4jzgenYmU4iHYPuNDdVjDf9nuLizDBqZAQnekGi5bUT79sS1wQgCT 6UttRu/9+3dunL1X4hte6sygl4puC6V0/peC6f36Ldc1hoXE0t9zltxyoTlRzgWMz3tt G3akmugbR3u99b4D6537Awg8NTUW2SAigh8= Received: from maileast.thefacebook.com ([199.201.65.23]) by m0089730.ppops.net with ESMTP id 2a333n8dkk-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 26 Apr 2017 16:49:41 -0700 Received: from NAM01-BN3-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.27) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 26 Apr 2017 19:49:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XQMtZyoKtegLJqB1kHh4SzOtProApxtpf4ZdshGjN54=; b=XTHQZ65sOPFofHPJsK2xTGzzIk9fOK1QgyTTjlWLX4CzG/ugv++2C/VpmPP1HqkXyUYU0vuA8LSRnx7z5kGY6nEDs4jnN68D8/r5uB1zrUijd0jqTbBU4fkThD45970OpQS3JCUnm+eWGDM5w6MMweisaUlXHjzZBqzS5kCLrA8= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=fb.com; Received: from [IPv6:2620:10d:c081:1110:8000::21bc] (2620:10d:c090:180::5af5) by CO1PR15MB0965.namprd15.prod.outlook.com (10.166.29.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Wed, 26 Apr 2017 23:49:38 +0000 Subject: Re: more test_progs... To: David Miller , References: <20170425.125217.1962662516948420246.davem@davemloft.net> <470871b2-c4c0-ad23-7fda-1a38c2736679@fb.com> <590056F2.5010600@iogearbox.net> <20170426.105511.742633353102583622.davem@davemloft.net> CC: From: Alexei Starovoitov Message-ID: Date: Wed, 26 Apr 2017 16:49:35 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <20170426.105511.742633353102583622.davem@davemloft.net> X-Originating-IP: [2620:10d:c090:180::5af5] X-ClientProxiedBy: CO2PR05CA0068.namprd05.prod.outlook.com (10.166.88.164) To CO1PR15MB0965.namprd15.prod.outlook.com (10.166.29.151) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cffdae07-baed-417d-e37f-08d48cfee716 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:CO1PR15MB0965; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB0965; 3:9Dm8PPIsQDp6Ebczf4rrBFy8PfUq2ugDUcwupm5SUlZqEJ4i+sx4nf6ZPaJSEscIp/jIVQ8uns4wFIofnA3qEx9GU1CKddpbeXeehulsBS/3aKtGLKcMS5ktphR2FZiRVW0Tb6NvT+dAobPyBRtWIwJAFdCxAd5Hr5pli1lQ5MwhIXEg71PalPyBh+MwY/GljDzNtTAzGngMyC8QilgScScHjsB4Dh14kVYCDVENeWbS8xPu9RwG9T9E3EeEduJasCnau0BDtEpWBRr96cBb+tL0D0EmnS/rTtGkNVQCi04aDVIj2M6Afa90anAnmTEKt+AcGt8iZSik1YyXjv4iBg==; 25:w2GVEPiHHfWtjqQu5dLfl1DrcJ8EFfhL1ImF/yGqL92YcJZi9tVtcQ4D21pvH2QYM/rzcUBUuIiKixH8XSPLoOd15tUhQISQvZ0Dd3wqxGhCBwcjLqhLRfHSAajE2hxlqxDR2kfCSWSFkHFvvp8+D/czEj2l5anHfQK65chHLO0ReGDiRpWu8z4h5vlJksDzx3DID3GKpICNP8MzmRued4V7pYQAOql7f+PpmV6PibBO9OIZ7LdbhW2RE53+0TzRC4Ax5BnBd4MaUKr45TOR9WBNsJ/AMVlkFR1aqerdcCSlaJlA2ymUd7EsKmO9wbx68wNJnFOCxfhTj2bScNn2394wLdXl9UtxPtOqHycvdnwc2jRR6aJYyZV/XY57w6Vr7gXcvq+cvyqICIArZsAi5lxzgQEt9WQAZQ0zAv1iBoX3cfJE9OHOlv+eIFImTtHyYrt6Q6HpnOx5EcObEk/t5Q== X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB0965; 31:wxtjokr9Adfeml2xBXQypNnA5z7ODqAnNe53ojXbzoC4mvvjh4yzX9Y5M6Bylu7cwAZlOKfbj3RzGYPG/K3EVasx/+RKYSfpQmTxYGvVh/s55iOMQIAgIFeOcu93+4oSdXJfnzga0jVzly5vQRur766rpcqqG2hXlcSSJrFrlyqfxl47T04RtAzSmypHbFzC4Ls+6p2S1PLE9SppGMSOQHNJ+bax8ODucuOHliCCWyU5THYHR9qybm/6r/1vDkSrGLkCBA6xjjGdfXWHBL3QPQ==; 20:XwZHMoIaTrRc1FcDuhqL4+cwqHlBpBbxGt2FqgPZcEsL+aui/Iyfq2IX0Hr3PG1C+UTMbztmLzJCWSoAk9D/Wgt7gidewKbRUIsx0dsBem3DuxpRyI/oKljoMXHieeHkYlQ5sShfS0k0WG4anvRVVxTqZ/9t67+uXBEC6mcgeJ5ZNn3l2ueLb1dcCJ5mkaTJFgT1Aa12+NLfBU9EjMG0cXCPcBaWZGTkZRbp42KBX7poTi2pmGAEs+E+PaVDj5bKnEYgHWmpqQO42Pxv6KXc2/mhSkCq7RlHwNkX/yGIf7tGcjpsenlI3ol8oPOeZVcFqhnz/E3auOgGxr0QK8apwMaQVaNiOlpgdtd8tlvgKN4Ke9Te31DjaprThbKVFxbWlD8Z4Pt5O2Lr0pO3IHbXHH8/e6Gna4aiq3jAwcyjea/E2cs9M8UTgpZzkFxzcJFp7+eWLqHMPXgMFMWILJ5+4wqxiEnTRY+STwms0BSAWSXazEQZgmHi5FQY/aDfBxKz X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123560025)(6072148); SRVR:CO1PR15MB0965; BCL:0; PCL:0; RULEID:; SRVR:CO1PR15MB0965; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB0965; 4:9X53et7A/0CBAyjUoWzgEOmGahwHufj1RyZpPI81q89Qm3+W+MOkuIs/tw5j6RqT9MZFRwVjcg+aUhl/cGQGuu3xm4RIGCuGhC9EG090Bp2RJIi9lUZAWEJSFsEgFIpM3m2L1+2w13Cn6wn0swsql0iTNZJyN5+QdsYxrPkd2ZTd+ZBeKhV7nHsu/FBu5XXLK4TdvgnAd+4Dzacwlyr7lFm1sk4YBIZwoaqu7KPYhiZwbjNONEPsYM2az6uCZTb1hgNdJJxf/r2Fj2uZQW9h5zIC495kwH2pmvdQE3LRwP+cc0Z3jJZ4GP41WA9GM+6ctjaB8UcglZbXqPvU5TNuHXvBN/4XWTZVtKeBDO+uR3mayVo8lFOzQe7eS8F2ruuI93gAQEB7by4omEBoXzhHqhwrV+81dz2lq+5AhRYn3Kt3+1cZ2V+rm2W1sGCGdVXWStuZmoWiVX3RUDxNjn2AclslKr1RYwUrT7e1mzoApodjh+fO3TPuE9eQxpUw6oyvykjKE7m3RnRAYeCI9lvjuBMvg07lyUe9uvzxzGkMSTyhG0EFXg1FcKgWs4HFEFO4SqRwsvFElUab0rDay3Lyc95WivPlmIlAd86zjKbYaa37i1U2wrQoOWwJ2MAnRvfxfNPRXL0U2tNiuzB8YawlF8GH6n0Yn4vmpfEQLaMqRtBM7LNac8eegjAiRUCVgm9W6kXBxVEygDl45swXjgXCG6CtnVBMoOr03G5y3UjsFaTtMAdv75WMrWjz9iPg14PwOKlMms2NIjPgJRL0fhzRc7YE+saYvYeyHMe1npIWAGw= X-Forefront-PRVS: 0289B6431E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39410400002)(39450400003)(39850400002)(39400400002)(39840400002)(24454002)(377454003)(64126003)(53936002)(189998001)(65956001)(65806001)(47776003)(305945005)(38730400002)(2906002)(25786009)(31696002)(83506001)(33646002)(7736002)(53546009)(86362001)(81166006)(93886004)(50466002)(8676002)(6116002)(2950100002)(31686004)(7116003)(5660300001)(229853002)(4001350100001)(4326008)(76176999)(230700001)(6486002)(6666003)(54356999)(50986999)(36756003)(42186005)(6246003)(2101003)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB0965; H:[IPv6:2620:10d:c081:1110:8000::21bc]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; CO1PR15MB0965; 23:LVov7FgMpf0W4XdxFF1i7kqk62peFQBEdAnUU?= =?Windows-1252?Q?hXsnlz95Kyrn2lmHVBCgzVS31RG21ht/QUrW9TV2ZYWfTO9ZsKp+E74Y?= =?Windows-1252?Q?pNUYJMuRlFg2kWlDGQ1gV5Snlbxo44c+SNpmFG5xHPE7s58NesIAk4qw?= =?Windows-1252?Q?tGL91LqCZJBemTuxzQzBkCJ3VbA7x+O7f2hlcbjcBgkOKGjn+6jmS+aW?= =?Windows-1252?Q?EErSb/OtWz6Z3g7v/9A45M2g6uKTMektnga02S5z4kuix54rCKmCOgBn?= =?Windows-1252?Q?/OCP5ZicePEklk0BmCuEzW+XZrlEk5tGrWWSV9phWHpPEqLWGwuGgz+Q?= =?Windows-1252?Q?H7dvR9X/MnS6kJUhgES2DCkyA3f0mdIJEtvRTKzXy1M/MkioUCVMQoTO?= =?Windows-1252?Q?gdCX0PdknmNUG6QI5ETi81Ei+VnGxEvS6FcN5ituy82i2xHxbYXEB8g3?= =?Windows-1252?Q?aemq5/iMAgHpZfN6poK89eAJI+GSLG5YEwAjYIHUur2dCpwmC8omsP7S?= =?Windows-1252?Q?ZXp77R9Mip54HUKnQG3I2HDYUKyVZFNFh2Cubbp+FYt1Rbk+LlABMaQZ?= =?Windows-1252?Q?IUGlkkillzxVWChCrYjib493CJ6EI0SRpjASAWjPSW5Y2VN3XpUtbePZ?= =?Windows-1252?Q?bEsPGG42H/nNbXugtlja4ysVNcpTn1vg8Ho3+nrkV1XehbTs2hg4+F2q?= =?Windows-1252?Q?JjksynNVW6d66CMIxNyXN7f7v2TCZxXRU1uIIKc9YDa2fzFrtzAWhqmo?= =?Windows-1252?Q?LShX3WN3kpsF6cNABr7/NZpv8Aszj4k9p9WBBxgSfCtLKufi2xCRaJJ+?= =?Windows-1252?Q?1Ov4CdQZBb1TGG/eRcgiA4Uz3gbqz1XOQ87Q/jzU5n9lUPArGK4RpuRs?= =?Windows-1252?Q?JKGtWfZCOyeTO8jkIfF0maKoHmMOGjf9LbcIxyXUGeioidiCgJqBVZ1p?= =?Windows-1252?Q?jvc8T9wZybnBKpFbZvTa5Svk/ANNVJ4Vkpc5PiJUXN5z6Ki4e5Lk9t7Q?= =?Windows-1252?Q?ZXPziu/iVz4TTB+5O9bppIMM1itq+0ilAR4ZXDF/+bBDvz0eQGs7ymMM?= =?Windows-1252?Q?iusiy2ds8dsO4H+qbjmzEtadsP8p7/qYMvN07ozLhDWtlPlbIieo/MqQ?= =?Windows-1252?Q?CYMe7TWys9CfwAQQs8o9gfYIEuBFlp9/y2URrf7WRrbHIARukrWXD6tk?= =?Windows-1252?Q?VUVakFx5Hzu/KpzFWRsV/mRSKmAmz1TUTsN+B/wdIGmy/aMntMjSeJk6?= =?Windows-1252?Q?7373IdPI1GzTS8fSSXWE74dqWsHRrBYfK6qgWLGrlwdkzWc9bP0jNJkr?= =?Windows-1252?Q?Ois?= X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB0965; 6:4TM4O212NL2QU1mE8RieU9IbIrpLEuNh3lYqUlzYZ7AATPZwwHdajHoIreA4azL1xnCSZVi2jKwIf1pY61XuBzpsJmldOMQp6wFLzHNG5GV79tajQ574LxGgB8zLEAyQOtqiCeLLJF9WFKMqWnUa3/vGLBgbARaUJX2SFC0+0lxoLOAtJP9/Fsjd3tNyGsP1dloY+G2PXQmQyZUmI+zuNinkgYx5DS9qcBAYXQNZb2feRxBgmez/cf3vWbzNL3NmYZI/eEbYLhDyZtuknzgylTc03EpBcTgnawvvfR/nOBNtBtgar0DMcUVNpm1qdvaBmIfekqkWRDJGbso8cu0b82LI2WgKfwFbIftsk+vyL6arcmb8f9b6CnuqjsbbGtSZMUklt1HY3OJeAZ/huxfkgAJ9P64w7YfwmPCgftR/P35IG2CFfRQSwQ3UjNuMAsv7aFp36J9piAVZjm/SmyH2oU4AYY65Gs4tnabDgNg1Ip8z/M73EqrBCbYcTp3JfM2dTSSCmXDIFu29Kg1VS2Yd7A==; 5:W/yFz9PO4I11PSi4sEx/e1Hli8LP9F8oKbJy9bDau64p81K1lHuhE7bTYH+5uF6tz24c42AiTvEdeeOPu13tADSClODB/sASBBe7eVm9yduHcUVTGlrHp87ZdP3jp1GXNy0iJAo0/gs2UaEOAtMfQQ==; 24:33KE/cPYXP5zvh0QJ0u2gDWhLk1jV8dq2fFAI4fZM7XT1NhpIFUxv7Uk8aStHbrXj31VhDZZx5NvF6d3XTSXJ6LpABXZ+BIGZIBuujCAyVQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB0965; 7:hpcDql3lVzTT4/ExyIOJU+RTCpIXr+eBcjchV96aYTLYtGk/11dIMeDrJhh0jvPuAxCEYTLrP2DxRdPJ/Zcu91nhIXdcs4ZOnTspkhcfyKUWdFvylL7eZSspISpjbQYQqu5QGww51ZrCWjXSWuqYh1oBdHVb4/740GGKeJj3U9arBPnmFQ7Qz+ztwA/NQSObEMB52DzewKfs6ELHx6lwr4R0RWTkoyJoktEwD2GGNGiMbUQwsouvy7m7ehEZa9qg/M+hOXH1sEUUwS8g0nX94EXOf6zrnJYOcKM41JHgw6j+/I+5yAWwOIU2FHDI8pWMfUFgJjZNFwbJGegPmD4jew==; 20:itB3pGVO2zShgUokcWvVh4OEhg7/EQ5rVf5wPMIy1RMd3TK/ye2UgVXAexRw1/Jg6fdWWYUF0VrVu5fuGiyrF7dD687SLQfD/mc7LZnzE81XPu2a0FrRpBmm7Ow5kHv2lr51jcpKGp2q0hAIwnogaEK4umIV3QecAaK3U65Trow= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2017 23:49:38.7544 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB0965 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-26_17:, , signatures=0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On 4/26/17 7:55 AM, David Miller wrote: > From: Daniel Borkmann > Date: Wed, 26 Apr 2017 10:14:42 +0200 > >> On 04/26/2017 05:42 AM, Alexei Starovoitov wrote: >>> That sucks for sparc, of course. I don't have good suggestions for >>> workaround other than marking tcphdr as packed :( >>> From code efficiency point of view it still will be faster than >>> LD_ABS insn. >> >> Plus, ld_abs would also only work on skbs right now, and would >> need JIT support for XDP. But it's also cumbersome to use with >> f.e. IPv6, etc, so should not be encouraged, imo. >> >> One other option for !HAVE_EFFICIENT_UNALIGNED_ACCESS archs could >> be to provide a bpf_skb_load_bytes() helper equivalent for XDP, >> where you eventually do the memcpy() inside. We could see to inline >> the helper itself to optimize it slightly. > > We have to do something that works transparently and always, > regardless of whether HAVE_EFFICIENT_UNALIGNED_ACCESS is in > play or not. > > And no, marking objects with __packed is not the answer. I'm not suggesting to mark everything as __packed. Why the following is not the answer? index fd1e0832d409..c215dffd7189 100644 --- a/tools/testing/selftests/bpf/test_pkt_access.c +++ b/tools/testing/selftests/bpf/test_pkt_access.c @@ -19,13 +19,52 @@ #define barrier() __asm__ __volatile__("": : :"memory") int _version SEC("version") = 1; +struct __tcphdr { + __u16 source; ... + __u16 window; + __u16 check; + __u16 urg_ptr; +} +#if defined(__sparc__) || defined(__s390__) +__packed +#endif +; SEC("test1") int process(struct __sk_buff *skb) { void *data_end = (void *)(long)skb->data_end; void *data = (void *)(long)skb->data; struct ethhdr *eth = (struct ethhdr *)(data); - struct tcphdr *tcp = NULL; + struct __tcphdr *tcp = NULL; __u8 proto = 255; It's only needed for test_pkt_access.c test, since it's being fancy and doing iph->ihl * 4. Also such tcp->urg_ptr access into packed struct is more efficient after JITing then sparc's own load_half_unaligned in asm, since it's done inline and doesn't need a call. Note that such tcphdr workaround is not necessary for more real programs: test_l4lb.c and test_xdp.c, since they do: if (iph->ihl != 5) return drop; Another idea: x64, arm64, ppc have efficient unaligned. s390 and mips64 have special instructions to do unaligned access efficiently and we can make verifier convert unknown-align load/stores into special internal load/stores, so they can be executed differently by interpreter and by JITs. Does sparc64 have some special instructions like that?