Re: New subsystem for acceleration devices
From: Kevin Hilman
Date: Tue Aug 23 2022 - 15:32:39 EST
Hi Obed,
Oded Gabbay <oded.gabbay@xxxxxxxxx> writes:
[...]
> I want to update that I'm currently in discussions with Dave to figure
> out what's the best way to move forward. We are writing it down to do
> a proper comparison between the two paths (new accel subsystem or
> using drm). I guess it will take a week or so.
Any update on the discussions with Dave? and/or are there any plans to
discuss this further at LPC/ksummit yet?
We (BayLibre) are upstreaming support for APUs on Mediatek SoCs, and are
using the DRM-based approach. I'll also be at LPC and happy to discuss
in person.
For some context on my/our interest: back in Sept 2020 we initially
submitted an rpmesg based driver for kernel communication[1]. After
review comments, we rewrote that based on DRM[2] and are now using it
for some MTK SoCs[3] and supporting our MTK customers with it.
Hopefully we will get the kernel interfaces sorted out soon, but next,
there's the userspace side of things. To that end, we're also working
on libAPU, a common, open userspace stack. Alex Bailon recently
presented a proposal earlier this year at Embedded Recipes in Paris
(video[4], slides[5].)
libAPU would include abstractions of the kernel interfaces for DRM
(using libdrm), remoteproc/rpmsg, virtio etc. but also goes farther and
proposes an open firmware for the accelerator side using
libMetal/OpenAMP + rpmsg for communication with (most likely closed
source) vendor firmware. Think of this like sound open firmware (SOF[6]),
but for accelerators.
We've been using this succesfully for Mediatek SoCs (which have a
Cadence VP6 APU) and have submitted/published the code, including the
OpenAMP[7] and libmetal[8] parts in addition to the kernel parts already
mentioned.
We're to the point where we're pretty happy with how this works for MTK
SoCs, and wanting to collaborate with folks working on other platforms
and to see what's needed to support other kinds of accelerators with a
common userspace and open firmware infrastructure.
Kevin
[1] https://lore.kernel.org/r/20200930115350.5272-1-abailon@xxxxxxxxxxxx
[2] https://lore.kernel.org/r/20210917125945.620097-1-abailon@xxxxxxxxxxxx
[3] https://lore.kernel.org/r/20210819151340.741565-1-abailon@xxxxxxxxxxxx
[4] https://www.youtube.com/watch?v=Uj1FZoF8MMw&t=18211s
[5] https://embedded-recipes.org/2022/wp-content/uploads/2022/06/bailon.pdf
[6] https://www.sofproject.org/
[7] https://github.com/BayLibre/open-amp/tree/v2021.10-mtk
[8] https://github.com/BayLibre/libmetal/tree/v2021.10-mtk