From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EC2F9C433EF for ; Thu, 2 Jun 2022 06:26:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B3451134B9; Thu, 2 Jun 2022 06:26:18 +0000 (UTC) Received: from mail-il1-x130.google.com (mail-il1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) by gabe.freedesktop.org (Postfix) with ESMTPS id A04531134B9 for ; Thu, 2 Jun 2022 06:26:16 +0000 (UTC) Received: by mail-il1-x130.google.com with SMTP id f7so2813893ilr.5 for ; Wed, 01 Jun 2022 23:26:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Sec2StwspJmVRskRjp96pRe9qwUjKWoqh50yLqXH9ug=; b=H4RaTyflgiBozDBBf2ayzDs8+j52LBlWi9aoUcMg5siJcfJBVBvWuN+dzI6IQ/UJVg iGc+hjOkFpq3TC9rHaC7G3oV/Qh4o9PqFJiPP1Qk85Dtp36vGsH7Hr3M02aNbL8wOiIR sv3sqaVS3TzVTUxXco0MuZnkIysMiuhyFj+y+KXrV5Pl9L/baUui8Bp4aRfEbE78Jkh2 64ySgAhVkjkdY4v1vXgxcx1FDSFuH1fScP/55wDSV9cnD0x8FOH32X0GfZlOoiO4wCM4 dQaF9oBtbQakKpNsyDI+pdVVX/5ddD24a6y/tikAV3yxdOJxpcxJ9E3prZmRC2D24xtT 1Zgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Sec2StwspJmVRskRjp96pRe9qwUjKWoqh50yLqXH9ug=; b=pEY3GKOEkx8IOtw/AP7k3nnaFFaXF66nghLnJ90/V38y6tTrUnNqwqSSul5hA8On+i nfAlWR8Qm5UggBZQGb/gQVSMTfzmnjujNIT/tnYz4C+WDQKrzYmwIndjs2PxtvpvuP4D EJ1Q6aoOmIV+ZvjmuoqVWBSgFXGWgUbEy5MgRsMjqhdSf1T0jovFIagLpe7YZ14LcfUJ rQQuG+jM4wETUQbRxtCLbM5zStQZ0svwnNvoHJ/dpEW7BQjGGQhvVtT69jeYx1be69eZ xjQ1OgdmsSP2k70dINFbLjw3hgxDCkWq7NUCCJzEPU/Iv4w0EYx1mOw9PVqXB5siBIh0 CLVw== X-Gm-Message-State: AOAM531uaF6Mr15lprHQennYY/bXUmmiGuCbc2Js9O3psLGMir7IMjYE 35+BTTZT9RnqpyJs004pqj9Hv4Kaydz6S1aKh/ockhUCf/k= X-Google-Smtp-Source: ABdhPJwteCAo4z7WTz3zezsmIL6ygOaKVn8nmz09vHEXtejcyPeZqBb2IshMxG8ZGqcxpUi/8mY+ocDswQ6XxUu8jC4= X-Received: by 2002:a05:6e02:1b04:b0:2d1:af55:eb92 with SMTP id i4-20020a056e021b0400b002d1af55eb92mr2279884ilv.227.1654151175897; Wed, 01 Jun 2022 23:26:15 -0700 (PDT) MIME-Version: 1.0 References: <202205271546.oV14N2r8-lkp@intel.com> In-Reply-To: From: =?UTF-8?Q?Ernst_Sj=C3=B6strand?= Date: Thu, 2 Jun 2022 08:26:03 +0200 Message-ID: Subject: Re: [kbuild] drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:1433 amdgpu_discovery_get_vcn_info() error: buffer overflow 'adev->vcn.vcn_codec_disable_mask' 2 <= 3 To: Alex Deucher Content-Type: multipart/alternative; boundary="0000000000003e8b7705e0711583" X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kbuild-all@lists.01.org, kernel test robot , kbuild@lists.01.org, LKML , amd-gfx list , Alex Deucher , Dan Carpenter Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" --0000000000003e8b7705e0711583 Content-Type: text/plain; charset="UTF-8" Dan: I also ran Smatch which resulted in the following discussion: https://lists.freedesktop.org/archives/amd-gfx/2022-May/079228.html Regards Den ons 1 juni 2022 kl 20:44 skrev Alex Deucher : > On Fri, May 27, 2022 at 3:46 AM Dan Carpenter > wrote: > > > > [ kbuild bot sent this warning on May 4 but I never heard back and it's > > May 27 now so sending a duplicate warning is probably for the best. > -dan] > > > > tree: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > > head: 7e284070abe53d448517b80493863595af4ab5f0 > > commit: 622469c87fc3e6c90a980be3e2287d82bd55c977 drm/amdgpu/discovery: > add a function to parse the vcn info table > > config: arc-randconfig-m031-20220524 ( > https://download.01.org/0day-ci/archive/20220527/202205271546.oV14N2r8-lkp@intel.com/config > ) > > compiler: arceb-elf-gcc (GCC) 11.3.0 > > > > If you fix the issue, kindly add following tag where applicable > > Reported-by: kernel test robot > > Reported-by: Dan Carpenter > > > > smatch warnings: > > drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:1433 > amdgpu_discovery_get_vcn_info() error: buffer overflow > 'adev->vcn.vcn_codec_disable_mask' 2 <= 3 > > > > vim +1433 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1403 int > amdgpu_discovery_get_vcn_info(struct amdgpu_device *adev) > > 622469c87fc3e6 Alex Deucher 2022-03-30 1404 { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1405 struct binary_header > *bhdr; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1406 union vcn_info *vcn_info; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1407 u16 offset; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1408 int v; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1409 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1410 if > (!adev->mman.discovery_bin) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1411 DRM_ERROR("ip > discovery uninitialized\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1412 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1413 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1414 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1415 if > (adev->vcn.num_vcn_inst > VCN_INFO_TABLE_MAX_NUM_INSTANCES) { > > > > Capped to 4 > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1416 > dev_err(adev->dev, "invalid vcn instances\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1417 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1418 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1419 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1420 bhdr = (struct > binary_header *)adev->mman.discovery_bin; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1421 offset = > le16_to_cpu(bhdr->table_list[VCN_INFO].offset); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1422 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1423 if (!offset) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1424 > dev_err(adev->dev, "invalid vcn table offset\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1425 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1426 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1427 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1428 vcn_info = (union > vcn_info *)(adev->mman.discovery_bin + offset); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1429 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1430 switch > (le16_to_cpu(vcn_info->v1.header.version_major)) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1431 case 1: > > 622469c87fc3e6 Alex Deucher 2022-03-30 1432 for (v = 0; v < > adev->vcn.num_vcn_inst; v++) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 @1433 > adev->vcn.vcn_codec_disable_mask[v] = > > > > But this array doesn't have 4 elements > > Correct, but num_vcn_inst can't be larger than > AMDGPU_MAX_VCN_INSTANCES (2) at the moment thanks to: > https://patchwork.freedesktop.org/patch/486289/ > > Alex > > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1434 > le32_to_cpu(vcn_info->v1.instance_info[v].fuse_data.all_bits); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1435 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1436 break; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1437 default: > > 622469c87fc3e6 Alex Deucher 2022-03-30 1438 > dev_err(adev->dev, > > 622469c87fc3e6 Alex Deucher 2022-03-30 1439 > "Unhandled VCN info table %d.%d\n", > > 622469c87fc3e6 Alex Deucher 2022-03-30 1440 > le16_to_cpu(vcn_info->v1.header.version_major), > > 622469c87fc3e6 Alex Deucher 2022-03-30 1441 > le16_to_cpu(vcn_info->v1.header.version_minor)); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1442 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1443 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1444 return 0; > > f39f5bb1c9d68d Xiaojie Yuan 2019-06-20 1445 } > > > > -- > > 0-DAY CI Kernel Test Service > > https://01.org/lkp > > _______________________________________________ > > kbuild mailing list -- kbuild@lists.01.org > > To unsubscribe send an email to kbuild-leave@lists.01.org > > > --0000000000003e8b7705e0711583 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dan: I also ran Smatch which resulted in the following = discussion:


Regards
<= /div>
D= en ons 1 juni 2022 kl 20:44 skrev Alex Deucher <alexdeucher@gmail.com>:
On Fri, May 27, 2022 at 3:46 AM Dan Carpen= ter <dan.c= arpenter@oracle.com> wrote:
>
> [ kbuild bot sent this warning on May 4 but I never heard back and it&= #39;s
>=C2=A0 =C2=A0May 27 now so sending a duplicate warning is probably for = the best. -dan]
>
> tree:=C2=A0 =C2=A0https://git= .kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git=C2=A0 master > head:=C2=A0 =C2=A07e284070abe53d448517b80493863595af4ab5f0
> commit: 622469c87fc3e6c90a980be3e2287d82bd55c977 drm/amdgpu/discovery:= add a function to parse the vcn info table
> config: arc-randconfig-m031-20220524 (https://download.01.org/0day-ci/archive/2= 0220527/202205271546.oV14N2r8-lkp@intel.com/config )
> compiler: arceb-elf-gcc (GCC) 11.3.0
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> smatch warnings:
> drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:1433 amdgpu_discovery_ge= t_vcn_info() error: buffer overflow 'adev->vcn.vcn_codec_disable_mas= k' 2 <=3D 3
>
> vim +1433 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
>
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1403=C2=A0 int amdgpu_dis= covery_get_vcn_info(struct amdgpu_device *adev)
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1404=C2=A0 {
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1405=C2=A0 =C2=A0 struct = binary_header *bhdr;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1406=C2=A0 =C2=A0 union v= cn_info *vcn_info;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1407=C2=A0 =C2=A0 u16 off= set;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1408=C2=A0 =C2=A0 int v;<= br> > 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1409
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1410=C2=A0 =C2=A0 if (!ad= ev->mman.discovery_bin) {
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1411=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 DRM_ERROR("ip discovery uninitialized\n"); > 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1412=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 return -EINVAL;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1413=C2=A0 =C2=A0 }
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1414
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1415=C2=A0 =C2=A0 if (ade= v->vcn.num_vcn_inst > VCN_INFO_TABLE_MAX_NUM_INSTANCES) {
>
> Capped to 4
>
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1416=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 dev_err(adev->dev, "invalid vcn instances\n&qu= ot;);
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1417=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 return -EINVAL;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1418=C2=A0 =C2=A0 }
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1419
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1420=C2=A0 =C2=A0 bhdr = =3D (struct binary_header *)adev->mman.discovery_bin;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1421=C2=A0 =C2=A0 offset = =3D le16_to_cpu(bhdr->table_list[VCN_INFO].offset);
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1422
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1423=C2=A0 =C2=A0 if (!of= fset) {
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1424=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 dev_err(adev->dev, "invalid vcn table offset\n= ");
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1425=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 return -EINVAL;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1426=C2=A0 =C2=A0 }
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1427
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1428=C2=A0 =C2=A0 vcn_inf= o =3D (union vcn_info *)(adev->mman.discovery_bin + offset);
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1429
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1430=C2=A0 =C2=A0 switch = (le16_to_cpu(vcn_info->v1.header.version_major)) {
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1431=C2=A0 =C2=A0 case 1:=
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1432=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 for (v =3D 0; v < adev->vcn.num_vcn_inst; v++) {=
> 622469c87fc3e6 Alex Deucher 2022-03-30 @1433=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 adev->vcn.vcn_codec_disabl= e_mask[v] =3D
>
> But this array doesn't have 4 elements

Correct, but num_vcn_inst can't be larger than
AMDGPU_MAX_VCN_INSTANCES (2) at the moment thanks to:
https://patchwork.freedesktop.org/patch/486289/
Alex

>
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1434=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 le32_to_cpu(vcn_info->v1.instance_info[v].fuse_data.all_bits);
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1435=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 }
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1436=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 break;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1437=C2=A0 =C2=A0 default= :
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1438=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 dev_err(adev->dev,
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1439=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "Unhandled VCN info t= able %d.%d\n",
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1440=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 le16_to_cpu(vcn_info->v= 1.header.version_major),
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1441=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 le16_to_cpu(vcn_info->v= 1.header.version_minor));
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1442=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 return -EINVAL;
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1443=C2=A0 =C2=A0 }
> 622469c87fc3e6 Alex Deucher 2022-03-30=C2=A0 1444=C2=A0 =C2=A0 return = 0;
> f39f5bb1c9d68d Xiaojie Yuan 2019-06-20=C2=A0 1445=C2=A0 }
>
> --
> 0-DAY CI Kernel Test Service
> ht= tps://01.org/lkp
> _______________________________________________
> kbuild mailing list -- kbuild@lists.01.org
> To unsubscribe send an email to kbuild-leave@lists.01.org
>
--0000000000003e8b7705e0711583-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5922532683033408662==" MIME-Version: 1.0 From: Ernst Sjöstrand To: kbuild-all@lists.01.org Subject: Re: [kbuild] drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:1433 amdgpu_discovery_get_vcn_info() error: buffer overflow 'adev->vcn.vcn_codec_disable_mask' 2 <= 3 Date: Thu, 02 Jun 2022 08:26:03 +0200 Message-ID: In-Reply-To: List-Id: --===============5922532683033408662== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Dan: I also ran Smatch which resulted in the following discussion: https://lists.freedesktop.org/archives/amd-gfx/2022-May/079228.html Regards Den ons 1 juni 2022 kl 20:44 skrev Alex Deucher : > On Fri, May 27, 2022 at 3:46 AM Dan Carpenter > wrote: > > > > [ kbuild bot sent this warning on May 4 but I never heard back and it's > > May 27 now so sending a duplicate warning is probably for the best. > -dan] > > > > tree: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > > head: 7e284070abe53d448517b80493863595af4ab5f0 > > commit: 622469c87fc3e6c90a980be3e2287d82bd55c977 drm/amdgpu/discovery: > add a function to parse the vcn info table > > config: arc-randconfig-m031-20220524 ( > https://download.01.org/0day-ci/archive/20220527/202205271546.oV14N2r8-lk= p(a)intel.com/config > ) > > compiler: arceb-elf-gcc (GCC) 11.3.0 > > > > If you fix the issue, kindly add following tag where applicable > > Reported-by: kernel test robot > > Reported-by: Dan Carpenter > > > > smatch warnings: > > drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:1433 > amdgpu_discovery_get_vcn_info() error: buffer overflow > 'adev->vcn.vcn_codec_disable_mask' 2 <=3D 3 > > > > vim +1433 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1403 int > amdgpu_discovery_get_vcn_info(struct amdgpu_device *adev) > > 622469c87fc3e6 Alex Deucher 2022-03-30 1404 { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1405 struct binary_header > *bhdr; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1406 union vcn_info *vcn_inf= o; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1407 u16 offset; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1408 int v; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1409 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1410 if > (!adev->mman.discovery_bin) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1411 DRM_ERROR("ip > discovery uninitialized\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1412 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1413 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1414 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1415 if > (adev->vcn.num_vcn_inst > VCN_INFO_TABLE_MAX_NUM_INSTANCES) { > > > > Capped to 4 > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1416 > dev_err(adev->dev, "invalid vcn instances\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1417 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1418 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1419 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1420 bhdr =3D (struct > binary_header *)adev->mman.discovery_bin; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1421 offset =3D > le16_to_cpu(bhdr->table_list[VCN_INFO].offset); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1422 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1423 if (!offset) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1424 > dev_err(adev->dev, "invalid vcn table offset\n"); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1425 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1426 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1427 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1428 vcn_info =3D (union > vcn_info *)(adev->mman.discovery_bin + offset); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1429 > > 622469c87fc3e6 Alex Deucher 2022-03-30 1430 switch > (le16_to_cpu(vcn_info->v1.header.version_major)) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 1431 case 1: > > 622469c87fc3e6 Alex Deucher 2022-03-30 1432 for (v =3D 0; v= < > adev->vcn.num_vcn_inst; v++) { > > 622469c87fc3e6 Alex Deucher 2022-03-30 @1433 > adev->vcn.vcn_codec_disable_mask[v] =3D > > > > But this array doesn't have 4 elements > > Correct, but num_vcn_inst can't be larger than > AMDGPU_MAX_VCN_INSTANCES (2) at the moment thanks to: > https://patchwork.freedesktop.org/patch/486289/ > > Alex > > > > > 622469c87fc3e6 Alex Deucher 2022-03-30 1434 > le32_to_cpu(vcn_info->v1.instance_info[v].fuse_data.all_bits); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1435 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1436 break; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1437 default: > > 622469c87fc3e6 Alex Deucher 2022-03-30 1438 > dev_err(adev->dev, > > 622469c87fc3e6 Alex Deucher 2022-03-30 1439 > "Unhandled VCN info table %d.%d\n", > > 622469c87fc3e6 Alex Deucher 2022-03-30 1440 > le16_to_cpu(vcn_info->v1.header.version_major), > > 622469c87fc3e6 Alex Deucher 2022-03-30 1441 > le16_to_cpu(vcn_info->v1.header.version_minor)); > > 622469c87fc3e6 Alex Deucher 2022-03-30 1442 return -EINVAL; > > 622469c87fc3e6 Alex Deucher 2022-03-30 1443 } > > 622469c87fc3e6 Alex Deucher 2022-03-30 1444 return 0; > > f39f5bb1c9d68d Xiaojie Yuan 2019-06-20 1445 } > > > > -- > > 0-DAY CI Kernel Test Service > > https://01.org/lkp > > _______________________________________________ > > kbuild mailing list -- kbuild(a)lists.01.org > > To unsubscribe send an email to kbuild-leave(a)lists.01.org > > > --===============5922532683033408662== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFt aWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmIj5EYW46IEkgYWxzbyByYW4gU21hdGNoIHdo aWNoIHJlc3VsdGVkIGluIHRoZSBmb2xsb3dpbmcgZGlzY3Vzc2lvbjo8L2Rpdj48ZGl2IGNsYXNz PSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMt c2VyaWYiPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHlsZT0iZm9udC1m YW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYiPjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2FtZC1nZngvMjAyMi1NYXkvMDc5MjI4Lmh0bWwiPmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2FtZC1nZngvMjAyMi1NYXkvMDc5 MjI4Lmh0bWw8L2E+PC9kaXY+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQt ZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmIj48YnI+PC9kaXY+PGRpdiBjbGFzcz0i Z21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNl cmlmIj5SZWdhcmRzPGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+ PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPkRlbiBvbnMgMSBqdW5pIDIwMjIga2wg MjA6NDQgc2tyZXYgQWxleCBEZXVjaGVyICZsdDs8YSBocmVmPSJtYWlsdG86YWxleGRldWNoZXJA Z21haWwuY29tIj5hbGV4ZGV1Y2hlckBnbWFpbC5jb208L2E+Jmd0Ozo8YnI+PC9kaXY+PGJsb2Nr cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4 O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgi Pk9uIEZyaSwgTWF5IDI3LCAyMDIyIGF0IDM6NDYgQU0gRGFuIENhcnBlbnRlciAmbHQ7PGEgaHJl Zj0ibWFpbHRvOmRhbi5jYXJwZW50ZXJAb3JhY2xlLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRhbi5j YXJwZW50ZXJAb3JhY2xlLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4KJmd0Ozxicj4KJmd0OyBbIGti dWlsZCBib3Qgc2VudCB0aGlzIHdhcm5pbmcgb24gTWF5IDQgYnV0IEkgbmV2ZXIgaGVhcmQgYmFj ayBhbmQgaXQmIzM5O3M8YnI+CiZndDvCoCDCoE1heSAyNyBub3cgc28gc2VuZGluZyBhIGR1cGxp Y2F0ZSB3YXJuaW5nIGlzIHByb2JhYmx5IGZvciB0aGUgYmVzdC4gLWRhbl08YnI+CiZndDs8YnI+ CiZndDsgdHJlZTrCoCDCoDxhIGhyZWY9Imh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s aW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdCIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n aXQvdG9ydmFsZHMvbGludXguZ2l0PC9hPsKgIG1hc3Rlcjxicj4KJmd0OyBoZWFkOsKgIMKgN2Uy ODQwNzBhYmU1M2Q0NDg1MTdiODA0OTM4NjM1OTVhZjRhYjVmMDxicj4KJmd0OyBjb21taXQ6IDYy MjQ2OWM4N2ZjM2U2YzkwYTk4MGJlM2UyMjg3ZDgyYmQ1NWM5NzcgZHJtL2FtZGdwdS9kaXNjb3Zl cnk6IGFkZCBhIGZ1bmN0aW9uIHRvIHBhcnNlIHRoZSB2Y24gaW5mbyB0YWJsZTxicj4KJmd0OyBj b25maWc6IGFyYy1yYW5kY29uZmlnLW0wMzEtMjAyMjA1MjQgKDxhIGhyZWY9Imh0dHBzOi8vZG93 bmxvYWQuMDEub3JnLzBkYXktY2kvYXJjaGl2ZS8yMDIyMDUyNy8yMDIyMDUyNzE1NDYub1YxNE4y cjgtbGtwQGludGVsLmNvbS9jb25maWciIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsi Pmh0dHBzOi8vZG93bmxvYWQuMDEub3JnLzBkYXktY2kvYXJjaGl2ZS8yMDIyMDUyNy8yMDIyMDUy NzE1NDYub1YxNE4ycjgtbGtwQGludGVsLmNvbS9jb25maWc8L2E+ICk8YnI+CiZndDsgY29tcGls ZXI6IGFyY2ViLWVsZi1nY2MgKEdDQykgMTEuMy4wPGJyPgomZ3Q7PGJyPgomZ3Q7IElmIHlvdSBm aXggdGhlIGlzc3VlLCBraW5kbHkgYWRkIGZvbGxvd2luZyB0YWcgd2hlcmUgYXBwbGljYWJsZTxi cj4KJmd0OyBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgJmx0OzxhIGhyZWY9Im1haWx0 bzpsa3BAaW50ZWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+bGtwQGludGVsLmNvbTwvYT4mZ3Q7PGJy PgomZ3Q7IFJlcG9ydGVkLWJ5OiBEYW4gQ2FycGVudGVyICZsdDs8YSBocmVmPSJtYWlsdG86ZGFu LmNhcnBlbnRlckBvcmFjbGUuY29tIiB0YXJnZXQ9Il9ibGFuayI+ZGFuLmNhcnBlbnRlckBvcmFj bGUuY29tPC9hPiZndDs8YnI+CiZndDs8YnI+CiZndDsgc21hdGNoIHdhcm5pbmdzOjxicj4KJmd0 OyBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzY292ZXJ5LmM6MTQzMyBhbWRn cHVfZGlzY292ZXJ5X2dldF92Y25faW5mbygpIGVycm9yOiBidWZmZXIgb3ZlcmZsb3cgJiMzOTth ZGV2LSZndDt2Y24udmNuX2NvZGVjX2Rpc2FibGVfbWFzayYjMzk7IDIgJmx0Oz0gMzxicj4KJmd0 Ozxicj4KJmd0OyB2aW0gKzE0MzMgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rp c2NvdmVyeS5jPGJyPgomZ3Q7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAy MDIyLTAzLTMwwqAgMTQwM8KgIGludCBhbWRncHVfZGlzY292ZXJ5X2dldF92Y25faW5mbyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldik8YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVj aGVyIDIwMjItMDMtMzDCoCAxNDA0wqAgezxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4IERl dWNoZXIgMjAyMi0wMy0zMMKgIDE0MDXCoCDCoCBzdHJ1Y3QgYmluYXJ5X2hlYWRlciAqYmhkcjs8 YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDA2wqAg wqAgdW5pb24gdmNuX2luZm8gKnZjbl9pbmZvOzxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4 IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0MDfCoCDCoCB1MTYgb2Zmc2V0Ozxicj4KJmd0OyA2MjI0 NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0MDjCoCDCoCBpbnQgdjs8YnI+ CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDA5PGJyPgom Z3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQxMMKgIMKgIGlm ICghYWRldi0mZ3Q7bW1hbi5kaXNjb3ZlcnlfYmluKSB7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2 IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQxMcKgIMKgIMKgIMKgIMKgIMKgIERSTV9FUlJP UigmcXVvdDtpcCBkaXNjb3ZlcnkgdW5pbml0aWFsaXplZFxuJnF1b3Q7KTs8YnI+CiZndDsgNjIy NDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDEywqAgwqAgwqAgwqAgwqAg wqAgcmV0dXJuIC1FSU5WQUw7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAy MDIyLTAzLTMwwqAgMTQxM8KgIMKgIH08YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVj aGVyIDIwMjItMDMtMzDCoCAxNDE0PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hl ciAyMDIyLTAzLTMwwqAgMTQxNcKgIMKgIGlmIChhZGV2LSZndDt2Y24ubnVtX3Zjbl9pbnN0ICZn dDsgVkNOX0lORk9fVEFCTEVfTUFYX05VTV9JTlNUQU5DRVMpIHs8YnI+CiZndDs8YnI+CiZndDsg Q2FwcGVkIHRvIDQ8YnI+CiZndDs8YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVy IDIwMjItMDMtMzDCoCAxNDE2wqAgwqAgwqAgwqAgwqAgwqAgZGV2X2VycihhZGV2LSZndDtkZXYs ICZxdW90O2ludmFsaWQgdmNuIGluc3RhbmNlc1xuJnF1b3Q7KTs8YnI+CiZndDsgNjIyNDY5Yzg3 ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDE3wqAgwqAgwqAgwqAgwqAgwqAgcmV0 dXJuIC1FSU5WQUw7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAz LTMwwqAgMTQxOMKgIMKgIH08YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIw MjItMDMtMzDCoCAxNDE5PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIy LTAzLTMwwqAgMTQyMMKgIMKgIGJoZHIgPSAoc3RydWN0IGJpbmFyeV9oZWFkZXIgKilhZGV2LSZn dDttbWFuLmRpc2NvdmVyeV9iaW47PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hl ciAyMDIyLTAzLTMwwqAgMTQyMcKgIMKgIG9mZnNldCA9IGxlMTZfdG9fY3B1KGJoZHItJmd0O3Rh YmxlX2xpc3RbVkNOX0lORk9dLm9mZnNldCk7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXgg RGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQyMjxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4IERl dWNoZXIgMjAyMi0wMy0zMMKgIDE0MjPCoCDCoCBpZiAoIW9mZnNldCkgezxicj4KJmd0OyA2MjI0 NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0MjTCoCDCoCDCoCDCoCDCoCDC oCBkZXZfZXJyKGFkZXYtJmd0O2RldiwgJnF1b3Q7aW52YWxpZCB2Y24gdGFibGUgb2Zmc2V0XG4m cXVvdDspOzxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKg IDE0MjXCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVJTlZBTDs8YnI+CiZndDsgNjIyNDY5Yzg3 ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDI2wqAgwqAgfTxicj4KJmd0OyA2MjI0 NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0Mjc8YnI+CiZndDsgNjIyNDY5 Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDI4wqAgwqAgdmNuX2luZm8gPSAo dW5pb24gdmNuX2luZm8gKikoYWRldi0mZ3Q7bW1hbi5kaXNjb3ZlcnlfYmluICsgb2Zmc2V0KTs8 YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDI5PGJy PgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQzMMKgIMKg IHN3aXRjaCAobGUxNl90b19jcHUodmNuX2luZm8tJmd0O3YxLmhlYWRlci52ZXJzaW9uX21ham9y KSkgezxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0 MzHCoCDCoCBjYXNlIDE6PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIy LTAzLTMwwqAgMTQzMsKgIMKgIMKgIMKgIMKgIMKgIGZvciAodiA9IDA7IHYgJmx0OyBhZGV2LSZn dDt2Y24ubnVtX3Zjbl9pbnN0OyB2KyspIHs8YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBE ZXVjaGVyIDIwMjItMDMtMzAgQDE0MzPCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhZGV2 LSZndDt2Y24udmNuX2NvZGVjX2Rpc2FibGVfbWFza1t2XSA9PGJyPgomZ3Q7PGJyPgomZ3Q7IEJ1 dCB0aGlzIGFycmF5IGRvZXNuJiMzOTt0IGhhdmUgNCBlbGVtZW50czxicj4KPGJyPgpDb3JyZWN0 LCBidXQgbnVtX3Zjbl9pbnN0IGNhbiYjMzk7dCBiZSBsYXJnZXIgdGhhbjxicj4KQU1ER1BVX01B WF9WQ05fSU5TVEFOQ0VTICgyKSBhdCB0aGUgbW9tZW50IHRoYW5rcyB0bzo8YnI+CjxhIGhyZWY9 Imh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC80ODYyODkvIiByZWw9Im5v cmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5v cmcvcGF0Y2gvNDg2Mjg5LzwvYT48YnI+Cjxicj4KQWxleDxicj4KPGJyPgomZ3Q7PGJyPgomZ3Q7 IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQzNMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxlMzJfdG9fY3B1KHZjbl9pbmZvLSZndDt2 MS5pbnN0YW5jZV9pbmZvW3ZdLmZ1c2VfZGF0YS5hbGxfYml0cyk7PGJyPgomZ3Q7IDYyMjQ2OWM4 N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQzNcKgIMKgIMKgIMKgIMKgIMKgIH08 YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDM2wqAg wqAgwqAgwqAgwqAgwqAgYnJlYWs7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hl ciAyMDIyLTAzLTMwwqAgMTQzN8KgIMKgIGRlZmF1bHQ6PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2 IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQzOMKgIMKgIMKgIMKgIMKgIMKgIGRldl9lcnIo YWRldi0mZ3Q7ZGV2LDxicj4KJmd0OyA2MjI0NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0w My0zMMKgIDE0MznCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAmcXVvdDtVbmhhbmRsZWQg VkNOIGluZm8gdGFibGUgJWQuJWRcbiZxdW90Oyw8YnI+CiZndDsgNjIyNDY5Yzg3ZmMzZTYgQWxl eCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDQwwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg bGUxNl90b19jcHUodmNuX2luZm8tJmd0O3YxLmhlYWRlci52ZXJzaW9uX21ham9yKSw8YnI+CiZn dDsgNjIyNDY5Yzg3ZmMzZTYgQWxleCBEZXVjaGVyIDIwMjItMDMtMzDCoCAxNDQxwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgbGUxNl90b19jcHUodmNuX2luZm8tJmd0O3YxLmhlYWRlci52 ZXJzaW9uX21pbm9yKSk7PGJyPgomZ3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIy LTAzLTMwwqAgMTQ0MsKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRUlOVkFMOzxicj4KJmd0OyA2 MjI0NjljODdmYzNlNiBBbGV4IERldWNoZXIgMjAyMi0wMy0zMMKgIDE0NDPCoCDCoCB9PGJyPgom Z3Q7IDYyMjQ2OWM4N2ZjM2U2IEFsZXggRGV1Y2hlciAyMDIyLTAzLTMwwqAgMTQ0NMKgIMKgIHJl dHVybiAwOzxicj4KJmd0OyBmMzlmNWJiMWM5ZDY4ZCBYaWFvamllIFl1YW4gMjAxOS0wNi0yMMKg IDE0NDXCoCB9PGJyPgomZ3Q7PGJyPgomZ3Q7IC0tPGJyPgomZ3Q7IDAtREFZIENJIEtlcm5lbCBU ZXN0IFNlcnZpY2U8YnI+CiZndDsgPGEgaHJlZj0iaHR0cHM6Ly8wMS5vcmcvbGtwIiByZWw9Im5v cmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovLzAxLm9yZy9sa3A8L2E+PGJyPgomZ3Q7 IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7 IGtidWlsZCBtYWlsaW5nIGxpc3QgLS0gPGEgaHJlZj0ibWFpbHRvOmtidWlsZEBsaXN0cy4wMS5v cmciIHRhcmdldD0iX2JsYW5rIj5rYnVpbGRAbGlzdHMuMDEub3JnPC9hPjxicj4KJmd0OyBUbyB1 bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzprYnVpbGQtbGVhdmVA bGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+a2J1aWxkLWxlYXZlQGxpc3RzLjAxLm9yZzwv YT48YnI+CiZndDs8YnI+CjwvYmxvY2txdW90ZT48L2Rpdj4K --===============5922532683033408662==--