From: kbuild test robot <lkp@intel.com>
To: Mikita Lipski <mikita.lipski@amd.com>
Cc: David Francis <David.Francis@amd.com>,
kbuild-all@lists.01.org, dri-devel@lists.freedesktop.org,
Nikola Cornij <nikola.cornij@amd.com>
Subject: [radeon-alex:amd-staging-drm-next 852/868] drivers/gpu/drm/drm_dsc.c:435:16: note: in expansion of macro 'max'
Date: Tue, 19 Nov 2019 08:57:11 +0800 [thread overview]
Message-ID: <201911190810.cb9chd8J%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 9025 bytes --]
tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next
head: c749b504bf85eee2edc857c4549d83d34730113c
commit: 8d47a4e3262de5f749806245d087dc8aa5ae2253 [852/868] drm/dsc: Update drm_dsc to reflect native 4.2.0 DSC spec
config: riscv-defconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 8d47a4e3262de5f749806245d087dc8aa5ae2253
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from drivers/gpu/drm/drm_dsc.c:9:0:
drivers/gpu/drm/drm_dsc.c: In function 'drm_dsc_compute_rc_parameters':
include/linux/kernel.h:821:29: warning: comparison of distinct pointer types lacks a cast
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:835:4: note: in expansion of macro '__typecheck'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~
include/linux/kernel.h:845:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:861:19: note: in expansion of macro '__careful_cmp'
#define max(x, y) __careful_cmp(x, y, >)
^~~~~~~~~~~~~
>> drivers/gpu/drm/drm_dsc.c:435:16: note: in expansion of macro 'max'
max_offset = max(max_offset,
^~~
include/linux/kernel.h:821:29: warning: comparison of distinct pointer types lacks a cast
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:835:4: note: in expansion of macro '__typecheck'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~
include/linux/kernel.h:845:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:861:19: note: in expansion of macro '__careful_cmp'
#define max(x, y) __careful_cmp(x, y, >)
^~~~~~~~~~~~~
drivers/gpu/drm/drm_dsc.c:440:16: note: in expansion of macro 'max'
max_offset = max(max_offset,
^~~
vim +/max +435 drivers/gpu/drm/drm_dsc.c
279
280 /**
281 * drm_dsc_compute_rc_parameters() - Write rate control
282 * parameters to the dsc configuration defined in
283 * &struct drm_dsc_config in accordance with the DSC 1.2
284 * specification. Some configuration fields must be present
285 * beforehand.
286 *
287 * @vdsc_cfg:
288 * DSC Configuration data partially filled by driver
289 */
290 int drm_dsc_compute_rc_parameters(struct drm_dsc_config *vdsc_cfg)
291 {
292 unsigned long groups_per_line = 0;
293 unsigned long groups_total = 0;
294 unsigned long num_extra_mux_bits = 0;
295 unsigned long slice_bits = 0;
296 unsigned long hrd_delay = 0;
297 unsigned long final_scale = 0;
298 unsigned long rbs_min = 0;
299 unsigned long max_offset = 0;
300
301 if (vdsc_cfg->native_420 || vdsc_cfg->native_422) {
302 /* Number of groups used to code each line of a slice */
303 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width / 2,
304 DSC_RC_PIXELS_PER_GROUP);
305
306 /* chunksize in Bytes */
307 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width / 2 *
308 vdsc_cfg->bits_per_pixel,
309 (8 * 16));
310 } else {
311 /* Number of groups used to code each line of a slice */
312 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width,
313 DSC_RC_PIXELS_PER_GROUP);
314
315 /* chunksize in Bytes */
316 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width *
317 vdsc_cfg->bits_per_pixel,
318 (8 * 16));
319 }
320
321 if (vdsc_cfg->convert_rgb)
322 num_extra_mux_bits = 3 * (vdsc_cfg->mux_word_size +
323 (4 * vdsc_cfg->bits_per_component + 4)
324 - 2);
325 else if (vdsc_cfg->native_422)
326 num_extra_mux_bits = 4 * vdsc_cfg->mux_word_size +
327 (4 * vdsc_cfg->bits_per_component + 4) +
328 3 * (4 * vdsc_cfg->bits_per_component) - 2;
329 else
330 num_extra_mux_bits = 3 * vdsc_cfg->mux_word_size +
331 (4 * vdsc_cfg->bits_per_component + 4) +
332 2 * (4 * vdsc_cfg->bits_per_component) - 2;
333 /* Number of bits in one Slice */
334 slice_bits = 8 * vdsc_cfg->slice_chunk_size * vdsc_cfg->slice_height;
335
336 while ((num_extra_mux_bits > 0) &&
337 ((slice_bits - num_extra_mux_bits) % vdsc_cfg->mux_word_size))
338 num_extra_mux_bits--;
339
340 if (groups_per_line < vdsc_cfg->initial_scale_value - 8)
341 vdsc_cfg->initial_scale_value = groups_per_line + 8;
342
343 /* scale_decrement_interval calculation according to DSC spec 1.11 */
344 if (vdsc_cfg->initial_scale_value > 8)
345 vdsc_cfg->scale_decrement_interval = groups_per_line /
346 (vdsc_cfg->initial_scale_value - 8);
347 else
348 vdsc_cfg->scale_decrement_interval = DSC_SCALE_DECREMENT_INTERVAL_MAX;
349
350 vdsc_cfg->final_offset = vdsc_cfg->rc_model_size -
351 (vdsc_cfg->initial_xmit_delay *
352 vdsc_cfg->bits_per_pixel + 8) / 16 + num_extra_mux_bits;
353
354 if (vdsc_cfg->final_offset >= vdsc_cfg->rc_model_size) {
355 DRM_DEBUG_KMS("FinalOfs < RcModelSze for this InitialXmitDelay\n");
356 return -ERANGE;
357 }
358
359 final_scale = (vdsc_cfg->rc_model_size * 8) /
360 (vdsc_cfg->rc_model_size - vdsc_cfg->final_offset);
361 if (vdsc_cfg->slice_height > 1)
362 /*
363 * NflBpgOffset is 16 bit value with 11 fractional bits
364 * hence we multiply by 2^11 for preserving the
365 * fractional part
366 */
367 vdsc_cfg->nfl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->first_line_bpg_offset << 11),
368 (vdsc_cfg->slice_height - 1));
369 else
370 vdsc_cfg->nfl_bpg_offset = 0;
371
372 /* 2^16 - 1 */
373 if (vdsc_cfg->nfl_bpg_offset > 65535) {
374 DRM_DEBUG_KMS("NflBpgOffset is too large for this slice height\n");
375 return -ERANGE;
376 }
377
378 if (vdsc_cfg->slice_height > 2)
379 vdsc_cfg->nsl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->second_line_bpg_offset << 11),
380 (vdsc_cfg->slice_height - 1));
381 else
382 vdsc_cfg->nsl_bpg_offset = 0;
383
384 if (vdsc_cfg->nsl_bpg_offset > 65535) {
385 DRM_DEBUG_KMS("NslBpgOffset is too large for this slice height\n");
386 return -ERANGE;
387 }
388
389 /* Number of groups used to code the entire slice */
390 groups_total = groups_per_line * vdsc_cfg->slice_height;
391
392 /* slice_bpg_offset is 16 bit value with 11 fractional bits */
393 vdsc_cfg->slice_bpg_offset = DIV_ROUND_UP(((vdsc_cfg->rc_model_size -
394 vdsc_cfg->initial_offset +
395 num_extra_mux_bits) << 11),
396 groups_total);
397
398 if (final_scale > 9) {
399 /*
400 * ScaleIncrementInterval =
401 * finaloffset/((NflBpgOffset + SliceBpgOffset)*8(finalscale - 1.125))
402 * as (NflBpgOffset + SliceBpgOffset) has 11 bit fractional value,
403 * we need divide by 2^11 from pstDscCfg values
404 */
405 vdsc_cfg->scale_increment_interval =
406 (vdsc_cfg->final_offset * (1 << 11)) /
407 ((vdsc_cfg->nfl_bpg_offset +
408 vdsc_cfg->nsl_bpg_offset +
409 vdsc_cfg->slice_bpg_offset) *
410 (final_scale - 9));
411 } else {
412 /*
413 * If finalScaleValue is less than or equal to 9, a value of 0 should
414 * be used to disable the scale increment at the end of the slice
415 */
416 vdsc_cfg->scale_increment_interval = 0;
417 }
418
419 if (vdsc_cfg->scale_increment_interval > 65535) {
420 DRM_DEBUG_KMS("ScaleIncrementInterval is large for slice height\n");
421 return -ERANGE;
422 }
423
424 /*
425 * DSC spec mentions that bits_per_pixel specifies the target
426 * bits/pixel (bpp) rate that is used by the encoder,
427 * in steps of 1/16 of a bit per pixel
428 */
429 if (vdsc_cfg->dsc_version_minor == 2 && (vdsc_cfg->native_420 || vdsc_cfg->native_422)) {
430
431 max_offset = compute_offset(vdsc_cfg, DSC_RC_PIXELS_PER_GROUP, groups_per_line,
432 DIV_ROUND_UP(vdsc_cfg->initial_xmit_delay,
433 DSC_RC_PIXELS_PER_GROUP));
434
> 435 max_offset = max(max_offset,
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 18442 bytes --]
[-- Attachment #3: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [radeon-alex:amd-staging-drm-next 852/868] drivers/gpu/drm/drm_dsc.c:435:16: note: in expansion of macro 'max'
Date: Tue, 19 Nov 2019 08:57:11 +0800 [thread overview]
Message-ID: <201911190810.cb9chd8J%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 9240 bytes --]
tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next
head: c749b504bf85eee2edc857c4549d83d34730113c
commit: 8d47a4e3262de5f749806245d087dc8aa5ae2253 [852/868] drm/dsc: Update drm_dsc to reflect native 4.2.0 DSC spec
config: riscv-defconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 8d47a4e3262de5f749806245d087dc8aa5ae2253
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from drivers/gpu/drm/drm_dsc.c:9:0:
drivers/gpu/drm/drm_dsc.c: In function 'drm_dsc_compute_rc_parameters':
include/linux/kernel.h:821:29: warning: comparison of distinct pointer types lacks a cast
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:835:4: note: in expansion of macro '__typecheck'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~
include/linux/kernel.h:845:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:861:19: note: in expansion of macro '__careful_cmp'
#define max(x, y) __careful_cmp(x, y, >)
^~~~~~~~~~~~~
>> drivers/gpu/drm/drm_dsc.c:435:16: note: in expansion of macro 'max'
max_offset = max(max_offset,
^~~
include/linux/kernel.h:821:29: warning: comparison of distinct pointer types lacks a cast
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
^
include/linux/kernel.h:835:4: note: in expansion of macro '__typecheck'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~
include/linux/kernel.h:845:24: note: in expansion of macro '__safe_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~
include/linux/kernel.h:861:19: note: in expansion of macro '__careful_cmp'
#define max(x, y) __careful_cmp(x, y, >)
^~~~~~~~~~~~~
drivers/gpu/drm/drm_dsc.c:440:16: note: in expansion of macro 'max'
max_offset = max(max_offset,
^~~
vim +/max +435 drivers/gpu/drm/drm_dsc.c
279
280 /**
281 * drm_dsc_compute_rc_parameters() - Write rate control
282 * parameters to the dsc configuration defined in
283 * &struct drm_dsc_config in accordance with the DSC 1.2
284 * specification. Some configuration fields must be present
285 * beforehand.
286 *
287 * @vdsc_cfg:
288 * DSC Configuration data partially filled by driver
289 */
290 int drm_dsc_compute_rc_parameters(struct drm_dsc_config *vdsc_cfg)
291 {
292 unsigned long groups_per_line = 0;
293 unsigned long groups_total = 0;
294 unsigned long num_extra_mux_bits = 0;
295 unsigned long slice_bits = 0;
296 unsigned long hrd_delay = 0;
297 unsigned long final_scale = 0;
298 unsigned long rbs_min = 0;
299 unsigned long max_offset = 0;
300
301 if (vdsc_cfg->native_420 || vdsc_cfg->native_422) {
302 /* Number of groups used to code each line of a slice */
303 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width / 2,
304 DSC_RC_PIXELS_PER_GROUP);
305
306 /* chunksize in Bytes */
307 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width / 2 *
308 vdsc_cfg->bits_per_pixel,
309 (8 * 16));
310 } else {
311 /* Number of groups used to code each line of a slice */
312 groups_per_line = DIV_ROUND_UP(vdsc_cfg->slice_width,
313 DSC_RC_PIXELS_PER_GROUP);
314
315 /* chunksize in Bytes */
316 vdsc_cfg->slice_chunk_size = DIV_ROUND_UP(vdsc_cfg->slice_width *
317 vdsc_cfg->bits_per_pixel,
318 (8 * 16));
319 }
320
321 if (vdsc_cfg->convert_rgb)
322 num_extra_mux_bits = 3 * (vdsc_cfg->mux_word_size +
323 (4 * vdsc_cfg->bits_per_component + 4)
324 - 2);
325 else if (vdsc_cfg->native_422)
326 num_extra_mux_bits = 4 * vdsc_cfg->mux_word_size +
327 (4 * vdsc_cfg->bits_per_component + 4) +
328 3 * (4 * vdsc_cfg->bits_per_component) - 2;
329 else
330 num_extra_mux_bits = 3 * vdsc_cfg->mux_word_size +
331 (4 * vdsc_cfg->bits_per_component + 4) +
332 2 * (4 * vdsc_cfg->bits_per_component) - 2;
333 /* Number of bits in one Slice */
334 slice_bits = 8 * vdsc_cfg->slice_chunk_size * vdsc_cfg->slice_height;
335
336 while ((num_extra_mux_bits > 0) &&
337 ((slice_bits - num_extra_mux_bits) % vdsc_cfg->mux_word_size))
338 num_extra_mux_bits--;
339
340 if (groups_per_line < vdsc_cfg->initial_scale_value - 8)
341 vdsc_cfg->initial_scale_value = groups_per_line + 8;
342
343 /* scale_decrement_interval calculation according to DSC spec 1.11 */
344 if (vdsc_cfg->initial_scale_value > 8)
345 vdsc_cfg->scale_decrement_interval = groups_per_line /
346 (vdsc_cfg->initial_scale_value - 8);
347 else
348 vdsc_cfg->scale_decrement_interval = DSC_SCALE_DECREMENT_INTERVAL_MAX;
349
350 vdsc_cfg->final_offset = vdsc_cfg->rc_model_size -
351 (vdsc_cfg->initial_xmit_delay *
352 vdsc_cfg->bits_per_pixel + 8) / 16 + num_extra_mux_bits;
353
354 if (vdsc_cfg->final_offset >= vdsc_cfg->rc_model_size) {
355 DRM_DEBUG_KMS("FinalOfs < RcModelSze for this InitialXmitDelay\n");
356 return -ERANGE;
357 }
358
359 final_scale = (vdsc_cfg->rc_model_size * 8) /
360 (vdsc_cfg->rc_model_size - vdsc_cfg->final_offset);
361 if (vdsc_cfg->slice_height > 1)
362 /*
363 * NflBpgOffset is 16 bit value with 11 fractional bits
364 * hence we multiply by 2^11 for preserving the
365 * fractional part
366 */
367 vdsc_cfg->nfl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->first_line_bpg_offset << 11),
368 (vdsc_cfg->slice_height - 1));
369 else
370 vdsc_cfg->nfl_bpg_offset = 0;
371
372 /* 2^16 - 1 */
373 if (vdsc_cfg->nfl_bpg_offset > 65535) {
374 DRM_DEBUG_KMS("NflBpgOffset is too large for this slice height\n");
375 return -ERANGE;
376 }
377
378 if (vdsc_cfg->slice_height > 2)
379 vdsc_cfg->nsl_bpg_offset = DIV_ROUND_UP((vdsc_cfg->second_line_bpg_offset << 11),
380 (vdsc_cfg->slice_height - 1));
381 else
382 vdsc_cfg->nsl_bpg_offset = 0;
383
384 if (vdsc_cfg->nsl_bpg_offset > 65535) {
385 DRM_DEBUG_KMS("NslBpgOffset is too large for this slice height\n");
386 return -ERANGE;
387 }
388
389 /* Number of groups used to code the entire slice */
390 groups_total = groups_per_line * vdsc_cfg->slice_height;
391
392 /* slice_bpg_offset is 16 bit value with 11 fractional bits */
393 vdsc_cfg->slice_bpg_offset = DIV_ROUND_UP(((vdsc_cfg->rc_model_size -
394 vdsc_cfg->initial_offset +
395 num_extra_mux_bits) << 11),
396 groups_total);
397
398 if (final_scale > 9) {
399 /*
400 * ScaleIncrementInterval =
401 * finaloffset/((NflBpgOffset + SliceBpgOffset)*8(finalscale - 1.125))
402 * as (NflBpgOffset + SliceBpgOffset) has 11 bit fractional value,
403 * we need divide by 2^11 from pstDscCfg values
404 */
405 vdsc_cfg->scale_increment_interval =
406 (vdsc_cfg->final_offset * (1 << 11)) /
407 ((vdsc_cfg->nfl_bpg_offset +
408 vdsc_cfg->nsl_bpg_offset +
409 vdsc_cfg->slice_bpg_offset) *
410 (final_scale - 9));
411 } else {
412 /*
413 * If finalScaleValue is less than or equal to 9, a value of 0 should
414 * be used to disable the scale increment at the end of the slice
415 */
416 vdsc_cfg->scale_increment_interval = 0;
417 }
418
419 if (vdsc_cfg->scale_increment_interval > 65535) {
420 DRM_DEBUG_KMS("ScaleIncrementInterval is large for slice height\n");
421 return -ERANGE;
422 }
423
424 /*
425 * DSC spec mentions that bits_per_pixel specifies the target
426 * bits/pixel (bpp) rate that is used by the encoder,
427 * in steps of 1/16 of a bit per pixel
428 */
429 if (vdsc_cfg->dsc_version_minor == 2 && (vdsc_cfg->native_420 || vdsc_cfg->native_422)) {
430
431 max_offset = compute_offset(vdsc_cfg, DSC_RC_PIXELS_PER_GROUP, groups_per_line,
432 DIV_ROUND_UP(vdsc_cfg->initial_xmit_delay,
433 DSC_RC_PIXELS_PER_GROUP));
434
> 435 max_offset = max(max_offset,
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 18442 bytes --]
next reply other threads:[~2019-11-19 0:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-19 0:57 kbuild test robot [this message]
2019-11-19 0:57 ` [radeon-alex:amd-staging-drm-next 852/868] drivers/gpu/drm/drm_dsc.c:435:16: note: in expansion of macro 'max' kbuild test robot
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=201911190810.cb9chd8J%lkp@intel.com \
--to=lkp@intel.com \
--cc=David.Francis@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kbuild-all@lists.01.org \
--cc=mikita.lipski@amd.com \
--cc=nikola.cornij@amd.com \
/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.