Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rpi-4.14.y-userqpu: fail to detect qpu job completion #157

Open
eguchi1904 opened this issue Jun 1, 2022 · 0 comments
Open

rpi-4.14.y-userqpu: fail to detect qpu job completion #157

eguchi1904 opened this issue Jun 1, 2022 · 0 comments

Comments

@eguchi1904
Copy link

eguchi1904 commented Jun 1, 2022

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,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant