You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I am currently investigating rpi-4.14.y-userqpu branch to run vc4 programs (e.g. hello_fft) with dtovelay=vc4-kms-v3d enabled.
With this patch, I could confirm that several vc4 programs including hello_fft can be correctly executed under dtovelay=vc4-kms-v3d enabled. However, in every case, it seems that the driver does not properly detect QPU job completion because it fails to detect writes to a host_interrupt register at the end of qpu instructions, which suppose to trigger an interrupt from qpu.
More precisely, It seems that a write to the host_interrupt register doesn't trigger the interrupt handler vc4_irq , which is supposed to finish the qpu job. Instead, a hangcheck procedure vc4_hangcheck_elapsed, which is executed every single second, eventually determines that the job has hung, resets the GPU, and vc4_wait_for_seqno in vc4_firmware_qpu_execute finally returned. Also, whenever vc4_irq was executed, the contents of V3D_DBQITC were always 0, and a job termination procedure in vc4_irq never seemed to be executed.
I also try dtovelay=vc4-fkms-v3d instead, but the behavior is the same.
Is there anything you can tell about how to properly detect the end of a QPU job?
I posted a related question in raspberrypi forum, but I asked here as well, hoping for some insight from the patch author's point of view.
This is config.txt I used.
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16
# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2
# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4
# uncomment for composite PAL
#sdtv_mode=2
#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
# Additional overlays and parameters are documented /boot/overlays/README
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[all]
dtoverlay=vc4-kms-v3d
# using vc4-fkms-v3d instead didn't change the behavior
Regard,
The text was updated successfully, but these errors were encountered:
Hi, I am currently investigating rpi-4.14.y-userqpu branch to run vc4 programs (e.g. hello_fft) with
dtovelay=vc4-kms-v3d
enabled.With this patch, I could confirm that several vc4 programs including hello_fft can be correctly executed under
dtovelay=vc4-kms-v3d
enabled. However, in every case, it seems that the driver does not properly detect QPU job completion because it fails to detect writes to a host_interrupt register at the end of qpu instructions, which suppose to trigger an interrupt from qpu.More precisely, It seems that a write to the host_interrupt register doesn't trigger the interrupt handler vc4_irq , which is supposed to finish the qpu job. Instead, a hangcheck procedure
vc4_hangcheck_elapsed
, which is executed every single second, eventually determines that the job has hung, resets the GPU, and vc4_wait_for_seqno invc4_firmware_qpu_execute
finally returned. Also, whenevervc4_irq
was executed, the contents of V3D_DBQITC were always 0, and a job termination procedure in vc4_irq never seemed to be executed.I also try
dtovelay=vc4-fkms-v3d
instead, but the behavior is the same.Is there anything you can tell about how to properly detect the end of a QPU job?
I posted a related question in raspberrypi forum, but I asked here as well, hoping for some insight from the patch author's point of view.
This is config.txt I used.
Regard,
The text was updated successfully, but these errors were encountered: