* drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c:3556:37-39: WARNING !A || A && B is equivalent to !A || B
@ 2026-09-19 8:04 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-19 8:04 UTC (permalink / raw)
To: Alex Hung
Cc: oe-kbuild-all, linux-kernel, Alex Deucher, Bhawanpreet Lakha,
Chenyu Chen
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-19 8:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-19 8:04 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c:3556:37-39: WARNING !A || A && B is equivalent to !A || B kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®