From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F267C27C7C for ; Fri, 20 Jan 2023 14:20:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A9D16B00A3; Fri, 20 Jan 2023 09:20:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 05B156B0095; Fri, 20 Jan 2023 09:20:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D9FB76B00A4; Fri, 20 Jan 2023 09:20:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id AB9D86B0095 for ; Fri, 20 Jan 2023 09:20:51 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 460D81A0E9D for ; Fri, 20 Jan 2023 14:20:51 +0000 (UTC) X-FDA: 80375388702.14.AAE662C Received: from fx306.security-mail.net (smtpout30.security-mail.net [85.31.212.36]) by imf28.hostedemail.com (Postfix) with ESMTP id BEFD1C0020 for ; Fri, 20 Jan 2023 14:20:48 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=fail ("body hash did not verify") header.d=kalray.eu header.s=32AE1B44-9502-11E5-BA35-3734643DEF29 header.b=JKNRyzm7; dmarc=pass (policy=quarantine) header.from=kalray.eu; spf=pass (imf28.hostedemail.com: domain of ysionneau@kalray.eu designates 85.31.212.36 as permitted sender) smtp.mailfrom=ysionneau@kalray.eu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674224448; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=WLy/ZFS5q73VzWXYUO3nIsbUBysLxpyRDreweVEMpbE=; b=IL4LSRaEsjXb893sOw0/S7460P588Z0plAHABenflvSZWXpMCgFhzro/9+C0IUqdLJUZCT DYWjGOBX3oqkL4y0z+/9fJRAQDvsWfmvkZP8vdMUs3esGJ8nQRU9kiyuuoAJCVy17zx0cd qotPjeQpo+daehiMtGC4UpV6suy5RGA= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=fail ("body hash did not verify") header.d=kalray.eu header.s=32AE1B44-9502-11E5-BA35-3734643DEF29 header.b=JKNRyzm7; dmarc=pass (policy=quarantine) header.from=kalray.eu; spf=pass (imf28.hostedemail.com: domain of ysionneau@kalray.eu designates 85.31.212.36 as permitted sender) smtp.mailfrom=ysionneau@kalray.eu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674224448; a=rsa-sha256; cv=none; b=q/Qld7WQzvFRr+wn635GCtm0cCQpDeiZ98mjE1ZkUdEX5MGwUD68ClOuBuoLLQvT2oVyL4 vjVfJdgdzoBhwAnP7v8qA+D1yVpuPPU1kL5uivaoyK9dYmNxG52v4mGkyOFqSPtU2tMUHJ JdBpzTC/OaqHHEebi4tifMrEk/b3Qq4= Received: from localhost (fx306.security-mail.net [127.0.0.1]) by fx306.security-mail.net (Postfix) with ESMTP id 2A4B035CFA0 for ; Fri, 20 Jan 2023 15:20:47 +0100 (CET) Received: from fx306 (fx306.security-mail.net [127.0.0.1]) by fx306.security-mail.net (Postfix) with ESMTP id 74EBE35CF18; Fri, 20 Jan 2023 15:20:46 +0100 (CET) Received: from zimbra2.kalray.eu (unknown [217.181.231.53]) by fx306.security-mail.net (Postfix) with ESMTPS id 3B41B35CD23; Fri, 20 Jan 2023 15:20:45 +0100 (CET) Received: from zimbra2.kalray.eu (localhost [127.0.0.1]) by zimbra2.kalray.eu (Postfix) with ESMTPS id 841C727E0458; Fri, 20 Jan 2023 15:10:38 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by zimbra2.kalray.eu (Postfix) with ESMTP id 67DE527E0474; Fri, 20 Jan 2023 15:10:38 +0100 (CET) Received: from zimbra2.kalray.eu ([127.0.0.1]) by localhost (zimbra2.kalray.eu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Kpdh9d1egf6R; Fri, 20 Jan 2023 15:10:38 +0100 (CET) Received: from junon.lin.mbt.kalray.eu (unknown [192.168.37.161]) by zimbra2.kalray.eu (Postfix) with ESMTPSA id DE5A427E0458; Fri, 20 Jan 2023 15:10:37 +0100 (CET) X-Virus-Scanned: E-securemail Secumail-id: <883a.63caa33d.39b9a.0> DKIM-Filter: OpenDKIM Filter v2.10.3 zimbra2.kalray.eu 67DE527E0474 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kalray.eu; s=32AE1B44-9502-11E5-BA35-3734643DEF29; t=1674223838; bh=r0jAYvZMgDHNmtYPIBemAGb6cgybEgHcmW3NkzN/0Bc=; h=From:To:Date:Message-Id:MIME-Version; b=JKNRyzm7+8sxXJUhLzONaUXzidzmY7QHybfABV02MMeEolEK1l0P/zyCPivr0qi3X cMk6eiWHc8wcM/3mwaZc92PFr6HmcHLhtp6SGUL9n/464kv1zJak07VGMurb1BFNSB JEfwZjhbgtlfk55C9aauCac0b4/oyWiVvpTX7xMY= From: Yann Sionneau To: Arnd Bergmann , Jonathan Corbet , Thomas Gleixner , Marc Zyngier , Rob Herring , Krzysztof Kozlowski , Will Deacon , Peter Zijlstra , Boqun Feng , Mark Rutland , Eric Biederman , Kees Cook , Oleg Nesterov , Ingo Molnar , Waiman Long , "Aneesh Kumar K.V" , Andrew Morton , Nick Piggin , Paul Moore , Eric Paris , Christian Brauner , Paul Walmsley , Palmer Dabbelt , Albert Ou , Jules Maselbas , Yann Sionneau , Guillaume Thouvenin , Clement Leger , Vincent Chardon , Marc =?utf-8?b?UG91bGhpw6hz?= , Julian Vetter , Samuel Jones , Ashley Lesdalons , Thomas Costis , Marius Gligor , Jonathan Borne , Julien Villette , Luc Michel , Louis Morhet , Julien Hascoet , Jean-Christophe Pince , Guillaume Missonnier , Alex Michon , Huacai Chen , WANG Xuerui , Shaokun Zhang , John Garry , Guangbin Huang , Bharat Bhushan , Bibo Mao , Atish Patra , "Jason A. Donenfeld" , Qi Liu , Jiaxun Yang , Catalin Marinas , Mark Brown , Janosch Frank , Alexey Dobriyan Cc: Benjamin Mugnier , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-audit@redhat.com, linux-riscv@lists.infradead.org, bpf@vger.kernel.org Subject: [RFC PATCH v2 29/31] kvx: Add support for cpuinfo Date: Fri, 20 Jan 2023 15:10:00 +0100 Message-ID: <20230120141002.2442-30-ysionneau@kalray.eu> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230120141002.2442-1-ysionneau@kalray.eu> References: <20230120141002.2442-1-ysionneau@kalray.eu> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 X-ALTERMIMEV2_out: done X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: BEFD1C0020 X-Stat-Signature: h1aqbgrs9syubmcfx8i7r66hx6xj8df9 X-HE-Tag: 1674224448-228344 X-HE-Meta: U2FsdGVkX1/vSV7j0iqcO/RzhvWxlGAAACtWatrJypD6x7Qxni9a8jC6LOv2zf2tKhT/iFP1iwnj5ZOSWf/1fQCHzu8Af42jgMqmtQ8pGbSwiD3G2jfZxPZX3NADwblOntArdajLZeEhiU+pWT7ovPya6LDGGPLuUHES/7AkbwAjFqtOKy+3c0fdV0IICOggsFYPeIpPpJ9Nh2bt3El0v3O9fcPl8bqq2irvLrk9JOVIsx188ldYG/MY6PiQltnJivV9nhVKq/I70XGHlQyp5nGPj5SGenY6lJNgSkBhbZGjepfXCdw69UPFpqCblB52BCvlU9jiZNt2T2up9fRuSwI7VxPA0zzUyTJqflbyvgTm+QvO280ia6/hXluE7DGJnUO72jtkHf6pxb8T4fmmMHdaJi3x71Ah+7zRP/+V7F8pab5DMtN9e0mqFhxb8F1iG/tnfXzdA7McbOq7OhI95cW5v1gZvl/5W4SbcReyC7UKa94+j98U1dNJJ5LBbAgEmXz016+P87Eyjjif7BdY8+Z/SVrfO1sf9UwiMo7zSHSVzQend0G8dlovBHAvNShrXs9YYYM9wxDh2YgbXwH2XyA726OvXAFNVbODozIE5g5uDZanlmY5pMJabkWZg1Ut0V4DmmSTVxp8H6W9j+5LaamuxjZ/PQ3wCoDhEKdTQm6EXreMCYRuRlJ7L20PbeI6WaZKfOoRy2so0wnIDGuRSGO6Jd/CqHLQBarz19cssLJlpl0+DXz+GlN+aH4mxN0xKfLyVoCaAQuS8gQo8Di6XWcrE8D6aEmXE9+lYCP0zBa+PWrg4Uugre1eQSOVvIP6uQLvM4GDZttNwzpmBsw1mXJTEBzL5fDKo69+PKI1bxnScnpJvmPAfKYq/tfP0bF906CfDo/X0Q2wSazYB0BmHxVptKlXTj0IoVB4nqUNm6KihfRypzn0gRt2wBDKAcWaGwUF+m0J22S02ygcGo7 bWLTwgdy khJpOnYJ3LgVQUdE3iwagXW2besBcy7MmrfsiONI5X8kbFVleneEh1z6wmYxa8xlisD7PBUEq42QcbZ2QmBNad/eyYfLdiVxfILRPmmWp1Xj05dP6aRTD7Jai4T+Yel6aYtoBOdu5ibpeLkFVXPwV8cTQiKVKyU+MzZIVzC6fLkIxtAH/qDkppIMWYbQYfjbEvGIfUQRySLH+/lla5wlyS4aCeAhXNiGDyuhrpD77RIfhzY5sgDQFwKlPlt56zkU7XuDLN9sA4wFYbUJHf/25bBEiouUybgrFFowMY72EnXuTzsXBlvUhwmPVC7Cjq/7QWRifVhqpNzfwiOTqfVstY6UHB+G14T1w8Qq4n9fuLjag/kdRH19VYTf+5Wpzc+gkZFq5U2ZPwabjRVCN6lGAdYKzDZdnKj1W1V72NFAXcZaKVsalgnmzh61xPdAy0a4JPWizdnfGZWSVy1NDQr7JaDfwxtiAQgEF4VGG2w58DVooq4ltLTXrcjfDxdEdlZwVJ5+1yd0SsVdfBbvsgVZxPxKyj1qM3Q7LxfX/YGDDfHpMvVm0y4NhJ4qcB8E8qia1+9xGchQKf3OtvIU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Add support for cpuinfo on kvx arch. Co-developed-by: Clement Leger Signed-off-by: Clement Leger Co-developed-by: Guillaume Thouvenin Signed-off-by: Guillaume Thouvenin Co-developed-by: Julian Vetter Signed-off-by: Julian Vetter Signed-off-by: Jules Maselbas Signed-off-by: Yann Sionneau --- Notes: V1 -> V2: no changes arch/kvx/kernel/cpuinfo.c | 96 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 arch/kvx/kernel/cpuinfo.c diff --git a/arch/kvx/kernel/cpuinfo.c b/arch/kvx/kernel/cpuinfo.c new file mode 100644 index 000000000000..f44c46c1e4ba --- /dev/null +++ b/arch/kvx/kernel/cpuinfo.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2017-2023 Kalray Inc. + * Author(s): Clement Leger + * Guillaume Thouvenin + */ + +#include +#include +#include +#include +#include + +unsigned long elf_hwcap __read_mostly; + +static int show_cpuinfo(struct seq_file *m, void *v) +{ + int cpu_num = *(unsigned int *)v; + struct cpuinfo_kvx *n = per_cpu_ptr(&cpu_info, cpu_num); + + seq_printf(m, "processor\t: %d\nvendor_id\t: Kalray\n", cpu_num); + + seq_printf(m, + "copro enabled\t: %s\n" + "arch revision\t: %d\n" + "uarch revision\t: %d\n", + n->copro_enable ? "yes" : "no", + n->arch_rev, + n->uarch_rev); + + seq_printf(m, + "bogomips\t: %lu.%02lu\n" + "cpu MHz\t\t: %llu.%03llu\n\n", + (loops_per_jiffy * HZ) / 500000, + ((loops_per_jiffy * HZ) / 5000) % 100, + n->freq / 1000000, (n->freq / 10000) % 100); + + return 0; +} + +static void *c_start(struct seq_file *m, loff_t *pos) +{ + if (*pos == 0) + *pos = cpumask_first(cpu_online_mask); + if (*pos >= num_online_cpus()) + return NULL; + + return pos; +} + +static void *c_next(struct seq_file *m, void *v, loff_t *pos) +{ + *pos = cpumask_next(*pos, cpu_online_mask); + + return c_start(m, pos); +} + +static void c_stop(struct seq_file *m, void *v) +{ +} + +const struct seq_operations cpuinfo_op = { + .start = c_start, + .next = c_next, + .stop = c_stop, + .show = show_cpuinfo, +}; + +static int __init setup_cpuinfo(void) +{ + int cpu; + struct clk *clk; + unsigned long cpu_freq = 1000000000; + struct device_node *node = of_get_cpu_node(0, NULL); + + clk = of_clk_get(node, 0); + if (IS_ERR(clk)) { + printk(KERN_WARNING + "Device tree missing CPU 'clock' parameter. Assuming frequency is 1GHZ"); + goto setup_cpu_freq; + } + + cpu_freq = clk_get_rate(clk); + + clk_put(clk); + +setup_cpu_freq: + of_node_put(node); + + for_each_possible_cpu(cpu) + per_cpu_ptr(&cpu_info, cpu)->freq = cpu_freq; + + return 0; +} + +late_initcall(setup_cpuinfo); -- 2.37.2