All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Alex Hung <alex.hung@amd.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Alex Deucher <alexander.deucher@amd.com>,
	Bhawanpreet Lakha <bhawanpreet.lakha@amd.com>,
	Chenyu Chen <chen-yu.chen@amd.com>
Subject: drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c:3556:37-39: WARNING !A || A && B is equivalent to !A || B
Date: Sat, 19 Sep 2026 10:04:47 +0200	[thread overview]
Message-ID: <202609190901.yKTzhsGz-lkp@intel.com> (raw)

Hi Alex,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   40288c9206c17eb66a603262e06a58d300d0f279
commit: 0e967e086e7519966816b76a6309b4516d365aa5 drm/amd/display: Extract connector and encoder code to amdgpu_dm_connector
date:   3 months ago
config: x86_64-randconfig-103-20260911 (https://download.01.org/0day-ci/archive/20260919/202609190901.yKTzhsGz-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 0e967e086e75 ("drm/amd/display: Extract connector and encoder code to amdgpu_dm_connector")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609190901.yKTzhsGz-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c:3556:37-39: WARNING !A || A && B is equivalent to !A || B
--
>> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c:1382:5-19: ERROR: invalid reference to the index variable of the iterator on line 1367

vim +3556 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c

  3425	
  3426	/**
  3427	 * amdgpu_dm_update_freesync_caps - Update Freesync capabilities
  3428	 *
  3429	 * @connector: Connector to query.
  3430	 * @drm_edid: DRM EDID from monitor
  3431	 * @do_mccs: Controls whether MCCS (Monitor Control Command Set) over
  3432	 *	      DDC (Display Data Channel) transactions are performed. When true,
  3433	 *	      the driver queries the monitor to get or update additional FreeSync
  3434	 *	      capability information. When false, these transactions are skipped.
  3435	 *
  3436	 * Amdgpu supports Freesync in DP and HDMI displays, and it is required to keep
  3437	 * track of some of the display information in the internal data struct used by
  3438	 * amdgpu_dm. This function checks which type of connector we need to set the
  3439	 * FreeSync parameters.
  3440	 */
  3441	void amdgpu_dm_update_freesync_caps(struct drm_connector *connector,
  3442					    const struct drm_edid *drm_edid, bool do_mccs)
  3443	{
  3444		int i = 0;
  3445		struct amdgpu_dm_connector *amdgpu_dm_connector =
  3446				to_amdgpu_dm_connector(connector);
  3447		struct dm_connector_state *dm_con_state = NULL;
  3448		struct dc_sink *sink;
  3449		struct amdgpu_device *adev = drm_to_adev(connector->dev);
  3450		struct amdgpu_hdmi_vsdb_info vsdb_info = {0};
  3451		const struct edid *edid;
  3452		bool freesync_capable = false;
  3453		enum adaptive_sync_type as_type = ADAPTIVE_SYNC_TYPE_NONE;
  3454	
  3455		if (!connector->state) {
  3456			drm_err(adev_to_drm(adev), "%s - Connector has no state", __func__);
  3457			goto update;
  3458		}
  3459	
  3460		sink = amdgpu_dm_connector->dc_sink ?
  3461			amdgpu_dm_connector->dc_sink :
  3462			amdgpu_dm_connector->dc_em_sink;
  3463	
  3464		drm_edid_connector_update(connector, drm_edid);
  3465	
  3466		if (!drm_edid || !sink) {
  3467			dm_con_state = to_dm_connector_state(connector->state);
  3468	
  3469			amdgpu_dm_connector->min_vfreq = 0;
  3470			amdgpu_dm_connector->max_vfreq = 0;
  3471			freesync_capable = false;
  3472	
  3473			goto update;
  3474		}
  3475	
  3476		dm_con_state = to_dm_connector_state(connector->state);
  3477	
  3478		if (!adev->dm.freesync_module || !dc_supports_vrr(sink->ctx->dce_version))
  3479			goto update;
  3480	
  3481		/* FIXME: Get rid of drm_edid_raw() */
  3482		edid = drm_edid_raw(drm_edid);
  3483	
  3484		/* Some eDP panels only have the refresh rate range info in DisplayID */
  3485		if ((connector->display_info.monitor_range.min_vfreq == 0 ||
  3486		     connector->display_info.monitor_range.max_vfreq == 0))
  3487			parse_edid_displayid_vrr(connector, edid);
  3488	
  3489		if (edid && (sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT ||
  3490			     sink->sink_signal == SIGNAL_TYPE_EDP)) {
  3491			if (amdgpu_dm_connector->dc_link &&
  3492			    amdgpu_dm_connector->dc_link->dpcd_caps.allow_invalid_MSA_timing_param) {
  3493				amdgpu_dm_connector->min_vfreq = connector->display_info.monitor_range.min_vfreq;
  3494				amdgpu_dm_connector->max_vfreq = connector->display_info.monitor_range.max_vfreq;
  3495				if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
  3496					freesync_capable = true;
  3497			}
  3498	
  3499			get_amd_vsdb(amdgpu_dm_connector, &vsdb_info);
  3500	
  3501			if (vsdb_info.replay_mode) {
  3502				amdgpu_dm_connector->vsdb_info.replay_mode = vsdb_info.replay_mode;
  3503				amdgpu_dm_connector->vsdb_info.amd_vsdb_version = vsdb_info.amd_vsdb_version;
  3504				amdgpu_dm_connector->as_type = ADAPTIVE_SYNC_TYPE_EDP;
  3505			}
  3506	
  3507		} else if (drm_edid && sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A) {
  3508			i = parse_hdmi_amd_vsdb(amdgpu_dm_connector, edid, &vsdb_info);
  3509			if (i >= 0) {
  3510				amdgpu_dm_connector->vsdb_info = vsdb_info;
  3511				sink->edid_caps.freesync_vcp_code = vsdb_info.freesync_mccs_vcp_code;
  3512	
  3513				if (vsdb_info.freesync_supported) {
  3514					amdgpu_dm_connector->min_vfreq = vsdb_info.min_refresh_rate_hz;
  3515					amdgpu_dm_connector->max_vfreq = vsdb_info.max_refresh_rate_hz;
  3516					if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
  3517						freesync_capable = true;
  3518	
  3519					connector->display_info.monitor_range.min_vfreq = vsdb_info.min_refresh_rate_hz;
  3520					connector->display_info.monitor_range.max_vfreq = vsdb_info.max_refresh_rate_hz;
  3521				}
  3522			}
  3523		}
  3524	
  3525		if (amdgpu_dm_connector->dc_link)
  3526			as_type = dm_get_adaptive_sync_support_type(amdgpu_dm_connector->dc_link);
  3527	
  3528		if (as_type == FREESYNC_TYPE_PCON_IN_WHITELIST) {
  3529			i = parse_hdmi_amd_vsdb(amdgpu_dm_connector, edid, &vsdb_info);
  3530			if (i >= 0) {
  3531				amdgpu_dm_connector->vsdb_info = vsdb_info;
  3532				sink->edid_caps.freesync_vcp_code = vsdb_info.freesync_mccs_vcp_code;
  3533	
  3534				if (vsdb_info.freesync_supported && vsdb_info.amd_vsdb_version > 0) {
  3535					amdgpu_dm_connector->pack_sdp_v1_3 = true;
  3536					amdgpu_dm_connector->as_type = as_type;
  3537	
  3538					amdgpu_dm_connector->min_vfreq = vsdb_info.min_refresh_rate_hz;
  3539					amdgpu_dm_connector->max_vfreq = vsdb_info.max_refresh_rate_hz;
  3540					if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
  3541						freesync_capable = true;
  3542	
  3543					connector->display_info.monitor_range.min_vfreq = vsdb_info.min_refresh_rate_hz;
  3544					connector->display_info.monitor_range.max_vfreq = vsdb_info.max_refresh_rate_hz;
  3545				}
  3546			}
  3547		}
  3548	
  3549		/* Handle MCCS */
  3550		if (do_mccs)
  3551			dm_helpers_read_mccs_caps(adev->dm.dc->ctx, amdgpu_dm_connector->dc_link, sink);
  3552	
  3553		if ((sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A ||
  3554			as_type == FREESYNC_TYPE_PCON_IN_WHITELIST) &&
  3555			(!sink->edid_caps.freesync_vcp_code ||
> 3556			(sink->edid_caps.freesync_vcp_code && !sink->mccs_caps.freesync_supported)))

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2026-09-19  8:05 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202609190901.yKTzhsGz-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alex.hung@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=bhawanpreet.lakha@amd.com \
    --cc=chen-yu.chen@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.