From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) by mx.groups.io with SMTP id smtpd.web12.1447.1615493960544319686 for ; Thu, 11 Mar 2021 12:19:20 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=kzDL5osE; spf=pass (domain: linaro.org, ip: 209.85.219.46, mailfrom: shashi.mallela@linaro.org) Received: by mail-qv1-f46.google.com with SMTP id x27so3176281qvd.2 for ; Thu, 11 Mar 2021 12:19:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6IMxujH5klpEk4e91EJCiFmpcSs0fS12V8fr395EcbI=; b=kzDL5osExnh2z7V2SgYclBLsIZ9HWGXgLS7AeyUTNB95El/zQ4irDaFfmocwLqa77R p/KZtUty/1T3R2QsnmeuEnzSzVdr2mfMN6r089czz99ElW0vll/RmbEx2PZZjvSWoGV1 Vj6AC3PZ55d7RgHLfFrh6wIl0QttFpzdo4iCtoOukYOZUTM0OSTOzCvuQkVuvRuOghrP O3cMhwfWhEstuQRG4cwNeaGxydZP/l2H9Vs4G5cHY4gvuohxFkyTsALXM06+z/Wcadbr edbrNRtFmxKNVTeyKKq/EAFEVEUbfV0fXp2MuzlRRkaHkqtMcuAMK3cAryoMmhfb6efk t8hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6IMxujH5klpEk4e91EJCiFmpcSs0fS12V8fr395EcbI=; b=BrA/0nEizS+d4aW4lhURyBCxyv+slwvxhgnrEmAmEU0Bc60KsZ+Yp14KDxHq5vtmVL dcZiXuy9r74V90bY1bCwmUScDv6XalWQFaCCAfzYM2mCt5dU05jfUzLX15h1veBeTVqa 1v1YRA6Wwv5F3J70IBxtB1jAD+WF6jSTn9Ud/3nXjMD9itZtJLo0Fj5AJhx0uMY8Fl19 L4Oq8+GKzZ3PhYcma2v0Q5xxfPm8BXbngluxCN/tAHlPUeS/e2tEsMPSA7ZvkF1sDoUO Q9bbtKVlozCdHYtR093tPetbaokT2RVGC5W6O7mMQY1WDkbzMJ8i8yGtmMGtB5fm2MBK UF4Q== X-Gm-Message-State: AOAM530Uj+YAmw9U0kCRc/toOPlHunTGXsBfpsAckP49l05U4JQkkmja iyg9nJ+PzW/8a40gawyMDgWwgg== X-Google-Smtp-Source: ABdhPJxXHIpmJZ+mVl5QvD3/MoLJCjfEjYZ/oZgcCkdwh4anW7tcClo3K73DBGDQO4HSXAKuk2g76w== X-Received: by 2002:a05:6214:1d05:: with SMTP id e5mr9146873qvd.36.1615493959651; Thu, 11 Mar 2021 12:19:19 -0800 (PST) Return-Path: Received: from localhost.localdomain (bras-base-stsvon1503w-grc-23-174-92-28-187.dsl.bell.ca. [174.92.28.187]) by smtp.googlemail.com with ESMTPSA id 85sm2915865qkf.58.2021.03.11.12.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Mar 2021 12:19:19 -0800 (PST) From: "Shashi Mallela" To: leif@nuviainc.com, ardb+tianocore@kernel.org, graeme@nuviainc.com Cc: devel@edk2.groups.io Subject: [PATCH v1 2/2] Silicon/Qemu: Update MADT with GICv3 ITS info Date: Thu, 11 Mar 2021 15:19:17 -0500 Message-Id: <20210311201917.28939-3-shashi.mallela@linaro.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210311201917.28939-1-shashi.mallela@linaro.org> References: <20210311201917.28939-1-shashi.mallela@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit For Qemu sbsa-ref platforms,to enable detection of GICv3 Interrupt Translation Service capability in the ACPI MADT,the GIC ITS structure is created with the relevant values for each of its fields.The existing MADT functionality is extended to include GIC ITS structure presence as well. Cc: Leif Lindholm Cc: Ard Biesheuvel Cc: Graeme Gregory Signed-off-by: Shashi Mallela --- Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf | 1 + Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf | 1 + Silicon/Qemu/SbsaQemu/Include/IndustryStandard/SbsaQemuAcpi.h | 10 ++++++++++ Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c | 10 +++++++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf index 9be34488eb7a..de58987b0044 100644 --- a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf @@ -34,6 +34,7 @@ [Packages] [FixedPcd] gArmTokenSpaceGuid.PcdGicDistributorBase gArmTokenSpaceGuid.PcdGicRedistributorsBase + gArmTokenSpaceGuid.PcdGicItsBase gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum gArmTokenSpaceGuid.PcdArmArchTimerIntrNum diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf index c6de685bd2c4..adf682fac564 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf @@ -59,6 +59,7 @@ [FixedPcd] gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision gArmTokenSpaceGuid.PcdGicDistributorBase gArmTokenSpaceGuid.PcdGicRedistributorsBase + gArmTokenSpaceGuid.PcdGicItsBase gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision diff --git a/Silicon/Qemu/SbsaQemu/Include/IndustryStandard/SbsaQemuAcpi.h b/Silicon/Qemu/SbsaQemu/Include/IndustryStandard/SbsaQemuAcpi.h index 4d5b05ba17c6..5f9e9477bf6a 100644 --- a/Silicon/Qemu/SbsaQemu/Include/IndustryStandard/SbsaQemuAcpi.h +++ b/Silicon/Qemu/SbsaQemu/Include/IndustryStandard/SbsaQemuAcpi.h @@ -37,6 +37,16 @@ SBSAQEMU_MADT_GICR_SIZE /* DiscoveryRangeLength */ \ } +// Macro for MADT GIC ITS Structure +#define SBSAQEMU_MADT_GIC_ITS_INIT() { \ + EFI_ACPI_6_0_GIC_ITS, /* Type */ \ + sizeof (EFI_ACPI_6_0_GIC_ITS_STRUCTURE), /* Length */ \ + EFI_ACPI_RESERVED_WORD, /* Reserved */ \ + 0, /* GicItsId */ \ + FixedPcdGet64 (PcdGicItsBase), /* PhysicalBaseAddress */ \ + EFI_ACPI_RESERVED_DWORD /* Reserved */ \ + } + #define SBSAQEMU_ACPI_SCOPE_OP_MAX_LENGTH 5 #define SBSAQEMU_ACPI_SCOPE_NAME { '_', 'S', 'B', '_' } diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c index b8901030ecd0..4e0d24ed6608 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c @@ -91,6 +91,9 @@ AddMadtTable ( // Initialize GIC Redistributor Structure EFI_ACPI_6_0_GICR_STRUCTURE Gicr = SBSAQEMU_MADT_GICR_INIT(); + // Initialize GIC ITS Structure + EFI_ACPI_6_0_GIC_ITS_STRUCTURE Gic_Its = SBSAQEMU_MADT_GIC_ITS_INIT(); + // Get CoreCount which was determined eariler after parsing device tree NumCores = PcdGet32 (PcdCoreCount); @@ -98,7 +101,8 @@ AddMadtTable ( TableSize = sizeof (EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER) + (sizeof (EFI_ACPI_6_0_GIC_STRUCTURE) * NumCores) + sizeof (EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE) + - sizeof (EFI_ACPI_6_0_GICR_STRUCTURE); + sizeof (EFI_ACPI_6_0_GICR_STRUCTURE) + + sizeof (EFI_ACPI_6_0_GIC_ITS_STRUCTURE); Status = gBS->AllocatePages ( AllocateAnyPages, @@ -138,6 +142,10 @@ AddMadtTable ( CopyMem (New, &Gicr, sizeof (EFI_ACPI_6_0_GICR_STRUCTURE)); New += sizeof (EFI_ACPI_6_0_GICR_STRUCTURE); + // GIC ITS Structure + CopyMem (New, &Gic_Its, sizeof (EFI_ACPI_6_0_GIC_ITS_STRUCTURE)); + New += sizeof (EFI_ACPI_6_0_GIC_ITS_STRUCTURE); + AcpiPlatformChecksum ((UINT8*) PageAddress, TableSize); Status = AcpiTable->InstallAcpiTable ( -- 2.27.0