From patchwork Sun Aug 13 21:30:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Jaggi X-Patchwork-Id: 9898027 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 81EB56038F for ; Sun, 13 Aug 2017 21:34:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 754CB28409 for ; Sun, 13 Aug 2017 21:34:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6A2F5285C6; Sun, 13 Aug 2017 21:34:46 +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 BBAA928409 for ; Sun, 13 Aug 2017 21:34:45 +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 1dh0UU-0004bH-EU; Sun, 13 Aug 2017 21:32:10 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dh0UT-0004aa-NG for xen-devel@lists.xenproject.org; Sun, 13 Aug 2017 21:32:09 +0000 Received: from [193.109.254.147] by server-5.bemta-6.messagelabs.com id 1B/7F-03368-955C0995; Sun, 13 Aug 2017 21:32:09 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJKsWRWlGSWpSXmKPExsWSoa9qqBtxdEK kwcsHLBbft0xmcmD0OPzhCksAYxRrZl5SfkUCa0bv0qqCleYV/8/NZ2lgfKHTxcjFwSLQyyzx /uEGVhBHSKCTSeL+xOMsXYycHGwC8hI7ey8xgdgiAkoS91ZNBrOZBXIllr16ywhiCwv4SBxsu woU5wCapCrxanY5iMkr4Cmxbm4pSIWEgJzEzXOdzCA2p4CXxOlL7awgthBQydn528BsXgFBiZ Mzn7BATJeQOPjiBTNEr6LEsxsnmUBOkxDoZJTY1LSaBaJZTWLa6S4miCJZiaNn57CA7JUQ8JW Yd1cIInyNSaJnlx1EbzO7xIf966DqdSS2fVnDApFYzi5x6eBVqISWxLqrH6E2F0hMXtDJClF0 jlWiZc5XqISMxMxvU9ghEgdYJaa3r4E6KUni2PwT7CA2o0CkxPxfrWwQRbN4Jdq+H4J5gl1if fMiNkjYSUm833GScQKj6iykQJiFFAgLGJlWMaoXpxaVpRbpmuklFWWmZ5TkJmbm6BoamOnlph YXJ6an5iQmFesl5+duYgQmAwYg2ME474T/IUZJDiYlUd4En95IIb6k/JTKjMTijPii0pzU4kO MMhwcShK8bocnRAoJFqWmp1akZeYA0xJMWoKDR0mE1/wIUJq3uCAxtzgzHSJ1ilGX49WE/9+Y hFjy8vNSpcR5M0GKBECKMkrz4EbAUuQlRlkpYV5GoKOEeApSi3IzS1DlXzGKczAqCfOKg1zCk 5lXArfpFdARTEBH9IHcz1tckoiQkmpgnPBvel/djie6TLdC/B8LOhtuKTBjmr5qjdO1JPMDDb Xc6jdt72zZ6dxmkBmdM3GXtGGr+ZV3inNPKbyTk7OR/Fh03PBuu/PboH/f19foly9rFK3luXR AJ9M8a+edoicR30rTqtZusal6euD2ms9BG3zVXOTW5m/qMZjP5ypcKPJtoy5Lhl+1EktxRqKh FnNRcSIAmBQop4wDAAA= X-Env-Sender: Manish.Jaggi@cavium.com X-Msg-Ref: server-7.tower-27.messagelabs.com!1502659926!107016855!1 X-Originating-IP: [104.47.37.49] 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 16598 invoked from network); 13 Aug 2017 21:32:07 -0000 Received: from mail-cys01nam02on0049.outbound.protection.outlook.com (HELO NAM02-CY1-obe.outbound.protection.outlook.com) (104.47.37.49) by server-7.tower-27.messagelabs.com with AES256-SHA256 encrypted SMTP; 13 Aug 2017 21:32:07 -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=Y+3Rl+fNMzbqWKyqtv+2IqAfJ5fs5vWNCzjRhHILW36vOPg44lbH0sVsdhWhUZwndeygSEv94Qsjp4qJFLoQxzSWwbHKaley8u3YG/9QhmJ1oVGCElFdPn6zxDFYzVmy+O/RfJNBXBRroED/xQIV1rJ8sowAGDIxtV9nZvfL+Zw= 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:03 +0000 From: mjaggi@caviumnetworks.com To: xen-devel@lists.xenproject.org Date: Mon, 14 Aug 2017 03:00:14 +0530 Message-Id: <1502659815-20397-5-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: 4d1240a2-6520-4a1b-150c-08d4e292be5f 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:nnssYsLwX4maTCZDAypaRciV2IkFm2Jh4/QIm2XD/07H06trnbg+xKqe3zab5+is+I/g87UBmGg/37I0vq9P44LAVyL6EYFCo2ODz9iZAxtCx/E0remLnb1LsUkHTWZPJpXkkklTzb1k5o8ETiFe4yzPz2O5w+NT95RIA13fgyPQr9cXdWWBpb8DoqGnnDC8TOOF++i3Ad+CSf6UYbZPVyjzIxQWGeooEkjNfj5ILtRGlztWXuXPQI2RCwZVxdXA; 25:OEuwkiuxna+Lwh/4+xz7cVDXDLzKUOjLwWfLx9sRcYd7YBDaaCaPAqzxXBDPRbI07cBknhgpWB/TEjydH4QZo6P6HwXBnN0amdM2A6MJShy5nn+3raOiO+a+W74ShUoSuTa1P5v4h7bNL1Mc56qg4ZtvfJCandwaK/wriULbFOQTWbje2/Pa/5+kEzzoLeZJbHk57ur5/4u7I4tKQwKtHL22Om8l40/0yb23kRVavejFi6xzN1NLrDGiw3rhsjt5RSxpK/k51R5e1x+eRDXZaJeyZD59wf0ziHh+7K8h3FLkfnGnzfOQi62iv9FWzrLE6UMK4y8WL1nC5ly8xn25rg==; 31:QJSZg1PtZq/7FtJODXqxeBc3qARCSeNoM2/+3tQsY0QVECdey8lBTmHX/r9aB4Slycl3nPQGwktPsc5rE/iMQUGB6b2pNH3DEFgJ4Qu/pgX/sfUFXaYTSkxI/3BCMeWen252YzHbGyTEd1GdsVmaIx+XWa0JZnqm5qyMNnpFqjh+mtNHyp8SBs4ei26DCILExKd5rW4TxsM2EFMglL86WPU9n8pLnc7cCXKph3Kq3ko= X-MS-TrafficTypeDiagnostic: CY1PR0701MB2074: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2074; 20:Q0xVq5WFenI5TAEk6dPs9bjQFnVHP0dGwvOUftym3KLTPHx1AbRnh6gyE9JVnp26rRQ7perzImgRYUe1TM2076WqbudPygOsIoVxaGH31c0N0hDtscSjE1qJx26pFVxakRTcPSIRy67a1XX03FQUGOW27g/BjwtHryICSHgwtTM0bSNUIj1U8MfBxiHkv65Txmu22VDHX20fUlKAwOUsGqGRt7Mh/OTIUK1kJVt7vYE1hjYWA5s93E6hC5G56Cx1OtWSw4EAvHacWX5sH62gkW7JnGpb0QeTPBhPG5GSvKJqfEQyA3bNHybeWRJTeXypeCsoXF8QHVSrS81Vtw2doDpKOENKSgOGqbTzJ9KQZZsHhvncEOFxaKPJCDJx+fKGufCeuQMRPNeN7puT4gnMXqzOql7ce+ZHvtnD8pqj8uADUutJncQw9fL9oTkBxwZ/qQ17HTn3fWVZpLMqMFCYfFNUV4ohpTkPy0tIIAIIVc+DtSGHEgZIVmjSX55caBbof8KI7KGi0IoUVVqjyse7sUiCo8pqvKs/vqh3BXoTALukH8mMOH52v+pBhID2/2VHm/yjf02CDLLwd46qP8Xp3MXupYmyctIpMHhKjF8N8mM=; 4:ShJ/cXemSNOsk3/LHKckwE5/+a/RAChda7wQMSBMCPlyXm2ELy+LuZ9KjzSX4f7L2PS+c81EoSElFxK+fJLDQ4L5oi1jFdoZ7dDa4SJy5cERNMPBV2n3f/7UUFUpJYAEB/mWz2b4ENTTrsUjkKD7THjUI9GWv1zbAqg5qK1ksj5047Ltsodr43UTaeA/Du/SvERCxWCcimJSRlk5JbIEBl20hSJj24+nPUSCCkNzETvFQszovRs5Q4/JfinFSaBA 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:xkNzuS4WNecFJXY6JxwLQSvgvlAFlk2eRp2ZwWv?= =?us-ascii?Q?I4yAh7z/CnNP21lk6djua18aq1TuH686jSabj2e9eBkxqKtONgO+Vq4ktJDJ?= =?us-ascii?Q?EJCLreRABr99MvuZUxqC+0cQ9AgGCmRJ+L7M5kl3BRboz8v+IISWk64+32nL?= =?us-ascii?Q?o2RmprOVzoDeMmi96V0YsMl63PxfVTRgHxapifrU/8ZlJOrpzsyHJW+facmA?= =?us-ascii?Q?kiqwj2ATbq5rVmPJRQBKr7QD+0HtNi8WZm1QH/mhhy0HGhbpfP0IVmAMmqZe?= =?us-ascii?Q?6Vxim+2nfgxybz3/EFenywmTcFj8wc5ZYod6KZYZ0jXxOVX2sPAOWLGmnLgM?= =?us-ascii?Q?RlpFMjecGY3p73EwXbFXrHHea9yyfDlOfr/2yTQCb9Rudodi/S1g9NlMgwjy?= =?us-ascii?Q?FtSjVjyS5YiVnse4QnjO6zfRT08INlPAkyqmGQatZZT9NFaBOVXIE4nuH030?= =?us-ascii?Q?67mNgyH0I+BH0GgDStdtZhtotJ5PrZHA8mvytTPaDcfZBy1NO23VXHmsCJzG?= =?us-ascii?Q?UPx+ZxKQgmp1rB6eGGHx/wZCnnM8Sbdad7qv+NDzGtvCovIXWkADT5BBBBeY?= =?us-ascii?Q?/ZpGm+Gx1oURrpb3Jhe6dq0UjXcFpvopOXvdtGBahW+SYAvg3LhrpdMh4HBq?= =?us-ascii?Q?8i+xErsuFKfWffIJW2SlvjSUeoTmlL60GLppxFBbN7ZK9D/ONPQfJSwtq9vo?= =?us-ascii?Q?brTiAS7w75x2x8nnlOWrp3K0+Tdn2FzBVezot3Z60SlO5ncQn9C8gLEevAn4?= =?us-ascii?Q?vGmiDU+5sdOgHM7344Sr0uWA6JtlRwCf97+psmY5pSPaX871kR8ka2EODWHF?= =?us-ascii?Q?rPlfBN6fb+iU2qmN2C9XFhANxx5O4wCgru4zh8NwD7w+5oUdIny80uzZ0EJ1?= =?us-ascii?Q?5rYtDKIrsada2+qeijGast9LJTN/r5S5dSqKUxsu5+0wnVHxv58ncpFZg9Yg?= =?us-ascii?Q?TCcABzANJ9I7Keh9BN26tfrYBHUTBZKMkrWdmoCVLNEi+WwaOIVF9GlglDNS?= =?us-ascii?Q?eYgHb/kC8foFh8AaBTUp87K/+VDe3/0IoWFkIn8TWgHOBHXxSJzIabp+56US?= =?us-ascii?Q?oAxPjoAC4o6lJQ0XX0VVORnE8MrEYkQh0Uj1E8CSGjqe2F14mjkCbPvQXMVD?= =?us-ascii?Q?jJrlJdYKlt1/T/4RQAk8PA8+7LJMn3AHZM0tI1pgsBfEMmtqvy1BGLakFRYS?= =?us-ascii?Q?CYlLY6N8J7HC0mq6z7SLHhvQH0Sl3CBxm3m+5QGMVPscVsW4evFDJbQhNgSc?= =?us-ascii?Q?VdaADs/tVor3/7Bi2GZY=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2074; 6:Fmph5nEjKKW5tcMU6/KOqf2fpWTcXz5fFhxU/HTSHTGZTqh/dke3HCp65klxo7/f0BHrd5pW/2IzajyQ+Vw09Rrv5FtUL4tV+iEi2jh6ojt+gIA83otQlAvfTLZd0Sl0yS/Wl7+pXUeazx6agB9aDAKnVmbEo1EFS16a5Drpv0CxAY+NoW+0A5fDt/QocaAxUGzQM5yrgSkk4gANxag2hol6oWPH+vt5u1S4i+QqxQha94GJnG72ony8NAV8AX+4RpWvVLpanWkQKu+Dzh/wBO/IQZfdGsOwoWDiIBqH434RV8pvd63GHMH91rxn30eTnsqOc9PHN1uPrysywIEAqg==; 5:d/+1geoN+O+RmL2G63F4Dg8SIszl/DMF6K+zl7lM2ymEetsSZEuJPG7ZvAZcEdrP3zCut8t6/LyAN2Tab+PMlvP0ZMnxzgomUSef6lP1oNIKUGx5qXHsFIRkV2Me1zp571ceKevms6/wV6tvyl1X5A==; 24:4vJRhhIRMZ75Mdm3rYei/MaPKzZeCxxMgOsQYkTugW6TM50Kjh7sCEY7kp9zsOVARXp9h2mhjBv4rzLSvzUNTqo+wAJTDV4Ki8L/3jYLg8s=; 7:AbVlybJ2HNIE1NZcBLDQqrehFBA3Z288Jw88qefIcZlfsJHESAVz9wYPwbMCyCr1P3Rd8f1sgDDE/y2FWeqNz7yjplQugrgX1af4ps1ipcopLv87BT6nT4lqXn9cVdn//hk9o4VC3WwLghwbeGOK2CcQdQ8qm5JGvscG5iF80XNY4UQUWnAyeim4kCfmKBPDKyADnUkk5Ge/tnnHRFmNm+aQ97X9Gc6uvhFscR67Gxo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Aug 2017 21:32:03.3711 (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 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)