From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by mx.groups.io with SMTP id smtpd.web09.5725.1639626402250278385 for ; Wed, 15 Dec 2021 19:46:42 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20210112.gappssmtp.com header.s=20210112 header.b=q+W3nZ59; spf=pass (domain: nuviainc.com, ip: 209.85.216.42, mailfrom: rebecca@nuviainc.com) Received: by mail-pj1-f42.google.com with SMTP id v16so6103843pjn.1 for ; Wed, 15 Dec 2021 19:46:42 -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:mime-version :content-transfer-encoding; bh=BnZ7NNCUtfEQYIg0Vbx2rq5+oG4SSfeAAnJcWlNlMHc=; b=q+W3nZ59QrwWRf5QfQUY/iljBWQzJJrWmydCm85aL4UeqNMSU+n5cYWpHjOOJTqPMt XEXYtOZDJY/lJ+4UbaD5dUvSL/XrOsnLqfllebgDFdmDtX2SpbbelZyPf3bnHGiXob+a 49/JlbOPzIX7MeE843k7Ry9cFG6LjWts/5uhqUzCZ1s6bHzADVECrwbvlqPNbqi5nwLm XMHXpgRk/huwDgpQfmNVi+p1jIp7uIj6ylhGrW0iwqVaVEvLS1/4S/4k2p4DmS4aqWKs zkLKQi5fiNNVlUht5ZkM+u4XMpbp3sUzV/k+XOoJNKfn8mRIi/SqMaBQbR2wryP9y8cE RBYQ== 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:mime-version :content-transfer-encoding; bh=BnZ7NNCUtfEQYIg0Vbx2rq5+oG4SSfeAAnJcWlNlMHc=; b=0E8j38XatHDbXxldFJ5qnY00y30buNkcAg6O+jP6xgUzhGu3am3M+ycKSm2ZUTJ61A 2BFNwGZUkYdiD+EHHFcdPm47babAQGgS/mMuMCPcGD1kKGsdCWY+xBOBGgImRMYvTg1a Re2VtD/T8vWlVmhfGNCodhqwsmsY5I08e8LGH+gejXr6CFrxvvVpgKyVDUVsis4052m3 IcI0RfR4fNv95o66DxJVzVKtOhAmnHGtacUSlfqR5ksltuDekVQRWB6aEttZzE6OxQPG 2QXE2G/vh4Yccp2QcBNhnbKqowDh6rAFgr9APpD6ApIZBF0VCTQbP1czqD4sRzltOjH/ DJtQ== X-Gm-Message-State: AOAM531GfJCtSErj6MqA49mTplS+eiQeJ229R7WVLLrdKkSNSvJnrT1R V+QrUdjNOcxMkR+uT7BHRVkc7aVEO/lq43Qg46pdlv6BRRo/xXfLpvaHWXfJsKb/sAPFDRBiLKE O3X4tlC6/pxNiOk/hOWcnfp+HleTY4J5ocwojK1v0mq5rSDsU5n3FZZhbmcv/KBgbugtpGw== X-Google-Smtp-Source: ABdhPJyGPDQMYKpMlDzxzCkzgA2HBG3ZirR/7GclR5aoS0i+OU1FsIvv4oBJ9RZO9mJ+e9DCeB2uQg== X-Received: by 2002:a17:903:22d1:b0:148:a77a:8761 with SMTP id y17-20020a17090322d100b00148a77a8761mr6669797plg.153.1639626401393; Wed, 15 Dec 2021 19:46:41 -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.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Dec 2021 19:46:40 -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 0/4] ArmPkg,ArmVirtPkg: Add support EFI_MP_SERVICES_PROTOCOL on AARCH64 Date: Wed, 15 Dec 2021 20:46:30 -0700 Message-Id: <20211216034634.15468-1-rebecca@nuviainc.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Patch 1/4 is the start of addressing the issue that the Aff0 field of the MPIDR is no longer guaranteed to be the core, and should be referred to in a more generic way: for example it could be the thread, with Aff1 being the core and Aff2 the cluster. Clearly much more work is needed to fully remove that assumption. Patch 2/4 implements the EFI_MP_SERVICES_PROTOCOL for DXE in Library/MpInitLib. Patch 4/4 updates CpuDxe to initialize MP support: as a result, it gains a dependency on MpInitLib. Patch 3/4 updates ArmVirt.dsc.inc to add the new MpInitLib library. Cores are powered on and turned off using PSCI. Note that minimal CPU setup is done: for example the MMU and caches are left disabled. -------- Changes from v2: o Split patches up. o Wrapped overly long lines. o Fixed code formatting issues (Uncrustify). o Fixed other formatting issues (ECC tool). -------- Testing: o Ran CI: https://github.com/tianocore/edk2/pull/2312 o Built packages in ArmVirtPkg at each revision for both ARM and AARCH64. Rebecca Cran (4): ArmPkg: Replace CoreId and ClusterId with Mpidr in ARM_CORE_INFO struct ArmPkg: Add Library/MpInitLib to support EFI_MP_SERVICES_PROTOCOL ArmVirtPkg: Add MpInitLib, which is dependency for CpuDxe consumers ArmPkg: Update Drivers/CpuDxe to initialize MpInitLib ArmPkg/ArmPkg.dec | 4 + ArmPkg/ArmPkg.dsc | 4 + ArmPkg/Drivers/CpuDxe/AArch64/Arch.c | 21 + ArmPkg/Drivers/CpuDxe/Arm/Arch.c | 21 + ArmPkg/Drivers/CpuDxe/CpuDxe.c | 2 + ArmPkg/Drivers/CpuDxe/CpuDxe.h | 10 + ArmPkg/Drivers/CpuDxe/CpuDxe.inf | 6 + ArmPkg/Drivers/CpuDxe/CpuMpInit.c | 608 ++++++++ ArmPkg/Include/Guid/ArmMpCoreInfo.h | 3 +- ArmPkg/Include/Library/ArmLib.h | 4 + ArmPkg/Include/Library/MpInitLib.h | 362 +++++ ArmPkg/Library/MpInitLib/AArch64/MpFuncs.S | 65 + ArmPkg/Library/MpInitLib/DxeMpInitLib.inf | 52 + ArmPkg/Library/MpInitLib/DxeMpLib.c | 1477 ++++++++++++++++++++ ArmPkg/Library/MpInitLib/InternalMpInitLib.h | 357 +++++ ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c | 8 +- ArmPlatformPkg/PrePeiCore/MainMPCore.c | 4 +- ArmPlatformPkg/PrePi/MainMPCore.c | 4 +- ArmVirtPkg/ArmVirt.dsc.inc | 3 + 19 files changed, 3007 insertions(+), 8 deletions(-) create mode 100644 ArmPkg/Drivers/CpuDxe/AArch64/Arch.c create mode 100644 ArmPkg/Drivers/CpuDxe/Arm/Arch.c create mode 100644 ArmPkg/Drivers/CpuDxe/CpuMpInit.c create mode 100644 ArmPkg/Include/Library/MpInitLib.h create mode 100644 ArmPkg/Library/MpInitLib/AArch64/MpFuncs.S create mode 100644 ArmPkg/Library/MpInitLib/DxeMpInitLib.inf create mode 100644 ArmPkg/Library/MpInitLib/DxeMpLib.c create mode 100644 ArmPkg/Library/MpInitLib/InternalMpInitLib.h -- 2.31.1