From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1215E41DA2 for ; Wed, 1 Mar 2023 00:58:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C88A41181; Wed, 1 Mar 2023 00:58:09 +0100 (CET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2062.outbound.protection.outlook.com [40.107.105.62]) by mails.dpdk.org (Postfix) with ESMTP id 8C7524067B; Wed, 1 Mar 2023 00:58:06 +0100 (CET) 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=RVgLX1X/nVinmXsz/rL7iku6tOVeZfLGmTScGeJbpNo=; b=zZ8NLVAsuiZafGEz6/QTEvu33XFUCfIuD4VVxuS+ZZj7BSPTXT2tevPggaoSLkNcnQuYiwALo1LnpDDcq5BvNUV0ZcNYQdzzhCLEoEsIOxOnzHvZrmFHvoj2uWWH0HcyH/qHqKTDsy6JX8zKuZMKIsa/3pcISCkrZDM+EpUKI4Q= Received: from DU2PR04CA0081.eurprd04.prod.outlook.com (2603:10a6:10:232::26) by AS8PR08MB8444.eurprd08.prod.outlook.com (2603:10a6:20b:566::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.25; Tue, 28 Feb 2023 23:58:03 +0000 Received: from DBAEUR03FT014.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:232:cafe::82) by DU2PR04CA0081.outlook.office365.com (2603:10a6:10:232::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.17 via Frontend Transport; Tue, 28 Feb 2023 23:58:03 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass 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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT014.mail.protection.outlook.com (100.127.143.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.17 via Frontend Transport; Tue, 28 Feb 2023 23:58:03 +0000 Received: ("Tessian outbound 2ba0ed2ebb9f:v135"); Tue, 28 Feb 2023 23:58:03 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a04af5f73116426f X-CR-MTA-TID: 64aa7808 Received: from b71a1829df8d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9EAC5859-EFAF-40FE-817F-97BF49B67B9C.1; Tue, 28 Feb 2023 23:57:54 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b71a1829df8d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 28 Feb 2023 23:57:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k02o5XLpbMBmpodljE6o9l3NWDxu7FIGqVi5lGdseCO3m60Cepln/XdQ+/34J3oNy3COk6GAixt+Ugps4nuMQN8MrRo8V0fVw9dU8Rr/mrDhrruhpW73e4uXQrn0rr7mbHVVUplQXCMs/sKWdpDYHWJqq6LXY5co49hrNs/VHc2cKdTxNMrVihMkAvRETDmY9VZwDjXzbQ9WTuQBl1gGAQwWQnQ4/W6rH5zhUuVQvuJhF4h1tIP8Nel9fVACThCKaUBiuA8FP3tDaHhposOWrsIDc5pS7PP1W6nmCdmuLf1gCoZmguM0+sZjQ97QvYpL+OYMOeb7hwAc6SqTKp/kow== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RVgLX1X/nVinmXsz/rL7iku6tOVeZfLGmTScGeJbpNo=; b=UDs2EGDeuno5uIGjaeuXIgq3ENRGbqn5tGiHFafhKwfk6ljof/jhWwrkptE5QTwSRMleCTNkD+zhzUNWvCgiBHC/UFX4cWOLZR6RvnYPsPKBrjX7WIfX1OQaJuCXLWeUZWvuOmsdMNHrIwwAYsJVyqN9kt0/5hy3CwJJU/Akwh2eRpVG/BYQhV9+xZtwb3ilu6vcXy5LL1hNj89jAd6tla86fKBGPg7EL1KSL8nd7scspcsoyuW6N1310fapEYi4gGIwvx1y1IuJhmevixrOjRTeTc8NfsptkBPufimOjmAoA5Xxmnm9yuLKi0nmj/FZeAwcBXRz926sf0xVyZxzqg== 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=RVgLX1X/nVinmXsz/rL7iku6tOVeZfLGmTScGeJbpNo=; b=zZ8NLVAsuiZafGEz6/QTEvu33XFUCfIuD4VVxuS+ZZj7BSPTXT2tevPggaoSLkNcnQuYiwALo1LnpDDcq5BvNUV0ZcNYQdzzhCLEoEsIOxOnzHvZrmFHvoj2uWWH0HcyH/qHqKTDsy6JX8zKuZMKIsa/3pcISCkrZDM+EpUKI4Q= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB9PR08MB6396.eurprd08.prod.outlook.com (2603:10a6:10:23e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Tue, 28 Feb 2023 23:57:50 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::910e:e35f:b1eb:ae9]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::910e:e35f:b1eb:ae9%4]) with mapi id 15.20.6134.030; Tue, 28 Feb 2023 23:57:50 +0000 From: Honnappa Nagarahalli To: Konstantin Ananyev , Fengchengwen , Stephen Hemminger , Ruifeng Wang , "Ajit Khaparde (ajit.khaparde@broadcom.com)" CC: Ashok Kaladi , "jerinj@marvell.com" , "thomas@monjalon.net" , "dev@dpdk.org" , "s.v.naga.harish.k@intel.com" , "erik.g.carrillo@intel.com" , "abhinandan.gujjar@intel.com" , "stable@dpdk.org" , nd , nd Subject: RE: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Topic: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Index: AQHZRPHSKAOhGJtmykGYr/7I8+jOva7XZ1EAgAF+GTCAALzPgIAAh9OAgACgagCAAQUYsIAAZrmAgABWEgCACH2McA== Date: Tue, 28 Feb 2023 23:57:50 +0000 Message-ID: References: <20230220060839.1267349-1-ashok.k.kaladi@intel.com> <20230220060839.1267349-2-ashok.k.kaladi@intel.com> <4786db4b-63dc-5329-522d-77eb58d4cff4@huawei.com> <20230221090053.14d653bf@hermes.local> <3cd97a71-b32f-b33b-dce1-46fabad182f6@huawei.com> <54fbf4e55cd44477b1e956f98a7a3c50@huawei.com> In-Reply-To: <54fbf4e55cd44477b1e956f98a7a3c50@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: A8405DFDFEC4A34CB6018F75C3B952A6.0 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DBAPR08MB5814:EE_|DB9PR08MB6396:EE_|DBAEUR03FT014:EE_|AS8PR08MB8444:EE_ X-MS-Office365-Filtering-Correlation-Id: a4c3bb0e-b654-4b77-908d-08db19e7a127 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: nKDxy2h4KoBdr04UCOWkP2mbDQiXh3fNx22USMiuGyWvtNabfn8BBEqq6L6ognssIQioirfHGxX60buTTlu92xJFIjtxZsnVLu88TgNVeac1LY5cVe7Dbz+mlMYZdaOrOJxsycQO2z+n0smVsUXAJYOC2CUfzOvZcBfp2HqfF9Yl3MAjbPAzdUk3085dKNrxjdZFk5NeRDBHylfTuOQ9SZ+s6+JSp6Z4pQhr+rs436nHzyuB1fNGmuRZ2V7txEugnFrLPdE2dH3KdNjwX86y7hOF6LVlug3a4Y82jW91kHeBXEfL7VZCL9SvYLNA5f9peMFpq1zYCrqXL0wOazpolkTiEShfzWTI8UHUBCPHBauJ+5aGW0MRHWJn056CXEthyfuf6KGPa8hgbprGBAfasDsN5stqerSC+naUXfKTyEe5U9esXo3uXZZaujdSKAeSo4pVvQQnPNl5t7OMzY8Z3AY7v2E3bKTr+S5Ik+ble9pdorQNC3J1NYpt/1OmlEx33YidH0IA6GDTGa4L4P7CYYuEoGx3cz7FBVVeVfFT/YH0IDAiucXUHkw3caUsa+z3yvNZ3icC23I83gaa1dVj0EjNeHbGQplINmS+28+V5VLnyjiOHgtrPJUeirHY6HQWwGzxS+zJ5ZoM5dDaDM/uyjPr+9WmopQr/Aa5N2dmMfHcUYOAkE1avUpW3FGE5E0st8Y1OETsoX+tgdUv+ZdeJw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(376002)(396003)(136003)(366004)(39860400002)(451199018)(86362001)(33656002)(316002)(110136005)(54906003)(2906002)(8676002)(5660300002)(9686003)(186003)(76116006)(64756008)(30864003)(66556008)(4326008)(38070700005)(66946007)(7416002)(41300700001)(6506007)(53546011)(478600001)(8936002)(26005)(7696005)(71200400001)(55016003)(66446008)(38100700002)(66476007)(52536014)(83380400001)(122000001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6396 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 71a766b3-901a-4703-483e-08db19e7995a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kBlExyBFFzCTRnNDJuuKqM1zSbVsLd/77+MFTWpljZgwm0ydbszNXe7qYCuXmY+2ADrIiTi1zEC4N0ggXoOfMGp20jbga491Ba8kxOTFaOCY4BMH1EOo1533r/9IXYkrLt2sZCIjS8SbUvhP/gmuM1QL+pqYE0jdt/VQbXPLSIgRZdHBePfqGlH3sMLB4fZnBO7jBvhdSgUBpcuM/lXDaGeXLZ0PnPtbHwtnyYBruNLLT0wSmZG5cl2BgCSE3hEv4rYqAux4np7cOZ5w/rqfZ2vPIdUq7nk00naHgbo/j22eWgZpwSznt0uIqrjKFVB2OYNJk7Nw4rKH5RSfGMiZN/TgIdLfUx6m+bZ+E3XEQoB+Z8PsvqSD5umdMA7/TwBbdEnqni10l0L1Nbfk7PJR9Y64yn0WhzZyp+dnp3PyddZZ4JhTqh9BO/Mc/Oh41cuIcL628uNTfPB9gOeA6zWH5n1o6LYkQTp1PFQkqwKcBaIeejkkiqCaFaQsoui/6/CFsDfNBNRGThGnGAD5+2ICZE+XMJDJrnwOnhbJIExRwS4+b1TzjPYejlDzeiUHyeik6Q3faIq0FkjBxGJXRkCT7WoGMky9JWuu/3zjo+bDOGrq5pzG1FmHavClWVCzLzbQRsnwBbpEeV/2FwHP1pNd6Xrm77ll0umYwn2u5FPbu4ryRw08d+Pf4W4kvh42sYrHkCAaQPeDpZqQSakTCcMSvQ== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230025)(4636009)(376002)(39860400002)(136003)(396003)(346002)(451199018)(46966006)(40470700004)(36840700001)(8936002)(5660300002)(30864003)(52536014)(450100002)(6506007)(82310400005)(36860700001)(53546011)(81166007)(186003)(336012)(82740400003)(83380400001)(47076005)(26005)(9686003)(86362001)(478600001)(110136005)(55016003)(54906003)(8676002)(40460700003)(41300700001)(4326008)(70586007)(70206006)(40480700001)(356005)(7696005)(316002)(33656002)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2023 23:58:03.4765 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a4c3bb0e-b654-4b77-908d-08db19e7a127 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-AuthSource: DBAEUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8444 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS29uc3RhbnRpbiBBbmFu eWV2IDxrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEZl YnJ1YXJ5IDIzLCAyMDIzIDc6MzEgQU0NCj4gVG86IEZlbmdjaGVuZ3dlbiA8ZmVuZ2NoZW5nd2Vu QGh1YXdlaS5jb20+OyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA8SG9ubmFwcGEuTmFnYXJhaGFs bGlAYXJtLmNvbT47IFN0ZXBoZW4gSGVtbWluZ2VyDQo+IDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVy Lm9yZz47IFJ1aWZlbmcgV2FuZyA8UnVpZmVuZy5XYW5nQGFybS5jb20+Ow0KPiBBaml0IEtoYXBh cmRlIChhaml0LmtoYXBhcmRlQGJyb2FkY29tLmNvbSkNCj4gPGFqaXQua2hhcGFyZGVAYnJvYWRj b20uY29tPg0KPiBDYzogQXNob2sgS2FsYWRpIDxhc2hvay5rLmthbGFkaUBpbnRlbC5jb20+OyBq ZXJpbmpAbWFydmVsbC5jb207DQo+IHRob21hc0Btb25qYWxvbi5uZXQ7IGRldkBkcGRrLm9yZzsg cy52Lm5hZ2EuaGFyaXNoLmtAaW50ZWwuY29tOw0KPiBlcmlrLmcuY2FycmlsbG9AaW50ZWwuY29t OyBhYmhpbmFuZGFuLmd1amphckBpbnRlbC5jb207IHN0YWJsZUBkcGRrLm9yZzsgbmQNCj4gPG5k QGFybS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggMi8yXSBldGhkZXY6IGZpeCByYWNlIGNv bmRpdGlvbiBpbiBmYXN0LXBhdGggb3BzIHNldHVwDQo+IA0KPiANCj4gDQo+ID4gPj4+Pj4+PiBJ ZiBldGhkZXYgZW5xdWV1ZSBvciBkZXF1ZXVlIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcNCj4g PiA+Pj4+Pj4+IGV0aF9kZXZfZnBfb3BzX3NldHVwKCksIGl0IG1heSBnZXQgcHJlLWVtcHRlZCBh ZnRlciBzZXR0aW5nDQo+ID4gPj4+Pj4+PiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIGJ1dCBiZWZv cmUgc2V0dGluZyB0aGUgcG9pbnRlciB0byBwb3J0IGRhdGEuDQo+ID4gPj4+Pj4+PiBJbiB0aGlz IGNhc2UgdGhlIG5ld2x5IHJlZ2lzdGVyZWQgZW5xdWV1ZS9kZXF1ZXVlIGZ1bmN0aW9uDQo+ID4g Pj4+Pj4+PiB3aWxsIHVzZSBkdW1teSBwb3J0IGRhdGEgYW5kIGVuZCB1cCBpbiBzZWcgZmF1bHQu DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4gVGhpcyBwYXRjaCBtb3ZlcyB0aGUgdXBkYXRpb24g b2YgZWFjaCBkYXRhIHBvaW50ZXJzIGJlZm9yZQ0KPiA+ID4+Pj4+Pj4gdXBkYXRpbmcgY29ycmVz cG9uZGluZyBmdW5jdGlvbiBwb2ludGVycy4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBGaXhl czogYzg3ZDQzNWE0ZDc5ICgiZXRoZGV2OiBjb3B5IGZhc3QtcGF0aCBBUEkgaW50byBzZXBhcmF0 ZQ0KPiA+ID4+Pj4+Pj4gc3RydWN0dXJlIikNCj4gPiA+Pj4+Pj4+IENjOiBzdGFibGVAZHBkay5v cmcNCj4gPiA+Pj4+DQo+ID4gPj4+PiBXaHkgaXMgc29tZXRoaW5nIGNhbGxpbmcgZW5xdWV1ZS9k ZXF1ZXVlIHdoZW4gZGV2aWNlIGlzIG5vdCBmdWxseQ0KPiA+ID4+IHN0YXJ0ZWQuDQo+ID4gPj4+ PiBBIGNvcnJlY3RseSB3cml0dGVuIGFwcGxpY2F0aW9uIHdvdWxkIG5vdCBjYWxsIHJ4L3R4IGJ1 cnN0IHVudGlsDQo+ID4gPj4+PiBhZnRlciBldGhkZXYgc3RhcnQgaGFkIGZpbmlzaGVkLg0KPiA+ ID4+Pg0KPiA+ID4+PiBQbGVhc2UgcmVmZXIgdGhlIGViMGQ0NzFhODk0IChldGhkZXY6IGFkZCBw cm9hY3RpdmUgZXJyb3IgaGFuZGxpbmcNCj4gPiA+Pj4gbW9kZSksIHdoZW4gZHJpdmVyIHJlY292 ZXIgaXRzZWxmLCB0aGUgYXBwbGljYXRpb24gbWF5IHN0aWxsDQo+ID4gPj4+IGludm9rZQ0KPiA+ ID4+IGVucXVldWUvZGVxdWV1ZSBBUEkuDQo+ID4gPj4NCj4gPiA+PiBSaWdodCBub3cgRFBESyBl dGhkZXYgbGF5ZXIgKmRvZXMgbm90KiBwcm92aWRlIHN5bmNocm9uaXphdGlvbg0KPiA+ID4+IG1l Y2hhbmlzbXMgYmV0d2VlbiBkYXRhLXBhdGggYW5kIGNvbnRyb2wtcGF0aCBmdW5jdGlvbnMuDQo+ ID4gPj4gVGhhdCB3YXMgYSBkZWxpYmVyYXRlIGRlaXNnbiBjaG9pY2UuIElmIHdlIHdhbnQgdG8g Y2hhbmdlIHRoYXQNCj4gPiA+PiBydWxlLCB0aGVuIEkgc3VwcG9zZSB3ZSBuZWVkIGEgY29tbXVu aXR5IGNvbnNlbnN1cyBmb3IgaXQuDQo+ID4gPj4gSSB0aGluayB0aGF0IGlmIHRoZSBkcml2ZXIg d2FudHMgdG8gcHJvdmlkZSBzb21lIHNvcnQgb2YgZXJyb3INCj4gPiA+PiByZWNvdmVyeSBwcm9j ZWR1cmUsIHRoZW4gaXQgaGFzIHRvIHByb3ZpZGUgc29tZSBzeW5jaHJvbml6YXRpb24NCj4gPiA+ PiBtZWNoYW5pc20gaW5zaWRlIGl0IGJldHdlZW4gZGF0YS1wYXRoIGFuZCBjb250cm9sLXBhdGgg ZnVuY3Rpb25zLg0KPiA+ID4+IEFjdHVhbGx5IGxvb2tpbmcgYXQgZWIwZDQ3MWE4OTQgKGV0aGRl djogYWRkIHByb2FjdGl2ZSBlcnJvcg0KPiA+ID4+IGhhbmRsaW5nIG1vZGUpLCBhbmQgZm9sbG93 aW5nIHBhdGNoZXMgSSB3b25kZXIgaG93IGl0IGNyZWVwZWQgaW4/DQo+ID4gPj4gSXQgc2VlbXMg d2UganVzdCBpbnRyb2R1Y2VkIGEgbG9vcGhvbGUgZm9yIHJhY2UgY29uZGl0aW9uIHdpdGggdGhp cw0KPiA+ID4+IGFwcHJvYWNoLi4uDQo+ID4NCj4gPiBDb3VsZCB5b3UgdHJ5IHRvIGRlc2NyaWJl IHRoZSBzcGVjaWZpYyBzY2VuYXJpbyBvZiBsb29waG9sZSA/DQo+IA0KPiBPaywgYXMgSSB1bmRl cnN0YW5kIHRoZSBleGlzdGluZyBtZWNoYW5pc206DQo+IA0KPiBXaGVuIFBNRCB3YW50cyB0byBz dGFydCBhIHJlY292ZXJ5IGl0IGhhcyB0bzoNCj4gIC0gaW52b2tlICBydGVfZXRoX2Rldl9jYWxs YmFja19wcm9jZXNzKFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcpOw0KPiAgICBUaGF0IHN1 cHBvc2VkIHRvIGNhbGwgdXNlciBwcm92aWRlZCBjYWxsYmFjay4gQWZ0ZXIgY2FsbGJhY2sgaXMg ZmluaXNoZWQgUE1EDQo+IGFzc3VtZXMNCj4gICAgdGhhdCB1c2VyIGlzIGF3YXJlIHRoYXQgcmVj b3ZlcnkgaXMgYWJvdXQgdG8gc3RhcnQgYW5kIHNob3VsZCBtYWtlIHNvbWUNCj4gcHJlY2F1dGlv bnMuDQo+IC0gd2hlbiByZWNvdmVyeSBpcyBmaW5pc2hlZCBpdCBpbnZva2VzIGFub3RoZXIgY2Fs bGJhY2s6DQo+ICAgUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV8oU1VDQ0VTUy9GQUlMRUQpLiBBZnRl ciB0aGF0IHVzZXIgZWl0aGVyIGNhbg0KPiBjb250aW51ZSB0bw0KPiAgIHVzZSBwb3J0IG9yIGhh dmUgdG8gdHJlYXQgaXMgYXMgZmF1bHR5Lg0KPiANCj4gVGhlIGlkZWEgaXMgb2sgaW4gcHJpbmNp cGxlLCBidXQgdGhlcmUgaXMgYSBwcm9ibGVtLg0KPiANCj4gbGliL2V0aGRldi9ydGVfZXRoZGV2 Lmg6DQo+IA0KPiAgICAgICAgICAvKiogUG9ydCByZWNvdmVyaW5nIGZyb20gYSBoYXJkd2FyZSBv ciBmaXJtd2FyZSBlcnJvci4NCj4gICAgICAgICAgKiBJZiBQTUQgc3VwcG9ydHMgcHJvYWN0aXZl IGVycm9yIHJlY292ZXJ5LA0KPiAgICAgICAgICAqIGl0IHNob3VsZCB0cmlnZ2VyIHRoaXMgZXZl bnQgdG8gbm90aWZ5IGFwcGxpY2F0aW9uDQo+ICAgICAgICAgICogdGhhdCBpdCBkZXRlY3RlZCBh biBlcnJvciBhbmQgdGhlIHJlY292ZXJ5IGlzIGJlaW5nIHN0YXJ0ZWQuDQo+IA0KPiA8PDwgISEh ISENCj4gICAgICAgICAgKiBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlv biBzaG91bGQgbm90IGludm9rZSBhbnkgY29udHJvbA0KPiBwYXRoIEFQSQ0KPiAgICAgICAgICAq IChzdWNoIGFzIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZS9ydGVfZXRoX2Rldl9zdG9wLi4uKSB1bnRp bCByZWNlaXZpbmcNCj4gICAgICAgICAgKiBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1Mg b3INCj4gUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9GQUlMRUQgZXZlbnQuDQo+ICAgICAgICAgICog VGhlIFBNRCB3aWxsIHNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9u cywNCj4gICAgICAgICAgKiBhbmQgcmUtc2V0IHRoZSBkYXRhIHBhdGggcG9pbnRlcnMgdG8gbm9u LWR1bW15IGZ1bmN0aW9ucw0KPiAgICAgICAgICAqIGJlZm9yZSByZXBvcnRpbmcgUlRFX0VUSF9F VkVOVF9SRUNPVkVSWV9TVUNDRVNTIGV2ZW50Lg0KPiA8PDwgISEhISENCj4gDQo+IFRoYXQgcGFy dCBpcyBqdXN0IHdyb25nIEkgYmVsaWV2ZS4NCj4gSXQgc2hvdWxkIGJlOg0KPiBVcG9uIHJlY2Vp dmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnkgKmJv dGggY29udHJvbA0KPiBhbmQgZGF0YS1wYXRoKiBBUEkgdW50aWwgcmVjZWl2aW5nICBSVEVfRVRI X0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1Mgb3INCj4gUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9GQUlM RUQgZXZlbnQuDQo+IFJlc2V0dGluZyBkYXRhIHBhdGggcG9pbnRlcnMgdG8gZHVtbXkgZnVuY3Rp b25zIGJ5IFBNRCAqYmVmb3JlKiBpbnZva2luZw0KPiBydGVfZXRoX2Rldl9jYWxsYmFja19wcm9j ZXNzKFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcpOw0KPiBpbnRyb2R1Y2VzIGEgcmFjZS1j b25kaXRpb24gd2l0aCBkYXRhLXBhdGggdGhyZWFkcywgYXMgc3VjaCB0aHJlYWQgY291bGQNCj4g YWxyZWFkeSBiZSBpbnNpZGUgUlgvVFggZnVuY3Rpb24gb3IgY2FuIGFscmVhZHkgcmVhZCBSWC9U WCBmdW5jdGlvbi9kYXRhDQo+IHBvaW50ZXJzIGFuZCBiZSBhYm91dCB0byB1c2UgdGhlbS4NCj4g QW5kIHJpZ2h0IG5vdyBydGVfZXRoZGV2IGxheWVyIGRvZXNuJ3QgcHJvdmlkZSBhbnkgbWVjaGFu aXNtIHRvIGNoZWNrIGl0IG9yDQo+IHdhaXQgd2hlbiB0aGV5J2xsIGZpbmlzaCwgZXRjLg0KPiAN Cj4gU28sIHByb2JhYmx5IHRoZSBzaW1wbGVzdCB3YXkgdG8gZml4IGl0IHdpdGggZXhpc3Rpbmcg RFBESyBkZXNpZ246DQo+IC0gdXNlciBsZXZlbCBjYWxsYmFjayAgUlRFX0VUSF9FVkVOVF9FUlJf UkVDT1ZFUklORyBzaG91bGQgcmV0dXJuIG9ubHkNCj4gYWZ0ZXIgaXQgZW5zdXJlcyB0aGF0ICph bGwqDQo+ICAgYXBwbGljYXRpb24gdGhyZWFkcyAoYW5kIHByb2Nlc3Nlcykgc3RvcHBlZCB1c2lu ZyBlaXRoZXIgY29udHJvbCBvciBkYXRhLXBhdGgNCj4gZnVuY3Rpb25zIGZvciB0aGF0IHBvcnQN Cj4gICAoeWVzIGl0IG1lYW5zIHRoYXQgYXBwbGljYXRpb24gdGhhdCB3YW50cyB0byB1c2UgdGhp cyBmZWF0dXJlIGhhcyB0byBwcm92aWRlIGl0cw0KPiBvd24gc3luY2hyb25pemF0aW9uIG1lY2hh bmlzbQ0KPiAgIGFyb3VuZCBkYXRhLXBhdGggZnVuY3Rpb25zIChSWC9UWCkgdGhhdCBpdCBpcyBn b2luZyB0byB1c2UpLg0KRG9lcyB0aGlzIG1lYW4gdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IGNh bGwgZWl0aGVyIGNvbnRyb2wgcGxhbmUgb3IgZGF0YSBwbGFuZSBBUElzIGFmdGVyIHRoZSBjYWxs YmFjayByZXR1cm5zPw0KSWYgdGhlIGFwcGxpY2F0aW9uIGNhbiBkbyB0aGlzIGluIHRoZSBjYWxs IGJhY2sgZnVuY3Rpb24sIGNhbiBpdCBkbyB0aGUgc2FtZSBvdXRzaWRlIG9mIHRoZSBjYWxsIGJh Y2sgZnVuY3Rpb24/DQoNCkNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywgSSBiZWxpZXZlIHRoZSBj YWxsIGJhY2sgaXMgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBFQUwgdGhyZWFkLiBUaGVy ZSBjb3VsZCBiZSBtdWx0aXBsZSB0aHJlYWRzIHVzaW5nIHRoZSBzYW1lIHBvcnQuIFRoZXJlIGlz IGEgcG9zc2liaWxpdHkgdGhhdCBhbGwgdGhlc2UgdGhyZWFkcyBtaWdodCBjYWxsIHRoZSBjYWxs IGJhY2sgZnVuY3Rpb24uIFNvLCB3aG8gb3ducyB0aGUgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJl IHRoZSBjYWxsIGJhY2sgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgb25seSBvbmNlPyBQTUQgb3IgdGhl IGNhbGwgYmFjayBmdW5jdGlvbj8gDQoNCj4gLSBhZnRlciB0aGF0IFBNRCBpcyBzYWZlIHRvIHJl c2V0IHJ0ZV9ldGhfZnBfb3BzW10gdmFsdWVzIHRvIGR1bW15IG9uZXMuDQpXaHkgaXMgdGhpcyBy ZXF1aXJlZCBpZiB0aGUgY29udHJvbCBwbGFuZSBhbmQgZGF0YSBwbGFuZSB0aHJlYWRzIGFyZSBu b3QgZ29pbmcgdG8gY2FsbCBhbnkgQVBJcz8gUmVzZXR0aW5nIGFsbCB0aGVzZSBwb2ludGVycyBp cyBub3QgYXQgYXRvbWljIG9wZXJhdGlvbiwgZG9lcyBpdCBpbnRyb2R1Y2UgYW55IHByb2JsZW1z PyBGb3IgZXg6IGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gY2FsbCBmdW5jdGlvbjEgYW5kIGZ1 bmN0aW9uMiBpbiBzZXF1ZW5jZSwgd2hhdCBoYXBwZW5zIGlmIGZ1bmN0aW9uMSB3YXMgbm90IG51 bGwgYnV0IGZ1bmN0aW9uMiBiZWNhbWUgTlVMTCBieSB0aGUgdGltZSBpdCBpcyBjYWxsZWQ/DQoN Cg0KSG93IGFib3V0IGEgbW9yZSBzaW1wbGVyIGFwcHJvYWNoPw0KSXQgc2hvdWxkIGJlIHBvc3Np YmxlIHRvIHJldHVybiBhbiBlcnJvciBjb2RlIGZyb20gdGhlIHJ0ZV9ldGhfcnhfYnVyc3QgQVBJ LiBUaGUgcmVzcG9uc2liaWxpdHkgdG8gc3RvcCBjYWxsaW5nIGFueSBjb250cm9sIHBsYW5lIGFu ZCBkYXRhIHBsYW5lIEFQSXMgKHRoaXMgcmVxdWlyZXMgYSBzaW1wbGUgc3luY2hyb25pemF0aW9u IG1lY2hhbmlzbS4gVGhlIGNvc3Qgb2YgdGhhdCBzaG91bGQgYmUgbGVzcyB3aGVuIHRoZXJlIGFy ZSBubyBlcnJvcnMuIEkgc2VlIGFwcGxpY2F0aW9ucyBsaWtlIFZQUCBhbHJlYWR5IGltcGxlbWVu dCB0aGVtKSBjYW4gYmUgbGVmdCB0byB0aGUgYXBwbGljYXRpb24uIFRoZSBhcHBsaWNhdGlvbiBj YW4gY2FsbCB0aGUgcmVjb3ZlcnkgQVBJIGFuZCByZWxlYXNlIGFsbCB0aGUgdGhyZWFkcyBpZiB0 aGUgcmVjb3Zlcnkgd2FzIHN1Y2Nlc3NmdWwuDQoNCj4gDQo+IEFuZCBtZXNzYWdlIHRvIGFsbCBQ TUQgZGV2ZWxvcGVyczoNCj4gKnBsZWFzZSBzdG9wIHVwZGF0aW5nIHJ0ZV9ldGhfZnBfb3BzW10g b24geW91ciBvd24qLg0KPiBUaGF0J3MgYSBiYWQgcHJhY3RpY2UgYW5kIGl0IGlzIG5vdCBzdXBw b3NlZCB0byBkbyB0aGluZ3MgdGhhdCB3YXkuDQo+IFRoZXJlIGlzIGEgc3BlY2lhbCBBUEkgcHJv dmlkZWQgZm9yIHRoZXNlIHB1cnBvc2VzOg0KPiBldGhfZGV2X2ZwX29wc19yZXNldCgpLCBldGhf ZGV2X2ZwX29wc19zZXR1cCgpLCBzbyB1c2UgaXQuDQo+IA0KPiBCVFcsICBJIGRvbid0IHNlZSBh bnkgaW1wbGVtZW50YXRpb24gZm9yIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcNCj4gd2l0 aGluIGVpdGhlciB0ZXN0cG1kIG9yIGFueSBvdGhlciBleGFtcGxlIGFwcHMuDQo+IEFtIEkgbWlz c2luZyBzb21ldGhpbmc/DQo+IElmIG5vdCwgdGhlbiBwcm9iYWJseSBpdCBjb3VsZCBiZSBhIGdv b2Qgc3RhcnRpbmcgcG9pbnQgLSBsZXQncyBpbmNvcnBvcmF0ZSBpdCBpbnNpZGUNCj4gdGVzdHBt ZCAobmV3IGZvcndhcmRpbmcgZW5naW5lIHByb2JhYmx5KSBzbyBldmVyeW9uZSBjYW4gdGVzdC90 cnkgaXQuDQo+IA0KPiAgICAgICAgICAqIEl0IG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNh bm5vdCBzZW5kIG9yIHJlY2VpdmUgYW55IHBhY2tldHMNCj4gICAgICAgICAgKiBkdXJpbmcgdGhp cyBwZXJpb2QuDQo+ICAgICAgICAgICogQG5vdGUgQmVmb3JlIHRoZSBQTUQgcmVwb3J0cyB0aGUg cmVjb3ZlcnkgcmVzdWx0LA0KPiAgICAgICAgICAqIHRoZSBQTUQgbWF5IHJlcG9ydCB0aGUgUlRF X0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyBldmVudA0KPiBhZ2FpbiwNCj4gICAgICAgICAgKiBi ZWNhdXNlIGEgbGFyZ2VyIGVycm9yIG1heSBvY2N1ciBkdXJpbmcgdGhlIHJlY292ZXJ5Lg0KPiAg ICAgICAgICAqLw0KPiAgICAgICAgIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcsDQo+IA0K PiA+ID4+IEl0IHByb2JhYmx5IG5lZWRzIHRvIGJlIGVpdGhlciBkZXByZWNhdGVkIG9yIHJld29y a2VkLg0KPiA+ID4gTG9va2luZyBhdCB0aGUgY29tbWl0LCBpdCBkb2VzIG5vdCBzYXkgYW55dGhp bmcgYWJvdXQgdGhlIGRhdGEgcGxhbmUNCj4gPiA+IGZ1bmN0aW9ucyB3aGljaCBwcm9iYWJseSBt ZWFucywgdGhlIGVycm9yIHJlY292ZXJ5IGlzDQo+ID4gaGFwcGVuaW5nIHdpdGhpbiB0aGUgZGF0 YSBwbGFuZSB0aHJlYWQuIFdoYXQgaGFwcGVucyB0byBvdGhlciBkYXRhDQo+ID4gcGxhbmUgdGhy ZWFkcyB0aGF0IGFyZSBwb2xsaW5nIHRoZSBzYW1lIHBvcnQgb24gd2hpY2ggdGhlIGVycm9yIHJl Y292ZXJ5IGlzDQo+IGhhcHBlbmluZz8NCj4gPg0KPiA+IFRoZSBjb21taXQgbG9nIHNheXM6ICJ0 aGUgUE1EIHNldHMgdGhlIGRhdGEgcGF0aCBwb2ludGVycyB0byBkdW1teQ0KPiBmdW5jdGlvbnMi Lg0KPiA+DQo+ID4gU28gdGhlIGRhdGEgcGxhbmUgdGhyZWFkcyB3aWxsIHJlY2VpdmUgbm9uLXBh Y2tldCBhbmQgc2VuZCB6ZXJvIHdpdGggcG9ydA0KPiB3aGljaCBpbiBlcnJvciByZWNvdmVyeS4N Cj4gPg0KPiA+ID4NCj4gPiA+IEFsc28sIHRoZSBjb21taXQgbG9nIHNheXMgdGhhdCB3aGlsZSB0 aGUgZXJyb3IgcmVjb3ZlcnkgaXMgdW5kZXINCj4gPiA+IHByb2dyZXNzLCB0aGUgYXBwbGljYXRp b24gc2hvdWxkIG5vdCBjYWxsIGFueSBjb250cm9sIHBsYW5lIEFQSXMuDQo+ID4gPiBEb2VzDQo+ ID4gdGhhdCBtZWFuLCB0aGUgYXBwbGljYXRpb24gaGFzIHRvIGNoZWNrIGZvciBlcnJvciBjb25k aXRpb24gZXZlcnkgdGltZSBpdCBjYWxscyBhDQo+IGNvbnRyb2wgcGxhbmUgQVBJPw0KPiA+DQo+ ID4gSWYgYXBwbGljYXRpb24gaGFzIG5vdCByZWdpc3RlciBldmVudCAoUlRFX0VUSF9FVkVOVF9F UlJfUkVDT1ZFUklORykNCj4gPiBjYWxsYmFjaywgaXQgY291bGQgY2FsbHMgY29udHJvbCBwbGFu ZSBBUEksIGJ1dCBpdCB3aWxsIHJldHVybiBmYWlsZWQuDQo+ID4gSWYgYXBwbGljYXRpb24gaGFz IHJlZ2lzdGVyIGFib3ZlIGNhbGxiYWNrLCBpdCBjYW4gd2FpdCBmb3IgcmVjb3ZlcnkgcmVzdWx0 LCBvcg0KPiBkaXJlY3QgY2FsbCB3aXRob3V0IHdhaXQgYnV0IHRoaXMgd2lsbCByZXR1cm4gZmFp bGVkLg0KPiA+DQo+ID4gPg0KPiA+ID4gVGhlIGNvbW1pdCBtZXNzYWdlIGFsc28gc2F5cyB0aGF0 ICJQTUQgbWFrZXMgc3VyZSB0aGUgY29udHJvbCBwYXRoDQo+ID4gPiBvcGVyYXRpb25zIGZhaWxl ZCB3aXRoIHJldGNvZGUgLUVCVVNZIi4gSXQgZG9lcyBub3Qgc2F5IGhvdyBpdA0KPiA+IGRvZXMg dGhpcy4gQnV0LCBhbnkgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBQTUQgdGhyZWFkIHRvIGNvbnRy b2wgcGxhbmUNCj4gdGhyZWFkIG1heSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIGlmIG5vdCBk b25lIGNvcnJlY3RseS4NCj4gPg0KPiA+IEZpcnN0IHRoZXJlIGFyZSBubyBQTUQgdGhyZWFkLCBk byB5b3UgbWVhbiBlYWwtaW50ci10aHJlYWQgPw0KPiA+DQo+ID4gQXMgZm9yIHRoaXMgcXVlc3Rp b24sIHlvdSBjYW4gc2VlIFBNRHMgd2hpY2ggYWxyZWFkeSBpbXBsZW1lbnQgaXQsIHRoZXkgYm90 aA0KPiBwcm92aWRlcyBtdXR1YWwgZXhjbHVzaW9uIHByb3RlY3Rpb24uDQo+ID4NCj4gPiA+DQo+ ID4gPj4NCj4gPiA+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBXb3VsZCBzb21ldGhpbmcgbGlrZSB0 aGlzIHdvcmsgYmV0dGVyPw0KPiA+ID4+Pj4NCj4gPiA+Pj4+IE5vdGU6IHRoZXJlIGlzIGFub3Ro ZXIgYnVnIGluIGN1cnJlbnQgY29kZS4gVGhlIGNoZWNrIGZvciBsaW5rDQo+ID4gPj4+PiBzdGF0 ZSBpbnRlcnJ1cHQgYW5kIGxpbmtfb3BzIGNvdWxkIHJldHVybiAtRU5PVFNVUCBhbmQgbGVhdmUN Cj4gPiA+Pj4+IGRldmljZSBpbg0KPiA+ID4+IGluZGV0ZXJtaW5hdGUgc3RhdGUuDQo+ID4gPj4+ PiBUaGUgY2hlY2sgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgUE1ELg0KPiA+ID4+Pj4N Cj4gPiA+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhk ZXYvcnRlX2V0aGRldi5jDQo+ID4gPj4+PiBpbmRleA0KPiA+ID4+Pj4gMDI2NmNjODJhY2I2Li5k NmMxNjNlZDg1ZTcgMTAwNjQ0DQo+ID4gPj4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYu Yw0KPiA+ID4+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPiA+Pj4+IEBAIC0x NTgyLDYgKzE1ODIsMTQgQEAgcnRlX2V0aF9kZXZfc3RhcnQodWludDE2X3QgcG9ydF9pZCkNCj4g PiA+Pj4+ICAJCXJldHVybiAwOw0KPiA+ID4+Pj4gIAl9DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gKwlp ZiAoZGV2LT5kYXRhLT5kZXZfY29uZi5pbnRyX2NvbmYubHNjID09IDAgJiYNCj4gPiA+Pj4+ICsJ ICAgIGRldi0+ZGV2X29wcy0+bGlua191cGRhdGUgPT0gTlVMTCkgew0KPiA+ID4+Pj4gKwkJUlRF X0VUSERFVl9MT0coSU5GTywNCj4gPiA+Pj4+ICsJCQkgICAgICAgIkRldmljZSB3aXRoIHBvcnRf aWQ9JSJQUkl1MTYiIGxpbmsNCj4gdXBkYXRlIG5vdA0KPiA+ID4+IHN1cHBvcnRlZFxuIiwNCj4g PiA+Pj4+ICsJCQkgICAgICAgcG9ydF9pZCk7DQo+ID4gPj4+PiArCQkJcmV0dXJuIC1FTk9UU1VQ Ow0KPiA+ID4+Pj4gKwl9DQo+ID4gPj4+PiArDQo+ID4gPj4+PiAgCXJldCA9IHJ0ZV9ldGhfZGV2 X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4gPj4+PiAgCWlmIChyZXQgIT0gMCkN Cj4gPiA+Pj4+ICAJCXJldHVybiByZXQ7DQo+ID4gPj4+PiBAQCAtMTU5MSw5ICsxNTk5LDcgQEAg cnRlX2V0aF9kZXZfc3RhcnQodWludDE2X3QgcG9ydF9pZCkNCj4gPiA+Pj4+ICAJCWV0aF9kZXZf bWFjX3Jlc3RvcmUoZGV2LCAmZGV2X2luZm8pOw0KPiA+ID4+Pj4NCj4gPiA+Pj4+ICAJZGlhZyA9 ICgqZGV2LT5kZXZfb3BzLT5kZXZfc3RhcnQpKGRldik7DQo+ID4gPj4+PiAtCWlmIChkaWFnID09 IDApDQo+ID4gPj4+PiAtCQlkZXYtPmRhdGEtPmRldl9zdGFydGVkID0gMTsNCj4gPiA+Pj4+IC0J ZWxzZQ0KPiA+ID4+Pj4gKwlpZiAoZGlhZyAhPSAwKQ0KPiA+ID4+Pj4gIAkJcmV0dXJuIGV0aF9l cnIocG9ydF9pZCwgZGlhZyk7DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gIAlyZXQgPSBldGhfZGV2X2Nv bmZpZ19yZXN0b3JlKGRldiwgJmRldl9pbmZvLCBwb3J0X2lkKTsgQEANCj4gPiA+Pj4+IC0xNjEx LDE2DQo+ID4gPj4+PiArMTYxNywxOCBAQCBydGVfZXRoX2Rldl9zdGFydCh1aW50MTZfdCBwb3J0 X2lkKQ0KPiA+ID4+Pj4gIAkJcmV0dXJuIHJldDsNCj4gPiA+Pj4+ICAJfQ0KPiA+ID4+Pj4NCj4g PiA+Pj4+IC0JaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyA9PSAwKSB7DQo+ ID4gPj4+PiAtCQlpZiAoKmRldi0+ZGV2X29wcy0+bGlua191cGRhdGUgPT0gTlVMTCkNCj4gPiA+ Pj4+IC0JCQlyZXR1cm4gLUVOT1RTVVA7DQo+ID4gPj4+PiAtCQkoKmRldi0+ZGV2X29wcy0+bGlu a191cGRhdGUpKGRldiwgMCk7DQo+ID4gPj4+PiAtCX0NCj4gPiA+Pj4+IC0NCj4gPiA+Pj4+ICAJ LyogZXhwb3NlIHNlbGVjdGlvbiBvZiBQTUQgZmFzdC1wYXRoIGZ1bmN0aW9ucyAqLw0KPiA+ID4+ Pj4gIAlldGhfZGV2X2ZwX29wc19zZXR1cChydGVfZXRoX2ZwX29wcyArIHBvcnRfaWQsIGRldik7 DQo+ID4gPj4+Pg0KPiA+ID4+Pj4gKwkvKiBlbnN1cmUgc3RhdGUgaXMgc2V0IGJlZm9yZSBtYXJr aW5nIGRldmljZSByZWFkeSAqLw0KPiA+ID4+Pj4gKwlydGVfc21wX3dtYigpOw0KPiA+ID4+Pj4g Kw0KPiA+ID4+Pj4gIAlydGVfZXRoZGV2X3RyYWNlX3N0YXJ0KHBvcnRfaWQpOw0KPiA+ID4+Pj4g Kw0KPiA+ID4+Pj4gKwkvKiBVcGRhdGUgY3VycmVudCBsaW5rIHN0YXRlICovDQo+ID4gPj4+PiAr CWlmIChkZXYtPmRhdGEtPmRldl9jb25mLmludHJfY29uZi5sc2MgPT0gMCkNCj4gPiA+Pj4+ICsJ CSgqZGV2LT5kZXZfb3BzLT5saW5rX3VwZGF0ZSkoZGV2LCAwKTsNCj4gPiA+Pj4+ICsNCj4gPiA+ Pj4+ICAJcmV0dXJuIDA7DQo+ID4gPj4+PiAgfQ0KPiA+ID4+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+ PiAuDQo+ID4gPj4+Pg0KPiA+ID4NCg==