On Fri, Feb 7, 2020 at 4:13 PM Tomeu Vizoso tomeu.vizoso@collabora.com wrote:
On 2/7/20 8:42 AM, Nicolas Boichat wrote:
On Fri, Feb 7, 2020 at 2:18 PM Tomeu Vizoso tomeu.vizoso@collabora.com wrote:
Some more changes are still required to get devfreq working, and of course I do not have a userspace driver to test this with.
Have you tried the Panfrost tests in IGT? They are atm quite basic, but could be interesting to check that the different HW units are correctly powered on.
I haven't, you mean this right? https://gitlab.freedesktop.org/tomeu/igt-gpu-tools/tree/panfrost
Yes, though may be better to use the upstream repo:
https://gitlab.freedesktop.org/drm/igt-gpu-tools
Any specific test you have in mind?
All the panfrost ones, but looks like panfrost_prime:gem-prime-import is failing atm:
(I first removed opp table from device tree to avoid constant spew about devfreq not supporting 2 regulators, I should get around to fix that...)
# /usr/libexec/igt-gpu-tools/panfrost_gem_new IGT-Version: 1.24-gd4d574a4 (arm) (Linux: 4.19.99 aarch64) Starting subtest: gem-new-4096 Subtest gem-new-4096: SUCCESS (0.000s) Starting subtest: gem-new-0 Subtest gem-new-0: SUCCESS (0.000s) Starting subtest: gem-new-zeroed Subtest gem-new-zeroed: SUCCESS (0.001s) # /usr/libexec/igt-gpu-tools/panfrost_get_param IGT-Version: 1.24-gd4d574a4 (arm) (Linux: 4.19.99 aarch64) Starting subtest: base-params Subtest base-params: SUCCESS (0.000s) Starting subtest: get-bad-param Subtest get-bad-param: SUCCESS (0.000s) Starting subtest: get-bad-padding Subtest get-bad-padding: SUCCESS (0.000s) # /usr/libexec/igt-gpu-tools/panfrost_prime IGT-Version: 1.24-gd4d574a4 (arm) (Linux: 4.19.99 aarch64) Starting subtest: gem-prime-import (panfrost_prime:1527) ioctl_wrappers-CRITICAL: Test assertion failure function prime_fd_to_handle, file ../igt-gpu-tools-9999/lib/ioctl_wrappers.c:1336: (panfrost_prime:1527) ioctl_wrappers-CRITICAL: Failed assertion: igt_ioctl((fd), ((((2U|1U) << (((0+8)+8)+14)) | ((('d')) << (0+8)) | (((0x2e)) << 0) | ((((sizeof(struct drm_prime_handle)))) << ((0+8)+8)))), (&args)) == 0 (panfrost_prime:1527) ioctl_wrappers-CRITICAL: Last errno: 95, Operation not supported (panfrost_prime:1527) ioctl_wrappers-CRITICAL: error: -1 != 0 Stack trace: Subtest gem-prime-import failed. Subtest gem-prime-import: FAIL (0.004s) (but that looks expected?)
Now the trickier ones, I guess we're either missing something, or my dirty 4.19 backport is very broken: # /usr/libexec/igt-gpu-tools/panfrost_submit IGT-Version: 1.24-gd4d574a4 (arm) (Linux: 4.19.99 aarch64) Starting subtest: pan-submit (panfrost_submit:1643) CRITICAL: Test assertion failure function __real_main86, file ../igt-gpu-tools-9999/tests/panfrost_submit.c:103: (panfrost_submit:1643) CRITICAL: Failed assertion: syncobj_wait(fd, &submit->args->out_sync, 1, abs_timeout(SHORT_TIME_NSEC), 0, NULL) Stack trace: Subtest pan-submit failed. **** DEBUG **** (panfrost_submit:1643) CRITICAL: Test assertion failure function __real_main86, file ../igt-gpu-tools-9999/tests/panfrost_submit.c:103: (panfrost_submit:1643) CRITICAL: Failed assertion: syncobj_wait(fd, &submit->args->out_sync, 1, abs_timeout(SHORT_TIME_NSEC), 0, NULL) (panfrost_submit:1643) igt_core-INFO: Stack trace: **** END **** Subtest pan-submit: FAIL (0.119s) Starting subtest: pan-submit-error-no-jc Subtest pan-submit-error-no-jc: SUCCESS (0.000s) Starting subtest: pan-submit-error-bad-in-syncs Subtest pan-submit-error-bad-in-syncs: SUCCESS (0.012s) Starting subtest: pan-submit-error-bad-bo-handles Subtest pan-submit-error-bad-bo-handles: SUCCESS (0.012s) Starting subtest: pan-submit-error-bad-requirements Subtest pan-submit-error-bad-requirements: SUCCESS (0.012s) Starting subtest: pan-submit-error-bad-out-sync Subtest pan-submit-error-bad-out-sync: SUCCESS (0.012s) Starting subtest: pan-reset (panfrost_submit:1643) CRITICAL: Test assertion failure function __real_main86, file ../igt-gpu-tools-9999/tests/panfrost_submit.c:173: (panfrost_submit:1643) CRITICAL: Failed assertion: syncobj_wait(fd, &submit->args->out_sync, 1, abs_timeout(BAD_JOB_TIME_NSEC), 0, NULL) Stack trace: Subtest pan-reset failed. **** DEBUG **** (panfrost_submit:1643) CRITICAL: Test assertion failure function __real_main86, file ../igt-gpu-tools-9999/tests/panfrost_submit.c:173: (panfrost_submit:1643) CRITICAL: Failed assertion: syncobj_wait(fd, &submit->args->out_sync, 1, abs_timeout(BAD_JOB_TIME_NSEC), 0, NULL) (panfrost_submit:1643) igt_core-INFO: Stack trace: **** END **** Subtest pan-reset: FAIL (0.840s)
The pan-submit case causes an MMU fault: (full log: https://gist.github.com/drinkcat/1ae36cb1b1b71f30cc4fc29759612d76)
[ 1215.234937] [IGT] panfrost_submit: executing [ 1215.318446] [IGT] panfrost_submit: starting subtest pan-submit ... [ 1215.338644] panfrost 13040000.gpu: Unhandled Page fault in AS0 at VA 0x000000FF00000000 Reason: TODO raw fault status: 0xA002C0 decoded fault status: SLAVE FAULT exception type 0xC0: UNKNOWN access type 0x2: READ source id 0xA0 [ 1215.444504] [IGT] panfrost_submit: exiting, ret=98 ... [ 1215.446902] panfrost 13040000.gpu: js fault, js=0, status=JOB_BUS_FAULT, head=0x300b000, tail=0x300b000 [ 1215.446935] panfrost 13040000.gpu: Unhandled Page fault in AS0 at VA 0x000000FF00000000 Reason: TODO raw fault status: 0xA002C0 decoded fault status: SLAVE FAULT exception type 0xC0: UNKNOWN access type 0x2: READ source id 0xA0
pan-reset failure looks similar: https://gist.github.com/drinkcat/2d336d57e6b95262d83e7a28a409bc5b
Thanks,
Cheers,
Tomeu
Thanks,
Regards,
Tomeu
I believe at least patches 1, 2, and 3 can be merged. 4 and 5 are mostly useful in conjunction with 6 and 7 (which are not ready yet), so I'll let maintainers decide.
Thanks!
Nicolas Boichat (7): dt-bindings: gpu: mali-bifrost: Add Mediatek MT8183 arm64: dts: mt8183: Add node for the Mali GPU drm/panfrost: Improve error reporting in panfrost_gpu_power_on drm/panfrost: Add support for multiple regulators drm/panfrost: Add support for multiple power domains RFC: drm/panfrost: Add mt8183-mali compatible string RFC: drm/panfrost: devfreq: Add support for 2 regulators
.../bindings/gpu/arm,mali-bifrost.yaml | 25 ++++ arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 7 + arch/arm64/boot/dts/mediatek/mt8183.dtsi | 105 +++++++++++++++ drivers/gpu/drm/panfrost/panfrost_devfreq.c | 17 +++ drivers/gpu/drm/panfrost/panfrost_device.c | 123 +++++++++++++++--- drivers/gpu/drm/panfrost/panfrost_device.h | 27 +++- drivers/gpu/drm/panfrost/panfrost_drv.c | 41 ++++-- drivers/gpu/drm/panfrost/panfrost_gpu.c | 11 +- 8 files changed, 326 insertions(+), 30 deletions(-)