[PATCH v9 00/23] drm/rockchip: RK356x VOP2 support
Andy Yan
andy.yan at rock-chips.com
Thu Mar 31 05:13:09 PDT 2022
Hi Piotr:
On 3/31/22 03:20, Sascha Hauer wrote:
> On Wed, Mar 30, 2022 at 04:52:22PM +0200, Piotr Oniszczuk wrote:
>>
>>> Wiadomość napisana przez Sascha Hauer <s.hauer at pengutronix.de> w dniu 30.03.2022, o godz. 12:20:
>>>
>>> Does it change anything if you do a "modetest -s 69 at 67:1920x1080" before
>>> starting the app? Or if you run "modetest -P 43 at 67:1920x1080 at NV12"
>>> before starting the app? Or other combinations thereof?
>> So i tried following combinations
>>
>> -boot
>> -modetest -s 69 at 67:1920x1080 -> ok
>> -modetest -P 43 at 67:1920x1080 at NV12 -> green screen
> I have no idea what is going on here. There same commands work for me.
> You could provide me your kernel config and upstream commitish you are
> working on, maybe that gets me closer to your setup.
It's a little strange, I can't reproduce this issue neither.
But I have problem with this two step command sequence.
step 1: modetest -s 69 at 67:1920x1080 -> ok
step 2: modetest -P 43 at 67:1920x1080 at NV12,
I got the failed message: "failed to enable plane: Permission denied"
Because the drm core will stop step2 by drm_ioctrl_permit as
DRM_IOCTL_SETPLANE need a master,
but the current master is the modetest run by step1.
static int drm_ioctl_permit(u32 flags, struct drm_file *file_priv)
{
/* ROOT_ONLY is only for CAP_SYS_ADMIN */
if (unlikely((flags & DRM_ROOT_ONLY) && !capable(CAP_SYS_ADMIN))) {
printk("DRM_ROOT_ONLY\n");
return -EACCES;
}
/* AUTH is only for authenticated or render client */
if (unlikely((flags & DRM_AUTH) &&
!drm_is_render_client(file_priv) &&
!file_priv->authenticated)) {
printk("DRM_AUTH\n");
return -EACCES;
}
/* MASTER is only for master or control clients */
if (unlikely((flags & DRM_MASTER) &&
!drm_is_current_master(file_priv))) {
printk("DRM_MASTER\n");
return -EACCES;
}
/* Render clients must be explicitly allowed */
if (unlikely(!(flags & DRM_RENDER_ALLOW) &&
drm_is_render_client(file_priv))) {
printk("DRM_RENDER_NOT_ALLOW\n");
return -EACCES;
}
return 0;
}
After bypass the permission check, I can run step 2 , but the display on
the screen will have a shift as the wrong dly configuration.
So how you two got step two run success?
Piotr:
What soc is on you board? rk3566 or rk3568?
I have a scripts[0] use io[1] command to dump the VOP2 register you can
use it dump the register configuration when you meet a display failure,
then send the dump to me, maybe I can figure out something.
[0]https://github.com/andyshrk/buildroot/blob/2022/board/andyshrk/rootfs_overlay/usr/bin/vop2_dump.sh
[1] https://github.com/andyshrk/io
>
> Sascha
>
More information about the Linux-rockchip
mailing list