tree:
https://github.com/intel/linux-intel-lts.git 5.4/yocto
head: 8e2b1510d279aecb1f89907553283c79c1b2b226
commit: 8e2b1510d279aecb1f89907553283c79c1b2b226 [5/5] drm/edid: Fix DispID tile parsing
for override EDID
config: i386-randconfig-s002-20210814 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
#
https://github.com/intel/linux-intel-lts/commit/8e2b1510d279aecb1f8990755...
git remote add intel-linux-intel-lts
https://github.com/intel/linux-intel-lts.git
git fetch --no-tags intel-linux-intel-lts 5.4/yocto
git checkout 8e2b1510d279aecb1f89907553283c79c1b2b226
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/gpu/drm/drm_edid.c:5539:54: sparse: sparse: incorrect
type in argument 2 (different modifiers) @@ expected char *topology @@ got
unsigned char const * @@
drivers/gpu/drm/drm_edid.c:5539:54: sparse: expected
char *topology
drivers/gpu/drm/drm_edid.c:5539:54: sparse: got unsigned char const *
drivers/gpu/drm/drm_edid.c:5541:65: sparse: sparse: incorrect type in argument 2
(different modifiers) @@ expected char *topology @@ got unsigned char const * @@
drivers/gpu/drm/drm_edid.c:5541:65: sparse: expected char *topology
drivers/gpu/drm/drm_edid.c:5541:65: sparse: got unsigned char const *
vim +5539 drivers/gpu/drm/drm_edid.c
40d9b043a89e23 Dave Airlie 2014-10-20 5504
5e546cd5b3bc76 Dave Airlie 2016-05-03 5505 static int drm_parse_tiled_block(struct
drm_connector *connector,
8e2b1510d279ae Ville Syrjälä 2020-03-13 5506 const struct displayid_block *block)
40d9b043a89e23 Dave Airlie 2014-10-20 5507 {
8e2b1510d279ae Ville Syrjälä 2020-03-13 5508 const struct displayid_tiled_block *tile =
(struct displayid_tiled_block *)block;
40d9b043a89e23 Dave Airlie 2014-10-20 5509 u16 w, h;
40d9b043a89e23 Dave Airlie 2014-10-20 5510 u8 tile_v_loc, tile_h_loc;
40d9b043a89e23 Dave Airlie 2014-10-20 5511 u8 num_v_tile, num_h_tile;
40d9b043a89e23 Dave Airlie 2014-10-20 5512 struct drm_tile_group *tg;
40d9b043a89e23 Dave Airlie 2014-10-20 5513
40d9b043a89e23 Dave Airlie 2014-10-20 5514 w = tile->tile_size[0] |
tile->tile_size[1] << 8;
40d9b043a89e23 Dave Airlie 2014-10-20 5515 h = tile->tile_size[2] |
tile->tile_size[3] << 8;
40d9b043a89e23 Dave Airlie 2014-10-20 5516
40d9b043a89e23 Dave Airlie 2014-10-20 5517 num_v_tile = (tile->topo[0] & 0xf)
| (tile->topo[2] & 0x30);
40d9b043a89e23 Dave Airlie 2014-10-20 5518 num_h_tile = (tile->topo[0] >> 4)
| ((tile->topo[2] >> 2) & 0x30);
40d9b043a89e23 Dave Airlie 2014-10-20 5519 tile_v_loc = (tile->topo[1] & 0xf)
| ((tile->topo[2] & 0x3) << 4);
40d9b043a89e23 Dave Airlie 2014-10-20 5520 tile_h_loc = (tile->topo[1] >> 4)
| (((tile->topo[2] >> 2) & 0x3) << 4);
40d9b043a89e23 Dave Airlie 2014-10-20 5521
40d9b043a89e23 Dave Airlie 2014-10-20 5522 connector->has_tile = true;
40d9b043a89e23 Dave Airlie 2014-10-20 5523 if (tile->tile_cap & 0x80)
40d9b043a89e23 Dave Airlie 2014-10-20 5524 connector->tile_is_single_monitor =
true;
40d9b043a89e23 Dave Airlie 2014-10-20 5525
40d9b043a89e23 Dave Airlie 2014-10-20 5526 connector->num_h_tile = num_h_tile +
1;
40d9b043a89e23 Dave Airlie 2014-10-20 5527 connector->num_v_tile = num_v_tile +
1;
40d9b043a89e23 Dave Airlie 2014-10-20 5528 connector->tile_h_loc = tile_h_loc;
40d9b043a89e23 Dave Airlie 2014-10-20 5529 connector->tile_v_loc = tile_v_loc;
40d9b043a89e23 Dave Airlie 2014-10-20 5530 connector->tile_h_size = w + 1;
40d9b043a89e23 Dave Airlie 2014-10-20 5531 connector->tile_v_size = h + 1;
40d9b043a89e23 Dave Airlie 2014-10-20 5532
40d9b043a89e23 Dave Airlie 2014-10-20 5533 DRM_DEBUG_KMS("tile cap 0x%x\n",
tile->tile_cap);
40d9b043a89e23 Dave Airlie 2014-10-20 5534 DRM_DEBUG_KMS("tile_size %d x
%d\n", w + 1, h + 1);
40d9b043a89e23 Dave Airlie 2014-10-20 5535 DRM_DEBUG_KMS("topo num tiles %dx%d,
location %dx%d\n",
40d9b043a89e23 Dave Airlie 2014-10-20 5536 num_h_tile + 1, num_v_tile + 1,
tile_h_loc, tile_v_loc);
40d9b043a89e23 Dave Airlie 2014-10-20 5537 DRM_DEBUG_KMS("vend %c%c%c\n",
tile->topology_id[0], tile->topology_id[1], tile->topology_id[2]);
40d9b043a89e23 Dave Airlie 2014-10-20 5538
40d9b043a89e23 Dave Airlie 2014-10-20 @5539 tg =
drm_mode_get_tile_group(connector->dev, tile->topology_id);
40d9b043a89e23 Dave Airlie 2014-10-20 5540 if (!tg) {
40d9b043a89e23 Dave Airlie 2014-10-20 5541 tg =
drm_mode_create_tile_group(connector->dev, tile->topology_id);
40d9b043a89e23 Dave Airlie 2014-10-20 5542 }
40d9b043a89e23 Dave Airlie 2014-10-20 5543 if (!tg)
40d9b043a89e23 Dave Airlie 2014-10-20 5544 return -ENOMEM;
40d9b043a89e23 Dave Airlie 2014-10-20 5545
40d9b043a89e23 Dave Airlie 2014-10-20 5546 if (connector->tile_group != tg) {
40d9b043a89e23 Dave Airlie 2014-10-20 5547 /* if we haven't got a pointer,
40d9b043a89e23 Dave Airlie 2014-10-20 5548 take the reference, drop ref to old
tile group */
40d9b043a89e23 Dave Airlie 2014-10-20 5549 if (connector->tile_group) {
40d9b043a89e23 Dave Airlie 2014-10-20 5550
drm_mode_put_tile_group(connector->dev, connector->tile_group);
40d9b043a89e23 Dave Airlie 2014-10-20 5551 }
40d9b043a89e23 Dave Airlie 2014-10-20 5552 connector->tile_group = tg;
40d9b043a89e23 Dave Airlie 2014-10-20 5553 } else
40d9b043a89e23 Dave Airlie 2014-10-20 5554 /* if same tile group, then release the
ref we just took. */
40d9b043a89e23 Dave Airlie 2014-10-20 5555
drm_mode_put_tile_group(connector->dev, tg);
5e546cd5b3bc76 Dave Airlie 2016-05-03 5556 return 0;
5e546cd5b3bc76 Dave Airlie 2016-05-03 5557 }
5e546cd5b3bc76 Dave Airlie 2016-05-03 5558
:::::: The code at line 5539 was first introduced by commit
:::::: 40d9b043a89e2301e1f97ade055a73ecc28e9afe drm/connector: store tile information from
displayid (v3)
:::::: TO: Dave Airlie <airlied(a)redhat.com>
:::::: CC: Dave Airlie <airlied(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org