Hello Yifan Zhang, The patch 068ea8bdc0aa: "drm/amd/pm: add smu_v13_0_5_ppt implementation" from Jan 21, 2022, leads to the following Smatch static checker warning: drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_5_ppt.c:444 smu_v13_0_5_set_watermarks_table() warn: duplicate check 'clock_ranges' (previous on line 441) drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_5_ppt.c 434 static int smu_v13_0_5_set_watermarks_table(struct smu_context *smu, 435 struct pp_smu_wm_range_sets *clock_ranges) 436 { 437 int i; 438 int ret = 0; 439 Watermarks_t *table = smu->smu_table.watermarks_table; 440 441 if (!table || !clock_ranges) ^^^^^^^^^^^^^ 442 return -EINVAL; 443 --> 444 if (clock_ranges) { ^^^^^^^^^^^^ This is always true. 445 if (clock_ranges->num_reader_wm_sets > NUM_WM_RANGES || 446 clock_ranges->num_writer_wm_sets > NUM_WM_RANGES) 447 return -EINVAL; 448 449 for (i = 0; i < clock_ranges->num_reader_wm_sets; i++) { 450 table->WatermarkRow[WM_DCFCLK][i].MinClock = 451 clock_ranges->reader_wm_sets[i].min_drain_clk_mhz; 452 table->WatermarkRow[WM_DCFCLK][i].MaxClock = 453 clock_ranges->reader_wm_sets[i].max_drain_clk_mhz; 454 table->WatermarkRow[WM_DCFCLK][i].MinMclk = 455 clock_ranges->reader_wm_sets[i].min_fill_clk_mhz; 456 table->WatermarkRow[WM_DCFCLK][i].MaxMclk = 457 clock_ranges->reader_wm_sets[i].max_fill_clk_mhz; 458 459 table->WatermarkRow[WM_DCFCLK][i].WmSetting = 460 clock_ranges->reader_wm_sets[i].wm_inst; 461 } 462 463 for (i = 0; i < clock_ranges->num_writer_wm_sets; i++) { 464 table->WatermarkRow[WM_SOCCLK][i].MinClock = 465 clock_ranges->writer_wm_sets[i].min_fill_clk_mhz; 466 table->WatermarkRow[WM_SOCCLK][i].MaxClock = 467 clock_ranges->writer_wm_sets[i].max_fill_clk_mhz; 468 table->WatermarkRow[WM_SOCCLK][i].MinMclk = 469 clock_ranges->writer_wm_sets[i].min_drain_clk_mhz; 470 table->WatermarkRow[WM_SOCCLK][i].MaxMclk = 471 clock_ranges->writer_wm_sets[i].max_drain_clk_mhz; 472 473 table->WatermarkRow[WM_SOCCLK][i].WmSetting = 474 clock_ranges->writer_wm_sets[i].wm_inst; 475 } 476 477 smu->watermarks_bitmap |= WATERMARKS_EXIST; 478 } 479 480 /* pass data to smu controller */ 481 if ((smu->watermarks_bitmap & WATERMARKS_EXIST) && 482 !(smu->watermarks_bitmap & WATERMARKS_LOADED)) { 483 ret = smu_cmn_write_watermarks_table(smu); 484 if (ret) { 485 dev_err(smu->adev->dev, "Failed to update WMTABLE!"); 486 return ret; 487 } 488 smu->watermarks_bitmap |= WATERMARKS_LOADED; 489 } 490 491 return 0; 492 } regards, dan carpenter