[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for 4-21 v4] xen/riscv: identify specific ISA supported by cpu
On 07.02.2025 21:00, Oleksii Kurochko wrote: > > On 2/7/25 5:47 PM, Oleksii Kurochko wrote: >> >> >> On 2/4/25 12:47 PM, Jan Beulich wrote: >>>> +const struct riscv_isa_ext_data __initconst riscv_isa_ext[] = { >>>> + RISCV_ISA_EXT_DATA(i, RISCV_ISA_EXT_i), >>>> + RISCV_ISA_EXT_DATA(m, RISCV_ISA_EXT_m), >>>> + RISCV_ISA_EXT_DATA(a, RISCV_ISA_EXT_a), >>>> + RISCV_ISA_EXT_DATA(f, RISCV_ISA_EXT_f), >>>> + RISCV_ISA_EXT_DATA(d, RISCV_ISA_EXT_d), >>>> + RISCV_ISA_EXT_DATA(q, RISCV_ISA_EXT_q), >>>> + RISCV_ISA_EXT_DATA(h, RISCV_ISA_EXT_h), >>>> + RISCV_ISA_EXT_DATA(zicntr, RISCV_ISA_EXT_ZICNTR), >>>> + RISCV_ISA_EXT_DATA(zicsr, RISCV_ISA_EXT_ZICSR), >>>> + RISCV_ISA_EXT_DATA(zifencei, RISCV_ISA_EXT_ZIFENCEI), >>>> + RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE), >>>> + RISCV_ISA_EXT_DATA(zihpm, RISCV_ISA_EXT_ZIHPM), >>>> + RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB), >>>> + RISCV_ISA_EXT_DATA(smaia, RISCV_ISA_EXT_SMAIA), >>>> + RISCV_ISA_EXT_DATA(ssaia, RISCV_ISA_EXT_SSAIA), >>>> +}; >>>> + >>>> +static const struct riscv_isa_ext_data __initconst required_extensions[] >>>> = { >>>> + RISCV_ISA_EXT_DATA(zicsr, RISCV_ISA_EXT_ZICSR), >>>> + RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE), >>>> + RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB), >>>> +}; >>> Coming back to my earlier question regarding the B (pseudo-)extension: >>> Since riscv_isa_ext[] only contains Zbb, is it precluded anywhere in >>> the spec that DT may mention just B when all of its constituents are >>> supported? >>> >>> Which gets me on to G, which is somewhat similar in nature to B. We >>> require G when RISCV_ISA_RV64G=y, yet required_extensions[] doesn't >>> name it or its constituents. Much like we require C when RISCV_ISA_C=y, >>> yet it's not in the table. >> Another one thing I am thinking about if we really need a separate >> required_extensions[] array. >> >> We can leave only riscv_isa_ext[] and then just do a check: >> bitmap_weight(riscv_isa, ...) == ARRAY_SIZE(riscv_isa_ext) > > It seems like we still need to have two arrays: one for what Xen is supported > (and could be passed to guest > by riscv,isa) and one for what is required for boot. Well, you can get away with just one array, but only if adding a boolean to struct riscv_isa_ext_data (indicating whether an extension is required). I'm not sure though how well that would work overall. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |