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.