Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp792005pxk; Mon, 31 Aug 2020 00:35:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyc7KKVpAiYBZZ+6E5VF3oGzRJ5ltEx6RXGtj53g5r3BVu8BcKGU5A9txxRJIMdAL4fOHxl X-Received: by 2002:a17:907:2078:: with SMTP id qp24mr10889481ejb.286.1598859306602; Mon, 31 Aug 2020 00:35:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598859306; cv=none; d=google.com; s=arc-20160816; b=mkWRjudnvxHc0SFGd8A6VEGOW8WCC+n5q3LxqXJNAyQBk19J9XjPl2rKBEztY1GM21 qyGb9B/2BaR109GidOTC4DBfu3Rvj5zE3JUYaTHF3S8PVUxI17wjix3M/aG0t4yhkBAE 3QvZyRAR1rrsKcZjLM9QGF5c4TaOMnQoZ+ujTiPvBGmzoiKkzTgSkS3Mt6R+s4Id4K+3 lnAqbjXzr39GxMvlErcAbN2m9j+uQ9ieZindMa0+skin6nx4dRIMvqjw6pHc3DAdNxXI pHVtfso15X7Bs0nKPutxsDIw/YSc/tuQnbBP/+KYPxhdijLyvXN+y1Dk/wNqk/KCxGr9 1HYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=hZSVVlzCnMPoR4b5u5OMpuptMjmKI3KwnmPpyqImBpQ=; b=v1q7EdUaRt/fdt5HeFiayNLPpWkxDN1KoftfAajh95++fNl/E8//ARb07whdqj8jg3 JNfE+Gtx94hStht+KFUnT2zcGkpTkR+jqBlU0cJ6H6cr2Chn8zHB37wj5itnQTZ4pskJ JkpGlhbUsO/wEEprxkk0OXGY79Br/xBMtdVgjmo/dBfavxB9iDSlCKeVx6CPeMbEPuE7 F/7uAT/GD2QWvAVU75sdbbVAeLL6WfMCc5mUUVBjhwSBPIvYI/ngy3M1Rx/PCrVlmIZ1 lq++3mZrAQnzd5C+6OWPmgdVSaWh4JZE2S2KNsoUKjbjMXyG/tXCuLjur9Iq/qj42GfA +ptw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=ImDaDzcW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k25si4723915edv.381.2020.08.31.00.34.44; Mon, 31 Aug 2020 00:35:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=ImDaDzcW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727111AbgHaHd7 (ORCPT + 99 others); Mon, 31 Aug 2020 03:33:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725937AbgHaHdy (ORCPT ); Mon, 31 Aug 2020 03:33:54 -0400 Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1100DC061573 for ; Mon, 31 Aug 2020 00:33:54 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id y6so2626283plt.3 for ; Mon, 31 Aug 2020 00:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=hZSVVlzCnMPoR4b5u5OMpuptMjmKI3KwnmPpyqImBpQ=; b=ImDaDzcWK/4IInTiJ2oAvPHYIu0YQryEKk/fy8tssE3Ltr6/P/ijFD4XLwmfExahz5 CN5fnhgN0m5B8+MH0JbreZf6BD9Yg+H3nlcevR8kNTQr6KzmYYZ7dQ8lv1ZwRM6lS71q mahzsLLg2VX8y6ldWR3y1s4yARiNNr+ShIv0rDlrc7rW5pGN5Yq+v7VXGEgNHfasB5py HVDpl7am9OetRZL/psTh9wSMTeQAlNuSPDJ4rxteMNsDPKk6HbmVsaLgWJ/GiwLpo+ze aIYmdAikpsFMtYz1EWGjspUybSbavWuO0aiNUtM5e2IOH8D56JhwAYqX7HDJqqTQPD7r OQfg== 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=hZSVVlzCnMPoR4b5u5OMpuptMjmKI3KwnmPpyqImBpQ=; b=CIoavj+108zYWnFhV3a7FTa8kVwc79yce6cOwe3wxeHVzWu1GE9idQBJGTfudEIRNr RffpKdTKRBEJXKMDVIqExsb/89AvKLLM8erezbTkV1pF/S+1lRTSQWLIkVREHzuCOK7F ombkofSbGc+2MEjKTcr2Vj7NiTU9/Dwf+0aydCSFVq6XnnnaiRx+2wUxXP1Suwj2tzFF T+jM9BAQbWbveQ6P4S8DOr/NlB5DGOimkiH3wT+/lntOMjOKwqD/TtSNN8n9uRKJD0IK x1ZfCNvSp0Xx9o9W937RxVBaOW7irosjaWBjxDjrgU92yXd2UkbZwoYqf23+UIajrSpj 76ew== X-Gm-Message-State: AOAM532MRD2mjDQe16po5J9e00fNYAeda9gHcXtCr+28cmEmjjcQoySU KMol0HkJ+DhMSc7L82CoBOMUvbRMipYL7w== X-Received: by 2002:a17:90b:1098:: with SMTP id gj24mr235879pjb.55.1598859233588; Mon, 31 Aug 2020 00:33:53 -0700 (PDT) Received: from hsinchu02.internal.sifive.com (114-34-229-221.HINET-IP.hinet.net. [114.34.229.221]) by smtp.gmail.com with ESMTPSA id m3sm6065979pjn.28.2020.08.31.00.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 00:33:53 -0700 (PDT) From: Zong Li To: palmer@dabbelt.com, paul.walmsley@sifive.com, david.abdurachmanov@sifive.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Zong Li Subject: [PATCH v4 0/3] Get cache information from userland Date: Mon, 31 Aug 2020 15:33:47 +0800 Message-Id: X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are no standard CSR registers to provide cache information, the way for RISC-V is to get this information from DT. Currently, AT_L1I_X, AT_L1D_X and AT_L2_X are present in glibc header, and sysconf syscall could use them to get information of cache through AUX vector. We exploit 'struct cacheinfo' to obtain the information of cache, then we don't need additional variable or data structure to record it. We also need some works in glibc, but we have to support the function in kernel first by rule of glibc, then post the patch to glibc site. The result of 'getconf -a' as follows: LEVEL1_ICACHE_SIZE 32768 LEVEL1_ICACHE_ASSOC 8 LEVEL1_ICACHE_LINESIZE 64 LEVEL1_DCACHE_SIZE 32768 LEVEL1_DCACHE_ASSOC 8 LEVEL1_DCACHE_LINESIZE 64 LEVEL2_CACHE_SIZE 2097152 LEVEL2_CACHE_ASSOC 32 LEVEL2_CACHE_LINESIZE 64 Changed in v4: - Check null pointer before use. - Re-write the code for readability. - Rebase source to v5.9-rc3. Changed in v3: - Fix sparse warning: Use NULL instead of integer 0. Changed in v2: - Add error checking for parsing cache properties. Zong Li (3): riscv: Set more data to cacheinfo riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO riscv: Add cache information in AUX vector arch/riscv/include/asm/cacheinfo.h | 5 ++ arch/riscv/include/asm/elf.h | 13 ++++ arch/riscv/include/uapi/asm/auxvec.h | 24 +++++++ arch/riscv/kernel/cacheinfo.c | 98 +++++++++++++++++++++++----- 4 files changed, 124 insertions(+), 16 deletions(-) -- 2.28.0