From patchwork Thu Sep 21 13:17:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9963913 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 CE3226056E for ; Thu, 21 Sep 2017 13:20:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BAF9D28E5D for ; Thu, 21 Sep 2017 13:20:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AFB9829291; Thu, 21 Sep 2017 13:20:51 +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 26F4028E5D for ; Thu, 21 Sep 2017 13:20:51 +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 1dv1Mw-0006ls-Jf; Thu, 21 Sep 2017 13:18:18 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dv1Mu-0006lf-P3 for xen-devel@lists.xenproject.org; Thu, 21 Sep 2017 13:18:16 +0000 Received: from [193.109.254.147] by server-4.bemta-6.messagelabs.com id 59/9F-03283-81CB3C95; Thu, 21 Sep 2017 13:18:16 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1VSa0gUYRT1m53ZHcWpcVfxumjSSqKbmhKEfwL /GGX46I+ggTZbk7u0O8rOWhtZbYqkm1JgJtpDIc2yFFEzLSFzzScZSoIWWlA+e2xCmZo9ZpzV 7Pt17nfOufdcuKRMuUqoSdZqYc0cY9TIPXD9Lq023LfDkRKZO0xE/2gpwWLQfsfXV3gSSiUMn C7TeoTQvx37iWc5wqy26XrChmaC7MiDxOliGbQU1CM7cicRnQKVK/lykVDS+RiML9xTiIScDo T24hFMxN60BibrStawjDbBnfnPgpkkVXQiTA7Hit84vQPGX7YTIqboAzD8vlwmYqC3wfhQ4Rp 2p+Nguc62hpWCxjlaLZP0XtBf/gGX2gM8m511ebfD9Fg/JmYDuhBB89IQIZmD4dqgHZNEAfD8 xQ1cwvFwt+m2XDJMYZDXOYtLRZ4CHDUXFJIqDJovNbva1irgzUC9i9BCw+iCa3YWzNq+ySRRD wGOFadrhj+0zrS7DL0EjC54Spl00FPZp5AMDyiomnPKJVGhAhoup4tYRavB2daPrqDgik2LV2 xavAphdSiEZ80nWXN4VGSEzmzI0FtMjMEoVHsiTCzPMxmskdHxEUczTU1IuAQ34bWhXmdaF/I jMY0P1dHqSFFu0WUeO61neH26OdvI8l3InyQ1QK0+FjgvM5vBWo8bjMI5rdNAemq8KYVIU3wW Y+INGRI1gMLJgvGJVUyJc5kcq/alvogiWhTps7mNFutHOYIC1CoKCaGUnlms2WSw/M/PI18Sa VRUmdjF08BZNibNCyEwIcSJxk4xhIX5R6lt6NxUbW9Q0FOO/87lXJ0gdtcayxw1sSGq/MW0ya 1e9pm4og6UWNN8M7ut4ExUzEX73uS+0ne/un+b8kqri7UDtw79Scj2C5h65L74OqlxgtMuh99 /EhqfmutzdmvgYGRPX+HDQeq6dW5aEb3zYMqnsVO+S27nx7oTPsbsCy3KOeyfrMF5PROllZl5 5i/zhTcSjwMAAA== X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-5.tower-27.messagelabs.com!1505999892!112404493!2 X-Originating-IP: [104.47.42.42] 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 13338 invoked from network); 21 Sep 2017 13:18:14 -0000 Received: from mail-by2nam03on0042.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) (104.47.42.42) by server-5.tower-27.messagelabs.com with AES256-SHA256 encrypted SMTP; 21 Sep 2017 13:18:14 -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=9QPlA51mUPar7pmcLIPRlYXboEWniYACUZaqxrz4FTI=; b=CSuoSY9v0JexwT6KJH4PF+3DV3XTiVVOj/nh15RYUsYtzfV2c8fMYgDorz3DPkil18+LPEMaMabLRjn3lwlHSUaTxD+VYeqJ/gY7om0N2ivUGkOxVVb17uuCSmXQP9mLlngjh+BdCpdcFaIyb3CdGe4xO56Aekfb4ROiWvBHMcg= Received: from mjaggi.caveonetworks.com (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_256_CBC_SHA384_P256) id 15.20.77.7; Thu, 21 Sep 2017 13:18:11 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Thu, 21 Sep 2017 18:47:24 +0530 Message-Id: <1505999845-12577-5-git-send-email-mjaggi@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1505999845-12577-1-git-send-email-mjaggi@caviumnetworks.com> References: <1505999845-12577-1-git-send-email-mjaggi@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0073.INDPRD01.PROD.OUTLOOK.COM (10.174.208.141) To SN1PR0701MB2078.namprd07.prod.outlook.com (10.163.132.25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 411f7539-f4b6-44dc-e82e-08d500f33672 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN1PR0701MB2078; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 3:lOu5BTEhOsW35SnAr2x0GQWj2Nf/3iUpyinOK8qMaWyW9XW1w+7C60/X7VhLrvzr0gGF/NWs1wT1Ws/EF0xEK8vd+mXH0Cgo7AdrqZnXczsWJ0M8z+5UW9gxdk+BrIXTZ6FGgsq04ftNt4zqKG8ivGxH365CyTtDatGaAiOWBMOCMCrj5OKzd2GVg5be1rabeBiKYSQ1K7WiUYIgS2eL1DmvM7dzvzZsgijRFbWJCWcKXtyVBzwmTRBxjo1yeKSW; 25:nFD9BpSOKUx3B8ElL+zvWX9RYxK+HTuuJDxs4Q5yDgnlaIdF8R3wdGtvPSmSfYZkYQs1O5gSquo9a2omF93c+/0oxMEvEwnorzfhvWav00IMLDgqatPLtpMuAkGQkWXWFzVI8+uY0tQcCtS/Z/4TG0kpOdHjWm4trk8Ssa+V/ZlvUhk7zyx8uyFVGxaJLrirACoFEok7QyjjgZcQ8XZ1n8G4W8lZIqC/L/KSaa1vXAdycwgcdzieRJqEKL/QIf/6KIDos9QOXX3nsDj4dGV01KooXZQc9v7T2WgD5E6mYz3dc29d6DysHKt3c2InfdegR8m1dJ9OOFK8ceGeGB218A==; 31:iwZs1R/mxPS+tmKoz2jw2XG9l0DLYUjxTRS4FzJ2hUlcmeq09DUnO2M6ABSVRwcHoYnbWZHWrchInzqj2T4tfS5d4EMvOWjFgQpCS6nXkBDbmbaBMkP9UEaE3Ca9VDFcAxCuZCybu+gs33ceAHb4RShQzmxHIzHeh3bokqxJ3bfNgwcqTQ9uvwolmP2RMb8kgLb/55YnaF2JDraeTvAJCYiRFlCSKEMQWnUHWZz2sN0= X-MS-TrafficTypeDiagnostic: SN1PR0701MB2078: X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 20:Vmp04x+OHW6aMUu0YC6b3R02Ef/cAsf5JKBdrsNRFEFitslxcxQNTEQ21/yp/vmz/P/fOg1pHPRg6OxBI6FisV6rUCC49qMCsPW9qOwH4JeUgkep12LKJ6qroR06e1V6HsvjjJUWrefx5HhRcuATxEmwqtvWz33wrcqObbhOCj7eHONgsWGbkqOOxd5ouq8T31cB4t9whgutv4xfCY3j4ntWlmhkLSX1fBIE2GvnKWaRxyUHM8nN+/GAA3KGZMRaUI0j1CdXaEUDAjEL9Dxty+lQYILavR/EEHJPkL5F6PP6i2kdQVq67lHvYU8nstKkzYTQukPXZihjscCk8JU13ueDyZXJwpy5j5UMKtFUGlqoSw7T1nvOYsZQI48rlEu/ZTk3Y1dHuftgPbZL7sOxVva8kaUh0quMEpZdofOXuK39kbbY5N6VCtr/rNUqbR5nH4jc8WzlEjipW8N1Cer82XOe48frU7IvBXQMsh+YkAjffvon5WOEELivAqstO0T7lhctUZVybiLpbRkZUJUUnwBzYSv2eKgnpRC4v3IIdbWZQpKBvUcutv+6kJS39niAfK+QWLX4R2DR+PDLStGE/QfHUQHGgaGQsXZ5prjtwIU=; 4:K026atiSCYLRHYF/fR7c4FGRVpXdO8G7b+Q1UasXIOKxAPFG8UWdvCGOsypw9t9CAiXahyzBr0ZPyevTaU/LsXTlHU/clSqGunnx2nHIn1GweRkyiaMH0fhUOmAy/e6JRrgL+klTXM6VVpuu9AsJ96Z8QV+YS8C1e9Vy7v+uggKZRfAOHYZvVblCXtQTxWSNVAU/gXPMvjETlD5G+NPlJSAHhrc7kBDNO3hohsbFHq7348K7zWUHlgEcq476tdAL 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)(2401047)(8121501046)(5005006)(10201501046)(93006095)(3002001)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123562025)(6072148)(201708071742011)(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-Forefront-PRVS: 04371797A5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(199003)(189002)(101416001)(50226002)(25786009)(81166006)(81156014)(8936002)(478600001)(76176999)(8676002)(50986999)(5660300001)(7736002)(50466002)(305945005)(53936002)(6512007)(9686003)(69596002)(6916009)(2950100002)(42882006)(66066001)(4326008)(48376002)(107886003)(47776003)(68736007)(189998001)(16586007)(16526017)(6486002)(2906002)(97736004)(5009440100003)(316002)(33646002)(36756003)(105586002)(106356001)(2351001)(5003940100001)(53416004)(6666003)(6116002)(575784001)(3846002)(2361001)(72206003)(85772001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB2078; 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; SN1PR0701MB2078; 23:Bz5tXkTtowfwPwz34TLRJiXB0XG0jZjwWVWBHGJ?= =?us-ascii?Q?BCuMWoyltz7wJUg2yRctTnqh8Yes7pJOsOS79rWv1TYfuz0W7GK/Wi1sXKsC?= =?us-ascii?Q?nioTbHgpTkmaYCwGNlZCTwnRea6MvfiPu0noyKQ892sK6E54ZONB2yrGIDvr?= =?us-ascii?Q?Uwu4bus5/HIWKt6fQt+lcY58bisvbrVHEnGgOxtMhF2Ny1W83MliTK2fpRj5?= =?us-ascii?Q?I7jy6tm48LcVGC2Kwm44yq1eQ7xGcWZ9Vl8Zo6lWbA1EqvBXryR5LL3Hf2VX?= =?us-ascii?Q?EvIA1GzughfbclqcUX6WI7DGVpqvFOy3UNzpdgPsDvIeCXgf67BoGKrFQAjN?= =?us-ascii?Q?KMtKRadkd3UP1JCjtLEt2oVbBsCZFyLJddSGQIwWNLokN1wgTbmRtvzkag1k?= =?us-ascii?Q?VNPRr5MikH1PXNSvIDciHjc1tPsWgNZ8q7wri3a4kyR/3PXQTfhwAurlv//B?= =?us-ascii?Q?NGIRjlBhzROVXq2q4mkj+g2LVRkfNV72CW9kib2W4sDtRUFY0qXJvYBoiOIT?= =?us-ascii?Q?Wz2wAws2fnYrteLPTsqhmoikEajz3NoCooBBvruIrMvDtws5yJoCGOdPWt/Q?= =?us-ascii?Q?N0a30TBb2eUOKTDZh6ia8ilIk8F9v5iTTY6Rzy1Q6Lsq+nEqPpx+fEEQjRxK?= =?us-ascii?Q?EiKC4Mc5p7zlumeyo52LarChey4dPekFlSJCD48euHDFfjWNT0zVxSh464ZS?= =?us-ascii?Q?I51E3YpycM4gw2zrE/j9aQHuigmCjHoqdLEtw233dD2EmJSup2Gv69yYf6Wt?= =?us-ascii?Q?kvjCl0bN61AD7T0WVsbipKY1BKXN2ujJvzVire9C8okKsq3+QiX8aBpGn5Xv?= =?us-ascii?Q?3C74vd5r2v+9+vVDxHkhpAmbTF3BLHKLZABsnml+sxnltmr1JIsn1ieJZUwu?= =?us-ascii?Q?iyyRstYu6YbwUFqOmCz/XIRiyXAu+JAh2yJE7aN1NVM4i81OihQ4L9ApSgWb?= =?us-ascii?Q?0L07WkraGppBH1xyDmY+a4JvilnGwZROoUrbTevRDkVd9goTAzRZ5lB16dve?= =?us-ascii?Q?+ViVg8BDj8/l3SBITVFTXOqx3050B3o3SGPA+bLsYatCb1AwgmsYiK3noID1?= =?us-ascii?Q?beWCIuoQ709bKhSD8fBuDOMt9Eio6NvabB4MuYb4s/3+iDte2dmUt+RuhxWg?= =?us-ascii?Q?x6xg7oVtOFmWQRXqXAtl4bnXDjoRuFkNCa17lBkthkrIf0V/lXYf8hcy9q/8?= =?us-ascii?Q?tkQoRJSKOHQ3WHnU3eN+Yrf+g2KXer5KmCTc6igLv24qiWAmIhpRwbPELINU?= =?us-ascii?Q?HfJ75brZsG6mSa5TT9DHGtpEmSzeh6XoUW/863MTk?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2078; 6:2y+qjWCEBjtIz6I5yqjM6K/GTXb+CVw5kb3dwdmieDWiwYb33Zz3EDEGO9//CxA7wM/ftSLXLiYxFjYg90rOvifCyj4Y2VL6iG6YLHE/mzJ1EJ0e9oQD/06/FYQyO7AmoNL9R56h5wdSgTNqrOSDNH/rBYZsENiyCD15NacpWwnYjCrcdz4/OT9xnO3gD5KHUJaCXWAPMH0N1SGBw6WqLDkCoD/eywfEZufm8bnV/0xbSSNPegpsCxgrgh298POfXNUbjgdxpVceVcuexVlvUjhBMFxdjP8zAohh+JoibAFUj73jhWPe7vwyPd9dmTgokbOGopHQVo8cLYJbBuuPjg==; 5:h8pyy+k9+SHi8Awpjs80D6nkcys0aYB9Oy5bYLly7uj9pZWADdXkBsKBBaRPuRfbq2vxx9PRfIqCNm291LWphyXC77LJkR5AcFxI3xXqwSpI252Yjff8KVkKkLPDvlwgebtaw3V1c56j61pjTwXjSA==; 24:UsbR0LtnJshAWpLgns92kd6sLq+cTj5TwuNmwMyjp+3f1XVZZZXudVOmdOOL9qO9bav287Wakv9oE+42cR2b8IAks3G+GMTW5hHekvZbAIM=; 7:3gy9wr1J4RpJ7Ca3INCgJphdQPRAzm8fohErpEejjG2pV4BJtvTjq9I1tPZ7ROeCsjv2l++rhe7I+aLpGwl6qKqyAp4qVOBc/iWdZNTWJJ/ifDQtnTztDJgir//0OxXK9lxLPQhcuUcyGvrz4XU48OqnIIVV3IXNfv2QvLC2/Cv7SY3vV04CAGheDTB25qnQFfInLOZMeNMXbIHM47WHWR5dxuWfgspxiuPGnrmZLd8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2017 13:18:11.4751 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0701MB2078 Cc: Andre.Przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Manish Jaggi Subject: [Xen-devel] [PATCH v4 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 | 9 +++++++++ xen/arch/arm/gic-v3.c | 19 +++++++++++++++++++ xen/arch/arm/gic.c | 12 ++++++++++++ xen/include/asm-arm/gic.h | 3 +++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d6f9585..f17fcf1 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1808,12 +1808,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..2868766 100644 --- a/xen/arch/arm/gic-v2.c +++ b/xen/arch/arm/gic-v2.c @@ -1012,6 +1012,14 @@ static int gicv2_iomem_deny_access(const struct domain *d) return iomem_deny_access(d, mfn, mfn + nr); } +static unsigned long gicv2_get_hwdom_madt_size(const struct domain *d) +{ + return sizeof(struct acpi_table_madt) + + sizeof(struct acpi_madt_generic_interrupt) * d->max_vcpus + + sizeof(struct acpi_madt_generic_distributor); + +} + #ifdef CONFIG_ACPI static int gicv2_make_hwdom_madt(const struct domain *d, u32 offset) { @@ -1248,6 +1256,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.c b/xen/arch/arm/gic-v3.c index b3d605d..6e8d580 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -1406,6 +1406,19 @@ static int gicv3_make_hwdom_madt(const struct domain *d, u32 offset) return table_len; } +static unsigned long gicv3_get_hwdom_madt_size(const struct domain *d) +{ + unsigned long size; + + size = sizeof(struct acpi_madt_generic_redistributor) + * d->arch.vgic.nr_regions; + + size += vgic_v3_its_count(d) + * sizeof(struct acpi_madt_generic_translator); + + return size; +} + static int __init gic_acpi_parse_madt_cpu(struct acpi_subtable_header *header, const unsigned long end) @@ -1597,6 +1610,11 @@ static int gicv3_make_hwdom_madt(const struct domain *d, u32 offset) { return 0; } + +static unsigned long gicv3_get_hwdom_madt_size(const struct domain *d) +{ + return 0; +} #endif /* Set up the GIC */ @@ -1698,6 +1716,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..f3c1f0b 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -851,6 +851,18 @@ int gic_make_hwdom_madt(const struct domain *d, u32 offset) return gic_hw_ops->make_hwdom_madt(d, offset); } +unsigned long gic_get_hwdom_madt_size(const struct domain *d) +{ + unsigned long 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..3acdd6d 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 */ + unsigned long (*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); +unsigned long 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);