From nobody Sun Apr 5 19:49:54 2026 Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CE553659EB for ; Wed, 25 Feb 2026 23:16:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772061390; cv=none; b=tV/7yqUcVb7dM91w/0/1jrgRVHBfjY8SaIt6fO99f3FaJTZJHBA88cHzc/bft7v27WLU84O1bY2M2JzE/LqXejX0kRVR2AwBeZr2btg8Dsq84f9zeGRSGZLp0KpzYHfgOBD2WjXp6zwP3vcQeclu2DRelgKbIrBQRGKXHt2wrz4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772061390; c=relaxed/simple; bh=GXWK2Cqsl0nXDAX2tyRJWxUWQuzf7tLTZNIdOQhV7Kw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lyovJdR6Wf+Hj8EpOmmPhRDdgQp5bl44mbGzisZFCn1K7gplFew56kvGCi/5qBl4yMp7hRT9LEW1x3Gh0fwR/iHfqvkM909Qb87LJ8/3wIe47TIRTfoqMG8Rn26TZ6oV/3nOy6GHzDcIm4LPmHjHE1cWDHMA4kKiMa7vAwM+fIU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KjKY/BRq; arc=none smtp.client-ip=209.85.210.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KjKY/BRq" Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-7d4c85307b2so115072a34.0 for ; Wed, 25 Feb 2026 15:16:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772061388; x=1772666188; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ge0Z3Jh9aquHYy39xgGryoVJABVK8UNOJhhBcGQ7T+0=; b=KjKY/BRqEFWCiJ00d6Q9ClhE2z6UmOb/rCaFbm8lumzBoU0ML6rDOeFvtCvknM/tVL kWKThyeQTrmUU1yVdR6a2LvGAC+WbCKwVCiZ8BNMRI5qkz+RaKeNCLb7dC+DGN4lcpt7 2L0f1BDDRF7/AZVHRm4el1KvXUHkBZ9aQCXmalhLLoX41rpYOf1wRlXqCl69GNLBcoDV +BhomUfv9wULLS2p+8z6cmS+D5SvZkTZ6Ko8xckqcZK6HYERaKQq/gInKnQoQoscRqSI yjEeHoxs64SzCwXnYKPVq6bQM3agQmESCN+25eh2O1nP74aoTpAQDBR0g8Qa+TlEyXFK E2Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772061388; x=1772666188; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ge0Z3Jh9aquHYy39xgGryoVJABVK8UNOJhhBcGQ7T+0=; b=ouJgSh6EPA2h7ddE7IAHYqFCzin59q0zld5eYKOb/39x7IGRVBKDDjSS8BCa8EEujB ygahmRNrZHgZhyWD1mNIA8A70mlEcdxg51vVFkFCgWAEp3f7bGswr2fJ1/5Xq4300w06 6/EMIWmzPIeSzicCXOPGKxZRFjQpXliWhKe2h+sRhP21rLaaLAYwF/A8zcqm/k0gyByg QoLXE8tyZd79gjNf83ovWMkElmcOkGsXPotYIe9pljMXDe/3KMDUQ3VaFT6fdazjQVMR TbufdC5PiIQxqpz/waVvoy6VSNozEfO6POonZNnJvshUO4PevHqbdsiCJlQt1kVMG+hK S+Rg== X-Forwarded-Encrypted: i=1; AJvYcCW0kI27SexkJEktte/h4kXmuqenbyGFTouaPyc5c6WMtI1LdwLoKT7QrAs9/acQXd39x2QBOJgk3Ar7tJc=@vger.kernel.org X-Gm-Message-State: AOJu0YxvcqFcClbGNDz2yRl8cNq9dhXBQRAlHrAKAH9fibZcnQAn5wUE xnlwyEikoG94raFTc+9Ltvtah0o+Pe/jgdmgCyZajsgu/H2PUTQ03y2k X-Gm-Gg: ATEYQzxjZGSztlBDWqSeR0Kjeg2sT/Mh+tJYHHQgHMnX+UZVuhdbcv3KlWOyyrzgJYu 9fteVWVHPE1YvBCW90E2OMrp9Pf/7L59YWdyYCEAoZLDSTZxwa6B3G0KDjYodbxbzokxJPG3aJn GKb3e8HRtBoW2Hzxj6NMaPs56yzDhvXgnXjOY3GCNGUA3oNZViuuxWVI0RaCSUEo4nI2yGZkvdO BniQJicwU0jkmVbTsD69pHD497kC8hDi18o2p6kD9nVGlsEqrWZlWMXaIralG5l8KhSxKr2/zsb sV+iZC7YErGLZ47m2X56CjOI4pHQrO4qT7D8kjFCWjqZztz/4ZqCekbgLXQxArtahRe+ZYsVowL 5aSVKWqNut95o/NZbCYYMFNcM6HTEL0e9m/a1E8pRRPrvSPgf9+q7QnWwI0CAeq4Iwl2WtTOBDM KcLekTJb3nYwi9tLAW1iNVmf0cV8Q5Hcs9daMeFIupQGcATuc7KHX7x9xZHk+wMh9VukVKuSF8p tw= X-Received: by 2002:a05:6820:4a8a:b0:662:f8a9:9f7 with SMTP id 006d021491bc7-679ef96ff50mr775690eaf.37.1772061388448; Wed, 25 Feb 2026 15:16:28 -0800 (PST) Received: from localhost.localdomain (modemcable231.2-131-66.mc.videotron.ca. [66.131.2.231]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-679f2db737bsm350788eaf.15.2026.02.25.15.16.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Feb 2026 15:16:28 -0800 (PST) From: Serhii Pievniev To: lenb@kernel.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Serhii Pievniev Subject: [PATCH v2] tools/turbostat: fix microcode patch level reading for AMD/Hygon Date: Wed, 25 Feb 2026 18:16:03 -0500 Message-ID: <20260225231603.33160-1-spevnev16@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260224023719.65165-1-spevnev16@gmail.com> References: <20260224023719.65165-1-spevnev16@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" turbostat always used the same logic to read the microcode patch level, which is correct for Intel but not for AMD/Hygon. While Intel stores the patch level in the upper 32 bits of MSR, AMD stores it in the lower 32 bits, which causes turbostat to report the microcode version as 0x0 on AMD/Hygon. Fix by shifting right by 32 for non-AMD/Hygon, preserving the existing behavior for Intel and unknown vendors. Signed-off-by: Serhii Pievniev --- v1 -> v2: Changed to single MSR path with conditional shift v1: https://lore.kernel.org/linux-pm/20260224023719.65165-1-spevnev16@gmail= .com --- tools/power/x86/turbostat/turbostat.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbos= tat/turbostat.c index 1a2671c2820..7545142b3a6 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c @@ -9122,10 +9122,13 @@ void process_cpuid() cpuid_has_hv =3D ecx_flags & (1 << 31); =20 if (!no_msr) { - if (get_msr(sched_getcpu(), MSR_IA32_UCODE_REV, &ucode_patch)) + if (get_msr(sched_getcpu(), MSR_IA32_UCODE_REV, &ucode_patch)) { warnx("get_msr(UCODE)"); - else + } else { ucode_patch_valid =3D true; + if (!authentic_amd && !hygon_genuine) + ucode_patch >>=3D 32; + } } =20 /* @@ -9139,7 +9142,7 @@ void process_cpuid() if (!quiet) { fprintf(outf, "CPUID(1): family:model:stepping 0x%x:%x:%x (%d:%d:%d)", f= amily, model, stepping, family, model, stepping); if (ucode_patch_valid) - fprintf(outf, " microcode 0x%x", (unsigned int)((ucode_patch >> 32) & 0= xFFFFFFFF)); + fprintf(outf, " microcode 0x%x", (unsigned int)ucode_patch); fputc('\n', outf); =20 fprintf(outf, "CPUID(0x80000000): max_extended_levels: 0x%x\n", max_exte= nded_level); --=20 2.53.0