From patchwork Tue Oct 10 06:16:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9995071 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 345A0603FF for ; Tue, 10 Oct 2017 06:20:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 248D6279E0 for ; Tue, 10 Oct 2017 06:20:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1902927D0C; Tue, 10 Oct 2017 06:20:26 +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 22B3827CF9 for ; Tue, 10 Oct 2017 06:20:24 +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 1e1nrC-0006GB-UB; Tue, 10 Oct 2017 06:17:34 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e1nrA-0006FW-No for xen-devel@lists.xenproject.org; Tue, 10 Oct 2017 06:17:32 +0000 Received: from [85.158.137.68] by server-4.bemta-3.messagelabs.com id 7F/B0-20448-BF56CD95; Tue, 10 Oct 2017 06:17:31 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA1WSa0hTYRjHe8/OtqN56rgZPo3ZZeZIcV6IahB Elw8paBRIsArsLE/uwG6cM2MGkpCVW0V5wcoEFbqQ1KAwMgrKRGuZkZdqM4s+SKh5m2GlWHbO zjR7P/3f9/d/nuf/wkPIVHNyDcG4XQxnp606RTRuSU/eY5hlBkwZzb+Mxp/NVdgOlNU22YfvQ wflrN3scB+RWzo8+51XUt118+/xUhRI9KJoAqcuyKCqLKj0oigCUSaonz2tEIGKOovB1dFhmQ gU1Fp4dKEHE3UcpYPPTVVhLaNscHNkDHkRQagpFtorj4jPOJUEgY5zuKhJKgv6Wy+F7UCtgeA bT7hlFJUNcxXfw3NVgqd3eFop+WPBf3UQl9oDtA4NyaTa9fA14MfEbEB5EVR/6MKkYj3UdHoj AxKgvasOl3QuNFYMKqSCRgTdtaeU0uWUEqYeP5BLrlTobRuPgFtKmG14jSSQAr53ochsJ3Sd+ 4YkU4ccKvurIkAL443lCkn75TB2j5EymaGj/mWk6x0Syq89jFw8Sgi9KA2PUFMamGjxo0tIX7 vk57VLft6AsCa0kWe44wxnyNyaZubYQovLRrNWQ2bGpjQbw/N0IWOlzXzaUYftPhI2YZlwWtB wZ/ZztJrAdKvI5fSASbXC7CgottC8JZ8rsjL8c6QlCB2QowUCi+WYQsZ9jLUK67SAgYjRxZEh EZO8k7bxbKGEXiEDUR78NIepcLvDzmjiyaeiiRJNliL7YouFpexBCRo1iYRQqhgnw9lY1/98B MUTSKcmKWF3VTGs3bU4aUQIgQkhEB8QQ7jof0hTip61VG/hfu/NKTIskyXfqPnRc1qbs/Pwn4 l1G2KDKGlGbUzxDc0P+hq3HQgpq7X9F+tOaLrT830TjjPsk7xbZVM9Rj+l993+Yh1PNV42f7y +62Txbv105T6ftlpfErt9ZfL5vM0nTa0V2gRPKNeS9HbFm2hyJrF4o3qy5NDd6b4rOpy30Jkp Mo6n/wIx0psyjwMAAA== X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-11.tower-31.messagelabs.com!1507616249!78643046!1 X-Originating-IP: [104.47.41.71] 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 50342 invoked from network); 10 Oct 2017 06:17:30 -0000 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com (HELO NAM03-DM3-obe.outbound.protection.outlook.com) (104.47.41.71) by server-11.tower-31.messagelabs.com with AES256-SHA256 encrypted SMTP; 10 Oct 2017 06:17:30 -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=P3CGSV3WmbBMwj+zGB6JmDg7Y7ArEc1NZO5/n7RtBqA=; b=DqyxFpGY53ZmnuF3ElEE1JtDi+yJ3mX31+DspbuegARhioEnc9RinKFHo/15et5HwDSfmGQHeuLVlDDBWEGvSXJ98lKd3lSG132RI8dVZDLyUAH3C+xDz+LGEyTEqGGKvN4nCBXWZVcagYwiYJEyWqNXBwnsTZCYzftbC42ukFE= Received: from mjaggi.caveonetworks.com (111.93.218.67) by BLUPR0701MB2068.namprd07.prod.outlook.com (10.163.122.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Tue, 10 Oct 2017 06:17:26 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Tue, 10 Oct 2017 11:46:57 +0530 Message-Id: <1507616218-2478-5-git-send-email-mjaggi@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507616218-2478-1-git-send-email-mjaggi@caviumnetworks.com> References: <1507616218-2478-1-git-send-email-mjaggi@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0079.INDPRD01.PROD.OUTLOOK.COM (10.174.144.147) To BLUPR0701MB2068.namprd07.prod.outlook.com (10.163.122.150) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ba961736-f582-4199-263c-08d50fa694f4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:BLUPR0701MB2068; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2068; 3:ipsyDbwl58jjYb4r9EniUXXAGNDHosnLthrbmPY4cnOKQz2nCJ1fWqw4w6CLTnvVMLmFee9iMOue5BJLKAuL9VbnZrDe+H6iQoKZq9YBEepCbdrHXneqWR/aF1if3rezfWjhx7qXAWRf8tAPtCBOOeqtHGdXfcWL7vbwU5Q8C4LYMOxxyVilgzkSWWDrPgd/l7lixHzBf5eO/397p7z86yGvwMbLFoDgSmb6aHkFgVb6KRAXuxoDG9EPuccJ56Vl; 25:N4dveaYH4QSx0iitd5Xq8bvUllYOhfoTIlwaXqJlSm6WQ3eAtw1OgQZUV9m7x3h4KEJWkZkTxcy9O2F3nTBHMNo2JQkSTdbNP6EqNe4RI/1Iznnm9oFUwZESPPxjArMIoPQNRk7z0lNcBmYAqjZBk3kJQHOcW3m3JMmr/aYkBPSHg0vLD6R7/NuJG8+XGPEvHTQ4jTeqcKFn4FfJ7+5gTeTSSZduhzkmXeRt4lVD+RLdgUAYgqYIO3pvE0Lg/PJj2968M9iteZ/hzjqnWgpc7Ze8NbHt0UZyuPp0fhkCy4hQ0e4XBZ/UTWojh5DdiAhcqwA3tYw/VLCTeYWFu3Uc8Q==; 31:xkRhRW5KMb5vJIV/BaSvWkIMe9q99FFhDkzAmnoV+KHGj3mT1XFSDoL0iCS11GMfbNhqBJlQa5f6/4ttYStdMifJXgWbbFiZE6SLHbLdz+9payOmwJOPve1tlO3i9CBqV4ns0I5+qTlJWW2m3vR8/sR340d4FtSxq/p5irSUiJeoOwo6BetUDEr/FWKQlGwek0u392MW+y0diheWOPZqP6DNPw+3NkljW3PLhf52qLU= X-MS-TrafficTypeDiagnostic: BLUPR0701MB2068: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2068; 20:15Il3oMXTXlkBiQrJSLJQNAgfwqYFD79UTP6Dz7rHG/PCBNBBHcQQ/uGJa57uoe8wQrGOA+pxUYx3FKH1VlTA/MSjKYuHhERaVT02Hx1OJXMR58cH3zZRYw/Ezd9QQp/ijIsy07k6QyyUESHOQ75at6Cc0ZTham551201sYDh7kIGoGfOCIht4PU/r0M+6nXkD3P6XaLsrBLs8AOfQfahStud3NS61eulT/PdJeOqI8Wfbvd+Cg0qA1aZeEmcvDW+rW3Eks7zrzndtEwIz4ll5S7Xo5oCWmh3Unl4doyQ9wftkNr22Vsp6Me9mi5qUOnvJWWwCZ/1MAApkEae8Ih99mUXK8HZVWec5FQc8SkUVZrjXyCOKOn+vd7sTJLjhYVHNLQ3TWbXDKpZo+lQztohC7M1W5KxNFmQzH6K+nX8QFFICi/yUWAE2rD/ll7oWAqmRDdnw28AyZtDa9gzRlyQRjZMOVW7BdCH/2e02oI5GtemsRNR2nSehoXTFdu8TyZanyZeZEMJLkfA3IUVoh0OEaWW+XByfArX8Jz8TqVhKTqinpe+M0STmyiWBalGG7EqbdYlk5XMPOaI/H47dHH/47NIrhoeRjg5UMRTHlw5Yc=; 4:NN3Pq3O/z0dCfDkSxnJo0rovtbicaMoRmaTe+mibvVdvqq3rIyg9iCsaqkMXVkECj5IZqMO2bwjaMU75ZDADMbuAGcAwzeROxlJh/ZRTRQOPSekaakjLO8iU9IlniYosU+bZJAQ7QJNZ52BsKD6AVkZLR6ukqQ4cDCQWgRnPXy89HPizxMvAf7LBsmhc3vKaRFSWDFJy3GKGbDmJqUcyPanatehdWfEs40Z8FWhfCvL4Jgxp5a3PElsvVfJ83XTs 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)(10201501046)(93006095)(100000703101)(100105400095)(6041248)(20161123558100)(20161123560025)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB2068; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB2068; X-Forefront-PRVS: 04569283F9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(189002)(199003)(81166006)(81156014)(8676002)(2361001)(101416001)(53936002)(105586002)(107886003)(106356001)(2906002)(2351001)(6666003)(4326008)(5003940100001)(97736004)(53416004)(33646002)(8936002)(50986999)(5660300001)(305945005)(68736007)(9686003)(15650500001)(6512007)(76176999)(66066001)(47776003)(3846002)(6116002)(16586007)(5009440100003)(50466002)(16526018)(48376002)(316002)(2950100002)(69596002)(42882006)(6916009)(36756003)(50226002)(189998001)(6486002)(72206003)(478600001)(25786009)(7736002)(85772001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB2068; 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; BLUPR0701MB2068; 23:eX+ZPpHHjyQdF3keuT19+9yZ7IedLSEgWxarNV9?= =?us-ascii?Q?vYtCzz0OLFuuwLafCrqqSYq3umGzKvRyqFcDop/+wH281SRVzrsiYC37gzwT?= =?us-ascii?Q?UPe1t8ZcXS94y+nyj+h/dTfwbGoRtYdXtKCaWZ57ZS6xGxLzT15SSKUnY2GN?= =?us-ascii?Q?yWYzbppvNi0T1LnpCKl5/kEQSbiaBkEJ4q7k0yWtq3oKGaaX30Ntzx0kZiVq?= =?us-ascii?Q?vr45BjFQ3ibZCxnKYnV6hwUWfpECpgZeodaHs6Jlvwb37l47mVJ5l2gAF2mQ?= =?us-ascii?Q?KvjvrDeBVpChSDBJMyJJK1bHUyInTmaC2z50GA9/PKzGKUclGaylUoNDY6TP?= =?us-ascii?Q?selIZLDY56pDhHGTU2eE3DsqmZOqYIAMuZ7Cb9rhIi9ihpAXcg0aNhlofOiB?= =?us-ascii?Q?+IApY6jk4/8EwhVbcTz+uyztCEb6uQXbxj0Orzp+P2P2r4iSSCCsm+HK4IFb?= =?us-ascii?Q?w3Lx/idT2PaXtkinUYrM/FGVIzIkZbyHqBDDOpNGb2HTTUF3yghmhCS5OwRM?= =?us-ascii?Q?ZaBuQnyBQv49s9KMARiWe0LEZOupx7G3AbsTQK5u2xCBOkjxV+UOgTHoYWYY?= =?us-ascii?Q?FsSXYNdC6WcXrCAQFX/PgoaYN7UaT7z64/tV0gyv95JMVY7lPaN39Ouy4UeL?= =?us-ascii?Q?OYAXXbQtHzLHOgwEr+O+y74wFcdiqIwanrRwLTB5huin1eKgVu8iz6XEO+q2?= =?us-ascii?Q?faLW5X4KHMA4QseFwZPAeS1CZtimG+9LeM+bpvfN0F1lI7G3c/DNo1scJ4FN?= =?us-ascii?Q?dEw9JxuX898xAvksVReKZ8dbSCGaSOInNghGmP8/0lmdk9/B88Khh5kYbpYc?= =?us-ascii?Q?9rWGN0JvFzf908YU9C1Ymkm42ES9EN8ylO3oHsT/ZIbNWiGKkV9GwSNyhiJN?= =?us-ascii?Q?bXOiWBdinRGKsx1DJ71XI+aJW4eJZ3vAF6KnBmR2VAD+KF8fQZbiboq8A4yN?= =?us-ascii?Q?jfEZq2V2ubRrZbdMFGSG4DV1rgNGdvzXO7f6GHKfwJj2OhkT2DLposI/T4j3?= =?us-ascii?Q?/E2g2ZUG2G7whIVmHUt0O/H9VW8WSfi0pQrTdnae2C1JM/xjPTYs9KbDMVTQ?= =?us-ascii?Q?hg7PfiYm1L4uk8yZNhtg2UKClsGuUEC0XlJyjAzmkyl829dwAVwiW/D4coPJ?= =?us-ascii?Q?wPWWsC2tYDIpSylODGD3+1foFYsnHT1YV2JrSvtanlEXdZts1GBH0r0CYGOL?= =?us-ascii?Q?K8gesjq/cBvWcSr1fMSfN0LqeeTZDdaIrLss+8NTE+ZeZ8S16I40cGyNehG/?= =?us-ascii?Q?CRKg4yHkVE5ouy7VvqwomkjbEVijmlXVD42XPh9aV?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2068; 6:usq+brac5fSDtLjvLC+7L4bewsz18jIiAv1vIPsV7EiwIvtnN9VgZV3sHXzqks0/ZBZW/dVWnm+eIiQxRzGzoot7NW1BSgChetuKdaCp+CMGp00MVZ4KYlZOQy81Nbikcz6YF0aFqyWjGpwD8Jk4nVgpinfMRW6mPzi54WH8tQuKC9S0nJYKyKoJ/gvJvbwJxTOXh//+5e3DUSagCuXflPKijHt8Q+0ssKMATrj+It5fNxefzVnmNMU5yr3mosaWhmzzNGOFOpCDkaKU/j7LJbWUPtrqtGShRU7kS5EvLfQRcbEmVh/cH3g6K8X0S4DhydAPqAICR0OQmrEvYTXMbQ==; 5:rM/H4sFbyv4NbcH3uig1YFOYaHZynXCfBiC73Nx/5hmZhVFuoJMd7xw4uzxjxgR+EVie7x5XNASHZnaSLkmWmawWGqFdp2ho7E6qI31HI+RXJdr1dquBfHc1vp7JOzu+fLJNywF0izfkA0a9Dl6RnA==; 24:W7a50Q9pXfIVZ0LnhsjOZVfCSVvC/0FlisIF57tTtTwYcqUQn83CeYiMKWShdmsYGJd3LbkrEjZAWZ8Xg1Ip2y9a1EG7cfQGRd1jtYnt5oE=; 7:EQ0GYcDZeKNliktK+n4pjTaNk/V8hkLL41Wd6AXKRUk9Dz8m7BvAgFby1Q+Zjm0EtAvyYlnJT7MxW7PHvVK5d4DTOxDTBPK85+sH4ak1I9s8pWY4C9yiC3tIput2Cx2vJ+j8XThbCyYB/jRyDkrjfoDz57F/HRxgT+xrsfySq3iONmZaWZpBBYO0tGBf/2cOsBA8mAauslRPZgayRu3zgMKWLGOP18nOh28FhHmZu0E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2017 06:17:26.3622 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB2068 Cc: Andre.Przywara@arm.com, julien.grall@arm.com, sstabellini@kernel.org, Manish Jaggi Subject: [Xen-devel] [PATCH v5 4/5] ARM: Update Formula to compute MADT size using new callbacks 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. This patch updates the formula to compute extra MADT size, as per GICv2/3 by calling gic_get_hwdom_extra_madt_size Signed-off-by: Manish Jaggi Reviewed-by: Andre Przywara --- xen/arch/arm/domain_build.c | 7 +------ xen/arch/arm/gic-v2.c | 6 ++++++ xen/arch/arm/gic-v3.c | 19 +++++++++++++++++++ xen/arch/arm/gic.c | 12 ++++++++++++ xen/include/asm-arm/gic.h | 3 +++ 5 files changed, 41 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..0123ea4 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_extra_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_extra_madt_size = gicv2_get_hwdom_extra_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..447998d 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_extra_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_extra_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_extra_madt_size = gicv3_get_hwdom_extra_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..3c7b6df 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_extra_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..0612706 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_extra_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);