From patchwork Sun Aug 13 21:30:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9898025 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 E83CB6038F for ; Sun, 13 Aug 2017 21:34:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DC15C28409 for ; Sun, 13 Aug 2017 21:34:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D0C39285C4; Sun, 13 Aug 2017 21:34:43 +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=BAD_ENC_HEADER,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 666FD28409 for ; Sun, 13 Aug 2017 21:34:43 +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 1dh0UT-0004aJ-3M; Sun, 13 Aug 2017 21:32:09 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dh0UR-0004a6-4B for xen-devel@lists.xenproject.org; Sun, 13 Aug 2017 21:32:07 +0000 Received: from [193.109.254.147] by server-2.bemta-6.messagelabs.com id ED/C8-27137-655C0995; Sun, 13 Aug 2017 21:32:06 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSbUhTYRTuvbtzV/PKdVM8DjW8pYS0qX8sCMI ixCyhPxHzh3qXVzfaF7uz1o9IbCWTTMWyNElLMjERNBUV+lAzU9FK/CakomJOZE7SQgy71zvN 3l/Pe57nOefhcAiJfEOqJFi7jbWaGAPtF4Dr4mNOq84NlGkSJn7TR361V2DJKLV/eQI/izKke pPWbM+W6p50DWOWlVD7oKtcUoAGg4tRAIFTJRKo8X5CwkdOOTFYmOzHipE/4Uftg+6S8S0cQt Ew31SxhSWUERrcS7yBIBTUcVjuOCCUcSoGHjc6JQImqVPgWniECxioKJgdE+v+VBqMjBdJBSz nNaO1nVJRHwxDVd9wsT1Ar8slEb3R8GNmCBOyAeVE0Fb4DBfNsVA5UoyJokgYGK3xDUuH957n UhFPYXCr55hovi6Dxel5JBKHoPNnMy4ST2WwOdri6xQHLZNe32gLvJq+4SeKxqTgqFn1ERFQt XZHJhKvpXCvqNmXSQtva9/JBIwoDdSub7urSXhZ/9UX0CmD75sqASsoJXi6hlAZiqnetYTqXU uoQ1gTOsix1kusVZWYoNZa9Xk6m5HRG/hfktrIchyTxxoYLae+YDa2If4S9vCvCw16MvtQOIH RoWT2mRKNPEhrzrmiYzhdljXfwHJ9KIIgaCBT35Rp5MFWNo+15+oN/Dlt00AE0iHkYYEmOQtj 5PR5IjWMVIS7bHMNk+Mms4lVhpHefl5ECSJdvmmnxfZRjqNIpYJEfCh5oIW1GvW2/3k3CiMQr SAlwqhAvcm2M8nNh8D4ELeF/CRnY/5RygK0N5RZdvdm9nUrWBVSu/DNYPNNZcr6XFjataAP3p XWrIU/U3XzUaX3j8bGDfWf9I+2Ry8mOzBP79WlLx7CEduw0dhzuS6hvtQZTydlpYeNnNhf3hr VGE5Hpqy+0BRe/DhXmTP7+e70w66OGVqV+8BhbgqKa187n7qUXJ6R4a6icU7HJMZJrBzzF9dV rAWPAwAA X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-16.tower-27.messagelabs.com!1502659924!111281643!1 X-Originating-IP: [104.47.37.75] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 1678 invoked from network); 13 Aug 2017 21:32:05 -0000 Received: from mail-cys01nam02on0075.outbound.protection.outlook.com (HELO NAM02-CY1-obe.outbound.protection.outlook.com) (104.47.37.75) by server-16.tower-27.messagelabs.com with AES256-SHA256 encrypted SMTP; 13 Aug 2017 21:32:05 -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=vEOJmHGKe1uQnoa3hp1LjZk+YPXv2bW+NwU93nAmf4Q=; b=W527KmJm7MIvp6ERh/snRhAVOa/45X26RntFbuc6L3Opyrl8WdOzClQuZqe58Ub0lg7+eTrfaxDaYfk5RM1JRkEI4OBSbNrCqJC/vW+WnK75DRECViIRRZCrqt1b7DCXuO44/8pPI6KLqm0Y88nrYLLXH6oj7YUQNVIs5WTRC8I= Received: from mjaggi.caveonetworks.com (111.93.218.67) by CY1PR0701MB2074.namprd07.prod.outlook.com (10.163.142.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1320.16; Sun, 13 Aug 2017 21:32:00 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Mon, 14 Aug 2017 03:00:13 +0530 Message-Id: <1502659815-20397-4-git-send-email-mjaggi@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502659815-20397-1-git-send-email-mjaggi@caviumnetworks.com> References: <1502659815-20397-1-git-send-email-mjaggi@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0101.INDPRD01.PROD.OUTLOOK.COM (10.174.144.17) To CY1PR0701MB2074.namprd07.prod.outlook.com (10.163.142.149) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b70683c6-fdde-451b-36aa-08d4e292bcdf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR0701MB2074; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2074; 3:PSjxUJIm9rErOxfB+zR+FY5bCRHAWUty+hmJ9Rp7SGn2HT58DzHJwwM75TG7GwUmzs50ZC9rEReDrBOy+6JbZ4pJ0ouGRyE7QAGyMSZ47lNUtx1CPPBWv8VtB0OxGZCOzv0jedVf9rr5svAsbqv/kgdsIVZ/ZOIrrPbQQBajqqeaOLvBLU+1fPyIfsiKSjrha7mtkN2tp8BW1+xdjBUJGIomu8BhmJwtB92zMBcdySUfxZaQIh/rGMJxxPbEHlYK; 25:69JfA2BXfPTeGkayARfubBOk4ICiJegakYZsF5/6btTQeH112nHng9DS2EkuY9DiU7kR39MbQwfhcDCaqO93FnyJkePK8g5mHvF/cNW8/azh0IqvTh2u+IdHRipzbzGjvmfbrUJr72vIx2/ilzYvuiwLD6DmuxAhueSjQ7Z5Z3SdVEWTnVNUYmaewXA0KXSVTMZ/QFzKV1gQ/IDyIYbyIutP/kfNeurmBxZgnE4+vTtlAdU8hBOPw35yJXNq4W+u0k7rmgVzgD03mOFRsa7wJ++Lje4iD8kzb+uSL+rL8CYSbj7YWSsopXx6PKN91rjpDDBD8RuCj6/crdmHBonGRQ==; 31:C53qjNEoIIMQi3cpQoXr2fzkjyn2+TErEMMZWmEyRJjC9UB35pv0B4A3/OQXFdMHR/wVyJK3m5Pi+5cuNhyJRUBsic04yIRkvHM4XtU+sgxE4LyJa+PaqOBolHx7mdwJcEtM3jal+OUaIt8+pCZBSzEsa1pPPTxeMxmyr4zdSKFZovh/dR69yRqHtk3QHH7uB3/C44ibIf9UHKWYUgLG4kjupL8YFMx5mSMYCzC4Zt8= X-MS-TrafficTypeDiagnostic: CY1PR0701MB2074: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2074; 20:j5u1ufDjVopMkxEEuQA6ucJgafdtkw1FVkrOkosllPR4x3Bs1UsRb17Dhvt3XWGHT5mQ+GLzAOI+piVIX8QRAA0HqDUbTfz32ygbVgFrqdKXF7TImG7kNYhYR9udk4doZfbzigcwqtBNSoBz0RSgiaZd64dFmRqZ+3O6wHi+fcBf7DQEBof1mUPCsizaOsfDTRWXAYotcqu25bBqKIO59VaBzxO2Cag5hPeSXl0iDJ1F9SjxV8URrPi52lELK6HZmO/kcokv5v1OqMYaUofrbfiNLk4jxszzYbf9tqsTHUWV+HT1aJhOmSiyCLkkLRKsC9RgLaQSOqzMqic8saZnBp+bgRtfISna/1FcbkGnXnhDXaYaZtGrgYSBLOWE8ZQhOcVTSYMrzEBvnBqTYIkoUMw7yZ6+FmOjJPGctlHrfp7j0bdIR3DMhfZbXGDybXmLzd1cPiULRMMDnoQZmeKDTsLPzIKtBEvQjJMS19XsgiiteAjl5Jh/M0R6QHFMutRHmT8v2Eninx1BoE9xlz/ClIF2TkvQAfMcBCnFCmHceZqeX9Rn6k5OT05YSrNOQUO4pmIfYIGcfm6h1X13YJae83OFRoSncotal004+ngkUr4=; 4:NiuP0eLp6YrDMCBahnXGQYW4EFHiwNWNHKVS5rEK+JFOovBd0EqYDR4ee6sPImVBd95C/HHgpboFuevSoiEaEdihCu7Z7o6jwj+xxw7OVI4PRcqFBybT77xPCzjMY34fJMnA3gf6yEAwCHvaYPP1+pKQ4jnR2oc4WE+0+Oe1pC2RGdSt0pco9aU9uS6aVgUXAUkVO9bBARdtgfZ95GBwOG6gUY+CsIggXjd7dkGSSRB0lqKKd3GwqSqOegzij9bj X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(20161123562025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0701MB2074; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0701MB2074; X-Forefront-PRVS: 03982FDC1D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(199003)(189002)(189998001)(36756003)(25786009)(6666003)(50466002)(69596002)(81166006)(7350300001)(6116002)(3846002)(5003940100001)(50226002)(48376002)(4326008)(97736004)(101416001)(305945005)(53936002)(68736007)(76176999)(33646002)(9686003)(6512007)(7736002)(478600001)(50986999)(5009440100003)(2361001)(2351001)(110136004)(107886003)(5660300001)(81156014)(106356001)(105586002)(42882006)(6916009)(8676002)(72206003)(6486002)(53416004)(2950100002)(2906002)(42186005)(47776003)(66066001)(85772001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB2074; H:mjaggi.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB2074; 23:AaZL1W71pyXXGAJFDZCVqx3LbhDCzUPE71Hpro1?= =?us-ascii?Q?d5FUVNzRyyPQ4k/oOk2QkswTSSnhyJ/sgKyTqQbkRv6DNCwKtNa6/fy0Varw?= =?us-ascii?Q?feoMaAJ97JZoYmkAh6LTqFTiE5MSxQJBnMtJGFXrBRf8Bi8v4kY+ZZNWS4D1?= =?us-ascii?Q?j+7m+hd+vZjMEeBWOr2SgVRB66ldVVVr/ZQUM8vieklIEFLrJq54bCjLXNZ9?= =?us-ascii?Q?nVW4uuzauwlaIAI3yGF80GOfIoRbBobxD5vOlxATWaHfMLQJZ1y/XgzD49sS?= =?us-ascii?Q?leSQdHFZBNImea6jGpMCXLi/73SR73cRjrjuQhPagg8DJziCPhlJfv5SLNk+?= =?us-ascii?Q?WkOIRkTzvbCh+NND5SbETUNZ1l/qGxy6AXtQdfkPysyklTW68nH/CT2Z7SJM?= =?us-ascii?Q?NWvBOnf4uT+qnVnYACLHCKEST/jzWbLz+FZ+jaGeYg1L1eLcNPJ7ft3dcGDG?= =?us-ascii?Q?Qk5F+/2q7MeBk54GTv7awy9Ely/C2Y7CkYJqECBawrHwwdeTmqmPwnz5WNfY?= =?us-ascii?Q?6FiTztLwMx0m/7gAMbhghghy4obe4Rj7GPEf15jAXGFL4lVWDyxD6KBu5T93?= =?us-ascii?Q?21AJ1PYDaG2Z5OBaI+HKwSZYMwYET4rOSR+OrTTAmv4dNhGUOnZtOfULy7fg?= =?us-ascii?Q?ufpq1U/u/K9pQUTrnkKtXoelL1XExuRMNMQz6mIpJe0FvrwcPNtFxXYgGTUc?= =?us-ascii?Q?81Wf8F4tKKNDj35QH+oS4vzVDhy286ci2Tr4kdv/HgVJM8fDtheimoxbgFbU?= =?us-ascii?Q?rEHtEszq7wHtYzSEiO/ZoSiEiXUww2VA1uFMQy2vIR+0wJqIeiDPioxOpbt/?= =?us-ascii?Q?xWrmPQWv5yrOLk1yoTFxYVMAAWZH63nFqWqEslvzf0nFCmfmmdS72YpkfFda?= =?us-ascii?Q?dEDlYQ/JmSKwY0MmdfGiio61W3umfAuePJb/ovSdpGcOrtrQ5azBu111kP8f?= =?us-ascii?Q?PRRWcZhklNC8uIsXB03ZW6v8LzVbSGRHSne+bqE3KX/cNMbLgc6CtUzMt7DG?= =?us-ascii?Q?jQRuw59RWIPSUoLZm5NMLNU1jWjBqETAqjeBA/9UEjpKCtRYkuTZpEDUKlzR?= =?us-ascii?Q?C2iY7NgqYVcFFq6OTzCTO6EhMl1potk5TuZPO9Z5HzSsyjRi0t5mvbNgigMW?= =?us-ascii?Q?CAhCh+5whO2R5JAxyKYet7WfalberVbtZ+3oeRDR16tvx/xoAw6POorrO+Yq?= =?us-ascii?Q?FegRD7otiID5gSgXq/k4T+AdSXWwCkzbgbNDsU5xrNjO71ogP2JVsNIbjI8w?= =?us-ascii?Q?+IRSpOhZaJKD5Hy7IqCM=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2074; 6:T+JUhu3xC0ZdItZXF5nL5rR0VEqySFwS5O40gieprHTjv2NxJvJK+CwA4YY0GawRefAum+kbAMTPPD6dnEWWp2jBH0Njr1Vta1eWecujQ0FD8KJAVPwYvoVmS9AADZbMKP4HWoEJ3FESlW15I202UxsANrH63hGI9LuoW1l5Vimr0jxtmChck2Fsw+4wH5uNpyXHIKJjWfkp6hXqVeufDdVb1z4NqzzQME7ViO6XdVtSCNprzHsyQzPTxpsM/H5j457bujzGRah4KNGZONKJdPKvrel/SbFw4sUS9thG79Flyvn8JYVUfv1wg8zjOcGlMldTm3hOhBgpVgbv1XGNuQ==; 5:iAD4tdrczWYpc6Je/Iu+z1aXZiVxIXalZ7DZYLGe4Fe4+VMjyHTZs4nK2dpTpyQ0rpHR8uO7jzQtj0BcLY5wYrdqeCj7DgfA6Ai0CWLF0z243Sc12ybHp9iyG6MmmNasg+u6jroAO01JJZpw9p1yTA==; 24:IywhzT0Q10Ht+C3UZA6hu8tpXlimF/1PaKIzk7FFql5qRiVOwlNIX+hE0oruH2PK+k57xPFj4yXCN00DtahQ7tIH492EvAxalP7WiHGXGQI=; 7:7uFyUmL0yqN2E9GZ4PwDpwK3r8hlHyFCd+fC9mQTqXyJxiUmF6w+4mi7fA/9gdl2uFTomynstw1furfpLQ1DzHKTckNvlJwV4oq6clVYGtgx0DKGOs31rHbsSG456Dfh2NBYla1Sl3EHlHKR4sIx8QjUbaRzkPLVpS1SVl5tcY2a41zyldHM1Ck85gEu/iPTVnlEgZsyGb7L3fih2SWhLaODOvVN8IeF5YJEw1+L/0U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Aug 2017 21:32:00.8554 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB2074 Cc: Andre.Przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Manish Jaggi Subject: [Xen-devel] [PATCH 3/5] ARM: ITS: Deny hardware domain access to its 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 From: Manish Jaggi This patch extends the gicv3_iomem_deny_access functionality by adding support for its region as well. Added function gicv3_its_deny_access. Signed-off-by: Manish Jaggi --- xen/arch/arm/gic-v3-its.c | 19 +++++++++++++++++++ xen/arch/arm/gic-v3.c | 7 +++++++ xen/include/asm-arm/gic_v3_its.h | 8 ++++++++ 3 files changed, 34 insertions(+) diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c index c4f1288..f584d33 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -905,6 +906,24 @@ struct pending_irq *gicv3_assign_guest_event(struct domain *d, return pirq; } +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 ) + break; + } + + return rc; +} + /* * 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 diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 0be8942..045d20d 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++ ) { mfn = gicv3.rdist_regions[i].base >> PAGE_SHIFT; diff --git a/xen/include/asm-arm/gic_v3_its.h b/xen/include/asm-arm/gic_v3_its.h index b9d8957..a673fba 100644 --- a/xen/include/asm-arm/gic_v3_its.h +++ b/xen/include/asm-arm/gic_v3_its.h @@ -139,6 +139,9 @@ 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); #endif +/* Deny iomem access for its */ +int gicv3_its_deny_access(const struct domain *d); + bool gicv3_its_host_has_its(void); unsigned int vgic_v3_its_count(const struct domain *d); @@ -208,6 +211,11 @@ static inline int gicv3_its_acpi_init(struct acpi_subtable_header *header, } #endif +static inline int gicv3_its_deny_access(const struct domain *d) +{ + return 0; +} + static inline bool gicv3_its_host_has_its(void) { return false;