RISC-V: Minimal parser for "riscv, isa" strings
authorTsukasa OI <research_trasio@irq.a4lg.com>
Sat, 12 Feb 2022 06:30:00 +0000 (15:30 +0900)
committerminda.chen <minda.chen@starfivetech.com>
Tue, 3 Jan 2023 06:26:17 +0000 (14:26 +0800)
commitd20bf0520e919beab998742b86509af01e912551
treef3b3cca00bd1ca6d109c5506b3287a8e3738cc5c
parentb6bbdedcbaad78c1fcdb5c3f49a5c110cc3a33f8
RISC-V: Minimal parser for "riscv, isa" strings

Current hart ISA ("riscv,isa") parser don't correctly parse:

1. Multi-letter extensions
2. Version numbers

All ISA extensions ratified recently has multi-letter extensions
(except 'H'). The current "riscv,isa" parser that is easily confused
by multi-letter extensions and "p" in version numbers can be a huge
problem for adding new extensions through the device tree.

Leaving it would create incompatible hacks and would make "riscv,isa"
value unreliable.

This commit implements minimal parser for "riscv,isa" strings.  With this,
we can safely ignore multi-letter extensions and version numbers.

[Improved commit text and fixed a bug around 's' in base extension]
Signed-off-by: Atish Patra <atishp@rivosinc.com>
[Fixed workaround for QEMU]
Signed-off-by: Tsukasa OI <research_trasio@irq.a4lg.com>
Tested-by: Heiko Stuebner <heiko@sntech.de>
arch/riscv/kernel/cpufeature.c