From patchwork Fri Jun 30 14:10:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106713 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp2389729qge; Fri, 30 Jun 2017 07:13:59 -0700 (PDT) X-Received: by 10.237.45.132 with SMTP id i4mr3323904qtd.5.1498832039275; Fri, 30 Jun 2017 07:13:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498832039; cv=none; d=google.com; s=arc-20160816; b=eR4t+8dc10SsOin/csizJVKXN9MK0WplKherxWY0Yi9aIHnQ1Fowrh2+qT4pq7dGah Ve4M2WC1fxP2drtuL/2JCCps8seACJXeVIKvHk3/dvxt5sErkTvGZUbXc5j3e2KQJnSM EQjfYFwNZbhV1g3dwM2o0Mr1/22pA2iOKfRMQy7K1lG37jvi3c8hmRYTwJNKxijgn7r0 LLshMnX0KEHy1SJyNfLj1F5HkUn7x9eQ59JIOWcCdBaJWhHaibv4j3rSZ4CM2Mdnhf0X NOWlsHMZhng5T8ur0yJN3PNX9/bRUt8CC1N9Z+1VXh7sG9NSR6Hg5SRJGmn4OzNkqCX2 0FeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to:arc-authentication-results; bh=ktC5KfJ/L3xDVR7LSY7heW0vJwGw/xkGvLQPpQbEdOQ=; b=McNlB/9/zw8/+dcJkSEPCBzohXVcQpkLfoatO+6WlybeirLSuv+csBQ79G4/nELSM1 YqXV8zzx/o8Bu03LgIZqtCU4e4NMwU1VnKcgMM1F+l66gSs41caxs44ruMSFPt6BYWWn 4CambAfea79xfzGR6wYITZUc5JcCr//yMtJ2xU516EvxHrUUwHcu4PHCZFQT7ffLqPOD bpL/IO2GmfYrVtZ0N5nFvi/t5i8/K55cAiZXYT9EpDie2gDgN3JGqj1k5Y0nKd2dI+4e 656GBmw1VclL65628hC8kM6DXyTcs+lF4mf+BvK4efvIr1C6QOX4eH/YcdWkrCRtD2h3 U41A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id d51si7593119qtb.292.2017.06.30.07.13.59; Fri, 30 Jun 2017 07:13:59 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id F176160EC3; Fri, 30 Jun 2017 14:13:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 3267560DCC; Fri, 30 Jun 2017 14:13:00 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 9839761BC5; Fri, 30 Jun 2017 14:12:53 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10131.outbound.protection.outlook.com [40.107.1.131]) by lists.linaro.org (Postfix) with ESMTPS id DC97760DB2 for ; Fri, 30 Jun 2017 14:11:44 +0000 (UTC) Received: from DB6PR07CA0089.eurprd07.prod.outlook.com (2603:10a6:6:2b::27) by DB5PR07MB1046.eurprd07.prod.outlook.com (2a01:111:e400:5108::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.5; Fri, 30 Jun 2017 14:11:42 +0000 Received: from VE1EUR03FT062.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::202) by DB6PR07CA0089.outlook.office365.com (2603:10a6:6:2b::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6 via Frontend Transport; Fri, 30 Jun 2017 14:11:41 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by VE1EUR03FT062.mail.protection.outlook.com (10.152.18.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1199.9 via Frontend Transport; Fri, 30 Jun 2017 14:11:41 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAuQl018820 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 30 Jun 2017 17:10:56 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAu4H018803 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Fri, 30 Jun 2017 17:10:56 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Fri, 30 Jun 2017 17:10:53 +0300 Message-ID: <20170630141056.11272-2-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170630141056.11272-1-petri.savolainen@linaro.org> References: <20170630141056.11272-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39400400002)(39860400002)(39410400002)(39850400002)(39450400003)(39840400002)(2980300002)(199003)(189002)(9170700003)(8676002)(36756003)(81166006)(53936002)(6666003)(498600001)(189998001)(5003940100001)(8936002)(50226002)(22756006)(33646002)(305945005)(86362001)(1076002)(356003)(5660300001)(76176999)(47776003)(105596002)(48376002)(50986999)(50466002)(38730400002)(106466001)(77096006)(2351001)(6916009)(2950100002)(110136004)(2906002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB5PR07MB1046; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT062; 1:SyMKo0ERD+5lSjGkNMx9ERnWDXN9IdKT0GkMTKLRHzVXKM6BwIbuz3x6FLyGqSmWANy7KOAsnEl0KejHonsaUsf6aQlzlv4+Jm7bBUU2Mra4Xc0EG6iM1xyHBe08EBgaA27tvSyYmaVgEjv1CMdRpKjJgNbVWiv8BaD+qYV3iIfnwvH2/wiAD+qCUgRgL2SxYXac5y6tT0p5cEWj21KVe828Ke/s+j4rNSfSGlzU06JHh3p5Ggu4ByJLXNpl6ym5cHnBTXfOdSeMt79LxH+ikCvtb04yZt0Nw4Mn1nfC45ZnqAd+tS8+9pQI4VrCuH/zYoAUSbSDik/iD7C2ZlWNt5Bu01HI0gNLOD4oTTGDRw3lVIXh3s5/PBYZNzak41HK6kzUjYDDo9wFI/cGe47ibG8EXJ021Y377axyEOGLFq11oGBrgvr1qUlgYa0limEkNHEHtdugu+wKpfvFh1xucHK/TcgNP9FjAE4YaLhbZ5y3PKDtebE+ZIEaQrqiW1d70dS0MIBjfu88QWwhjpU9iFn9/Hub5ut13nP8xarfE8j5ugbbQi9fxvH9izUSHbbPB1QD01dapA4WhTZzMlmye0oXd7zhs5Ala7PUtRsksF7dWYIQA2lSPdLUmKawxtS1mfYhnpSbJXdeLoFsKo3oI6rPHxRfBZUX5JIJrV0aQfrTEXxK2y5oOKzg4JamzhCgqw+P47SSFPf43WgAyj3oebPf3L2+0+J1OvVY81IT7Fw/qVtkpAZWeDu3Sxx9CPX49BOLQ2al/kdfSOd6tMUSJH1YsxD6KCTkKrLzlmkpYls8+ZObk7Zg6Ke59Uk+wcaeqUCCJmaPvxTuclEzMYNY6JmqyMxMQUu3XhwzMaPmQQDTQIq3fn5EmFeWYC+AeshU MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01863c6c-4689-4586-6985-08d4bfc1ee68 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB5PR07MB1046; X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 3:D3TiNAS3OwLcA+y5rMRgf/CL6cwJFW83TafRovkNBFbhibNb13zhrFScaG1N4dmMN5K3yAFhPGuBrsNjZt3/59GFu2VYz/fDImrexvGzuTzTBND3ABXmP/XSIuus6r+ELC4XsrlqQdHuXFEM+D6nDehQi4X3XXn4XtDQmW2fWXjMLEjORrG0suw6QThtJgyH2J2ZdphpB0AW9Vb1UirldbF2sbJwyshovbm2hphAulXdk3J7qdCvq4TpBO01ZW5AYjwcgPdMHO0eQcwCOKOAaFJEdC74p3vvzPj1ea4AYWgW+EdyEygQqx7Xu0zFYRUvklLmTfVvuJALc5qqPowanpY1x9lBki+mSRT/nhTZKhzinsq+djOooyGKn3HFxDj0cyH3ynVGLeGmimNSH9uoNyuOzZR/scZ3BybaOqsBRJL+Fek1avm0OXR3G+Yj28M0QnGsG3ELEHMODe+viBeahFcB8OTC3+f2F+xmnogRwApKlOvJfEdpcr3T599/+my3wRe+fdu/2Cx7Tjf7j1A7dN49PDKAiez7LrhhQpP94NgQHj3PaFKXcKBKclXtvJTULMUkHLWBWO9m4MyVeGiOHwhbD4sFgYeg/P7M8xP3cxvPyUgDM9qiYmS8M/qeUG4CjnLVjwIDPQsmR4ktlw/yqZ2Lboi5XB+bRVCJS7zaNmQxf448f1vX3bq899UdBLXMphxWSAPytgxzPUlO3qM+IG5YJId3R1QZlYpvAdaiwUz2kcppUyOAmOOUNP/h2Iw1lVIw3LgzfYS8oKRVn4dfRNdAHmxVLE6b/p3z/FR8nHWuG8CHc5JWnkDPLRTl9FVr9xdmhD7T10A2ULD5or2glN5zPIb3q+QnkPSgD5i3iTb3wPE5/i82oqGcOwLEX90ZRTPVARtqq/Hz4bqXUY6qaQ== X-MS-TrafficTypeDiagnostic: DB5PR07MB1046: X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 25:rvGrboOoBXxH5J4aNFiWNjTNdGKCe1dcHQ8zETkfL04kAjRMlhZVFHi7L6vizrEJvyAgGZsw/gGcYTwBdmP6LDtzT+vj3dkTjtP0KNSMC7VnxtoMWWFcfgVXc9wWOgNp8OpvDjQl8j1WLXXnkZimek9PowwEDxV5ZS9fJCee9vbyE2tCRPA+aPXkQ80YVGxFgOkLzYkGJAwjhcrxBe37E0U/nunWijsLIz9oS93CeJZ4+8XjC6Kdy40PsEw5ljA/qKA86qzuEicsSsfFNuEciKj0tFmHBpOH/kdqsggTFLGNuB5lbCPL+atALBsD1u+R3xMXfB3dVyPgQ9rgyzLnBdbUFFTZbubI57Sjx34yYqofmoVPybqtZ1qazUG1x8fpLeBoV4A8Rb1WIds/2QB4bS2AraC14dTPH4SYcrpTsPLUqPOOgndteJ3NvVKSRofWPNxeYlkjEoWFSToOERY2FMiExCTBUaR5zOM21poeCCbFOnRFyZ9tzae4ArraC65fYBWm0xWB53d5iWfBbZQC1jB6XwSAYOS/o7baLMFtKg4RoVrD3Stfes1S/I8X03oKMNiET9wgPkdOnplq2RKUY4dHGdg4icQ3aIIxQT8UCwSw0A4ELJsrNRaTw/b7MgI/Tspl5pjV3gmYXeNtfh/M7tOQWpEJ8A/909L1/0/5ecAEMu5DkPTQrv12r0VjZ5I9Me9c8hhgAxV4Kwa/wOCXivyih1qf6GmX8EP5NagnwJNkJ0mVlgEKUSkKNSdEOQ5eVAY++Kn/yZtiOX3vn7Qp7zH74OP2fEitfp2dou6t4+L5+ihSuP+wEdTDFqFNJKChIsn+S6jzHpC3Fsy9iBpgjj7Czaad3mMEDFdB+Pn+QoE6oNe8kPxqnlXQX3b4jIXU6Z8t3FZgVnZVXB6TkEqHbAd5n5AIbbSgMgU84uo2A80= X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 31:zGqaNLMTGcXqOdqtGggbAr3xSEmixywPCxI0giLtNIgAseYKcAh8a6vIUVAlTQvXYNWk6c0pUTnurqCj8gzV4D71VvKikTarXpMZLI8tTnKBbC317Jgh9WfbXTSdT73GZq7BVqjvR3lUukGHe4aQelGSieDWXzf+9wMA9LX5fdCe5LqDk/aenfeTNeXHh60Mn62qbSeBz2wrrYyB1r8hXAnyvT9w+rdVYh5g/QEALiR7OSyd8tAiV6eEuMoxBXctpcvbzEvZ11Peq/cvexmzO8Ni+WA5C/3wbSqVRUnIRo0aD4y4xZVW4FwOH5KNKDSMtih4JYmva1OmzWKl/8lwpVsg2rAIhLqZ9KcH75qTGEEZUF5aa3hJl5Os93/WraMljnkA8sNDlTHPhjVAs9+2+qv14ToZ6012wn7sMLL4vELxgFG2Qe+tqgqGzqKDHWYmExU9htlIY4zSy2ZnLkMGROe3BOEvnawiLnulilmZ9AFXed/YKaccQJr2Rx/n3i4oHpWSKRh5/5G202iQZu+iYxiZ47mmd2qJmUase81ciVnpEVXrfeyCR0XIbiPVDaCALBvXs3obrcK6HdvgOmmz3NmFo0TWITWOUSzM0g2i+LIbiaslGzho2wnejjNVtl5EYGNv0LOR54X6NI6vIKb1fL0oSaDMg4lNtuAKNeni4mU5oVkubcSmRgRLUnINVQfT X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 20:jN92cQJdHGEYWbOXY0Ip1e8/IcfY64FgiCRzyBtpuYwnf+nCDTgijXJRz85xufFVnjpp7brCG5ri5VhrpIt0VcFc1+h5FXfN6UvKO3QZMilYzcCMGgXU2boQrty35SHgM0VGKe0sryrNLy0b56+slDtt9HTsBQyEuBaoAAsbLfgttWPioquVzEjTmVpc64+v1th5V5fL52QdtzfwIQDMt4AECjTlzypUBVKmM4vqoK/wdqYYr8wokQxzpvY2gnOVSxuvct++4REmaYsrHnutd/s5X0y1yQuIzmqCpsW+41EaGNg0Oja9mSqHr+Aa4Bdr9MNAjcR44k04eNXMHjTodReSGEy1K9z7xH3UhxAtGyodzvF6GdqQVOwOMX1EQXRIOMXyvnQLH8avwryIXH4FYuzQWuam0/MlGkery/Ni99hrCTIK+11w2+OFrFORQFsH98ANd+oykNJddoaWB/ZrV23vBw7ZEX+yhdBTsEjEiJtpopzwvLetZwNpbBGYnsWAG01GuffkuSE2AUfpBs8O3ZupNFhFeWaC5ec+ulRKG662b8Vna/TTGv0r1Rl/aPi5GjprW2lj61Us1pf2Ka4XYhkGiti029t0zVu0BMWl+no= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13021025)(8121501046)(13013025)(5005006)(93006095)(93003095)(3002001)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(20161123564025)(20161123558100)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR07MB1046; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR07MB1046; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR07MB1046; 4:yEd33wbhantxeU/SrpwxKCb1GusnZ4H2wWNZQk+fS9?= x3kQCC5oV7xf4keTjZD+Hj4/ZPZY9llWK+0RzfRugHwDCBTE7MRKwL4QFKhlvKsBvIUMAkhSj9br+wX8NmByAKlo4pFWBXenI+Y5OtqW/+ooFKzZ9SeqW99Tk2HatLvjQi+EmRGYQcELReQnZ9L/TDwXnUMgyjoecsrC8lQa/MhRfZfI41bo36slEauW2+5lnZ9A46BwZ1+b+xkRQti9ZnDLWEr1g+akZPy9auTDIKQWJBZzgIRB2tynbWrxumLbfvvoRQaOkfagmaIacklNzDzwtobYvhdfIXzSpqo4OPVyyoGhG8BjqqMCW56XGwGChaMZFLiZW/X9hx3+tukfnuC3ATwjSvGakB/N9u+tGrdSRF/BlXsJRtQyWBqOTmXSZzIUoCe8Z0H5OZYlqchvNaDRj/p76YBmBx/iPOYKsPFmP4KGnRWfF32+XTtOObTFBpbDqEvSoJme8/yL4oomxZ3PP57tD9be4Nawkiz3lW+SejYz2kw+oKvr6hy5Hw9VgnBjQl5WZLmGJ7+exP3kY1UClKp2O6sLHT5EPW9aiJGEtTtgI74VnHdfquOhYBmtH0HRsAg2PgQgBEbG/iZUvg7v+1UPZdd/NewufFnkAxSJvzJwLe/Os3VPXAvsrbgSpRiH63o/VscqnfRFIeWey8hPX1yCKvbEDMzWpbmy8mTqQWJcz8dlsSaG31qhagmns/tEbSv5KY1zLCZmh1G1djsKgwwN9jCPLgeDhLP9tJjZb3YUGO6N1c7v7kGvSyRR3tfEPKyYeUMss1F8OPAkbe4b9BBWlA2WIhwp2TA/9H9GAaryn5uKLQ6RTzHgQlAu7p8zT6FD4+Ju7tTwREdihpDg3WZE23ymeI20olL6ajc4tFccZRTvSXUfgNLZeVHQYCdbSlk5rx8WK4G8QVv/sPWLfT0n8bZzw1AZwIWCMuW6m5s2lJ85Emow9+fR49hnHX+NBGlB5N+8B7NI94zCcBtEdB1RS4duVGi0rjmcFuhplUNrwuPmal8Xj4tEntlVsOQobrKFZPfBt9y8b9yNRP2lmXgKaBCFu51tBMdiSepz5o1UWrlVmKJfzdsfr9Dt3ijdfYQ1ED2Gyn/H8nk5oz9lM4ozMJH/dXUpFeyhuEqi0z6Bum/++zDKJ3rOjJD5nIoQOoQJBNmEPlRRgpkUcRvGGGim15ivW7GmO3NEDVGM2afB5WnFKehpWYij0Lyo4= X-Forefront-PRVS: 0354B4BED2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR07MB1046; 23:96XoamMsY0+DhnDS1m0CtRPXRFRTBXDo9tR87FVLQ?= qkZ3jW7iYzo8xjoYa+MiFr2AZIzgRXY2E5hGKcUMwlfueHcKRNoopapLNszBHlCzL/LZHOH5FT3oSc5F1ZmAZmyBIfENhp9CxliJU1HdE78qBuQqbMQwKTatm8996ljvXaxXtxnVQYp+yNjHJ0PV+OItxc3cPQmlu0WZzmrY6fPfNGMjh63htu1o4PB2IDLZCF0tPMXdds3xa7avv8HvDLUcBkhaga0GuRmQjJkQgb0kWh92lDxw9aldfo5GFKEKLOzS0cHtMFpXtCR8fKOfJ5ZQk7K1l1fxMvw7NRqqGC+/qQndJAKZo/DTkDzd8C9n24pEhf/zG69Xjbhw6fTWuCYauOqnwg+IApJeXczNMUyqIz9Sh4ow7F6XNT+LkiOxXRr5Q7m8nz12FceBednFlHwZAoCr5GAEemhnc52T4FVKMzoVXxOIDu10IBg9N+Ul6qk5xeErZ24aTLE/Hup4y4WqNKhx83vpYBurc5p/c0LLnWNKvNa2wuLb4nNQWzBaa+VHB7zpssBlkIzUrCVB058rhQD5e39cXinS0ESN6ekaD+zQay3cYMBfSCU7MuOFBoq/YNU8I9trVhJnYEN53bZL7tSamrpAuhaDj1ya/yCV/t+wAERnehT5vyIO7/gN+vatR9BIjXPBp2fbpYfLMG0hs0ra5Rr78fraMWqW+fXX6HP9c/2RMm1PO9rVTeWD7Qh4qubW0g1FaKtTmMlUbK6HffqaCvYVwZ87vsBNOBrb4M1A3zty4nhn9yErdm3Dgw95lexTaTh/pzbofFQ+aXNLguEJBDL59tQ0r91UGDXk/vhQkee7YXx8qtwUP/yiLPHeBuxHpYgoYSDP+Rv1RJIePziAsw0rQN0iuRpS6YYod7kPVjTrnsniitFlWhAv3pMTyTRiFDksKkzZUfd/e1JTjLjWHhmSLCoKngd4OoNHluCiAsicRFGFvG86GgOn3qT4D4PZ6ffhCOnDTs8qWCdGN2Erq1x0HeNvnP+a3thb/Slqt4J+o47s/emFmjEqq7nTMmwyxzPLoSNkiNldydxtVip/P4qnTsLTgMe9RE67w== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR07MB1046; 6:Gfv4DcnDpWoThURFz+4WVBBaHvNPATG4sIn4TNmkDy?= z4d8R/LbXgotmI5hvflLjKzS2TlvWp8S86Ogtovd8VfBpxqIH1SOzKIZWt1EsV/TMyhA9fMoC8S/8crJvF4ONI5biiEEr8B1tPZMTd1segDjvmVGYOO7fZsXF7d8JmDmZKMmRFrR23QcPR07Wmn4OSAb74twiUA7UfB6yX+KM5vcmJljEqRydeHGkzPM4RqNxduHl6bnWA6epaL5xtJv4TKS4pYaPOFnlJaD19y/30MrkW2Kh7D6FB83A/Ilm67KExyTR7hfpf34vX5skRoJiyJzGa3TfkC0bClOX/DChF9l2SCUSMeADg2C0psicVoGMuRDHf0RcSCy0/bEk60NjU6l7LokmoswM0IO1SSQekMh0uEw+kopI4JLFpvJT+mOx3bzxKQK9E6Aj/6I04WAOcd/E1y7ev9ARusLUGA8gkl3uM8Bdpme902czIzSQOLiHJRMn0LnWyJLVle9J6O/X4qKLx/TMDKVn+8Ve8p+UyngZJBK5rDT8WgvZx7GgQIY5Grx5iK0DgIWdlcDFP8pRwfLd6+1Y9099gDjG6MqG8+feGHXGv6AbSa8bHz0Ham1E/b0ykJut4qsMKmI8T/+neUYTEeXuhsxR0ngKG85owQnhPvayJOaapU5pdah5+SuLHYcnVZ7ik7tL4xDwtP7KZNpby9K9LzVvQsJY/Ag0QwxCPye6Q2u0JH4n4fPI3/aXf7c311eSLot6POjIAkG6w3H1yNmyylTr2jyr5aCZlU4yjJ/C0m4ytSWCHdny3+d0wZ3xlXGgHpRlUm4kQ4aVjGsTvtvE6Unfc5FjMa6QwqzHeb9Swf9RQ4am17AA/0mBFkuJkWYhk0BiKmb3PKVs7fmWNcJTw8GQQylwXS5heiDURCU5Cg+Z3xDxgofTs8lhsKTMBlzBSYGoo0L1YPCbjZBFfaGl/mOxC45uJFxQjfRE1Mx2mNjaccG9eejcH3CNCnGagyQfOqlzRW6S4+JyR X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 5:5VyRbbgP8kyh/G8DDgVdGWTpgSzwNM2491eUvhsrZSSKQM3KuzPBhEM+X4F/LzeOzONsEhtA6R+pml94rI8K6QUNg3EAvuApnRxYRbwRyA8jMkwMqAUoGQkU21fMh9uwhuzN1tImA+9TmjZfbFaM545yDG5MAi3hMmu4/PP1DBcksqYGkA/JPTZPPNC54IJtW17ibOEMJyHT7dSJIk/EJR3MQCouBDFH+jhGyX8StsZN70CrAjJtviJjc3vUWH176unCoizTnVlZBE/76EWCaAMduGbZeaG1dM1Se89i6uU6WcOFsVE8UasCU6N3IBI/Nu6YpwGp5s6gRYT4UeaxYqMBWb9GkP52brsm8CT03poIV5U9LO0AkSrjKCcWNThR07Br51oK2ZZ+i+fTnHkxzb5QWQNKQdnuH28CRV/Ai0BbQXotJcNRv92tyayGV5Cdl8ev3fiepLn419gW2cRbWJmU6aCQqYYs4DzzTwSXLi85LArwQIxduuUhhehILcMK; 24:EndhCN0Nkh3tUR3Ya0LLCXWiGSqgAORnEFpJIK5cOxHOjSV/V1PaRIBft2znBt/WlzWio1dGDF5jg6kZuA9VCKMxdu6KQathOITHmfzEp2g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1046; 7:G2aZZEpsa7EHctReyG+sHgg6z/pvXqTQlNuRvTAWjBzV10cZvEEmtJKnJ0NbEVXQSQ1uliHXTwcXwqSb0qrZfRmanAEGCB/tCEOyNQjHcxthGLXvrjJsiBgJQIT/bVBeNB+NmOATVtNVRRGHux8fZv6ieT3oHDOj10cE9LbQUxrb7w8z40mtaoOMrO/wuxbvsZcv2Sgt55srrpw4xOqeu4o326VjIWkJ34TBiK3wMNlvX2u7gg+kZTOahZu0GnQJbmAyN2iwfC3FoyZ0JitMNs2DoiwXdVpiPBetvjxtf/BV9PYZUlH0YWvGNJkSbpTIX7pxGo65WmLVSBoUG8av2cR8+XCNBqLT5r8AWMcpRW192G2EYmiW5Vx24OPHn1EcvpLcXmdrEMSeE3ipRCNHZUU3B2NAo0rTDymbd3PC5ziQ73RRR+4/nCRBZUL9Wxlq7gl9fU00LLSflFkt4IWCnzVutbOLi5DFCwPFbkB+sDAeT+WwVViweogAGWdVAnmlOOBfUO0Jha7V8zK/ZC2SFx/jJgjhKC9yTksApu2c8aqAUqDUHT1w7KyoIvwu0HfjW8HOZLXSyaCOY45pgZTwm+3aF6+7eNlHILSUb7GAPSJHnfSaqlfURqST0kKif1m4TPZ2nYihqPlPprczoSEnXYQu/Zaq1FRQ6AbANX4wfKkLzFseeKLgqOsB3Q6aMtwhtLyI2/GMFzoZcPBEB10x9pfffCLACdexIwuhGe2H9MK+/p6EaMcT4gURGQFiw7fzb4cjApLtrWpragxpUDzbuk5YdFnohjky4m3mgtxUfDw= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 14:11:41.3464 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB1046 Subject: [lng-odp] [API-NEXT PATCH 1/4] linux-gen: sched: remove schedule interface depedency to qentry X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Do not use queue internal type in schedule interface. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_schedule_if.h | 8 +++-- platform/linux-generic/odp_queue.c | 9 ++++-- platform/linux-generic/odp_schedule.c | 18 ++++------- platform/linux-generic/odp_schedule_iquery.c | 41 +++++++++++++----------- platform/linux-generic/odp_schedule_sp.c | 18 +++-------- 5 files changed, 45 insertions(+), 49 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_schedule_if.h b/platform/linux-generic/include/odp_schedule_if.h index 5877a1cd..5abbb732 100644 --- a/platform/linux-generic/include/odp_schedule_if.h +++ b/platform/linux-generic/include/odp_schedule_if.h @@ -35,9 +35,10 @@ typedef int (*schedule_term_local_fn_t)(void); typedef void (*schedule_order_lock_fn_t)(void); typedef void (*schedule_order_unlock_fn_t)(void); typedef unsigned (*schedule_max_ordered_locks_fn_t)(void); -typedef void (*schedule_save_context_fn_t)(queue_entry_t *queue); +typedef void (*schedule_save_context_fn_t)(uint32_t queue_index, void *ptr); typedef struct schedule_fn_t { + int status_sync; schedule_pktio_start_fn_t pktio_start; schedule_thr_add_fn_t thr_add; schedule_thr_rem_fn_t thr_rem; @@ -45,7 +46,6 @@ typedef struct schedule_fn_t { schedule_init_queue_fn_t init_queue; schedule_destroy_queue_fn_t destroy_queue; schedule_sched_queue_fn_t sched_queue; - schedule_unsched_queue_fn_t unsched_queue; schedule_ord_enq_multi_fn_t ord_enq_multi; schedule_init_global_fn_t init_global; schedule_term_global_fn_t term_global; @@ -54,7 +54,11 @@ typedef struct schedule_fn_t { schedule_order_lock_fn_t order_lock; schedule_order_unlock_fn_t order_unlock; schedule_max_ordered_locks_fn_t max_ordered_locks; + + /* Called only when status_sync is set */ + schedule_unsched_queue_fn_t unsched_queue; schedule_save_context_fn_t save_context; + } schedule_fn_t; /* Interface towards the scheduler */ diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index 19945584..2db95fc6 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -474,6 +474,7 @@ static inline int deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], int i, j; queue_entry_t *queue; int updated = 0; + int status_sync = sched_fn->status_sync; queue = qentry_from_int(q_int); LOCK(&queue->s.lock); @@ -490,7 +491,9 @@ static inline int deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], /* Already empty queue */ if (queue->s.status == QUEUE_STATUS_SCHED) { queue->s.status = QUEUE_STATUS_NOTSCHED; - sched_fn->unsched_queue(queue->s.index); + + if (status_sync) + sched_fn->unsched_queue(queue->s.index); } UNLOCK(&queue->s.lock); @@ -533,8 +536,8 @@ static inline int deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], if (hdr == NULL) queue->s.tail = NULL; - if (queue->s.type == ODP_QUEUE_TYPE_SCHED) - sched_fn->save_context(queue); + if (status_sync && queue->s.type == ODP_QUEUE_TYPE_SCHED) + sched_fn->save_context(queue->s.index, queue); UNLOCK(&queue->s.lock); diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c index 814746c7..69de7ac0 100644 --- a/platform/linux-generic/odp_schedule.c +++ b/platform/linux-generic/odp_schedule.c @@ -22,9 +22,11 @@ #include #include #include -#include #include +/* Should remove this dependency */ +#include + /* Number of priority levels */ #define NUM_PRIO 8 @@ -1340,22 +1342,14 @@ static int schedule_sched_queue(uint32_t queue_index) return 0; } -static int schedule_unsched_queue(uint32_t queue_index ODP_UNUSED) -{ - return 0; -} - static int schedule_num_grps(void) { return NUM_SCHED_GRPS; } -static void schedule_save_context(queue_entry_t *queue ODP_UNUSED) -{ -} - /* Fill in scheduler interface */ const schedule_fn_t schedule_default_fn = { + .status_sync = 0, .pktio_start = schedule_pktio_start, .thr_add = schedule_thr_add, .thr_rem = schedule_thr_rem, @@ -1363,7 +1357,6 @@ const schedule_fn_t schedule_default_fn = { .init_queue = schedule_init_queue, .destroy_queue = schedule_destroy_queue, .sched_queue = schedule_sched_queue, - .unsched_queue = schedule_unsched_queue, .ord_enq_multi = schedule_ord_enq_multi, .init_global = schedule_init_global, .term_global = schedule_term_global, @@ -1372,7 +1365,8 @@ const schedule_fn_t schedule_default_fn = { .order_lock = order_lock, .order_unlock = order_unlock, .max_ordered_locks = schedule_max_ordered_locks, - .save_context = schedule_save_context + .unsched_queue = NULL, + .save_context = NULL }; /* Fill in scheduler API calls */ diff --git a/platform/linux-generic/odp_schedule_iquery.c b/platform/linux-generic/odp_schedule_iquery.c index b33ba7cd..75f56e63 100644 --- a/platform/linux-generic/odp_schedule_iquery.c +++ b/platform/linux-generic/odp_schedule_iquery.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -25,6 +24,9 @@ #include #include +/* Should remove this dependency */ +#include + /* Number of priority levels */ #define NUM_SCHED_PRIO 8 @@ -1267,11 +1269,23 @@ static unsigned schedule_max_ordered_locks(void) return MAX_ORDERED_LOCKS_PER_QUEUE; } -static void schedule_save_context(queue_entry_t *queue) +static inline bool is_atomic_queue(unsigned int queue_index) +{ + return (sched->queues[queue_index].sync == ODP_SCHED_SYNC_ATOMIC); +} + +static inline bool is_ordered_queue(unsigned int queue_index) +{ + return (sched->queues[queue_index].sync == ODP_SCHED_SYNC_ORDERED); +} + +static void schedule_save_context(uint32_t queue_index, void *ptr) { - if (queue->s.param.sched.sync == ODP_SCHED_SYNC_ATOMIC) { - thread_local.atomic = &sched->availables[queue->s.index]; - } else if (queue->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED) { + queue_entry_t *queue = ptr; + + if (is_atomic_queue(queue_index)) { + thread_local.atomic = &sched->availables[queue_index]; + } else if (is_ordered_queue(queue_index)) { uint64_t ctx; odp_atomic_u64_t *next_ctx; @@ -1285,6 +1299,7 @@ static void schedule_save_context(queue_entry_t *queue) /* Fill in scheduler interface */ const schedule_fn_t schedule_iquery_fn = { + .status_sync = 1, .pktio_start = schedule_pktio_start, .thr_add = group_add_thread, .thr_rem = group_remove_thread, @@ -1292,7 +1307,6 @@ const schedule_fn_t schedule_iquery_fn = { .init_queue = init_sched_queue, .destroy_queue = destroy_sched_queue, .sched_queue = schedule_sched_queue, - .unsched_queue = schedule_unsched_queue, .ord_enq_multi = schedule_ord_enq_multi, .init_global = schedule_init_global, .term_global = schedule_term_global, @@ -1301,7 +1315,8 @@ const schedule_fn_t schedule_iquery_fn = { .order_lock = order_lock, .order_unlock = order_unlock, .max_ordered_locks = schedule_max_ordered_locks, - .save_context = schedule_save_context, + .unsched_queue = schedule_unsched_queue, + .save_context = schedule_save_context }; /* Fill in scheduler API calls */ @@ -1428,18 +1443,6 @@ static void thread_clear_interests(sched_thread_local_t *thread, } } -static inline bool is_atomic_queue(unsigned int queue_index) -{ - return (sched->queues[queue_index].sync - == ODP_SCHED_SYNC_ATOMIC); -} - -static inline bool is_ordered_queue(unsigned int queue_index) -{ - return (sched->queues[queue_index].sync - == ODP_SCHED_SYNC_ORDERED); -} - static inline bool compete_atomic_queue(unsigned int queue_index) { bool expected = sched->availables[queue_index]; diff --git a/platform/linux-generic/odp_schedule_sp.c b/platform/linux-generic/odp_schedule_sp.c index 14b7aa88..9829acc5 100644 --- a/platform/linux-generic/odp_schedule_sp.c +++ b/platform/linux-generic/odp_schedule_sp.c @@ -410,11 +410,6 @@ static int sched_queue(uint32_t qi) return 0; } -static int unsched_queue(uint32_t qi ODP_UNUSED) -{ - return 0; -} - static int ord_enq_multi(queue_t q_int, void *buf_hdr[], int num, int *ret) { @@ -830,12 +825,9 @@ static void order_unlock(void) { } -static void save_context(queue_entry_t *queue ODP_UNUSED) -{ -} - /* Fill in scheduler interface */ const schedule_fn_t schedule_sp_fn = { + .status_sync = 0, .pktio_start = pktio_start, .thr_add = thr_add, .thr_rem = thr_rem, @@ -843,16 +835,16 @@ const schedule_fn_t schedule_sp_fn = { .init_queue = init_queue, .destroy_queue = destroy_queue, .sched_queue = sched_queue, - .unsched_queue = unsched_queue, .ord_enq_multi = ord_enq_multi, .init_global = init_global, .term_global = term_global, .init_local = init_local, .term_local = term_local, - .order_lock = order_lock, - .order_unlock = order_unlock, + .order_lock = order_lock, + .order_unlock = order_unlock, .max_ordered_locks = max_ordered_locks, - .save_context = save_context + .unsched_queue = NULL, + .save_context = NULL }; /* Fill in scheduler API calls */ From patchwork Fri Jun 30 14:10:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106711 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp2387523qge; Fri, 30 Jun 2017 07:12:14 -0700 (PDT) X-Received: by 10.200.3.213 with SMTP id z21mr21830261qtg.185.1498831934671; Fri, 30 Jun 2017 07:12:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498831934; cv=none; d=google.com; s=arc-20160816; b=OVNBj1XhD1DiGQnuSuehxojUkjpEX393EFHD0UKAgnv3osycYYm8thqLZp1WXFZOyl /9Z+8e4bJk2frJrjmTGP74J8jreDBcqJEVi9il4f/kneF+VyZ9KEFcyeX+GlAqeiTq+U YH+aFrUejI1j6DOgZ5qs5ifzGVweRsytMOifWjtmaawN7Px9u6IAIsT5Gu11wqkJZO/e 9F2MTFjh6irnlGMKSGesUPcG3W+fHLt7+UT8ap0lbrpXVeL2skjcnE1+UhJ8aRbiCF8P e3s456f2ITr5BIjAKL6iCbHLCZa8GimqtFPnmtophduku428kWi2ARWIelAz8s17CunC 2K8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to:arc-authentication-results; bh=QZCptHLE8H5VZnuR4G/1QQ7DfUL7HqgqS5uMGLhfXk0=; b=0kGE/1D4DDIVwvmHyGhLouRsmVuJxfnsm4wwejsKAYB5Tiw3sllp/9Yc71xx23BVZ8 7VNI0kYjoxbKLYb+AwU9hNxMgvVb8cfJEIuOg8eS0EpeOy9IPBkN3fwBjHoDk6OA8ERy SBwCvSNZ1f5Hq7K0rVJJXALwMQNjkSsXETa7F6k1HhaXbAusIem1+NSKZiP691D4nWHm u438BnQ2uUsDrpkanNUaENrxtm6PO81wYtUUqV2a9TMAP/XhJ2gNxqRD1SOYVSGDRNPa qk2h0x752fWKKpQc3tyYcGzTlFvbKAWz2BI7snhoqjJlrjIxGXSqfdAEkjn8tE007bno Rt0g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id l57si7781666qta.111.2017.06.30.07.12.14; Fri, 30 Jun 2017 07:12:14 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 2800161056; Fri, 30 Jun 2017 14:12:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id D0F0860EC3; Fri, 30 Jun 2017 14:11:40 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id B020060CB2; Fri, 30 Jun 2017 14:11:31 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00115.outbound.protection.outlook.com [40.107.0.115]) by lists.linaro.org (Postfix) with ESMTPS id 00C6B60CA9 for ; Fri, 30 Jun 2017 14:11:30 +0000 (UTC) Received: from DB6PR07CA0066.eurprd07.prod.outlook.com (2603:10a6:6:2a::28) by VI1PR0701MB2205.eurprd07.prod.outlook.com (2603:10a6:800:30::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6; Fri, 30 Jun 2017 14:11:28 +0000 Received: from VE1EUR03FT062.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::203) by DB6PR07CA0066.outlook.office365.com (2603:10a6:6:2a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6 via Frontend Transport; Fri, 30 Jun 2017 14:11:28 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by VE1EUR03FT062.mail.protection.outlook.com (10.152.18.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1199.9 via Frontend Transport; Fri, 30 Jun 2017 14:11:28 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAuou018823 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 30 Jun 2017 17:10:56 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAu4I018803 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Fri, 30 Jun 2017 17:10:56 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Fri, 30 Jun 2017 17:10:54 +0300 Message-ID: <20170630141056.11272-3-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170630141056.11272-1-petri.savolainen@linaro.org> References: <20170630141056.11272-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39860400002)(39450400003)(39400400002)(39850400002)(39840400002)(39410400002)(2980300002)(199003)(189002)(9170700003)(77096006)(50226002)(189998001)(53936002)(2906002)(356003)(8936002)(86362001)(48376002)(8676002)(305945005)(110136004)(38730400002)(81166006)(47776003)(50466002)(50986999)(1076002)(76176999)(5003940100001)(22756006)(2950100002)(105596002)(33646002)(6916009)(2351001)(106466001)(498600001)(5660300001)(36756003)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2205; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT062; 1:USK9jz2dL8z5s9aMXk1kkx/2xukpTgvsgAKZIt/MVY9hYua8CwOSaHSrBg5UF0FSr5IGtxJM5Vxy3HBi9FfZHsjTRElIIZPcdjkaFOWg69K29NY71AnczA3Vcj6PwUr/gHYu812y+3nNdpXM+sb5vsE0AhzV+RdWJgL9fkqs7ZCR4fY9MSmk1OsCrb5p/Ga6RW7/QM8cElSDCGNpJJoHf1AgyMWBQR6qgautny9PH1rtwsB+cA7zZgo3BUnRLSir7OqTqovCn5pUsXNJFExAc5T6JwgvtfiRBNNCzEvvFOcWsVfH12/c1yoemE3UjRmIwcm/vP9yKPEeo231tMzq7qSqNeLWjklYOG9UAmaLhvEQp/TP1KUefUYEsi9KhuU2//LcDJo1ehyTlXK/BYsLGnOT6tKzrPhu1i8Tn/F7NkY1R4N6Vdpt3fx0YCE0hmkOusz//H9jVQqDWoxpXRK11hKezaE6mk5Ks6Ugb8kZV+c/HMwRKIjkuEj0jdDEx50uFNKPajM16iy/8TREyO7pqRFuOfBLIUPOa/N/+TJwYBTktWSlcWa3Mb/009yAFkU0soBmlkxXlQTr8s3UkSolUL3IAcCU/fXvPiJW8RGhJ0WXM6TJFgwG/ov8gdAy6JcYfNPcgHXKz+m+P5K6uhfnOSu7ivlP4DSweDJ4KnYQLImritcA5fXbPydHKMFeev7dCfobk/N1tPvWdktH1grfU+vMQYKduD9zgHw0pW6YRqhKjU2LDWEJwqm3EmeWQRdMQ6hdgg4FrQzZf6S8t7nDMB4DracKBXFo3p81tbK8H88JhOFZEburGIcd3xN0jHaq7wVBtPuTau9gg25wwvybL4JjYIZ5qtQ9VzPMcolUMetvtwIJBI4+UYFlO3aj5kGz MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 73a5dd5a-d261-4ac3-acd7-08d4bfc1e684 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:VI1PR0701MB2205; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 3:OiVk1wE2gCnMmk+1JYYUU0d2R9mkpd0qhwH4pO1GYOulERUohobYFwdDHx4lOhg8BFzF3AtLVbv0LDk6UqqL6QBSmk7Zs7WRcRKsOAe7eyibjd6I0giu/dVRoH+kAv6SmydGXb1wxRrZPFXD8OY3S/wF60yxfSxqF/LP3BI0x6+jtZYZjCTMEyd8DJd9U0j7NTsXL3GqkJhc7OLbeFomEY2gaAw4YLKpM8hTgaAdOKroKfURg16Z4NC6oy0ETck5Rbk6v22tmLfIsKfbn1owzCG/Wj6ebjA9btMHPfTfZgPSjKBKpQVO2lgY3+yEFAmBbx5+1aPzZ61jbYInywrcECr2aTMLQjImI64rsGssXVC5d2OyeNn+TMohyyuUikG6YnKPzBgN0WOkBTdpp9U97nr13SOU/VRDPIoCdB5/NpX/ZA8e2ZNiNwsma67jp1o3JO+WWLl3XxcnsMo3GIwyA+zGKiodvPwiXnB7hqjTvMJ0qcb3B/diSw1XohlBYYYT0XaWIMtE/GYeIaTPQzZXFL7vTOt41PxmuvyuJ5+cPI4XNnKVudMvN4A23THoBm+xj5rUYMx6FO0faiEBCoQEuV1MxykBFHrWqxP5qCo9r2W1MEvAq/SNoaAMt8tjOvD77aWA/Ec5KW4w9BCMuyG/tBQ6ymzKCAJQWU7UhVdHf6i7ri3m/yGnMWLQOzab02vMuUuX8lIXX23IUO1Dhd56au9OzCpi1HXfEjf2Am+hZRHdp4NCekP3hfheiLhs8q1iFUNfNkrXG2ErRLR6fFzCBbFQVjax8h2B7EB5YUnWgO9h5opCyUjK4H2KaVGlFw8xf9Ui72A33DjtWVs2WYiUmAC+5mKRBKndzHVvID09pvY86QMf1ooIBsmyER4ksPNlOEbwxsV+c1PRi1M7ogLSFg== X-MS-TrafficTypeDiagnostic: VI1PR0701MB2205: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 25:En7A9ogz+C8oZgZbxUJ06H3Y3gXhgVucfcDV/KPIBMx5awSUTP3NkDBSLbfIIO2SSimfX8ivzdVFQsJ7GJN68zHv3FU0u986WfCN+hHw4wE8cM/I6yROMTnrtEog9ylUzi9uQK4lDtfXOz2Ga2a7YDcgVGm3uLzBzWgjzxsvzCCub4qS6pdbVhXKVx1JUzMOpna/dGMSI1i+kVi9CHh6kNxzbhwGKMkVG/8G00tc9IN9qy0hgg6+zWU/r19OFYEu/hMm3u+o8r7r/iab4VwJGSPXEgMUd2nvgs+ZTUwYf+0WqMMWdd5BSIPtAI8eagiqmEKjvkp6hS/7dud4DGjVvCNpsxeWoJkJtNSGk0ohjIaNlrAaOzlakVnJikovMg2eBuT9YIf9igqnAmZntZ1gOcyhsSj8G3mAayseMYI+tJ/kgvF4AvatqTPHUUpEwdMK5mcejMhxY5TQppohh2GAnyhpj5tdWZG616AgFgdRQIXTDxgMUJ34DAr3VhU7E8xSU0oJH3MypHl1v2Z7Z6zMpPcXLUU+ZpELdOZcztlsUCnw1HPXP4WhXFnVMZIDim4dz2/SbrM13Hu3y5q5nepUKvL3Y6LonqiStZIVM/w5VOrf615cdHyqQ20wSekopDERQwKX2AyDnOUcbGh/Boc1QmxeYo/98w7YzxmFNquwJRg3MGP4JDCGIqi53BUpf3lwO6DSVHeg/rVJ43vD2t2SNrrUC2QwyhvQTBWn+wjD7vVsmZFXQz0aurzvXdefhezftf0Aph+v6AB6q9euTFTxrVpj0qy332okfrxOPmMjkWShwPDT9V08pCnfB1YfCDHoLolHJ9p922UhcJobQQuyFGRFnyNKuuoFfwr6c9qIKAQs53GATWg7lYVJKWLzXOmFn3M249uEBSdFCNU/Cg1+DBKMVr0ViW6/nh0g662jRKU= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 31:hk4KKMZfUfEkeJMEn0OyF5EspNUCUtYApqJZaiLQzE+hJfpUQ0SNqkKoqisrjmb91Q77VSozJp5XVjbSVO94S1smviMQvBRp4H0uwHL5PAkV/57U2MJdS4oEWowVucOA9WjVwjNMRSUUash4zkrXE47gj75zOJ8JM7RcAcw9H5jHtRrlkC+etMxB4yCcI1gxMB5PZZWi+jjhG4Cgtua9K2UX139DnN6uvdNfT8usa6FyMPu72HcPchIFpc3dxo+gkNSi/+lSnazonNwspTwtkoxT4YHUXyjwPf17Ti5+yXDUXtJ3ajZK/mY1te3mKIp9sWgN8OIP7KXegclN1VAjKe6wmqHDMk8u3d1PPx0GzvernnZny3nu4OcJEdILDtCDeG4FlTauDv+SLG86iU1Hm6/4jGcb/tawdSmuHg9sccctcJ4z1CsKO7zu9m7t3NkQyEfPypRE+piMSSvKwIlRvS3ef4C+TMHKfIT4EAq8Rg3pPxqRy3cMLxy74+65u4vNYaCBv+2y+TDRTooNGSDTvpqzzJD+kzQsG8TNNloZnRPLUXIMQ0UBsLrVs0z8vwqEE0AmAreD1Igaq6kuZIpKGgO9r/Jgrs2srhLO7fZVVSCOpwGFM5dUyKSspacKWE/zT9L1HfvSXvOHEA7cikCoxJLXji7PP8EFwZAkWYe7+KRnGkJ6gV2Bc2cXS0f5iFoh0aMSW6NbUXqxvh2Iarwi5J1Qj11YE/oWpuTTTl92WWg= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 20:jWoQMQThSpoVPY5lgF8I1zTQ7yDYsdPvFf9PFfBjWLlWtegeFvkosNTiyOC+pRklQ7bL2zAa1DcVNupvJFG9UKKdtg0d13PXEe4LOXYXLDiXZFSZBr1iKJ5hNMz2aaP08y2hwLKwn9zTbd7Pobj1VKexR90IB7hDUpih0IlPGyWTzPWrb7p/8K/ScVHcxy9FybvjdsYTSMWDXCcLHNQVg7VHIKzYY45kwIddzyKmq7NcyZMRPjK+uMYYZlvXPt3USBJI1eZv2AMR8/bjGfb0vLuOTX2YSDtOPu/baFC/7s7x9X/hCqogoFXTdV2bYDWGQPIl2g+LtyNyEBu9GoohXLpjsHHlZ2daTSw74ocpYx39nz4/q7NktDGFFp8R34l9HyVxtt+CrG4zWzg9lhktQ3z2H0vil+vcOT76fkl6K7kQUKiXFh3llSCJ9vdb1XFe/QCTTy+hYLducNX1QUpCBOLWyvwSoCFHA2IRbZzYsdNjNmMp/twGyUrDKv/WzN5zd+8p+aLx64w1gbvTcB+kfcVPkJL7WeTSPe4692iXp0YcsMvij/s732PUhjr/tMyV7zA8sDBAE3oGJUxUFX/OwrEdoJdcCq81uDMo3ETsrrE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(13013025)(2017060910020)(13021025)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93003095)(6055026)(6041248)(20161123555025)(20161123560025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0701MB2205; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0701MB2205; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 4:EPyOfassBUqQ+dtQwmkcYNfM8PwWa11FZMeUDQs2?= d4j4M7LrNJaeSYPU31z5pwDDc9d4o5Rx1XJWORs0wNrqEfJt4qh8xAxC12kjHfgu3TYjjJfyHpEC98t4iLQoTaaRhO/SkesK9Cx5ZrZR8fi2Pl8lRhAIwC2Agukq0XXVc8vCTt36yuJ8lWj8TuntmyjZkMlsBubnvQ1dBNUqyGZ6DUFnyv69DtSXoXECn3VR0xEck0tQa3Bg50W2IgcEdUUYGUgKqXp154EbRaDcQsLwp8droLpNq0WF1bDi3ZArnnS9uKot38CeSKDrsw8QjfN4Cbf0wr/RdpIciteXT8H1ifUEJ7eQ01snap2L5WyYTbwv+v/fXhpdZ33JxnCpI08jEUy9iyuM+ICJ9a3sjs3uUo61w/SEE+X8lXqUvibgePwAuDGj36ovYMxWm3LTX2oOh5zVY2p3TbmSFELZ34aiFeb8XIki0i/w2i5v6aC/x6BlO1MGz4BeNEFJZXloKHrG5TBBfv2ZUD+pNnR2G+FHntDJUW7I3yxB6Jun06kxwwL8VxK01CCV8geGwiioJPmfJnjUESkaJNSr00wolM97TmEjz+nxY5DgJ0V9WOIYSwSBkAKI8Nn7Pg6nqShJx/vw6ToeElJLut+dfR+TOv6dsmLwFcVZfWyq3PIhynLwkG3U2oQ3T9ntgaRCYkBMJ+zKcjVGV66VY+Fj5Ws5v9exQwwYgVsovpNaLpOVCjGQsNlGwIcpKgiUTDPZb1i4bMGGMejZ+lM5NOYgJyi1pj5l3AKOvonUHP4dddN2Pd1uXhrU1mBeFqG4VOEDq/q9nnOGmwWuUBusfsCTbQXtCre6B+rGxfkWr/KFaoBF9mnrP2SqMgVBGq7LnbIqr0Na2Pgr/xNwlH3qoTkhj5G0mwlOHXtLftmKJMLXsBbFU9wu7ke5u7bdsFA4ds1FqzrQ97GSpp5eBKQHJceFue15hCI+CvKoNAk9DmEkO88TvZW4NetZKpghxFWpzxx8G0eRDMz0w0mjKGyHQ28euKu4r+d7Qllkc0lunhSXvFkq//ha+ZblebrTP3ylgqMkjxCAaI+DF4EPrdst81YEXZZsx1C0mfTM2mLB/lzSEC0gl+t+dKjNtqXazBjgsawgD2heXiR58uyYQbv/SzqLs23QRitUIHXz3gadsd0zroiSy8nT04NDWDALYoWvBO/a+lkdzRQRJIGXYEQW+RDS9krKhpthNdvRLLuKy6gVW2jDHzcoic9eUjbxsFo36FhuC3QrAEj1 X-Forefront-PRVS: 0354B4BED2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 23:wfxqPL9pqAvIJ89C5ddHD675gIcauEQoHhRGXrn?= WRhEYQLLVty95ULrXQOL32YLZ894+DCdDFASaop//8IfIJjssS/zxXtM+Zf6onWhhEtnzvrOomUPEfv7l58eCKLdcQmyaawvZp7zPOgd/f6CqkLtBSyS5bhbq1JRshp38e5aEx/A0nYYnWDMXjs0F4nguqhupzf+7X3H+2QYudcjjyGhxGTzjqxtqBuEBNvEDJkj8i9NaKjSg0cqRYFZNvdcVpy5mj/D9PPtawRAxztPguch/Avv3Jay6vPliJ9Z5qvZDvvW7z0E0xN1vwv2LeKCJs3ELm3Vi0eMh7A2iuuZObQ17nHxiQk8wklVsfzl4/RS4ncwEA8auFcsKoufzCOAsZAQcSsCJC2VRe9yyEPBi5IzWUpyK1YQpvKBHMeXBBi/D2xkalB4tmbJbjUkPz27PnG7cDCEBxA3tQnYLlb8TICk4R5iKc4UlMDDD3mAgCWkCNQGyOpfP4Rr5mgAHCQdomOj/9F+PcW+XUH8mzIt/6UNhI0MdSQFEZERUBJFTZDr5fKZwu0B1iIx6LZ5UGnbWS7P67yytmPSJ+ID/l4f58uAny2EltRbQfiN+PC9tj3MiOZ0dIgCgYSXrq1AJjKF9sqZ6vwNB+8ix08Mfq3zcI/jBqp14sQ1Eh/eXX4uKwRyI16hTyorIiVxXW5uEl51oyIhdlWl+LG3mIH3AazoW9olZUVZN0AiFR3lXq6n9EEK4hTREJMEgzCvtkYQ/uT6WDGc3JynU6PEzzVGhWt80mBLi5Wu1l2nvnpsOwIBqCkKDPNEdJ0LuDi/LZ7waqy8hM+b4BvxSD+82qlOkH4yf7kp+o/oDRCy4VPJIwzICJB7Uhs7/BDb3GZXd5bkuozVkC7wLkmr0Y5T3sYkJjWHPFeAa+1MWh4w+RdrYfTWULYHg5GJttptxN1QcweLMi1JJ8xQk6RCrm/M77VRbnNmIGg2+byHvsB3B2M2c8IYWqBDrMQdjs5veLWv8cdd0MUkK59bg2aNfjr/EpqFmug7Dhsg+TekblgTtEJxo4xNvw7Yj0JL+7JvdoDJByqQichI3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 6:yFswqVG5YbQ99jvlY+1gif1Sd91ARjO10Es/JWUe?= jsuUPj7qCZeqYql4/xdPNhxEO4yQ0M9Mx4BrPHO5oG7ne0CMkCuJuHgJqf8x+3iIrEubb29iHOk4udpJPDohEgGCRBcJTSIS1cK+naVPXMb5mEZ9SvJBdm0gwQGae/aAROcU9nr9hvxI34sfi3DRB2UUoQrbpvF+HF/Esy7EBhlR5qRI7u+tJ1U1WpXg1XpMNmTmTdfRetJ4VAlf2zzfObDgcqjQ1wpkpjlUe6u+5KRuZNo34gxKwc12w8agM3QviV3z1QJtR4E4J3qaP1Z7ZHPzdGka/bHISIfFXkKs3Cqn0PNlP1SqRxvLcTLHvOyfcUHq+onKcxCsKHegOenELKvX67XkuTOS6NLuOzlSNDWRmNS2cwbdICohLUTzHexMcGqxLH+gOFijqH7bplZFb1KyxQKWxHUn149bhyreJEO25FWXBY+Q8z8WrgpwjLK69T4kDAlxf0yO/chiJ7krcC0qW1hCXMOyKV2i21FOgi1FYJ8bhvG+pS2MQzVMD74Egh03vfoukFhe+PSPxXiIV0R6GmtCVTb+phjoWl6KOFQYm7n8NsiYK1A8hB1dLfTLgy00ePonflFn/ckz6lV/l7CK/QjbzGRcsoujyUIBWxpzubYTGNlpx/o4ZyWkymPoWFugjS2FTIK/k+eIdGHntag4VxIiecieZKeo0+77+CuEOSzChqtl/QFprdkGEbba81W232CJqaAhR3F4ZYzSWyCHTiiu+O95E0zxHcob6Y9vnwnGukbbw2TNLo0FyrmJWtwG3xukRUP+c0I2JzmA97teCHEyX+whdOWPzJq9scuSsMgnBTnRKZU/b2TB5onwi2R8PZUQXJqdYwWU9mY8h8n5MJ9mTqfw7Bup6Q5mQrDCqpFdNzBlAG3amT6NEch8eC2rksTGrgUdHY5786bgFdRi9N/VU1fBRr+S42s5bM87A0gcbcQp29PEo+NlqSl2VIGwxtYk72EOSsceqm/qHUyN X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 5:HWQQ/EOo/ENrf3iq0M8QDPoBgzuHkBoKBdnNvxS6OyjDK26EOaL0kCD2f+/ESCEjnjIbIFmlkUdQPg5nTRIh82c/MqOHXSkFkwVIWuYeAy3cZPvxj7ri1tl3Szm/KAJz7p4iMwS6sXLanc2rHEuwmF0Oeuf2QzxcB0Rnr1fOBz39H4kRX5myQrmD9eMNUen3yVCWcld2VYLWAPgGhaPTrG5r72dFOypBUfvq6N1wg/LOG6jxXfrIZnL9dmpNCPKRPDsrOMHDzoRz9+zuUW08r6FlWttOv35m955sCw2/ZhrODAaxbLLRs9tMRLTCbYqtRiLC3pNzNU47/O+GPw8rADajW2pkOarT3JxE1gPWOtyvh17yJhBTnyrr1hb+4zQGvTmJyhk8Ro24gRFENBmUNAJ+VBSvrtvuwi3cLah7hs/EeSqKE2ypeSfBK7dJLq/8yWdhEjpUpco1YkcKmmo/+JnwjR6l8pQt23jsxLhO2K7FhL6uP+OKUU+d2rOIo/I6; 24:PlcIobZltBAaGyITMRGtGFr/3RvZkRsdVJcdLBmVNPGUsmkC5EXkxGCYMDbwyuKL716FgIoHjaJNMrRbocISWVpICmPt+Bq442OHHwuarvA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 7:sZYp5kXaIbSuh/VCk+LmgPyXDgkPrMDCkhaPuYwOd42gViojSqjdka+fOFfq2icpoGmMb0TGLtu5EMP+RBtOpmbezvP1hz8jnyAqTwXxZj0uWHiaFOOYEjW4Fol0bRb0kopuVMhwbNxjBLmeJ2do/6yOfFvNcwJImgBfB38VMmmpEzXCWw5L0rla72C6cxeNsXVYD1jZZLGeLuDTFZ+oWln6INjt4fhh7ojcG0gs5eegiBGnJjowY7g1xIz9Nl+gfl2HnsJdQ78/0/5wIM1zFLmpxJHhNQeO51ebfPYYnDUZs2W28alo64dl5pBpx3KciRuBWoGa5uyfmFt1fp2xmmB/U7ENy72+bmeaOzVQyIcfi5Gbguma4IdEtZWXt6FjXtbPRieINLeOKUs2kZya1Pcafq/ZAL3RtK7zKoXUhoT3mVnT529uL8q6moJw23qnHJUzXgu1BUKCmtzCmZw50JSnT+2sEIzIUYObWfw2lANsk6QoW5/0d/9fFAKSdU6aOIrZemQDWBdpwn/YupKUnqTSjUWJLt5Zp3okSfyr9ZqKHRFlZPAcjpk4UbHqr8Js8qutM4UcodhtUIDTG7cl1Kkatsa7XdYgtNSXgBxS8MFebzCiKk8yMJE49Wf2/ZxOWgKZ8OPzkS9ilR0kGlWQdEfClfu9i9pQRtReKybYQ3OBYe9gvfaLMDmRCb+Ojzz8pj+WOw9CQmMfcm3xBIbijY4jnx7yGNFTp6lVYz2bVvZQZaFosMM+LqYONCSHarMvv0Px6ysOuabSTYsY4dAYUdGjGjag3GJelxMNcZ75h0I= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 14:11:28.1255 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2205 Subject: [lng-odp] [API-NEXT PATCH 2/4] linux-gen: sched: use config max ordered locks X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Use config file value for the number of ordered locks everywhere. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_config_internal.h | 2 +- platform/linux-generic/odp_schedule.c | 8 +------- platform/linux-generic/odp_schedule_iquery.c | 8 +------- 3 files changed, 3 insertions(+), 15 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_config_internal.h b/platform/linux-generic/include/odp_config_internal.h index 3cff0045..469396df 100644 --- a/platform/linux-generic/include/odp_config_internal.h +++ b/platform/linux-generic/include/odp_config_internal.h @@ -27,7 +27,7 @@ /* * Maximum number of ordered locks per queue */ -#define CONFIG_QUEUE_MAX_ORD_LOCKS 4 +#define CONFIG_QUEUE_MAX_ORD_LOCKS 2 /* * Maximum number of packet IO resources diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c index 69de7ac0..53670a71 100644 --- a/platform/linux-generic/odp_schedule.c +++ b/platform/linux-generic/odp_schedule.c @@ -121,12 +121,6 @@ ODP_STATIC_ASSERT((8 * sizeof(pri_mask_t)) >= QUEUES_PER_PRIO, /* Maximum number of dequeues */ #define MAX_DEQ CONFIG_BURST_SIZE -/* Maximum number of ordered locks per queue */ -#define MAX_ORDERED_LOCKS_PER_QUEUE 2 - -ODP_STATIC_ASSERT(MAX_ORDERED_LOCKS_PER_QUEUE <= CONFIG_QUEUE_MAX_ORD_LOCKS, - "Too_many_ordered_locks"); - /* Ordered stash size */ #define MAX_ORDERED_STASH 512 @@ -449,7 +443,7 @@ static inline int grp_update_tbl(void) static unsigned schedule_max_ordered_locks(void) { - return MAX_ORDERED_LOCKS_PER_QUEUE; + return CONFIG_QUEUE_MAX_ORD_LOCKS; } static inline int queue_per_prio(uint32_t queue_index) diff --git a/platform/linux-generic/odp_schedule_iquery.c b/platform/linux-generic/odp_schedule_iquery.c index 75f56e63..8d8dcc29 100644 --- a/platform/linux-generic/odp_schedule_iquery.c +++ b/platform/linux-generic/odp_schedule_iquery.c @@ -148,12 +148,6 @@ typedef struct { odp_event_t stash[MAX_DEQ], *top; } event_cache_t; -/* Maximum number of ordered locks per queue */ -#define MAX_ORDERED_LOCKS_PER_QUEUE 2 - -ODP_STATIC_ASSERT(MAX_ORDERED_LOCKS_PER_QUEUE <= CONFIG_QUEUE_MAX_ORD_LOCKS, - "Too_many_ordered_locks"); - /* Ordered stash size */ #define MAX_ORDERED_STASH 512 @@ -1266,7 +1260,7 @@ static void schedule_order_unlock(unsigned lock_index) static unsigned schedule_max_ordered_locks(void) { - return MAX_ORDERED_LOCKS_PER_QUEUE; + return CONFIG_QUEUE_MAX_ORD_LOCKS; } static inline bool is_atomic_queue(unsigned int queue_index) From patchwork Fri Jun 30 14:10:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106714 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp2391724qge; Fri, 30 Jun 2017 07:15:37 -0700 (PDT) X-Received: by 10.200.34.129 with SMTP id f1mr25905055qta.183.1498832137477; Fri, 30 Jun 2017 07:15:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498832137; cv=none; d=google.com; s=arc-20160816; b=nHaDIoJMZwbqiKmXNFsPCiwUpE7TAmrXHonNrh9lIy9rsr8gIjFDZVAVOSvRtJGy5s aql502jceil+bbxv5l06AQUpuXYGkKsUFrrLThSjVGiPjHvHImmSFS51y/CLVeYt2GqE flm/pnYxc/XRBdJAg1jgV09UfKibFVdxVb3zLt+dpx1sWztjQDctuJkW5QZ6TltiBpcD g0u+3LvXrXftmJmB0HM23WUMK6b5OsBK2hfcbaBS0DsTM2K4c/4i4F93HlOuif6cnlbn 2PrEllBRVa9RdM9u7ATcXNUIBe4r2+IUL16Bp3pVP4M6xQN4Lr4T0mbZqJKWLKCv0xQV Ir8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to:arc-authentication-results; bh=f7/k2+r6Z3Mc8RxqknAxGgv1YRBthowxWZ5u5vo5Kos=; b=0BVf/7vtcQWwvC/iHP+MHdNd/Lbh1gUxEtUORxA7qaqjiEorT9vHW/zeObKWoF/M8S HI0nlvIBikHzzrX1ZGkp6MGuueauIn0FmmwylOn1+i/qrBc+39+6FfM6f3LPolNqRZqp cYXYIE1ruhIChe+lnwfjOBsBV+XSD96ZA4gvutvhbspmdmWF9G0XbWvvdkC7dnVgSB+b vFX1UvpQJvEIqwGpuTClJeeDUTjJEL5P0kS0N4DlrS47lT9vhQQ5lEugmToL6MUB5FlX M0m95HbK+qbzM1jqWhm5Q39awqcrhrCvgFGHDBzpR1DieoAx/9MTRASA18zC76gHfAZU CVbg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id s20si7715845qtc.127.2017.06.30.07.15.37; Fri, 30 Jun 2017 07:15:37 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id E60476164D; Fri, 30 Jun 2017 14:15:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 5A3FB6156A; Fri, 30 Jun 2017 14:13:25 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 0521E6156A; Fri, 30 Jun 2017 14:13:13 +0000 (UTC) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0104.outbound.protection.outlook.com [104.47.2.104]) by lists.linaro.org (Postfix) with ESMTPS id 2FBC562874 for ; Fri, 30 Jun 2017 14:11:48 +0000 (UTC) Received: from DB6PR07CA0074.eurprd07.prod.outlook.com (2603:10a6:6:2b::12) by AM4PR0701MB2195.eurprd07.prod.outlook.com (2603:10a6:200:45::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.5; Fri, 30 Jun 2017 14:11:46 +0000 Received: from VE1EUR03FT062.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::209) by DB6PR07CA0074.outlook.office365.com (2603:10a6:6:2b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6 via Frontend Transport; Fri, 30 Jun 2017 14:11:46 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by VE1EUR03FT062.mail.protection.outlook.com (10.152.18.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1199.9 via Frontend Transport; Fri, 30 Jun 2017 14:11:46 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAvb1018830 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 30 Jun 2017 17:10:57 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAu4J018803 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Fri, 30 Jun 2017 17:10:56 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Fri, 30 Jun 2017 17:10:55 +0300 Message-ID: <20170630141056.11272-4-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170630141056.11272-1-petri.savolainen@linaro.org> References: <20170630141056.11272-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39840400002)(39860400002)(39400400002)(39450400003)(39850400002)(39410400002)(2980300002)(199003)(189002)(9170700003)(1076002)(86362001)(356003)(22756006)(305945005)(33646002)(76176999)(2950100002)(110136004)(6916009)(106466001)(77096006)(2351001)(2906002)(38730400002)(5660300001)(105596002)(48376002)(50986999)(50466002)(47776003)(53936002)(498600001)(8676002)(81166006)(36756003)(8936002)(5003940100001)(50226002)(189998001)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM4PR0701MB2195; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT062; 1:RhfSBk3BYrjaXzA+6wEETypIz7HRUqlDHrLH9176N5BhTg9gM6cooTiHkD9WjWFh93H2+razwJkTiH0pt+hnJM+2nWkbfmmNPpc+Dj509u3+BYsPF0fav3X0II3pGnyfz2mqB/WFFl6kqZTN7NII7UQrlIqoxUc0GQEeMThs//7lPtWl1LJjCFaRIvcfXhPbDrH+tDHdFvrf+6wkFjDCpR5epMkxp0Yrnh2/ZanCdau+ly+ZD6T7LoxWFUo/SQ18f+unCnxwib136z/gLLo6fR1xSLcCn623GhAIhqJE5hZ4jIMqIhOstABPJsK4CIaFy0lyl6CV8ISlpJQKdOiAANgerPbG/wYEvrIX7z2ajEZbT9ymyx9hpP6v7Ao0TM4VFZXDf9hDJ3FZrze6hjPlDy6hDTTO5xk8ZHQW4gcdUvimQKNKy8lwmF8OY0sYj7Ph6zNltEdnrMZIWSx+H6gIL1sIj9WeVuOMkzz7I1C9bnObdKa6QXSalL4BcDKCkTDBTV5GoxVzWdnzTgX0Hbiv5oe5N5+Hg64WVK+mpbceyPPnNR8jaHFZyS2AxptpNPGhSzGvD29oFiZJ1KfIOLnsAO92cUAdQhSpJsriKOG51nNx555EIGxKC2rsmIOov6pNtO+jBbf5V7cgy4vttXhOmzL2BM8MLNj7vKpVy2Ru5j0nd9UwQR2ShJ8W4FkmZGM4gHyLk5WlhO16lGX7uh5VUHnjGEYSq226xE/o7fLe0W0DQPP651fOg5kLxLPJ3L5ulzrwqFqrjhcjTiYJgmb9w1BOfTiENThogw+MooF5EhaD1ueIdKm7dJ+JVsJE5wE9lhwYyb0CBanbSQqBV9+QtD4w+VeU9g/6HetzJvyjvKOuc0jBVsER8eEAFqqasmCo MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c21b0195-6a0a-4cf1-af8c-08d4bfc1f133 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM4PR0701MB2195; X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 3:Cyzjx48O1l6SWRa2lCVtMHPnPAo8EvGLdlwJLmN3xdBl5VnbZblkVT9s6POxH38dIBhQqgZlXo4kvCppdToJirzy/6qUIIPboPtot3aki9z1LBcH7PizXaHGBselIYUMyG3uv5/+tEj4kvo8/EtgPZewzWZBUYCsKYRK2I1Z6fpggziBpaqVBj0IiyKQ3Pbb0D8LyYodtSbiXbKbyZSr3BXLxN3rdew4oNhdWSn2kKOq28ZHZzhiapheXch1maR+pLKkXDTC18H3HLYfYyRfeGzwB/fV0fqPPAiPCbA/5BUgrtC/8af5BiCJbOGiESD/Ywwr/rpzRLvlRCYW60G1/xC0Bj8+VQwhTPEIdNn881Zw1RRZM/ZBv7lemEtWdeBQx/UtI7webicJnwxDoITQnFYegWwrCPSg1WWCpAXW4wxoLGHZzlTLymXqZGxOTZ+kdn3A5sy/ihGhyDyMiMiACzUEa+BzNnA68hzdGft+aBvecT9pQG4wgCNk4wptRJ7E12jtHxB8tA89/utgK6yHRXe4bCeLDr2khkpj8C0gcPAKjuUGkH0SsYwTbMnh2gVQL15MNHK6KY0BsAM25prdGO68X5aVjoTwiF9w03TuOljE0YuvJt7kq/DFlJd6/YBVZuMquQQHavgI5XJSowFxlk0Zo6m+MeC6JloJtSqTbiqYKbX+2RjXOjunxtU2XQnm7D5+sx/lFXaAQJkOK9C3uxASqcPl7khEKWynXR+QtWRH8l+mCWHrpHcAVOSuFvY0jZ6jPaBSVQP0ACxjZfAijX07pbo9IEk91hGA3D+Mh9Vu9hgaDD3Fshom3AqMaQXByXyCzehZdqZCZi21xxNNRfp6/z166lX/2khDkVAlXvVQa7n6AlcLdfVzQVcrCl9iTtRi/UPvzJjMd+43cy7N5A== X-MS-TrafficTypeDiagnostic: AM4PR0701MB2195: X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 25:9WbP0nz1ArWXTUUT+UCzON2QhO7qyUhh5yF0FFa9e0/Xk60QBpcK8HGTW9YHboTyaf6I215ovA73pSQwErSOupbo4plaYYXkMdel7N1D0eqOXQweeVLatyhm8JGCFku0IZ7hvmSHaZ7KaZ0dhu5j/suec6vZQp+cu5W785iz9SQJUOVT+uomQm3gBMo28BdLVWXoQMhV/JOQMEQtXtRKRxNmc6AmK7AMLQ3kNUFtVEe9Ua8cTXW0vQ8DuP1FpaMiZnHhE7JpUx9KELzqv0QB1qN6EXl2kvQJ5biJUmJCq32Cd8K2SNmIZHmclh+9PVFVxSBUpB5u6QJtz6YvfyhE5/puZH496cIDbGWYWtEdJEzpr2FoUlDQ+aj9MwGiQ3b+L4DTeuQkzohszs0tsJv5VTus2zNQ4Yej7Z7j//WvIton168SIFP4+4yvXX9Zrv6SFNv2QNrCpTzLYd068sWw4saXVNFZXZuPh7ESCPIs8I7Oy9+00EmQIKZROSfG+B9/GvWY7fKsgjPqBIDY/VZXXOAjjv3Q8RYT11vmLNKtGbjcZDrYuzgrdw64q/FhPB0jGGxxPAL08WCBAMwRK00U11bVgwGupNrVoXL96bo7VRSBwi97Nwv8K8/vANQ5IOw+qWBwxd3VlwiyzBWPbdnOyJHmPCXExjalpVjfHM/7VO7Q0e9jP/EdxsmJaGZbImi95lmRSiDvvY0jR7nS72Qf0xGbpgplcJWfypiyZVC0k0fVSw1pKmoAKxCrV3qE0upLrzNlbgExMMC5IwEpsfTEtnBKAxIG4EOEi4X1owj86kd/0w300etBprqG2sh5W3vcUxBT9TmZoHjUNOngMmq8nipcZXLtE8nsK5orD61dgznixPTz4SE4rMm8FtNFv72lLTpAD4Ez/O6KL7sT/M7L1/zvJ0V5OAHBfoXdzVyoKrI= X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 31:KJ4lko733P1gezS/fPNxMElIaPDdlY/8PrKBMFCSKuIg1JjmPVqzJOWVLhJmpGkoA7ARCQ3Lbn/GUUxEmLWWqcbS056g851Tx7rro7x0HX9J/AXVYVD/4NL7bQGL7fPwPq39IFOYC5L4ugMTzZwbi93cW+NbH8ORZI5nEvjT0bmMXuB8mXNN9OD8M4xdn3XM4uY+fi9KJlKiq99+wDA0B38Y2phfrJK4lI6vgIj1d0ymc5TDaEpWc9FW4JxJQiVD1QH3qIAhJa46M+ZWpCrT03uoYnrk6LAnSR5Pgp5hQ+3Lj305hMWrnmDLPvbMpZOSxffNVyFiTE8plTmoiIAnCNNQyQ7olFDRS3hAbPFkQvT8XFaYdlNobKLvsMSbDkA3wCrZ4g8rjzPHolBk+E7YF09U6Tj/Dp2qAD426rnIA36waFeint/Ece/Din6bK2r3Kdup+aMHNt6/fj07GoO324YMWLsyVZ3yx1l7pd92TAGbytmHuBazjaISXaVnoG5j+iCkVqQ6q8BuhQLRsHWtk+VO9mU4fcNsRKdqLtC87WWOx/km087hN/KftWwu+GB1MFbfKNZjUhAWUgsWiO4HI7N6zFVtmcQqcgU2H0aEe5wXXW56YBr2T3aae1JX1uxwCZPUmBgCOzUr3VyIPvWmbBwzpxT17cATJUqe/JwTyghyDvkpOQhUy0TGRTAlAMJh5CzRJeQWk42xW6qTonza0g== X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 20:xXtdS0JmIdZ7aaoT0iF47CG0uUIMtgUWsrfwqb9sQpPzPgUGHqYba4nfhu0gROHTIXMO7MQi2bMRydMOxe6Sv/zRwlAOzHMxTqQrQIw7uB/hhBVXhYxWF7U+T6mMqWCh7ONMGsKjAXZHDO3NgYpTP5EZUJ4LIZ8C7J5mG2AY3VzFG21Q4LJ9hruEaCPhPxQTFD6gH6cWK+hB226btXK95yMp0nq7FhbVvsUzvLaVw9/d1BcAcn3CS78/YTStF/QH5ROQlplTCTEuZjU19wiPy0fkBNHH+2zM74z0/7aSvaro4NO+EYkXYYMhKenaCJ/qjrLpA19qMBh+PQzZCQR8xx8tFkqAxYR4yIdxIrdQGgoQSxcoOpCW4f1MwCsme/TlOLmjKzZBzDqGk2VFIgXDiIV75J/wT34Q7KVgUjeYcddnk4BdDZ6Mm4UakpllqXL9pyXdmFfqhyy/+9++IGysXpr6jKO1ofIVrRYcjaschJDMTwssPbrN0zISorbkVF+veX7lpdYxAzsjAyFq3SXdtkTGuvegstnEZh/qAnUho5XbtZLm5ELXqtCwM9CRkKniRPU2JwYZ5l6eRdHG7dLXJEIIQy4mWKpjbqn8Z+2uEaQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(22766785571888)(167848164394848); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13021025)(8121501046)(13013025)(5005006)(93006095)(93003095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123555025)(20161123562025)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM4PR0701MB2195; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM4PR0701MB2195; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR0701MB2195; 4:OYU6tLHC9lg2tiS2bP0NTSLAEDxYKeTewadU2O1i?= hx9BetgIieuYHgUYgHKfZ0UonamakyHUb7FQlOtFYXOfeyk0BOK7E384nQ2+V+arkmAfuls4CQfkG8f2BFj9LpuBlwuPkMdyOKpTChJszLR2en7pWVfj6bWI/ur2c0k/azYt+vp9aw8QfuNY8G8+ADdtKuPwqG/8ga0gxV5PUKyzuhElMo4k2sct/YEAToI947lTLSR/GYtHA2u/DKM4rxZR6y1HUoJabjh2VH7nstz/YYeCguANPkM7PMbkgIccsI59+lYY0iquw8UZcCRcI4aGD0NJq2rxqlOUfQA9WNKdSEpaHeU1hBHOkIMBKqnqR/874EiUUoCAaQmr1Z2kEbtzqIGsWe5PQvUv0ONKHk2qKOYtyE4uxx5U6HJ/lUJLGKlaF5xWKdo8SYyNNppWl914hUZrbiYamXT8D0G1rpPtUpAUWhahjHbz+CuSeXZwSY6/66w67vbZ5EnXUXhMztyTIQjPADv/jgmQL93LjShvpc0Fafv79i4Wg9TqCiRoTUfKxuiQy9vDOQE0ZVOwPZU0tWsG9oUTLRFNUbJdLR5wRY9rJCnPdqtTBauXxk9NVZuYkVopasD4WD2m4N/BJL3TBVxW2CLZndSXVJXpACD1fNBfK4+hfZ/4b0NBwzfyiQ2qO+qK+vhgMiU5Gc+ltrr7t+7iN+E+IdaAGTIK1F3h71N0n3SM/gYf39n+x23Ka7pSDs3zUS5N8Igov9OXR6k+kXEhGz/iqQ/o4BSPenHhbFIBvASBmX0X1lB4TuLq+JyVsyOV2+4/UbpEu3APCgnoYj2pp6vWgodRmxEUZdLfovA99YKmRDhI6PGX5rvs9pkS4ghNPFKhI0cTpuRZIVD/tccckuE4iBjCDzMxNuaIN8FRb39kP91YBNQG8x8/gLSRRunmWux7Lywz/VAme7KZYpNu8/4M+B3tTQ6g06WBTDPxz0f4rTbEMt9I4dyy1e+UfMLYdGsIleIRgZOmRuAjxE/wQoFcf9uuNDGo1mHfyBlOwdfKJElPqMFgkVRFFOu8OYUq9oiKg25adQhEPQPxyH0TEB6NqEFnbOs0JjjuiEafF9PLBnSv3UF4T0NMJiPPj/aZISsAtTWWWv7sDtky325oYXGbKZvPUF2IGYtRuBYxWEyZ3lH0yxZUM/RqjmgnUhhzv6j+HI9XaZSb09NMZQ6mSokOvzU+qVUWj71/wTVrdYc2K9HLDpPCuVVxPLZbCOBHP5dtAZ6VIXuwBKqVb7B1cEDLPUsE545SBp3zGQJfq+koxOjydU3XgW66daA= X-Forefront-PRVS: 0354B4BED2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR0701MB2195; 23:4AgEbdsnpImji5Qw3+IqH5ZkiRq8Eakyl+IYpGY?= trlMkBpaIYQ4gCZs162z0Y3jQbqWGZ+GV48TiYNG88xOtFfoKd1Gb3poYxS3geDTqZ0LakhgjK06huIp04U8ixOa5bJcva2O/LyJM9Zgn7xUzBdA7dMpWcU89dc4YPC1pqiQhhBqA/LmFsfSmpvhnf15pMY5EEfvCyd4FPwuMJ99k3vgaVXbK9zg9uXhfgNNLadiw4zBR77CYgRjgZk+bxrg4neVE6yZwS9/PWFKmKEdoX4xnBkWPe6aBY6+QVJCIITl0QQBE33znU3jY8p+xE4TBmaoU4Q5H+8xZy2sAZkR0mCO49qlL+Npbm4YZfsGuz64Ew4DTTR1212OHzZVe0JM8xUsnTVivfHZ0RH5lzB9nSGBljYa1TTnP6wVPJ+180299El4WhXASf77KI2h0wAHxvVtbskQuMLvi65NldDODNWkL2G1XftdHD8JKz1xKaEBCOlIOzMAWyf34km6i0hdNZ9pKr7Sk65ChSQcl6K67bSxwqn6fUNg7Siqu+DQo52g+LB82anWqgpYg3BORu4DK31hRLbPkBIKmjFo0Vy+HGAvCwLOXtPuFhdR89Lu9g6nhNo2PVPPT07CEIUR+u65RoEuTivfUQngdXf+e6vtB0xHQZmVU9UseAs2yRBQFpeGkaL+bzOJD+71kFez/T7gKw06uSxs57HC8LYU8sxgJIBMMlWrP8y2g69T/cRuAtMvF2iUb0RSSFUo4LmhLk41b8YM8e9bnnwmxjBCKNDtr3cgj7012YrxfDPFUWTCQLRKk1f5UL1kXOoicVEHuoxWYxe7IDPkOZBusPgQjtWJOtPjfmkTHWc/paTZi8Q9kJNERNk0E2hEKtVGuV2oBmJJdq3L0QwtgRPWYWuPtVYchQRiR/iXuh+O4YhyY4ESxIBwG+G8NNoySHS61ihXVxTGovXVXthO7aRQyYmZ26zhB51sfBUNCqtyWAMpgQf2qYyKnOq22DI6dylEaP5CQM7JXusFJGq9kxWNT+KBWEXROa+Kn1zLNSIu6OroEfkSt8vkjPRXuJaFCh364Z+sUmdIR X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR0701MB2195; 6:ZSoEJqO87UJPlmuyjqdWEJltjZYh4yeN0N1UwMoD?= Cbas6TzZzG5PPYt2oVAwH6SiARBLLuqcWRVFHPY0JSqY3zoUKI+I9M8NFEcRA2P1z1GlTRm4RnkCdokEB85g7blW49cx4hcpIy8uilj/cETfskamqCBXOdRHhfKJooTbXdYufQF4blUAy09dmrxl1qPP9sfu5tp5cxE3MuVv+EmpQijW0x69MktFaWWDJUeL2trjwBSVPKYLIOAlAWzvUvWz2jotpkcV/sX+bfCczDqLqBuYPzofHbiuW5+q1euwE+LiP2oXrlsgtT0ZbPm5fxpPklqba7p2lXLwXIoiuAoWy0k0OXhGSV6fi31BbJf5bkkUPYy3ynjkXezUVTSGCDkaOJUvMJtOHiuyoV7kZxBkH1QUatpiygiurBWcZnatyBAirKRczBuK9u3b/5j1Tjz0b0NceI3yaXD2vtTJ1/D48HZx/CpEmMGQBlQudYFUVVeQIoNe86pQVsEqo6LnkkWqEfSR151uw6uJH1uVCYglntMIGAARTfSfiVZ0fB2Ypmi7BVdSB+sxjg/RJEaRkQPkyz0vjC2wCar4ywBruM4/zwGkhz7yN6JTNWVWo8RX4cwXa3Sk/Pc1uersYbnDuNoA8eK1p3AacHz7mocM0F7D8NvfXrIoXZdFSaxCXrohI9Dgsy5QWwmoO4nNLfs0mZCe0FHTskW5Z0cYBGuoLR48GC1LD22aILRTg/nrYk5sJX4jQTzS4ZjhVnHpQM5bwaPy8Fj+a/kUHeMc7VZzkeMHXuzu+LKFgwZPJz2ZOR9Jwbc8neO81x4hcrTqf/6B0572rNO/1h2rHy9ZBXmfwCW1sKIFcdsQ1jdKWm7pZihf800LuDeOMXujqVDvoqPR9+jZaQfmoKQKRjM6zdWgQXOPBb06VZmgDOhwZ+oMfM5jQiaU+UjghFvULPMO4qc5npsDIErky17Vv/rSrPZV/1gloh4GSfLJnwUuxIzKJS7gKm+O9aSe7isIfvzjkb/btmlz X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 5:56vHAhcKhDcoBJOoKKzaTufpPf0aJo5rteCbVK1QjxWtH3EWGcp7ASuA9zQSMdYPgGlh1y/eJ7QdXMmOEmpL5myiprc5B8FYF6zQQWcuM5cgZFSU+zLHmAEIQwkPPTPLR43DyDMSmjR9msy/cZLduBYlYz5SctcjWf8+nmu+0mH0tSOKrpwxiYn1fvROHPUzszOwmgsDYLGfAp2+ipKTNxvgwXc59yUUxePL3+YkIE3bv5eYwoUl0NrGU+KkO4Um+d4viKptG8d+B3XjeGlOOru9XWYeTYGnU7NZGexcUh1+Lz5YNNXflf2UWefKIxWm8PpsG1ucJNffxWPJFSiqWAeYGsnwVlNjifs0oTVKfl8lKlKs7g3DBaONe6JFc6OD5qvMD49q/G9TCf3Zn6Ud4peDWhq35wz89vkfJjO3aeG+cEZKEoAQyVsZzh3MxFXyx3VrJnTUgyXgPKoNafSFVF9U1eBawvm/nxvqBDzMrftiOUJU+gnbq2SB8au4ThnX; 24:Hqy2nxhk61JOzslGApDUn6HLydNqfoc9asugBRWUikARmW1jA6by1/UMIk6YxbzpmLmPebUDSwmf6/u26i+Qx6rKCLnTnX/lI4lPQUV4RMw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM4PR0701MB2195; 7:c6vHVMrPTU1hVVWNO2XfHM0h6jPzNgdmlGVU1O5sRDlbrw6t9fBOnkDySK4Fno+DBwctCEwcKfQeAPepjWtMYP7xMKo9bT3DML8LJMk10jivvBAob5F/yUQ1AAyy53oE/M/98mgSS3YnRCGT9+0JqVj6URvTopke9qk68PBsYWaqYi2BNjqYdYJFT6bHi8DEBfoPQl0lastlJdA4l6ZI0Lkye5uOfftDIEFpNhBEi+CQDekVpPJNtQusz/+GVfYU9MUaT4UeSIECIC2q4yhs/DgL0viXdDUilrmo8BzWXiLZnkREh3Zs6Rv0ETtfOmMa9bcXp6swJoT6RazEsQw7u5vZ5IkbM3TYFJ/lQyv3d6pRa0YyagY71CCqcCdke2bZAvdUynlmjhJQOZzKTRJzUINTG2w7bL0vo3LqEmv13NPwJiIQMJinWQXIW+LZNBY4JQec4DfbyXYZ3sTDeaBaFgdTLBJ18FLreIwHpvu758GvI7kDt1weDrJ70+ZCRcD8b4JrNbImvPqjr84pLMOjESAb5Finao6THu3VJx9e7S3+2A3+qgGR0dJo7X3Ozjaqk3NxumoBFVODs2B6xsIYMMl2Erg2jqVaU67pUm1LsebNvaK2prpQSI9HBH15G8czd8QSQl0zdOjAxukff2oA7Efm1GlXbZrFz7gP8wn0Q3Fed5ja5PSP7uh6DWaxyTNH9Orvv0klDh6VT7fAbQ2F9OuJ0EdBkm7KuJ6qlIVhVszmY8/JL3uA3dMOEunJXkGX986p8pGJTx0K0AVSCE4PlVjsZzuNpmdEW0mkjXefgtk= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 14:11:46.0340 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0701MB2195 Subject: [lng-odp] [API-NEXT PATCH 3/4] linux-gen: sched: remove most dependecies to qentry X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Moved ordered queue context structure from queue internal structure to the scheduler. Ordering is a scheduler feature and thus all data and code about ordering should be in scheduler implementation. This removes most dependencies to qentry from the scheduler. Remaining dependecies are due to queue interface definition, which is not changed in this patch. Signed-off-by: Petri Savolainen --- .../linux-generic/include/odp_queue_internal.h | 7 -- platform/linux-generic/odp_queue.c | 40 +----- platform/linux-generic/odp_schedule.c | 135 ++++++++++++++------- platform/linux-generic/odp_schedule_iquery.c | 113 +++++++++++------ 4 files changed, 166 insertions(+), 129 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_queue_internal.h b/platform/linux-generic/include/odp_queue_internal.h index d79abd23..032dde88 100644 --- a/platform/linux-generic/include/odp_queue_internal.h +++ b/platform/linux-generic/include/odp_queue_internal.h @@ -42,13 +42,6 @@ struct queue_entry_s { odp_buffer_hdr_t *tail; int status; - struct { - odp_atomic_u64_t ctx; /**< Current ordered context id */ - odp_atomic_u64_t next_ctx; /**< Next unallocated context id */ - /** Array of ordered locks */ - odp_atomic_u64_t lock[CONFIG_QUEUE_MAX_ORD_LOCKS]; - } ordered ODP_ALIGNED_CACHE; - queue_enq_fn_t enqueue ODP_ALIGNED_CACHE; queue_deq_fn_t dequeue; queue_enq_multi_fn_t enqueue_multi; diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index 2db95fc6..d907779b 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -57,16 +57,6 @@ static inline odp_queue_t queue_from_id(uint32_t queue_id) return _odp_cast_scalar(odp_queue_t, queue_id + 1); } -static inline int queue_is_atomic(queue_entry_t *qe) -{ - return qe->s.param.sched.sync == ODP_SCHED_SYNC_ATOMIC; -} - -static inline int queue_is_ordered(queue_entry_t *qe) -{ - return qe->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED; -} - queue_entry_t *get_qentry(uint32_t queue_id) { return &queue_tbl->queue[queue_id]; @@ -278,13 +268,6 @@ static int queue_destroy(odp_queue_t handle) ODP_ERR("queue \"%s\" not empty\n", queue->s.name); return -1; } - if (queue_is_ordered(queue) && - odp_atomic_load_u64(&queue->s.ordered.ctx) != - odp_atomic_load_u64(&queue->s.ordered.next_ctx)) { - UNLOCK(&queue->s.lock); - ODP_ERR("queue \"%s\" reorder incomplete\n", queue->s.name); - return -1; - } switch (queue->s.status) { case QUEUE_STATUS_READY: @@ -610,20 +593,9 @@ static int queue_init(queue_entry_t *queue, const char *name, if (queue->s.param.sched.lock_count > sched_fn->max_ordered_locks()) return -1; - if (param->type == ODP_QUEUE_TYPE_SCHED) { + if (param->type == ODP_QUEUE_TYPE_SCHED) queue->s.param.deq_mode = ODP_QUEUE_OP_DISABLED; - if (param->sched.sync == ODP_SCHED_SYNC_ORDERED) { - unsigned i; - - odp_atomic_init_u64(&queue->s.ordered.ctx, 0); - odp_atomic_init_u64(&queue->s.ordered.next_ctx, 0); - - for (i = 0; i < queue->s.param.sched.lock_count; i++) - odp_atomic_init_u64(&queue->s.ordered.lock[i], - 0); - } - } queue->s.type = queue->s.param.type; queue->s.enqueue = queue_int_enq; @@ -719,16 +691,6 @@ int sched_cb_queue_grp(uint32_t queue_index) return qe->s.param.sched.group; } -int sched_cb_queue_is_ordered(uint32_t queue_index) -{ - return queue_is_ordered(get_qentry(queue_index)); -} - -int sched_cb_queue_is_atomic(uint32_t queue_index) -{ - return queue_is_atomic(get_qentry(queue_index)); -} - odp_queue_t sched_cb_queue_handle(uint32_t queue_index) { return queue_from_id(queue_index); diff --git a/platform/linux-generic/odp_schedule.c b/platform/linux-generic/odp_schedule.c index 53670a71..8af27673 100644 --- a/platform/linux-generic/odp_schedule.c +++ b/platform/linux-generic/odp_schedule.c @@ -65,8 +65,11 @@ ODP_STATIC_ASSERT((ODP_SCHED_PRIO_NORMAL > 0) && /* Maximum number of pktio poll commands */ #define NUM_PKTIO_CMD (MAX_PKTIN * NUM_PKTIO) +/* Not a valid index */ +#define NULL_INDEX ((uint32_t)-1) + /* Not a valid poll command */ -#define PKTIO_CMD_INVALID ((uint32_t)-1) +#define PKTIO_CMD_INVALID NULL_INDEX /* Pktio command is free */ #define PKTIO_CMD_FREE PKTIO_CMD_INVALID @@ -90,7 +93,7 @@ ODP_STATIC_ASSERT((ODP_SCHED_PRIO_NORMAL > 0) && #define PRIO_QUEUE_MASK (PRIO_QUEUE_RING_SIZE - 1) /* Priority queue empty, not a valid queue index. */ -#define PRIO_QUEUE_EMPTY ((uint32_t)-1) +#define PRIO_QUEUE_EMPTY NULL_INDEX /* For best performance, the number of queues should be a power of two. */ ODP_STATIC_ASSERT(CHECK_IS_POWER2(ODP_CONFIG_QUEUES), @@ -127,7 +130,7 @@ ODP_STATIC_ASSERT((8 * sizeof(pri_mask_t)) >= QUEUES_PER_PRIO, /* Storage for stashed enqueue operation arguments */ typedef struct { odp_buffer_hdr_t *buf_hdr[QUEUE_MULTI_MAX]; - queue_entry_t *queue; + uint32_t queue_index; int num; } ordered_stash_t; @@ -152,7 +155,8 @@ typedef struct { odp_queue_t queue; odp_event_t ev_stash[MAX_DEQ]; struct { - queue_entry_t *src_queue; /**< Source queue entry */ + /* Source queue index */ + uint32_t src_queue; uint64_t ctx; /**< Ordered context id */ int stash_num; /**< Number of stashed enqueue operations */ uint8_t in_order; /**< Order status */ @@ -197,6 +201,19 @@ typedef struct { uint32_t cmd_index; } pktio_cmd_t; +/* Order context of a queue */ +typedef struct { + /* Current ordered context id */ + odp_atomic_u64_t ctx ODP_ALIGNED_CACHE; + + /* Next unallocated context id */ + odp_atomic_u64_t next_ctx; + + /* Array of ordered locks */ + odp_atomic_u64_t lock[CONFIG_QUEUE_MAX_ORD_LOCKS]; + +} order_context_t ODP_ALIGNED_CACHE; + typedef struct { pri_mask_t pri_mask[NUM_PRIO]; odp_spinlock_t mask_lock; @@ -230,6 +247,8 @@ typedef struct { int grp; int prio; int queue_per_prio; + int sync; + unsigned order_lock_count; } queue[ODP_CONFIG_QUEUES]; struct { @@ -237,6 +256,8 @@ typedef struct { int num_cmd; } pktio[NUM_PKTIO]; + order_context_t order[ODP_CONFIG_QUEUES]; + } sched_global_t; /* Global scheduler context */ @@ -259,6 +280,7 @@ static void sched_local_init(void) sched_local.thr = odp_thread_id(); sched_local.queue = ODP_QUEUE_INVALID; sched_local.queue_index = PRIO_QUEUE_EMPTY; + sched_local.ordered.src_queue = NULL_INDEX; id = sched_local.thr & (QUEUES_PER_PRIO - 1); @@ -488,16 +510,35 @@ static void pri_clr_queue(uint32_t queue_index, int prio) static int schedule_init_queue(uint32_t queue_index, const odp_schedule_param_t *sched_param) { + int i; int prio = sched_param->prio; pri_set_queue(queue_index, prio); sched->queue[queue_index].grp = sched_param->group; sched->queue[queue_index].prio = prio; sched->queue[queue_index].queue_per_prio = queue_per_prio(queue_index); + sched->queue[queue_index].sync = sched_param->sync; + sched->queue[queue_index].order_lock_count = sched_param->lock_count; + + odp_atomic_init_u64(&sched->order[queue_index].ctx, 0); + odp_atomic_init_u64(&sched->order[queue_index].next_ctx, 0); + + for (i = 0; i < CONFIG_QUEUE_MAX_ORD_LOCKS; i++) + odp_atomic_init_u64(&sched->order[queue_index].lock[i], 0); return 0; } +static inline int queue_is_atomic(uint32_t queue_index) +{ + return sched->queue[queue_index].sync == ODP_SCHED_SYNC_ATOMIC; +} + +static inline int queue_is_ordered(uint32_t queue_index) +{ + return sched->queue[queue_index].sync == ODP_SCHED_SYNC_ORDERED; +} + static void schedule_destroy_queue(uint32_t queue_index) { int prio = sched->queue[queue_index].prio; @@ -506,6 +547,11 @@ static void schedule_destroy_queue(uint32_t queue_index) sched->queue[queue_index].grp = 0; sched->queue[queue_index].prio = 0; sched->queue[queue_index].queue_per_prio = 0; + + if (queue_is_ordered(queue_index) && + odp_atomic_load_u64(&sched->order[queue_index].ctx) != + odp_atomic_load_u64(&sched->order[queue_index].next_ctx)) + ODP_ERR("queue reorder incomplete\n"); } static int poll_cmd_queue_idx(int pktio_index, int pktin_idx) @@ -606,20 +652,20 @@ static void schedule_release_atomic(void) } } -static inline int ordered_own_turn(queue_entry_t *queue) +static inline int ordered_own_turn(uint32_t queue_index) { uint64_t ctx; - ctx = odp_atomic_load_acq_u64(&queue->s.ordered.ctx); + ctx = odp_atomic_load_acq_u64(&sched->order[queue_index].ctx); return ctx == sched_local.ordered.ctx; } -static inline void wait_for_order(queue_entry_t *queue) +static inline void wait_for_order(uint32_t queue_index) { /* Busy loop to synchronize ordered processing */ while (1) { - if (ordered_own_turn(queue)) + if (ordered_own_turn(queue_index)) break; odp_cpu_pause(); } @@ -635,52 +681,54 @@ static inline void ordered_stash_release(void) int i; for (i = 0; i < sched_local.ordered.stash_num; i++) { - queue_entry_t *queue; + queue_entry_t *queue_entry; + uint32_t queue_index; odp_buffer_hdr_t **buf_hdr; int num; - queue = sched_local.ordered.stash[i].queue; + queue_index = sched_local.ordered.stash[i].queue_index; + queue_entry = get_qentry(queue_index); buf_hdr = sched_local.ordered.stash[i].buf_hdr; num = sched_local.ordered.stash[i].num; - queue_fn->enq_multi(qentry_to_int(queue), buf_hdr, num); + queue_fn->enq_multi(qentry_to_int(queue_entry), buf_hdr, num); } sched_local.ordered.stash_num = 0; } static inline void release_ordered(void) { + uint32_t qi; unsigned i; - queue_entry_t *queue; - queue = sched_local.ordered.src_queue; + qi = sched_local.ordered.src_queue; - wait_for_order(queue); + wait_for_order(qi); /* Release all ordered locks */ - for (i = 0; i < queue->s.param.sched.lock_count; i++) { + for (i = 0; i < sched->queue[qi].order_lock_count; i++) { if (!sched_local.ordered.lock_called.u8[i]) - odp_atomic_store_rel_u64(&queue->s.ordered.lock[i], + odp_atomic_store_rel_u64(&sched->order[qi].lock[i], sched_local.ordered.ctx + 1); } sched_local.ordered.lock_called.all = 0; - sched_local.ordered.src_queue = NULL; + sched_local.ordered.src_queue = NULL_INDEX; sched_local.ordered.in_order = 0; ordered_stash_release(); /* Next thread can continue processing */ - odp_atomic_add_rel_u64(&queue->s.ordered.ctx, 1); + odp_atomic_add_rel_u64(&sched->order[qi].ctx, 1); } static void schedule_release_ordered(void) { - queue_entry_t *queue; + uint32_t queue_index; - queue = sched_local.ordered.src_queue; + queue_index = sched_local.ordered.src_queue; - if (odp_unlikely(!queue || sched_local.num)) + if (odp_unlikely((queue_index == NULL_INDEX) || sched_local.num)) return; release_ordered(); @@ -688,7 +736,7 @@ static void schedule_release_ordered(void) static inline void schedule_release_context(void) { - if (sched_local.ordered.src_queue != NULL) + if (sched_local.ordered.src_queue != NULL_INDEX) release_ordered(); else schedule_release_atomic(); @@ -715,9 +763,9 @@ static int schedule_ord_enq_multi(queue_t q_int, void *buf_hdr[], int i; uint32_t stash_num = sched_local.ordered.stash_num; queue_entry_t *dst_queue = qentry_from_int(q_int); - queue_entry_t *src_queue = sched_local.ordered.src_queue; + uint32_t src_queue = sched_local.ordered.src_queue; - if (!sched_local.ordered.src_queue || sched_local.ordered.in_order) + if ((src_queue == NULL_INDEX) || sched_local.ordered.in_order) return 0; if (ordered_own_turn(src_queue)) { @@ -740,7 +788,7 @@ static int schedule_ord_enq_multi(queue_t q_int, void *buf_hdr[], return 0; } - sched_local.ordered.stash[stash_num].queue = dst_queue; + sched_local.ordered.stash[stash_num].queue_index = dst_queue->s.index; sched_local.ordered.stash[stash_num].num = num; for (i = 0; i < num; i++) sched_local.ordered.stash[stash_num].buf_hdr[i] = buf_hdr[i]; @@ -803,7 +851,7 @@ static inline int do_schedule_grp(odp_queue_t *out_queue, odp_event_t out_ev[], prio > ODP_SCHED_PRIO_DEFAULT)) max_deq = MAX_DEQ / 2; - ordered = sched_cb_queue_is_ordered(qi); + ordered = queue_is_ordered(qi); /* Do not cache ordered events locally to improve * parallelism. Ordered context can only be released @@ -835,21 +883,18 @@ static inline int do_schedule_grp(odp_queue_t *out_queue, odp_event_t out_ev[], if (ordered) { uint64_t ctx; - queue_entry_t *queue; odp_atomic_u64_t *next_ctx; - queue = get_qentry(qi); - next_ctx = &queue->s.ordered.next_ctx; - + next_ctx = &sched->order[qi].next_ctx; ctx = odp_atomic_fetch_inc_u64(next_ctx); sched_local.ordered.ctx = ctx; - sched_local.ordered.src_queue = queue; + sched_local.ordered.src_queue = qi; /* Continue scheduling ordered queues */ ring_enq(ring, PRIO_QUEUE_MASK, qi); - } else if (sched_cb_queue_is_atomic(qi)) { + } else if (queue_is_atomic(qi)) { /* Hold queue during atomic access */ sched_local.queue_index = qi; } else { @@ -1041,14 +1086,14 @@ static int schedule_multi(odp_queue_t *out_queue, uint64_t wait, static inline void order_lock(void) { - queue_entry_t *queue; + uint32_t queue_index; - queue = sched_local.ordered.src_queue; + queue_index = sched_local.ordered.src_queue; - if (!queue) + if (queue_index == NULL_INDEX) return; - wait_for_order(queue); + wait_for_order(queue_index); } static void order_unlock(void) @@ -1058,14 +1103,15 @@ static void order_unlock(void) static void schedule_order_lock(unsigned lock_index) { odp_atomic_u64_t *ord_lock; - queue_entry_t *queue; + uint32_t queue_index; - queue = sched_local.ordered.src_queue; + queue_index = sched_local.ordered.src_queue; - ODP_ASSERT(queue && lock_index <= queue->s.param.sched.lock_count && + ODP_ASSERT(queue_index != NULL_INDEX && + lock_index <= sched->queue[queue_index].order_lock_count && !sched_local.ordered.lock_called.u8[lock_index]); - ord_lock = &queue->s.ordered.lock[lock_index]; + ord_lock = &sched->order[queue_index].lock[lock_index]; /* Busy loop to synchronize ordered processing */ while (1) { @@ -1084,13 +1130,14 @@ static void schedule_order_lock(unsigned lock_index) static void schedule_order_unlock(unsigned lock_index) { odp_atomic_u64_t *ord_lock; - queue_entry_t *queue; + uint32_t queue_index; - queue = sched_local.ordered.src_queue; + queue_index = sched_local.ordered.src_queue; - ODP_ASSERT(queue && lock_index <= queue->s.param.sched.lock_count); + ODP_ASSERT(queue_index != NULL_INDEX && + lock_index <= sched->queue[queue_index].order_lock_count); - ord_lock = &queue->s.ordered.lock[lock_index]; + ord_lock = &sched->order[queue_index].lock[lock_index]; ODP_ASSERT(sched_local.ordered.ctx == odp_atomic_load_u64(ord_lock)); diff --git a/platform/linux-generic/odp_schedule_iquery.c b/platform/linux-generic/odp_schedule_iquery.c index 8d8dcc29..f315a4f0 100644 --- a/platform/linux-generic/odp_schedule_iquery.c +++ b/platform/linux-generic/odp_schedule_iquery.c @@ -71,6 +71,8 @@ typedef struct { /* Maximum number of pktio poll commands */ #define NUM_PKTIO_CMD (MAX_PKTIN * NUM_PKTIO) +/* Not a valid index */ +#define NULL_INDEX ((uint32_t)-1) /* Pktio command is free */ #define PKTIO_CMD_FREE ((uint32_t)-1) @@ -117,6 +119,19 @@ typedef struct { /* Forward declaration */ typedef struct sched_thread_local sched_thread_local_t; +/* Order context of a queue */ +typedef struct { + /* Current ordered context id */ + odp_atomic_u64_t ctx ODP_ALIGNED_CACHE; + + /* Next unallocated context id */ + odp_atomic_u64_t next_ctx; + + /* Array of ordered locks */ + odp_atomic_u64_t lock[CONFIG_QUEUE_MAX_ORD_LOCKS]; + +} order_context_t ODP_ALIGNED_CACHE; + typedef struct { odp_shm_t selfie; @@ -139,6 +154,8 @@ typedef struct { /* Quick reference to per thread context */ sched_thread_local_t *threads[ODP_THREAD_COUNT_MAX]; + + order_context_t order[ODP_CONFIG_QUEUES]; } sched_global_t; /* Per thread events cache */ @@ -154,7 +171,7 @@ typedef struct { /* Storage for stashed enqueue operation arguments */ typedef struct { odp_buffer_hdr_t *buf_hdr[QUEUE_MULTI_MAX]; - queue_entry_t *queue; + uint32_t queue_index; int num; } ordered_stash_t; @@ -195,7 +212,8 @@ struct sched_thread_local { sparse_bitmap_iterator_t iterators[NUM_SCHED_PRIO]; struct { - queue_entry_t *src_queue; /**< Source queue entry */ + /* Source queue index */ + uint32_t src_queue; uint64_t ctx; /**< Ordered context id */ int stash_num; /**< Number of stashed enqueue operations */ uint8_t in_order; /**< Order status */ @@ -314,6 +332,7 @@ static void sched_thread_local_reset(void) thread_local.thread = odp_thread_id(); thread_local.cache.queue = ODP_QUEUE_INVALID; + thread_local.ordered.src_queue = NULL_INDEX; odp_rwlock_init(&thread_local.lock); @@ -395,7 +414,7 @@ static int schedule_term_local(void) static int init_sched_queue(uint32_t queue_index, const odp_schedule_param_t *sched_param) { - int prio, group, thread; + int prio, group, thread, i; sched_prio_t *P; sched_group_t *G; sched_thread_local_t *local; @@ -428,6 +447,12 @@ static int init_sched_queue(uint32_t queue_index, memcpy(&sched->queues[queue_index], sched_param, sizeof(odp_schedule_param_t)); + odp_atomic_init_u64(&sched->order[queue_index].ctx, 0); + odp_atomic_init_u64(&sched->order[queue_index].next_ctx, 0); + + for (i = 0; i < CONFIG_QUEUE_MAX_ORD_LOCKS; i++) + odp_atomic_init_u64(&sched->order[queue_index].lock[i], 0); + /* Update all threads in this schedule group to * start check this queue index upon scheduling. */ @@ -502,6 +527,11 @@ static void destroy_sched_queue(uint32_t queue_index) __destroy_sched_queue(G, queue_index); odp_rwlock_write_unlock(&G->lock); + + if (sched->queues[queue_index].sync == ODP_SCHED_SYNC_ORDERED && + odp_atomic_load_u64(&sched->order[queue_index].ctx) != + odp_atomic_load_u64(&sched->order[queue_index].next_ctx)) + ODP_ERR("queue reorder incomplete\n"); } static int pktio_cmd_queue_hash(int pktio, int pktin) @@ -1070,20 +1100,20 @@ static void schedule_release_atomic(void) } } -static inline int ordered_own_turn(queue_entry_t *queue) +static inline int ordered_own_turn(uint32_t queue_index) { uint64_t ctx; - ctx = odp_atomic_load_acq_u64(&queue->s.ordered.ctx); + ctx = odp_atomic_load_acq_u64(&sched->order[queue_index].ctx); return ctx == thread_local.ordered.ctx; } -static inline void wait_for_order(queue_entry_t *queue) +static inline void wait_for_order(uint32_t queue_index) { /* Busy loop to synchronize ordered processing */ while (1) { - if (ordered_own_turn(queue)) + if (ordered_own_turn(queue_index)) break; odp_cpu_pause(); } @@ -1099,52 +1129,55 @@ static inline void ordered_stash_release(void) int i; for (i = 0; i < thread_local.ordered.stash_num; i++) { - queue_entry_t *queue; + queue_entry_t *queue_entry; + uint32_t queue_index; odp_buffer_hdr_t **buf_hdr; int num; - queue = thread_local.ordered.stash[i].queue; + queue_index = thread_local.ordered.stash[i].queue_index; + queue_entry = get_qentry(queue_index); buf_hdr = thread_local.ordered.stash[i].buf_hdr; num = thread_local.ordered.stash[i].num; - queue_fn->enq_multi(qentry_to_int(queue), buf_hdr, num); + queue_fn->enq_multi(qentry_to_int(queue_entry), buf_hdr, num); } thread_local.ordered.stash_num = 0; } static inline void release_ordered(void) { + uint32_t qi; unsigned i; - queue_entry_t *queue; - queue = thread_local.ordered.src_queue; + qi = thread_local.ordered.src_queue; - wait_for_order(queue); + wait_for_order(qi); /* Release all ordered locks */ - for (i = 0; i < queue->s.param.sched.lock_count; i++) { + for (i = 0; i < sched->queues[qi].lock_count; i++) { if (!thread_local.ordered.lock_called.u8[i]) - odp_atomic_store_rel_u64(&queue->s.ordered.lock[i], + odp_atomic_store_rel_u64(&sched->order[qi].lock[i], thread_local.ordered.ctx + 1); } thread_local.ordered.lock_called.all = 0; - thread_local.ordered.src_queue = NULL; + thread_local.ordered.src_queue = NULL_INDEX; thread_local.ordered.in_order = 0; ordered_stash_release(); /* Next thread can continue processing */ - odp_atomic_add_rel_u64(&queue->s.ordered.ctx, 1); + odp_atomic_add_rel_u64(&sched->order[qi].ctx, 1); } static void schedule_release_ordered(void) { - queue_entry_t *queue; + uint32_t queue_index; - queue = thread_local.ordered.src_queue; + queue_index = thread_local.ordered.src_queue; - if (odp_unlikely(!queue || thread_local.cache.count)) + if (odp_unlikely((queue_index == NULL_INDEX) || + thread_local.cache.count)) return; release_ordered(); @@ -1152,7 +1185,7 @@ static void schedule_release_ordered(void) static inline void schedule_release_context(void) { - if (thread_local.ordered.src_queue != NULL) + if (thread_local.ordered.src_queue != NULL_INDEX) release_ordered(); else schedule_release_atomic(); @@ -1164,9 +1197,9 @@ static int schedule_ord_enq_multi(queue_t q_int, void *buf_hdr[], int i; uint32_t stash_num = thread_local.ordered.stash_num; queue_entry_t *dst_queue = qentry_from_int(q_int); - queue_entry_t *src_queue = thread_local.ordered.src_queue; + uint32_t src_queue = thread_local.ordered.src_queue; - if (!thread_local.ordered.src_queue || thread_local.ordered.in_order) + if ((src_queue == NULL_INDEX) || thread_local.ordered.in_order) return 0; if (ordered_own_turn(src_queue)) { @@ -1189,7 +1222,7 @@ static int schedule_ord_enq_multi(queue_t q_int, void *buf_hdr[], return 0; } - thread_local.ordered.stash[stash_num].queue = dst_queue; + thread_local.ordered.stash[stash_num].queue_index = dst_queue->s.index; thread_local.ordered.stash[stash_num].num = num; for (i = 0; i < num; i++) thread_local.ordered.stash[stash_num].buf_hdr[i] = buf_hdr[i]; @@ -1202,14 +1235,14 @@ static int schedule_ord_enq_multi(queue_t q_int, void *buf_hdr[], static void order_lock(void) { - queue_entry_t *queue; + uint32_t queue_index; - queue = thread_local.ordered.src_queue; + queue_index = thread_local.ordered.src_queue; - if (!queue) + if (queue_index == NULL_INDEX) return; - wait_for_order(queue); + wait_for_order(queue_index); } static void order_unlock(void) @@ -1219,14 +1252,15 @@ static void order_unlock(void) static void schedule_order_lock(unsigned lock_index) { odp_atomic_u64_t *ord_lock; - queue_entry_t *queue; + uint32_t queue_index; - queue = thread_local.ordered.src_queue; + queue_index = thread_local.ordered.src_queue; - ODP_ASSERT(queue && lock_index <= queue->s.param.sched.lock_count && + ODP_ASSERT(queue_index != NULL_INDEX && + lock_index <= sched->queues[queue_index].lock_count && !thread_local.ordered.lock_called.u8[lock_index]); - ord_lock = &queue->s.ordered.lock[lock_index]; + ord_lock = &sched->order[queue_index].lock[lock_index]; /* Busy loop to synchronize ordered processing */ while (1) { @@ -1245,13 +1279,14 @@ static void schedule_order_lock(unsigned lock_index) static void schedule_order_unlock(unsigned lock_index) { odp_atomic_u64_t *ord_lock; - queue_entry_t *queue; + uint32_t queue_index; - queue = thread_local.ordered.src_queue; + queue_index = thread_local.ordered.src_queue; - ODP_ASSERT(queue && lock_index <= queue->s.param.sched.lock_count); + ODP_ASSERT(queue_index != NULL_INDEX && + lock_index <= sched->queues[queue_index].lock_count); - ord_lock = &queue->s.ordered.lock[lock_index]; + ord_lock = &sched->order[queue_index].lock[lock_index]; ODP_ASSERT(thread_local.ordered.ctx == odp_atomic_load_u64(ord_lock)); @@ -1275,7 +1310,7 @@ static inline bool is_ordered_queue(unsigned int queue_index) static void schedule_save_context(uint32_t queue_index, void *ptr) { - queue_entry_t *queue = ptr; + (void)ptr; if (is_atomic_queue(queue_index)) { thread_local.atomic = &sched->availables[queue_index]; @@ -1283,11 +1318,11 @@ static void schedule_save_context(uint32_t queue_index, void *ptr) uint64_t ctx; odp_atomic_u64_t *next_ctx; - next_ctx = &queue->s.ordered.next_ctx; + next_ctx = &sched->order[queue_index].next_ctx; ctx = odp_atomic_fetch_inc_u64(next_ctx); thread_local.ordered.ctx = ctx; - thread_local.ordered.src_queue = queue; + thread_local.ordered.src_queue = queue_index; } } From patchwork Fri Jun 30 14:10:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106712 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp2388737qge; Fri, 30 Jun 2017 07:13:11 -0700 (PDT) X-Received: by 10.200.44.215 with SMTP id 23mr7486549qtx.100.1498831991784; Fri, 30 Jun 2017 07:13:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498831991; cv=none; d=google.com; s=arc-20160816; b=t89Y4EaJWu1YFHb4dJo2noK33nFK7f2douT2RAXSazcaovmgnRPmsAGudEO7qGg/4S EPH6MNGsum+iE5lRSNeehmPasuhBxrEZjarH/8Fpc467sZC8B0vL0lImT7U4tjbpHFAy eqmYzAal8CHo/A+/eRH9huevPaAfl5cY7C/8Qa60mOA3eI8ud+VW3peDT6qxjmqRgufg PAZZBeN3waZGkHJM3BvnHG8QI4tse4Kn7/j5SVkmt3rzmoAPxkBPXFCrqskqGf6qKA6w 3/utStejUdkmr0wbZH7QFo/BuTH0b6SFQhrjlkz6WG2nlVLErbWOIRIZ83Adch/qL9my thxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to:arc-authentication-results; bh=hbyge0kniqQ5Wgig9wpG9BjxbiKDLQ3I9/T4KyF9r0M=; b=vZP+8fIRNk9UXthWXL92uZ4HDdvd/KCLpj6Tz8fWrBkRYcyWPj0mydUiP3+rqK0gVN aDt2JtJkdFMIU0uN42UX3ope+NcDLoCUMWnjB1DVACW0SL8mn6JlyZtwHDv8+LvYPDLa LJ1MaAcfeku3B7JQRTUg5BKRIpgI3aSkx26wLM+U0A5uG+DxJS3S0bjIjRaHFmJ1NLfz wkweoJvM2vOFW8pABb3tYAgM2iXhcRVy7bxp41v6PYizsO06Okz+24YGBWywbPfakfzV ePYqApz6EBzl2beat5CmJAamcadjSNvg+t7pc9nJZEbiG6V/BsZlxLodhLVTxxzDEWp/ 5m8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id p83si7616443qki.47.2017.06.30.07.13.11; Fri, 30 Jun 2017 07:13:11 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 68AAA6156A; Fri, 30 Jun 2017 14:13:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 5BFEB60D95; Fri, 30 Jun 2017 14:12:16 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 965B360CB2; Fri, 30 Jun 2017 14:12:10 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00115.outbound.protection.outlook.com [40.107.0.115]) by lists.linaro.org (Postfix) with ESMTPS id 89CBF61056 for ; Fri, 30 Jun 2017 14:11:37 +0000 (UTC) Received: from DB6PR07CA0078.eurprd07.prod.outlook.com (2603:10a6:6:2b::16) by HE1PR07MB1049.eurprd07.prod.outlook.com (2a01:111:e400:581d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6; Fri, 30 Jun 2017 14:11:36 +0000 Received: from VE1EUR03FT062.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::207) by DB6PR07CA0078.outlook.office365.com (2603:10a6:6:2b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6 via Frontend Transport; Fri, 30 Jun 2017 14:11:35 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by VE1EUR03FT062.mail.protection.outlook.com (10.152.18.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1199.9 via Frontend Transport; Fri, 30 Jun 2017 14:11:34 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAv1t018835 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 30 Jun 2017 17:10:57 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5UEAu4K018803 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Fri, 30 Jun 2017 17:10:57 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Fri, 30 Jun 2017 17:10:56 +0300 Message-ID: <20170630141056.11272-5-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170630141056.11272-1-petri.savolainen@linaro.org> References: <20170630141056.11272-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39850400002)(39400400002)(39450400003)(39840400002)(39860400002)(39410400002)(2980300002)(189002)(199003)(9170700003)(189998001)(1076002)(36756003)(5660300001)(305945005)(22756006)(86362001)(498600001)(77096006)(2906002)(8936002)(81166006)(50226002)(5003940100001)(47776003)(2950100002)(38730400002)(106466001)(110136004)(105596002)(6916009)(356003)(33646002)(8676002)(2351001)(53936002)(50466002)(76176999)(50986999)(48376002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR07MB1049; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT062; 1:aA7fUIHB9FobpfHxvil3/Zmq/+iyb5/89xCYGcGXs9GPvmV/pXnc1ZNacajKXejClbcX/ZvdvRI0gKYEa4SOMjsDaIJNVYay5AJqsF3ZSQumNGXRY/+kUICxo1IlHPvxxlfSQLadtCI+bR/SdeS12FCNFVKSp87TkHX5cBZYVKN7QcJMpF+dTL+gQu6bXBJA3JEEueneawZ1UVNZK6c6lUShbiGJwf+VKCCrid/LalLni+7D0bNW6FSY2otMhmfHC1nIb4At3qOuZSsY9LvEUB9phpYfPBWABfpEOrr8RmQWHilDMeorLBJA8tbcjx6qbxN2MSZMLIap8EWXXsudKIldhJY+D185/mI8rOnZuHOX7aNNyrlAJoBT1Vbc35CFNXwUAY8D8Uybhs99vZ0zO9+ruoGfPD8b1saehrf1u/WSV+/Cu7ju0LmtpQvH8GmTEwUjrwgyf4U0HW8TTbaathrKETd2NnbXNpD+E+2nYq2o99Zi8PBkV0xzBLbr3uKNUHcffb5OSGN6VB6RjJ1zUjm4hLHwQa381pXc1UkxM3vNin3aLc5ReeSl6hF8jrlwpoYLn9DyjD1xVCwI8k8PFejpP8q0edueFucA33WIVz3ZPVCEe+6ELylWRnaBYAvT7DgYqNX3nM4FrtpaUgUCe7ySjEgkZ0p5tny0xWjeIeqOUyEpbMItgBMQBAAg+FQLH4ZMpfQ54jiKC+0Ech29PjOnTFj+5/tuo4UANIwdh66CaZ4pljX9xE6eJZYcUxlBfV6/sfqNYiWvl1ZiOYxPV094gQo8By5MWPcD6nuMjGynBoWtHHnR4CJQtw910V0qyT2snLi65Dw8icKZafo0D7gH8MJzOH7O+nuAcUVaWgm+QZ2P+jGdyGz+xxQe2MjI MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ac759c2d-0343-40ef-d397-08d4bfc1ea72 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR07MB1049; X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 3:oxkRkoGmtrLPyELq9n8ZNSz5FbuXWTS0QBDgSQsEnitAIt99o0y/5/PQpTrCdHHIgFqxTpS9n0pFSmRUphvqownh4zaU3Jg8fIHlXd2sbz2LwTgviQ2a4gH+ti+BjzyO7PLwWPpWFtTj25+sVHWA0l+E5GQsHML7sJ4e8aHsD06xqjKILEdu10FhZ/oW9bGIbWhlnnUzuJS2y5SEcEQBH6//PL/nJGF9129JBYfpDpeOkVJAlGJreCwkSofSSS/UgYYrJQqthXgFCBH/k8b36Cjaev1NOwyYTm5CG5KG9XPgwFm+7bGQwrlxuYOMmB1RODKTYcPceJ90Tm6+vZ5ojaTMvQRap56PCCStGXU/1ihImzgtq0Zio6y9K9eBgaCtE+kk63NzlcZa8Qr6UsCeVIEl67lr8E/f8Jo2TJooxapA7cnVmGwhGhiZ+SmN9HfyDUehRZX/AkB9XwmXCVrjQL6bGy4g0YwPAHvouI0P5eDxy9Ru1wEK/nzIeXUDBHqnua+2efvFeEyupKhZ+lsaixA26LhUCP9gL3an5dfJTjHPc/UiVjuqHMnFN4O+uBy3skQfZBpDXiiTgPECplIS1mL+maqp/DLE/O1hLFrkkvMva+YiVPolHekSXEeJMV9WoOOJb9rZQeopYw1WTNyl/jov49NVEBid3ogH9cvJb1wSMKHxd1UqcNBkOtrrMRtHhfP0lJvC/4YAmZAg0Z9YubktD166CLKvXm6HpzVPG+rMHeYWSVxgw9RPLqRx0qe2Mgca8f82+NYAdSX0Ihr8RXl6vI4F7urLBZvX8/1mDCynqUOZicKK9wPdCQv0Ag56hRFk1YU21qzBC+HFMW9zWaoQZLsMcqHaOKXZAkNKR88AJDsW2zR9hOxDK0iDhxuQFlf4opytcTs8DyGSW5bhrw== X-MS-TrafficTypeDiagnostic: HE1PR07MB1049: X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 25:FtYEOGN2tEJOmq86yCGOiqlKGv6iJcn5Fqix3LKEmzXDG+4msGDJlZ8CTbEBKZAx3ovjlKEqp2ieqhUEGLXgZJ9MlTWz1JlkPUfQ9Cxu9ekn7p0rxC7iUAif1opq7Fl5BlobhI12bNZupbciKrIMtvswX7IYsBocmh4/oZimjjDWLpecRLgU/gxRSNkSTqKFKu0kIWcpYxsCSOO9GxRdtgaU9Da6PUFIm9BA2OhX7O/Tc6drQ+kv0CpnW5z9RBo0As5sUskg4XX8e0K3/NhEag+X3ZPT7DpXcsf/jUctwZm7ZnADlxqlCCe/G2Gn+PXVBVVBWaVmgexvIPV8FgLZV5sw9H0Tu9Glb7h6Yh5vSTVD0Rp+7qojbFnaKy3K0JPCnEmagudtldxoOA1Cm/T0WTe6vdFjiBRwI7uP0Pm5Q6NaX3OfDVXrR+K5KViqwErb8+vj4GziU7NO5U28rgwGj+7xi8EfRjmpxTcVHXyBaP4aH83sbKAMOnjQetT1eVAYKel2IvitbFAYhF4bTTgsLATXZJVIXlX6iDwHcitTahNWXPHGp3FB3lpd5IREdNk08I2PiBh/3Q1vie6uy3prsZ5ARUJciD02ZVsMT04KV8J5L2+r1r+T/ywO22tCAffcqSZv25XZW9W75ikxekD2XEklkMHFq1pn/za939NhiGrFSARIi6veMnWMobF4L+IRZnCQSRCqo690vea3uL5ECsHELfsrgmmxpg+UKpQ+mrXWqd7XLhhVGBWTwgj7nGRrxq5tZDJjxq5K0Hu5q9yPcDWf5HgE9MThehVU9JdQVitPsBMjmwX6PTzCdYrmEXKPWykpyQ5WrzbFUyeuQiQm3unJLyd3XJyISjJT/nqJKCjPQfGhgO8dS7GfExOvcdJDksD+63wa/T/3gqDkIW9DKcPxvCMWCB7QViguGSxuhVI= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 31:CX8qX2Wx9VECabxsqdYlJpYVhk0Wqmqoequcqum5OphAbZ/K8uBGluxfK15GMVKB+XLPWwyC3DvcD3UUZcqIml5HGs6C6okZplCiC4gFME89gZbQAxnaoFbYCQut9Ba2k/dbornyd+tgvvP5UopFiHw1v0fln53eb3263g+fu6nEmc8iT4v3CIKmDqeT6AmD/jgYRfuxqYf33Tqqusaa/hBbuhTc76JubsfE3SFFW9sFsDTe6h4geSh6TvHa3ogGWK2jW25iBLoB0Jfjf73K/3jWhZZUXzJ+kzRr7TeuVJ8rjUPoj6C/n/citWcQeLF8VL14i927q5k56Dej4pDdXTqb6YKB09JtaG8EGu2ba5arnWhrlnI3pTV/4ovJeZlOIzIjforO7Lz4y74l8r8vb+s6yXazMXjWIyxdQ/ZlPLL6Ua8vPgZqPJTebXkeiLDvMZag1YEwkaiqsY7IO3guwGxWtPtPpHe7NH9dYasC5z5vPZOqGQJsP1ANwi7eLq8JjNLFMYaAflQdA4SOdMEaFSfm1vuSzXt18h868j8IZOFIbA4MBJA27bKxIez3pDPtQW9Sms38DQ9NZ4rAUOfmz5M7KtZV0NYeSGcVvfyQvkthRxiKN75z4sJSv/b/Bs0p1QWs6E4atDDSrbx/Ibou9R5Vl++rshc513YKg1dOU3pvnkSvfsUufZaqTctnNFEc X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 20:vbPe0JVutpLxNlm0EVdMZhMjk24t0KPAhmdf7475qJE47S1rzSB2Gtj9IsudL1xDLHK9dnh+l+lhLnwRdtFH503iIvVAhXlfaXBPVX/aolL9sdC9NhV7NgoLRLEwpzp358hOfl3HbDco6hs+RTDkR/lkGLiL5N9JMu/zS3aG5ZuT6K1pl4pNupymaug0JqJwxfoVV+tQ8cuNoAZIch6yuuvEXX9Il3vb77CDUNMapFp9qoVY0IRfIZj2soJHg9FSmLHRMhFQDSKxL15nUB+1XsnqhNUzOUg2VWxvFGebNlDrWRdcCJHS8HRqKJD/ofS6u3L6S7M7YReeEf5ndncJIYT/jul5N0GLEgvP3cFQ5XUBXkQF47FGb5R8ALAcgW7bYkz5mjW+Ia0FC7L+vfhs3QD0wJU+92PpFvzX+6tzTzs8OhaIo2t3+jx55qqk4pAiYUTOsxThnZNRgZ+2PVG0ugJccZV+SuxqIwBWP+MM+63UWuOq8Z+NHPob1GYHt7gnlqo2bX/tBky0t4vsnt3X4WHgEqtQCKI8ES81K6hH2MwjkJw3xu/+mlGBxTt0pzUE0NZ3S3yboVWF7jRP9QclBYLP6Qw617Gg66YS8BkBbuw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(13013025)(13021025)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93003095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123558100)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR07MB1049; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR07MB1049; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1049; 4:hofvBV8EUo9EKZCm8xv4RcCG6mt3N+LSkiShbHUkt6?= L0LNQSax6i59xLko5UMBC/akZ4ubIlh72uKo/O8fibBbsRy/oM8W0j6p5q6uPu1csrboSrKrOWWmNRJZZL39mVxADetDs6Zjfp/Tmsr9cBFVIqAiwsMdhjXqS8WJSXTr+rndUkc/wQYX0A/kZct0SPJo0lgo3wddpwbBeABgkLPN2AX1f7dsat24RUpfSYSesw39+Gjt1KPUB+hdHykHHaxGHd4nCNGzOl+7BWlpKXwxu+yP4obabpLw4XnrjcvU6ybBJhFbTQjwlHsRsUJf6mRAlHgk5NqvOy/El105d3cXtgKhSnycs1nqS7kKX4VbexE2mdF6B8on1q4Y0JNMC3fxLFl35nmFvquj9x8uHkshz1vj/uy96mUR6MAha5RQt4YmlFp9b1C6GxaKKLu7Ypd6KTmtGdtoLMhYpnnwX93eWEPWDNDeIROOe3O6cJBPQ5iRxJgpzJ07uFLtmV6VniRycroMjwDD9yYeGbk45VSfyffz5lt1tEWlLO6t7XhnrbmS8XzhapE7+agYhHFnwcJV1maa1apvI/Tkg30NrcGubA8/CPCQMUZ3PcirJMdZvROx94iDQHp9St2MM/SQh9ggAXXLMLA2URavBGPR6WR8oFYaZplJHQDhjj5TAtA1UG/d9q5OeIX86gJ+ojrzUu3Xfd50D/H1bDrtCx3Hx6yVGTqgGRO37o5KeOy4MPgHeTL4ZgpyDgjMy5+w4igrFdrx8H0C+zBbic//+stNXyx9L4Q2dXSJ2ltb+HNm4pd1T7xLBzY4qbYvArynnNyDhUipIsIrQR9sjHeQzQBSNZAfhKWe603qU6M4WYcjV5Ny3ng5r0Y5XSqe/MPyCxuNSRSMZgI2mzo1m3LXOukpHEiCICXA7rxTLSxsmwN7m5af1ArCgyl6DiLbzIXJrbloaGZ9Z5mCPi5djeWF3rpXZybFHC0zHtMQfVp+hW4lMGDnHN9qRZw/xUDDzCKzposgPTDYCmnyoEZ1K670nx7aE9473UH0P1zlo1mjDTLvLyvns4SosldbpNduOHVMV9zGfOEBgmgAgTuemNErlExp8cNWEb+bh28MdNNCbDWi/NHc6jDajuw8Mhz49gI02TTeCnsdY4x+ubuEDG2l1DOkbiN1V/4cv397F/qmSttKrUZFGEWRDtduVXlLzV7SMCy6Uv X-Forefront-PRVS: 0354B4BED2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1049; 23:3XEg+hYxuJVqIN9A0WtvdQHjrt6EOV10d/sn88EMc?= /0Ye5+0JwmOb6oEW8OsgqxdsVGhkIgt7ak0hu9J1ZSYKQi0+JjM07JX8kDlpkeG0FeJ9XV6/g5O4R2g4cgxHM2VqNKXLQAMyiIt2XX+BzUtE1IwpjYnPUgjuuR2EAoqpdZvIK09NQzGEXUDkPWnEyxEpGHDwIU5bYwigzG4cxSk0t+vRlRQ5GgNR+TQOIMhd0fN/MuoX/fwixqkLTgTBXG8mKbgJic8pbv1+SqZGWCOSkSg0Koc2h0slrqHa6crOTCh9jLS0ECZ5JowgEr0EhQmW1r6/JKmhZvysDzps5eEr1QluYPrAalDcNPE/UiOG+8qZ0jQt7E4v70nQxnNtfU/LZ9unV6NIX85eU+KJZz4xqHlQlbM+6LYxRSR2SuCW1woj+zcaZNHDwhNsIIFLLfJwu3+z7N5s8ZuOVPxZSzHbd9eZtRVPgJMFe1t0DzrjADn9YghUPdVCSgu+K36gArwIQORxKI5OeIZ9BUwrK7KgBY0Mt9m5pg7fNne5vCaCiMYYnZnmFzGM2vW9doYuXJn3bwUU/wDpCHO/d/baN347+P/UU9rPJa8kCUEOFqmMCUhXNz8mUNDLmOHk8elyBtOrTjW0JV/JdYMW8CfXqdsFYhu122CxOjqLoXMOXZTFLiFARlsy/zWTJixP97EQUrD2HPLjgB+aPZ17JMK0GqRlpI2yRlLT/taFCpvMUiCm6KopU+A7ArLR0QCCrgQTWt/JyG4cTLK8H0X437O20pu7233KBJPK+LT6CxjvsE+l26oYLVryjmwASUWTBgGNQPKHOkLeicJn3RzGCnMtRqqyvJYmM/keDdNTsLByM1Mr6sWlKk0cXI1YLJA40G5pmNXet9y4WwAXNL8OloqpIi2Y7fV8GWZJPIQkEQJdL33BZdHD14pyQHniQteelMFfT+X6nLG88/DRH2W9Xv5/9C9HQgDub78x8YH35xy6druU3elGBy4upBp89RWZ8mnFppetxSaNQAnW53p45tysHSNbpmkcmilXKrwCPT9SEDK0di01Hw6NaOqIBgpzjLpm5bz X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1049; 6:KjlZsKU+2J+7RZiJCjrdO1yyoj/8rYIM8TYF4wjcUK?= CsOfSZo9H2sze+/6BxZowyZ4lBqZRDnewj5OHe9EICF//1tMEu0X6bFvxqMCqp0OoIWAppeC4byb7sHNafWnOSmL5y/384A7BNszLS+Z/vHweeWIGEThtb3a1VggR3YrxqQ592c7V/v0s/fB5hs2xyHU2vz++GPw2NiSnwrQy4PSBjm3NtZ7YUFG+CI0lvI0guUpj2H2vzUDP12qAvt4ZdtuqTsaldopGK7SPdU3Nii1FVg4utZ8MKf0RZXI5E9wJZX1Tp1ZG5NCYMx5u9ZvFu35HyiTRuJmGe2maf/7Vk94324FaosrVdpstiWtlSr2j9uMMljjI0fBAswqBRXet147UEYxjOKdEW39rryZb5SWh6hyJOanYkxuB1yYEWing0WtrZyG4zky13R2IPgWJVFZMvIJcBWIzKYxzCw0hFTbQkdAJPJdxI4gNiX1wQJ9RSxw4/WRs25C2eGqSk5WQUdlq5/ULMy7pHQ+Nu5SvdrLiOPj0WKpfZ7OTkTVhtloajoS/uNaOyiHdybFOZk9gT09ipLUAUr9Ytve+/IfRT15GGVjEbrLoH0UOy4A89nCKn7YnIvEm4/KVBq3zTDB6PqjUIbAAvCFAWSkPIY63KQoZ/ni9erSfnnrlqKVqMSRKX+mahXMr0EuyGqguMz3IxI08Y6Qf4bxC+HZ/DYN9sr64AFEOY3Mhhl3d8vYQ8UYJ6l59WMKAunPOat71ZY7GagikS0mC2XYc9EGxWDc/NLCa5f/av/tTTR5Wpu1t3gqQJxzaQCcCp69K+ooCHR4vBv6ItYdLaolZ13Xazaqv1CHhPl7v/ilANBOUvS++iySl28iROIHldoBliKaUZiCdfbSDFlUe3uZMNPyQa+5QFNJWXdmoSxhcqpPwQVs8MB7XIwdujx0v3HINwm1LjPmBqobO9T5dBYugSH1uvFEdzWtLVxBQf3Vq2DQ8QHMonY9axKnfVwyFCslM7p5wPhJwD X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 5:hV8w396GssUrw0Jt4lil2vqi0WOuau4ehg8hTpeATZTvF2HLc1SPo2fr3K/6Ls7NYIkUwv+Q8jouFlmMIKg/xONRzizevUnSljXDq9x9Por/BJYVlFHNpXWl6IGtLYlx6dw7pdMgqbaEUPN5GV7n/zNSV6PySsFhP0asNdtZphoJ2TUY/qNgZ490DH2xEsCgdEqmICEt8af1VGLjcMCneTw3zVor+IAr9O9VG9Kk552jgVQwMC2NVv3N6fDkXPsJvMVOYKlFu2/lXvu1zm282m8YMaZoRcMUbllO1K69yRR2eH5KPVRZcRWdy3h4p8MPY66LP5/eD8/1iHRE1HvTjAmsbCrzV02FnU1+mkfyu5ydgXWzr/bIRds18HzcHrlR5WmpJLUDuqBRPdJjCB9HOA2a8wCg6uNZfXL1K7OWRNkBOLHf1Dzg+3pOHVQlLCUthtKuILlgA4zQYs8ry41YI7g1JS0PK6e2DONWDjR2t39OrPiBnvIWqFYyyEByP+hm; 24:CdWwEdaL5xahPdyuG0jXQDpHutj8NrUcPwCFK0wninLnu8XR+66HNeiy9+ogvQn9t1KQAuScrQGR13iPW/i6WQPxIdQM/XCRy6sCIa0PBSw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1049; 7:Pzze7/qb1g6JKxghO62kmIuYmZjbcf7CC1pDpKoLT8M3eSzjJy0U6H0uOXgfBXp1vFtlvFKfCu2/iBD4bAIgB0RmT4uaYBNW//sJeD5X728ZdvOBR/36/wVSIOmzQVnCdz567QQ1+pd3jHxHTaZpYw2KuDP+ZfMNwGeB6sCN2MrQzLibXM4pozWeMcTAB4Awo2K7w8eYzJrTNnLghN++HMR5ad6Vr1JdVqDHyVKLzgi+q5xwQzU/vN8pKQzHgKsj8iE/1CztSQGhHPZpMR1NzOx/za96IYqLJiW9ASOB+sx4nP8/qtv9Fi84oT0/NtvEV/QS4dr/yJcK1s7ZFGVj1p2v9Vg6yEFZpTlwFbVhZMIITsTMlw5htim/aOV0qm+RiwUhAKPy5pKKmRFxTo/wpxcblpytMLu+fLWlS0l2bungTAJDiPRNemqctjn3N1/pcw+zYw2HFgWHLTuhij6IXzmbKXFxVLI9tsMHDJ+2zkBqkC6II4HfqaOCmMgPiC+/zoWroyyO3cg6pPklOJmAE+8McVEoNEfDeYuM5J1S8elhnWBjOJhh4xtWXq/yBjZpX2T5myBqcoe9fCE61ZjzEbEK8MfiIDWKHIVCt6hvv8ABhrbPgRyD67ZOwUBU3FTLrYBWxlQ1CdUwFgF5dONnOUaig10pztvc8bUkG+d+xr8wnMzsJroSNcrKF8niOG7V5Rp8YyYA920abh0qqpDTTOlgphPYY625UiyeQRvMqaZ5S9F9XnJxMK+aHHESk7Lg7ty2wHXHwXHB46WpZrud8Yfpj8qe5ogre6rAyH+cX5I= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 14:11:34.7194 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB1049 Subject: [lng-odp] [API-NEXT PATCH 4/4] linux-gen: sched: remove unused sched interface functions X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Removed functions that are no longer used. Also removed unused parameter from save_context function. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_schedule_if.h | 7 +------ platform/linux-generic/odp_queue.c | 21 +-------------------- platform/linux-generic/odp_schedule_iquery.c | 4 +--- 3 files changed, 3 insertions(+), 29 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_schedule_if.h b/platform/linux-generic/include/odp_schedule_if.h index 5abbb732..b514c88a 100644 --- a/platform/linux-generic/include/odp_schedule_if.h +++ b/platform/linux-generic/include/odp_schedule_if.h @@ -35,7 +35,7 @@ typedef int (*schedule_term_local_fn_t)(void); typedef void (*schedule_order_lock_fn_t)(void); typedef void (*schedule_order_unlock_fn_t)(void); typedef unsigned (*schedule_max_ordered_locks_fn_t)(void); -typedef void (*schedule_save_context_fn_t)(uint32_t queue_index, void *ptr); +typedef void (*schedule_save_context_fn_t)(uint32_t queue_index); typedef struct schedule_fn_t { int status_sync; @@ -68,11 +68,6 @@ extern const schedule_fn_t *sched_fn; int sched_cb_pktin_poll(int pktio_index, int num_queue, int index[]); void sched_cb_pktio_stop_finalize(int pktio_index); int sched_cb_num_pktio(void); -int sched_cb_num_queues(void); -int sched_cb_queue_prio(uint32_t queue_index); -int sched_cb_queue_grp(uint32_t queue_index); -int sched_cb_queue_is_ordered(uint32_t queue_index); -int sched_cb_queue_is_atomic(uint32_t queue_index); odp_queue_t sched_cb_queue_handle(uint32_t queue_index); void sched_cb_queue_destroy_finalize(uint32_t queue_index); int sched_cb_queue_deq_multi(uint32_t queue_index, odp_event_t ev[], int num); diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index d907779b..4c85027b 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -520,7 +520,7 @@ static inline int deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], queue->s.tail = NULL; if (status_sync && queue->s.type == ODP_QUEUE_TYPE_SCHED) - sched_fn->save_context(queue->s.index, queue); + sched_fn->save_context(queue->s.index); UNLOCK(&queue->s.lock); @@ -672,25 +672,6 @@ static int queue_info(odp_queue_t handle, odp_queue_info_t *info) return 0; } -int sched_cb_num_queues(void) -{ - return ODP_CONFIG_QUEUES; -} - -int sched_cb_queue_prio(uint32_t queue_index) -{ - queue_entry_t *qe = get_qentry(queue_index); - - return qe->s.param.sched.prio; -} - -int sched_cb_queue_grp(uint32_t queue_index) -{ - queue_entry_t *qe = get_qentry(queue_index); - - return qe->s.param.sched.group; -} - odp_queue_t sched_cb_queue_handle(uint32_t queue_index) { return queue_from_id(queue_index); diff --git a/platform/linux-generic/odp_schedule_iquery.c b/platform/linux-generic/odp_schedule_iquery.c index f315a4f0..9605edc7 100644 --- a/platform/linux-generic/odp_schedule_iquery.c +++ b/platform/linux-generic/odp_schedule_iquery.c @@ -1308,10 +1308,8 @@ static inline bool is_ordered_queue(unsigned int queue_index) return (sched->queues[queue_index].sync == ODP_SCHED_SYNC_ORDERED); } -static void schedule_save_context(uint32_t queue_index, void *ptr) +static void schedule_save_context(uint32_t queue_index) { - (void)ptr; - if (is_atomic_queue(queue_index)) { thread_local.atomic = &sched->availables[queue_index]; } else if (is_ordered_queue(queue_index)) {