Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:

Pre-existing issues:
- [High] This problem wasn't introduced by this patch, but the plane and CRTC 
atomic callbacks call sleeping functions in atomic context, violating DRM 
subsystem rules.
--

--- Patch [34]: [PATCH 34/70] drm/tiny: pixpaper: Switch to 
drm_atomic_helper_crtc_create_state ---
commit 0c05f2d46ff22e1262b7a7c99b4dd00d2c48ebfe
Author: Maxime Ripard <[email protected]>

drm/tiny: pixpaper: Switch to drm_atomic_helper_crtc_create_state

This commit switches the pixpaper crtc implementation from using the
deprecated drm_atomic_helper_crtc_reset() hook to using
drm_atomic_helper_crtc_create_state().

> diff --git a/drivers/gpu/drm/tiny/pixpaper.c b/drivers/gpu/drm/tiny/pixpaper.c
> index d02ac26d007c1..b69e7c30607e7 100644
> --- a/drivers/gpu/drm/tiny/pixpaper.c
> +++ b/drivers/gpu/drm/tiny/pixpaper.c
> @@ -963,7 +963,7 @@ static const struct drm_plane_helper_funcs 
> pixpaper_plane_helper_funcs = {
>  static const struct drm_crtc_funcs pixpaper_crtc_funcs = {
>       .set_config = drm_atomic_helper_set_config,
>       .page_flip = drm_atomic_helper_page_flip,
> -     .reset = drm_atomic_helper_crtc_reset,
> +     .atomic_create_state = drm_atomic_helper_crtc_create_state,

[Severity: High]
This isn't a bug introduced by this patch, but while reviewing the atomic
state changes I noticed a pre-existing issue. Does pixpaper_wait_for_panel()
call sleeping functions while in an atomic context?

Looking at pixpaper_crtc_atomic_enable() and pixpaper_plane_atomic_update(),
these are DRM atomic callbacks and execute in atomic context where sleeping
is forbidden. However, both of them call pixpaper_wait_for_panel():

pixpaper_wait_for_panel() {
        ...
        usleep_range(1000, 1500);
        while (gpiod_get_value_cansleep(panel->busy) != 1) {
        ...
}

Could this trigger scheduling while atomic oopses or deadlocks during
non-blocking commits? Should this be modified to use non-sleeping delays
and GPIO reads instead?

>       .destroy = drm_crtc_cleanup,
>       .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
>       .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
>  };

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=34

Reply via email to