[PATCH v4 1/7] accel/ivpu: Introduce a new DRM driver for Intel VPU
Jeffrey Hugo
quic_jhugo at quicinc.com
Thu Jan 5 16:25:32 UTC 2023
On 1/5/2023 5:57 AM, Daniel Vetter wrote:
> On Thu, Dec 08, 2022 at 12:07:27PM +0100, Jacek Lawrynowicz wrote:
>> +static const struct drm_driver driver = {
>> + .driver_features = DRIVER_GEM | DRIVER_COMPUTE_ACCEL,
>
> So I was wondering whether this is a bright idea, and whether we shouldn't
> just go ahead and infuse more meaning into accel vs render nodes.
>
> The uapi relevant part of render nodes is that they're multi-user safe, at
> least as much as feasible. Every new open() gives you a new private
> accelerator. This also has implications on how userspace drivers iterate
> them, they just open them all in turn and check whether it's the right
> one - because userspace apis allow applications to enumerate them all.
> Which also means that any devicie initialization at open() time is a
> really bad idea.
>
> A lot of the compute accelerators otoh (well habanalabs) are single user,
> init can be done at open() time because you only open this when you
> actually know you're going to use it.
>
> So given this, shouldn't multi-user inference engines be more like render
> drivers, and less like accel? So DRIVER_RENDER, but still under
> drivers/accel.
>
> This way that entire separate /dev node would actually become meaningful
> beyond just the basic bikeshed:
> - render nodes are multi user, safe to iterate and open() just for
> iteration
> - accel nodes are single user, you really should not ever open them unless
> you want to use them
>
> Of course would need a doc patch :-)
>
> Thoughts?
> -Daniel
Hmm.
I admit, I thought DRIVER_ACCEL was the same as DRIVER_RENDER, except
that DRIVER_ACCEL dropped the "legacy" dual node setup and also avoided
"legacy" userspace.
qaic is multi-user. I thought habana was the same, at-least for
inference. Oded, am I wrong?
So, if DRIVER_ACCEL is for single-user (training?), and multi-user ends
up in DRIVER_RENDER, that would seem to mean qaic ends up using
DRIVER_RENDER and not DRIVER_ACCEL. Then qaic ends up over under
/dev/dri with both a card node (never used) and a render node. That
would seem to mean that the "legacy" userspace would open qaic nodes by
default - something I understood Oded was trying to avoid.
If there really a usecase for DRIVER_ACCEL to support single-user? I
wonder why we can't default to multi-user, and if a particular
user/driver has a single-user usecase, it enforces that in a driver
specific manner?
-Jeff
More information about the dri-devel
mailing list