From patchwork Fri Jun 9 06:48:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9777363 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A99EF6034B for ; Fri, 9 Jun 2017 06:52:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A336285A0 for ; Fri, 9 Jun 2017 06:52:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8EA042860B; Fri, 9 Jun 2017 06:52:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_WEB, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 733D4285A0 for ; Fri, 9 Jun 2017 06:52:07 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJDjL-0007SQ-L9; Fri, 09 Jun 2017 06:49:11 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJDjK-0007SK-MV for xen-devel@lists.xenproject.org; Fri, 09 Jun 2017 06:49:11 +0000 Received: from [193.109.254.147] by server-7.bemta-6.messagelabs.com id 08/5D-03620-6E44A395; Fri, 09 Jun 2017 06:49:10 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSa0hTYRju2zlnO4azz83obRXlkkrLpYRmBlm UEDShKIhVoGd52ga7cc60+aNaYUbTygua1y5kZZnrsshJJGKGZpRRmiUIFlKQVGqpUXQ5xzPN vl/P8z7P9z4vLy9NqArkGpp1u1jOzli18tmkeXVkdOzglmRD3LWXa5Mm7pbINqKtD4e7ye1oD 2WxGx3uDMo8+vwd5TzDuD2XchUedFPvRbNpEp8ioOJDsUwkCJ9GkH+vixKJCv9EUFjWQnhRCK 3GKRCo6SdEIQIPIRi50Ca4aMGVBZeK9okeOdbBxGizQsRKnAq3G9plooXEUZDbAWJ5Lt4LvUO tSLKEw+OKQVLEIXg9FA0OUSImcCKc878lJLwYGj9VT2LAkfD+9ePJQQGfROALnJ4UVHgZlD3x yiTTInj0tJqU8Crw5/uD9TTI621USJiDvqo3pNTojxx+3LiLJNKigIGzv4NxTgiU1VISjgFfz wghmR5QUPzdEyR5c6D4VhuSXAuh+djF4IB1FLw74QuGDGM4d3GYkkgXCd2dzxQSuUpBqbeOKE TLK2fspHLGHipn7OECIq6jFTzLZbNc7Jo4nZGzmMwuG2OxxsbHJepsLM8zJtbKGHndfoftDhI uY5bwAuhXw45WNJ+WaecqI4+vM6jCjI7MHDPDm9O5LCvLt6IVNI39DfXPkYa0O+ysFpRvNicb VOEca2LdByxW4dSmrECHaiOUBzYJspJ3MjbeYpKkThSpmacsF/9hUTBn2ae/TR3pC7RIo1YiY ShVqJPlbBbX//pHNI9GWrVyYKPQJdRid013/ygEy4Tg2s9JYrCL+SdpPCjz2bXGBM8G/RX4UJ P6OfEe4f1a0nUowvDKN5aZ5p/fHF+ze2VLtrygLMYh644u7MjuV3em9EWN773zdqzQfL4yJHd baWnYeML9qMO7AgvSw47mqdv1ppxvWn3j6PUj1i8Fzg4nt/TyniWtVFpPRpi36vfOpoO+Jhn7 yuUq/1NfoCV5MxMfQ3A88xe7HHqhnwMAAA== X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-15.tower-27.messagelabs.com!1496990947!53966647!1 X-Originating-IP: [104.47.33.41] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.4.19; banners=-,-,- X-VirusChecked: Checked Received: (qmail 38593 invoked from network); 9 Jun 2017 06:49:08 -0000 Received: from mail-bn3nam01on0041.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) (104.47.33.41) by server-15.tower-27.messagelabs.com with AES256-SHA256 encrypted SMTP; 9 Jun 2017 06:49:08 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=RYg43nCvkU2z1+vuj98A488M0aiefQ6GF04vRlCp/Sc=; b=EoYV90dAFpoxOO7mYYeFcWJbGRFchePg4V5+7xeOkCVpz+LRSDKx1Jw/xAiWe+tXFjjHUkSjQsPDcl9XoUsRC04CaZaNF6ieKpNdvq4TSY2E2zhNE6MVyDnKvz2Xx2yywlASZaMq8gf13pTlSIysxthnoO2padre1lyDI7mPvS8= Received: from [10.160.0.40] (111.93.218.67) by SN1PR0701MB2078.namprd07.prod.outlook.com (10.163.132.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1143.10; Fri, 9 Jun 2017 06:49:02 +0000 To: Julien Grall , "xen-devel@lists.xenproject.org" , Andre Przywara , Stefano Stabellini , Punit Agrawal References: <6ed5eb3b-861c-e1bd-20a2-f24e55ce59e3@caviumnetworks.com> <7fbe04ae-7029-705f-90ae-2e7cb1e2feed@arm.com> From: Manish Jaggi Message-ID: <2a6f5dd6-68b8-91d3-b2aa-15568b53a1e2@caviumnetworks.com> Date: Fri, 9 Jun 2017 12:18:47 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <7fbe04ae-7029-705f-90ae-2e7cb1e2feed@arm.com> X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0013.INDPRD01.PROD.OUTLOOK.COM (10.174.214.151) To SN1PR0701MB2078.namprd07.prod.outlook.com (10.163.132.25) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PR0701MB2078: X-MS-Office365-Filtering-Correlation-Id: 1f4756a7-eeb6-4b4f-8b70-08d4af039f13 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:SN1PR0701MB2078; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 3:grePPFKG3fagNNT6qO9V0lDmVctEEd1hyLb147WIXy9zo8/J5uhwuhRW3B56O9KuenV/hOZABFh8jl1OSZHq4JRdVQgtGQfJuJkTUw7KxC5qLxX2Pr39GYh+3WE2vcSc5Z66iXYFs2L4EbwRY+NtJX68IdkflWfl3dazWlSdSAbpKQEGIY7Dp55Bwn73a3OaQnBNGUazCT7xic1K9RaoYMKXuXmW9a7pOG9zo5TGH/gIYZbVcWi5dRawVHJdyUYp7sLs/KyJiPNeve+2CRwkjsmmrQ9Swa8gwvGomeY7zTRjthBFywaXZjKA7w91+5q5l1Bd6JLrgQdt6bbP1/lt8Q==; 25:t2/9JkFrhUsq9e+f9vaW2NZRJVQqbUy95aqgQE0sdbI7oTArIsd6TowDos0uIzyS2jMoWVg4PSWSCrWj1d96rahO2eh4fhOL+gco4ckGD3B5Sx18naGQe1tmOzF3E11qy/YoIEZynBQ1mdXq5hSiENpBA4ekEg7JR/Ii+RiT83VKqXFxFjSHPbQbc95cDV0Ru9fJ8E0VVTa1mZfUxv9WY2Oeg7M0nSrfN8mSGNMlY0mUvhq3OuXfeEUWFSH7nZ0cYodsQZ2eI59BLiaEM3LYQaXJhn6tCEWILkddYMLwiu1ElEzK3CV3vUc2808jojuw1U9gCXG9FneXcni4PePAo31AVCtqyrEunsrxO3/hMocqgm69tdts0/4kxrUJ1jnlTto/GnzNhvspnE6rJpwTt3vhM5bZbdIXC3f8FL/Qyee8wiTwC91NhLTqCYdv1VEvM2ERBA7Hk0YYWWBpVFk6R1fjZ5T6xDMfDpONUZ4o14M= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 31:gZm9fkZiLBNvBkbTin0YhR3XEv7x1/OR8eU6CZ0oum7XSQm1WQEi2txOelE17+54V5VxWA+DRC9iiOiWRiW3PGHlTdvlwCvQyksc/jxXkifB73Cx0LHykjkN7tP9PpR0MV9VEs54pUXNbXalUQlBs4xdUk3bwvNCr8TTuTFk+R2gIaTj/IaYiWrKq6fSpOXSD+O1aoUmGf5KylU4ZuEGywQaGBw5pFablFKDUzCdvbftFeuattWNV50d23TMLqAR/7PU5DbVq8cnGq5CL+dngw==; 20:wKiggmRvr8AXGGwDyqM+YVEcASxVvfEZd+A1TpSK7dTOh3h7SchSOxZRW2sQGGs96bkIhlhaAdmi0VPz72F3T43p45Aic4SFjJPByg1diwG0jeLZofV9x2jgVAsQS0ehOUozT8z+UxGh47vD2ybYrnIdRhGTexh8oxht/51DL+x2C+Gzj9zNWdQhgsG+Un4Y4lpRTF5w1Duc0JqEjoDNN00u4NJ8+jxcDMwMnBL8fIcWMjuN523U8ICCtPCNqv4TiU//UhVBUkTKclDzlPUUarFpjyF08CjDxY325rMq0jcfvlNpHV7xIGnY4w9BMx8LjP2BD6Uli7nvgD1ZW91RkmgnDe6iVHoxR1zog1jvGjF6ePyrcZhOucei/MVN0CRnKg8damqmK+na2OxCBb97V+Peb9Gju0XXFjeeMqZk57byfonTfpnTpeHJ9RVubetCpII2HVBU/Jt72CBlshdkzwP8W6Rge+IX+EsHFC1RA6m3SnCZkj12wDBgyBHrvE+TWWbQPLPewWTvIVYhblTFEqm8vDDRrMHM+qfoW0g82rUVOrv+Fw7PEUuodJQHiAvg1qTAWe7kS/gh/EIona5WaKRhpy0kbUgSlQePHHFRyhc= 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)(8121501046)(5005006)(93006095)(10201501046)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN1PR0701MB2078; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1PR0701MB2078; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjA3MDFNQjIwNzg7NDp4Vk53VE1CNXQ0aHVIWEVNZUN4eUR0cC9H?= =?utf-8?B?V3ptSi81T1c0MzM2cGhhdmptd0QrbHlGU2FoU2ZuMU1hMElLRVFnTWY5MUo3?= =?utf-8?B?ejlYV3hSOGVxc2RvZWdMNzN5ai8vK05SSUp0MHNvTXlzQTgxVzVudjdjWVdN?= =?utf-8?B?TWU4Si80VzJSeFZlRUlGT2N3dzlzNldvWlRHaFhuNzVrZkJkVjJzWFJ6NE9I?= =?utf-8?B?ZExWRmVCM2hMNnNVY2ZySDBoZVJ6blg3VVhzREV5SnU2M3ZpSWprSFUvZkk2?= =?utf-8?B?VVJTVi9tUHhJRzBqZXl5clRTcktVSSs3cFlKMzNuWXA1NFNhVHgxa2lwR0h5?= =?utf-8?B?WUhkejhCOUREQ1JRUk9Qem5IRHlOQ0krdG9HSnVaNjlPVDRRV1VqVk9JWldU?= =?utf-8?B?ZWhubWJicGIxZWdPd3lzbFhuY2lqVTdEVHdLOGhtblEyZGNiZW1CekViN2R5?= =?utf-8?B?Z2FpS0VqRmJ2OXFGSmhBbU54WlJ2czJ3SHJQakVWb0xRQmVrekZwSXhxSTJk?= =?utf-8?B?cElJNW9mME40T004c1FkKzUrZnN3c3hWQnpPUkpGSTI3UldqbTJTTzRuMXg2?= =?utf-8?B?ZC9CSTJhMWhvejRFRjNiOER6SXU2Z0lxMFc5YXhuQ3pkWjd1RjFLVVBpMmJX?= =?utf-8?B?Y05sQ2xla2Q3bzhId2dTVGYzOElVLzFhM3lGQWM5clUwL2ZsNzZLNVJnVkRi?= =?utf-8?B?TlRRMnpUSzQ4TW4wZm1ybHFYL2tZVXg5VzhEYlZIcWtqdGFmbnFUNHEybi9J?= =?utf-8?B?L0ZmeHJiU2lVb2R2NnFXakdzVnY1VFpCbk5uL2NxdW5hYXBkWFdIMkdnOG4v?= =?utf-8?B?MGF3d0xoVDhsVTVQMy9mUVI5TnhVejZqZnExYnlKcGMwbmExSW43UXZqTnZu?= =?utf-8?B?WVVBYXVyWG9vakVLcE16WENqbFhIT0s3NkpaNWxDbjdieUdwVlVxekhHYTlF?= =?utf-8?B?QjdwRUV6cHNhNFY5UG10bnJwSEp3eEdCWnorZXAweUFMRHBTdXduaWJQdU9n?= =?utf-8?B?L0tqTjZOa2xZSml5bDFGU3ZEcTFMclk4YlhvY1NMdlJ6bEJ2bU1PV0VwSzhp?= =?utf-8?B?cHZ3TStiSDU2ZmhDa3pEdmhoNEd5NStDYWtzOWlBY3pLSWl0ZU5xaW1QYWx0?= =?utf-8?B?OEt1eUZzSzdmdENDRGZ4SzRaSUFGbnlMUktXQUZiOGVPWGhlVEp4RStlNjZO?= =?utf-8?B?N1JUd25jVXpBL3JNbUUvUzFCeG95alZwU2h4SCtDT0NOUlRrNXgzRW1tY3F0?= =?utf-8?B?amtnTHNxZWR4cnBMd2h2NWkxblh4bkNZZ2kvUDhmbVcyTG1GTFcrd1ZJM2Vw?= =?utf-8?B?RkprTFozenk1TEozMVhncnlRRjdjWHRJNk55RWVpYXRaNEl4alhnTnJCdFkw?= =?utf-8?B?VjU2aGpMWTNqSVlOMjdNa1dLaStBS24vS3loek5YNThNeW84NThKdGtZNlJv?= =?utf-8?B?ZGorWnlmUFRZZjRSWDFGSGRRdm9CcmhzWHhWSENxc1p1d1J1dU90amVYb0tv?= =?utf-8?Q?2zkVoP28HOorIgl06AK0xf3M0k=3D?= X-Forefront-PRVS: 03333C607F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39400400002)(39850400002)(39450400003)(39410400002)(39840400002)(377454003)(24454002)(5009440100003)(7736002)(65956001)(66066001)(81166006)(47776003)(65806001)(36756003)(8676002)(575784001)(5660300001)(42882006)(2950100002)(65826007)(31696002)(90366009)(6486002)(33646002)(2501003)(6666003)(77096006)(64126003)(23676002)(2906002)(189998001)(3846002)(31686004)(230700001)(53936002)(54356999)(50986999)(72206003)(305945005)(229853002)(76176999)(38730400002)(42186005)(25786009)(53546009)(6246003)(478600001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB2078; H:[10.160.0.40]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjA3MDFNQjIwNzg7MjM6eDVTY0hGL3BEdzdKOEZla0dFS2N6VmJO?= =?utf-8?B?WmlId3hGUm1YdlpDNVFMODFURm1nZ3FDaXh5OE1iOU9nWmJSR3NOTmh2UTB6?= =?utf-8?B?SWxOQ3kvSFh0dWQyWWZ3WDE2OFcreXhxN3FyRFZtK0JHOTFqUllPSG5HWkJM?= =?utf-8?B?NjNUYk9kK0wrWHY5eFR3eUovWUZtQlhuTTF0M1pvdHJzcmtpeHBMNHJ6RWVT?= =?utf-8?B?aXpRcEd4VW9mVm1lUGZZeDVsT04yVVdDbWdwa2tiejFsZCtrMkdsNlJUOVNx?= =?utf-8?B?c1UxWHl6WkFJbVJONWFQK0ZDRVRaemxHcGp6QXJ0eHFlTCs2VGczU3QzQU1r?= =?utf-8?B?UVM5ZlpGTGlyNmF3S09NaTNYMWJGTGZpNmxIbHJhRzVrb1AydGVFcUhjZS8w?= =?utf-8?B?UHQ4NFNKaHRpdzhEQVphK3F2UFJtNXBHa2N2NWd4TllBNWtHRFRpWXdCdHor?= =?utf-8?B?MkxoMzJyYVByUFVTSmxLcWQ5MEczSGVQdE9yNkQ2UDgvL1ZVZXdzeUZVY29C?= =?utf-8?B?Q0dRai9PLzByZmFsOE53ZmlLUzhNaCtqQmx6ejR0QTF4UkNSRStVMUl2SHhl?= =?utf-8?B?dElqd1lWdURpKzV5cDRnL3NJd2l2T3NWVDdPTnhSTThZWmZkTWV3ckd4Q2I0?= =?utf-8?B?aE4yZ2NsOG1WazB5VElSVVcyUVJMLytQRlhITXNxTXVzWnVIWVJrNHFFSGNP?= =?utf-8?B?YjFhVTVrUkI5bnNvOFdUSm4yZmFvRlBscmtDTk91ZXF0Y3FpWnpVTFQ3bGkz?= =?utf-8?B?aGxoeExwazVSczNUZmdya01tZTlmeFNhZDdzODFDdlBOcC9ib0FTRCt4dTZj?= =?utf-8?B?NFIwT1ByQ0FJMW1VMnJYM1FYK2owcFhCdWVjU0RQazZndWZSd2hEdDQ1dXRJ?= =?utf-8?B?S0hkVjh1bENRdityOU5vZFg0YU9iZFErSjh4SVhWTFpEdlRxRGxjbXBONDM3?= =?utf-8?B?SWxhTVlxY295YnVQc1BBN3VUWlJMa3VCdVdIN3dhbFRhNXFidlA4MUE4QmQ4?= =?utf-8?B?RHF2bkxJbWQ5dTJCMithcEJKUzR6WW5OYnR4a21hS1ZSNmNGeDdVRVJRMUw1?= =?utf-8?B?bVNJaVhCYTJjbjdTL21zZjlheXJsakFFMUxBUWtlYS9tK3p2K3RGc0FwWUU5?= =?utf-8?B?Vlh2dEd5T0pvVkJEOW5ZRHllbzhWakdWdXltQ1FjaGhxbEpWemxTT3BpbmM2?= =?utf-8?B?WFRDOXZDV1BPU092WER2TDJOMC8xMXBvZEtzY0ZFWWlJWC9sUkZNa0VzV01r?= =?utf-8?B?eFRrWGFwT3F1ejI2ejd3eE55QWMrSnVEZ1RJSFdzUGQvYWlBMmx4Sy8zUDkr?= =?utf-8?B?Uko0Z0lPc3hZVHdmcUJlVWpsQXpzMlZvd0pRQ2h0ZkJmMkdSUkVZOUJQaWcw?= =?utf-8?B?SzlROWpCTHJCdUlVTEp1Rzh3Y2RFb1h4ZEkrMS9KTUNWdWphaUZEVGdWbTg3?= =?utf-8?B?YXlpWnR4Mm1ZSWxoOWJnQ0tKK1E0R1BtL3J1R0RpV1paTXBRekcxVmRqSTBX?= =?utf-8?B?R1Y3amtxSHRualMzbngwa1JQQ09rR1JwY2xFRHViZys2RE5OcGo5UktHNkVL?= =?utf-8?B?VERhMm5zYXVqTkRzd29KMXpkRDA3UjVvVUhLZk9yMm9ROWZVT1RDVDd2dzZQ?= =?utf-8?B?dzk5Q0hvQ0dmREFSSzhkRjUvb01lT0UxVWUzNmJDUXM3VzZtcERBeXZMSjcw?= =?utf-8?Q?Z5czWRU0S08kg44Eme2VbergvZ0lWTPncjEfanRw5?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 6:pAhNjHHCPdIqgwzuhGsYNFRmN4cx4PsNdEdYhcLNuZnk1pB0V3g+0oU3MaKWsmijXHj1LSDG5aEMu9kgYhYgtvCAFitoov8LQjeB5gx7p4dt/4alnnevgfUyIZftlcqcSiqN1AhpNr+tvRc21JiwxjnvDNUBtzxBV6Db43UUZ+f7aGHNbxFx6hTL/Aqruy/ZVkb9i1l1e8+Y3Ub3Uu2ctKw7J10vns1a+08FLGaSPCDVasO72RLF0IGor58pnIE+z+dk755R6oClP67ur4bYaaneXh6z2KniRbgZELZhqgOFP5MCd8sd+cUf8safOfhkjkY7OppDNtYkAx08X68UBZWKqbVb+IrVvCOoDgMwVTzxVIXXpgCwN8NGXqO0TPvkkc09C4CJpcJAcga0X6j4gjWuBpE6S0xdsUXWKr7hDI54JyBPsiuhiPxHFcx4tJ2y7sW25JJksuaca7lNYi0jy8EFHgPZ66L9BEcQJB6K6C2gG9v8f0F7N+4TSqldmx3imgCbaBxqJbottiC2/veQBQ== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 5:1y+nUGKwiFLOdpdTJj5XXAsu6zOg+pyKQNN7UVtHSyKnxYis+fWfwVBr5RceRk6Sw4KPcKYSHca8rRFVt24IJKnku12iiiAiamrPLYAjppB3hSBOqU3kb+SnH/TfL3qgnNdjvTSA1TotQwiVK41mp20WhzHykE+iVCwG47EwpBuDjgGekmNpGGMwrBWGE5FI4bxAU5HtTcBVt+Kw6WKS8DhbOkI7H6ftGomC9eXKv0mcb4x+Fh8Y6B41al10I8vZUQl3NX0tmnMm0ya9SWy0Va/rZEJrJZKyzDCOajD00xMmHo5I01G3NoWyrFRLupNeB5Q0921yZUfUfO2eqCnsIbuXlKPhVt+ZvNcR/DvvuBrwC8saMCDRQSUJ4vhXcMFGoIOmiyZ/7vVBiZ/34uYykmnf4xIF+59E+haXtK2s5SGuduRp3x9pokuDgUa8YkB9kHXE0j7jz5muJoKe8IeGn2t8HTCQdDXS1bkRoFibQ5xGJtfO8sXWDy7sd7TuWSbr; 24:rf1GXq/thLfB2Ki5a99ZCpcAvUlhLNl+WF+AlRxOrhRhIL/6nFrrTcAkJIkvLnphr0jG2AS24baHyGbow2hOtwn3ripaldXYwVJv8S+HNus= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 7:Zu8mS/kELvHSsTkqcHg28mBRNso5JhQs5CmKkz2UAKZPhFsj3RU6zJ0Clv7/Avj48d9Lf+mgkjLAm+9Au6SEunMAmcls+oEOTqZuSYhC1yCgOy3puD6My0kYNu3DmuSwmRHJGlgupH71zQFH+4pjK+tVAaMt2Sbvuir1KTbPHDIo4m2KkCQ3MUUqhwJ3p2ctg+2NcyQ1M5hMRrQ3ERnEo6hKyzvKsaoAQM5YhkhX9FY0gOUu+tyP7Gu5PProG4zFPuIvIMeqysNSbp6Y2vGd5EBvtTnAH+Jv31zIXUqwdCOE2AM6TcQM80DCpO6wTxO9wruxX27CMAQkPUj7aEmeuA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2017 06:49:02.9702 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0701MB2078 Subject: Re: [Xen-devel] [RFC v2][PATCH] arm-acpi: Add ITS Support for Dom0 X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP On 6/8/2017 7:28 PM, Julien Grall wrote: > Hi, Hello Julien, > > Please CC all relevant maintainers. Sure. Will do in the next patch rev. > > On 08/06/17 14:03, Manish Jaggi wrote: >> > > Spurious newline > >> This patch supports ITS in hardware domain, supports ITS in Xen >> when booting with ACPI. >> >> Signed-off-by: Manish Jaggi >> --- >> Changes since v1: >> - Moved its specific code to gic-v3-its.c >> - fixed macros > > It sounds like you haven't addressed all my comments. I will repeat > them for this time. But next time, I will not bother reviewing your > patch. *Thanks* for reviewing the patch, I will try to address _all_ the comments > >> >> xen/arch/arm/domain_build.c | 6 ++-- >> xen/arch/arm/gic-v3-its.c | 75 >> +++++++++++++++++++++++++++++++++++++++- >> xen/arch/arm/gic-v3.c | 10 ++++-- >> xen/include/asm-arm/gic_v3_its.h | 6 ++++ >> 4 files changed, 91 insertions(+), 6 deletions(-) >> >> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c >> index 3abacc0..d6d6c94 100644 >> --- a/xen/arch/arm/domain_build.c >> +++ b/xen/arch/arm/domain_build.c >> @@ -20,7 +20,7 @@ >> #include >> #include >> #include >> - > > Why did you drop this newline? I will fix it. > >> +#include > > Nack. I asked on v1 to separate code between GICv3 and ITS, it is not > for directly calling gicv3 code directly in the common code. > > If you need to call GICv3 specific code, then introduce a callback in > gic_hw_operations. > Good point, I will add it. >> #include >> #include >> #include >> @@ -1804,7 +1804,9 @@ static int estimate_acpi_efi_size(struct domain >> *d, struct kernel_info *kinfo) >> >> madt_size = sizeof(struct acpi_table_madt) >> + sizeof(struct acpi_madt_generic_interrupt) * >> d->max_vcpus >> - + sizeof(struct acpi_madt_generic_distributor); >> + + sizeof(struct acpi_madt_generic_distributor) >> + + gicv3_its_madt_generic_translator_size(); > > See my comment above. Will address it. > >> + >> if ( d->arch.vgic.version == GIC_V3 ) >> madt_size += sizeof(struct acpi_madt_generic_redistributor) >> * d->arch.vgic.nr_regions; >> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c >> index 1fb06ca..937b970 100644 >> --- a/xen/arch/arm/gic-v3-its.c >> +++ b/xen/arch/arm/gic-v3-its.c >> @@ -25,14 +25,18 @@ >> #include >> #include >> #include >> +#include > > The include are ordered alphabetically, please respect it. > Sure. I will fix it. >> #include >> #include >> #include >> #include >> #include >> +#include >> +#include >> +#include > > Ditto. > Sure. I will fix it. >> >> #define ITS_CMD_QUEUE_SZ SZ_1M >> - > > Again, we don't drop newline for no reason. I will fix it. > >> +#define ACPI_GICV3_ITS_MEM_SIZE (SZ_64K) >> /* >> * No lock here, as this list gets only populated upon boot while >> scanning >> * firmware tables for all host ITSes, and only gets iterated >> afterwards. >> @@ -920,6 +924,55 @@ int gicv3_lpi_change_vcpu(struct domain *d, paddr_t >> vdoorbell, >> return 0; >> } >> >> +int gicv3_its_deny_access(const struct domain *d) >> +{ >> + int rc = 0; >> + unsigned long mfn, nr; >> + const struct host_its *its_data; >> + >> + list_for_each_entry(its_data, &host_its_list, entry) >> + { >> + mfn = paddr_to_pfn(its_data->addr); >> + nr = PFN_UP(ACPI_GICV3_ITS_MEM_SIZE); >> + rc = iomem_deny_access(d, mfn, mfn + nr); >> + if ( rc ) >> + goto end; > > Hmmm, why not using a break here rather than a goto? I can use break, np. > >> + } >> +end: >> + return rc; >> +} >> + >> +u32 gicv3_its_madt_generic_translator_size(void) >> +{ >> + const struct host_its *its_data; >> + u32 size = 0; >> + >> + list_for_each_entry(its_data, &host_its_list, entry) >> + { > > Pointless { > >> + size += sizeof(struct acpi_madt_generic_translator); >> + } Just for readability of code. > > Same here + add a newline. > Sure. >> + return size; >> +} >> + >> +u32 gicv3_its_make_hwdom_madt(u8 *base_ptr, u32 offset) >> +{ >> + struct acpi_madt_generic_translator *gic_its; >> + const struct host_its *its_data; >> + u32 table_len = offset, size; >> + >> + /* Update GIC ITS information in hardware domain's MADT */ >> + list_for_each_entry(its_data, &host_its_list, entry) >> + { >> + size = sizeof(struct acpi_madt_generic_translator); >> + gic_its = (struct acpi_madt_generic_translator *)(base_ptr + >> table_len); > > This line is likely too long. > I will check it. >> + gic_its->header.type = ACPI_MADT_TYPE_GENERIC_TRANSLATOR; >> + gic_its->header.length = size; >> + gic_its->base_address = its_data->addr; > > On the previous patch you had: > > gic_its->translation_id = its_data->translation_id; > > I asked to explain why you need to have the same ID as the host. And > now you dropped it. This does not match the spec (Table 5-67 in ACPI > 6.1): > > "GIC ITS ID. In a system with multiple GIC ITS units, this value must > be unique to each one." > > But here, the ITS ID will not be unique. So why did you dropped it? > The reason I dropped it from its_data as I was not setting it. So it doesn't belong there. Will the below code be ok? + int tras_id = 0; + list_for_each_entry(its_data, &host_its_list, entry) + { + gic_its->translation_id = ++trans_id; >> + table_len += size; >> + } >> + return table_len; >> +} >> + >> /* >> * Create the respective guest DT nodes from a list of host ITSes. >> * This copies the reg property, so the guest sees the ITS at the same >> address >> @@ -992,6 +1045,26 @@ int gicv3_its_make_hwdom_dt_nodes(const struct >> domain *d, >> return res; >> } >> >> +int gicv3_its_acpi_init(struct acpi_subtable_header *header, const >> unsigned long end) > > ACPI is an option and is not able by default. Please make sure that > this code build without ACPI. Likely this means surrounding with > #ifdef CONFIG_ACPI. I will get compiled but not called. Do you still want to put ifdef, i can add that. > >> +{ >> + struct acpi_madt_generic_translator *its_entry; >> + struct host_its *its_data; >> + >> + its_data = xzalloc(struct host_its); >> + if (!its_data) > > Coding style. > Sure. >> + return -1; >> + >> + its_entry = (struct acpi_madt_generic_translator *)header; >> + its_data->addr = its_entry->base_address; >> + its_data->size = ACPI_GICV3_ITS_MEM_SIZE; >> + >> + spin_lock_init(&its_data->cmd_lock); >> + >> + printk("GICv3: Found ITS @0x%lx\n", its_data->addr); >> + >> + list_add_tail(&its_data->entry, &host_its_list); > > As said on v1, likely you could re-use factorize a part of > gicv3_its_dt_init to avoid implementing twice the initialization. > For this I have a different opinion. gicv3_its_dt_init has a loop dt_for_each_child_node(node, its) while gicv3_its_acpi_init is a callback. Moreover, apart from xzalloc and list_add_tail most of the code is different. so IMHO keeping them separate is better. > Also newline. > >> + return 0; >> +} > > Newline here. Sure. > >> /* Scan the DT for any ITS nodes and create a list of host ITSes out of >> it. */ >> void gicv3_its_dt_init(const struct dt_device_node *node) >> { >> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c >> index c927306..f0f6d12 100644 >> --- a/xen/arch/arm/gic-v3.c >> +++ b/xen/arch/arm/gic-v3.c >> @@ -1333,9 +1333,8 @@ static int gicv3_iomem_deny_access(const struct >> domain *d) >> return iomem_deny_access(d, mfn, mfn + nr); >> } >> >> - return 0; >> + return gicv3_its_deny_access(d); > > Copying my answer from v1 for convenience: > > if ( vbase != INVALID_PADDR ) > { > mfn = vbase >> PAGE_SHIFT; > nr = DIV_ROUND_UP(csize, PAGE_SIZE); > return iomem_deny_access(d, mfn, mfn + nr); > } > > When GICv3 is able to support GICv2, vbase will be valid and the code > will bail out after denying access to the GICV. So the ITS regions > will not be denied. > Ok, got your point. Would the below code be ok? mfn = gicv3.rdist_regions[i].base >> PAGE_SHIFT; >> } >> - > > Again, why did you drop this newline? I will fix it > >> #ifdef CONFIG_ACPI >> static void __init >> gic_acpi_add_rdist_region(paddr_t base, paddr_t size, bool >> single_rdist) >> @@ -1374,6 +1373,7 @@ static int gicv3_make_hwdom_madt(const struct >> domain *d, u32 offset) >> for ( i = 0; i < d->max_vcpus; i++ ) >> { >> gicc = (struct acpi_madt_generic_interrupt *)(base_ptr + >> table_len); >> + > > As said on v1, spurious change. No. I wanted to add it intentionally. for a better code readability. > >> ACPI_MEMCPY(gicc, host_gicc, size); >> gicc->cpu_interface_number = i; >> gicc->uid = i; >> @@ -1399,7 +1399,7 @@ static int gicv3_make_hwdom_madt(const struct >> domain *d, u32 offset) >> gicr->length = d->arch.vgic.rdist_regions[i].size; >> table_len += size; >> } >> - > > Again why did you drop the newline? I will fix it > >> + table_len = gicv3_its_make_hwdom_madt(base_ptr, table_len); >> return table_len; >> } >> >> @@ -1567,6 +1567,9 @@ static void __init gicv3_acpi_init(void) >> >> gicv3.rdist_stride = 0; >> >> + acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR, >> + gicv3_its_acpi_init, 0); > > As said on v1, acpi_table_parse_madt may return an error. Why this is > not checked? > I missed that, I will add it, >> + >> /* >> * In ACPI, 0 is considered as the invalid address. However the >> rest >> * of the initialization rely on the invalid address to be >> @@ -1585,6 +1588,7 @@ static void __init gicv3_acpi_init(void) >> else >> vsize = GUEST_GICC_SIZE; >> >> + > > As said on v1, this is a spurious newline. ok > >> } >> #else >> static void __init gicv3_acpi_init(void) { } >> diff --git a/xen/include/asm-arm/gic_v3_its.h >> b/xen/include/asm-arm/gic_v3_its.h >> index d2a3e53..b72aec2 100644 >> --- a/xen/include/asm-arm/gic_v3_its.h >> +++ b/xen/include/asm-arm/gic_v3_its.h >> @@ -105,6 +105,7 @@ >> >> #include >> #include >> +#include >> >> #define HOST_ITS_FLUSH_CMD_QUEUE (1U << 0) >> #define HOST_ITS_USES_PTA (1U << 1) >> @@ -134,6 +135,7 @@ extern struct list_head host_its_list; >> >> /* Parse the host DT and pick up all host ITSes. */ >> void gicv3_its_dt_init(const struct dt_device_node *node); >> +int gicv3_its_acpi_init(struct acpi_subtable_header *header, const >> unsigned long end); > > This will likely need an #ifdef CONFIG_ACPI. And also a stub would be > required if ITS is disabled. > Sorry didnt got your point. on ifdef. I can add a check gicv3_its_host_has_its() before calling gicv3_its_acpi_init, would that be ok? >> >> bool gicv3_its_host_has_its(void); >> >> @@ -167,6 +169,10 @@ int gicv3_its_make_hwdom_dt_nodes(const struct >> domain *d, >> const struct dt_device_node *gic, >> void *fdt); >> >> +u32 gicv3_its_make_hwdom_madt(u8 *base_ptr, u32 offset); >> +u32 gicv3_its_madt_generic_translator_size(void); >> +/* Deny iomem access for its */ >> +int gicv3_its_deny_access(const struct domain *d); > > Same here. > Please see my response above. >> /* >> * Map a device on the host by allocating an ITT on the host (ITS). >> * "nr_event" specifies how many events (interrupts) this device will >> need. > > Cheers, > diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index c927306..a3d1eff 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -1308,6 +1308,13 @@ static int gicv3_iomem_deny_access(const struct domain *d) if ( rc ) return rc; + if ( gicv3_its_host_has_its() ) + { + rc = gicv3_its_deny_access(d); + if ( rc ) + return rc; + } + for ( i = 0; i < gicv3.rdist_count; i++ ) {