On 5/19/25 06:08, wangtao wrote:
>
>
>> -----Original Message-----
>> From: Christian König <christian.koenig(a)amd.com>
>> Sent: Friday, May 16, 2025 6:29 PM
>> To: wangtao <tao.wangtao(a)honor.com>; sumit.semwal(a)linaro.org;
>> benjamin.gaignard(a)collabora.com; Brian.Starkey(a)arm.com;
>> jstultz(a)google.com; tjmercier(a)google.com
>> Cc: linux-media(a)vger.kernel.org; dri-devel(a)lists.freedesktop.org; linaro-
>> mm-sig(a)lists.linaro.org; linux-kernel(a)vger.kernel.org;
>> wangbintian(BintianWang) <bintian.wang(a)honor.com>; yipengxiang
>> <yipengxiang(a)honor.com>; liulu <liulu.liu(a)honor.com>; hanfeng
>> <feng.han(a)honor.com>
>> Subject: Re: [PATCH 2/2] dmabuf/heaps: implement
>> DMA_BUF_IOCTL_RW_FILE for system_heap
>>
>> On 5/16/25 11:49, wangtao wrote:
>>>>>> Please try using udmabuf with sendfile() as confirmed to be working
>>>>>> by
>>>> T.J.
>>>>> [wangtao] Using buffer IO with dmabuf file read/write requires one
>>>> memory copy.
>>>>> Direct IO removes this copy to enable zero-copy. The sendfile system
>>>>> call reduces memory copies from two (read/write) to one. However,
>>>>> with udmabuf, sendfile still keeps at least one copy, failing zero-copy.
>>>>
>>>>
>>>> Then please work on fixing this.
>>> [wangtao] What needs fixing? Does sendfile achieve zero-copy?
>>> sendfile reduces memory copies (from 2 to 1) for network sockets, but
>>> still requires one copy and cannot achieve zero copies.
>>
>> Well why not? See sendfile() is the designated Linux uAPI for moving data
>> between two files, maybe splice() is also appropriate.
>>
>> The memory file descriptor and your destination file are both a files. So those
>> uAPIs apply.
> [wangtao] I realize our disagreement lies here:
> You believe sendfile enables zero-copy for regular file → socket/file:
No what I mean is that it should be possible to solve this using sendfile() or splice() and not come uo with a hacky IOCTL to bypass well tested and agreed upon system calls.
> sendfile(dst_socket, src_disk)
> [disk] --DMA--> [page buffer] --DMA--> [NIC]
> sendfile(dst_disk, src_disk)
> [disk] --DMA--> [page buffer] --DMA--> [DISK]
>
> But for regular file → memory file (e.g., tmpfs/shmem), a CPU copy is unavoidable:
> sendfile(dst_memfile, src_disk)
> [disk] --DMA--> [page buffer] --CPU copy--> [DISK]
> Without memory-to-memory DMA, this wastes CPU/power — critical for embedded devices.
>
>>
>> Now what you suggest is to add a new IOCTL to do this in a very specific
>> manner just for the system DMA-buf heap. And as far as I can see that is in
>> general a complete no-go.
>>
>> I mean I understand why you do this. Instead of improving the existing
>> functionality you're just hacking something together because it is simple for
>> you.
>>
>> It might be possible to implement that generic for DMA-buf heaps if
>> udmabuf allocation overhead can't be reduced, but that is then just the
>> second step.
> [wangtao] On dmabuf:
> - DMABUF lacks Direct I/O support, hence our proposal.
> - memfd supports Direct I/O but doesn’t fit our use case.
> - udmabuf via memfd works but needs systemic changes (low ROI) and has slow allocation.
>
> Your objections:
> 1. Adding an IOCTL? This targets dmabuf specifically, and our fix is simple.
> sendfile doesn’t resolve it.
> 2. Accessing sgtable pages in the exporter? As the dmabuf creator, the exporter
> fully controls sgtable/page data. We can restrict access to cases with no
> external users.
>
> Could you clarify which point you oppose?
Both. I might be repeating myself, but I think what you do here is a no-go and reimplements core system call functionality by a way which we certainly shouldn't allow.
T.J's testing shows that sendfile() seems to work at least in one direction. The other use case can certainly be optimized. So if you want to improve this work on that instead.
Regards,
Christian
>
>>
>> Regards,
>> Christian.
On 16/05/2025 18:53, Tomeu Vizoso wrote:
> See Chapter 36 "RKNN" from the RK3588 TRM (Part 1).
>
> This is a derivative of NVIDIA's NVDLA, but with its own front-end
> processor.
>
> The IP is divided in three cores, programmed independently. The first
> core though is special, requiring to be powered on before any of the
> others can be used.
>
> The IOMMU of the first core is also special in that it has two subunits
> (read/write?) that need to be programmed in sync.
>
> v2:
> - Have one device for each NPU core (Sebastian Reichel)
> - Have one device for each IOMMU (Sebastian Reichel)
> - Correctly sort nodes (Diederik de Haas)
> - Add rockchip,iommu compatible to IOMMU nodes (Sebastian Reichel)
>
> v3:
> - Adapt to a split of the register block in the DT bindings (Nicolas
> Frattaroli)
>
> Signed-off-by: Tomeu Vizoso <tomeu(a)tomeuvizoso.net>
> ---
> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 85 +++++++++++++++++++++++++++
> 1 file changed, 85 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> index 1e18ad93ba0ebdad31642b88ff0f90ef4e8dc76f..7b961ab838212fad8e4a70390fdc917a828433a9 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
> @@ -1136,6 +1136,91 @@ power-domain@RK3588_PD_SDMMC {
> };
> };
>
> + rknn_core_top: npu-core@fdab0000 {
npu@
> + compatible = "rockchip,rk3588-rknn-core-top", "rockchip,rknn-core-top";
You never tested this. Test before sending instead of relying on us or
after merging.
Best regards,
Krzysztof
On Fri, 16 May 2025 18:53:14 +0200, Tomeu Vizoso wrote:
> This series adds a new driver for the NPU that Rockchip includes in its
> newer SoCs, developed by them on the NVDLA base.
>
> In its current form, it supports the specific NPU in the RK3588 SoC.
>
> The userspace driver is part of Mesa and an initial draft can be found at:
>
> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29698
>
> Signed-off-by: Tomeu Vizoso <tomeu(a)tomeuvizoso.net>
> ---
> Changes in v3:
> - Reference in the device tree only the register blocks that are
> actually used.
> - Several style and robustness fixes suggested in the mailing list.
> - Added patches from Nicolas Frattaroli that add support to the NPU for
> the Rock 5B board.
> - Link to v2: https://lore.kernel.org/r/20250225-6-10-rocket-v2-0-d4dbcfafc141@tomeuvizos…
>
> Changes in v2:
> - Drop patch adding the rk3588 compatible to rockchip-iommu (Sebastian Reichel)
> - Drop patch adding support for multiple power domains to rockchip-iommu (Sebastian Reichel)
> - Link to v1: https://lore.kernel.org/r/20240612-6-10-rocket-v1-0-060e48eea250@tomeuvizos…
>
> ---
> Nicolas Frattaroli (2):
> arm64: dts: rockchip: add pd_npu label for RK3588 power domains
> arm64: dts: rockchip: enable NPU on ROCK 5B
>
> Tomeu Vizoso (8):
> dt-bindings: npu: rockchip,rknn: Add bindings
> arm64: dts: rockchip: Add nodes for NPU and its MMU to rk3588s
> arm64: dts: rockchip: Enable the NPU on quartzpro64
> accel/rocket: Add registers header
> accel/rocket: Add a new driver for Rockchip's NPU
> accel/rocket: Add IOCTL for BO creation
> accel/rocket: Add job submission IOCTL
> accel/rocket: Add IOCTLs for synchronizing memory accesses
>
> Documentation/accel/index.rst | 1 +
> Documentation/accel/rocket/index.rst | 25 +
> .../bindings/npu/rockchip,rknn-core.yaml | 162 +
> MAINTAINERS | 10 +
> arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 87 +-
> .../arm64/boot/dts/rockchip/rk3588-quartzpro64.dts | 30 +
> arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 56 +
> drivers/accel/Kconfig | 1 +
> drivers/accel/Makefile | 1 +
> drivers/accel/rocket/Kconfig | 25 +
> drivers/accel/rocket/Makefile | 10 +
> drivers/accel/rocket/rocket_core.c | 103 +
> drivers/accel/rocket/rocket_core.h | 59 +
> drivers/accel/rocket/rocket_device.c | 45 +
> drivers/accel/rocket/rocket_device.h | 31 +
> drivers/accel/rocket/rocket_drv.c | 337 ++
> drivers/accel/rocket/rocket_drv.h | 17 +
> drivers/accel/rocket/rocket_gem.c | 211 +
> drivers/accel/rocket/rocket_gem.h | 31 +
> drivers/accel/rocket/rocket_job.c | 723 ++++
> drivers/accel/rocket/rocket_job.h | 50 +
> drivers/accel/rocket/rocket_registers.h | 4425 ++++++++++++++++++++
> include/uapi/drm/rocket_accel.h | 145 +
> 23 files changed, 6584 insertions(+), 1 deletion(-)
> ---
> base-commit: 46bfbcd135a6df00c49cf043bf2c9c9387bc882d
> change-id: 20240612-6-10-rocket-9316defc14c7
>
> Best regards,
> --
> Tomeu Vizoso <tomeu(a)tomeuvizoso.net>
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: base-commit 46bfbcd135a6df00c49cf043bf2c9c9387bc882d not known, ignoring
Base: attempting to guess base-commit...
Base: tags/v6.15-rc6-20-g4106486839d1 (exact match)
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/rockchip/' for 20250516-6-10-rocket-v3-0-7051ac9225db(a)tomeuvizoso.net:
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-genbook.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-odroid-m2.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-odroid-m2.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-odroid-m2.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-h96-max-v58.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-h96-max-v58.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-h96-max-v58.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-ultra.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-jaguar.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-jaguar.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-jaguar.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6b-io.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6b-io.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6b-io.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-ok3588-c.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-ok3588-c.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-ok3588-c.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3582-radxa-e52c.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3582-radxa-e52c.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3582-radxa-e52c.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-toybrick-x0.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-toybrick-x0.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-toybrick-x0.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-coolpi-4b.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-coolpi-4b.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-coolpi-4b.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-khadas-edge2.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-friendlyelec-cm3588-nas.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-friendlyelec-cm3588-nas.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-friendlyelec-cm3588-nas.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6a-io.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6a-io.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-edgeble-neu6a-io.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5-itx.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5-itx.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5-itx.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5a.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5a.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5a.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-quartzpro64.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-mnt-reform2.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-mnt-reform2.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-mnt-reform2.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-sige7.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-sige7.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-armsom-sige7.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6-lts.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6-lts.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6-lts.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6c.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6c.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6c.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6s.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6s.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-nanopi-r6s.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-max.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-max.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-max.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5c.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5c.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-rock-5c.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-firefly-itx-3588j.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-evb1-v10.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-evb.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-evb.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588-coolpi-cm5-evb.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
arch/arm64/boot/dts/rockchip/rk3588s-indiedroid-nova.dtb: npu-core@fdad0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
On 5/16/25 09:40, wangtao wrote:
>
>
>> -----Original Message-----
>> From: Christian König <christian.koenig(a)amd.com>
>> Sent: Thursday, May 15, 2025 10:26 PM
>> To: wangtao <tao.wangtao(a)honor.com>; sumit.semwal(a)linaro.org;
>> benjamin.gaignard(a)collabora.com; Brian.Starkey(a)arm.com;
>> jstultz(a)google.com; tjmercier(a)google.com
>> Cc: linux-media(a)vger.kernel.org; dri-devel(a)lists.freedesktop.org; linaro-
>> mm-sig(a)lists.linaro.org; linux-kernel(a)vger.kernel.org;
>> wangbintian(BintianWang) <bintian.wang(a)honor.com>; yipengxiang
>> <yipengxiang(a)honor.com>; liulu 00013167 <liulu.liu(a)honor.com>; hanfeng
>> 00012985 <feng.han(a)honor.com>
>> Subject: Re: [PATCH 2/2] dmabuf/heaps: implement
>> DMA_BUF_IOCTL_RW_FILE for system_heap
>>
>> On 5/15/25 16:03, wangtao wrote:
>>> [wangtao] My Test Configuration (CPU 1GHz, 5-test average):
>>> Allocation: 32x32MB buffer creation
>>> - dmabuf 53ms vs. udmabuf 694ms (10X slower)
>>> - Note: shmem shows excessive allocation time
>>
>> Yeah, that is something already noted by others as well. But that is
>> orthogonal.
>>
>>>
>>> Read 1024MB File:
>>> - dmabuf direct 326ms vs. udmabuf direct 461ms (40% slower)
>>> - Note: pin_user_pages_fast consumes majority CPU cycles
>>>
>>> Key function call timing: See details below.
>>
>> Those aren't valid, you are comparing different functionalities here.
>>
>> Please try using udmabuf with sendfile() as confirmed to be working by T.J.
> [wangtao] Using buffer IO with dmabuf file read/write requires one memory copy.
> Direct IO removes this copy to enable zero-copy. The sendfile system call
> reduces memory copies from two (read/write) to one. However, with udmabuf,
> sendfile still keeps at least one copy, failing zero-copy.
Then please work on fixing this.
Regards,
Christian.
>
> If udmabuf sendfile uses buffer IO (file page cache), read latency matches
> dmabuf buffer read, but allocation time is much longer.
> With Direct IO, the default 16-page pipe size makes it slower than buffer IO.
>
> Test data shows:
> udmabuf direct read is much faster than udmabuf sendfile.
> dmabuf direct read outperforms udmabuf direct read by a large margin.
>
> Issue: After udmabuf is mapped via map_dma_buf, apps using memfd or
> udmabuf for Direct IO might cause errors, but there are no safeguards to
> prevent this.
>
> Allocate 32x32MB buffer and read 1024 MB file Test:
> Metric | alloc (ms) | read (ms) | total (ms)
> -----------------------|------------|-----------|-----------
> udmabuf buffer read | 539 | 2017 | 2555
> udmabuf direct read | 522 | 658 | 1179
> udmabuf buffer sendfile| 505 | 1040 | 1546
> udmabuf direct sendfile| 510 | 2269 | 2780
> dmabuf buffer read | 51 | 1068 | 1118
> dmabuf direct read | 52 | 297 | 349
>
> udmabuf sendfile test steps:
> 1. Open data file(1024MB), get back_fd
> 2. Create memfd(32MB) # Loop steps 2-6
> 3. Allocate udmabuf with memfd
> 4. Call sendfile(memfd, back_fd)
> 5. Close memfd after sendfile
> 6. Close udmabuf
> 7. Close back_fd
>
>>
>> Regards,
>> Christian.
>
On Fri, 16 May 2025 18:53:15 +0200, Tomeu Vizoso wrote:
> Add the bindings for the Neural Processing Unit IP from Rockchip.
>
> v2:
> - Adapt to new node structure (one node per core, each with its own
> IOMMU)
> - Several misc. fixes from Sebastian Reichel
>
> v3:
> - Split register block in its constituent subblocks, and only require
> the ones that the kernel would ever use (Nicolas Frattaroli)
> - Group supplies (Rob Herring)
> - Explain the way in which the top core is special (Rob Herring)
>
> Signed-off-by: Tomeu Vizoso <tomeu(a)tomeuvizoso.net>
> Signed-off-by: Sebastian Reichel <sebastian.reichel(a)collabora.com>
> ---
> .../bindings/npu/rockchip,rknn-core.yaml | 162 +++++++++++++++++++++
> 1 file changed, 162 insertions(+)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/npu/rockchip,rknn-core.yaml: properties:reg-names: 'oneOf' conditional failed, one must be fixed:
[{'const': 'pc'}, {'const': 'cna'}, {'const': 'core'}] is too long
[{'const': 'pc'}, {'const': 'cna'}, {'const': 'core'}] is too short
False schema does not allow 3
1 was expected
3 is greater than the maximum of 2
hint: "minItems" is only needed if less than the "items" list length
from schema $id: http://devicetree.org/meta-schemas/items.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/npu/rockchip,rknn-core.example.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core-top', 'rockchip,rknn-core-top'] is too long
'rockchip,rk3588-rknn-core-top' is not one of ['rockchip,rk3588-rknn-core']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/npu/rockchip,rknn-core.example.dtb: npu-core@fdab0000 (rockchip,rk3588-rknn-core-top): reg: [[0, 4255842304, 0, 36864]] is too short
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/npu/rockchip,rknn-core.example.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): compatible: 'oneOf' conditional failed, one must be fixed:
['rockchip,rk3588-rknn-core', 'rockchip,rknn-core'] is too long
'rockchip,rk3588-rknn-core' is not one of ['rockchip,rk3588-rknn-core-top']
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/npu/rockchip,rknn-core.example.dtb: npu-core@fdac0000 (rockchip,rk3588-rknn-core): reg: [[0, 4255907840, 0, 36864]] is too short
from schema $id: http://devicetree.org/schemas/npu/rockchip,rknn-core.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250516-6-1…
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
On Fri, May 16, 2025 at 02:19:45PM +0800, Xu Yilun wrote:
> > I don't know why you'd disable a viommu while the VM is running,
> > doesn't make sense.
>
> Here it means remove the CC setup for viommu, shared setup is still
> kept.
That might makes sense for the vPCI function, but not the vIOMMU. A
secure VIOMMU needs to be running at all times while the guest is
running. Perhaps it has no devices it can be used with, but it's
functionality has to be there because a driver in the VM will be
connected to it.
At most "bind" should only tell the already existing secure vIOMMU
that it is allowed to translate for a specific vPCI function.
Jason
On 5/16/25 11:49, wangtao wrote:
>>>> Please try using udmabuf with sendfile() as confirmed to be working by
>> T.J.
>>> [wangtao] Using buffer IO with dmabuf file read/write requires one
>> memory copy.
>>> Direct IO removes this copy to enable zero-copy. The sendfile system
>>> call reduces memory copies from two (read/write) to one. However, with
>>> udmabuf, sendfile still keeps at least one copy, failing zero-copy.
>>
>>
>> Then please work on fixing this.
> [wangtao] What needs fixing? Does sendfile achieve zero-copy?
> sendfile reduces memory copies (from 2 to 1) for network sockets,
> but still requires one copy and cannot achieve zero copies.
Well why not? See sendfile() is the designated Linux uAPI for moving data between two files, maybe splice() is also appropriate.
The memory file descriptor and your destination file are both a files. So those uAPIs apply.
Now what you suggest is to add a new IOCTL to do this in a very specific manner just for the system DMA-buf heap. And as far as I can see that is in general a complete no-go.
I mean I understand why you do this. Instead of improving the existing functionality you're just hacking something together because it is simple for you.
It might be possible to implement that generic for DMA-buf heaps if udmabuf allocation overhead can't be reduced, but that is then just the second step.
Regards,
Christian.
Hi!
I previously discussed this with Simona on IRC but would like to get
some feedback also from a wider audience:
We're planning to share dma-bufs using a fast interconnect in a way
similar to pcie-p2p:
The rough plan is to identify dma-bufs capable of sharing this way by
looking at the address of either the dma-buf ops and / or the
importer_ops to conclude it's a device using the same driver (or
possibly child driver) and then take special action when the dma-
addresses are obtained. Nothing visible outside of the xe driver or its
child driver.
Are there any absolute "DON'T"s or recommendations to keep in mind WRT
to this approach?
Thanks,
Thomas
On Fri, May 16, 2025 at 02:02:29AM +0800, Xu Yilun wrote:
> > IMHO, I think it might be helpful that you can picture out what are the
> > minimum requirements (function/life cycle) to the current IOMMUFD TSM
> > bind architecture:
> >
> > 1.host tsm_bind (preparation) is in IOMMUFD, triggered by QEMU handling
> > the TVM-HOST call.
> > 2. TDI acceptance is handled in guest_request() to accept the TDI after
> > the validation in the TVM)
>
> I'll try my best to brainstorm and make a flow in ASCII.
>
> (*) means new feature
>
>
> Guest Guest TSM QEMU VFIO IOMMUFD host TSM KVM
> ----- --------- ---- ---- ------- -------- ---
> 1. *Connect(IDE)
> 2. Init vdev
open /dev/vfio/XX as a VFIO action
Then VFIO attaches to IOMMUFD as an iommufd action creating the idev
> 3. *create dmabuf
> 4. *export dmabuf
> 5. create memslot
> 6. *import dmabuf
> 7. setup shared DMA
> 8. create hwpt
> 9. attach hwpt
> 10. kvm run
> 11.enum shared dev
> 12.*Connect(Bind)
> 13. *GHCI Bind
> 14. *Bind
> 15 CC viommu alloc
> 16. vdevice allloc
viommu and vdevice creation happen before KVM run. The vPCI function
is visible to the guest from the very start, even though it is in T=0
mode. If a platform does not require any special CC steps prior to KVM
run then it just has a NOP for these functions.
What you have here is some new BIND operation against the already
existing vdevice as we discussed earlier.
> 16. *attach vdev
> 17. *setup CC viommu
> 18 *tsm_bind
> 19. *bind
> 20.*Attest
> 21. *GHCI get CC info
> 22. *get CC info
> 23. *vdev guest req
> 24. *guest req
> 25.*Accept
> 26. *GHCI accept MMIO/DMA
> 27. *accept MMIO/DMA
> 28. *vdev guest req
> 29. *guest req
> 30. *map private MMIO
> 31. *GHCI start tdi
> 32. *start tdi
> 33. *vdev guest req
> 34. *guest req
This seems reasonable you want to have some generic RPC scheme to
carry messages fro mthe VM to the TSM tunneled through the iommufd
vdevice (because the vdevice has the vPCI ID, the KVM ID, the VIOMMU
id and so on)
> 35.Workload...
> 36.*disconnect(Unbind)
> 37. *GHCI unbind
> 38. *Unbind
> 39. *detach vdev
unbind vdev. vdev remains until kvm is stopped.
> 40. *tsm_unbind
> 41. *TDX stop tdi
> 42. *TDX disable mmio cb
> 43. *cb dmabuf revoke
> 44. *unmap private MMIO
> 45. *TDX disable dma cb
> 46. *cb disable CC viommu
I don't know why you'd disable a viommu while the VM is running,
doesn't make sense.
> 47. *TDX tdi free
> 48. *enable mmio
> 49. *cb dmabuf recover
> 50.workable shared dev
This is a nice chart, it would be good to see a comparable chart for
AMD and ARM
Jason