From nobody Tue Feb 10 01:19:47 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B19AD23D7DB for ; Fri, 6 Feb 2026 00:24:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770337452; cv=none; b=F7b4Jn72A/H/MPOdHCTFE0cHbLnoHNpaK4eoW9yB/4ToGH5aqcCouuOVicBX0VNuX9RHAZ6GbQsoCb3cbe/8239ajdeABSD63eP5pw5qJXbC1tpXvGkPrHPoFq5BnHlRgjKYWTAv6qPjb/uQjXhxXqWkxRA8D/Qd87j0GwjTRIQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770337452; c=relaxed/simple; bh=tvslWp6AW+HLVQ5/0iCaQi66QpjpTZnq2ykL7qrBtb0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hNNoUmS+egPQOs2LBTloj7gYNqWs5l8QHURhz0ZfGQkNkvUP2uZMQPaIb3ySttfBejsjl27nTTkONuNzYQDuFSnybbRDM0c1r6H0JosKURjw5Ki81+ExIM7G7PSEoLxcCE9M+SIm7tFquOeiZo7M8zzGUyn/MBa2AHzKQyEfx5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jNXb8H1x; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RqX8XMI0; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jNXb8H1x"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RqX8XMI0" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 615IEJYI571296 for ; Fri, 6 Feb 2026 00:24:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=P8QpParZv1w +CDvvSy5R0lqzNjzdUp8ROHjISVSX81c=; b=jNXb8H1x4NzKu7EsK7MU1kx3NmQ ZfmKekFcKzv/VZ6eD58hfy3HQG+FZcLtgq4D9QYHgM0M3ZvvXaEucr5ixseIKkXw OS0FdeVtmJgQgTlSufhXCeG0CJFA/PE4PdLhbaCpQuVZLGpqU3fLbNz0qIcVhu1h KOb2EZmsD1nEAiDVDCQ3vjyyD+ZgPOzOW/gjK1N32JcbeEyvQa1j4OqSNqQPguIJ E9FQbsbNq24pGTuiIeMBhEZkL/9frzgfHndNaxVCBrSOy9WNneEaNMUAQ95c8yZl M/oNO7NK8F6IM0gGR4vvHpoeIT2ZIYF7MjD4Hzv0tveJx2IVn9S4/e5kDaA== Received: from mail-dy1-f200.google.com (mail-dy1-f200.google.com [74.125.82.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c50a992mv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 00:24:11 +0000 (GMT) Received: by mail-dy1-f200.google.com with SMTP id 5a478bee46e88-2b7eddde359so235517eec.0 for ; Thu, 05 Feb 2026 16:24:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770337450; x=1770942250; 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=P8QpParZv1w+CDvvSy5R0lqzNjzdUp8ROHjISVSX81c=; b=RqX8XMI089i+s28AmbYAEA1CMC64yMVAmQ8fT5mES5hOMG6Gp3s3NwuIX6AtVUswrF /Jhi/jflYa3OmWQV8Ic43zNdpjo7plREe67XAQdoNMcirjeDGrUILXmtE21RxUuGSqqM v/foZZDoZGkRRjpAF087GKlGvPCamOHZrPprqqK7zzQ9isw1Nquw2MWj8ulT55zsW8TY nWZC7y0szVODCksTxCz8xkfHiHVo4jpLSRZHVutsURzbJ1vHpL3hnEJBu4x2iLDi/Z8e 23A6GoXCc603VUvErpJrYjpf2ji3ixDdqdr1YUYocg2onMkZzV3HG9Y/7kBGDv7lFsiy I57g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770337450; x=1770942250; 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=P8QpParZv1w+CDvvSy5R0lqzNjzdUp8ROHjISVSX81c=; b=wMiyFtJ3FohR0Ai7MWfvLPV7qpSXH5kbcCULBdG/qOSo5vh5azO+QSHAKPt4vkZGRr E2iRgD3BsFdhdEt9/1mnZEzn47ioY7K8Y5MsC/0/KjGqKLsCg4gfGHO/aXx42KBPoXew EUTUwcZKN83EHpSrpMwKMeqvaKBQjM9cpSZMzAE3Wht89wCVediit0xTQTYj4dAxcDS3 uGBa+QfmKppzmldCuipF0OWXDma8yHWenqGYxKROnYqSeQ+9iCimUqhW979C5iZExalT VEF4p/8VzJEX0+3GGaB38l6bmbNGHFyFR1JgL4gVA4AfhYom5nkqVBPRN709S7mu2TSH tpmA== X-Gm-Message-State: AOJu0YxrPi5Lix+VwIkGsRy9AfMu/tx3xK4gVtus4EPnZnmNqLd9UveV EU+wijhZcMqBZDCDPIBPs231weOEKoYwnjReSPJyWi7ia6gBv3grmpvMNvGwELiy3ZsvXsRSCpD YTXzB4iGMVm3QVC7vuFa535aNJFH2MT9zyP5EMY+r3OvTwtV3/E6KKWBz+IJtGls2t81JbmGIns g= X-Gm-Gg: AZuq6aJRuISZBZNbExkKNfzsdojSH+vVxQf6GXed42i7GNXjz+5ozMFLuVmXwCgGX4U WU0enFANWew2z/Qf1AJUq+NH0MsdzbaxJqGLqUqVUBCmxpAetsVuAblq1YcbYLuVj/iLBjTBL+G MgAlhkA/+GQdISep5Bt3Z+rJSiqyHxzfZKjLpnog7gjj79mBoCMnNL22DwIEPIuDPgHSbUSKzqW gRCL3PxZgMrH98i5UUhbirb/1Alq9GhX1z2/xSQvzIsCZLctgjoalLskDYTfLIpJCk38USNl5bu ooInjy1BWnCP9jsjIANu0zwyaxfr4mOLAvDL/BCw53EDEakUyz2o2+01R7XdFD2s2lw0uN+4CsC p5mlnaNUdofFltvyi7SM= X-Received: by 2002:a05:7022:418a:b0:11b:d6f2:a6d6 with SMTP id a92af1059eb24-1270400c96cmr524457c88.34.1770337450427; Thu, 05 Feb 2026 16:24:10 -0800 (PST) X-Received: by 2002:a05:7022:418a:b0:11b:d6f2:a6d6 with SMTP id a92af1059eb24-1270400c96cmr524432c88.34.1770337449872; Thu, 05 Feb 2026 16:24:09 -0800 (PST) Received: from localhost ([140.82.166.162]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1270434760fsm743511c88.16.2026.02.05.16.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Feb 2026 16:24:09 -0800 (PST) From: Andrew Jones To: linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, kvm-riscv@lists.infradead.org Cc: Paul Walmsley , Palmer Dabbelt , Anup Patel , =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Conor Dooley , Guodong Xu , Charlie Jenkins , Charlie Jenkins , Samuel Holland Subject: [RFC PATCH v1 10/11] riscv: /proc/cpuinfo: Add rva23 bases to output Date: Thu, 5 Feb 2026 18:23:48 -0600 Message-ID: <20260206002349.96740-11-andrew.jones@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260206002349.96740-1-andrew.jones@oss.qualcomm.com> References: <20260206002349.96740-1-andrew.jones@oss.qualcomm.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 X-Proofpoint-GUID: Kgd_7IB_uA-NuB8rGsspIJrmiSZ0Zq_S X-Proofpoint-ORIG-GUID: Kgd_7IB_uA-NuB8rGsspIJrmiSZ0Zq_S X-Authority-Analysis: v=2.4 cv=e6ALiKp/ c=1 sm=1 tr=0 ts=698534ab cx=c_pps a=PfFC4Oe2JQzmKTvty2cRDw==:117 a=cvcws7F5//HeuvjG1O1erQ==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=Noaj5xvt71MHO7PBPx4A:9 a=6Ab_bkdmUrQuMsNx7PHu:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDAwMSBTYWx0ZWRfX5ffBVSZEdodR Sz07VhgxipZtstU3mt0dwFx7VWiuJmiXTFMLtAw0E3egBQmgOhLn1AII3iPag2RsDuICc8EJs1e Y8d2BvfIHwJTWydRWVdNDrP8BupaqN9podKhgT36O2OzLyCtVmze+8xNWix0UqFSaXr8I0JXpbl Qj1lOh2Gp/eDkjw4RCf4vgmiscUf1EAChnYE9isU+uOT0rJY2vMY4iAEUKIpd8Its7aGhWwsr9w Izqej7UHKlhooF+ZQGSWlmfQyIwKOsuArfF32bH9L9o3xwCnKYn28+iQG2noeKSzgcq4e8Xtp9b OB/p54QiE7d9AQC/evr1dC8qPe6WloHgWdGO5FVTzItciJ01QHw4m2izGLpvjoCV8WOm+av4XZi 0+ZXXtg31hqJnRUuHJDtJc+KdYbE6H1Bq8aVAReWuoHywyfzsuUDboDVuNYFb0gL2MR47koOFnY 5w+o3mBI6Qx2oczTXgg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-05_06,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 suspectscore=0 phishscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060001 Content-Type: text/plain; charset="utf-8" Output the rva23(u|s)64 ISA bases that the ISA extensions provide on new 'isa bases' lines both for the LCD of all harts and per hart, as shown in the example output below when booting qemu with -cpu rva23s64,sv39=3Don,pmp=3Don: processor : 0 hart : 4 isa bases : rv64ima rva23u64 isa : rv64imafdcbvh_zicbom_zicbop_zicboz_ziccamoa_ziccif_ziccls= m_ziccrse_zicntr_zicond_zicsr_zifencei_zihintntl_zihintpause_zihpm_zimop_za= 64rs_zaamo_zalrsc_zawrs_zfa_zfhmin_zca_zcb_zcd_zcmop_zba_zbb_zbs_zkt_zvbb_z= ve32f_zve32x_zve64d_zve64f_zve64x_zvfhmin_zvkb_zvkt_smaia_smnpm_smstateen_s= saia_sscofpmf_ssnpm_sstc_svade_svinval_svnapot_svpbmt mmu : sv39 mvendorid : 0x0 marchid : 0x0 mimpid : 0x0 hart isa bases : rv64ima rva23u64 hart isa : rv64imafdcbvh_zicbom_zicbop_zicboz_ziccamoa_ziccif_ziccls= m_ziccrse_zicntr_zicond_zicsr_zifencei_zihintntl_zihintpause_zihpm_zimop_za= 64rs_zaamo_zalrsc_zawrs_zfa_zfhmin_zca_zcb_zcd_zcmop_zba_zbb_zbs_zkt_zvbb_z= ve32f_zve32x_zve64d_zve64f_zve64x_zvfhmin_zvkb_zvkt_smaia_smnpm_smstateen_s= saia_sscofpmf_ssnpm_sstc_svade_svinval_svnapot_svpbmt Signed-off-by: Andrew Jones --- arch/riscv/include/asm/cpufeature.h | 10 ++++ arch/riscv/kernel/cpu.c | 34 ++++++++++++ arch/riscv/kernel/cpufeature.c | 83 +++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/c= pufeature.h index 62837fa981e8..e750735c5686 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -25,7 +25,15 @@ struct riscv_cpuinfo { unsigned long mimpid; }; =20 +enum { + RISCV_ISA_BASE_IMA, + RISCV_ISA_BASE_RVA23U64, + RISCV_ISA_BASE_RVA23S64, + RISCV_NR_ISA_BASES, +}; + struct riscv_isainfo { + DECLARE_BITMAP(isa_bases, RISCV_NR_ISA_BASES); DECLARE_BITMAP(isa, RISCV_ISA_EXT_MAX); }; =20 @@ -152,4 +160,6 @@ static __always_inline bool riscv_cpu_has_extension_unl= ikely(int cpu, const unsi return __riscv_isa_extension_available(hart_isa[cpu].isa, ext); } =20 +void riscv_set_isa_bases(unsigned long *isa_bases, const unsigned long *is= a_bitmap); + #endif diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index 3dbc8cc557dd..228867d7dc00 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -305,6 +305,34 @@ static void print_mmu(struct seq_file *f) seq_printf(f, "mmu\t\t: %s\n", sv_type); } =20 +static DECLARE_BITMAP(riscv_isa_bases, RISCV_NR_ISA_BASES); + +static const char * const riscv_isa_base_names[] =3D { +#ifdef CONFIG_32BIT + [RISCV_ISA_BASE_IMA] =3D "rv32ima", +#else + [RISCV_ISA_BASE_IMA] =3D "rv64ima", +#endif + [RISCV_ISA_BASE_RVA23U64] =3D "rva23u64", + [RISCV_ISA_BASE_RVA23S64] =3D "rva23s64", +}; + +static void print_isa_bases(struct seq_file *m, + const unsigned long *isa_bases, + const unsigned long *isa) +{ + unsigned int i; + + if (bitmap_empty(isa_bases, RISCV_NR_ISA_BASES)) + riscv_set_isa_bases((unsigned long *)isa_bases, isa); + + for (i =3D 0; i < RISCV_NR_ISA_BASES; i++) { + if (test_bit(i, isa_bases)) + seq_printf(m, " %s", riscv_isa_base_names[i]); + } + seq_puts(m, "\n"); +} + static void *c_start(struct seq_file *m, loff_t *pos) { if (*pos =3D=3D nr_cpu_ids) @@ -336,6 +364,9 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "processor\t: %lu\n", cpu_id); seq_printf(m, "hart\t\t: %lu\n", cpuid_to_hartid_map(cpu_id)); =20 + seq_puts(m, "isa bases\t:"); + print_isa_bases(m, riscv_isa_bases, NULL); + /* * For historical raisins, the isa: line is limited to the lowest common * denominator of extensions supported across all harts. A true list of @@ -360,6 +391,9 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "marchid\t\t: 0x%lx\n", ci->marchid); seq_printf(m, "mimpid\t\t: 0x%lx\n", ci->mimpid); =20 + seq_puts(m, "hart isa bases\t:"); + print_isa_bases(m, hart_isa[cpu_id].isa_bases, hart_isa[cpu_id].isa); + /* * Print the ISA extensions specific to this hart, which may show * additional extensions not present across all harts. diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index b001e78eecf6..07a42545e9e0 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -1262,3 +1262,86 @@ void __init_or_module riscv_cpufeature_patch_func(st= ruct alt_entry *begin, } } #endif + +extern bool riscv_have_user_pmlen_7; + +void riscv_set_isa_bases(unsigned long *bases, const unsigned long *isa_bi= tmap) +{ + const unsigned long *isa =3D isa_bitmap ? isa_bitmap : riscv_isa; + DECLARE_BITMAP(ext_mask, RISCV_ISA_EXT_MAX) =3D { 0 }; + DECLARE_BITMAP(tmp, RISCV_ISA_EXT_MAX); + + /* IMA */ + set_bit(RISCV_ISA_EXT_I, ext_mask); + set_bit(RISCV_ISA_EXT_M, ext_mask); + set_bit(RISCV_ISA_EXT_A, ext_mask); + + if (bitmap_andnot(tmp, ext_mask, isa, RISCV_ISA_EXT_MAX)) + return; + + set_bit(RISCV_ISA_BASE_IMA, bases); + + /* RVA23U64 */ + + /* Zic64b and Supm with PMLEN=3D7 */ + if (riscv_cbom_block_size !=3D 64 || + riscv_cbop_block_size !=3D 64 || + riscv_cboz_block_size !=3D 64 || + !riscv_have_user_pmlen_7) + return; + + set_bit(RISCV_ISA_EXT_F, ext_mask); + set_bit(RISCV_ISA_EXT_D, ext_mask); + set_bit(RISCV_ISA_EXT_C, ext_mask); + set_bit(RISCV_ISA_EXT_B, ext_mask); + set_bit(RISCV_ISA_EXT_ZICSR, ext_mask); + set_bit(RISCV_ISA_EXT_ZICNTR, ext_mask); + set_bit(RISCV_ISA_EXT_ZIHPM, ext_mask); + set_bit(RISCV_ISA_EXT_ZICCIF, ext_mask); + set_bit(RISCV_ISA_EXT_ZICCRSE, ext_mask); + set_bit(RISCV_ISA_EXT_ZICCAMOA, ext_mask); + set_bit(RISCV_ISA_EXT_ZICCLSM, ext_mask); + set_bit(RISCV_ISA_EXT_ZA64RS, ext_mask); + set_bit(RISCV_ISA_EXT_ZIHINTPAUSE, ext_mask); + set_bit(RISCV_ISA_EXT_ZICBOM, ext_mask); + set_bit(RISCV_ISA_EXT_ZICBOP, ext_mask); + set_bit(RISCV_ISA_EXT_ZICBOZ, ext_mask); + set_bit(RISCV_ISA_EXT_ZFHMIN, ext_mask); + set_bit(RISCV_ISA_EXT_ZKT, ext_mask); + set_bit(RISCV_ISA_EXT_V, ext_mask); + set_bit(RISCV_ISA_EXT_ZVFHMIN, ext_mask); + set_bit(RISCV_ISA_EXT_ZVBB, ext_mask); + set_bit(RISCV_ISA_EXT_ZVKT, ext_mask); + set_bit(RISCV_ISA_EXT_ZIHINTNTL, ext_mask); + set_bit(RISCV_ISA_EXT_ZICOND, ext_mask); + set_bit(RISCV_ISA_EXT_ZIMOP, ext_mask); + set_bit(RISCV_ISA_EXT_ZCMOP, ext_mask); + set_bit(RISCV_ISA_EXT_ZCB, ext_mask); + set_bit(RISCV_ISA_EXT_ZFA, ext_mask); + set_bit(RISCV_ISA_EXT_ZAWRS, ext_mask); + set_bit(RISCV_ISA_EXT_SUPM, ext_mask); + + if (bitmap_andnot(tmp, ext_mask, isa, RISCV_ISA_EXT_MAX)) + return; + + set_bit(RISCV_ISA_BASE_RVA23U64, bases); + + /* RVA23S64 */ + set_bit(RISCV_ISA_EXT_ZIFENCEI, ext_mask); + /* TODO: Ss1p13 */ + /* Svbare, Sv39 -- assumed */ + set_bit(RISCV_ISA_EXT_SVADE, ext_mask); + /* TODO: Ssccptr, Sstvecd, Sstvala, Sscounterenw */ + set_bit(RISCV_ISA_EXT_SVPBMT, ext_mask); + set_bit(RISCV_ISA_EXT_SVINVAL, ext_mask); + set_bit(RISCV_ISA_EXT_SVNAPOT, ext_mask); + set_bit(RISCV_ISA_EXT_SSTC, ext_mask); + set_bit(RISCV_ISA_EXT_SSCOFPMF, ext_mask); + set_bit(RISCV_ISA_EXT_SSNPM, ext_mask); + /* TODO: Ssu64xl */ + /* TODO: Sha =3D Ssstateen, Shcounterenw, Shvstvala, Shtvala, Shvstvecd, = Shvsatpa, Shgatpa */ + set_bit(RISCV_ISA_EXT_H, ext_mask); + + if (/*TODO*/ false && !bitmap_andnot(tmp, ext_mask, isa, RISCV_ISA_EXT_MA= X)) + set_bit(RISCV_ISA_BASE_RVA23S64, bases); +} --=20 2.43.0