[PATCH v9 1/7] firmware: smccc: Add an Arm SMCCC bus
Sudeep Holla
sudeep.holla at kernel.org
Thu Sep 3 09:18:16 PDT 2026
On Thu, Sep 03, 2026 at 12:46:26PM -0300, Jason Gunthorpe wrote:
> On Thu, Sep 03, 2026 at 08:05:40PM +0530, Aneesh Kumar K.V wrote:
> > Jason Gunthorpe <jgg at nvidia.com> writes:
> >
> > > On Thu, Sep 03, 2026 at 02:22:51PM +0530, Aneesh Kumar K.V wrote:
> > >
> > >> I have updated the bus to match devices using func_id.
> > >
> > > Did you have any thoughts on how to handle ARM's versioning scheme
> > > too?
> > >
> > > I'm not sure what the rules are but it seems like if the major changes
> > > then the API is incompatible? So shouldn't every driver advertise a
> > > supported major, and the major be in the modalias and checked by match
> > > too?
> >
> > I expect a single driver to handle the RSI features and determine the
> > version range it supports. I don't think we want multiple drivers, each
> > handling a different major version of the RMM release.
>
> I thought the plan was we are only going to support RMM V2 and there
> will, never, ever be a V3. :) So RMM is maybe a bit different..
>
> > Given that, wouldn't it be sufficient for the driver's probe routine
> > to check the supported version range and return -ENODEV if it is
> > unsupported?
>
> It is sufficient, but is that what you want? Every driver needs to
> manually check these version things, do they? Do we want this
> duplication?
Oh yes, we need this whatever you term as "duplication". I would argue
against terming it as duplications as if you look at the various SMCCC
based specification, we have zero consistency in how the VERSION command
is expected to work. The only consistency is returning
SMCCC_RET_NOT_SUPPORTED if not supported and that's the max a generic
SMCCC bus code can check. All other details need to be deferred to the
individual SMCCC drivers.
> Missing a check means FW upgrades might become Linux breaking.
>
Are you referring to the SMCCC bus code or RSI in particular above. I don't
see any issue with SMCCC bus code check as that is the least we can do and
must not change with future versions of the firmware as well.
If it is specific to RSI and the driver supports v2.0 and the firmware
is upgraded to v3.0, it really depends on what the v3.0 firmware returns
in these 2 values:
Lower RsiInterfaceVersion : Lower supported interface revision
Higher RsiInterfaceVersion : Higher supported interface revision
If lower is also set at v3.0, then I would argue it is firmware upgrade
issue expecting old kernel with old RSI version supported to work. If
that returns v2.0, the driver must work IIUC. Aneesh, hopefully I got this
right ?
--
Regards,
Sudeep
More information about the linux-arm-kernel
mailing list