Unexpected HAILO_DRIVER_FAIL(36) errors occuring with HailoRT 4.19

I have a gstreamer pipeline that worked fine with the 4.15 version of hailort, using my MIPI capture pipeline, and DP monitor:

gst-launch-1.0 v4l2src device=/dev/video2 io-mode=mmap stride-align=256 '!' 'video/x-raw, width=1280, height=720, format=YUY2' '!' queue leaky=downstream max-size-buffers=5 max-size-bytes=0 max-size-time=0 '!' hailonet hef-path=/home/root/apps/detection/resources/yolov5m_yuv.hef '!' queue leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 '!' hailofilter function-name=yolov5 config-path=/home/root/apps/detection/resources/configs/yolov5.json so-path=/usr/lib/hailo-post-processes/libyolo_post.so qos=false '!' queue leaky=no max-size-buffers=30 max-size-bytes=0 max-size-time=0 '!' hailooverlay '!' queue leaky=downstream max-size-buffers=5 max-size-bytes=0 max-size-time=0 '!' fpsdisplaysink 'video-sink='\''kmssink' plane-id=39 bus-id=fd4a0000.display 'render-rectangle="<0,0,1280,720>"'\''' sync=false -v

With an updated design, using the 4.19 version of HailoRT, and the same gstreamer pipeline, I am getting the following errors:

[HailoRT] [error] CHECK failed - Failed map vdma buffer errno: 14
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] CHECK_SUCCESS failed with status=HAILO_DRIVER_FAIL(36)
[HailoRT] [error] Infer request callback failed with status = HAILO_DRIVER_FAIL(36)

I also have these messages in my serial console:

[  297.020216] hailo: get_user_pages failed with -14
[  297.025009] hailo 0000:01:00.0: failed to set sg list for user buffer -14
[  297.031996] hailo 0000:01:00.0: failed map buffer ffff5fe3e000

Any idea what could be causing these errors ?

Cheers !

Mario.

Can you please confirm what host platform you are using?

This is on a custom platform (AMD Zynq UltraScale+).
More details on this platform can be found here:
Tria Vitis Platforms - Adding Support for Hailo-8

I was able to get around the issue by using the “synchailonet” gstreamer plug-in, instead of “hailonet”.

Can you clarify what is the difference between these two plug-ins, and why the “hailonet” plug-in causes these driver (vdma buffer) errors ?

Cheers !

Mario.

The hailonet element from the previous version of HailoRT has been renamed to synchailonet. The current hailonet is now a different implementation with zero-copy support. It appears that this is currently not working on your platform.

:+1:

We have created a JIRA ticket for our R&D team to investigate the issue. Hopefully, this can be fixed. It’s possible that the zero-copy approach may not work on some platforms.

1 Like

Thank you @klausk ,
That explains the symptom and the fix.
Cheers !
Mario.

Here is additional information on my observations:

  • hailonet works with usb camera

  • hailonet does not work with MIPI capture pipeline (on AMD/Xilinx Zynq UltraScale+), need to use synchailonet in this case

Hope this helps