On Fri, Apr 12, 2024 at 09:40:03PM +0100, Conor Dooley wrote: > On Fri, Apr 12, 2024 at 10:43:02AM -0700, Charlie Jenkins wrote: > > On Fri, Apr 12, 2024 at 12:49:57PM +0100, Conor Dooley wrote: > > > On Thu, Apr 11, 2024 at 09:11:14PM -0700, Charlie Jenkins wrote: > > > > Create vendor variants of the existing extension helpers. If the > > > > existing functions were instead modified to support vendor extensions, a > > > > branch based on the ext value being greater than > > > > RISCV_ISA_VENDOR_EXT_BASE would have to be introduced. This additional > > > > branch would have an unnecessary performance impact. > > > > > > > > Signed-off-by: Charlie Jenkins <charlie@xxxxxxxxxxxx> > > > > > > I've not looked at the "main" patch in the series that adds all of the > > > probing and structures for representing this info yet beyond a cursory > > > glance, but it feels like we're duplicating a bunch of infrastructure > > > here before it is necessary. The IDs are all internal to Linux, so I'd > > > rather we kept everything in the same structure until we have more than > > > a handful of vendor extensions. With this patch (and the theadpmu stuff) > > > we will have three vendor extensions which feels like a drop in the > > > bucket compared to the standard ones. > > > > It is not duplicating infrastructure. If we merge this into the existing > > infrastructure, we would be littering if (ext > RISCV_ISA_VENDOR_EXT_BASE) > > in __riscv_isa_extension_available. This is particularily important > > exactly because we have so few vendor extensions currently so this check > > would be irrelevant in the vast majority of cases. > > That's only because of your implementation. The existing vendor extension > works fine without this littering. That's another thing actually, you > forgot to convert over the user we already have :) Oh right, I will convert them over. The fundemental goal of this patch is to allow a way for vendors to support their own extensions without needing to populate riscv_isa_ext. This is to create separation between vendors so they do not impact each other. xlinuxenvcfg does not fit into this scheme however. This scheme assumes that a hart cannot have multiple vendors which that extension breaks. xlinuxenvcfg is really filling a hole in the standard isa that is applicible to all vendors and does not appear in the device tree so it is okay for that to live outside this scheme. > > > It is also unecessary to push off the refactoring until we have some > > "sufficient" amount of vendor extensions to deem changing the > > infrastructure when I already have the patch available here. This does > > not introduce any extra overhead to existing functions and will be able > > to support vendors into the future. > > Yeah, maybe that's true but this was my gut reaction before reading the > other patch in detail (which I've still yet to do). - Charlie