From patchwork Fri Aug 11 16:55:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9896361 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 4D931603F2 for ; Fri, 11 Aug 2017 17:00:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 37FE428C58 for ; Fri, 11 Aug 2017 17:00:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2CF7C28C5C; Fri, 11 Aug 2017 17:00:58 +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 DD8C228C6C for ; Fri, 11 Aug 2017 17:00:56 +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 1dgDGl-0004tL-Tx; Fri, 11 Aug 2017 16:58:43 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dgDGk-0004sg-Il for xen-devel@lists.xenproject.org; Fri, 11 Aug 2017 16:58:42 +0000 Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id D8/75-02181-142ED895; Fri, 11 Aug 2017 16:58:41 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSa0hTYRj2OztzR3Fx3AzflpatlmZqs6Il9EP 6k4VdIChmiJ7VyQ12Y2eG9mvSRSZNJlKklTPBvPyQMkGN1DZJMi8tL6WJl0rNFpFCaElq53im 2ffr4Xme932f9+MlBJJfQhlB51hpi5HSywODce2+KFV88ieHWjnamHR4oaEYS0Yp7bMD+BmUJ tQZNaacTKHWUXnVXKPKWel14TY0E1eAggmcdAigrLoWL0BBBCLV4Fq8EcgJEtKOweBCKeKEQH I7NDv6MA6HkXIYqy1exQLSAI9831c9UjIV3DcHWZ5guyqg2UVztJg8Dh2f+wM5DOQ2GO61Czh LEHkClmbjOFrCWqbv2jHeHgqdJZM43x3APTMj4Et3wPRQJ8ZjO4KH4ya+djfc6Srw85Hwsuc+ zuOT8GD4N86tAuQ7DDyuBr9wTQRLt2gex8Fo84ifrxJBS1Euj2OhbnDOP9gMviG3iG/UKwT34 zHECxEwUdHtn9AohPJJJ85H0kCH65W/olQMXu8Tv8sugjL3FwH/XTL40dSJnEhRumHv0g17ly OsFkUztOUKbYlXJWgsuiyt1UDp9PGJygMJBpphqCxaT2mYhIsmQz1iryCAfU0ob+GoB20hMPl mcWaqQy3ZpDFdytVSjDbDkq2nGQ+KIAg5iGM+slqohc6icy7r9OwprclAhMjDxFJOFjNmysDo snjpNYonfM6VeUyCG01GWhYuDuFMJGfSZhvXW6wdZB+KlEnFiA0lCTHTFoPO+r/uQ+EEkkv5U SE6o3V9ko8NgbEhClNXQ1ipf5LMhvDx+WfL1YW7uhsrWlvS6+6VK14kl4xMHdzRutV2HilnL6 iX/3y93eYZOXa2Lnqv0+tUdzWbUFj+flXCfL3v1MBcSUrA6Td5cyu9Kz3fog2ETdm+eOR9VUx U+lTy9efemtzR9J1vFU8nFJUZ+aqkn21FH0rqbef2TJb5xhcP9acFyXFGSyXGCiwM9Rf11a4v iwMAAA== X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-10.tower-31.messagelabs.com!1502470718!108950125!2 X-Originating-IP: [104.47.32.55] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 576 invoked from network); 11 Aug 2017 16:58:40 -0000 Received: from mail-sn1nam01on0055.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) (104.47.32.55) by server-10.tower-31.messagelabs.com with AES256-SHA256 encrypted SMTP; 11 Aug 2017 16:58:40 -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=XdRoj2uhDL1ecPeAfrDr7WZg0ADo7GC/LVXeLtH1f6c=; b=AGSKOBAcqvmLB5FAEsOYtaOlFw+EkSjH5H58kBhlR73qcj9mPyB93x6C7WllIQE1MlAOds4x24TtC/BrXCWSiewmGxqePTsMvtwOrPorAa8lvpiSBt3DZHhKJPl4kwPJDD+hGS2dIpDtg0j/EeSxjRtQ3C7uqZkGCxXkSGCzo58= Received: from mjaggi.caveonetworks.com (111.93.218.67) by BY2PR0701MB2071.namprd07.prod.outlook.com (10.163.156.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1341.17; Fri, 11 Aug 2017 16:58:38 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Fri, 11 Aug 2017 22:25:37 +0530 Message-Id: <1502470538-20299-5-git-send-email-mjaggi@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502470538-20299-1-git-send-email-mjaggi@caviumnetworks.com> References: <1502470538-20299-1-git-send-email-mjaggi@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0113.INDPRD01.PROD.OUTLOOK.COM (10.174.56.157) To BY2PR0701MB2071.namprd07.prod.outlook.com (10.163.156.149) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 377d973c-b3c7-4863-a311-08d4e0da370e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR0701MB2071; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2071; 3:qfMUOQ3wjSeRbCxIUkiELn+jgC/5qRLOt1KdNqLp4W45KJ+P3W5Z2yh/4AsN5E0N1wawFyaWJBAzwcWQBXjRAmxwQ1HErNGkNGPr7fWxbNZhZIufJfQmYoToglO0bp9R5JmaGNKHDrBV9kLzNwR/kFNID2A+QJ5232koWUXyxsLnI31NgeO84K+psMD+99er+tFRB1BRye4iLXThZiW3ZM/EqBX8rKWiOhmR9a/wNpyMrmpcmCZK0swtP0de+7BR; 25:62bLu4arZ69ttuTd+R1UzhlkWJrD+WQdikdbKN7np4/R4jgZEkB7SrOMm+mtPqhTK4Jl8Hdw6uCHVmcaIMQ9t6oHNZhdmz6zagpIRSarV+sfMpJHDO14UOjKm+yQ0kXdKx3VL+YPjEE4xuRlPgPMairivyspr53z5rfJSg9lHAuD8AcgFUv9sYev3FqD6tK2gNlkETYM8CvN/h1GhN2jmVZlVTLVNs5Yc+YJT37EiARPxNC0/+NB1A8tvrMZk0lIHxI+x9yU1dQjrD6ZYYoQWR1RcY/ayZQ6eDsdJ0wN14RoM+Ws6PRFAeDXeMHlzKJOF9+p3CUH3Cxg9Rmos92qGw==; 31:2taqjfi8+bzjmJaNO3K3yv5PTyY3+Xz+6/RQFO42K6+l9NVPuk1SvsI5jZKEqVfpbcuhFMunB+48XmLmVNneDa6v0QclTOJ2l0RWYtluyw+hKIm3hc9NVFV1BhS1udk6eOOFpfhUP8v79ii0jDOQxSfjadMUyh03JOn9jE/oVUS8Pmlprjwvi4Fj/mhGAV4Cat64BBml6IqWmhL1VXzagas+Nl0eMIsLrU4wDNWguPE= X-MS-TrafficTypeDiagnostic: BY2PR0701MB2071: X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2071; 20:IO3blfXHnRaMV6M6ZuEt5xRDLr9uCYJ2TxrPA3CoarcgDHTd0EMM9Ytb2eTVY7kijKa6Dr22jW2F1hFx4yq7+mljAbUXmz6TV5avH9nYNlhZ/qgjoP4LfDZwDsWHdFDSiaG0Ipv839VA0UtLXR5QDSa7RvriXCf4Cq12/3oY0WPp6ruPrQTVE1y5JPq7VVyiZlTZdebDSmTawvQ9lj8S6PdjkXeI5GIxAofAo9w9/Kzs/RGbHO4p5bTkbovgbru3hL8CHZ2ZM3F21RaxbEikMzyKXji1Ief+3wcmCr77v44lGNYwh9TmTVP2ziP02pVx717YH2GTG1+f8fkVHbA9QVlTkkZRVIckvzCKPywmgjaQlPRb9UeiXB2FBOsOFyOrRQPe1ZW70gQdxs7lZPHwbY4qnZtJ0ck39Ri6bAaVdTLDBhjAe4+rWr8n/z/tqEfDu8gZeYn7MoK62cUuU2DWq96QCoi4XwJ2R1j8UNUFzzJRZiVtJqj15rq8UnHEsyVZC1JBoEaA6pQgriNWwKeIW1FVvYoLaF+WPpRz5Ohsal19c6xas9Wb+vCeB4jkN6JXbIDM9ZFYM2asPB/maYCP0rwR8UIloSNeW42NPj37lxM=; 4:iVMTcJXhZHPScWEGASsDVoDUQyLSlxQEs9gCaIifRJzW584mWXgoET5wZ4wpLIf/3cvyl4dE4klECDYLd8M80qaH9J8fKTrO/BP6euCV2/2hHasrdYaM34+NdKeO4XtnFFJbF7M5rlt46HbwDVK0aXOpsfEOPAjaSiJVgMFL6ItOqVUDkmhpNeXSLj7UqXgjIk/0ekKgnTSE53hJN1wvmOv/6ihy0prxUG6P4PyhBSNKM2r0c3wXt8N8RvEk7VSU 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)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR0701MB2071; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR0701MB2071; X-Forefront-PRVS: 03965EFC76 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(199003)(189002)(97736004)(2906002)(72206003)(42186005)(33646002)(2361001)(8676002)(6116002)(106356001)(3846002)(68736007)(2351001)(6512007)(9686003)(5003940100001)(81166006)(47776003)(81156014)(53936002)(48376002)(5660300001)(107886003)(105586002)(50466002)(2950100002)(6916009)(110136004)(42882006)(4326008)(50226002)(189998001)(7350300001)(25786009)(53416004)(69596002)(50986999)(76176999)(5009440100003)(6486002)(36756003)(478600001)(7736002)(101416001)(305945005)(66066001)(85772001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0701MB2071; 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; BY2PR0701MB2071; 23:013xnXKQmr2eHYU9SB6zWZqKCKboafeEll38MHd?= =?us-ascii?Q?9q4l9pp5H7N3oiyMlZJq8Cuf5BYYWCmyk1hoCQj3ef+e3U1Eb+Y2GVeY5/T1?= =?us-ascii?Q?brKv2Ko9Vy39ZlssZ/2zQm0nDSJFqq+AyqVr/1kkgU3pBS9K8qyNhDE2sqgF?= =?us-ascii?Q?Xa/BIJiEGqxLXBUnjbZj/w34YDMmQXgH7Ob/3nsMtrL6LLnIEjS5vNNY2mua?= =?us-ascii?Q?jiG+Vbr3Qfx8AXx2HZOVo8d4tdz195eYIcqWq0rYGARDlGygd4uxsJIBQMQD?= =?us-ascii?Q?vOSNTuhqwCPpUbG7V2wKpUaDFojZtkVrazYsZbreeGVB++ctQLBrZ0gHskVJ?= =?us-ascii?Q?G2WWkQ6UVlp7NujPmfp8qB79aXD/GDpLnltNf21woMm/xq6AGOoq8wcf7DSK?= =?us-ascii?Q?rdSIJf60DrxNUDmGjzBt1mHkDVfUzdn04M2KE5ibNDpcxuu7fQs4WPyJHWUQ?= =?us-ascii?Q?bpALRXy5LL8zV11nCGQjkbMdicoJANxkZhkHWCEX207HN1x2PQhEqfpGbOhw?= =?us-ascii?Q?geuraMqHuyxg1XRsdwXfhcZsK/Sh7CewpKMkgysqQKqjoQJT6KPdsAJtp9KB?= =?us-ascii?Q?yU9vsWggCOhwIeynL//V3j2B3GDpCqhd83Lmq3heg8NVx4kW1J4YPKmBkfRd?= =?us-ascii?Q?Fuwdp+RLUvoAEvFxFqywNRfXQbsyOkqcyHBEL6LJxjnXNCCuLj1piOMJhHrx?= =?us-ascii?Q?z/fCMtRN1MFuIRFRn7o8O289VrKkPOe8+EA/n06XT7BBaeAJzt3IasyMO/XN?= =?us-ascii?Q?VTM7S2WbzKyQNH1HcpWw+oDMt6hbyVmBW3Q+bWIqqlG+6v4IyGVyqa7wLAIy?= =?us-ascii?Q?s3qvI6pdQMX34PYjHNtfhsWCpAwn7xbdff3bkA+Hhvr+JSfXiCqsWT5IUU15?= =?us-ascii?Q?qsJwC4WYJxrhwBTgkqUYGcQLq/m4ifoK8aTCyfDFGXj8PdcKAabiLK7eXwVl?= =?us-ascii?Q?Jjr5fTFdd9hL1D+v2aPZfR/J8h8xD71GQMiSByZJbKi2Dm/HpF6N9sjcL9Bn?= =?us-ascii?Q?0647n8Ob6DV5omWNgqjzF3kidGGTqghh7dyXc74QImz2SW8shVazEBcLTPW9?= =?us-ascii?Q?c9GGJoVI95TB0CfUg0mXtfU0I7JUCcOzJDZyrbs9YdAE1V/hzsch0DOS898M?= =?us-ascii?Q?7pqB3pFAh/aWuNnWNgy9VgUI/DmR0bLeGzDHuXfKAlefR8eVXb1ltpvpArFu?= =?us-ascii?Q?8VtADFPtTO4S+Zw2phkedXV/9ZBpyJjBqXj0yaC6wXdBO1qEUZ28u7NV8Ncp?= =?us-ascii?Q?s9JtSKCveOKn1NUmEEco=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2071; 6:KE7DbftqCFv6Lfb2zJneCleh5BFCgMgbMb32vFNGokWkIyuXF4VW5y6QANdr5hm4/G3cvRh3krQFWiNiGZj40ArP+aueiyrUaExIlzmmBwAlLZxhZdINNCiZeBrxz4MUJB2M5pIgccPo+DNfT4tUuBJGNy3R/52WDqTwQlVUgCf0K8NyJUstH9o20qvZwlFd72DKJZ1n39nMrqHbyiZgqZZuyx07U8JkbckFkeTsYuqB5Mlk2Mqnb8aqscSenEzKSjXSZVKNbcEtgf0XOyFw1NV2uGhGr/NOQ6W//WXLG/ciuW2pJGjbga/4LLQx5jnDfzQY3AZQlYDTHMBKACF9iA==; 5:V5iimtvN6bTgMRg1e8yqM0uFwD4HjcIV1yrsOKQhAEk2WNpbZ0r1oXl+8oYLDKKeD3vswRfEG+a+YfajGTI3Zt0FeZTwHwfDkS2J9TURFGRsC/I534qWsVXY9d2IPBRvN1kQdpltWvSgC1MdUqlCyQ==; 24:ayYeOdDFfL2mG5i0uh086rGYb1dzn952Mug2b+EuNF3VvcpZOIn7UGxbBpYR5Lr+rZyclXxR1YmA33a27sH68uHyf8UbLKmiDlpUjckI0nc=; 7:yBbQhz+tQ5BDAdOWvnd9bfOct4hEKFyCzbqibtHFZZ675MUuvagP6YMDsQrsA9kDzjBaMZMZNwWi0mveuMeYUy6PjBN5vHQxspyx26pCHChxl0t/5xFYgzI66Ve6zNUSzYaNOZ5m/07UZNasJ3/Ee1plitG6r0Kbjy5SIMsVbTKKNknu2sNTw8EvS0E9fOjhAHhV6SKKtdJCmtYpqCdWKr2I+/ejQDhuKbmz+ALpm6Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2017 16:58:38.1811 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0701MB2071 Cc: Andre.Przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Manish Jaggi Subject: [Xen-devel] [PATCH 4/5] ARM: Introduce get_hwdom_madt_size in gic_hw_operations 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 estimate_acpi_efi_size needs to be updated to provide correct size of hardware domains MADT, which now adds ITS information as well. Introducing gic_get_hwdom_madt_size. Signed-off-by: Manish Jaggi --- xen/arch/arm/domain_build.c | 7 +------ xen/arch/arm/gic-v2.c | 6 ++++++ xen/arch/arm/gic-v3-its.c | 12 ++++++++++++ xen/arch/arm/gic-v3.c | 17 +++++++++++++++++ xen/arch/arm/gic.c | 11 +++++++++++ xen/include/asm-arm/gic.h | 3 +++ xen/include/asm-arm/gic_v3_its.h | 6 ++++++ 7 files changed, 56 insertions(+), 6 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 1bec4fa..5739ea4 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1806,12 +1806,7 @@ static int estimate_acpi_efi_size(struct domain *d, struct kernel_info *kinfo) acpi_size = ROUNDUP(sizeof(struct acpi_table_fadt), 8); acpi_size += ROUNDUP(sizeof(struct acpi_table_stao), 8); - madt_size = sizeof(struct acpi_table_madt) - + sizeof(struct acpi_madt_generic_interrupt) * d->max_vcpus - + sizeof(struct acpi_madt_generic_distributor); - if ( d->arch.vgic.version == GIC_V3 ) - madt_size += sizeof(struct acpi_madt_generic_redistributor) - * d->arch.vgic.nr_regions; + madt_size = gic_get_hwdom_madt_size(d); acpi_size += ROUNDUP(madt_size, 8); addr = acpi_os_get_root_pointer(); diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c index cbe71a9..f5ca227 100644 --- a/xen/arch/arm/gic-v2.c +++ b/xen/arch/arm/gic-v2.c @@ -1012,6 +1012,11 @@ static int gicv2_iomem_deny_access(const struct domain *d) return iomem_deny_access(d, mfn, mfn + nr); } +static u32 gicv2_get_hwdom_madt_size(const struct domain *d) +{ + return 0; +} + #ifdef CONFIG_ACPI static int gicv2_make_hwdom_madt(const struct domain *d, u32 offset) { @@ -1248,6 +1253,7 @@ const static struct gic_hw_operations gicv2_ops = { .read_apr = gicv2_read_apr, .make_hwdom_dt_node = gicv2_make_hwdom_dt_node, .make_hwdom_madt = gicv2_make_hwdom_madt, + .get_hwdom_madt_size = gicv2_get_hwdom_madt_size, .map_hwdom_extra_mappings = gicv2_map_hwdown_extra_mappings, .iomem_deny_access = gicv2_iomem_deny_access, .do_LPI = gicv2_do_LPI, diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c index f584d33..82e025e 100644 --- a/xen/arch/arm/gic-v3-its.c +++ b/xen/arch/arm/gic-v3-its.c @@ -924,6 +924,18 @@ int gicv3_its_deny_access(const struct domain *d) return rc; } +#ifdef CONFIG_ACPI +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) + size += sizeof(struct acpi_madt_generic_translator); + + return size; +} +#endif /* * 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 045d20d..6c2b562 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -1410,6 +1410,17 @@ static int gicv3_make_hwdom_madt(const struct domain *d, u32 offset) return table_len; } +static u32 gicv3_get_hwdom_madt_size(const struct domain *d) +{ + u32 size; + size = sizeof(struct acpi_madt_generic_redistributor) + * d->arch.vgic.nr_regions; + if ( gicv3_its_host_has_its() ) + size += gicv3_its_madt_generic_translator_size(); + + return size; +} + static int __init gic_acpi_parse_madt_cpu(struct acpi_subtable_header *header, const unsigned long end) @@ -1607,6 +1618,11 @@ static int gicv3_make_hwdom_madt(const struct domain *d, u32 offset) { return 0; } + +static u32 gicv3_get_hwdom_madt_size(const struct domain *d) +{ + return 0; +} #endif /* Set up the GIC */ @@ -1708,6 +1724,7 @@ static const struct gic_hw_operations gicv3_ops = { .secondary_init = gicv3_secondary_cpu_init, .make_hwdom_dt_node = gicv3_make_hwdom_dt_node, .make_hwdom_madt = gicv3_make_hwdom_madt, + .get_hwdom_madt_size = gicv3_get_hwdom_madt_size, .iomem_deny_access = gicv3_iomem_deny_access, .do_LPI = gicv3_do_LPI, }; diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 6c803bf..7bdb603 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -851,6 +851,17 @@ int gic_make_hwdom_madt(const struct domain *d, u32 offset) return gic_hw_ops->make_hwdom_madt(d, offset); } +u32 gic_get_hwdom_madt_size(const struct domain *d) +{ + u32 madt_size; + madt_size = sizeof(struct acpi_table_madt) + + sizeof(struct acpi_madt_generic_interrupt) * d->max_vcpus + + sizeof(struct acpi_madt_generic_distributor) + + gic_hw_ops->get_hwdom_madt_size(d); + + return madt_size; +} + int gic_iomem_deny_access(const struct domain *d) { return gic_hw_ops->iomem_deny_access(d); diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h index 6203dc5..a766e42 100644 --- a/xen/include/asm-arm/gic.h +++ b/xen/include/asm-arm/gic.h @@ -365,6 +365,8 @@ struct gic_hw_operations { int (*make_hwdom_madt)(const struct domain *d, u32 offset); /* Map extra GIC MMIO, irqs and other hw stuffs to the hardware domain. */ int (*map_hwdom_extra_mappings)(struct domain *d); + /* Query the size of hardware domain madt table */ + u32 (*get_hwdom_madt_size)(const struct domain *d); /* Deny access to GIC regions */ int (*iomem_deny_access)(const struct domain *d); /* Handle LPIs, which require special handling */ @@ -376,6 +378,7 @@ int gic_make_hwdom_dt_node(const struct domain *d, const struct dt_device_node *gic, void *fdt); int gic_make_hwdom_madt(const struct domain *d, u32 offset); +u32 gic_get_hwdom_madt_size(const struct domain *d); int gic_map_hwdom_extra_mappings(struct domain *d); int gic_iomem_deny_access(const struct domain *d); diff --git a/xen/include/asm-arm/gic_v3_its.h b/xen/include/asm-arm/gic_v3_its.h index a673fba..b849b16 100644 --- a/xen/include/asm-arm/gic_v3_its.h +++ b/xen/include/asm-arm/gic_v3_its.h @@ -138,6 +138,7 @@ void gicv3_its_dt_init(const struct dt_device_node *node); #ifdef CONFIG_ACPI int gicv3_its_acpi_init(struct acpi_subtable_header *header, const unsigned long end); +u32 gicv3_its_madt_generic_translator_size(void); #endif /* Deny iomem access for its */ int gicv3_its_deny_access(const struct domain *d); @@ -209,6 +210,11 @@ static inline int gicv3_its_acpi_init(struct acpi_subtable_header *header, { return false; } + +static inline u32 gicv3_its_madt_generic_translator_size(void) +{ + return 0; +} #endif static inline int gicv3_its_deny_access(const struct domain *d)