From nobody Sun May 11 22:28:26 2025 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1609417804; cv=none; d=zohomail.com; s=zohoarc; b=VIOPDvjp2q2+N9SEnmsLYFdBgQSyswP02k7RsT7Bqyeq4HYCB3TE7sDY8Ai/rlLqXYjWbfEPcpCXWwoUobhu9yAvLQq5nlgD9qyCpoLLO2bRPP6gGfhbH7OmnboXuPJ6/NWFAHTo6UpUSMwxDiXESVXxWt87irs1Cyr2Ao2kgqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1609417804; h=Content-Transfer-Encoding:Cc:Date:From:List-Id:MIME-Version:Message-ID:Subject:To; bh=fvCa6iOZY2KymvtycX2BW6Wl2+CUVw4rHZaH2yq9Io8=; b=YRvHaYoBRYDwphaRmVOBhWoGVAkwAwVmVlQrPJGmDIAd1ADvmuGBuNjZRWBRSjNWO5aVXfLEr0X2nb+3w/C216DHWg/wk1ap6NrZyYfNJQBuv5lucHxe+CEVj50nr3QUPiIaO7tJh0PGDufAuOgceO/npQm/zGYsL/ABTvunrJo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 160941780438658.596951082649866; Thu, 31 Dec 2020 04:30:04 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726523AbgLaM32 (ORCPT ); Thu, 31 Dec 2020 07:29:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726219AbgLaM31 (ORCPT ); Thu, 31 Dec 2020 07:29:27 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 225BEC061573 for ; Thu, 31 Dec 2020 04:28:47 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id t16so20008970wra.3 for ; Thu, 31 Dec 2020 04:28:47 -0800 (PST) Received: from stormsend.localdomain ([2a01:e35:242b:e030:3cc4:754f:94e2:ab2a]) by smtp.googlemail.com with ESMTPSA id c20sm12500619wmb.38.2020.12.31.04.28.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 31 Dec 2020 04:28:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fvCa6iOZY2KymvtycX2BW6Wl2+CUVw4rHZaH2yq9Io8=; b=D1u2RsFpSq249yS08YyIDcnltrFgrb2HPwijlYkTTwYhHe0/LOqd7rOK4qN0k8HP+a d8wCqSVX7GeN/CxFCPRogIRYXmJ5+at86ancFCA0QCJWYY4fDsFLPfYUFSAhrjTnLBYl MFEETsDktUbT2qKHDclRrQdcUg2nFwPfolyVIU85ebH+gqV+/Z66PW39S9uCXPbcJJwj v8+LjmBgmK8oiwDC1UKZHSLqLQtsNvdPCrgFbwM4Ipwl6gh3uRp11CQJUCxyePQJY4kT /Bka1gSIv8hKoBG7CeIH247IeVvogUoGRcBM1gUm7t+NdojD7LeU5raUN1zfcJgaYz1k 4JGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fvCa6iOZY2KymvtycX2BW6Wl2+CUVw4rHZaH2yq9Io8=; b=bK38K29VbkVLJTPTiMF8E54NDXqYCHO/1Bz6uCWC76G7UtXjXdNtNluUC1cCqZB3Rc pmy8PY04OmvvhcgU1iP2r7iofYER2iTySBk+r3fVoZdpGi4M5MIN+wCkpk+kuWsAcVNp UVaqym2MTFFtFe319OUewRyzz6DabVtUTlpeOHthAwY+1LuZvyYvdxw5BRyCn4BMhL/N tr+Fic4wnr2gUCb7YOY+QD6wwDGswZ2gzbvxlXSAmQHDLZ8Dql0MAhKAslxYk1KFUNw+ 6gRo/yKhI6ldvf3AlGzVuegYunTS4ke8nkZRNrNY+WmEAPNelNcAOxidwbL6cU489yEU E9/w== X-Gm-Message-State: AOAM5328x/+2ZbipEmOWXlBym7/DmcsT2Z/vuGK84LNjDc13+jP/FJ4U zwl4WhRbaWzliJWRyKwh7k0= X-Google-Smtp-Source: ABdhPJy6lUh10rPp+OH0owSgISkZsQ20JiE0pOOdWuL1UJEgbyn4cRpY1TbWhitvL5D/ZxhWZ2UWgg== X-Received: by 2002:a5d:690d:: with SMTP id t13mr64061499wru.410.1609417725874; Thu, 31 Dec 2020 04:28:45 -0800 (PST) From: Redha Gouicem Cc: Redha Gouicem , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Juergen Gross , Vincenzo Frascino , Michael Kelley , Paolo Bonzini , Krzysztof Piecuch , Martin Molnar , linux-kernel@vger.kernel.org Subject: [PATCH] x86/tsc: export tsc_khz to sysfs Date: Thu, 31 Dec 2020 13:28:18 +0100 Message-Id: <20201231122819.13980-1-redha.gouicem@gmail.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Export the frequency of the tsc clock to user space. This is particularly useful for benchmarking purposes because it allows to convert tsc cycles into time. The value is available at: /sys/devices/system/cpu/tsc_khz Signed-off-by: Redha Gouicem --- arch/x86/kernel/tsc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 49d925043171..6ea991516d08 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -14,6 +14,7 @@ #include #include #include +#include =20 #include #include @@ -1412,6 +1413,15 @@ static int __init init_tsc_clocksource(void) */ device_initcall(init_tsc_clocksource); =20 +/* sysfs file to export tsc_khz */ +static ssize_t tsc_khz_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + return sprintf(buf, "%u\n", tsc_khz); +} + +struct kobj_attribute tsc_khz_attr =3D __ATTR_RO(tsc_khz); + static bool __init determine_cpu_tsc_frequencies(bool early) { /* Make sure that cpu and tsc are not already calibrated */ @@ -1530,6 +1540,19 @@ void __init tsc_init(void) detect_art(); } =20 +static int __init tsc_khz_sysfs_init(void) +{ + int ret =3D sysfs_create_file(&cpu_subsys.dev_root->kobj, &tsc_khz_attr.a= ttr); + + if (!ret) + pr_info("tsc_khz exported in sysfs\n"); + else + pr_warn("tsc_khz failed to be exported in sysfs\n"); + + return ret; +} +late_initcall(tsc_khz_sysfs_init); + #ifdef CONFIG_SMP /* * If we have a constant TSC and are using the TSC for the delay loop, --=20 2.30.0