On Tue, Nov 07, 2023 at 11:55:39AM +0100, Clément Léger wrote: > From: Evan Green <evan@xxxxxxxxxxxx> > > The Scalar Crypto specification defines Zk as a shorthand for the > Zkn, Zkr and Zkt extensions. The same follows for both Zkn, Zks and Zbk, > which are all shorthands for various other extensions. The detailed > breakdown can be found in their dt-binding entries. > > Since Zkn also implies the Zbkb, Zbkc and Zbkx extensions, simply passing > "zk" through a DT should enable all of Zbkb, Zbkc, Zbkx, Zkn, Zkr and Zkt. > For example, setting the "riscv,isa" DT property to "rv64imafdc_zk" > should generate the following cpuinfo output: > "rv64imafdc_zicntr_zicsr_zifencei_zihpm_zbkb_zbkc_zbkx_zknd_zkne_zknh_zkr_zkt" > > riscv_isa_ext_data grows a pair of new members, to permit setting the > relevant bits for "bundled" extensions, both while parsing the ISA string > and the new dedicated extension properties. > > Co-developed-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx> > Signed-off-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx> > Signed-off-by: Evan Green <evan@xxxxxxxxxxxx> > Signed-off-by: Clément Léger <cleger@xxxxxxxxxxxx> > +static void __init match_isa_ext(const struct riscv_isa_ext_data *ext, const char *name, > + const char *name_end, struct riscv_isainfo *isainfo) > +{ > + if ((name_end - name == strlen(ext->name)) && > + !strncasecmp(name, ext->name, name_end - name)) { > + /* > + * If this is a bundle, enable all the ISA extensions that > + * comprise the bundle. > + */ > + if (ext->subset_ext_size) { > + for (int i = 0; i < ext->subset_ext_size; i++) { > + if (riscv_isa_extension_check(ext->subset_ext_ids[i])) > + set_bit(ext->subset_ext_ids[i], isainfo->isa); > + } > + } > + > + if (riscv_isa_extension_check(ext->id)) > + set_bit(ext->id, isainfo->isa); Could you add a comment here please about how this is safe to do for the bundle extensions? Otherwise, Acked-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx> Thanks, Conor.
Attachment:
signature.asc
Description: PGP signature