From 68746275f842055ad77897dcb1e2d545ea3ef371 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 13 Dec 2024 15:28:59 +0800 Subject: [PATCH] CPU (Linux): detect Virtualized Apple Silicon --- src/detection/cpu/cpu_linux.c | 47 +++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/detection/cpu/cpu_linux.c b/src/detection/cpu/cpu_linux.c index 326d28e6f..3fc9c8557 100644 --- a/src/detection/cpu/cpu_linux.c +++ b/src/detection/cpu/cpu_linux.c @@ -170,28 +170,33 @@ static void detectArmName(FFstrbuf* cpuinfo, FFCPUResult* cpu, uint32_t implId) if (!ffStrStartsWith(line, "CPU part\t: ")) continue; uint32_t partId = (uint32_t) strtoul(line + strlen("CPU part\t: "), NULL, 16); const char* name = NULL; - if (partId > 0) // Linux reports 0 for unknown CPUs + switch (implId) { - switch (implId) - { - case 0x41: name = armPartId2name(partId); break; - case 0x42: name = brcmPartId2name(partId); break; - case 0x43: name = caviumPartId2name(partId); break; - case 0x44: name = decPartId2name(partId); break; - case 0x46: name = fujitsuPartId2name(partId); break; - case 0x48: name = hisiPartId2name(partId); break; - case 0x4e: name = nvidiaPartId2name(partId); break; - case 0x50: name = apmPartId2name(partId); break; - case 0x51: name = qcomPartId2name(partId); break; - case 0x53: name = samsungPartId2name(partId); break; - case 0x56: name = marvellPartId2name(partId); break; - case 0x61: name = applePartId2name(partId); break; - case 0x66: name = faradayPartId2name(partId); break; - case 0x69: name = intelPartId2name(partId); break; - case 0x6d: name = msPartId2name(partId); break; - case 0x70: name = ftPartId2name(partId); break; - case 0xc0: name = amperePartId2name(partId); break; - } + case 0x41: name = armPartId2name(partId); break; + case 0x42: name = brcmPartId2name(partId); break; + case 0x43: name = caviumPartId2name(partId); break; + case 0x44: name = decPartId2name(partId); break; + case 0x46: name = fujitsuPartId2name(partId); break; + case 0x48: name = hisiPartId2name(partId); break; + case 0x4e: name = nvidiaPartId2name(partId); break; + case 0x50: name = apmPartId2name(partId); break; + case 0x51: name = qcomPartId2name(partId); break; + case 0x53: name = samsungPartId2name(partId); break; + case 0x56: name = marvellPartId2name(partId); break; + case 0x61: + if (partId == 0) + { + // https://github.com/Dr-Noob/cpufetch/issues/213#issuecomment-1927782105 + ffStrbufSetStatic(&cpu->name, "Virtualized Apple Silicon"); + return; + } + name = applePartId2name(partId); + break; + case 0x66: name = faradayPartId2name(partId); break; + case 0x69: name = intelPartId2name(partId); break; + case 0x6d: name = msPartId2name(partId); break; + case 0x70: name = ftPartId2name(partId); break; + case 0xc0: name = amperePartId2name(partId); break; } if (lastPartId != partId) {