Re: [PATCH RFC 13/20] Documentation: ctlv: Describe how to write a family
From: Jason Gunthorpe
Date: Wed Oct 21 2026 - 12:55:27 EST
On Wed, Oct 21, 2026 at 06:24:12PM +0200, Jiri Pirko wrote:
> >I haven't got that far in the patches, but I think it would be good to
> >spend more time here explaining the fundamentals of how the extension
> >mechanism is expected to be used..
> >
> >It looks like RDMA to me where you have some 'common' and some
> >'driver' parts but at this point in the docs it isn't clear how that
> >is reached. Like does each driver gets its own family? What is a
>
> Depends on the consumer/subsystem. But esentially yes. That is what I'm
> doing for "attestation". This patchset introduces ctlv-attestation-tdx.
> Next we will have ctlv-attestation-tpm, ctlv-attestation-firme,
> ctlv-attestation-armcca ctlv-attestation-spdm and others.
Hmm one of the things iommufd does is to have several different
drivers active at once within the same FD. There is only one char dev
for the whole system and the VMM would operate all the hardware
through it.
So in that model individual calls are marked with the driver's
identity when any driver specific data is passed.
I guess that doesn't quite work in this model with multiple-families?
But it does work well here, and matches what rdma and fwctl did as
well. So maybe iommufd is weird.
> >> >What about userspace, it "knows" somehow what to do?
> >>
> >> Userspace sees the family chain. It also has ability to do introspection
> >> seeing right away which op supports with attrs in which nests.
> >
> >I was hoping the introspection would not be essential to use the
> >interface..
>
> Depends on the user/subsystem. Either families_dump op could be used of
> udev uvevents that also carry family inheritance chain:
> CTLV_FAMILY=ctlv-attestation-tdx
> CTLV_COMPATIBLE_0=ctlv
> CTLV_COMPATIBLE_1=ctlv-attestation
> CTLV_COMPATIBLE_2=ctlv-attestation-tdx
> CTLV_COMPATIBLE_N=3
I wouldn't try to link it to udev either, by the time some userspace
uses the cdev the udev information is gone, and may be unreachable
from inside a container or similar..
So there should probably be documentation in the subsystem how
userspace should learn the driver family via introspection.
Jason