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 X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8F74C2BD09 for ; Thu, 5 Dec 2019 12:03:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 513882245C for ; Thu, 5 Dec 2019 12:03:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="a/fhLRre"; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="a/fhLRre" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729445AbfLEMDD (ORCPT ); Thu, 5 Dec 2019 07:03:03 -0500 Received: from mail-eopbgr20087.outbound.protection.outlook.com ([40.107.2.87]:41671 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729096AbfLEMDC (ORCPT ); Thu, 5 Dec 2019 07:03:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=a/fhLRrer8lrVfnLeZvmzH8tHzAfDX/skF9cWbl4eNU8GdsPXaHJkFvXlagyo7IbhKQpBCV9LnUYBxcG8KAsuiynfqCRaKPTEj6wZRsRrm9pJbmpF2iU/pMKvrL6Jq15cAmUG0GdBbXSNFg+z6n7HaxML75W4BmTHlv6MAe0+WM= Received: from VI1PR08CA0095.eurprd08.prod.outlook.com (2603:10a6:800:d3::21) by HE1PR0801MB1868.eurprd08.prod.outlook.com (2603:10a6:3:49::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.13; Thu, 5 Dec 2019 12:02:53 +0000 Received: from AM5EUR03FT062.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::209) by VI1PR08CA0095.outlook.office365.com (2603:10a6:800:d3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.13 via Frontend Transport; Thu, 5 Dec 2019 12:02:53 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; vger.kernel.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;vger.kernel.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT062.mail.protection.outlook.com (10.152.17.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.18 via Frontend Transport; Thu, 5 Dec 2019 12:02:52 +0000 Received: ("Tessian outbound 58ad627f3883:v37"); Thu, 05 Dec 2019 12:02:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: cc24f7eb0faa1358 X-CR-MTA-TID: 64aa7808 Received: from e83a11f60396.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FD9F8365-1445-495C-B0BF-C4A59CA4AB38.1; Thu, 05 Dec 2019 12:02:47 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e83a11f60396.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 05 Dec 2019 12:02:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XvCDGPdlYDVCrKIetfBiwSEF5TT16gir1yI4jjUAw6MlwuMJERSWOsj1qh4y6G6w3aPOEmqJSS4U0gNv3r5ml2lVlv6hzU9L7yQqeVrvCpnfzTGVQBzS5c0vMdnf2oQn7ZAsCkZlxUUtjowmYpumY+C7eEg63zaGzDLnuPD2YToQvMmWJb798d/2RuvW7VoSCAIrqIVfP7UArAd5RRp1uxlVjE1+fftU7Kfci2fCAxFlUC0s906AIprwvz2MxgxEF9faYzaknaeLJ6+B9CwdO7K4ZZpQwPsL7u+qKFiF4xpLFhjs5vI+pnZl/lkLWxH7TOqnBFj5wvqli7755FhPDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=mIGQhbYyY8hBY0XilGegQ0Wthpm6LN+2MNfg4/IAYiyt5/pQsgLxa+CJRj3JboCn0T3tc24Bguc8oCVZbbTomqIKp/C+bV2bGe6XorF/m8dekMIt3vICTGLxr+3lMOgF+5Qas94f4TONoEp8ovaY0RmHwjwq25p4keCDFFIP/bXZVBRQ9foFdunwn85bIqSF+FSspzDbom5GRfZZtq8vbBq89VD9OA5QFJ31VFd+h50cetxU6matWiq421TP2nwe4PzdmSyzDekppGVmZbtljQuZoVzAoVSffaIOsOzWUl6t45bTD2UOF26GWGDAZsZTGQsPCs25owMqKUkkv5//lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=a/fhLRrer8lrVfnLeZvmzH8tHzAfDX/skF9cWbl4eNU8GdsPXaHJkFvXlagyo7IbhKQpBCV9LnUYBxcG8KAsuiynfqCRaKPTEj6wZRsRrm9pJbmpF2iU/pMKvrL6Jq15cAmUG0GdBbXSNFg+z6n7HaxML75W4BmTHlv6MAe0+WM= Received: from VI1PR08MB4078.eurprd08.prod.outlook.com (20.178.127.92) by VI1PR08MB3725.eurprd08.prod.outlook.com (20.178.13.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.18; Thu, 5 Dec 2019 12:02:45 +0000 Received: from VI1PR08MB4078.eurprd08.prod.outlook.com ([fe80::3d0a:7cde:7f1f:fe7c]) by VI1PR08MB4078.eurprd08.prod.outlook.com ([fe80::3d0a:7cde:7f1f:fe7c%7]) with mapi id 15.20.2516.014; Thu, 5 Dec 2019 12:02:45 +0000 From: Mihail Atanassov To: "james qian wang (Arm Technology China)" CC: nd , Liviu Dudau , nd , "airlied@linux.ie" , Brian Starkey , "maarten.lankhorst@linux.intel.com" , "Jonathan Chai (Arm Technology China)" , "Julien Yin (Arm Technology China)" , "Thomas Sun (Arm Technology China)" , "Lowry Li (Arm Technology China)" , "Tiannan Zhu (Arm Technology China)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Ben Davis , "Oscar Zhang (Arm Technology China)" , "Channing Chen (Arm Technology China)" Subject: Re: [PATCH v2 2/2] drm/komeda: Enable new product D32 support Thread-Topic: [PATCH v2 2/2] drm/komeda: Enable new product D32 support Thread-Index: AQHVoEQsEzx6hPV6tkqMxpVwDMM7k6emwEqAgAFJ2gCAADItgIADFfMAgAAwrYA= Date: Thu, 5 Dec 2019 12:02:45 +0000 Message-ID: <7467899.rIHYG2lMSP@e123338-lin> References: <20191121081717.29518-1-james.qian.wang@arm.com> <2125422.nYgIr5rE5T@e123338-lin> <20191205085256.GA11212@jamwan02-TSP300> In-Reply-To: <20191205085256.GA11212@jamwan02-TSP300> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [217.140.106.55] x-clientproxiedby: CWLP123CA0162.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:88::30) To VI1PR08MB4078.eurprd08.prod.outlook.com (2603:10a6:803:e5::28) Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Mihail.Atanassov@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 25623fb4-238c-4c8b-0551-08d7797b0ea3 X-MS-TrafficTypeDiagnostic: VI1PR08MB3725:|VI1PR08MB3725:|HE1PR0801MB1868: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; x-forefront-prvs: 02426D11FE X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(7916004)(4636009)(376002)(396003)(39860400002)(346002)(136003)(366004)(199004)(189003)(6512007)(4326008)(25786009)(14444005)(186003)(9686003)(6486002)(64756008)(66476007)(14454004)(66446008)(66946007)(66556008)(76176011)(316002)(6862004)(2906002)(8936002)(5660300002)(6636002)(52116002)(81156014)(81166006)(229853002)(102836004)(8676002)(305945005)(33716001)(71190400001)(26005)(11346002)(54906003)(86362001)(478600001)(99286004)(71200400001)(6506007)(39026012);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR08MB3725;H:VI1PR08MB4078.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: szuwdR4hvKVxwU0YtBnLtbrYtLkaUL+rv93bHNTBsemz6Yd2igfJk95xkGPqpU2wGxlEBDhAw35wbiYvcuJDMm7DT2ySccIMvFam15loX4/nHF/jPuoQOLcctDBlaeN3tR/e31rYz44k9DNvO57cX6gYgSPpUSvHF5u72q0IlmvmoNfIglE4g8WrsqEmeKFx61yw/YXY0vaJlUcfhmJNS9Ko2iXYFy9jJP35FrQH+7xJCOS5J8GiH/U9Cer0x217W6SC8e9vRO27DrHD64N70M5SOg3ZJsiJbgf+F4MwzBg26v76ypkm7XMjZlI8JGdJlygS6M/ABOQsQDWVxUHOlepKgIMtTxDdUiu5aa2t1nEzdLiK0+RtJGUao6FBTQVEiklz5xdsgcHJ2IIfl32lgZ1QGdPbSA3iEhwwmlhXK8n9n0i5uuW710P8rhByB81eFG5cwpJkFTol6HKTGXabobmdUxwNfk5pgeHl24mD+Yg6U8fsvSBFF2MX000MElVW Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3725 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Mihail.Atanassov@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT062.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;IPV:CAL;SCL:-1;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10009020)(7916004)(4636009)(136003)(396003)(39860400002)(346002)(376002)(189003)(199004)(2906002)(6862004)(14454004)(4326008)(6512007)(6486002)(14444005)(9686003)(70586007)(186003)(22756006)(50466002)(36906005)(5660300002)(478600001)(6636002)(70206006)(99286004)(76176011)(23726003)(86362001)(26826003)(33716001)(81166006)(81156014)(336012)(46406003)(229853002)(11346002)(25786009)(6506007)(97756001)(8676002)(76130400001)(305945005)(26005)(102836004)(54906003)(316002)(8936002)(356004)(39026012);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0801MB1868;H:64aa7808-outbound-1.mta.getcheckrecipient.com;FPR:;SPF:Pass;LANG:en;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;MX:1;A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 14154fb2-83f8-4ce5-f74a-08d7797b0a05 NoDisclaimer: True X-Forefront-PRVS: 02426D11FE X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Iqfl90fIeNEjUfmIe+vxFA1rxjFKxENYtGw1d3FgL3dd97wWx9gfkJiYGgzbrQYWFjlpe2nwBSgcZ1HdK2jLmzkLtxYWYkLlIuFJNEv9ebz2nRCn25wGtlh5zTY9ndm/JvNAfBzo3OuZpR8FH9yz9f3s+Sf8Wf//FK5i9/x1gHWLSEQ52/QUjw+o+P7opjAGmDz9JEQuKwcgiI0ratcSR6ez769doHxxFt0pf3O1lGqdJqw2pBl8MjvqNkkC+YFbV2pxqwv1SefN6NFgSRVLudyNv3oGtXyiadEi+BfQhNc9vbIOp1O4um9V44h9Krq0bXZWORxeLW/t1IeWrAbBUMYEoVSXfPS3nygd/2CqTXlGkjWPeI7RyDPpb3+lMMeJBMe9GpDW81KeOuUbHTDfIkzLafbnh8twewZfzg8ND/dHKak7nVgX3b1dgRJWtL2puAADdJDWfkyYxFsoF1SCy4UFRZOpjhTucuAcZ06UJuMvRFfUmAlVuGqzti3V0mQi X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2019 12:02:52.8916 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25623fb4-238c-4c8b-0551-08d7797b0ea3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1868 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday, 5 December 2019 08:53:02 GMT james qian wang (Arm Technology C= hina) wrote: > On Tue, Dec 03, 2019 at 09:59:57AM +0000, Mihail Atanassov wrote: > > On Tuesday, 3 December 2019 06:46:06 GMT james qian wang (Arm Technolog= y China) wrote: > > > On Mon, Dec 02, 2019 at 11:07:52AM +0000, Mihail Atanassov wrote: > > > > On Thursday, 21 November 2019 08:17:45 GMT james qian wang (Arm Tec= hnology China) wrote: > > > > > D32 is simple version of D71, the difference is: > > > > > - Only has one pipeline > > > > > - Drop the periph block and merge it to GCU > > > > >=20 > > > > > v2: Rebase. > > > > >=20 > > > > > Signed-off-by: James Qian Wang (Arm Technology China) > > > > > --- > > > > > .../drm/arm/display/include/malidp_product.h | 3 +- > > > > > .../arm/display/komeda/d71/d71_component.c | 2 +- > > > > > .../gpu/drm/arm/display/komeda/d71/d71_dev.c | 43 ++++++++++++-= ------ > > > > > .../gpu/drm/arm/display/komeda/d71/d71_regs.h | 13 ++++++ > > > > > .../gpu/drm/arm/display/komeda/komeda_drv.c | 1 + > > > > > 5 files changed, 44 insertions(+), 18 deletions(-) > > > > >=20 > > > > > diff --git a/drivers/gpu/drm/arm/display/include/malidp_product.h= b/drivers/gpu/drm/arm/display/include/malidp_product.h > > > > > index 96e2e4016250..dbd3d4765065 100644 > > > > > --- a/drivers/gpu/drm/arm/display/include/malidp_product.h > > > > > +++ b/drivers/gpu/drm/arm/display/include/malidp_product.h > > > > > @@ -18,7 +18,8 @@ > > > > > #define MALIDP_CORE_ID_STATUS(__core_id) (((__u32)(__core_id= )) & 0xFF) > > > > > =20 > > > > > /* Mali-display product IDs */ > > > > > -#define MALIDP_D71_PRODUCT_ID 0x0071 > > > > > +#define MALIDP_D71_PRODUCT_ID 0x0071 > > > > > +#define MALIDP_D32_PRODUCT_ID 0x0032 > > > > > =20 > > > > > union komeda_config_id { > > > > > struct { > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/d71/d71_component= .c b/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > > > > > index 6dadf4413ef3..c7f7e9c545c7 100644 > > > > > --- a/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > > > > > +++ b/drivers/gpu/drm/arm/display/komeda/d71/d71_component.c > > > > > @@ -1274,7 +1274,7 @@ static int d71_timing_ctrlr_init(struct d71= _dev *d71, > > > > > =20 > > > > > ctrlr =3D to_ctrlr(c); > > > > > =20 > > > > > - ctrlr->supports_dual_link =3D true; > > > > > + ctrlr->supports_dual_link =3D d71->supports_dual_link; > > > > > =20 > > > > > return 0; > > > > > } > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/d71/d71_dev.c b/d= rivers/gpu/drm/arm/display/komeda/d71/d71_dev.c > > > > > index 9b3bf353b6cc..2d429e310e5b 100644 > > > > > --- a/drivers/gpu/drm/arm/display/komeda/d71/d71_dev.c > > > > > +++ b/drivers/gpu/drm/arm/display/komeda/d71/d71_dev.c > > > > > @@ -371,23 +371,33 @@ static int d71_enum_resources(struct komeda= _dev *mdev) > > > > > goto err_cleanup; > > > > > } > > > > > =20 > > > > > - /* probe PERIPH */ > > > > > + /* Only the legacy HW has the periph block, the newer merges th= e periph > > > > > + * into GCU > > > > > + */ > > > > > value =3D malidp_read32(d71->periph_addr, BLK_BLOCK_INFO); > > > > > - if (BLOCK_INFO_BLK_TYPE(value) !=3D D71_BLK_TYPE_PERIPH) { > > > > > - DRM_ERROR("access blk periph but got blk: %d.\n", > > > > > - BLOCK_INFO_BLK_TYPE(value)); > > > > > - err =3D -EINVAL; > > > > > - goto err_cleanup; > > > > > + if (BLOCK_INFO_BLK_TYPE(value) !=3D D71_BLK_TYPE_PERIPH) > > > > > + d71->periph_addr =3D NULL; > > > > > + > > > > > + if (d71->periph_addr) { > > > > > + /* probe PERIPHERAL in legacy HW */ > > > > > + value =3D malidp_read32(d71->periph_addr, PERIPH_CONFIGURATION= _ID); > > > > > + > > > > > + d71->max_line_size =3D value & PERIPH_MAX_LINE_SIZE ? 4096 : 2= 048; > > > > > + d71->max_vsize =3D 4096; > > > > > + d71->num_rich_layers =3D value & PERIPH_NUM_RICH_LAYERS ? 2 : = 1; > > > > > + d71->supports_dual_link =3D !!(value & PERIPH_SPLIT_EN); > > > > > + d71->integrates_tbu =3D !!(value & PERIPH_TBU_EN); > > > > > + } else { > > > > > + value =3D malidp_read32(d71->gcu_addr, GCU_CONFIGURATION_ID0); > > > > > + d71->max_line_size =3D GCU_MAX_LINE_SIZE(value); > > > > > + d71->max_vsize =3D GCU_MAX_NUM_LINES(value); > > > > > + > > > > > + value =3D malidp_read32(d71->gcu_addr, GCU_CONFIGURATION_ID1); > > > > > + d71->num_rich_layers =3D GCU_NUM_RICH_LAYERS(value); > > > > > + d71->supports_dual_link =3D GCU_DISPLAY_SPLIT_EN(value); > > > > > + d71->integrates_tbu =3D GCU_DISPLAY_TBU_EN(value); > > > > > } > > > > > =20 > > > > > - value =3D malidp_read32(d71->periph_addr, PERIPH_CONFIGURATION_= ID); > > > > > - > > > > > - d71->max_line_size =3D value & PERIPH_MAX_LINE_SIZE ? 4096 : 20= 48; > > > > > - d71->max_vsize =3D 4096; > > > > > - d71->num_rich_layers =3D value & PERIPH_NUM_RICH_LAYERS ? 2 : 1= ; > > > > > - d71->supports_dual_link =3D value & PERIPH_SPLIT_EN ? true : fa= lse; > > > > > - d71->integrates_tbu =3D value & PERIPH_TBU_EN ? true : false; > > > > > - > > > > > for (i =3D 0; i < d71->num_pipelines; i++) { > > > > > pipe =3D komeda_pipeline_add(mdev, sizeof(struct d71_pipeline)= , > > > > > &d71_pipeline_funcs); > > > > > @@ -415,7 +425,7 @@ static int d71_enum_resources(struct komeda_d= ev *mdev) > > > > > } > > > > > =20 > > > > > /* loop the register blks and probe */ > > > > > - i =3D 2; /* exclude GCU and PERIPH */ > > > > > + i =3D 1; /* exclude GCU */ > > > > > offset =3D D71_BLOCK_SIZE; /* skip GCU */ > > > > > while (i < d71->num_blocks) { > > > > > blk_base =3D mdev->reg_base + (offset >> 2); > > > > > @@ -425,9 +435,9 @@ static int d71_enum_resources(struct komeda_d= ev *mdev) > > > > > err =3D d71_probe_block(d71, &blk, blk_base); > > > > > if (err) > > > > > goto err_cleanup; > > > > > - i++; > > > > > } > > > > > =20 > > > > > + i++; > > > >=20 > > > > This change doesn't make much sense if you want to count how many > > > > blocks are available, since you're now counting the reserved ones, = too. > > >=20 > > > That's because for D32 num_blocks includes the reserved blocks. > > >=20 > > > > On the counting note, the prior code rides on the assumption the pe= riph > > > > block is last in the map, and I don't see how you still handle not > > > > counting it in the D71 case. > > >=20 > > > Since D71 has one reserved block, and now we count reserved block. > > >=20 > > > So now no matter D32 or D71: > > > num_blocks =3D n_valid_block + n_reserved_block + GCU. > >=20 > > So at least we need that comment dropped in with the code. Future HW > > might break your assumption here once more and it will then be useful > > to know why this works for both products. >=20 > OK, will add a comments like. >=20 > /* Per HW design: num_blocks =3D n_valid_block + n_reserved_block + GCU *= / >=20 > And Per HW, all arch-v1.x include (d71/d32/d77) follows this rule, > the old logic which skip the reserved-block actually not right. Well, given this ^... >=20 > > I'd personally abstract that a bit behind a small helper func and > > handle different products separately. It's a bit of duplication but > > much easier to comprehend. Saved cycles reading code =3D=3D Good Thing(= tm). ...then my comment here ^ no longer applies. :) I'd be a bit happier if that fix is split out into its own patch. Mind doing that? >=20 > Our komeda driver has two layers, common layer and chip. current we > only have one chip folder d71 for support arch-v1.x prodcut. > And our future products (arch-v2.x) will have its own chip folder, and > its own chip specific code. The point is moot now, but I meant adding a few small static functions in the same file. Nothing to do with layering :). >=20 > Thanks > James > >=20 > > >=20 > > > Thanks > > > James > > > >=20 > > > > > offset +=3D D71_BLOCK_SIZE; > > > > > } > > > > > =20 > > > > > @@ -603,6 +613,7 @@ d71_identify(u32 __iomem *reg_base, struct ko= meda_chip_info *chip) > > > > > =20 > > > > > switch (product_id) { > > > > > case MALIDP_D71_PRODUCT_ID: > > > > > + case MALIDP_D32_PRODUCT_ID: > > > > > funcs =3D &d71_chip_funcs; > > > > > break; > > > > > default: > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/d71/d71_regs.h b/= drivers/gpu/drm/arm/display/komeda/d71/d71_regs.h > > > > > index 1727dc993909..81de6a23e7f3 100644 > > > > > --- a/drivers/gpu/drm/arm/display/komeda/d71/d71_regs.h > > > > > +++ b/drivers/gpu/drm/arm/display/komeda/d71/d71_regs.h > > > > > @@ -72,6 +72,19 @@ > > > > > #define GCU_CONTROL_MODE(x) ((x) & 0x7) > > > > > #define GCU_CONTROL_SRST BIT(16) > > > > > =20 > > > > > +/* GCU_CONFIGURATION registers */ > > > > > +#define GCU_CONFIGURATION_ID0 0x100 > > > > > +#define GCU_CONFIGURATION_ID1 0x104 > > > > > + > > > > > +/* GCU configuration */ > > > > > +#define GCU_MAX_LINE_SIZE(x) ((x) & 0xFFFF) > > > > > +#define GCU_MAX_NUM_LINES(x) ((x) >> 16) > > > > > +#define GCU_NUM_RICH_LAYERS(x) ((x) & 0x7) > > > > > +#define GCU_NUM_PIPELINES(x) (((x) >> 3) & 0x7) > > > > > +#define GCU_NUM_SCALERS(x) (((x) >> 6) & 0x7) > > > > > +#define GCU_DISPLAY_SPLIT_EN(x) (((x) >> 16) & 0x1) > > > > > +#define GCU_DISPLAY_TBU_EN(x) (((x) >> 17) & 0x1) > > > > > + > > > > > /* GCU opmode */ > > > > > #define INACTIVE_MODE 0 > > > > > #define TBU_CONNECT_MODE 1 > > > > > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c b/dr= ivers/gpu/drm/arm/display/komeda/komeda_drv.c > > > > > index b7a1097c45c4..ad38bbc7431e 100644 > > > > > --- a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c > > > > > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c > > > > > @@ -125,6 +125,7 @@ static int komeda_platform_remove(struct plat= form_device *pdev) > > > > > =20 > > > > > static const struct of_device_id komeda_of_match[] =3D { > > > > > { .compatible =3D "arm,mali-d71", .data =3D d71_identify, }, > > > > > + { .compatible =3D "arm,mali-d32", .data =3D d71_identify, }, > > > > > {}, > > > > > }; > > > > > =20 > > > > >=20 > > > >=20 > > > >=20 > > >=20 > >=20 > >=20 >=20 --=20 Mihail 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 X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE7A0C43603 for ; Thu, 5 Dec 2019 12:02:58 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 85FA920675 for ; Thu, 5 Dec 2019 12:02:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 85FA920675 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 88A176F88F; Thu, 5 Dec 2019 12:02:57 +0000 (UTC) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70045.outbound.protection.outlook.com [40.107.7.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 555146F88F for ; Thu, 5 Dec 2019 12:02:56 +0000 (UTC) Received: from DB6PR0801CA0055.eurprd08.prod.outlook.com (2603:10a6:4:2b::23) by DB7PR08MB3433.eurprd08.prod.outlook.com (2603:10a6:10:48::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.12; Thu, 5 Dec 2019 12:02:53 +0000 Received: from DB5EUR03FT061.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::201) by DB6PR0801CA0055.outlook.office365.com (2603:10a6:4:2b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.12 via Frontend Transport; Thu, 5 Dec 2019 12:02:53 +0000 Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT061.mail.protection.outlook.com (10.152.21.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.18 via Frontend Transport; Thu, 5 Dec 2019 12:02:53 +0000 Received: ("Tessian outbound 58ad627f3883:v37"); Thu, 05 Dec 2019 12:02:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: cc24f7eb0faa1358 X-CR-MTA-TID: 64aa7808 Received: from e83a11f60396.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FD9F8365-1445-495C-B0BF-C4A59CA4AB38.1; Thu, 05 Dec 2019 12:02:47 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e83a11f60396.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 05 Dec 2019 12:02:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XvCDGPdlYDVCrKIetfBiwSEF5TT16gir1yI4jjUAw6MlwuMJERSWOsj1qh4y6G6w3aPOEmqJSS4U0gNv3r5ml2lVlv6hzU9L7yQqeVrvCpnfzTGVQBzS5c0vMdnf2oQn7ZAsCkZlxUUtjowmYpumY+C7eEg63zaGzDLnuPD2YToQvMmWJb798d/2RuvW7VoSCAIrqIVfP7UArAd5RRp1uxlVjE1+fftU7Kfci2fCAxFlUC0s906AIprwvz2MxgxEF9faYzaknaeLJ6+B9CwdO7K4ZZpQwPsL7u+qKFiF4xpLFhjs5vI+pnZl/lkLWxH7TOqnBFj5wvqli7755FhPDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=mIGQhbYyY8hBY0XilGegQ0Wthpm6LN+2MNfg4/IAYiyt5/pQsgLxa+CJRj3JboCn0T3tc24Bguc8oCVZbbTomqIKp/C+bV2bGe6XorF/m8dekMIt3vICTGLxr+3lMOgF+5Qas94f4TONoEp8ovaY0RmHwjwq25p4keCDFFIP/bXZVBRQ9foFdunwn85bIqSF+FSspzDbom5GRfZZtq8vbBq89VD9OA5QFJ31VFd+h50cetxU6matWiq421TP2nwe4PzdmSyzDekppGVmZbtljQuZoVzAoVSffaIOsOzWUl6t45bTD2UOF26GWGDAZsZTGQsPCs25owMqKUkkv5//lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB4078.eurprd08.prod.outlook.com (20.178.127.92) by VI1PR08MB3725.eurprd08.prod.outlook.com (20.178.13.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2495.18; Thu, 5 Dec 2019 12:02:45 +0000 Received: from VI1PR08MB4078.eurprd08.prod.outlook.com ([fe80::3d0a:7cde:7f1f:fe7c]) by VI1PR08MB4078.eurprd08.prod.outlook.com ([fe80::3d0a:7cde:7f1f:fe7c%7]) with mapi id 15.20.2516.014; Thu, 5 Dec 2019 12:02:45 +0000 From: Mihail Atanassov To: "james qian wang (Arm Technology China)" Subject: Re: [PATCH v2 2/2] drm/komeda: Enable new product D32 support Thread-Topic: [PATCH v2 2/2] drm/komeda: Enable new product D32 support Thread-Index: AQHVoEQsEzx6hPV6tkqMxpVwDMM7k6emwEqAgAFJ2gCAADItgIADFfMAgAAwrYA= Date: Thu, 5 Dec 2019 12:02:45 +0000 Message-ID: <7467899.rIHYG2lMSP@e123338-lin> References: <20191121081717.29518-1-james.qian.wang@arm.com> <2125422.nYgIr5rE5T@e123338-lin> <20191205085256.GA11212@jamwan02-TSP300> In-Reply-To: <20191205085256.GA11212@jamwan02-TSP300> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [217.140.106.55] x-clientproxiedby: CWLP123CA0162.GBRP123.PROD.OUTLOOK.COM (2603:10a6:401:88::30) To VI1PR08MB4078.eurprd08.prod.outlook.com (2603:10a6:803:e5::28) Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Mihail.Atanassov@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7d9bfbd1-6275-4ea3-d55a-08d7797b0eb4 X-MS-TrafficTypeDiagnostic: VI1PR08MB3725:|VI1PR08MB3725:|DB7PR08MB3433: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; x-forefront-prvs: 02426D11FE X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(7916004)(4636009)(376002)(396003)(39860400002)(346002)(136003)(366004)(199004)(189003)(6512007)(4326008)(25786009)(14444005)(186003)(9686003)(6486002)(64756008)(66476007)(14454004)(66446008)(66946007)(66556008)(76176011)(316002)(6862004)(2906002)(8936002)(5660300002)(6636002)(52116002)(81156014)(81166006)(229853002)(102836004)(8676002)(305945005)(33716001)(71190400001)(26005)(11346002)(54906003)(86362001)(478600001)(99286004)(71200400001)(6506007)(39026012); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3725; H:VI1PR08MB4078.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: szuwdR4hvKVxwU0YtBnLtbrYtLkaUL+rv93bHNTBsemz6Yd2igfJk95xkGPqpU2wGxlEBDhAw35wbiYvcuJDMm7DT2ySccIMvFam15loX4/nHF/jPuoQOLcctDBlaeN3tR/e31rYz44k9DNvO57cX6gYgSPpUSvHF5u72q0IlmvmoNfIglE4g8WrsqEmeKFx61yw/YXY0vaJlUcfhmJNS9Ko2iXYFy9jJP35FrQH+7xJCOS5J8GiH/U9Cer0x217W6SC8e9vRO27DrHD64N70M5SOg3ZJsiJbgf+F4MwzBg26v76ypkm7XMjZlI8JGdJlygS6M/ABOQsQDWVxUHOlepKgIMtTxDdUiu5aa2t1nEzdLiK0+RtJGUao6FBTQVEiklz5xdsgcHJ2IIfl32lgZ1QGdPbSA3iEhwwmlhXK8n9n0i5uuW710P8rhByB81eFG5cwpJkFTol6HKTGXabobmdUxwNfk5pgeHl24mD+Yg6U8fsvSBFF2MX000MElVW Content-ID: MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3725 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Mihail.Atanassov@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT061.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE; EFV:NLI; SFV:NSPM; SFS:(10009020)(7916004)(4636009)(39860400002)(136003)(396003)(346002)(376002)(189003)(199004)(76130400001)(356004)(2906002)(6486002)(229853002)(23726003)(6512007)(33716001)(46406003)(54906003)(70586007)(14444005)(316002)(76176011)(99286004)(186003)(86362001)(70206006)(81156014)(14454004)(305945005)(6862004)(8936002)(8676002)(6636002)(25786009)(102836004)(50466002)(4326008)(9686003)(6506007)(81166006)(11346002)(478600001)(26826003)(97756001)(336012)(26005)(22756006)(5660300002)(39026012); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3433; H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:Pass; LANG:en; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; MX:1; A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 14154fb2-83f8-4ce5-f74a-08d7797b0a05 NoDisclaimer: True X-Forefront-PRVS: 02426D11FE X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h6he+3S5hoKuFkQG6xl7pczlNaZkBs2wU+GlSziUTSv5I/t23w8lD/xIHZR80HGvz1JGZsaVBTsXgVe9eQuc9inrxyc3eriXjoMhCcmNeKdFY6ckRaXJ7gPR/U5xHfJ75k78La0M/ElpSNVTpoeTi5Rqpd7XYgip0EEA9TYiUa36KyflZVkecCb+q+htGD9HvFx19JBMD9ihNonOoVL1vHAYUfmFrbOAxonWdxdKEVA0ZU+3Ml/PV3LIM1VJFnNyW2gpreUWf+KVgsyoGnNccF1gEOHc9T2C5wMPdNR3I2RMzqvKAG1+TuISC0yqSsVCcLyvLooXU6kwtHL35T2RAjMUw8dJgNKJn1tuqDX5/FgHf2YDtVQYTRhqqB1Bzd9Ni8JdaWLSzB5RlcurEK6nvXiuLUxKTELQ8Kx+ADcUhXYNaNM2mlllKMh5ebCjCu1K3/2wCkFe6xuUEjO+RBawf63kDIG4gxsNpt/Vm3qKEpBh8wAr19C438t+ulcPUI/o X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2019 12:02:53.0184 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d9bfbd1-6275-4ea3-d55a-08d7797b0eb4 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3433 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=a/fhLRrer8lrVfnLeZvmzH8tHzAfDX/skF9cWbl4eNU8GdsPXaHJkFvXlagyo7IbhKQpBCV9LnUYBxcG8KAsuiynfqCRaKPTEj6wZRsRrm9pJbmpF2iU/pMKvrL6Jq15cAmUG0GdBbXSNFg+z6n7HaxML75W4BmTHlv6MAe0+WM= X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=upJZ/1UXfJFJEq/JCwD85T4aQyewjdSi7ui43YR+mOA=; b=a/fhLRrer8lrVfnLeZvmzH8tHzAfDX/skF9cWbl4eNU8GdsPXaHJkFvXlagyo7IbhKQpBCV9LnUYBxcG8KAsuiynfqCRaKPTEj6wZRsRrm9pJbmpF2iU/pMKvrL6Jq15cAmUG0GdBbXSNFg+z6n7HaxML75W4BmTHlv6MAe0+WM= X-Mailman-Original-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; lists.freedesktop.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;lists.freedesktop.org; dmarc=bestguesspass action=none header.from=arm.com; X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Lowry Li \(Arm Technology China\)" , "Oscar Zhang \(Arm Technology China\)" , "Tiannan Zhu \(Arm Technology China\)" , "airlied@linux.ie" , Liviu Dudau , "Jonathan Chai \(Arm Technology China\)" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "Julien Yin \(Arm Technology China\)" , "Channing Chen \(Arm Technology China\)" , "Thomas Sun \(Arm Technology China\)" , nd , Ben Davis Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1cnNkYXksIDUgRGVjZW1iZXIgMjAxOSAwODo1MzowMiBHTVQgamFtZXMgcWlhbiB3YW5n IChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6Cj4gT24gVHVlLCBEZWMgMDMsIDIwMTkgYXQg MDk6NTk6NTdBTSArMDAwMCwgTWloYWlsIEF0YW5hc3NvdiB3cm90ZToKPiA+IE9uIFR1ZXNkYXks IDMgRGVjZW1iZXIgMjAxOSAwNjo0NjowNiBHTVQgamFtZXMgcWlhbiB3YW5nIChBcm0gVGVjaG5v bG9neSBDaGluYSkgd3JvdGU6Cj4gPiA+IE9uIE1vbiwgRGVjIDAyLCAyMDE5IGF0IDExOjA3OjUy QU0gKzAwMDAsIE1paGFpbCBBdGFuYXNzb3Ygd3JvdGU6Cj4gPiA+ID4gT24gVGh1cnNkYXksIDIx IE5vdmVtYmVyIDIwMTkgMDg6MTc6NDUgR01UIGphbWVzIHFpYW4gd2FuZyAoQXJtIFRlY2hub2xv Z3kgQ2hpbmEpIHdyb3RlOgo+ID4gPiA+ID4gRDMyIGlzIHNpbXBsZSB2ZXJzaW9uIG9mIEQ3MSwg dGhlIGRpZmZlcmVuY2UgaXM6Cj4gPiA+ID4gPiAtIE9ubHkgaGFzIG9uZSBwaXBlbGluZQo+ID4g PiA+ID4gLSBEcm9wIHRoZSBwZXJpcGggYmxvY2sgYW5kIG1lcmdlIGl0IHRvIEdDVQo+ID4gPiA+ ID4gCj4gPiA+ID4gPiB2MjogUmViYXNlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2Zm LWJ5OiBKYW1lcyBRaWFuIFdhbmcgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8amFtZXMucWlhbi53 YW5nQGFybS5jb20+Cj4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ICAuLi4vZHJtL2FybS9kaXNwbGF5 L2luY2x1ZGUvbWFsaWRwX3Byb2R1Y3QuaCAgfCAgMyArLQo+ID4gPiA+ID4gIC4uLi9hcm0vZGlz cGxheS9rb21lZGEvZDcxL2Q3MV9jb21wb25lbnQuYyAgICB8ICAyICstCj4gPiA+ID4gPiAgLi4u L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfZGV2LmMgIHwgNDMgKysrKysrKysr KysrLS0tLS0tLQo+ID4gPiA+ID4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEv ZDcxX3JlZ3MuaCB8IDEzICsrKysrKwo+ID4gPiA+ID4gIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfZHJ2LmMgICB8ICAxICsKPiA+ID4gPiA+ICA1IGZpbGVzIGNoYW5nZWQs IDQ0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRwX3By b2R1Y3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF9wcm9k dWN0LmgKPiA+ID4gPiA+IGluZGV4IDk2ZTJlNDAxNjI1MC4uZGJkM2Q0NzY1MDY1IDEwMDY0NAo+ ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRw X3Byb2R1Y3QuaAo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2lu Y2x1ZGUvbWFsaWRwX3Byb2R1Y3QuaAo+ID4gPiA+ID4gQEAgLTE4LDcgKzE4LDggQEAKPiA+ID4g PiA+ICAjZGVmaW5lIE1BTElEUF9DT1JFX0lEX1NUQVRVUyhfX2NvcmVfaWQpICAgICAoKChfX3Uz MikoX19jb3JlX2lkKSkgJiAweEZGKQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIC8qIE1hbGktZGlz cGxheSBwcm9kdWN0IElEcyAqLwo+ID4gPiA+ID4gLSNkZWZpbmUgTUFMSURQX0Q3MV9QUk9EVUNU X0lEICAgMHgwMDcxCj4gPiA+ID4gPiArI2RlZmluZSBNQUxJRFBfRDcxX1BST0RVQ1RfSUQJMHgw MDcxCj4gPiA+ID4gPiArI2RlZmluZSBNQUxJRFBfRDMyX1BST0RVQ1RfSUQJMHgwMDMyCj4gPiA+ ID4gPiAgCj4gPiA+ID4gPiAgdW5pb24ga29tZWRhX2NvbmZpZ19pZCB7Cj4gPiA+ID4gPiAgCXN0 cnVjdCB7Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jCj4gPiA+ID4gPiBpbmRleCA2ZGFkZjQ0MTNlZjMu LmM3ZjdlOWM1NDVjNyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEvZDcxL2Q3MV9jb21wb25lbnQuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jCj4gPiA+ID4g PiBAQCAtMTI3NCw3ICsxMjc0LDcgQEAgc3RhdGljIGludCBkNzFfdGltaW5nX2N0cmxyX2luaXQo c3RydWN0IGQ3MV9kZXYgKmQ3MSwKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJY3RybHIgPSB0b19j dHJscihjKTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+IC0JY3RybHItPnN1cHBvcnRzX2R1YWxfbGlu ayA9IHRydWU7Cj4gPiA+ID4gPiArCWN0cmxyLT5zdXBwb3J0c19kdWFsX2xpbmsgPSBkNzEtPnN1 cHBvcnRzX2R1YWxfbGluazsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEvZDcxL2Q3MV9kZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEvZDcxL2Q3MV9kZXYuYwo+ID4gPiA+ID4gaW5kZXggOWIzYmYzNTNiNmNjLi4yZDQyOWUzMTBl NWIgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2Q3MS9kNzFfZGV2LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEvZDcxL2Q3MV9kZXYuYwo+ID4gPiA+ID4gQEAgLTM3MSwyMyArMzcxLDMzIEBA IHN0YXRpYyBpbnQgZDcxX2VudW1fcmVzb3VyY2VzKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQo+ ID4gPiA+ID4gIAkJZ290byBlcnJfY2xlYW51cDsKPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gIAo+ ID4gPiA+ID4gLQkvKiBwcm9iZSBQRVJJUEggKi8KPiA+ID4gPiA+ICsJLyogT25seSB0aGUgbGVn YWN5IEhXIGhhcyB0aGUgcGVyaXBoIGJsb2NrLCB0aGUgbmV3ZXIgbWVyZ2VzIHRoZSBwZXJpcGgK PiA+ID4gPiA+ICsJICogaW50byBHQ1UKPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiAgCXZhbHVl ID0gbWFsaWRwX3JlYWQzMihkNzEtPnBlcmlwaF9hZGRyLCBCTEtfQkxPQ0tfSU5GTyk7Cj4gPiA+ ID4gPiAtCWlmIChCTE9DS19JTkZPX0JMS19UWVBFKHZhbHVlKSAhPSBENzFfQkxLX1RZUEVfUEVS SVBIKSB7Cj4gPiA+ID4gPiAtCQlEUk1fRVJST1IoImFjY2VzcyBibGsgcGVyaXBoIGJ1dCBnb3Qg YmxrOiAlZC5cbiIsCj4gPiA+ID4gPiAtCQkJICBCTE9DS19JTkZPX0JMS19UWVBFKHZhbHVlKSk7 Cj4gPiA+ID4gPiAtCQllcnIgPSAtRUlOVkFMOwo+ID4gPiA+ID4gLQkJZ290byBlcnJfY2xlYW51 cDsKPiA+ID4gPiA+ICsJaWYgKEJMT0NLX0lORk9fQkxLX1RZUEUodmFsdWUpICE9IEQ3MV9CTEtf VFlQRV9QRVJJUEgpCj4gPiA+ID4gPiArCQlkNzEtPnBlcmlwaF9hZGRyID0gTlVMTDsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJaWYgKGQ3MS0+cGVyaXBoX2FkZHIpIHsKPiA+ID4gPiA+ICsJCS8q IHByb2JlIFBFUklQSEVSQUwgaW4gbGVnYWN5IEhXICovCj4gPiA+ID4gPiArCQl2YWx1ZSA9IG1h bGlkcF9yZWFkMzIoZDcxLT5wZXJpcGhfYWRkciwgUEVSSVBIX0NPTkZJR1VSQVRJT05fSUQpOwo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJZDcxLT5tYXhfbGluZV9zaXplCT0gdmFsdWUgJiBQRVJJ UEhfTUFYX0xJTkVfU0laRSA/IDQwOTYgOiAyMDQ4Owo+ID4gPiA+ID4gKwkJZDcxLT5tYXhfdnNp emUJCT0gNDA5NjsKPiA+ID4gPiA+ICsJCWQ3MS0+bnVtX3JpY2hfbGF5ZXJzCT0gdmFsdWUgJiBQ RVJJUEhfTlVNX1JJQ0hfTEFZRVJTID8gMiA6IDE7Cj4gPiA+ID4gPiArCQlkNzEtPnN1cHBvcnRz X2R1YWxfbGluawk9ICEhKHZhbHVlICYgUEVSSVBIX1NQTElUX0VOKTsKPiA+ID4gPiA+ICsJCWQ3 MS0+aW50ZWdyYXRlc190YnUJPSAhISh2YWx1ZSAmIFBFUklQSF9UQlVfRU4pOwo+ID4gPiA+ID4g Kwl9IGVsc2Ugewo+ID4gPiA+ID4gKwkJdmFsdWUgPSBtYWxpZHBfcmVhZDMyKGQ3MS0+Z2N1X2Fk ZHIsIEdDVV9DT05GSUdVUkFUSU9OX0lEMCk7Cj4gPiA+ID4gPiArCQlkNzEtPm1heF9saW5lX3Np emUJPSBHQ1VfTUFYX0xJTkVfU0laRSh2YWx1ZSk7Cj4gPiA+ID4gPiArCQlkNzEtPm1heF92c2l6 ZQkJPSBHQ1VfTUFYX05VTV9MSU5FUyh2YWx1ZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQl2 YWx1ZSA9IG1hbGlkcF9yZWFkMzIoZDcxLT5nY3VfYWRkciwgR0NVX0NPTkZJR1VSQVRJT05fSUQx KTsKPiA+ID4gPiA+ICsJCWQ3MS0+bnVtX3JpY2hfbGF5ZXJzCT0gR0NVX05VTV9SSUNIX0xBWUVS Uyh2YWx1ZSk7Cj4gPiA+ID4gPiArCQlkNzEtPnN1cHBvcnRzX2R1YWxfbGluawk9IEdDVV9ESVNQ TEFZX1NQTElUX0VOKHZhbHVlKTsKPiA+ID4gPiA+ICsJCWQ3MS0+aW50ZWdyYXRlc190YnUJPSBH Q1VfRElTUExBWV9UQlVfRU4odmFsdWUpOwo+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiAgCj4gPiA+ ID4gPiAtCXZhbHVlID0gbWFsaWRwX3JlYWQzMihkNzEtPnBlcmlwaF9hZGRyLCBQRVJJUEhfQ09O RklHVVJBVElPTl9JRCk7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtCWQ3MS0+bWF4X2xpbmVfc2l6 ZQk9IHZhbHVlICYgUEVSSVBIX01BWF9MSU5FX1NJWkUgPyA0MDk2IDogMjA0ODsKPiA+ID4gPiA+ IC0JZDcxLT5tYXhfdnNpemUJCT0gNDA5NjsKPiA+ID4gPiA+IC0JZDcxLT5udW1fcmljaF9sYXll cnMJPSB2YWx1ZSAmIFBFUklQSF9OVU1fUklDSF9MQVlFUlMgPyAyIDogMTsKPiA+ID4gPiA+IC0J ZDcxLT5zdXBwb3J0c19kdWFsX2xpbmsJPSB2YWx1ZSAmIFBFUklQSF9TUExJVF9FTiA/IHRydWUg OiBmYWxzZTsKPiA+ID4gPiA+IC0JZDcxLT5pbnRlZ3JhdGVzX3RidQk9IHZhbHVlICYgUEVSSVBI X1RCVV9FTiA/IHRydWUgOiBmYWxzZTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+ICAJZm9yIChpID0g MDsgaSA8IGQ3MS0+bnVtX3BpcGVsaW5lczsgaSsrKSB7Cj4gPiA+ID4gPiAgCQlwaXBlID0ga29t ZWRhX3BpcGVsaW5lX2FkZChtZGV2LCBzaXplb2Yoc3RydWN0IGQ3MV9waXBlbGluZSksCj4gPiA+ ID4gPiAgCQkJCQkgICAmZDcxX3BpcGVsaW5lX2Z1bmNzKTsKPiA+ID4gPiA+IEBAIC00MTUsNyAr NDI1LDcgQEAgc3RhdGljIGludCBkNzFfZW51bV9yZXNvdXJjZXMoc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYpCj4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJLyogbG9vcCB0aGUg cmVnaXN0ZXIgYmxrcyBhbmQgcHJvYmUgKi8KPiA+ID4gPiA+IC0JaSA9IDI7IC8qIGV4Y2x1ZGUg R0NVIGFuZCBQRVJJUEggKi8KPiA+ID4gPiA+ICsJaSA9IDE7IC8qIGV4Y2x1ZGUgR0NVICovCj4g PiA+ID4gPiAgCW9mZnNldCA9IEQ3MV9CTE9DS19TSVpFOyAvKiBza2lwIEdDVSAqLwo+ID4gPiA+ ID4gIAl3aGlsZSAoaSA8IGQ3MS0+bnVtX2Jsb2Nrcykgewo+ID4gPiA+ID4gIAkJYmxrX2Jhc2Ug PSBtZGV2LT5yZWdfYmFzZSArIChvZmZzZXQgPj4gMik7Cj4gPiA+ID4gPiBAQCAtNDI1LDkgKzQz NSw5IEBAIHN0YXRpYyBpbnQgZDcxX2VudW1fcmVzb3VyY2VzKHN0cnVjdCBrb21lZGFfZGV2ICpt ZGV2KQo+ID4gPiA+ID4gIAkJCWVyciA9IGQ3MV9wcm9iZV9ibG9jayhkNzEsICZibGssIGJsa19i YXNlKTsKPiA+ID4gPiA+ICAJCQlpZiAoZXJyKQo+ID4gPiA+ID4gIAkJCQlnb3RvIGVycl9jbGVh bnVwOwo+ID4gPiA+ID4gLQkJCWkrKzsKPiA+ID4gPiA+ICAJCX0KPiA+ID4gPiA+ICAKPiA+ID4g PiA+ICsJCWkrKzsKPiA+ID4gPiAKPiA+ID4gPiBUaGlzIGNoYW5nZSBkb2Vzbid0IG1ha2UgbXVj aCBzZW5zZSBpZiB5b3Ugd2FudCB0byBjb3VudCBob3cgbWFueQo+ID4gPiA+IGJsb2NrcyBhcmUg YXZhaWxhYmxlLCBzaW5jZSB5b3UncmUgbm93IGNvdW50aW5nIHRoZSByZXNlcnZlZCBvbmVzLCB0 b28uCj4gPiA+IAo+ID4gPiBUaGF0J3MgYmVjYXVzZSBmb3IgRDMyIG51bV9ibG9ja3MgaW5jbHVk ZXMgdGhlIHJlc2VydmVkIGJsb2Nrcy4KPiA+ID4gCj4gPiA+ID4gT24gdGhlIGNvdW50aW5nIG5v dGUsIHRoZSBwcmlvciBjb2RlIHJpZGVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoZSBwZXJpcGgKPiA+ ID4gPiBibG9jayBpcyBsYXN0IGluIHRoZSBtYXAsIGFuZCBJIGRvbid0IHNlZSBob3cgeW91IHN0 aWxsIGhhbmRsZSBub3QKPiA+ID4gPiBjb3VudGluZyBpdCBpbiB0aGUgRDcxIGNhc2UuCj4gPiA+ IAo+ID4gPiBTaW5jZSBENzEgaGFzIG9uZSByZXNlcnZlZCBibG9jaywgYW5kIG5vdyB3ZSBjb3Vu dCByZXNlcnZlZCBibG9jay4KPiA+ID4gCj4gPiA+IFNvIG5vdyBubyBtYXR0ZXIgRDMyIG9yIEQ3 MToKPiA+ID4gICBudW1fYmxvY2tzID0gbl92YWxpZF9ibG9jayArIG5fcmVzZXJ2ZWRfYmxvY2sg KyBHQ1UuCj4gPiAKPiA+IFNvIGF0IGxlYXN0IHdlIG5lZWQgdGhhdCBjb21tZW50IGRyb3BwZWQg aW4gd2l0aCB0aGUgY29kZS4gRnV0dXJlIEhXCj4gPiBtaWdodCBicmVhayB5b3VyIGFzc3VtcHRp b24gaGVyZSBvbmNlIG1vcmUgYW5kIGl0IHdpbGwgdGhlbiBiZSB1c2VmdWwKPiA+IHRvIGtub3cg d2h5IHRoaXMgd29ya3MgZm9yIGJvdGggcHJvZHVjdHMuCj4gCj4gT0ssIHdpbGwgYWRkIGEgY29t bWVudHMgbGlrZS4KPiAKPiAvKiBQZXIgSFcgZGVzaWduOiBudW1fYmxvY2tzID0gbl92YWxpZF9i bG9jayArIG5fcmVzZXJ2ZWRfYmxvY2sgKyBHQ1UgKi8KPiAKPiBBbmQgUGVyIEhXLCBhbGwgYXJj aC12MS54IGluY2x1ZGUgKGQ3MS9kMzIvZDc3KSBmb2xsb3dzIHRoaXMgcnVsZSwKPiB0aGUgb2xk IGxvZ2ljIHdoaWNoIHNraXAgdGhlIHJlc2VydmVkLWJsb2NrIGFjdHVhbGx5IG5vdCByaWdodC4K CldlbGwsIGdpdmVuIHRoaXMgXi4uLgoKPiAKPiA+IEknZCBwZXJzb25hbGx5IGFic3RyYWN0IHRo YXQgYSBiaXQgYmVoaW5kIGEgc21hbGwgaGVscGVyIGZ1bmMgYW5kCj4gPiBoYW5kbGUgZGlmZmVy ZW50IHByb2R1Y3RzIHNlcGFyYXRlbHkuIEl0J3MgYSBiaXQgb2YgZHVwbGljYXRpb24gYnV0Cj4g PiBtdWNoIGVhc2llciB0byBjb21wcmVoZW5kLiBTYXZlZCBjeWNsZXMgcmVhZGluZyBjb2RlID09 IEdvb2QgVGhpbmcodG0pLgoKLi4udGhlbiBteSBjb21tZW50IGhlcmUgXiBubyBsb25nZXIgYXBw bGllcy4gOikKCkknZCBiZSBhIGJpdCBoYXBwaWVyIGlmIHRoYXQgZml4IGlzIHNwbGl0IG91dCBp bnRvIGl0cyBvd24gcGF0Y2guIE1pbmQKZG9pbmcgdGhhdD8KCj4gCj4gT3VyIGtvbWVkYSBkcml2 ZXIgaGFzIHR3byBsYXllcnMsIGNvbW1vbiBsYXllciBhbmQgY2hpcC4gY3VycmVudCB3ZQo+IG9u bHkgaGF2ZSBvbmUgY2hpcCBmb2xkZXIgZDcxIGZvciBzdXBwb3J0IGFyY2gtdjEueCBwcm9kY3V0 Lgo+IEFuZCBvdXIgZnV0dXJlIHByb2R1Y3RzIChhcmNoLXYyLngpIHdpbGwgaGF2ZSBpdHMgb3du IGNoaXAgZm9sZGVyLCBhbmQKPiBpdHMgb3duIGNoaXAgc3BlY2lmaWMgY29kZS4KClRoZSBwb2lu dCBpcyBtb290IG5vdywgYnV0IEkgbWVhbnQgYWRkaW5nIGEgZmV3IHNtYWxsIHN0YXRpYyBmdW5j dGlvbnMgaW4KdGhlIHNhbWUgZmlsZS4gTm90aGluZyB0byBkbyB3aXRoIGxheWVyaW5nIDopLgoK PiAKPiBUaGFua3MKPiBKYW1lcwo+ID4gCj4gPiA+IAo+ID4gPiBUaGFua3MKPiA+ID4gSmFtZXMK PiA+ID4gPiAKPiA+ID4gPiA+ICAJCW9mZnNldCArPSBENzFfQkxPQ0tfU0laRTsKPiA+ID4gPiA+ ICAJfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gQEAgLTYwMyw2ICs2MTMsNyBAQCBkNzFfaWRlbnRp ZnkodTMyIF9faW9tZW0gKnJlZ19iYXNlLCBzdHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyAqY2hpcCkK PiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJc3dpdGNoIChwcm9kdWN0X2lkKSB7Cj4gPiA+ID4gPiAg CWNhc2UgTUFMSURQX0Q3MV9QUk9EVUNUX0lEOgo+ID4gPiA+ID4gKwljYXNlIE1BTElEUF9EMzJf UFJPRFVDVF9JRDoKPiA+ID4gPiA+ICAJCWZ1bmNzID0gJmQ3MV9jaGlwX2Z1bmNzOwo+ID4gPiA+ ID4gIAkJYnJlYWs7Cj4gPiA+ID4gPiAgCWRlZmF1bHQ6Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX3JlZ3MuaCBiL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcxL2Q3MV9yZWdzLmgKPiA+ID4gPiA+IGlu ZGV4IDE3MjdkYzk5MzkwOS4uODFkZTZhMjNlN2YzIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX3JlZ3MuaAo+ID4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX3JlZ3MuaAo+ ID4gPiA+ID4gQEAgLTcyLDYgKzcyLDE5IEBACj4gPiA+ID4gPiAgI2RlZmluZSBHQ1VfQ09OVFJP TF9NT0RFKHgpCSgoeCkgJiAweDcpCj4gPiA+ID4gPiAgI2RlZmluZSBHQ1VfQ09OVFJPTF9TUlNU CUJJVCgxNikKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICsvKiBHQ1VfQ09ORklHVVJBVElPTiByZWdp c3RlcnMgKi8KPiA+ID4gPiA+ICsjZGVmaW5lIEdDVV9DT05GSUdVUkFUSU9OX0lEMAkweDEwMAo+ ID4gPiA+ID4gKyNkZWZpbmUgR0NVX0NPTkZJR1VSQVRJT05fSUQxCTB4MTA0Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArLyogR0NVIGNvbmZpZ3VyYXRpb24gKi8KPiA+ID4gPiA+ICsjZGVmaW5lIEdD VV9NQVhfTElORV9TSVpFKHgpCSgoeCkgJiAweEZGRkYpCj4gPiA+ID4gPiArI2RlZmluZSBHQ1Vf TUFYX05VTV9MSU5FUyh4KQkoKHgpID4+IDE2KQo+ID4gPiA+ID4gKyNkZWZpbmUgR0NVX05VTV9S SUNIX0xBWUVSUyh4KQkoKHgpICYgMHg3KQo+ID4gPiA+ID4gKyNkZWZpbmUgR0NVX05VTV9QSVBF TElORVMoeCkJKCgoeCkgPj4gMykgJiAweDcpCj4gPiA+ID4gPiArI2RlZmluZSBHQ1VfTlVNX1ND QUxFUlMoeCkJKCgoeCkgPj4gNikgJiAweDcpCj4gPiA+ID4gPiArI2RlZmluZSBHQ1VfRElTUExB WV9TUExJVF9FTih4KQkoKCh4KSA+PiAxNikgJiAweDEpCj4gPiA+ID4gPiArI2RlZmluZSBHQ1Vf RElTUExBWV9UQlVfRU4oeCkJKCgoeCkgPj4gMTcpICYgMHgxKQo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gIC8qIEdDVSBvcG1vZGUgKi8KPiA+ID4gPiA+ICAjZGVmaW5lIElOQUNUSVZFX01PREUJCTAK PiA+ID4gPiA+ICAjZGVmaW5lIFRCVV9DT05ORUNUX01PREUJMQo+ID4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKPiA+ID4gPiA+IGlu ZGV4IGI3YTEwOTdjNDVjNC4uYWQzOGJiYzc0MzFlIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZHJ2LmMKPiA+ID4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jCj4gPiA+ ID4gPiBAQCAtMTI1LDYgKzEyNSw3IEBAIHN0YXRpYyBpbnQga29tZWRhX3BsYXRmb3JtX3JlbW92 ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGtvbWVkYV9vZl9tYXRjaFtdID0gewo+ID4g PiA+ID4gIAl7IC5jb21wYXRpYmxlID0gImFybSxtYWxpLWQ3MSIsIC5kYXRhID0gZDcxX2lkZW50 aWZ5LCB9LAo+ID4gPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFybSxtYWxpLWQzMiIsIC5kYXRh ID0gZDcxX2lkZW50aWZ5LCB9LAo+ID4gPiA+ID4gIAl7fSwKPiA+ID4gPiA+ICB9Owo+ID4gPiA+ ID4gIAo+ID4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+IAo+ID4gCj4gPiAKPiAKCgot LSAKTWloYWlsCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==