From patchwork Tue Sep 5 17:14:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9939403 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 BC330604D3 for ; Tue, 5 Sep 2017 17:18:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A10D2289E1 for ; Tue, 5 Sep 2017 17:18:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 95A9B289E3; Tue, 5 Sep 2017 17:18:28 +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 CB3BF289E1 for ; Tue, 5 Sep 2017 17:18:27 +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 1dpHS4-00063g-Lu; Tue, 05 Sep 2017 17:15:52 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpHS3-000621-9E for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 17:15:51 +0000 Received: from [85.158.137.68] by server-5.bemta-3.messagelabs.com id CF/0A-02226-6CBDEA95; Tue, 05 Sep 2017 17:15:50 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1WSb0gTcRjH+91u2ymbnZvi49DMYRKa/5JgL5Q kSTKK8k1hBXWrcxttOu5mWb5IKBN1imFYWmKQKUjN0AxlYWhOnJLFyP8RE5boSFuWlL2w7nbT 7F59j8/3eb7P8+MhRIpVsYqgSyw0U0gZ1ZJgXJ8Sm5XkmLPlp770RWl+vqjHstCRN74P+El0R mwo1BaVXBDrR287ROZbiSVW+3tJGZpQV6FgAidrRFDpnBFVoSACkfnQ8rtcwgMFWYFBf/eiH0 jIGOircWG8DiPV8Kmj3q9FpAnavMuI10ryBExu/PJrnNwDI4tjfo+czAXX+g8Jr4HcBTPjlf6 eQeRReNDcKeW1gvOsDtnEgj8UnI0eXOgPMLAozABkLCxMOzF+OCCrEEzNTkuE4nhoGKvCBFM0 ON4+xAV9HFpdtVJBf8bAWq0Rim9Kod9ZFzDtg4URfgoetEvBbu8JxCWAbeJbQJuh/fljkWAaF oPb1heIi4Ivze0SATwRwyuXO7CQFoZbRgJt52Qw6RvBhZ9KKXjavLjwZCr42utEdSi+advmTd s2f4SwDrSXpZkrNJOUtj9Zyxh0eouJMhiT0lLTk000y1I62khp2eSLRaYuxN3CDu7rRd7q7EE USWDqcHlOjy1fEaItunRNT7H680yxkWYHURRBqEEezN2MIpShdXRJgcHIHdQmBkKmDpNPzXJY zpopE2vQCWgUxaoi5LM8IHmgLy7cKts8RReKVinliBtEITPTjMlg+Z97UQSB1Ep5Lt9FZii0b HX3csEYF3x96SkfbKH+IVUZasg8Ne7xDN4ZCMKdxNzueYh5No/WiW7H6z+lkda0vqu+DYentH bFbc2QTWXmpB9MOVcRt8Yymq6VhDzbkDJzJ7FEuq1lve8OdYd3nm28rLn/cSH78Np37/I9e0F IXHlnxOkMz2xm67zGOqo7Zj6Q6LaYlb7Una138+b6ym+ocVZPpSWIGJb6C1RID1qFAwAA X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-7.tower-31.messagelabs.com!1504631748!105772615!1 X-Originating-IP: [104.47.33.64] 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 62651 invoked from network); 5 Sep 2017 17:15:49 -0000 Received: from mail-bn3nam01on0064.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) (104.47.33.64) by server-7.tower-31.messagelabs.com with AES256-SHA256 encrypted SMTP; 5 Sep 2017 17:15:49 -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=AUAG5vczfDL5DohMOF7mPCOjHJwKzp2ixK9X6tswyOQ=; b=U6iKiQjkkWAoIMj2fh3MaYYFLLwN1H2IMhB/eoAnCYaRBqrn6MyUSWQ7W1dE7Pje0FRSscXheIBW1orBfQ+BFoO9WsV5NOakSUdEI9hMIuVoIsVq9xXIJnrPq/luo8XohB/5oH4m5Y8Fb9fW8+nU0I96ERn5WICzAv7Bu8rnuEA= Received: from mjaggi.caveonetworks.com (111.93.218.67) by BY2PR0701MB2070.namprd07.prod.outlook.com (10.163.156.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.13.10; Tue, 5 Sep 2017 17:15:45 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Tue, 5 Sep 2017 22:44:59 +0530 Message-Id: <1504631700-19358-5-git-send-email-mjaggi@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504631700-19358-1-git-send-email-mjaggi@caviumnetworks.com> References: <1504631700-19358-1-git-send-email-mjaggi@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0079.INDPRD01.PROD.OUTLOOK.COM (10.174.208.147) To BY2PR0701MB2070.namprd07.prod.outlook.com (10.163.156.148) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: db50a0c9-9cb4-4ed7-55e4-08d4f481bfe7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR0701MB2070; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2070; 3:n7sqs0MRY28KqFZ3bMMYnLBydTli14p5+QAKF3J+UYLO06A3nxRIu4bdQ+xBz769+vm5Qz187lG4QmDa9O7UMcxYLUT+sB0oF0QTLow0Dnk1n+Vr6y1wZcv4Q9ovq5iGx+C7+tJutV10RZ/1toGLCHyh+/95eTIkaXd7RYSgSRbs5V1/dy/Ej7OvSz45sXzlYAMBlG8ro3/wJGun6B3iLFd6wOO3Lv19WnxcZ0MFQxsVfECbyqLg+DEPVcLwNEfG; 25:7eFaHrl3ZpgTA1LReXjn4FAqYwpE6oFjRQk1KlBkfd7V4UPiyik8bZ8OC3NTvoKl5vmTajGpfGn9jyWh4qO0H2ybcKhjTc3i7L/ZQY8qochCPGFUkGkS9j4d3DFBmxSdDu5OjCM2ULiA0spsTA/KYHUZiC+xqkBdbbMD680HUJOnytNFld7wqiFxVDjQS8FBfUwE748AQVGfqiF26z4iRwKRoB2AvAYK74sUZiomibI1qP49f2nWwdyw5KSFAnI4AGUTE4DPgR0AkNnX8jO3pX0LY5bQ88GmxPlrZPSQMby5iFcdl3H6epW6Q+v5syvDB7R2o1+QrqzZ5KU/sBt8Ug==; 31:omJ0bEkouuABHMTFMDSx4qkW7m6O9oOsQqcVacpJEHfecsMthoFTXzNGGsQMZtyc9qGi0jF3+ht0WJXAWtHwy9/ZK2jNclVHLolzlBLcQtTYs6OiFTy2xuNPp3kksJVwE6PXP4/szsYyhEJcW5fmDo18V0PSP/rw4E+ygKywPyXLZCEUwqvC7tR0MEfF5MAYbPtZPs1kB4lzhO3RG/N9GFlMoKF9oGqALzNIYib9JJw= X-MS-TrafficTypeDiagnostic: BY2PR0701MB2070: X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2070; 20:QI5m+VJqlnDF+9yIlOFXdx0bdt5GkcM9mpWrfNq/LU5borEo2NOT9cj3hcRWlJ/szD7K18grAhEgrxmUwHFHN/LqU0UBSkgaurahmhU+Ah9g9b0yZ20wTKLR+u54zsurGyEqMgk2qz+YAHGYjuTwOVadUHXvDoPdXkUQ4cAkrUWEECQbeMpNJfT6RoYjT1jFleNsOu+8KH3FE6dlHNT9CEETSYAHDCKaDNl6f4xBtM+0KEw4yxYGH1rRWXylDpZ+KRWmgJw2aRaWcXNrZnQEvAmCi+IknaP3cf1SW+xbLvHZs0rw03bNvZ0m823KHgJ7b4YZ9NkOwbd2Aea1zPFCf1ucozxyiaiMTL89PffdtXIMj3FTUTJwKhorHXANu5/dDUEuNPhqaVJzoBikRurozErHtIjXsRgiBtcVd9sRleUyxuarX4Usf80F7zMEd3ybCfJsVk9umsyV4S4ZHW8FkBACSEmQA6rUP3P9uADDfSpwZpwNWyWEBczkw/k5229zuueCal2Wq8bfXUs3/nalXwAi5yCyhO04/yF8kQaN9pQ9Rak3M9txhhmaM6ZGEZm72p4m1goA/QjNdQFvlByNVTxD9vQYUUHnradusGKILPY=; 4:jvsM1jy7aTC2B8WtpzpuSy5NUBhEgh7HECkMSfgdIWKpe+wfndiL+9XBnkYlEMDapyncHSxWtttcREFsAXmbSCLJ2r1XqXtG/ZiyP5AQ1IzmB2L6WysepM+T9RwN8N4B/LURmvG5dB2zfqvQ1H+LsHU7Z+bEZS45zk4FbxmQ8bCh8a9pxdLeRNBdcEJaMDbvOVSC3da3bOouu5/J48pdCSew6C7CikziBu1yDBPlQdfiGcDItjEGAy8ZtVezVKnD 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)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(6041248)(20161123564025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR0701MB2070; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR0701MB2070; X-Forefront-PRVS: 0421BF7135 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(189002)(199003)(81166006)(81156014)(69596002)(33646002)(48376002)(478600001)(50986999)(76176999)(8676002)(2361001)(50226002)(3846002)(305945005)(42186005)(101416001)(8936002)(66066001)(2351001)(107886003)(110136004)(7736002)(4326008)(47776003)(106356001)(5660300001)(50466002)(105586002)(6116002)(53416004)(36756003)(25786009)(2906002)(5003940100001)(6666003)(5009440100003)(9686003)(6512007)(97736004)(189998001)(6486002)(6916009)(72206003)(53936002)(68736007)(2950100002)(42882006)(85772001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0701MB2070; H:mjaggi.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; BY2PR0701MB2070; 23:8q8j3V/44Kba+QB0SYlqe/dkfAgUehxMBjCZJR0?= =?us-ascii?Q?FhXx50UPsDmeO6q/ZOkg+GjvxN9rUL1zC3jqAc6s+6KWVHmnbzcfszkYi+9W?= =?us-ascii?Q?LIVECpVbC1r8XKQQjgyKXpXwP2QlsqOiNGqi4DqepAtA9UuwZIehS1zPGuFs?= =?us-ascii?Q?MpC/mNjjNRAayZCmhVkfP2knGgyg7zHM4ndXjaF46prt0UVnS2hnLEtoGm8p?= =?us-ascii?Q?lnXR+TtlzZLUdenB9ZKAQXTSd7j5vD4Eun26D8BnxdOyf4/EwFrKtw8/UBLc?= =?us-ascii?Q?zXqgHc2dkg7RXOcqf5sub14CbGMcyEkXZ858F3B7X5SnUB8BHCW/6Y0fN5pF?= =?us-ascii?Q?kGcBGlpXGPZqQdWIlmVVj+ywJKvskHv+Ud/X2zOcqDDvRkQ3IbRDfpsFyZ9R?= =?us-ascii?Q?yY5vWbeLn1pb0dlXmpHuXYc+oksmii1dDBTTpTCxhvHbb35je1cXdLsQbk7m?= =?us-ascii?Q?/75LYVD+ohY6D7p1EmhnqcaV4j4xQLWfjynHCwtv8kGX16juenJXzR4gGEV2?= =?us-ascii?Q?QJfLreVqp2+4iYk4d7OyueMrXF6w9ySS4pQG5vpe9wezwd77C71RvLLmBF5E?= =?us-ascii?Q?3D4p/aDXg3+4flxPT72sf8DehUcMVuqeQBfDXBC08pU5CfuhnGgAFs8xmRJT?= =?us-ascii?Q?ULt91Ua3csX01H7x24CKSuLCIoci902+1ZSO8N0ZDy5xpDWvMDL1/rKQGzeE?= =?us-ascii?Q?p+hybAxczKvDxQugxQPBITVQ2eVLfPWCnPijnyQQq+qWvRejN5EOC9RU7eP2?= =?us-ascii?Q?JRdzpd8QQy7LKA7T0qMW6D8UvRm7o+2TI67gaN5aFPgzsWSJqUUyz0lSEZzu?= =?us-ascii?Q?kfPdqFJmeWySb0/LW73sjQp5VCqNZKN58iHTjerVVrhUOOPjz/T6TY5lFW2K?= =?us-ascii?Q?ZVosRUEoHfbyUh+Axghn3kUg3fZN5pVW1I4aeJdgRAhNSmVtxBQ6ZtqJlTf1?= =?us-ascii?Q?CW2Q5Y9WZprxjidMMvG6STog2fjAcgRpRikiclVZjTSyi2KAG4tGwCW8tlZ+?= =?us-ascii?Q?Dyx1uopb5DNrt2Wo5Plk0LtkH39iMr5BYavVtIiDwDwDIHP/8UY63ExzPStS?= =?us-ascii?Q?Yy51Xg6pNYTGep7feDVeJhj2DDCwmxdXoRM3/DuCcDQ5vUUgqtfGBy6jClDE?= =?us-ascii?Q?X6X+4zUktxhN2bykzLTB8N1gr7fbzKrESc5AYT9mQVS9GY9yYSBwtjsnXX3m?= =?us-ascii?Q?ANEoiLP9Y49Ta2DyUrfpEU8DclkdnylYHhLYi?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2070; 6:B67eDp/4JVPPcBmvPmleg6GRpZqXTj7VO04i8gYzK+ILzzMyPWwCEGCLQzTEU4Uy+puh8XhGnIgprYGQLS0k4EUt3UQHG5mDKBjl+nTnNAniwEyQdcGNtTCZvRm/WmfecEREkB/KnTZ5f5o7r+7PEioMY3AIDqo+iCET9fYJ5BeY5mFj+kpDbFIaCT1JoNrdVQapps/xWwaRNBZQ+Cs0XAIjDgYBKZWyariZFZ4UU5LczkfYa7uEVPI8CpaafeC2vlL778iull3V1SpYibtd6tO+ZujHZ4W84qGj6irorxjLvhVvZwRqqT4zQ0enZi02B72T7m5qczgrMiQpG2TdXQ==; 5:n+V2JpOyIeMmQWMiKMIX8ar2CyATi8qRAsUya4Vz2swlwL3klZKy8bqGsltxG+RyBjTT4d0zbRgUdTophkg4oANdIkfEAAMqkMpPH2rDps10X0JpqTnpk41hCREtB/hZ2x/Ex8Wv/WQskRmU66Ys6A==; 24:JIkYzVR2MpfX+4YRIH4iGXZxDXBaimCfnvQoVgFtirrZ1C3p0y2hp/i3atUarMY+qQaKZijfyFWG16n8ev/jFdPcS68BiDUJLzTw2mt+5mY=; 7:jV3x/MD24xYpvfeox7ruJ/emIooo7HnG5SlsoVfxnrz5ehPiLknaZ3ZqUtqc411vn5PcvmnxzxsOh6d1kkReqCrHZGroza+RmXQl2OuczhU8KYVynVi1PI8WaxVyAzpYjy+yV2DcblN8EMl1sMHFx2mTWKRCGgbJMz9fSA3FTOfMMKcEn4ZOmeM8+3ZsbbVc93R8doYffn1MGS3SOmyeYDnoYkdQaR24WFZEEYVkcwU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2017 17:15:45.6149 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0701MB2070 Cc: Andre.Przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Manish Jaggi Subject: [Xen-devel] [PATCH v3 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.c | 18 ++++++++++++++++++ xen/arch/arm/gic.c | 11 +++++++++++ xen/include/asm-arm/gic.h | 3 +++ 5 files changed, 39 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..737c50a 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 unsigned long 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.c b/xen/arch/arm/gic-v3.c index b3d605d..3eb67f2 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -1406,6 +1406,18 @@ 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 +1609,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 */ @@ -1698,6 +1715,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..9ffd33a 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); } +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);