From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by mx.groups.io with SMTP id smtpd.web11.5705.1639626403425249140 for ; Wed, 15 Dec 2021 19:46:43 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20210112.gappssmtp.com header.s=20210112 header.b=VzpGvLbl; spf=pass (domain: nuviainc.com, ip: 209.85.216.47, mailfrom: rebecca@nuviainc.com) Received: by mail-pj1-f47.google.com with SMTP id k6-20020a17090a7f0600b001ad9d73b20bso21301635pjl.3 for ; Wed, 15 Dec 2021 19:46:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4cjATnmUT9aORLPzCDKacOirqeIiw8hfJ8ujpZW2gXQ=; b=VzpGvLbl3JcK5AIirJLcR1eg+/Y5DkhJLZbOk6Zi6tr9y1wIXnMevSacWSszoXQdzd 6BPFYH/BeC89EQ2RiGo8mVMea+w62Pb3nQuiM6Q6sgMCWfe8wd4IJBak6gTpTZZfT9JZ 9J+/QtKQBsM5BkROqief/+skme1hchrLCg67lk0NW5SX40464OMO9vgzPYv/lfUJtk8x k9lcWgo6Q+kEjX5dfIOvClOVbgyril3//oBVnPNrSysPw+DP6skhG+d//H8egVJxkX/2 Ii/izK683Y6YbtHOEyV+E0nhwdiBZZrMk6yvWc4kHZQ05pKqD/TNtePDgCpPp3F9/rWS c6Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4cjATnmUT9aORLPzCDKacOirqeIiw8hfJ8ujpZW2gXQ=; b=o7tDMlTUJRgWRMw4lzPlOx4T0oVNibp6UIpETYUiB5oCKV8PEYCBWSvGL8y7lpId6C CaQSJGiecFMQIQ0R6qLMgTRWJ+0Vsm19l6/FTp/Y1P2aYaBEZn3Ma1KxkHs9tlymyyY2 w0znV0ld1q+E7GjTG4Ophc2xvTkjOPznljaXQe5vyI0lwsh38L+g1rApYye3pvdQiBtO wcyJXr5k+90mINvnr4d55IhD09oRZlUzXnuHrC6Id0d2ShQY9SPGgGzAMVn/wEQYX+xC cbA/YtHgfNrd/NTjKSLy7BwwSC368PV3HzFx9lBROdjay5l3V2jahN7r4bYrM5S+0Bmr 1q1w== X-Gm-Message-State: AOAM533ewPc/piFXIAu1b2vzBmNKJglSZfrMY1qUCOysMZVOG1+bSVST Dv4TQ3+8W0AlbdFHkhXjSYcFTZlUFJkgBkc3UaUtSOJmtZM4JY84p96VJ8IzKxPo5CLoxdnHXmc O/D+9LEgUKtFsRGtbAQ0pxisPZZpEWtbpdq1X8jZV11nHfgHpvIpkEGOrXRKemfaelJYCMw== X-Google-Smtp-Source: ABdhPJy9f38N0F14S2lmY99anJsu6QjkicPiNEzYaJUYUJxgNU5BVqYlFpCpGU2tQMPeOlfpXvmy4g== X-Received: by 2002:a17:902:e841:b0:148:a2e7:fb39 with SMTP id t1-20020a170902e84100b00148a2e7fb39mr7789495plg.122.1639626402689; Wed, 15 Dec 2021 19:46:42 -0800 (PST) Return-Path: Received: from linbox.ba.nuviainc.com ([2601:681:4300:69e:9e7b:efff:fe2b:884c]) by smtp.gmail.com with ESMTPSA id c21sm4124054pfl.138.2021.12.15.19.46.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Dec 2021 19:46:42 -0800 (PST) From: "Rebecca Cran" To: devel@edk2.groups.io, Ard Biesheuvel , Gerd Hoffmann , Samer El-Haj-Mahmoud , Leif Lindholm , Sami Mujawar Cc: Rebecca Cran Subject: [PATCH v3 1/4] ArmPkg: Replace CoreId and ClusterId with Mpidr in ARM_CORE_INFO struct Date: Wed, 15 Dec 2021 20:46:31 -0700 Message-Id: <20211216034634.15468-2-rebecca@nuviainc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211216034634.15468-1-rebecca@nuviainc.com> References: <20211216034634.15468-1-rebecca@nuviainc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Remove the ClusterId and CoreId fields in the ARM_CORE_INFO structure in favor of a new Mpidr field. Update code in ArmPlatformPkg/PrePeiCore/MainMPCore and ArmPlatformPkg/PrePi/MainMPCore.c to use the new field and call new macros GET_MPIDR_AFF0 and GET_MPIDR_AFF1 instead. Signed-off-by: Rebecca Cran --- ArmPkg/Include/Guid/ArmMpCoreInfo.h | 3 +-- ArmPkg/Include/Library/ArmLib.h | 4 ++++ ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c | 8 ++++---- ArmPlatformPkg/PrePeiCore/MainMPCore.c | 4 +++- ArmPlatformPkg/PrePi/MainMPCore.c | 4 +++- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ArmPkg/Include/Guid/ArmMpCoreInfo.h b/ArmPkg/Include/Guid/ArmMpCoreInfo.h index 06f9326ca021..43f0848e78b8 100644 --- a/ArmPkg/Include/Guid/ArmMpCoreInfo.h +++ b/ArmPkg/Include/Guid/ArmMpCoreInfo.h @@ -14,8 +14,7 @@ #define MPIDR_U_BIT_MASK 0x40000000 typedef struct { - UINT32 ClusterId; - UINT32 CoreId; + UINT64 Mpidr; // MP Core Mailbox EFI_PHYSICAL_ADDRESS MailboxSetAddress; diff --git a/ArmPkg/Include/Library/ArmLib.h b/ArmPkg/Include/Library/ArmLib.h index e4d0476090c7..6566deebdde2 100644 --- a/ArmPkg/Include/Library/ArmLib.h +++ b/ArmPkg/Include/Library/ArmLib.h @@ -111,6 +111,10 @@ typedef enum { #define GET_CORE_ID(MpId) ((MpId) & ARM_CORE_MASK) #define GET_CLUSTER_ID(MpId) (((MpId) & ARM_CLUSTER_MASK) >> 8) #define GET_MPID(ClusterId, CoreId) (((ClusterId) << 8) | (CoreId)) +#define GET_MPIDR_AFF0(MpId) ((MpId) & ARM_CORE_AFF0) +#define GET_MPIDR_AFF1(MpId) (((MpId) & ARM_CORE_AFF1) >> 8) +#define GET_MPIDR_AFF2(MpId) (((MpId) & ARM_CORE_AFF2) >> 16) +#define GET_MPIDR_AFF3(MpId) (((MpId) & ARM_CORE_AFF3) >> 32) #define PRIMARY_CORE_ID (PcdGet32(PcdArmPrimaryCore) & ARM_CORE_MASK) /** Reads the CCSIDR register for the specified cache. diff --git a/ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c b/ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c index eeab58805e67..852275f44fc3 100644 --- a/ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c +++ b/ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c @@ -14,7 +14,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = { { // Cluster 0, Core 0 - 0x0, 0x0, + 0x0, // MP Core MailBox Set/Get/Clear Addresses and Clear Value (EFI_PHYSICAL_ADDRESS)0, @@ -24,7 +24,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = { }, { // Cluster 0, Core 1 - 0x0, 0x1, + 0x1, // MP Core MailBox Set/Get/Clear Addresses and Clear Value (EFI_PHYSICAL_ADDRESS)0, @@ -34,7 +34,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = { }, { // Cluster 0, Core 2 - 0x0, 0x2, + 0x2, // MP Core MailBox Set/Get/Clear Addresses and Clear Value (EFI_PHYSICAL_ADDRESS)0, @@ -44,7 +44,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = { }, { // Cluster 0, Core 3 - 0x0, 0x3, + 0x3, // MP Core MailBox Set/Get/Clear Addresses and Clear Value (EFI_PHYSICAL_ADDRESS)0, diff --git a/ArmPlatformPkg/PrePeiCore/MainMPCore.c b/ArmPlatformPkg/PrePeiCore/MainMPCore.c index 0b8e5dfb3f30..b5d0d3a6442f 100644 --- a/ArmPlatformPkg/PrePeiCore/MainMPCore.c +++ b/ArmPlatformPkg/PrePeiCore/MainMPCore.c @@ -68,7 +68,9 @@ SecondaryMain ( // Find the core in the ArmCoreTable for (Index = 0; Index < ArmCoreCount; Index++) { - if ((ArmCoreInfoTable[Index].ClusterId == ClusterId) && (ArmCoreInfoTable[Index].CoreId == CoreId)) { + if ((GET_MPIDR_AFF1 (ArmCoreInfoTable[Index].Mpidr) == ClusterId) && + (GET_MPIDR_AFF0 (ArmCoreInfoTable[Index].Mpidr) == CoreId)) + { break; } } diff --git a/ArmPlatformPkg/PrePi/MainMPCore.c b/ArmPlatformPkg/PrePi/MainMPCore.c index ce53cea6367c..68a7c13298d0 100644 --- a/ArmPlatformPkg/PrePi/MainMPCore.c +++ b/ArmPlatformPkg/PrePi/MainMPCore.c @@ -67,7 +67,9 @@ SecondaryMain ( // Find the core in the ArmCoreTable for (Index = 0; Index < ArmCoreCount; Index++) { - if ((ArmCoreInfoTable[Index].ClusterId == ClusterId) && (ArmCoreInfoTable[Index].CoreId == CoreId)) { + if ((GET_MPIDR_AFF1 (ArmCoreInfoTable[Index].Mpidr) == ClusterId) && + (GET_MPIDR_AFF0 (ArmCoreInfoTable[Index].Mpidr) == CoreId)) + { break; } } -- 2.31.1