From nobody Thu Aug 13 09:22:18 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1786387177; cv=pass; d=zohomail.com; s=zohoarc; b=WwcW3vXyxUOih/UraAfZJXWd9/rW8EHSXOJ8KbP6SowsSrRe2CCDzbF7/AUCTHAqcHEGYk0/USTm6zsONQ3RPdqQNdJA5k7lJk4j07rdEKwjROSFRVg3WhEpUlxM0IHN4u+ZZEXu2cxO6dHG+lbaKVB3J+4sM4emdE4JFUknjP0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786387177; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kVyUwzxHfI4tTSVlImEGxF+daEm0IvBED5qt0xYcoeM=; b=Yt0iTXxbQKbNpVMCg2KDACARlDn/Aw/n8ktafacZ2ENACVYfFeFIwlElMydJps9E1c/FNWJLPrxyqy+/kYuLSaEmSnqI1T4dwKwRbBtnOfcv1l2vmN8+L93tZ1n+cnVfYfqTf6rQvNWnb1IxaxNvShlC08ToWqJa/P3llo5T92A= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786387177706888.9336204936197; Mon, 10 Aug 2026 11:39:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1387758.1628995 (Exim 4.92) (envelope-from ) id 1wtUu0-00044K-6N; Mon, 10 Aug 2026 18:39:12 +0000 Received: by outflank-mailman (output) from mailman id 1387758.1628995; Mon, 10 Aug 2026 18:39:12 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUu0-00044A-3E; Mon, 10 Aug 2026 18:39:12 +0000 Received: by outflank-mailman (input) for mailman id 1387758; Mon, 10 Aug 2026 18:39:10 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUty-0003vl-AR for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 18:39:10 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wtUtx-004GdX-Nh for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 20:39:09 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a7a1ab1-8faa-0a2a0a5109dd-0a2a450cdb52-10 for ; Mon, 10 Aug 2026 20:39:09 +0200 Received: from [52.101.70.108] (helo=AS8PR04CU009.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a7a1acd-f479-0a2a450c0019-3465466c25df-3 for ; Mon, 10 Aug 2026 20:39:09 +0200 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) by GVXPR03MB11092.eurprd03.prod.outlook.com (2603:10a6:150:2a9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 10 Aug 2026 18:39:07 +0000 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7]) by AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7%6]) with mapi id 15.21.0292.024; Mon, 10 Aug 2026 18:39:07 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MkuD/4uC1xz1LgDqjFjLm9BB+pFe8iDtLQSjSZXM2QWKDdVM1RdmJMsOBx8vOx8W4GfD5iMXOAer1k9NOoqEErYMO54CcCiWJMG8AyfLOvLBIAVIwLg8U3/2NutkHV/lGh0jTDw0Uy61O2GOKa/WDoD3YuhHRcoEB9jAhyMdOq/ivqxlty33oAfCvMkd1NUzUzaEPSEsToSib+olYEYCDN4WQ/G63BAVmj2CSIhUlKJimw2Q40du4oL8dn4jmGrZU8WCsz9vlnNpCiRsPzT2wCVhoHo++Nn742Q28A5kkeKxqqUAsuvR6iHXVKUvFsA3z32VRIhELKQQF2j2SiFUQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kVyUwzxHfI4tTSVlImEGxF+daEm0IvBED5qt0xYcoeM=; b=a1lvWneZW2ld6z2L4txc4Av537scTG3wBQ0HEn3pWvxgd21Dts0/lp4zJ17yWCjMwMWiWYTvJsVQuQNIL8A3dFtVFsOKXYsoSaJ3g03qv+/IabUMIWdE3+lKzizXSB4QT4jQBfaFNtrxrD+LAWIpzmy1Erdke0TYXInfTNFD68eAQj/Ey9XLeCvZeA6MffSexNZiKpPNd/io8YyLzjq6+DQ8rU4Yvof8dfXRSd90LaWwhP/wqAK7pOZYI/SWWyQHpHVz9Y7RjdqCskhXzPB4yEo/kFjeNLVtrAy5R4nmu6uYQJpG3t6A6H5wJ/dfPto7yuoSEouQtRanPawcc0qUtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kVyUwzxHfI4tTSVlImEGxF+daEm0IvBED5qt0xYcoeM=; b=piJhzkEDpo90vyz5ZbtXC9IGOoBH5okMIm4+4GYVqeDe7z1QXYmZBwWbwXzr0DQl+XtjM3sWwXLWd1596rNW/yhQqYAZ+AfbWCqokq7c1PyJfGF9LsCqxNUQr5SaRL/HMt+kH7ueE7EkwAkrASNUcfDAvRAmOBwP9GJXDOVfJ0VYIWdaMC+2MinsxDYN/hscnD7HQ3DHc43szvh5MIeGvbpgZCpwilVyhxNf8WXQ/t5diIuI5r8DUoI64GAl01dIvomheqne0I1XZyHq+dlPyf4vXCfDKoawKc7lWUVz3LbI4uOSbHFMl2D4Vj82SviVEuCTPMDBzc4UFvJLWCSCEg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 1/3] xen/arm: validate IRQs before descriptor lookup Date: Mon, 10 Aug 2026 21:38:45 +0300 Message-ID: <271952244ae71ade885b3619fe161ed4f47777fa.1786385827.git.mykola_kvach@epam.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA2P291CA0003.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1e::7) To AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR03MB9746:EE_|GVXPR03MB11092:EE_ X-MS-Office365-Filtering-Correlation-Id: 79716599-33e7-4502-41eb-08def70ea94a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|23010399003|18002099003|22082099003|11063799006|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: DTnUM2/yO4tjM4VCe3opWtzRa8++oAhrGjQfzYkLtdJjUPPqLBX90BF7HK7JUwdwZbmg53ENtQnt+r0fBKZWOn2SrLu33aEp8zNxz0hzgeUo4VBlUQz4t9ip8VGxTfZNU33wOp9SOlgpJlHIbpWUP0Q4iTucTim2d0hK4ZbOzexE5P7cOuTBI/UBKhFc9vR7AyNACVSDrT/0XPaPUVrCim+CkeRxETL+lfU0i1At8lMJTC7OPYJ8mNGC6muf7NkxIgVwmNu8nxU78af93OkOcXHGr4x2sQ5be/Y4Jn+6nCT15Y+pWNOuOIM3FN2XwRUDME8JfZMbL35nFr+OAMnSdHGvxka7kAhBBGKmz/0EClXD6iZnXJGn1cFogFwMEqRxX6NkMzQaFaU1fq6JGEtz+kiZupNQHCYuJtmZuWNUzSmcmIwiQs2FCh0JfXFYsBcP/JiQadRSIciADhLDU3kHemWJVXFFO/aZa1edAfT4+dA7ui0QbXmDCfNNCkDuFCH+8tA3viBcYcI1t7uGpM/JX/DtMzEGC9V2rw2kqkTd6Av02OM6sDBOt/N4F9OiQv7pbnhyfZ8HTouv6g7bgWCO1CCfSQNwn7krloCQMGsP8+wKSa/UfBZ56kjjjbFG/2TNmHRBIoUoTYHBHW6oe5W7S++jj4uyWQnMrPGspG1rMTQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR03MB9746.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8TwRj4t0Dm316TSSixjbA2N+QImoV6fuL2ASZC2X79mr52JBUeIsygCCsLTk?= =?us-ascii?Q?j2epDIzrZivut/lnMXwjURk4TAyJshZOKi5fHokUfPMvoVdr5+KzLSdAw7ML?= =?us-ascii?Q?vNv5McFPJk/fFUc1x3bDU0kQUYrHKsp2LeJnmqE+Pqt9wzAxsTtPf8UO/j87?= =?us-ascii?Q?lp6L7cK2TnLyX34EuejsJnmC9YnHsYGulngsuRqMNn4z6ogYasHPKJwCCADM?= =?us-ascii?Q?S74bHXA/OCeexVYurTIGdtN65CKqWCdXhqYlG0mfmllJCRRTTWxquhHvQ8Sf?= =?us-ascii?Q?1Vsr0FdYVvJaBxXsaFh6E9hr9qLAiSF+Nw1S20HAzBevjRaCrbFSuh1Wc3Ps?= =?us-ascii?Q?pE49w0E0Dn9LlUwLWDWB2+ZDBvp+4hdmSf1HS2EXxkBDfchFEAnTH8FKw8zP?= =?us-ascii?Q?S/Xhu4FIZ6WfWnBdfJo0Ff71f0RnhevYj4z6AbXTJWS9o1vbnRem8B0HD4jv?= =?us-ascii?Q?6511hXNWoNMhwqYbYkBQ2lUK+R0dSLOat8eNzYfAom7Eo/K7B1BGWSOIiwZ0?= =?us-ascii?Q?8NHRPgyf6hOJlHMhZZRfqn1RDNxkhUuDE9lQ0NaBHZTHAPcUGCFqVAgdA9V2?= =?us-ascii?Q?mOHb7EXxUjYSnG+14o8eO3mNQYpjMCytBAi81vMl1MqRhXVi0FwO5RMcdK11?= =?us-ascii?Q?WVDOXmvsh6s+XJu3jYqeWVEfVxV/Hwd2ArRr1YbQ2D+uxBwZrXNXL8sIZdfr?= =?us-ascii?Q?+G8he6vuy2o+PHBbLYAnzkejK1I/31nno6df7GOdxquAxJgHWzE2NPoTDr82?= =?us-ascii?Q?UZFD/vOg3ha8LjT/MNfz1cuOFBOcKLExXp7s8PddpSJzcQ9kpE4UiE453I1x?= =?us-ascii?Q?XgVesgdVVG9iqvagS9xhofu7b7NxVJMLR8fihhPRzO3Ca94gtBMtWeEJF7Ws?= =?us-ascii?Q?GQfNfUuFTn4vk31yGcViRBu3mg0e3i7x20qfw/i4zxYsvaI85GwqIVPfm20z?= =?us-ascii?Q?cI+vRo5kG+i5Gw9tIWFGEkd4FBrb6Y9Qc8EZ63upfWhpezykNApG/uCQcOJI?= =?us-ascii?Q?PfPcUjxTCJPikQDcrEJ8M4mpP53e1zBAwJsuwVCWawZ/eq0rMVjJO8o4DaC4?= =?us-ascii?Q?isBx8vPM1RQxYcJIt2+yj1xgQR1V/F6yR2+mSDXjMVGJLWra+r8cGLX+67gH?= =?us-ascii?Q?x08c2ryYStJsH6SWp9TxHNX/nNKU4SkDk7E6CSGwY/jZGbTTUuTkSrtOguAu?= =?us-ascii?Q?40kUrPsMVgkTgVGRJRrfx9QVOnVt2ivimUL6nIKEFPDT4HQnuIh/VkPe/4DR?= =?us-ascii?Q?RnYzWqJn+DcVQeVa2QResrsKTQZK9FAWaWXxwQIgjZG7CyPbe5J4cWJHm4Lq?= =?us-ascii?Q?2gt5z/L7k/cUP2Ck1/w8Snw9+odWmlG7Iqo7lvqPj0el10GcAEIgh1/pJoF0?= =?us-ascii?Q?khxh+O+QzaNWj76g9Quzt3sZKs9/GYX3K0dG1dftlg4p56MfvMB3d0xAnbuX?= =?us-ascii?Q?TvDOhVhE33r9QfER6LSf6qkOwXdjdiJhBg0F3BN4PxAJO36PZZ5itznjR2xE?= =?us-ascii?Q?BymYBkYjnNiQ/6oiIKNjC7dQT865siQaUNWWEgKmRcKY2nK/RdiA2CZwjAJg?= =?us-ascii?Q?2ZyZ1oRp8niZ2T0oYuonzmaWAPOnKjMgZ2fnEWXj5ac55tzfqw2mianJ+79t?= =?us-ascii?Q?1GZf9a5I6FaW4sNOwHNuHNnA/YboPFybqLLGrKHEniQtvo08tkMvOVhnsRie?= =?us-ascii?Q?Zm521yO3L1FmmcVz6k1XwvRmh2j+UfWQHQU/VLnMg0N3uy+vDiCNH+3XnV7w?= =?us-ascii?Q?D1+f4dbmdw=3D=3D?= X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79716599-33e7-4502-41eb-08def70ea94a X-MS-Exchange-CrossTenant-AuthSource: AS8PR03MB9746.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Aug 2026 18:39:07.6512 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Pmxpi/7tZS1iZXG9ZIIbY5b8dD1xyie2gBhHlftMJYOGWGnj1ARdYFPeGvqXZxQqO1mbWlQvOAG+AxHor37qhQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB11092 X-purgate-ID: tlsNG-d25034/1786387149-00ACCA5B-B832265C/0/0 X-purgate-type: clean X-purgate-size: 3677 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1786387179543158500 Content-Type: text/plain; charset="utf-8" GICv3 eSPI support makes nr_irqs span the architectural INTID namespace through ESPI_MAX_INTID, but descriptor storage is sparse. local_irq_desc[] and irq_desc[] cover INTIDs below NR_IRQS, while espi_desc[] covers eSPIs. INTIDs 1024 through 4095 have no backing descriptors. Validation based only on nr_irqs accepts an INTID in this gap. __irq_to_desc() then indexes beyond irq_desc[], and callers may lock or update unrelated Xen memory. Reject INTIDs that the GIC reports as unimplemented in setup_irq() before looking up a descriptor. irq_set_spi_type() can run before the implemented GIC line counts are available, so validate descriptor-backed ranges there before looking up a descriptor. Call is_espi() unconditionally in __irq_to_desc() and provide an espi_to_desc() stub when eSPI support is disabled. This preserves the is_espi() debug check for eSPI-range INTIDs when support is disabled. Fixes: 98f7060b9ed5 ("xen/arm/irq: add handling for IRQs in the eSPI range") Signed-off-by: Mykola Kvach --- Changes in v2: - Validate descriptor-backed ranges in irq_set_spi_type(). - Validate implemented GIC lines in setup_irq(). - Preserve is_espi() validation with CONFIG_GICV3_ESPI disabled. --- xen/arch/arm/irq.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 73e58a5108..0f5d3496bf 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -23,6 +23,12 @@ const unsigned int nr_irqs =3D IS_ENABLED(CONFIG_GICV3_E= SPI) ? (ESPI_MAX_INTID + 1) : NR_IRQS; =20 +static bool irq_has_desc(unsigned int irq) +{ + return irq < NR_IRQS || + (IS_ENABLED(CONFIG_GICV3_ESPI) && is_espi(irq)); +} + static unsigned int local_irqs_type[NR_LOCAL_IRQS]; static DEFINE_SPINLOCK(local_irqs_type_lock); =20 @@ -77,6 +83,12 @@ static int __init init_espi_data(void) } #else =20 +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + ASSERT_UNREACHABLE(); + return NULL; +} + static int __init init_espi_data(void) { return 0; @@ -90,10 +102,8 @@ struct irq_desc *__irq_to_desc(unsigned int irq) if ( irq < NR_LOCAL_IRQS ) return &this_cpu(local_irq_desc)[irq]; =20 -#ifdef CONFIG_GICV3_ESPI if ( is_espi(irq) ) return espi_to_desc(irq); -#endif =20 return &irq_desc[irq-NR_LOCAL_IRQS]; } @@ -416,6 +426,9 @@ int setup_irq(unsigned int irq, unsigned int irqflags, = struct irqaction *new) struct irq_desc *desc; bool disabled; =20 + if ( !gic_is_valid_line(irq) ) + return -EINVAL; + desc =3D irq_to_desc(irq); =20 spin_lock_irqsave(&desc->lock, flags); @@ -647,13 +660,19 @@ static bool irq_validate_new_type(unsigned int curr, = unsigned int new) int irq_set_spi_type(unsigned int spi, unsigned int type) { unsigned long flags; - struct irq_desc *desc =3D irq_to_desc(spi); + struct irq_desc *desc; int ret =3D -EBUSY; =20 - /* This function should not be used for other than SPIs */ - if ( spi < NR_LOCAL_IRQS ) + /* + * The implemented GIC line counts are not available when early + * callers configure IRQ types. Check descriptor storage here; setup_i= rq() + * validates the implemented line before the interrupt is used. + */ + if ( spi < NR_LOCAL_IRQS || !irq_has_desc(spi) ) return -EINVAL; =20 + desc =3D irq_to_desc(spi); + spin_lock_irqsave(&desc->lock, flags); =20 if ( !irq_validate_new_type(desc->arch.type, type) ) --=20 2.43.0 From nobody Thu Aug 13 09:22:18 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1786387171; cv=pass; d=zohomail.com; s=zohoarc; b=jlhn6FgXKpyPNu7zfvx+I0jWBVLS+Q1/yH9sppW6Ge3067ox2/uOZCEUXMMFWWCI0pZ1n6ySmu9FKHjHPPTpJze4iys9VP+8XUZxmVyXlMQj7JL1IXu54QAckAceYZKFwZgsw4F0LBQEGXGGeHx5G2I1njg1mBptxSNYDUyO2Jw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786387171; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3oS5+tMpm/5iXbHipLKgLe69zKs89CKb5K72EOJFaZw=; b=SOQI0BAGBk0IT6R7N358U5WwWh94VW1bw06mcsq0HYSd9UJXBM5GYw1HQ3KfPzl1W9EN7i0AdcKS140wTzumVKbklDGIIcA5t2/ZHobNrzBGnYwy7V8/VXVDs3vbg77y8ql0TidK4tBLvfaP9NN/AZHzflqG5TIVVUL9YfnxboU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1786387171152839.5292440131632; Mon, 10 Aug 2026 11:39:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1387759.1629005 (Exim 4.92) (envelope-from ) id 1wtUu1-0004HA-D6; Mon, 10 Aug 2026 18:39:13 +0000 Received: by outflank-mailman (output) from mailman id 1387759.1629005; Mon, 10 Aug 2026 18:39:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUu1-0004H1-AH; Mon, 10 Aug 2026 18:39:13 +0000 Received: by outflank-mailman (input) for mailman id 1387759; Mon, 10 Aug 2026 18:39:12 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUtz-00043z-Tb for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 18:39:12 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wtUtz-001Qiz-9s for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 20:39:11 +0200 Received: from [10.42.69.6] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a7a1a97-bab6-0a2a0a5309dd-0a2a4506e8ae-28 for ; Mon, 10 Aug 2026 20:39:11 +0200 Received: from [40.107.162.106] (helo=PA4PR04CU001.outbound.protection.outlook.com) by tlsNG-16d1c6.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a7a1ace-195a-0a2a45060019-286ba26ae5de-3 for ; Mon, 10 Aug 2026 20:39:11 +0200 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) by GVXPR03MB11092.eurprd03.prod.outlook.com (2603:10a6:150:2a9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 10 Aug 2026 18:39:09 +0000 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7]) by AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7%6]) with mapi id 15.21.0292.024; Mon, 10 Aug 2026 18:39:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q5uBXhzZOluqHZr0P63zd2MnW5MM1HybjByZYGeEQdeVkyWY0vTsEjGbHm3nyJOBdXm5eGKZ4O9VptcC7UF50wGYPDvtDIywmSS2djXXY2/QUdu6XlGspGkE9Q9LxLMM+DCkQ1NnjZE7PzNITArbjH5Btp/U3ZRXNxcvwlVxpM63sLZ7ppSkrreQkmVhH0IJocjqXgIlEvgC6IBYk2NCymoMGGhSQzdqkc58D7IwN6S5cB9vwDtlLPmZSO2fNakfGf8bhC5DW0OgcboVoDPimEbNucdpcj3HkcOrOlnB7Xgp/jU5muGz8tYO1yxLTV7En8+MvgWHhAz1rSSgYkxocw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3oS5+tMpm/5iXbHipLKgLe69zKs89CKb5K72EOJFaZw=; b=m7QzPTf1vCaIA+54KwKVqE0+fOyBelUiQ0wdpRCjmREd3E662KF29u+zkjy2dR5OgYf54WCDOz/ytpdG8FUUkAbvXLsCRF5uXwMIQkjfcd7ZCyd2W++UnTqe9BYO8MEjg1sbmPYtf8aY5GSMjW6lXDbAvc+qBBMTg1+aAL7FOBhNe1nj8lLt7EeRXc+v4UW8ENkcAam5Y0HErWOjic5jGmL3Io/dfFId+2DP1bNh5tmUJd47/TUKYY8mm1AwyGQnpj0HIyeYyC2OW7n67hVffbBBVVr5MNPhg15QRRCERfQZxZI4th1JUdx9k1r0jxszBfyktpr7MBvT5SKlc8rhIw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3oS5+tMpm/5iXbHipLKgLe69zKs89CKb5K72EOJFaZw=; b=DRg3NnZs4JflfK+CJPbmb3WoQP9Ce8g6/0xsgoEBm9CBUvc9dFcKzxqo2/ntLlZ0f1TvEoFkqAm1I8HDKKlGMHNjBt2QYbEHez6ns+oom0OnOm1lCr3lIpv2vzYNxX4tVLW4zQp+1Jh1FA/8gQDLPiwcdNQuyitxhFIEpGvZxw7zcaDglUt4aT13O6dMcr4Z9FSQOZGzi8ag/zRm5L/gg+wyEJMxxJJlexkrT9jdn6L68lN1LnEYWJxBL/DzT8w5QIYDCQSJqG3lY7NgPfSXCeUmH0ouNjsLKOYqQSgbTP1Lpdjm6BkjXZk9fXoBua+oeJaCPnuF8rM50lQCsJLlKA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 2/3] xen/arm: vgic: free eSPIs using the bitmap index Date: Mon, 10 Aug 2026 21:38:46 +0300 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA2P291CA0003.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1e::7) To AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR03MB9746:EE_|GVXPR03MB11092:EE_ X-MS-Office365-Filtering-Correlation-Id: 45e6ca56-31ff-4682-4be0-08def70eaa60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|23010399003|18002099003|22082099003|11063799006|56012099006|6133799003|10067099003; X-Microsoft-Antispam-Message-Info: ypElvmTH0i4qLpafa/XnfNhc3Usilr1pAn27RJImdMSJ8GMjgA+GWl7BCy+U3jK/Vp2eaZ4hcJn+a9Xm5Llr2tHjXLq1UpwzT5+78X6HFeAWN6WSUZfOWT/fosy9tL9QP56bPtynyQQxrrANYzckQsnGW0ZNbMUwn+2GQvExzM8B9WLVeoFCwxkpU6DXMEDpxerzuKNwwxNoZL75ltS9KaVyv8wMlhZd4i/bOIL4KdY9s8Zlk20ruKHCLYjcm96oxVGGsli2CjIOHukKkSVyW7GKFDxCuBbHB3KoXvlfirx0s30qtHLIX0+zzJsVzXyHUV5YRdgrc896Kjcl1eLEmajPAYu7GIjrMlkJeKGMd7U2yOt0qEuWHo4lwpI9okzHc6NTbnCOYz8+Z87Dl6JDbH8kvBAwAZIYYHX5dyiRlkiopMsp3j+Rzrdod+laQH3aFdgXoxyNN74Pzu9kjcAG1ktYjFzMzQFsWo+h26/dMhinvvB4DJQ+SDUHQOskSXWIcgvCffe88qUFI429ud7i7MF/6qyd1VVPCQLU3JvqeKOPEHZ7yOG6yJRxRMpiSazM18S8JeYcNxPabZeLKGTrueazyW6AGx76+tiq0uUCm714gbUIHqY9rd42TmT2NYufem6s1Rbcenw18PuCKi+9izi2Q/W637VF2nWonsk9U5w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR03MB9746.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UBAFgskfUvGkIrThajlleE2H9fnWTdt1G/nKVeMim5h/G+ovpRyARQJddViC?= =?us-ascii?Q?W5cPeVjyBjx/vwOblKlgvk1yVP7wgWTlNBAK562xs5CtWczKBntafvPy0i+p?= =?us-ascii?Q?GWR9rGtyK5N+os3wB524WZXFz5OGgSK/DkF356fYdrKU3qrQY/S36PxjbNrc?= =?us-ascii?Q?yHKEAflp3nYZR0YIQBBvAw5u8+7qk4lB5Hs45K8neV68/kB9Xp7f22dgfkF5?= =?us-ascii?Q?E5ys3MtK8YrTcIqPexM3yT8qgGRZ4V5PNtzZpesjtAsP48yACA4mS5PYfUMF?= =?us-ascii?Q?ytvakTFXbtcuU8vYvGVAlARsoNBtDMRCl7f98kuxIyfB+xhJe6PcwUSSiv+e?= =?us-ascii?Q?zyjglgIDaQWFZ7OtcYTMAHCfIAcPRgkBTfALAVbGXH/t6CIgyVl24LVE3aIQ?= =?us-ascii?Q?pHPAyODG+jS2IFnwlOLvbkCoGGoX2a3qtSju+Gn6yR8foIj8d6SbpZQ0Valx?= =?us-ascii?Q?G0OF7d083jve7LB03rgtGYmmaeKRYuBGHXs+hE0k9b/FAsg/7CRIDrnDuF1G?= =?us-ascii?Q?gx5KIvxSnu2+DJTvQC/qXvp1NqESWhXQf9agJs94jBzC3ndX1X9t5RmFoGNZ?= =?us-ascii?Q?+IJOeoiTkV7n6W023ML39rXYhhoeVW4SYeAfS1fNJdcCoEcAXB+EfjIbeBnG?= =?us-ascii?Q?tqHaO+IjVaWE0Zkq31vLNW3n0WNO3Kd67QOQpgqS7FMvBKtzBC3cAoFhzptJ?= =?us-ascii?Q?p7IfOenkTxvvWfRRUI1D5y41iFH6Caak4Jzvq4Jq9yt5buaeFQQHbGKj0kMh?= =?us-ascii?Q?dbmmEqeSabgZOxr+G9Da802V9dg7IeTu/AsxnU/qWQ28Ny1FRov+l5AWNTg+?= =?us-ascii?Q?5tZmQGsOgHej9zeqOtx6MMdJYoJFqd1Mpp4bIEG96yPs+roxc9R18J++aCJV?= =?us-ascii?Q?Tt0GnEAkFesX78wkh0ucrXij+oTgwzn0x2pHYaZIYH35QBP4LU3VId65CqR4?= =?us-ascii?Q?Y9anxqBFrCe7PbrQ6CDtuXj7O/OoO3jI6elg8kDihgyLk+qrD7QLLWUogYvr?= =?us-ascii?Q?fQpWfn0DgN6txKfdhfKLHswEtls55gIF9dbNbEwpFE2teUVXD4pHRQPHn3+c?= =?us-ascii?Q?/Wa9sSLuV0qcP+FQku4DA3V/7SDhnxPIx8Qc28/AIVsqDfq7lqYCO2ptRGE4?= =?us-ascii?Q?7TbL75uIrgK8LdblPOgG/ZtIUsDXV5z6wFDYFcFwfS194KXKnd/kQB9VX2re?= =?us-ascii?Q?gsw0s3cuXWpwoLkTeBVNP2MHWIhYFgQS6LslvVrkJnBkfVc+4HREpHjwBUhq?= =?us-ascii?Q?cKSiHnbOBmf6EIxPDeMsZuR5zHLPbhGLVOg1v+HHCCxipVsuW8TdgYWp4N4P?= =?us-ascii?Q?z4O/75Tmoy59GX8frO9ksPYsm9uwaJRLSTbskzBS4padX//0vErTtYZ0DsqJ?= =?us-ascii?Q?Wur/+qTAhJHuJVD+d9YDHPxt7GehdHH4U+wdmCXymeIVOThyOBvgZBeZ5Bm7?= =?us-ascii?Q?60aK3WkP92kX0QzmM8U34CaPBaCnBSJbPQhXVU082oHs/8+trTTZFwkBzFmi?= =?us-ascii?Q?ZvemAX3L/GCM3bEF4dEvMS2oBgYLJQrGhsiSsD1E1VJ0VBp1vMc4MflIu/ie?= =?us-ascii?Q?EraCPM1XWNiniPbAIjQe9Fe/KeT9O0ADgXL3gs9Up1Qf/7wPtNopecH0Cf2T?= =?us-ascii?Q?rgdmHTlcpmpwvFogEJ4u3WtMHKt/SM84Cr+slCwCIwTGQMJRE1dPP2uE85jF?= =?us-ascii?Q?do8F58sK/O6HtmQ65s0fzSA7Sb/U4Cja+KQcdTDfNDXiX6/hya7OgOjHZeOf?= =?us-ascii?Q?tnMxoxk5AA=3D=3D?= X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45e6ca56-31ff-4682-4be0-08def70eaa60 X-MS-Exchange-CrossTenant-AuthSource: AS8PR03MB9746.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Aug 2026 18:39:09.4525 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nh03eeohrhTeOWSVYDkCxDfTFFFsnccC668bwvh8UmxPXNC5bW+Wb9gROGFqxYC3X0yTku7PRiLo+4IJWuYALQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB11092 X-purgate-ID: tlsNG-16d1c6/1786387151-F440377B-99CEB5B5/0/0 X-purgate-type: clean X-purgate-size: 2611 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1786387173465158500 Content-Type: text/plain; charset="utf-8" The allocated_irqs bitmap in the existing vGIC implementation stores eSPI allocation bits immediately after the regular vIRQ bits. vgic_reserve_virq() converts an eSPI INTID to this compressed bitmap index, but vgic_free_virq() used the raw INTID. Freeing INTID 4096 therefore clears bit 4096 instead of the first eSPI bit. This writes beyond allocated_irqs and leaves the intended eSPI bit set. Valid eSPIs reach this path during DOMCTL bind failure cleanup and unbind, and during vPL011 teardown. Add virq_to_idx(), the inverse of idx_to_virq(), and use it when reserving and freeing vIRQs. Validate a vIRQ before clearing its allocation bit. Fixes: bdde400c6e1b ("xen/arm: vgic: add resource management for extended S= PIs") Signed-off-by: Mykola Kvach --- Changes in v2: - Call is_espi() without a configuration guard. --- xen/arch/arm/vgic.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index e5aca17dcb..c095866709 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -33,6 +33,14 @@ static inline unsigned int idx_to_virq(struct domain *d,= unsigned int idx) return idx; } =20 +static inline unsigned int virq_to_idx(struct domain *d, unsigned int virq) +{ + if ( is_espi(virq) ) + return espi_intid_to_idx(virq) + vgic_num_irqs(d); + + return virq; +} + bool vgic_is_valid_line(struct domain *d, unsigned int virq) { #ifdef CONFIG_GICV3_ESPI @@ -848,19 +856,11 @@ bool vgic_emulate(struct cpu_user_regs *regs, union h= sr hsr) =20 bool vgic_reserve_virq(struct domain *d, unsigned int virq) { - unsigned int idx =3D virq; - if ( !vgic_is_valid_line(d, virq) ) return false; =20 - if ( is_espi(virq) ) - { - unsigned int num_regular_irqs =3D vgic_num_irqs(d); - - idx =3D espi_intid_to_idx(virq) + num_regular_irqs; - } - - return !test_and_set_bit(idx, d->arch.vgic.allocated_irqs); + return !test_and_set_bit(virq_to_idx(d, virq), + d->arch.vgic.allocated_irqs); } =20 int vgic_allocate_virq(struct domain *d, bool spi) @@ -897,7 +897,10 @@ int vgic_allocate_virq(struct domain *d, bool spi) =20 void vgic_free_virq(struct domain *d, unsigned int virq) { - clear_bit(virq, d->arch.vgic.allocated_irqs); + if ( !vgic_is_valid_line(d, virq) ) + return; + + clear_bit(virq_to_idx(d, virq), d->arch.vgic.allocated_irqs); } =20 unsigned int vgic_max_vcpus(unsigned int domctl_vgic_version) --=20 2.43.0 From nobody Thu Aug 13 09:22:18 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1786387180; cv=pass; d=zohomail.com; s=zohoarc; b=Bnt03CZsllKqf9/477nqAECTMUbWbmOLT4iojbfxhmeCSDVtZRtFzttvl4JzleFZfDuhZJd5KJ/yNrn+1VXmHAyE47+e3V72IeRMJf74NjpdUYKDmwB9dDQKI0vIp1E49boXU7X9G/H85DKTKp0FBkjsvj2Ue0adLiIKsMEcNdY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786387180; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rDjLrGD/FUY/UDHLWYqh7U+MOkaV3PZOYHp110xkPAI=; b=HEPeGuLGHyABz6tigBm/uEcdtzElmYCOTDU2dRgknlclrNCGWHzf8GNFs1Z3IpcwuOEHuAXSVlIuFrCpli37ttcwMCfHLiWRcdZX+6/l3Dt2BUxSrWZwb0CCfXBIT0tJj5gdI0+jO7G0MEL2+r5/MciRMfZEeb3zw4py3gdlT9g= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178638718047760.26551489422479; Mon, 10 Aug 2026 11:39:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1387760.1629014 (Exim 4.92) (envelope-from ) id 1wtUu7-0004ZL-JX; Mon, 10 Aug 2026 18:39:19 +0000 Received: by outflank-mailman (output) from mailman id 1387760.1629014; Mon, 10 Aug 2026 18:39:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUu7-0004ZE-GA; Mon, 10 Aug 2026 18:39:19 +0000 Received: by outflank-mailman (input) for mailman id 1387760; Mon, 10 Aug 2026 18:39:17 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wtUu5-0004Wm-Ay for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 18:39:17 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wtUu4-009VLW-Ne for xen-devel@lists.xenproject.org; Mon, 10 Aug 2026 20:39:16 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a7a1ab0-e002-0a2a0a5209dd-0a2a4504df76-26 for ; Mon, 10 Aug 2026 20:39:16 +0200 Received: from [52.101.84.111] (helo=DB3PR0202CU003.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a7a1ad4-b57f-0a2a45040019-3465546ff7a9-3 for ; Mon, 10 Aug 2026 20:39:16 +0200 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) by GVXPR03MB11092.eurprd03.prod.outlook.com (2603:10a6:150:2a9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 10 Aug 2026 18:39:12 +0000 Received: from AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7]) by AS8PR03MB9746.eurprd03.prod.outlook.com ([fe80::cf11:309:1384:58f7%6]) with mapi id 15.21.0292.024; Mon, 10 Aug 2026 18:39:12 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DkkjgM1zCRqu84KKXeQQrMnc5lhcYnlJ4p3z1131szpuOdKEYi6rkveNK+IlHfSA0hUky+5knXpPgqYVoR292E4YBpcyxyhnb2L8R4zfdvgh2oSKzkN/0XuQ/ir2A/uBXT1h3nDQAMvV0wtOMXAimHssGbQKUPjfMijHho50pYl5zIi7bdFlbRr+OdciNxTuyv4NQwla4FIC6adSJWBtK1gA7QO7ElhfAw6secHtQYMMNpQa+KBZYSQEgWQyFAxzkkt5sN8cza07JxyQ6HU7Iyr1X99fD5jYckPmo8j6d79RkjwOwwsjQj2vfGhRloNn538gdIzDaut6FAOsvPWKww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rDjLrGD/FUY/UDHLWYqh7U+MOkaV3PZOYHp110xkPAI=; b=BpJCzoyNePC0uVUWau9rDGPqsTamiKrVEz5GCFr7hj7irCF3sAc4M0DhGORRK2OElJP4h0LrPaicmLZq2GfFGtXpTO+dAFeQX955eZciAAufl6coL/oiYOA4wfNZmi3kuyQinJGi2D3eZcdoEtb77a/FbrsqjdgXVYtzIfEophgrVDIGk25axuwtCvKRAtGWb2XpToK41woC8ieq/5fl9vsPvUgWfJ4/5ehzrhwWqwYPGc1LRd5RJLo0G6kUxVHpmGp3lRtoUWewEoIPa0XIgtLWormcygeKXMN8gFRdtBqhFopCDyxc1uMWYjW9EctV00Bl/84kdX7FSSJ/v9Xlew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rDjLrGD/FUY/UDHLWYqh7U+MOkaV3PZOYHp110xkPAI=; b=HW+3Ug3RRUhFXjtQp14lc3aASZPPbFsXMhkdvPWZRphZL6sHg4aoSGmqFGz0ek5R4tFLXPcMQpjLfOUah8MBok88SMHaMtGPfVxxRSLdo0eNbXTCaeL7g8W3tdHOB2+4imR6kI+8pPZaVzbEZgJ0E22Hjm1lQAQHGkY+fky3kEAtJjOLIOcDwIQrzn3UrHu3E4hv9qa+SXpZipIBdP1Rf2fGOb+yIAQi0dIJErIMdIsCjBS/6y4xNc8whW1ZLv4n2meEaFS5nJVfT+/AvkKiOUN7LcdEutPt3uzPCEpWJ5h8D4CWvz6gVU4XYUlXiGeTjoNNbATrarIH8UTqW4S7Xw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; From: Mykola Kvach To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Jens Wiklander Subject: [PATCH v2 3/3] xen/arm: handle irq_set_type() failures Date: Mon, 10 Aug 2026 21:38:47 +0300 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: WA2P291CA0003.POLP291.PROD.OUTLOOK.COM (2603:10a6:1d0:1e::7) To AS8PR03MB9746.eurprd03.prod.outlook.com (2603:10a6:20b:61d::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR03MB9746:EE_|GVXPR03MB11092:EE_ X-MS-Office365-Filtering-Correlation-Id: 47e88541-b80d-49b4-e333-08def70eabd7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|23010399003|18002099003|22082099003|11063799006|56012099006|6133799003|10067099003; X-Microsoft-Antispam-Message-Info: uJMqOoXTb+FbCoY2yiaYePu95xHg/G0UW74CG6WUc2aW7rJuAKw97DeCbap2Zp3GkQK0Wxey1v1o415gRRHs1vshQOSsZy7K1LzdFx8r6GKoV7dEBLDGtiiZEA1g4r3xqbEdcOsMzlB9H1fNdidXC6dnZswPJQWGwDF/pcHr4ISAs9RUuWAUVBXSvENa6i7TwggttRj+ET0sKsWqONhlb2xFR/rkwOj/1GDwvQK3Km6CLpn64SDgYcvbbJpe45SYs/o8K1csG7CEobeCDW/vtCoalZ6WUm8DW61D3G716MaJ4E77lAOzjUgTriG+PiIgn45zSjXWY1wva5fsN2G0XZzkJj3aA3L4GgCkc9C+JELagDRlw6N2r2cNERZSX0qYUrQpjSO8Qm/1EFb04yYeEC2LM3uywDHHX1PBpm6XO2U/1j1QKj+y4TRrYlzw6RK/7TGrv1a4C382BstfTyhl58gz8rglZDuA0hyLsySmT2/EPzCk6wcA2SzG9Fk7wlhUZ6iFmbEsOxYpXaBEG389IJRyyf7hU7McjCfZAY5H8ZsYz/ABil9/C9959vWWQGw34543oje5TxPXl8wXpnO1uCs5FBte+EL4vWDt6L2axi8Vn0SQFyIOxIUSPWxLolDblYqUonJ4vpB8yxmGr7CsxGbxh9VIzW9jOjctb6MPWLI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR03MB9746.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?l/FuCPR1KArHyj4uVex0HQRtYlHdgo5hmiefPb3gKIEPc2QS0QW+puYjsSkB?= =?us-ascii?Q?ZfAcwElNDPaW05kTb3TpVFWbFR8BAWGut/1UZPen6SuQPOy46W8ZPLbqLWFb?= =?us-ascii?Q?SncFTf6SdsxpcsqVliPIINfdCrIEMyY955wPdU/84y6U4ohwiNT7VFXQOU+1?= =?us-ascii?Q?sK9YS0KhxiBvoK4ROdet2u3PxyyrNitL9OEAJfVHffqTrI4GHYwPZfiHDJ6g?= =?us-ascii?Q?0aweKGxq988xOdbXWGRDF2ySQkLxavG1h9N7sxKygRW3vUU60OEWcp6M2o7C?= =?us-ascii?Q?JyYoWXb+iWUqj/l02if97He2c2zF7/qRcQphaW8fI/5DWCYXo8zV92OncaSy?= =?us-ascii?Q?qjLh40iwPbwOhPBuD6HtsEt/XL5CtjZ0ac54nstsUL1AsMSKwH5mg/lLwj8x?= =?us-ascii?Q?iJ9pUKgBgJdokHbtLV13CaRmJVzwxBuDAqiDULgNu/Rqel/mPwNKwNNv1VX5?= =?us-ascii?Q?zgw/4ACyZVEUF2JLE/TSVuShVFz3jpINMOJehVkM9OXLlxySjfWF5QtJb9y/?= =?us-ascii?Q?WCLx7tIAQbtSyR6aLugVqSejpq2t4pB9B12SsWfoQ4/WBtEnA+Ja4Y2qH+g9?= =?us-ascii?Q?uhvYdw7V6pGZYinGBq91Br2h5eXNQ30S43fNbwYxAAXYMsFB79oCuq5YxSYy?= =?us-ascii?Q?Mrux61rvSd82V1tdp+1CHkk2YroByItxBfU3bHGOkT8pLsuG2edmw31dxrzl?= =?us-ascii?Q?00Th7WwRcbFYsAUtt6YZsAJMzqiFegjj1Va/Rq5+htgc2RIheJIApwf9o7mI?= =?us-ascii?Q?S7laDTrgaDOLo3ZS/CTaSWJTchReAE8vhiJHmYFlR4GzHuKAIKgXywY4c1Tb?= =?us-ascii?Q?VgWTDxBLJNrhCSPqkOznEf6OAqlBC0qvdAWxKTZ0BBMSP+iGImbazhXgA4Gx?= =?us-ascii?Q?p5Zm7bkzPlERzdRf1qkruFb/RCYlTNGWRwqynSKKEKNRva802mvh3BtCHqRC?= =?us-ascii?Q?xId/nUhJeWXR5L8NDqQA7cWSaXZ4b1+d30C3byAHlu82+6l8RR2pVmp4TvSp?= =?us-ascii?Q?q9c9BXJFPi3GsZhsBlBlPZzd9i7ZHeJBE6DE75nGcMgRunXQW7EPak7cd09P?= =?us-ascii?Q?F/tZXdFzMuUiUHfCrARJbkTm0ugAkYdaSvZbmsQq5OLwOangndfavezcrN7v?= =?us-ascii?Q?mAzzaGH1ABD9wO52/nSkUhvddHWFK2jmouCU5+NCnSeNpInk49+R/g6A8rDN?= =?us-ascii?Q?KShV7qh2b93k+4D6PD78mT0LYsbxTeUaAZCb4D97rdRsVE5eplhGkQRJhm96?= =?us-ascii?Q?K6Tw61+pafnqLs9ubEh9t5ZcepqbGWOWs44VzzTyWkyIrwz2OAdxFbVFJnz8?= =?us-ascii?Q?ktNJPrCYR8kRV2zotFJbYqMN0nEsQEtXLdtA/rWg554EkuefUOMpnP6W9b9F?= =?us-ascii?Q?grxsb/788k7SGgKPmr6YDEf1HQdZyUDQRKIPp7u4cam63Vs9A0ASxQP9+dzQ?= =?us-ascii?Q?rdZCJGzaJyDDD41tHKBh/omb/hv0A3fVrX1lBXb65mVj5jEVgtEXbyYs/ilj?= =?us-ascii?Q?upsfXqfVUylqfhBBvjPqlF0yGNeL4FAQngiVZBYtNGGij8C9/oIsIYVgQPL7?= =?us-ascii?Q?ap/1O7royDgzg/K4aUO4KYHDtAlClhIlzwGG/TI+s2GKVouHp8FcbT1IA+YL?= =?us-ascii?Q?Setjv7t4pwTzzg44k/0nrDWNj7JMj95q9pf++fNMl4YpI/k0p0TcrYzaX3OT?= =?us-ascii?Q?TUpXase6qo3CYC/LipVPUYHCr+nvYpRjQyw9ikQoWYvKsZEG7UYhNPIVPq6F?= =?us-ascii?Q?tej3n00jrQ=3D=3D?= X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47e88541-b80d-49b4-e333-08def70eabd7 X-MS-Exchange-CrossTenant-AuthSource: AS8PR03MB9746.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Aug 2026 18:39:11.9409 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cP677HKJHG0aKoTZVTXUorLx2TcQ5bgwgAIZKBZBF5KZeFUk8saS1KugqqeO/mvbcLZP89NaYokt5OgWHFNvQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB11092 X-purgate-ID: tlsNG-ebf023/1786387156-502E4B50-C89FB731/0/0 X-purgate-type: clean X-purgate-size: 7395 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1786387181380158500 Content-Type: text/plain; charset="utf-8" Several Arm firmware initialization paths discard irq_set_type()'s return value, violating MISRA C Rule 17.7. If trigger configuration fails, initialization continues with an IRQ that was not configured as requested. Check the return value in the GTDT, MADT, SPCR, and FF-A paths. Store timer INTIDs only after successful trigger configuration, make GTDT parsing failure fatal, and stop UART or notification setup when trigger configuration fails. Signed-off-by: Mykola Kvach --- Changes in v2: - new patch. --- xen/arch/arm/gic-v2.c | 8 ++++++-- xen/arch/arm/gic-v3.c | 8 ++++++-- xen/arch/arm/tee/ffa_notif.c | 11 ++++++++++- xen/arch/arm/time.c | 18 ++++++++++++++---- xen/drivers/char/ns16550.c | 5 ++++- xen/drivers/char/pl011.c | 4 +++- 6 files changed, 43 insertions(+), 11 deletions(-) diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c index 43a379fdda..b8dcbb0bb4 100644 --- a/xen/arch/arm/gic-v2.c +++ b/xen/arch/arm/gic-v2.c @@ -1157,6 +1157,7 @@ gic_acpi_parse_madt_cpu(struct acpi_subtable_header *= header, const unsigned long end) { static int cpu_base_assigned =3D 0; + int rc; struct acpi_madt_generic_interrupt *processor =3D container_of(header, struct acpi_madt_generic_interrupt, he= ader); =20 @@ -1173,9 +1174,12 @@ gic_acpi_parse_madt_cpu(struct acpi_subtable_header = *header, gicv2_info.maintenance_irq =3D processor->vgic_interrupt; =20 if ( processor->flags & ACPI_MADT_VGIC_IRQ_MODE ) - irq_set_type(gicv2_info.maintenance_irq, IRQ_TYPE_EDGE_BOTH); + rc =3D irq_set_type(gicv2_info.maintenance_irq, IRQ_TYPE_EDGE_= BOTH); else - irq_set_type(gicv2_info.maintenance_irq, IRQ_TYPE_LEVEL_MASK); + rc =3D irq_set_type(gicv2_info.maintenance_irq, IRQ_TYPE_LEVEL= _MASK); + + if ( rc ) + return rc; =20 cpu_base_assigned =3D 1; } diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index acdac22953..d92d0b9b3c 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -1734,6 +1734,7 @@ gic_acpi_parse_madt_cpu(struct acpi_subtable_header *= header, const unsigned long end) { static int cpu_base_assigned =3D 0; + int rc; struct acpi_madt_generic_interrupt *processor =3D container_of(header, struct acpi_madt_generic_interrupt, he= ader); =20 @@ -1748,9 +1749,12 @@ gic_acpi_parse_madt_cpu(struct acpi_subtable_header = *header, gicv3_info.maintenance_irq =3D processor->vgic_interrupt; =20 if ( processor->flags & ACPI_MADT_VGIC_IRQ_MODE ) - irq_set_type(gicv3_info.maintenance_irq, IRQ_TYPE_EDGE_BOTH); + rc =3D irq_set_type(gicv3_info.maintenance_irq, IRQ_TYPE_EDGE_= BOTH); else - irq_set_type(gicv3_info.maintenance_irq, IRQ_TYPE_LEVEL_MASK); + rc =3D irq_set_type(gicv3_info.maintenance_irq, IRQ_TYPE_LEVEL= _MASK); + + if ( rc ) + return rc; =20 cpu_base_assigned =3D 1; } diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c index 186e726412..d08d0a3366 100644 --- a/xen/arch/arm/tee/ffa_notif.c +++ b/xen/arch/arm/tee/ffa_notif.c @@ -407,7 +407,16 @@ void ffa_notif_init(void) irq =3D resp.a2; notif_sri_irq =3D irq; if ( irq >=3D NR_GIC_SGI ) - irq_set_type(irq, IRQ_TYPE_EDGE_RISING); + { + ret =3D irq_set_type(irq, IRQ_TYPE_EDGE_RISING); + if ( ret ) + { + printk(XENLOG_ERR + "ffa: irq_set_type irq %u failed: error %d\n", + irq, ret); + return; + } + } ret =3D request_irq(irq, 0, notif_irq_handler, "FF-A notif", NULL); if ( ret ) { diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c index 6955b2788f..39b5eabe7c 100644 --- a/xen/arch/arm/time.c +++ b/xen/arch/arm/time.c @@ -60,20 +60,27 @@ static int __init arch_timer_acpi_init(struct acpi_tabl= e_header *header) { u32 irq_type; struct acpi_table_gtdt *gtdt; + int rc; =20 gtdt =3D container_of(header, struct acpi_table_gtdt, header); =20 /* Initialize all the generic timer IRQ variable from GTDT table */ irq_type =3D acpi_get_timer_irq_type(gtdt->non_secure_el1_flags); - irq_set_type(gtdt->non_secure_el1_interrupt, irq_type); + rc =3D irq_set_type(gtdt->non_secure_el1_interrupt, irq_type); + if ( rc ) + return rc; timer_irq[TIMER_PHYS_NONSECURE_PPI] =3D gtdt->non_secure_el1_interrupt; =20 irq_type =3D acpi_get_timer_irq_type(gtdt->virtual_timer_flags); - irq_set_type(gtdt->virtual_timer_interrupt, irq_type); + rc =3D irq_set_type(gtdt->virtual_timer_interrupt, irq_type); + if ( rc ) + return rc; timer_irq[TIMER_VIRT_PPI] =3D gtdt->virtual_timer_interrupt; =20 irq_type =3D acpi_get_timer_irq_type(gtdt->non_secure_el2_flags); - irq_set_type(gtdt->non_secure_el2_interrupt, irq_type); + rc =3D irq_set_type(gtdt->non_secure_el2_interrupt, irq_type); + if ( rc ) + return rc; timer_irq[TIMER_HYP_PPI] =3D gtdt->non_secure_el2_interrupt; =20 return 0; @@ -81,7 +88,10 @@ static int __init arch_timer_acpi_init(struct acpi_table= _header *header) =20 static void __init preinit_acpi_xen_time(void) { - acpi_table_parse(ACPI_SIG_GTDT, arch_timer_acpi_init); + int rc =3D acpi_table_parse(ACPI_SIG_GTDT, arch_timer_acpi_init); + + if ( rc ) + panic("Timer: Failed to configure interrupts from GTDT: %d\n", rc); } #else static void __init preinit_acpi_xen_time(void) { } diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 120ac09d23..4bfdcfebd7 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -1928,6 +1928,7 @@ static int __init ns16550_acpi_uart_init(const void *= data) struct acpi_table_header *table; struct acpi_table_spcr *spcr; acpi_status status; + int rc; /* * Same as the DT part. * Only support one UART on ARM which happen to be ns16550_com[0]. @@ -1976,7 +1977,9 @@ static int __init ns16550_acpi_uart_init(const void *= data) uart->reg_width =3D spcr->serial_port.access_width; =20 /* The trigger/polarity information is not available in spcr. */ - irq_set_type(spcr->interrupt, IRQ_TYPE_LEVEL_HIGH); + rc =3D irq_set_type(spcr->interrupt, IRQ_TYPE_LEVEL_HIGH); + if ( rc ) + return rc; uart->irq =3D spcr->interrupt; =20 uart->vuart.base_addr =3D uart->io_base; diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c index a336241033..97c53c11e0 100644 --- a/xen/drivers/char/pl011.c +++ b/xen/drivers/char/pl011.c @@ -363,7 +363,9 @@ static int __init pl011_acpi_uart_init(const void *data) spcr->interface_type =3D=3D ACPI_DBG2_SBSA_32); =20 /* trigger/polarity information is not available in spcr */ - irq_set_type(spcr->interrupt, IRQ_TYPE_LEVEL_HIGH); + res =3D irq_set_type(spcr->interrupt, IRQ_TYPE_LEVEL_HIGH); + if ( res ) + return res; =20 /* TODO - mmio32 proper handling (for now set to true) */ res =3D pl011_uart_init(spcr->interrupt, spcr->serial_port.address, --=20 2.43.0