[PATCH] drm/i915/hdcp: Handle HDCP Line Rekeying for HDCP 1.4

kernel test robot lkp at intel.com
Thu Nov 7 01:54:24 UTC 2024


Hi Suraj,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20241106]
[cannot apply to linus/master drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.12-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Suraj-Kandpal/drm-i915-hdcp-Handle-HDCP-Line-Rekeying-for-HDCP-1-4/20241107-015848
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
patch link:    https://lore.kernel.org/r/20241106174041.860223-1-suraj.kandpal%40intel.com
patch subject: [PATCH] drm/i915/hdcp: Handle HDCP Line Rekeying for HDCP 1.4
config: i386-defconfig (https://download.01.org/0day-ci/archive/20241107/202411070920.hut0uhH0-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241107/202411070920.hut0uhH0-lkp@intel.com/reproduce)

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
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411070920.hut0uhH0-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/display/intel_hdcp.c:12:
   In file included from include/linux/i2c.h:19:
   In file included from include/linux/regulator/consumer.h:35:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:21:
   In file included from include/linux/mm.h:2213:
   include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: warning: variable 'rekey_bit' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:211:2: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     212 |          IS_DISPLAY_STEP((__i915), (from), (until)))
         |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:59:35: note: uninitialized use occurs here
      59 |         intel_de_rmw(display, rekey_reg, rekey_bit, enable ? 0 : rekey_bit);
         |                                          ^~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:109:67: note: expanded from macro 'intel_de_rmw'
     109 | #define intel_de_rmw(p,...) __intel_de_rmw(__to_intel_display(p), __VA_ARGS__)
         |                                                                   ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:9: note: remove the 'if' if its condition is always true
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: warning: variable 'rekey_bit' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:211:3: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:190:49: note: expanded from macro 'IS_DISPLAY_VERx100'
     190 | #define IS_DISPLAY_VERx100(__i915, from, until) ( \
         |                                                 ^~~
     191 |         BUILD_BUG_ON_ZERO((from) < 200) + \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     192 |         (DISPLAY_VERx100(__i915) >= (from) && \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     193 |          DISPLAY_VERx100(__i915) <= (until)))
         |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:59:35: note: uninitialized use occurs here
      59 |         intel_de_rmw(display, rekey_reg, rekey_bit, enable ? 0 : rekey_bit);
         |                                          ^~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:109:67: note: expanded from macro 'intel_de_rmw'
     109 | #define intel_de_rmw(p,...) __intel_de_rmw(__to_intel_display(p), __VA_ARGS__)
         |                                                                   ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: note: remove the '&&' if its condition is always true
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^
   drivers/gpu/drm/i915/display/intel_display_device.h:211:3: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |          ^
   drivers/gpu/drm/i915/display/intel_display_device.h:190:49: note: expanded from macro 'IS_DISPLAY_VERx100'
     190 | #define IS_DISPLAY_VERx100(__i915, from, until) ( \
         |                                                 ^
   drivers/gpu/drm/i915/display/intel_hdcp.c:41:15: note: initialize the variable 'rekey_bit' to silence this warning
      41 |         u32 rekey_bit;
         |                      ^
         |                       = 0
>> drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: warning: variable 'rekey_reg' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:211:2: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     212 |          IS_DISPLAY_STEP((__i915), (from), (until)))
         |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:59:24: note: uninitialized use occurs here
      59 |         intel_de_rmw(display, rekey_reg, rekey_bit, enable ? 0 : rekey_bit);
         |                               ^~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:109:67: note: expanded from macro 'intel_de_rmw'
     109 | #define intel_de_rmw(p,...) __intel_de_rmw(__to_intel_display(p), __VA_ARGS__)
         |                                                                   ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:9: note: remove the 'if' if its condition is always true
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: warning: variable 'rekey_reg' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:211:3: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display_device.h:190:49: note: expanded from macro 'IS_DISPLAY_VERx100'
     190 | #define IS_DISPLAY_VERx100(__i915, from, until) ( \
         |                                                 ^~~
     191 |         BUILD_BUG_ON_ZERO((from) < 200) + \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     192 |         (DISPLAY_VERx100(__i915) >= (from) && \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     193 |          DISPLAY_VERx100(__i915) <= (until)))
         |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:59:24: note: uninitialized use occurs here
      59 |         intel_de_rmw(display, rekey_reg, rekey_bit, enable ? 0 : rekey_bit);
         |                               ^~~~~~~~~
   drivers/gpu/drm/i915/display/intel_de.h:109:67: note: expanded from macro 'intel_de_rmw'
     109 | #define intel_de_rmw(p,...) __intel_de_rmw(__to_intel_display(p), __VA_ARGS__)
         |                                                                   ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_hdcp.c:54:13: note: remove the '&&' if its condition is always true
      54 |         } else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
         |                    ^
   drivers/gpu/drm/i915/display/intel_display_device.h:211:3: note: expanded from macro 'IS_DISPLAY_VERx100_STEP'
     211 |         (IS_DISPLAY_VERx100((__i915), (ipver), (ipver)) && \
         |          ^
   drivers/gpu/drm/i915/display/intel_display_device.h:190:49: note: expanded from macro 'IS_DISPLAY_VERx100'
     190 | #define IS_DISPLAY_VERx100(__i915, from, until) ( \
         |                                                 ^
   drivers/gpu/drm/i915/display/intel_hdcp.c:40:2: note: variable 'rekey_reg' is declared here
      40 |         i915_reg_t rekey_reg;
         |         ^
   5 warnings generated.


vim +54 drivers/gpu/drm/i915/display/intel_hdcp.c

    33	
    34	static void
    35	intel_hdcp_adjust_hdcp_line_rekeying(struct intel_encoder *encoder,
    36					     struct intel_hdcp *hdcp,
    37					     bool enable)
    38	{
    39		struct intel_display *display = to_intel_display(encoder);
    40		i915_reg_t rekey_reg;
    41		u32 rekey_bit;
    42	
    43		/* Here we assume HDMI is in TMDS mode of operation */
    44		if (encoder->type != INTEL_OUTPUT_HDMI)
    45			return;
    46	
    47		if (DISPLAY_VER(display) >= 30) {
    48			rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder);
    49			rekey_bit = XE3_TRANS_DDI_HDCP_LINE_REKEY_DISABLE;
    50		} else if (IS_DISPLAY_VERx100_STEP(display, 1401, STEP_B0, STEP_FOREVER) ||
    51			   IS_DISPLAY_VERx100_STEP(display, 2000, STEP_B0, STEP_FOREVER)) {
    52			rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder);
    53			rekey_bit = TRANS_DDI_HDCP_LINE_REKEY_DISABLE;
  > 54		} else if (IS_DISPLAY_VERx100_STEP(display, 1400, STEP_D0, STEP_FOREVER)) {
    55			rekey_reg = MTL_CHICKEN_TRANS(hdcp->cpu_transcoder);
    56			rekey_bit = HDCP_LINE_REKEY_DISABLE;
    57		}
    58	
    59		intel_de_rmw(display, rekey_reg, rekey_bit, enable ? 0 : rekey_bit);
    60	}
    61	

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


More information about the Intel-gfx mailing list