From nobody Tue Apr 16 15:50:27 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+74401+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+74401+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619233053; cv=none; d=zohomail.com; s=zohoarc; b=YZpLsxwCuTap52NaEkQOO1iaM3+GD+AUDqSuYZ/1+AXfgBylA28nuPCpvEsJB7KbkbBAYfxLhJbaXF0FwFO/0Kf9aLJd61vI9zymM5aID3yB//vYf+8LwYwcuI92uSpgh9yIEzjptD2AlZeP3LOsNUNhacP59rVaK9x48k5WDF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619233053; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=gb3PYmtJmL8i6BSTlUow6U+YK+b/c5wiYmtUfDx0u30=; b=XqHyTJaLidtim9uCGX9q3B+CRC8FJdgMTrwZoC0hwhL6FcUWmTPQIF7cwHVG9JbEbF5jSFtAgL9gScu+VBfrNdwedFq5aM3NaeAd5Q8QsYYRpmz5tMtELHZsuI/aov+7WbpGtRiJpLyREzyNzcJuvuYRR7vYYGhJC6tvIaU+orY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+74401+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1619233053403756.0037652356469; Fri, 23 Apr 2021 19:57:33 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id IC3KYY1788612xqW9nNq5SUF; Fri, 23 Apr 2021 19:57:32 -0700 X-Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by mx.groups.io with SMTP id smtpd.web08.1407.1619206804193311748 for ; Fri, 23 Apr 2021 12:40:04 -0700 X-Received: by mail-ed1-f53.google.com with SMTP id h10so58633755edt.13 for ; Fri, 23 Apr 2021 12:40:03 -0700 (PDT) X-Gm-Message-State: IQ3MCq5l82lZi4ZjBtj1BimBx1787277AA= X-Google-Smtp-Source: ABdhPJwzZo2EHlWh8bSr/OrB8gs2YzY4dBEmXACMWCAtccbzA85eNLjSMtl1QXjd0g0c2dsFNqmpBw== X-Received: by 2002:a05:6402:1103:: with SMTP id u3mr6256181edv.205.1619206802446; Fri, 23 Apr 2021 12:40:02 -0700 (PDT) X-Received: from C02VH2K5HV2R.vc.cambridge.org (cpc91196-cmbg18-2-0-cust38.5-4.cable.virginm.net. [81.96.232.39]) by smtp.gmail.com with ESMTPSA id 9sm4616464ejv.73.2021.04.23.12.40.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Apr 2021 12:40:02 -0700 (PDT) From: =?UTF-8?B?QWRyacOhbiBIZXJyZXJh?= To: devel@edk2.groups.io Cc: =?UTF-8?q?Adri=C3=A1n=20Herrera?= Subject: [edk2-devel] [PATCH] ArmPkg/ArmGicLib: fix maximum interrupts supported Date: Fri, 23 Apr 2021 20:40:00 +0100 Message-Id: <2a2fef8f58a134336f19e049fbeb2c951bffaa52.1619206373.git.adr.her.arc.95@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,adr.her.arc.95@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1619233052; bh=ojIFDWuy6E9R+J9OXMxX17XmklKqPFCIwtFv8kzNKDs=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=WmFlXW96KPD+Ss5WaoX6+rJZYH04OBiaBqR8iYeKDtxcxTg4vOBuzfit8xF/uY7zhzo 4FGutn0ZFTIdtQHQLW5mo4/xXRHGMFxEnR5+pi/h0y/lK69cKEwXa8yDebslqiZucRsOq mLBJbx6ZrhlOkl2LaaRokkTMK/v8ZwcEp3A= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" The maximum number of interrupts supported is determined as 32 * (GICD_TYPER.ITLinesNumber + 1). When GICD_TYPER.ITLinesNumber =3D 0b11111, the maximum number of interrupts supported is 1024. However, both GICv2 and GICv3 reserve INTIDs 1020-1023 for special purposes. This results in runtime crashes because: (1) ArmGicLib functions do not guard against special interrupts. (2) ArmGicGetMaxNumInterrupts number includes special interrupts. (2) ArmGicV*Dxe relies on ArmGicGetMaxNumInterrupts, and thus programs special interrupts through ArmGicLib. ArmGicGetMaxNumInterrupts now does not include special interrupts, that is, it reports 1020 instead of 1024 when GICD_TYPER.ITLinesNumber =3D 0b111= 11. This avoids the overhead of guarding ArmGicLib functions while not requiring to modify the drivers code. Signed-off-by: Adri=C3=A1n Herrera --- ArmPkg/Drivers/ArmGic/ArmGicLib.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c b/ArmPkg/Drivers/ArmGic/ArmG= icLib.c index 6b01c88206..dff1401e9c 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c @@ -120,7 +120,10 @@ ArmGicGetMaxNumInterrupts ( IN INTN GicDistributorBase ) { - return 32 * ((MmioRead32 (GicDistributorBase + ARM_GIC_ICDICTR) & 0x1F) = + 1); + UINT32 ITLinesNumber; + + ITLinesNumber =3D MmioRead32 (GicDistributorBase + ARM_GIC_ICDICTR) & 0x= 1F; + return MIN (32 * (ITLinesNumber+ 1), 1020); } =20 VOID --=20 2.30.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#74401): https://edk2.groups.io/g/devel/message/74401 Mute This Topic: https://groups.io/mt/82327316/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-