From 7d81d895b0378bb3e421bca8371eada6f896869a Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Sat, 2 Sep 2023 21:08:43 +0100 Subject: [PATCH] [v1.04][ARM] Add support for M2 Max/Ultra --- src/arm/midr.c | 10 +++++++--- src/arm/soc.c | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/arm/midr.c b/src/arm/midr.c index 133fb82..e01fd27 100644 --- a/src/arm/midr.c +++ b/src/arm/midr.c @@ -359,10 +359,14 @@ struct cpuInfo* get_cpu_info_mach(struct cpuInfo* cpu) { fill_cpu_info_avalanche_blizzard(cpu, 4, 4); } else if(cpu_subfamily == CPUSUBFAMILY_ARM_HS) { - // Apple M2 Pro. Detect number of cores + // Apple M2 Pro/Max/Ultra. Detect number of cores uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu"); - if(physicalcpu == 10 || physicalcpu == 12) { - // M2 Pro (or Max?) + if(physicalcpu == 24) { + // M2 Ultra + fill_cpu_info_avalanche_blizzard(cpu, 16, 8); + } + else if(physicalcpu == 10 || physicalcpu == 12) { + // M2 Pro/Max fill_cpu_info_avalanche_blizzard(cpu, physicalcpu-4, 4); } else { diff --git a/src/arm/soc.c b/src/arm/soc.c index 50509e0..0932131 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -773,6 +773,20 @@ struct system_on_chip* guess_soc_apple(struct system_on_chip* soc) { else if(cpu_subfamily == CPUSUBFAMILY_ARM_HS) { fill_soc(soc, "M2 Pro", SOC_APPLE_M2_PRO, 5); } + else if(cpu_subfamily == CPUSUBFAMILY_ARM_HC_HD) { + // Could be M2 Max or M2 Ultra (2x M1 Max) + uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu"); + if(physicalcpu == 24) { + fill_soc(soc, "M2 Ultra", SOC_APPLE_M2_ULTRA, 5); + } + else if(physicalcpu == 12) { + fill_soc(soc, "M2 Max", SOC_APPLE_M2_MAX, 5); + } + else { + printBug("Found invalid physical cpu number: %d", physicalcpu); + soc->soc_vendor = SOC_VENDOR_UNKNOWN; + } + } else { printBug("Found invalid cpu_subfamily: 0x%.8X", cpu_subfamily); soc->soc_vendor = SOC_VENDOR_UNKNOWN;