Re: [MAINTAINERS SUMMIT] Device Passthrough Considered Harmful?

Laurent Pinchart
2024-07-26T12:50:11Z

On Fri, Jul 26, 2024 at 10:04:48AM +0200, Ricardo Ribalda Delgado wrote:
> On Thu, Jul 25, 2024 at 10:07 PM Laurent Pinchart wrote:
> > On Thu, Jul 25, 2024 at 04:43:14PM -0300, Jason Gunthorpe wrote:
> > > On Thu, Jul 25, 2024 at 10:31:25PM +0300, Laurent Pinchart wrote:
> > >
> > > > I don't think those are necessarily relevant examples, as far as device
> > > > pass-through goes. Vendors have many times reverted to proprietary ways,
> > > > and they still do, at least in the areas of the kernel I'm most active
> > > > in. I've seen first hand a large SoC vendor very close to opening a
> > > > significant part of their camera stack and changing their mind at the
> > > > last minute when they heard they could possibly merge their code through
> > > > a different subsystem with a pass-through blank cheque.
> > >
> > > If someone came with a fully open source framework for (say) some
> > > camera,
> >
> > We have such a framework, it's called libcamera :-) Multiple vendors are
> > already collaborating.
> >
> > > with a passthrough kernel driver design, would you reject it
> > > soley because it is passthrough based and you are scared that
> > > something else will use it to do something not open source?
> >
> > It depends what "passthrough kernel driver design" means. If it means
> > accessing the PCI registers directly from userspace, yes. That's what X
> > used to do before KMS, and I'm glad it's now a distant past.
>
> Nobody has suggested giving PCI register access to userspace.

I know you didn't, but as I didn't expect Jason to be familiar with the
camera ISP discussions, I didn't want to make any specific assumption
regarding what he meant by passthrough kernel driver design.

> > If it means a kernel driver that takes the majority of its runtime
> > parameters from a buffer blob assembled by userspace, while controlling
> > clocks, power domains and performing basic validation in kernelspace,
> > then I've already acked multiple drivers with such a design, exactly
> > because they have open-source userspace that doesn't try to keep many
> > device features proprietary and usable by closed-source userspace only.
>
> If that was an option we would not be having this discussion.
>
> Vendors cannot have vendor access in v4l2.
> """
> It is not an option to upstream a driver that has support for
> undocumented closed features. Basically maintainers can't put their
> name on something that contains unverifiable (for them) and unusable
> (by all except the vendor) features.
> """
> https://linuxtv.org/news.php?entry=2022-11-14-1.hverkuil

What is not an option exactly in my description above ? We have multiple
V4L2 drivers for ISPs. They receive ISP parameters from userspace
through a data buffer. It's not allowed to be opaque, but it doesn't
prevent vendor closed-source userspace implementations with additional
*camera* features, as long as the *hardware* features are available to
everybody.

> > > I wouldn't agree with that position, I think denying users useful open
> > > source solutions out of fear is not what Linux should be doing.

--
Regards,

Laurent Pinchart