From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22C4F364043 for ; Thu, 21 May 2026 10:51:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779360672; cv=none; b=UM9Fab6ycAAOH2YbMQAQ3gRtwBHLT0mbVkzVLw2uQV9qo+Mr9/jAR3KjJdD6//ZjYd35ud+wqHAaGUpSxASr0Fp4BWIXOavqpXJ6AHeDaNzx6C5phAyekcs07V2K50ndav5yLSojTeuL5qq2lL5uD72Trr/+JxdSdG8cAyPx3tk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779360672; c=relaxed/simple; bh=SjzJneSjsAMozUxGDWISU1TXhCH0vP2usdI5mJAyEVI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=i1btORZN55FwQIT95VBu5aPyE53S2C/kjYKHZiVo/lUVq5F/taGSKvscMyd7cTNLEsQYgz313KyD39SmVYWyFu29d/g2oh4KOPSX9mR2GmQhdwXYRjr36UDWaVjnYL05OqB5x/MTGLHlaxoTtOOxF/NGIi98tqh2w40wQqLqrVM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch; spf=none smtp.mailfrom=ffwll.ch; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b=YuAatuS1; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=ffwll.ch Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="YuAatuS1" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-48d146705b4so66226605e9.3 for ; Thu, 21 May 2026 03:51:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; t=1779360669; x=1779965469; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=qrQepb21ThYa5H25zJ7qisKCLfnMdtrz9jtuaFuhKz4=; b=YuAatuS1DOqbWla76FWwroOubbXjRzHd5Gcf7g8IfrGkk5z3STxA/mT/HjsLCjO8rR jXm9Zo6nDC7dbTuun7ilmilL5sQYh+zhnz3dxMk9rKYps/+WHJ5ViEFYicRQSocg9p1e HdL/DWnDh6+zQjMxar0CKQEWHl+boUVmMZDIk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779360669; x=1779965469; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qrQepb21ThYa5H25zJ7qisKCLfnMdtrz9jtuaFuhKz4=; b=qP+OcAAELbb6VL5umKYjX5FTu0z3BfxnKOr4nXJpH3sDKbOqppnka/uArPwqxXgbhP IYYE3mwkcbkShBkSj/pIyrILTjoTd/kTBYofJxvZE2CJdr7JSSss1bqGkOAQrdMyPMgZ D3os+CehIvDqm0lnXr2c99QWb96zZdu1sH9fktYzDFh+GudQDDnoao53r6Cz1U+eSNni trEwa0hMUnQHTYPCl/vZU7L5AjUxEQvlMVPJfKdGdjOe4uIbR5i/y7drM4REkiCKS5jy m9ziMv858ixAoql5BtnYXAGcYxRW4Z36Qw6e7m751NLR37pvFnaei29FiskpAVa6tQ48 80Lw== X-Forwarded-Encrypted: i=1; AFNElJ8TBD3MpvTan1lvYV+aAuLp97vLeuDXdmcAAECdBXq1s0S3XK5QnfrANC1ZlONnqaVphe5wTa78kPW0Oag=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+9N6wSzT0sKp0vtrYldTUkNaVKDFDSC1kLcCUjOPaolr3b2cf KBQ7enDljJhScY78178xq63cLw+pXOuD4RxfL7sBB6JEugG37S9yfFLUhu0dy5x69j8= X-Gm-Gg: Acq92OHJ6vs+X2DPuRe4+KIMeOhje3mqF4LYq8gKKR0heGJaKQYRtS1pnCU5ct6KfTP 6KSEr529H3gCvUNefS1nRJBwyUToQmXTP3/V1XPoaXwCfU+KWsBRQBIPfwilmixC4y0pUwcBpqd noJhfQSZtJkCXvK6yqNCZpg53yepAOrzRm4mXQWscp/foeJOyK7ppjIC7W5lCfkSPu91wfuTKu2 +OEh8khB8VHJ4sMhf087eBwuR7+m6uxVw+w8jofWtmpbuoMeVkt4gJyd9EzmvjA+dhL1lmseRYZ DtCuUDvmtl6N/wYf+Ja51YfAsTRnGcmy0y1+k5iZLovr0WP3RjV/G3vW8FVEDShYb/+VIelQtHd 278ay9FT08W9VYK/tLaxyqZEfjANsxWc2IWHNAReselk87t1D8nKmoJReBt13SVsPsu/Pg0FFkg XQPrv30kO3uvEFjVCgb4HDs8rMrzwu00vghWY= X-Received: by 2002:a05:600c:4f16:b0:48f:e230:2a26 with SMTP id 5b1f17b1804b1-490360e786bmr36579265e9.33.1779360669426; Thu, 21 May 2026 03:51:09 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:5485:d4b2:c087:b497]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49035c1dad3sm20540925e9.1.2026.05.21.03.51.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 03:51:08 -0700 (PDT) Date: Thu, 21 May 2026 12:51:06 +0200 From: Simona Vetter To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jyri Sarha , Tomi Valkeinen , Devarsh Thakkar , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 11/28] drm/atomic_sro: Create kernel parameter to force or disable readout Message-ID: Mail-Followup-To: Maxime Ripard , Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jyri Sarha , Tomi Valkeinen , Devarsh Thakkar , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20260423-drm-state-readout-v2-0-8549f87cb978@kernel.org> <20260423-drm-state-readout-v2-11-8549f87cb978@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260423-drm-state-readout-v2-11-8549f87cb978@kernel.org> X-Operating-System: Linux phenom 6.19.10+deb14-amd64 On Thu, Apr 23, 2026 at 12:18:24PM +0200, Maxime Ripard wrote: > The hardware state readout is useful, but might need to be disabled > in case of bugs, or its checks relaxed during development when not > all hooks are implemented yet. > > Add a module parameter to control the readout behavior: it can be > disabled entirely, or the checks for missing compare or readout hooks > can be skipped independently. > > Suggested-by: Simona Vetter > Signed-off-by: Maxime Ripard > --- > drivers/gpu/drm/drm_atomic_sro.c | 36 ++++++++++++++++++++++++++++++++++++ > include/drm/drm_atomic_sro.h | 2 ++ > 2 files changed, 38 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_sro.c b/drivers/gpu/drm/drm_atomic_sro.c > index 177b97d451f5..a46f06e75c4e 100644 > --- a/drivers/gpu/drm/drm_atomic_sro.c > +++ b/drivers/gpu/drm/drm_atomic_sro.c > @@ -11,10 +11,46 @@ > #include > > #include "drm_internal.h" > #include "drm_crtc_internal.h" > > +enum drm_atomic_readout_status { > + DRM_ATOMIC_READOUT_DISABLED = 0, > + DRM_ATOMIC_READOUT_ENABLED, > + DRM_ATOMIC_READOUT_SKIP_MISSING_COMPARE, > + DRM_ATOMIC_READOUT_SKIP_MISSING_READOUT, > +}; > + > +static unsigned int atomic_readout = DRM_ATOMIC_READOUT_ENABLED; > +module_param_unsafe(atomic_readout, uint, 0); Default is actually 0 here. I agree with the docs that it should be 1, since drivers have an explicit opt-in through setting the main entry point in drm_mode_config_funcs. I was also pondering whether we should have a compare-only mode, but the issue is that once you build a driver on readout being a thing, that could blow up. So I think that should be left as a per-driver tunable. That's also why this must be a unsafe debug option, it might actually break the driver. > +MODULE_PARM_DESC(atomic_readout, > + "Enable Hardware State Readout (0 = disabled, 1 = enabled, 2 = ignore missing compares, 3 = ignore missing readouts and compares, default = 1)"); > + > +/** > + * drm_atomic_sro_device_can_readout - check if a device supports hardware state readout > + * @dev: DRM device to check > + * > + * Verifies that the device is an atomic driver, that readout is > + * enabled, and that all KMS objects implement the relevant hooks. > + * > + * RETURNS: > + * > + * True if the device supports full hardware state readout, false > + * otherwise. > + */ > +bool drm_atomic_sro_device_can_readout(struct drm_device *dev) > +{ > + if (!drm_core_check_feature(dev, DRIVER_ATOMIC)) I think this should be drm_drv_uses_atomic_modeset() since it's an internal check, not an uapi check. With the two issues addressed: Reviewed-by: Simona Vetter > + return false; > + > + if (atomic_readout == DRM_ATOMIC_READOUT_DISABLED) > + return false; > + > + return true; > +} > +EXPORT_SYMBOL(drm_atomic_sro_device_can_readout); > + > struct __drm_atomic_sro_plane { > struct drm_plane *ptr; > struct drm_plane_state *state; > }; > > diff --git a/include/drm/drm_atomic_sro.h b/include/drm/drm_atomic_sro.h > index 5a9333a05796..6e5262384c71 100644 > --- a/include/drm/drm_atomic_sro.h > +++ b/include/drm/drm_atomic_sro.h > @@ -13,10 +13,12 @@ struct drm_plane; > struct drm_plane_state; > struct drm_printer; > struct drm_private_obj; > struct drm_private_state; > > +bool drm_atomic_sro_device_can_readout(struct drm_device *dev); > + > struct drm_atomic_sro_state *drm_atomic_sro_state_alloc(struct drm_device *dev); > void drm_atomic_sro_state_free(struct drm_atomic_sro_state *state); > void drm_atomic_sro_state_print(const struct drm_atomic_sro_state *state, > struct drm_printer *p); > > > -- > 2.53.0 > -- Simona Vetter Software Engineer http://blog.ffwll.ch