
On Tue, May 30, 2023 at 03:12:12PM +0100, Conor Dooley wrote:
On Thu, May 18, 2023 at 10:42:34PM +0100, Conor Dooley wrote:
On Thu, May 18, 2023 at 02:30:53PM -0400, Sean Anderson wrote:
Why not just have something like
mycpu { ... riscv,isa { i; m; a; zicsr; ...
I prefer property names be globally unique. The tools are geared towards that too. That's largely a symptom of having 0 type information in the DT.
For example if you had an extension called 'reg', it would be a problem.
}; };
Naming of the node aside (perhaps that could be riscv,isa-extensions) there's not something hitting me immediately as to why that is a no-no. If the size is a concern, this would certainly be more efficient & not like the probing would be anything other than trivial more difficult what I have in my proposal.
Having started messing around with this, one of the main advantages, to me, of this approach is proper validation. cpus.yaml has additionalProperties: true in it, which would have had to be sorted out, or worked around, but creating a child-node with the properties in it allows setting additionalProperties: false.
That's an issue on my radar to fix. I started that for the Arm cpus.yaml a while back. Sadly it involves adding all the misc properties vendors added. It's not a lot, but still better to get in front of that for Risc-V.
Rob's AFK at the moment, and I was hoping that he would take a look at the idea, so I won't respin til he is back, but I'll give this a go in the interim.
Mechanically, the conversion of the patch isn't difficult, but I'll still wait for Rob to come back before sending a v2. But that v2 will more than likely implement your suggestion.
I haven't read the whole thread, but the initial proposal looks okay to me.
Another way you could do this is a list of strings:
riscv,isa-ext = "i", "m", "zicsr";
I think we have a helper to test is a string in the list.
Rob