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=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 CB21AC433B4 for ; Tue, 11 May 2021 13:58:55 +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 58861613F7 for ; Tue, 11 May 2021 13:58:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 58861613F7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC5886EA38; Tue, 11 May 2021 13:58:54 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2078.outbound.protection.outlook.com [40.107.237.78]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F6C46EA38; Tue, 11 May 2021 13:58:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fOxPnnVnIIyBgaLKXUMFB3nE+MBho6+yM95iBS7IVWOTBOV/f6KLpn31ETpalWEVLbVx6CmFI4frzJ/v6SpaNTwrRDP92Y9tWmImdsWB/CuzEhKPmAmNsGwHZ8Mx2/aWuM6RQ3IHx8OhWztGmvTOzdvPEH33YCCtMBJs1tEPaOIuBq6Qxz8rbGcgy8u3/W+HdTPX2B9SOQN/vR3wIyf37/WfTu2IdOjwYdxm2FDnE2ciMJFa1unaioXkHTD8h3X9M1BOwPHnRnVT6uSKTaiFo5Ag/f7Pfcfd9OHNlKtWhlD/WWsHE+qE7HDA+AZivksj58zA+c3UI+rNWPigSl6kpQ== 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=zFiM/md4/SL6UFFIP6mn/dta+AT1illttr676jaXNrc=; b=bep4Ndfc2f7qYnngujCQHa1m6knMOud+hNHc7NXhH9Q8DNUk91oeE/0wns5pg80Dj2tLBlqt1c8/826+zARiNbIV6jtI86/UDL02zf+mML6NZNlYi/0JVjNP4/PIzd8nUbjkg6gLiyJxLC55XUY3+mJxoe2WY06G9AduhSFTZDS/Ymho+7ajbj9Mg7MckwAj0dfJ1qaWIlnONq+M0If6Y8SKDVF7cddXMQBvIzgg9GtKtomvhyx1qpRtGXkdVSehHatlFR1Oj3J0ZzMyM9K9BkFcx5FEmp+j21B8+gh7KYR5vfVXDBFzyTbxvdmV0RyDcP4KtjNv8N43eCmxytvorA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zFiM/md4/SL6UFFIP6mn/dta+AT1illttr676jaXNrc=; b=SGhnADzmVl/q+ZNevn4rpHboYlfAB5JNJGwZE443i43vyJpIKHsyEWDkvJVdfF31WsgXsvW2srPXcfbofARsap+vwfgOjacLoGLCNZlS1rtB+M0j94HeuoTQlHSy+IcSvBe6cFGkDZflwyBydl16eMNW7Zu9zLDBkqDFGOlth0k= Authentication-Results: lists.freedesktop.org; dkim=none (message not signed) header.d=none; lists.freedesktop.org; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by MN2PR12MB4207.namprd12.prod.outlook.com (2603:10b6:208:1d9::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25; Tue, 11 May 2021 13:58:49 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34%6]) with mapi id 15.20.4108.031; Tue, 11 May 2021 13:58:49 +0000 To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210511132525.377190-1-thomas.hellstrom@linux.intel.com> <20210511132525.377190-7-thomas.hellstrom@linux.intel.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <8ac6bc5c-17c0-2ffd-7f8c-823ab3c8a858@amd.com> Date: Tue, 11 May 2021 15:58:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: <20210511132525.377190-7-thomas.hellstrom@linux.intel.com> Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:5935:8b67:3cdd:7cc1] X-ClientProxiedBy: PR3P189CA0088.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::33) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:5935:8b67:3cdd:7cc1] (2a02:908:1252:fb60:5935:8b67:3cdd:7cc1) by PR3P189CA0088.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Tue, 11 May 2021 13:58:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b91d81cd-1ba0-4516-1544-08d91484e6b7 X-MS-TrafficTypeDiagnostic: MN2PR12MB4207: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ejc3FRVgmEJKu5IJ4yveg9qzKoMnUyKiTE1tbvkU5jsM2XKQsZoQkfP90u+reRV1pHZeXc5NRumIQnTjaSslfdPyaISsYX7FcGJy21Vk8pcramMz0HR7H4t3kPvVrHKgT/tEZeyRYBmNSaK3Y5vt4U9soWVhbvVFILoTWwbtJwiVnv3nrC0YwYG0q1YZudRGc8EE9MD71HNHZxnghzYQbUopBUgZ2IcerBM8rgf8yrQCP50HxSPtE2Lr5qK7Pkqz5eF+5s3b0Blz6emwbIg03sVLBy9qKC456wRogjqa1bM4d67kUJA/WnrpHNTRFMoKAqZnM9JmD2o9zOhmDTY7l9pCxnTlmxUEVLXWaLVIlX9hb72l8VfbzdxFwtNAn93PB1k2CB3vXkP/D4t8TarTQ6wlW2yJEVDP79zx4jouPGojT+RlUzUi8YvdDBGFrwpbSoF12zh5lnPYefzHwUe3w6ECme78eP3IVDUx0M0q75UtvSvuDPsb4MMwne/kViCB9nnLLjTXkpVN/sOCS7BBiwtu2IKIvbsgqml8A2Q7z8Chxu4m7GkKYgLp+Ev4bxo4D8mQ5M0T5mMHCISmrQz0ZZlPSwb6BNQH4F2r/ccgbAWVqk/rxlOOeNFEnxVH/GYiRmO1jp9oN/gdqibMOYAtuH2e27Ld4rzqr4CXD3IFtdvAPDrSHKPa3gCmNF2GeWJJ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(376002)(136003)(39860400002)(346002)(31696002)(36756003)(86362001)(38100700002)(66574015)(83380400001)(6666004)(66476007)(66946007)(66556008)(2616005)(2906002)(316002)(6486002)(8676002)(478600001)(186003)(16526019)(30864003)(8936002)(5660300002)(31686004)(52116002)(43740500002)(45980500001)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UDRpSEtGYjJHaU9ndCtxeHp5SVExVUsyTzRqcjJPMXFmMzg4MGc0aXp5SmYv?= =?utf-8?B?UXJJcVZ2b0xoRm1mV012VktsYjhqYnhaNXFkSlVObmFMbXd6bVRGS3djVXNN?= =?utf-8?B?Nk0zT2pEZ0J1SzNGN0JkeXRvNGhrQUg3aHRqdEFJcHY4cUlXaU54cTA1RXRT?= =?utf-8?B?SjFERitUSFRLNWJTNEhtdVl5ZlVhUmJoMWUvOGlHU0NpSWFMMDFlUjUyS09K?= =?utf-8?B?WmtENzNPa1I5QjVTL1pSQnU1WHJCbjlQZHgzT0F0S1VNZU9ZZVhJT3NKYU41?= =?utf-8?B?TjJldmNRd1BpaW1VY2VPYUowVGF0anUwTE5hT08zQXdoYzZ4YTNyU3VLeUpn?= =?utf-8?B?T1Vid0syYlk4TmRqbDBzS25BVFdrYVpyTlExUnJQN3IxQ2V0VDFWd0dCcUpB?= =?utf-8?B?YnREaEdHT0J0TUZrVmFPWCtwaWt0NkdDWEdiak1xZFAzeUFVclh6MlJiQlNN?= =?utf-8?B?czV3cCtMUDVqcFRsZG9iYlVPQlNrUlA5MXV1ajlLWmNCRVpLL1pjNHBFL3BN?= =?utf-8?B?SGl5ZjRnVDQ3elVZbW83M3AwOWZGOWNvbXlDVE1vM0VaS2Y5eThIVTBaVVI1?= =?utf-8?B?MU1WMFl1WGQ4ZzQ5SXN4elQ0SkhCV2lwSE9uMUZYdG04dmgxWmFRczg4cjhV?= =?utf-8?B?N1RFQmpnZDU5RnBkanJlc01DdXhBM0NuMlZUNEdDMDVzdW5YVnN6VVdncHIr?= =?utf-8?B?VGJnOEkxT1QreXluL0dJN3hVUXRxSFVCS2tpVEZFZW1sRXAwdTVDR2hJUkQv?= =?utf-8?B?dGFBZ1Z3VVZ4NWkwMGFXaGV1aCtCZHpEa0h4Mjh0U1hzUlB3aERYdXI4NkVH?= =?utf-8?B?SEk1YjFtYUNUOEN3UEdwcndOL3FPZWs3TmFoSlh3eHZCRzVpUnhJU3ROQ2o5?= =?utf-8?B?ZXJXcE9MS0w4VWJNMlFHNW5wUGtDM3M0YlIvSHhPWWZWeWNoMklHNllXYk5p?= =?utf-8?B?ZDFYQ1FTTHIzY3p1b3Z1UFJTNjR5NXNZK1R2eUlPS2pKVm83NU8wVFY0dWZt?= =?utf-8?B?YnRETjh2SzZJUkNobHI5MTF3WWJTTjRBZlNaWS9NRWlLOUtUVEZVTi9qSkZR?= =?utf-8?B?T2JrRkpIN2llYjlTQ2hhOG1VTVlkS25VUkFKT0ZCank0TmhsYUFGdUF4TEJy?= =?utf-8?B?RVptd2RlVEJjNWxBYkYrYmlCMkdtTVdwcjJmQWlCeml5SmFxWlo1c1RhZ042?= =?utf-8?B?cCtIVlMwSUdCMTJaMC9wU2c2MmpaVHhqcCtwS2RJQWRHU2tUWGRTckdIWVhP?= =?utf-8?B?a3RORGd3amptWXV0QUpqNVY5QStVQ1IyY3pWM2VpWklNbkJIUkJOc1JGSHBZ?= =?utf-8?B?R2lyaXRBMnl3K0k1azNYWFZYNFFISUZGL3N1YkhuVXYwQ3IyY3AwVWdzTnBC?= =?utf-8?B?cHZNWW15aWxqT3BLa2Q0Qll2UDZFYTg3dU9vRGpTM2E4YnkySFdqbUFBY1hv?= =?utf-8?B?aHgyTzlyY3QxUEdyRmZvYmNCNXhNUWxMYUo2RXBLWHRtOVByTUF5bHlRSEFQ?= =?utf-8?B?NUtFdzFnRjdtamptNU90T1VzYi9WTGpFWml0dWNPa1AvMnpCK2ovb0NyTTVO?= =?utf-8?B?c3pyTENXTFkxeVFJMFdyeHBMcFdNVHVPRDMrOWFrcTBxMTJudGkxSDZBQ05F?= =?utf-8?B?czRjMGdpQTd6bHI3YUhzMzU2c0lSRkhIWmZkSzhCSHQxbjdEb0NFb3RtWDdP?= =?utf-8?B?WThzTzFaVEM5OGwwVldheE1pcjhvOUZ3dGRTSCtIODR1WUYyUmNyVVlISWdT?= =?utf-8?B?aFhXRjNJMWhxZ0FhOWtIOGp5cGF3OUQwN09xSXFqTlUzOUswbXRnbUVFQWtX?= =?utf-8?B?WDE1UGN6UWxUWEZENUx6QjNCZkJoandyNWJDdG5ESjRSeXlnVnJuN3B4UHlR?= =?utf-8?Q?S/latXw/fsoaT?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b91d81cd-1ba0-4516-1544-08d91484e6b7 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2021 13:58:49.2980 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r1RmzmRlKUD6hJzTfwJqC3xJuGQf1kRshDZzPAnuUnCpIONlf1i5FVxNQruAF+w4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4207 Subject: Re: [Intel-gfx] [PATCH 6/7] drm/i915/ttm, drm/ttm: Introduce a TTM i915 gem object backend X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW0gMTEuMDUuMjEgdW0gMTU6MjUgc2NocmllYiBUaG9tYXMgSGVsbHN0csO2bToKPiBNb3N0IGxv Z2ljYWwgcGxhY2UgdG8gaW50cm9kdWNlIFRUTSBidWZmZXIgb2JqZWN0cyBpcyBhcyBhbiBpOTE1 Cj4gZ2VtIG9iamVjdCBiYWNrZW5kLiBXZSBuZWVkIHRvIGFkZCBzb21lIG9wcyB0byBhY2NvdW50 IGZvciBhZGRlZAo+IGZ1bmN0aW9uYWxpdHkgbGlrZSBkZWxheWVkIGRlbGV0ZSBhbmQgTFJVIGxp c3QgbWFuaXB1bGF0aW9uLgo+Cj4gSW5pdGlhbGx5IHdlIHN1cHBvcnQgb25seSBMTUVNIGFuZCBT WVNURU0gbWVtb3J5LCBidXQgU1lTVEVNCj4gKHdoaWNoIGluIHRoaXMgY2FzZSBtZWFucyBldmlj dGVkIExNRU0gb2JqZWN0cykgaXMgbm90Cj4gdmlzaWJsZSB0byBpOTE1IEdFTSB5ZXQuIFRoZSBw bGFuIGlzIHRvIG1vdmUgdGhlIGk5MTUgZ2VtIHN5c3RlbSByZWdpb24KPiBvdmVyIHRvIHRoZSBU VE0gc3lzdGVtIG1lbW9yeSB0eXBlIGluIHVwY29taW5nIHBhdGNoZXMuCj4KPiBXZSBzZXQgdXAg R1BVIGJpbmRpbmdzIGRpcmVjdGx5IGJvdGggZnJvbSBMTUVNIGFuZCBmcm9tIHRoZSBzeXN0ZW0g cmVnaW9uLAo+IGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIHRoZSBsZWdhY3kgVFRNX1RUIG1l bW9yeSB0eXBlLiBXZSByZXNlcnZlCj4gdGhhdCBmb3IgZnV0dXJlIHBvcnRpbmcgb2YgR0dUVCBi aW5kaW5ncyB0byBUVE0uCj4KPiBUaGVyZSBhcmUgc29tZSBjaGFuZ2VzIHRvIFRUTSB0byBhbGxv dyBmb3IgcHVyZ2luZyBzeXN0ZW0gbWVtb3J5IGJ1ZmZlcgo+IG9iamVjdHMgYW5kIHRvIHJlZnVz ZSBzd2FwcGluZyBvZiBzb21lIG9iamVjdHM6IFVuZm9ydHVuYXRlbHkgaTkxNSBnZW0KPiBzdGls bCByZWxpZXMgaGVhdmlseSBvbiBzaG9ydC10ZXJtIG9iamVjdCBwaW5uaW5nLCBhbmQgd2UndmUg Y2hvc2VuIHRvCj4ga2VlcCBzaG9ydC10ZXJtLXBpbm5lZCBidWZmZXIgb2JqZWN0cyBvbiB0aGUg VFRNIExSVSBsaXN0cyBmb3Igbm93LAo+IG1lYW5pbmcgdGhhdCB3ZSBuZWVkIHNvbWUgc29ydCBv ZiBtZWNoYW5pc20gdG8gdGVsbCBUVE0gdGhleSBhcmUgbm90Cj4gc3dhcHBhYmxlLiBBIGxvbmdl ciB0ZXJtIGdvYWwgaXMgdG8gZ2V0IHJpZCBvZiB0aGUgc2hvcnQtdGVybSBwaW5uaW5nLgoKV2Vs bCBqdXN0IHVzZSB0aGUgZXZpY3Rpb25fdmFsdWFibGUgaW50ZXJmYWNlIGZvciB0aGlzLgoKSW4g Z2VuZXJhbCBwbGVhc2UgbWFrZSBzZXBhcmF0ZSBwYXRjaGVzIGZvciB0aGUgVFRNIGNoYW5nZXMg YW5kIGZvciB0aGUgCmk5MTUgY2hhbmdlcyB1c2luZyB0aGVtIGZvciBlYXNpZXIgcmV2aWV3LgoK Q2hyaXN0aWFuLgoKPgo+IFJlbW92ZSB0aGUgb2xkIGxtZW0gYmFja2VuZC4KPgo+IENjOiBDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog VGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPgo+IC0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAx ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMgICAgICB8ICA4 MyAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmggICAgICB8 ICAgNSAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgICAg fCAxMjYgKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu aCAgICB8ICAgOSArCj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlw ZXMuaCAgfCAgMTggKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lv bi5jICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRt LmMgICAgICAgfCA1MzQgKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdHRtLmggICAgICAgfCAgNDggKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMgICB8ICAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgICA1ICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgICAgfCAgIDEgLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oICAgIHwgICAxIC0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYyAgICAgICB8ICAgNSArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oICAgICAgIHwgICA3ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9iby5jICAgICAgICAgICAgICAgICAgfCAgMTIgKwo+ICAgaW5jbHVk ZS9kcm0vdHRtL3R0bV9kZXZpY2UuaCAgICAgICAgICAgICAgICAgIHwgICA5ICsKPiAgIDE3IGZp bGVzIGNoYW5nZWQsIDczMyBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCj4gICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0 bS5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDk1OGNjYzFlZGZlZC4uZWYwZDg4NGE5 ZTJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTU1LDYgKzE1NSw3IEBAIGdlbS15 ICs9IFwKPiAgIAlnZW0vaTkxNV9nZW1fc3RvbGVuLm8gXAo+ICAgCWdlbS9pOTE1X2dlbV90aHJv dHRsZS5vIFwKPiAgIAlnZW0vaTkxNV9nZW1fdGlsaW5nLm8gXAo+ICsJZ2VtL2k5MTVfZ2VtX3R0 bS5vIFwKPiAgIAlnZW0vaTkxNV9nZW1fdHRtX2JvX3V0aWwubyBcCj4gICAJZ2VtL2k5MTVfZ2Vt X3VzZXJwdHIubyBcCj4gICAJZ2VtL2k5MTVfZ2VtX3dhaXQubyBcCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5jCj4gaW5kZXggZjQyODAzZWE0OGYyLi4yYjhjZDE1ZGUx ZDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMKPiBAQCAt NCw3MyArNCwxMCBAQAo+ICAgICovCj4gICAKPiAgICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVn aW9uLmgiCj4gLSNpbmNsdWRlICJpbnRlbF9yZWdpb25fdHRtLmgiCj4gICAjaW5jbHVkZSAiZ2Vt L2k5MTVfZ2VtX3JlZ2lvbi5oIgo+ICAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9sbWVtLmgiCj4g ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgIAo+IC1zdGF0aWMgdm9pZCBsbWVtX3B1dF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJICBzdHJ1Y3Qgc2dfdGFi bGUgKnBhZ2VzKQo+IC17Cj4gLQlpbnRlbF9yZWdpb25fdHRtX25vZGVfZnJlZShvYmotPm1tLnJl Z2lvbiwgb2JqLT5tbS5zdF9tbV9ub2RlKTsKPiAtCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKPiAt CXNnX2ZyZWVfdGFibGUocGFnZXMpOwo+IC0Ja2ZyZWUocGFnZXMpOwo+IC19Cj4gLQo+IC1zdGF0 aWMgaW50IGxtZW1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g LXsKPiAtCXVuc2lnbmVkIGludCBmbGFnczsKPiAtCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4g LQo+IC0JZmxhZ3MgPSBJOTE1X0FMTE9DX01JTl9QQUdFX1NJWkU7Cj4gLQlpZiAob2JqLT5mbGFn cyAmIEk5MTVfQk9fQUxMT0NfQ09OVElHVU9VUykKPiAtCQlmbGFncyB8PSBJOTE1X0FMTE9DX0NP TlRJR1VPVVM7Cj4gLQo+IC0Jb2JqLT5tbS5zdF9tbV9ub2RlID0gaW50ZWxfcmVnaW9uX3R0bV9u b2RlX2FsbG9jKG9iai0+bW0ucmVnaW9uLAo+IC0JCQkJCQkJIG9iai0+YmFzZS5zaXplLAo+IC0J CQkJCQkJIGZsYWdzKTsKPiAtCWlmIChJU19FUlIob2JqLT5tbS5zdF9tbV9ub2RlKSkKPiAtCQly ZXR1cm4gUFRSX0VSUihvYmotPm1tLnN0X21tX25vZGUpOwo+IC0KPiAtCS8qIFJhbmdlIG1hbmFn ZXIgaXMgYWx3YXlzIGNvbnRpZ291cyAqLwo+IC0JaWYgKG9iai0+bW0ucmVnaW9uLT5pc19yYW5n ZV9tYW5hZ2VyKQo+IC0JCW9iai0+ZmxhZ3MgfD0gSTkxNV9CT19BTExPQ19DT05USUdVT1VTOwo+ IC0JcGFnZXMgPSBpbnRlbF9yZWdpb25fdHRtX25vZGVfdG9fc3Qob2JqLT5tbS5yZWdpb24sIG9i ai0+bW0uc3RfbW1fbm9kZSk7Cj4gLQlpZiAoSVNfRVJSKHBhZ2VzKSkKPiAtCQlyZXR1cm4gUFRS X0VSUihwYWdlcyk7Cj4gLQo+IC0JX19pOTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFn ZXMsCj4gLQkJCQkgICAgaTkxNV9zZ19kbWFfcGFnZV9zaXplcyhwYWdlcy0+c2dsKSk7Cj4gLQo+ IC0JaWYgKG9iai0+ZmxhZ3MgJiBJOTE1X0JPX0FMTE9DX0NQVV9DTEVBUikgewo+IC0JCXZvaWQg X19pb21lbSAqdmFkZHIgPQo+IC0JCQlpOTE1X2dlbV9vYmplY3RfbG1lbV9pb19tYXAob2JqLCAw LCBvYmotPmJhc2Uuc2l6ZSk7Cj4gLQo+IC0JCWlmICghdmFkZHIpIHsKPiAtCQkJc3RydWN0IHNn X3RhYmxlICpwYWdlcyA9Cj4gLQkJCQlfX2k5MTVfZ2VtX29iamVjdF91bnNldF9wYWdlcyhvYmop Owo+IC0KPiAtCQkJaWYgKCFJU19FUlJfT1JfTlVMTChwYWdlcykpCj4gLQkJCQlsbWVtX3B1dF9w YWdlcyhvYmosIHBhZ2VzKTsKPiAtCQl9Cj4gLQo+IC0JCW1lbXNldF9pbyh2YWRkciwgMCwgb2Jq LT5iYXNlLnNpemUpOwo+IC0JCWlvX21hcHBpbmdfdW5tYXAodmFkZHIpOwo+IC0JfQo+IC0KPiAt CXJldHVybiAwOwo+IC19Cj4gLQo+IC1jb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9v cHMgaTkxNV9nZW1fbG1lbV9vYmpfb3BzID0gewo+IC0JLm5hbWUgPSAiaTkxNV9nZW1fb2JqZWN0 X2xtZW0iLAo+IC0JLmZsYWdzID0gSTkxNV9HRU1fT0JKRUNUX0hBU19JT01FTSwKPiAtCj4gLQku Z2V0X3BhZ2VzID0gbG1lbV9nZXRfcGFnZXMsCj4gLQkucHV0X3BhZ2VzID0gbG1lbV9wdXRfcGFn ZXMsCj4gLQkucmVsZWFzZSA9IGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21lbW9yeV9yZWdpb24s Cj4gLX07Cj4gLQo+ICAgdm9pZCBfX2lvbWVtICoKPiAgIGk5MTVfZ2VtX29iamVjdF9sbWVtX2lv X21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkJICAgIHVuc2lnbmVk IGxvbmcgbiwKPiBAQCAtMTAyLDIzICszOSwzIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfbG1l bShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlyZXR1cm4gaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9yZWdpb24oaTkxNS0+bW0ucmVnaW9uc1tJTlRFTF9SRUdJT05fTE1FTV0sCj4g ICAJCQkJCSAgICAgc2l6ZSwgZmxhZ3MpOwo+ICAgfQo+IC0KPiAtaW50IF9faTkxNV9nZW1fbG1l bV9vYmplY3RfaW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAo+IC0JCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCXJlc291cmNlX3NpemVfdCBzaXpl LAo+IC0JCQkJdW5zaWduZWQgaW50IGZsYWdzKQo+IC17Cj4gLQlzdGF0aWMgc3RydWN0IGxvY2tf Y2xhc3Nfa2V5IGxvY2tfY2xhc3M7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IG1lbS0+aTkxNTsKPiAtCj4gLQlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoJmk5MTUtPmRy bSwgJm9iai0+YmFzZSwgc2l6ZSk7Cj4gLQlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1 X2dlbV9sbWVtX29ial9vcHMsICZsb2NrX2NsYXNzLCBmbGFncyk7Cj4gLQo+IC0Jb2JqLT5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fV0MgfCBJOTE1X0dFTV9ET01BSU5fR1RUOwo+IC0K PiAtCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfY29oZXJlbmN5KG9iaiwgSTkxNV9DQUNIRV9O T05FKTsKPiAtCj4gLQlpOTE1X2dlbV9vYmplY3RfaW5pdF9tZW1vcnlfcmVnaW9uKG9iaiwgbWVt KTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2xtZW0uaAo+IGluZGV4IGZhYzZiYzVhNWViYi4uZWE3NmZkMTFjY2IwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbG1lbS5oCj4gQEAgLTI2LDkgKzI2LDQgQEAg aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9sbWVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+ICAgCQkJICAgIHJlc291cmNlX3NpemVfdCBzaXplLAo+ICAgCQkJICAgIHVuc2lnbmVkIGlu dCBmbGFncyk7Cj4gICAKPiAtaW50IF9faTkxNV9nZW1fbG1lbV9vYmplY3RfaW5pdChzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAo+IC0JCQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiAtCQkJCXJlc291cmNlX3NpemVfdCBzaXplLAo+IC0JCQkJdW5zaWduZWQgaW50 IGZsYWdzKTsKPiAtCj4gICAjZW5kaWYgLyogIV9fSTkxNV9HRU1fTE1FTV9IICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IGM4OTUzZTNmNWM3 MC4uYzUzNDg4ZjM5MWRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9vYmplY3QuYwo+IEBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2xv c2Vfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtLCBzdHJ1Y3QgZHJtX2ZpbGUgKmYK PiAgIAl9Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdF9y Y3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKQo+ICt2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3Rf cmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0KPiAgIAkJY29udGFpbmVyX29mKGhlYWQsIHR5cGVvZigqb2JqKSwgcmN1 KTsKPiBAQCAtMjA4LDU5ICsyMDgsNzAgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9vYmplY3Rf ZnJlZV9tbWFwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCX0KPiAgIH0K PiAgIAo+IC1zdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJCSAgICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZnJlZWQpCj4g K3ZvaWQgX19pOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9uOwo+ICsJ dHJhY2VfaTkxNV9nZW1fb2JqZWN0X2Rlc3Ryb3kob2JqKTsKPiAgIAo+IC0JbGxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShvYmosIG9uLCBmcmVlZCwgZnJlZWQpIHsKPiAtCQl0cmFjZV9pOTE1X2dl bV9vYmplY3RfZGVzdHJveShvYmopOwo+ICsJaWYgKCFsaXN0X2VtcHR5KCZvYmotPnZtYS5saXN0 KSkgewo+ICsJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCQkvKgo+ICsJCSAqIE5vdGUg dGhhdCB0aGUgdm1hIGtlZXBzIGFuIG9iamVjdCByZWZlcmVuY2Ugd2hpbGUKPiArCQkgKiBpdCBp cyBhY3RpdmUsIHNvIGl0ICpzaG91bGQqIG5vdCBzbGVlcCB3aGlsZSB3ZQo+ICsJCSAqIGRlc3Ry b3kgaXQuIE91ciBkZWJ1ZyBjb2RlIGVycnMgaW5zaXRzIGl0ICptaWdodCouCj4gKwkJICogRm9y IHRoZSBtb21lbnQsIHBsYXkgYWxvbmcuCj4gKwkJICovCj4gKwkJc3Bpbl9sb2NrKCZvYmotPnZt YS5sb2NrKTsKPiArCQl3aGlsZSAoKHZtYSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmb2Jq LT52bWEubGlzdCwKPiArCQkJCQkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSwKPiArCQkJCQkJICAg ICAgIG9ial9saW5rKSkpIHsKPiArCQkJR0VNX0JVR19PTih2bWEtPm9iaiAhPSBvYmopOwo+ICsJ CQlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7Cj4gICAKPiAtCQlpZiAoIWxpc3RfZW1wdHko Jm9iai0+dm1hLmxpc3QpKSB7Cj4gLQkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsJCQlfX2k5 MTVfdm1hX3B1dCh2bWEpOwo+ICAgCj4gLQkJCS8qCj4gLQkJCSAqIE5vdGUgdGhhdCB0aGUgdm1h IGtlZXBzIGFuIG9iamVjdCByZWZlcmVuY2Ugd2hpbGUKPiAtCQkJICogaXQgaXMgYWN0aXZlLCBz byBpdCAqc2hvdWxkKiBub3Qgc2xlZXAgd2hpbGUgd2UKPiAtCQkJICogZGVzdHJveSBpdC4gT3Vy IGRlYnVnIGNvZGUgZXJycyBpbnNpdHMgaXQgKm1pZ2h0Ki4KPiAtCQkJICogRm9yIHRoZSBtb21l bnQsIHBsYXkgYWxvbmcuCj4gLQkJCSAqLwo+ICAgCQkJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2Nr KTsKPiAtCQkJd2hpbGUgKCh2bWEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJm9iai0+dm1h Lmxpc3QsCj4gLQkJCQkJCQkgICAgICAgc3RydWN0IGk5MTVfdm1hLAo+IC0JCQkJCQkJICAgICAg IG9ial9saW5rKSkpIHsKPiAtCQkJCUdFTV9CVUdfT04odm1hLT5vYmogIT0gb2JqKTsKPiAtCQkJ CXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiArCQl9Cj4gKwkJc3Bpbl91bmxvY2soJm9i ai0+dm1hLmxvY2spOwo+ICsJfQo+ICAgCj4gLQkJCQlfX2k5MTVfdm1hX3B1dCh2bWEpOwo+ICsJ X19pOTE1X2dlbV9vYmplY3RfZnJlZV9tbWFwcyhvYmopOwo+ICAgCj4gLQkJCQlzcGluX2xvY2so Jm9iai0+dm1hLmxvY2spOwo+IC0JCQl9Cj4gLQkJCXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2Nr KTsKPiAtCQl9Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZvYmotPmx1dF9saXN0KSk7Cj4g ICAKPiAtCQlfX2k5MTVfZ2VtX29iamVjdF9mcmVlX21tYXBzKG9iaik7Cj4gKwlhdG9taWNfc2V0 KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMCk7Cj4gKwlfX2k5MTVfZ2VtX29iamVjdF9wdXRf cGFnZXMob2JqKTsKPiArCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmop KTsKPiArCWJpdG1hcF9mcmVlKG9iai0+Yml0XzE3KTsKPiAgIAo+IC0JCUdFTV9CVUdfT04oIWxp c3RfZW1wdHkoJm9iai0+bHV0X2xpc3QpKTsKPiArCWlmIChvYmotPmJhc2UuaW1wb3J0X2F0dGFj aCkKPiArCQlkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3koJm9iai0+YmFzZSwgTlVMTCk7Cj4gICAKPiAt CQlhdG9taWNfc2V0KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMCk7Cj4gLQkJX19pOTE1X2dl bV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7Cj4gLQkJR0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3Rf aGFzX3BhZ2VzKG9iaikpOwo+IC0JCWJpdG1hcF9mcmVlKG9iai0+Yml0XzE3KTsKPiArCWRybV9n ZW1fZnJlZV9tbWFwX29mZnNldCgmb2JqLT5iYXNlKTsKPiAgIAo+IC0JCWlmIChvYmotPmJhc2Uu aW1wb3J0X2F0dGFjaCkKPiAtCQkJZHJtX3ByaW1lX2dlbV9kZXN0cm95KCZvYmotPmJhc2UsIE5V TEwpOwo+ICsJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQo+ICsJCW9iai0+b3BzLT5yZWxlYXNlKG9i aik7Cj4gICAKPiAtCQlkcm1fZ2VtX2ZyZWVfbW1hcF9vZmZzZXQoJm9iai0+YmFzZSk7Cj4gKwlp ZiAob2JqLT5tbS5uX3BsYWNlbWVudHMgPiAxKQo+ICsJCWtmcmVlKG9iai0+bW0ucGxhY2VtZW50 cyk7Cj4gICAKPiAtCQlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCj4gLQkJCW9iai0+b3BzLT5yZWxl YXNlKG9iaik7Cj4gKwlpZiAob2JqLT5yZXN2X3NoYXJlZF9mcm9tKQo+ICsJCWk5MTVfdm1fcmVz dl9wdXQob2JqLT5yZXN2X3NoYXJlZF9mcm9tKTsKPiAgIAo+IC0JCWlmIChvYmotPm1tLm5fcGxh Y2VtZW50cyA+IDEpCj4gLQkJCWtmcmVlKG9iai0+bW0ucGxhY2VtZW50cyk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICsJCQkJICAgIHN0cnVjdCBsbGlzdF9ub2RlICpmcmVlZCkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9uOwo+ICAgCj4gLQkJaWYgKG9iai0+ cmVzdl9zaGFyZWRfZnJvbSkKPiAtCQkJaTkxNV92bV9yZXN2X3B1dChvYmotPnJlc3Zfc2hhcmVk X2Zyb20pOwo+ICsJbGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvYmosIG9uLCBmcmVlZCwgZnJl ZWQpIHsKPiArCQltaWdodF9zbGVlcCgpOwo+ICsJCWlmIChvYmotPm9wcy0+ZGVsYXllZF9mcmVl KSB7Cj4gKwkJCW9iai0+b3BzLT5kZWxheWVkX2ZyZWUob2JqKTsKPiArCQkJY29udGludWU7Cj4g KwkJfQo+ICsJCV9faTkxNV9nZW1fZnJlZV9vYmplY3Qob2JqKTsKPiAgIAo+ICAgCQkvKiBCdXQg a2VlcCB0aGUgcG9pbnRlciBhbGl2ZSBmb3IgUkNVLXByb3RlY3RlZCBsb29rdXBzICovCj4gICAJ CWNhbGxfcmN1KCZvYmotPnJjdSwgX19pOTE1X2dlbV9mcmVlX29iamVjdF9yY3UpOwo+IEBAIC0z MTgsNiArMzI5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICAgCSAqIHdvcmtlciBhbmQgcGVyZm9ybWluZyBmcmVl cyBkaXJlY3RseSBmcm9tIHN1YnNlcXVlbnQgYWxsb2NhdGlvbnMgZm9yCj4gICAJICogY3J1ZGUg YnV0IGVmZmVjdGl2ZSBtZW1vcnkgdGhyb3R0bGluZy4KPiAgIAkgKi8KPiArCj4gICAJaWYgKGxs aXN0X2FkZCgmb2JqLT5mcmVlZCwgJmk5MTUtPm1tLmZyZWVfbGlzdCkpCj4gICAJCXF1ZXVlX3dv cmsoaTkxNS0+d3EsICZpOTE1LT5tbS5mcmVlX3dvcmspOwo+ICAgfQo+IEBAIC00MTAsNiArNDIy LDQyIEBAIGludCBpOTE1X2dlbV9vYmplY3RfcmVhZF9mcm9tX3BhZ2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwgdTY0IG9mZnNldCwKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ ICsvKioKPiArICogaTkxNV9nZW1fb2JqZWN0X2V2aWN0YWJsZSAtIFdoZXRoZXIgb2JqZWN0IGlz IGxpa2VseSBldmljdGFibGUgYWZ0ZXIgdW5iaW5kLgo+ICsgKiBAb2JqOiBUaGUgb2JqZWN0IHRv IGNoZWNrCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhlIG9iamVj dCBpcyBsaWtlbHkgdW52aWN0YWJsZSBhZnRlciB1bmJpbmQuCj4gKyAqIElmIHRoZSBvYmplY3Qg aXMgbm90IGxvY2tlZCB3aGVuIGNoZWNraW5nLCB0aGUgcmVzdWx0IGlzIG9ubHkgYWR2aXNvcnku Cj4gKyAqIElmIHRoZSBvYmplY3QgaXMgbG9ja2VkIHdoZW4gY2hlY2tpbmcsIGFuZCB0aGUgZnVu Y3Rpb24gcmV0dXJucyB0cnVlLAo+ICsgKiB0aGVuIGFuIGV2aWN0aW9uIHNob3VsZCBpbmRlZWQg YmUgcG9zc2libGUuIEJ1dCBzaW5jZSB1bmxvY2tlZCB2bWEKPiArICogdW5waW5uaW5nIGFuZCB1 bmJpbmRpbmcgaXMgY3VycmVudGx5IHBvc3NpYmxlLCB0aGUgb2JqZWN0IGNhbiBhY3R1YWxseQo+ ICsgKiBiZWNvbWUgZXZpY3RhYmxlIGV2ZW4gaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGZhbHNl Lgo+ICsgKgo+ICsgKiBSZXR1cm46IHRydWUgaWYgdGhlIG9iamVjdCBtYXkgYmUgZXZpY3RhYmxl LiBGYWxzZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtib29sIGk5MTVfZ2VtX29iamVjdF9ldmljdGFi bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4gKwlpbnQgcGluX2NvdW50ID0gYXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNf cGluX2NvdW50KTsKPiArCj4gKwlpZiAoIXBpbl9jb3VudCkKPiArCQlyZXR1cm4gdHJ1ZTsKPiAr Cj4gKwlzcGluX2xvY2soJm9iai0+dm1hLmxvY2spOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2 bWEsICZvYmotPnZtYS5saXN0LCBvYmpfbGluaykgewo+ICsJCWlmIChpOTE1X3ZtYV9pc19waW5u ZWQodm1hKSkgewo+ICsJCQlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7Cj4gKwkJCXJldHVy biBmYWxzZTsKPiArCQl9Cj4gKwkJaWYgKGF0b21pY19yZWFkKCZ2bWEtPnBhZ2VzX2NvdW50KSkK PiArCQkJcGluX2NvdW50LS07Cj4gKwl9Cj4gKwlzcGluX3VubG9jaygmb2JqLT52bWEubG9jayk7 Cj4gKwlHRU1fV0FSTl9PTihwaW5fY291bnQgPCAwKTsKPiArCj4gKwlyZXR1cm4gcGluX2NvdW50 ID09IDA7Cj4gK30KPiArCj4gICB2b2lkIGk5MTVfZ2VtX2luaXRfX29iamVjdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJSU5JVF9XT1JLKCZpOTE1LT5tbS5mcmVl X3dvcmssIF9faTkxNV9nZW1fZnJlZV93b3JrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5oCj4gaW5kZXggMmViZDc5NTM3YWVhLi5hZTU5MzBlMzA3ZDUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gQEAgLTIw MCw2ICsyMDAsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fb2JqZWN0X3RyeWxvY2so c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAo+ICAgc3RhdGljIGlubGluZSB2 b2lkIGk5MTVfZ2VtX29iamVjdF91bmxvY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKPiAgIHsKPiArCWlmIChvYmotPm9wcy0+YWRqdXN0X2xydSkKPiArCQlvYmotPm9wcy0+YWRq dXN0X2xydShvYmopOwo+ICsKPiAgIAlkbWFfcmVzdl91bmxvY2sob2JqLT5iYXNlLnJlc3YpOwo+ ICAgfQo+ICAgCj4gQEAgLTU4Nyw2ICs1OTAsMTIgQEAgaW50IGk5MTVfZ2VtX29iamVjdF9yZWFk X2Zyb21fcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1NjQgb2Zmc2V0LAo+ ICAgCj4gICBib29sIGk5MTVfZ2VtX29iamVjdF9pc19zaG1lbShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAgIAo+ICt2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3Rf cmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZCk7Cj4gKwo+ICt2b2lkIF9faTkxNV9nZW1fZnJlZV9v YmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICtib29sIGk5MTVf Z2VtX29iamVjdF9ldmljdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4g Kwo+ICAgI2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbAo+ ICAgaTkxNV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90 eXBlcy5oCj4gaW5kZXggOThmNjlkOGZkMzdkLi5iMzUwNzY1ZTE5MzUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gQEAgLTYz LDYgKzYzLDIwIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7Cj4gICAJCSAgICAg IGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlICphcmcpOwo+ICAgCj4gICAJaW50ICgq ZG1hYnVmX2V4cG9ydCkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJ LyoqCj4gKwkgKiBhZGp1c3RfbHJ1IC0gbm90aWZ5IHRoYXQgdGhlIG1hZHZpc2UgdmFsdWUgd2Fz IHVwZGF0ZWQKPiArCSAqIEBvYmo6IFRoZSBnZW0gb2JqZWN0Cj4gKwkgKgo+ICsJICogVGhlIG1h ZHZpc2UgdmFsdWUgbWF5IGhhdmUgYmVlbiB1cGRhdGVkLCBvciBvYmplY3Qgd2FzIHJlY2VudGx5 Cj4gKwkgKiByZWZlcmVuY2VkIHNvIGFjdCBhY2NvcmRpbmdseSAoUGVyaGFwcyBjaGFuZ2luZyBh biBMUlUgbGlzdCBldGMpLgo+ICsJICovCj4gKwl2b2lkICgqYWRqdXN0X2xydSkoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJLyoqCj4gKwkgKiBkZWxheWVkX2ZyZWUg LSBPdmVycmlkZSB0aGUgZGVmYXVsdCBkZWxheWVkIGZyZWUgaW1wbGVtZW50YXRpb24KPiArCSAq Lwo+ICsJdm9pZCAoKmRlbGF5ZWRfZnJlZSkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aik7Cj4gICAJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Owo+ICAgCj4gICAJY29uc3QgY2hhciAqbmFtZTsgLyogZnJpZW5kbHkgbmFtZSBmb3IgZGVidWcs IGUuZy4gbG9ja2RlcCBjbGFzc2VzICovCj4gQEAgLTMwNyw2ICszMjEsMTAgQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3Qgewo+ICAgCQlib29sIGRpcnR5OjE7Cj4gICAJfSBtbTsKPiAgIAo+ ICsJc3RydWN0IHsKPiArCQlzdHJ1Y3Qgc2dfdGFibGUgKmNhY2hlZF9pb19zdDsKPiArCX0gdHRt Owo+ICsKPiAgIAkvKiogUmVjb3JkIG9mIGFkZHJlc3MgYml0IDE3IG9mIGVhY2ggcGFnZSBhdCBs YXN0IHVuYmluZC4gKi8KPiAgIAl1bnNpZ25lZCBsb25nICpiaXRfMTc7Cj4gICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jCj4gaW5kZXggZjI1ZTY2NDZjNWI3 Li5kMWYxODQwNTQwZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX3JlZ2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3JlZ2lvbi5jCj4gQEAgLTE4LDExICsxOCw3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2luaXRf bWVtb3J5X3JlZ2lvbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCj4gICAJ bXV0ZXhfbG9jaygmbWVtLT5vYmplY3RzLmxvY2spOwo+ICAgCj4gLQlpZiAob2JqLT5mbGFncyAm IEk5MTVfQk9fQUxMT0NfVk9MQVRJTEUpCj4gLQkJbGlzdF9hZGQoJm9iai0+bW0ucmVnaW9uX2xp bmssICZtZW0tPm9iamVjdHMucHVyZ2VhYmxlKTsKPiAtCWVsc2UKPiAtCQlsaXN0X2FkZCgmb2Jq LT5tbS5yZWdpb25fbGluaywgJm1lbS0+b2JqZWN0cy5saXN0KTsKPiAtCj4gKwlsaXN0X2FkZCgm b2JqLT5tbS5yZWdpb25fbGluaywgJm1lbS0+b2JqZWN0cy5saXN0KTsKPiAgIAltdXRleF91bmxv Y2soJm1lbS0+b2JqZWN0cy5sb2NrKTsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fdHRtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uZTM3MThjM2NiMjk5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYwo+IEBAIC0wLDAgKzEsNTM0IEBACj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMjEgSW50 ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJp dmVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaD4KPiArCj4gKyNpbmNs dWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfbWVtb3J5X3JlZ2lvbi5oIgo+ICsj aW5jbHVkZSAiaW50ZWxfcmVnaW9uX3R0bS5oIgo+ICsKPiArI2luY2x1ZGUgImdlbS9pOTE1X2dl bV9vYmplY3QuaCIKPiArI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9yZWdpb24uaCIKPiArI2luY2x1 ZGUgImdlbS9pOTE1X2dlbV90dG0uaCIKPiArI2luY2x1ZGUgImdlbS9pOTE1X2dlbV90dG1fYm9f dXRpbC5oIgo+ICsKPiArI2RlZmluZSBJOTE1X1BMX0xNRU0wIFRUTV9QTF9QUklWCj4gKyNkZWZp bmUgSTkxNV9QTF9TWVNURU0gVFRNX1BMX1NZU1RFTQo+ICsjZGVmaW5lIEk5MTVfUExfU1RPTEVO IFRUTV9QTF9WUkFNCj4gKyNkZWZpbmUgSTkxNV9QTF9HR1RUIFRUTV9QTF9UVAo+ICsKPiArI2Rl ZmluZSBJOTE1X1RUTV9QUklPX1BVUkdFICAgICAwCj4gKyNkZWZpbmUgSTkxNV9UVE1fUFJJT19O T19QQUdFUyAgMQo+ICsjZGVmaW5lIEk5MTVfVFRNX1BSSU9fSEFTX1BBR0VTIDIKPiArCj4gKy8q Kgo+ICsgKiBzdHJ1Y3QgaTkxNV90dG1fdHQgLSBUVE0gcGFnZSB2ZWN0b3Igd2l0aCBhZGRpdGlv bmFsIHByaXZhdGUgaW5mb3JtYXRpb24KPiArICogQHR0bTogVGhlIGJhc2UgVFRNIHBhZ2UgdmVj dG9yLgo+ICsgKiBAZGV2OiBUaGUgc3RydWN0IGRldmljZSB1c2VkIGZvciBkbWEgbWFwcGluZyBh bmQgdW5tYXBwaW5nLgo+ICsgKiBAY2FjaGVkX3N0OiBUaGUgY2FjaGVkIHNjYXR0ZXItZ2F0aGVy IHRhYmxlLgo+ICsgKgo+ICsgKiBOb3RlIHRoYXQgRE1BIG1heSBiZSBnb2luZyBvbiByaWdodCB1 cCB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIHBhZ2UtCj4gKyAqIHZlY3RvciBpcyB1bnBvcHVsYXRl ZCBpbiBkZWxheWVkIGRlc3Ryb3kuIEhlbmNlIGtlZXAgdGhlCj4gKyAqIHNjYXR0ZXItZ2F0aGVy IHRhYmxlIG1hcHBlZCBhbmQgY2FjaGVkIHVwIHRvIHRoYXQgcG9pbnQuIFRoaXMgaXMKPiArICog ZGlmZmVyZW50IGZyb20gdGhlIGNhY2hlZCBnZW0gb2JqZWN0IGlvIHNjYXR0ZXItZ2F0aGVyIHRh YmxlIHdoaWNoCj4gKyAqIGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRtYSBtYXBwaW5nLgo+ ICsgKi8KPiArc3RydWN0IGk5MTVfdHRtX3R0IHsKPiArCXN0cnVjdCB0dG1fdHQgdHRtOwo+ICsJ c3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IHNnX3RhYmxlICpjYWNoZWRfc3Q7Cj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSBsbWVtMF9zeXNfcGxhY2VtZW50 X2ZsYWdzW10gPSB7Cj4gKwl7Cj4gKwkJLmZwZm4gPSAwLAo+ICsJCS5scGZuID0gMCwKPiArCQku bWVtX3R5cGUgPSBJOTE1X1BMX0xNRU0wLAo+ICsJCS5mbGFncyA9IDAsCj4gKwl9LCB7Cj4gKwkJ LmZwZm4gPSAwLAo+ICsJCS5scGZuID0gMCwKPiArCQkubWVtX3R5cGUgPSBJOTE1X1BMX1NZU1RF TSwKPiArCQkuZmxhZ3MgPSAwLAo+ICsJfQo+ICt9Owo+ICsKPiArc3RydWN0IHR0bV9wbGFjZW1l bnQgaTkxNV9sbWVtMF9wbGFjZW1lbnQgPSB7Cj4gKwkubnVtX3BsYWNlbWVudCA9IDEsCj4gKwku cGxhY2VtZW50ID0gJmxtZW0wX3N5c19wbGFjZW1lbnRfZmxhZ3NbMF0sCj4gKwkubnVtX2J1c3lf cGxhY2VtZW50ID0gMSwKPiArCS5idXN5X3BsYWNlbWVudCA9ICZsbWVtMF9zeXNfcGxhY2VtZW50 X2ZsYWdzWzBdLAo+ICt9Owo+ICsKPiArc3RydWN0IHR0bV9wbGFjZW1lbnQgaTkxNV9sbWVtMF9z eXNfcGxhY2VtZW50ID0gewo+ICsJLm51bV9wbGFjZW1lbnQgPSAxLAo+ICsJLnBsYWNlbWVudCA9 ICZsbWVtMF9zeXNfcGxhY2VtZW50X2ZsYWdzWzBdLAo+ICsJLm51bV9idXN5X3BsYWNlbWVudCA9 IDIsCj4gKwkuYnVzeV9wbGFjZW1lbnQgPSAmbG1lbTBfc3lzX3BsYWNlbWVudF9mbGFnc1swXSwK PiArfTsKPiArCj4gK3N0cnVjdCB0dG1fcGxhY2VtZW50IGk5MTVfc3lzX3BsYWNlbWVudCA9IHsK PiArCS5udW1fcGxhY2VtZW50ID0gMSwKPiArCS5wbGFjZW1lbnQgPSAmbG1lbTBfc3lzX3BsYWNl bWVudF9mbGFnc1sxXSwKPiArCS5udW1fYnVzeV9wbGFjZW1lbnQgPSAxLAo+ICsJLmJ1c3lfcGxh Y2VtZW50ID0gJmxtZW0wX3N5c19wbGFjZW1lbnRfZmxhZ3NbMV0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgdm9pZCBpOTE1X3R0bV9hZGp1c3RfbHJ1KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopOwo+ICsKPiArc3RhdGljIHN0cnVjdCB0dG1fdHQgKmk5MTVfdHRtX3R0X2NyZWF0ZShzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+ICsJCQkJCSB1aW50MzJfdCBwYWdlX2ZsYWdzKQo+ ICt7Cj4gKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9Cj4gKwkJdHRtX21hbmFn ZXJfdHlwZShiby0+YmRldiwgYm8tPm1lbS5tZW1fdHlwZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gaTkxNV90dG1fdG9fZ2VtKGJvKTsKPiArCXN0cnVjdCBpOTE1X3R0 bV90dCAqaTkxNV90dDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaTkxNV90dCA9IGt6YWxsb2Moc2l6 ZW9mKCppOTE1X3R0KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWk5MTVfdHQpCj4gKwkJcmV0dXJu IE5VTEw7Cj4gKwo+ICsJaWYgKG9iai0+ZmxhZ3MgJiBJOTE1X0JPX0FMTE9DX0NQVV9DTEVBUiAm Jgo+ICsJICAgIG1hbi0+dXNlX3R0KQo+ICsJCXBhZ2VfZmxhZ3MgfD0gVFRNX1BBR0VfRkxBR19a RVJPX0FMTE9DOwo+ICsKPiArCXJldCA9IHR0bV90dF9pbml0KCZpOTE1X3R0LT50dG0sIGJvLCBw YWdlX2ZsYWdzLCB0dG1fY2FjaGVkKTsKPiArCWlmIChyZXQpIHsKPiArCQlrZnJlZShpOTE1X3R0 KTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlpOTE1X3R0LT5kZXYgPSBvYmotPmJh c2UuZGV2LT5kZXY7Cj4gKwo+ICsJcmV0dXJuICZpOTE1X3R0LT50dG07Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGk5MTVfdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYs IHN0cnVjdCB0dG1fdHQgKnR0bSkKPiArewo+ICsJc3RydWN0IGk5MTVfdHRtX3R0ICppOTE1X3R0 ID0gY29udGFpbmVyX29mKHR0bSwgdHlwZW9mKCppOTE1X3R0KSwgdHRtKTsKPiArCj4gKwlpZiAo aTkxNV90dC0+Y2FjaGVkX3N0KSB7Cj4gKwkJZG1hX3VubWFwX3NndGFibGUoaTkxNV90dC0+ZGV2 LCBpOTE1X3R0LT5jYWNoZWRfc3QsCj4gKwkJCQkgIERNQV9CSURJUkVDVElPTkFMLCAwKTsKPiAr CQlzZ19mcmVlX3RhYmxlKGk5MTVfdHQtPmNhY2hlZF9zdCk7Cj4gKwkJa2ZyZWUoaTkxNV90dC0+ Y2FjaGVkX3N0KTsKPiArCQlpOTE1X3R0LT5jYWNoZWRfc3QgPSBOVUxMOwo+ICsJfQo+ICsJdHRt X3Bvb2xfZnJlZSgmYmRldi0+cG9vbCwgdHRtKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkx NV90dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAq dHRtKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV90dG1fdHQgKmk5MTVfdHQgPSBjb250YWluZXJfb2Yo dHRtLCB0eXBlb2YoKmk5MTVfdHQpLCB0dG0pOwo+ICsKPiArCXR0bV90dF9kZXN0cm95X2NvbW1v bihiZGV2LCB0dG0pOwo+ICsJa2ZyZWUoaTkxNV90dCk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29s IGk5MTVfdHRtX2V2aWN0aW9uX3ZhbHVhYmxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s Cj4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSAqcGxhY2UpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpOTE1X3R0bV90b19nZW0oYm8pOwo+ICsK PiArCS8qIFdpbGwgZG8gZm9yIG5vdy4gT3VyIHBpbm5lZCBvYmplY3RzIGFyZSBzdGlsbCBvbiBU VE0ncyBMUlUgbGlzdHMgKi8KPiArCWlmICghaTkxNV9nZW1fb2JqZWN0X2V2aWN0YWJsZShvYmop KQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwkvKiBUaGlzIGlzbid0IHZhbGlkIHdpdGggYSBi dWRkeSBhbGxvY2F0b3IgKi8KPiArCXJldHVybiB0dG1fYm9fZXZpY3Rpb25fdmFsdWFibGUoYm8s IHBsYWNlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV90dG1fZXZpY3RfZmxhZ3Moc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiArCQkJCSBzdHJ1Y3QgdHRtX3BsYWNlbWVudCAq cGxhY2VtZW50KQo+ICt7Cj4gKwkqcGxhY2VtZW50ID0gaTkxNV9zeXNfcGxhY2VtZW50Owo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGk5MTVfdHRtX21vdmVfbm90aWZ5KHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8pCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBp OTE1X3R0bV90b19nZW0oYm8pOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9v YmplY3RfdW5iaW5kKG9iaiwgSTkxNV9HRU1fT0JKRUNUX1VOQklORF9BQ1RJVkUpOwo+ICsJaWYg KHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IF9faTkxNV9nZW1fb2JqZWN0X3B1 dF9wYWdlcyhvYmopOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X3R0bV9mcmVlX2NhY2hlZF9pb19zdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpZiAob2JqLT50dG0uY2Fj aGVkX2lvX3N0KSB7Cj4gKwkJc2dfZnJlZV90YWJsZShvYmotPnR0bS5jYWNoZWRfaW9fc3QpOwo+ ICsJCWtmcmVlKG9iai0+dHRtLmNhY2hlZF9pb19zdCk7Cj4gKwkJb2JqLT50dG0uY2FjaGVkX2lv X3N0ID0gTlVMTDsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV90dG1fcHVyZ2Uo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibyA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOwo+ICsKPiArCWlmIChvYmotPm1t Lm1hZHYgPT0gX19JOTE1X01BRFZfUFVSR0VEKQo+ICsJCXJldHVybjsKPiArCj4gKwlpOTE1X3R0 bV9mcmVlX2NhY2hlZF9pb19zdChvYmopOwo+ICsKPiArCXR0bV9yZXNvdXJjZV9mcmVlKGJvLCAm Ym8tPm1lbSk7Cj4gKwlpZiAoYm8tPnR0bSkKPiArCQl0dG1fYm9fdHRfZGVzdHJveShibyk7Cj4g Kwo+ICsJb2JqLT5tbS5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgYm9vbCBpOTE1X3R0bV9zd2FwX3Bvc3NpYmxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8pCj4gK3sKPiArCS8qIFdpbGwgZG8gZm9yIG5vdy4gT3VyIHBpbm5lZCBvYmplY3RzIGFyZSBz dGlsbCBvbiBUVE0ncyBMUlUgbGlzdHMgKi8KPiArCXJldHVybiBpOTE1X2dlbV9vYmplY3RfZXZp Y3RhYmxlKGk5MTVfdHRtX3RvX2dlbShibykpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1 X3R0bV9zd2FwX25vdGlmeShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaTkxNV90dG1fdG9fZ2VtKGJvKTsKPiAr CWludCByZXQgPSBpOTE1X3R0bV9tb3ZlX25vdGlmeShibyk7Cj4gKwo+ICsJR0VNX1dBUk5fT04o cmV0KTsKPiArCUdFTV9XQVJOX09OKG9iai0+dHRtLmNhY2hlZF9pb19zdCk7Cj4gKwlpZiAoIXJl dCAmJiBvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKQo+ICsJCWk5MTVfdHRtX3B1 cmdlKG9iaik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfdHRtX2RlbGV0ZV9tZW1fbm90 aWZ5KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCj4gK3sKPiArCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBpOTE1X3R0bV90b19nZW0oYm8pOwo+ICsKPiArCWlmIChsaWtl bHkob2JqKSkgewo+ICsJCS8qIFRoaXMgcmVsZWFzZXMgYWxsIGdlbSBvYmplY3QgYmluZGluZ3Mg dG8gdGhlIGJhY2tlbmQuICovCj4gKwkJX19pOTE1X2dlbV9mcmVlX29iamVjdChvYmopOwo+ICsJ fQo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKgo+ICtpOTE1 X3R0bV9yZWdpb24oc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIGludCB0dG1fbWVtX3R5cGUpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY29udGFpbmVyX29mKGJkZXYs IHR5cGVvZigqaTkxNSksIGJkZXYpOwo+ICsKPiArCS8qIFRoZXJlJ3Mgc29tZSByb29tIGZvciBv cHRpbWl6YXRpb24gaGVyZS4uLiAqLwo+ICsJR0VNX0JVR19PTih0dG1fbWVtX3R5cGUgIT0gSTkx NV9QTF9TWVNURU0gJiYKPiArCQkgICB0dG1fbWVtX3R5cGUgPCBJOTE1X1BMX0xNRU0wKTsKPiAr CWlmICh0dG1fbWVtX3R5cGUgPT0gSTkxNV9QTF9TWVNURU0pCj4gKwkJcmV0dXJuIGludGVsX21l bW9yeV9yZWdpb25fbG9va3VwKGk5MTUsIElOVEVMX01FTU9SWV9TWVNURU0sCj4gKwkJCQkJCSAg MCk7Cj4gKwo+ICsJcmV0dXJuIGludGVsX21lbW9yeV9yZWdpb25fbG9va3VwKGk5MTUsIElOVEVM X01FTU9SWV9MT0NBTCwKPiArCQkJCQkgIHR0bV9tZW1fdHlwZSAtIEk5MTVfUExfTE1FTTApOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNnX3RhYmxlICppOTE1X3R0bV90dF9nZXRfc3Qoc3Ry dWN0IHR0bV90dCAqdHRtKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV90dG1fdHQgKmk5MTVfdHQgPSBj b250YWluZXJfb2YodHRtLCB0eXBlb2YoKmk5MTVfdHQpLCB0dG0pOwo+ICsJc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZzsKPiArCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CWlmIChpOTE1X3R0LT5jYWNoZWRfc3QpCj4gKwkJcmV0dXJuIGk5MTVfdHQtPmNhY2hlZF9zdDsK PiArCj4gKwlzdCA9IGt6YWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFz dCkKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlzZyA9IF9fc2dfYWxsb2Nf dGFibGVfZnJvbV9wYWdlcwo+ICsJCShzdCwgdHRtLT5wYWdlcywgdHRtLT5udW1fcGFnZXMsIDAs Cj4gKwkJICh1bnNpZ25lZCBsb25nKSB0dG0tPm51bV9wYWdlcyA8PCBQQUdFX1NISUZULAo+ICsJ CSBpOTE1X3NnX3NlZ21lbnRfc2l6ZSgpLCBOVUxMLCAwLCBHRlBfS0VSTkVMKTsKPiArCWlmIChJ U19FUlIoc2cpKSB7Cj4gKwkJa2ZyZWUoc3QpOwo+ICsJCXJldHVybiBFUlJfQ0FTVChzZyk7Cj4g Kwl9Cj4gKwo+ICsJcmV0ID0gZG1hX21hcF9zZ3RhYmxlKGk5MTVfdHQtPmRldiwgc3QsIERNQV9C SURJUkVDVElPTkFMLCAwKTsKPiArCWlmIChyZXQpIHsKPiArCQlzZ19mcmVlX3RhYmxlKHN0KTsK PiArCQlrZnJlZShzdCk7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCX0KPiArCj4gKwlp OTE1X3R0LT5jYWNoZWRfc3QgPSBzdDsKPiArCXJldHVybiBzdDsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBzZ190YWJsZSAqCj4gK2k5MTVfdHRtX3Jlc291cmNlX2dldF9zdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzKQo+ ICt7Cj4gKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gaTkxNV9nZW1fdG9fdHRtKG9i aik7Cj4gKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9Cj4gKwkJdHRtX21hbmFn ZXJfdHlwZShiby0+YmRldiwgcmVzLT5tZW1fdHlwZSk7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0 Owo+ICsKPiArCWlmIChtYW4tPnVzZV90dCkKPiArCQlyZXR1cm4gaTkxNV90dG1fdHRfZ2V0X3N0 KGJvLT50dG0pOwo+ICsKPiArCXN0ID0ga3phbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIXN0KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXN0ID0g aW50ZWxfcmVnaW9uX3R0bV9ub2RlX3RvX3N0KG9iai0+bW0ucmVnaW9uLCByZXMtPm1tX25vZGUp Owo+ICsJaWYgKElTX0VSUihzdCkpCj4gKwkJcmV0dXJuIEVSUl9DQVNUKHN0KTsKPiArCj4gKwly ZXR1cm4gc3Q7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV90dG1fbW92ZShzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLCBib29sIGV2aWN0LAo+ICsJCQkgc3RydWN0IHR0bV9vcGVyYXRp b25fY3R4ICpjdHgsCj4gKwkJCSBzdHJ1Y3QgdHRtX3Jlc291cmNlICpuZXdfbWVtLAo+ICsJCQkg c3RydWN0IHR0bV9wbGFjZSAqaG9wKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gaTkxNV90dG1fdG9fZ2VtKGJvKTsKPiArCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFu YWdlciAqbmV3X21hbiA9Cj4gKwkJdHRtX21hbmFnZXJfdHlwZShiby0+YmRldiwgbmV3X21lbS0+ bWVtX3R5cGUpOwo+ICsJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpvbGRfbWFuID0KPiAr CQl0dG1fbWFuYWdlcl90eXBlKGJvLT5iZGV2LCBiby0+bWVtLm1lbV90eXBlKTsKPiArCXN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICpuZXdfcmVnLCAqb2xkX3JlZzsKPiArCXVuaW9uIHsKPiAr CQlzdHJ1Y3QgaTkxNV90dG1fa21hcF9pdGVyX3R0IHR0Owo+ICsJCXN0cnVjdCBpOTE1X3R0bV9r bWFwX2l0ZXJfaW9tYXAgaW87Cj4gKwl9IF9uZXdfaXRlciwgX29sZF9pdGVyOwo+ICsJc3RydWN0 IGk5MTVfdHRtX2ttYXBfaXRlciAqbmV3X2l0ZXIsICpvbGRfaXRlcjsKPiArCXN0cnVjdCBzZ190 YWJsZSAqbmV3X3N0Owo+ICsJaW50IHJldDsKPiArCj4gKwluZXdfcmVnID0gaTkxNV90dG1fcmVn aW9uKGJvLT5iZGV2LCBuZXdfbWVtLT5tZW1fdHlwZSk7Cj4gKwlvbGRfcmVnID0gaTkxNV90dG1f cmVnaW9uKGJvLT5iZGV2LCBiby0+bWVtLm1lbV90eXBlKTsKPiArCUdFTV9CVUdfT04oIW5ld19y ZWcgfHwgIW9sZF9yZWcpOwo+ICsKPiArCS8qIFN5bmMgZm9yIG5vdy4gV2UgY291bGQgZG8gdGhl IGFjdHVhbCBjb3B5IGFzeW5jLiAqLwo+ICsJcmV0ID0gdHRtX2JvX3dhaXRfY3R4KGJvLCBjdHgp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IGk5MTVfdHRtX21v dmVfbm90aWZ5KGJvKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlpZiAo b2JqLT5tbS5tYWR2ICE9IEk5MTVfTUFEVl9XSUxMTkVFRCkgewo+ICsJCWk5MTVfdHRtX3B1cmdl KG9iaik7Cj4gKwkJdHRtX3Jlc291cmNlX2ZyZWUoYm8sIG5ld19tZW0pOwo+ICsJCXJldHVybiAw Owo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIHR0bSB3aXRoIHBhZ2VzIGlmIG5lZWRlZC4gVHlw aWNhbGx5IHN5c3RlbSBtZW1vcnkuICovCj4gKwlpZiAobmV3X21hbi0+dXNlX3R0ICYmIGJvLT50 dG0pIHsKPiArCQlyZXQgPSB0dG1fdHRfcG9wdWxhdGUoYm8tPmJkZXYsIGJvLT50dG0sIGN0eCk7 Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwluZXdfc3QgPSBp OTE1X3R0bV9yZXNvdXJjZV9nZXRfc3Qob2JqLCBuZXdfbWVtKTsKPiArCWlmIChJU19FUlIobmV3 X3N0KSkKPiArCQlyZXR1cm4gUFRSX0VSUihuZXdfc3QpOwo+ICsKPiArCW5ld19pdGVyID0gbmV3 X21hbi0+dXNlX3R0ID8KPiArCQlpOTE1X3R0bV9rbWFwX2l0ZXJfdHRfaW5pdCgmX25ld19pdGVy LnR0LCBiby0+dHRtKSA6Cj4gKwkJaTkxNV90dG1fa21hcF9pdGVyX2lvbWFwX2luaXQoJl9uZXdf aXRlci5pbywgJm5ld19yZWctPmlvbWFwLAo+ICsJCQkJCSAgICAgIG5ld19zdCwgbmV3X3JlZy0+ cmVnaW9uLnN0YXJ0KTsKPiArCj4gKwlvbGRfaXRlciA9IG9sZF9tYW4tPnVzZV90dCA/Cj4gKwkJ aTkxNV90dG1fa21hcF9pdGVyX3R0X2luaXQoJl9vbGRfaXRlci50dCwgYm8tPnR0bSkgOgo+ICsJ CWk5MTVfdHRtX2ttYXBfaXRlcl9pb21hcF9pbml0KCZfb2xkX2l0ZXIuaW8sICZvbGRfcmVnLT5p b21hcCwKPiArCQkJCQkgICAgICBvYmotPnR0bS5jYWNoZWRfaW9fc3QsCj4gKwkJCQkJICAgICAg b2xkX3JlZy0+cmVnaW9uLnN0YXJ0KTsKPiArCj4gKwlpOTE1X3R0bV9tb3ZlX21lbWNweShibywg bmV3X21lbSwgbmV3X2l0ZXIsIG9sZF9pdGVyKTsKPiArCWk5MTVfdHRtX2ZyZWVfY2FjaGVkX2lv X3N0KG9iaik7Cj4gKwo+ICsJaWYgKCFuZXdfbWFuLT51c2VfdHQpCj4gKwkJb2JqLT50dG0uY2Fj aGVkX2lvX3N0ID0gbmV3X3N0Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdHJ1Y3Qg dHRtX2RldmljZV9mdW5jcyBpOTE1X3R0bV9ib19kcml2ZXIgPSB7Cj4gKwkudHRtX3R0X2NyZWF0 ZSA9IGk5MTVfdHRtX3R0X2NyZWF0ZSwKPiArCS50dG1fdHRfdW5wb3B1bGF0ZSA9IGk5MTVfdHRt X3R0X3VucG9wdWxhdGUsCj4gKwkudHRtX3R0X2Rlc3Ryb3kgPSBpOTE1X3R0bV90dF9kZXN0cm95 LAo+ICsJLmV2aWN0aW9uX3ZhbHVhYmxlID0gaTkxNV90dG1fZXZpY3Rpb25fdmFsdWFibGUsCj4g KwkuZXZpY3RfZmxhZ3MgPSBpOTE1X3R0bV9ldmljdF9mbGFncywKPiArCS5tb3ZlID0gaTkxNV90 dG1fbW92ZSwKPiArCS52ZXJpZnlfYWNjZXNzID0gTlVMTCwKPiArCS5zd2FwX3Bvc3NpYmxlID0g aTkxNV90dG1fc3dhcF9wb3NzaWJsZSwKPiArCS5zd2FwX25vdGlmeSA9IGk5MTVfdHRtX3N3YXBf bm90aWZ5LAo+ICsJLmRlbGV0ZV9tZW1fbm90aWZ5ID0gaTkxNV90dG1fZGVsZXRlX21lbV9ub3Rp ZnksCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGk5MTVfdHRtX2dldF9wYWdlcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvID0gaTkxNV9nZW1fdG9fdHRtKG9iaik7Cj4gKwlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHgg Y3R4ID0gewo+ICsJCS5pbnRlcnJ1cHRpYmxlID0gdHJ1ZSwKPiArCQkubm9fd2FpdF9ncHUgPSBm YWxzZSwKPiArCX07Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICsJaW50IHJldDsKPiArCj4g KwkvKiBTd2FwIGluLiAqLwo+ICsJaWYgKGJvLT50dG0gJiYgKGJvLT50dG0tPnBhZ2VfZmxhZ3Mg JiBUVE1fUEFHRV9GTEFHX1NXQVBQRUQpKSB7Cj4gKwkJcmV0ID0gdHRtX3R0X3BvcHVsYXRlKGJv LT5iZGV2LCBiby0+dHRtLCAmY3R4KTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsKPiArCS8qIE1vdmUgdG8gdGhlIHJlcXVlc3RlZCBwbGFjZW1lbnQuICovCj4gKwly ZXQgPSB0dG1fYm9fdmFsaWRhdGUoYm8sICZpOTE1X2xtZW0wX3BsYWNlbWVudCwgJmN0eCk7Cj4g KwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJLyogT2JqZWN0IGVpdGhlciBoYXMg YSBwYWdlIHZlY3RvciBvciBpcyBhbiBpb21lbSBvYmplY3QgKi8KPiArCXN0ID0gYm8tPnR0bSA/ IGk5MTVfdHRtX3R0X2dldF9zdChiby0+dHRtKSA6IG9iai0+dHRtLmNhY2hlZF9pb19zdDsKPiAr CWlmIChJU19FUlIoc3QpKQo+ICsJCXJldHVybiBQVFJfRVJSKHN0KTsKPiArCj4gKwlfX2k5MTVf Z2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBzdCwgaTkxNV9zZ19kbWFfcGFnZV9zaXplcyhzdC0+ c2dsKSk7Cj4gKwo+ICsJaTkxNV90dG1fYWRqdXN0X2xydShvYmopOwo+ICsKPiArCXJldHVybiBy ZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfdHRtX3B1dF9wYWdlcyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgICAgICAgc3RydWN0IHNnX3RhYmxlICpzdCkK PiArewo+ICsJLyoKPiArCSAqIFdlJ3JlIGN1cnJlbnRseSBub3QgY2FsbGVkIGZyb20gYSBzaHJp bmtlciwgc28gcHV0X3BhZ2VzKCkKPiArCSAqIHR5cGljYWxseSBtZWFucyB0aGUgb2JqZWN0IGlz IGFib3V0IHRvIGRlc3Ryb3llZCwgb3IgY2FsbGVkCj4gKwkgKiBmcm9tIG1vdmVfbm90aWZ5KCku IFNvIGp1c3QgYXZvaWQgZG9pbmcgbXVjaCBmb3Igbm93Lgo+ICsJICogSWYgdGhlIG9iamVjdCBp cyBub3QgZGVzdHJveWVkIG5leHQsIFRoZSBUVE0gZXZpY3Rpb24gbG9naWMKPiArCSAqIGFuZCBz aHJpbmtlcnMgd2lsbCBtb3ZlIGl0IG91dCBpZiBuZWVkZWQuCj4gKwkgKi8KPiArCj4gKwlpOTE1 X3R0bV9hZGp1c3RfbHJ1KG9iaik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfdHRtX2Fk anVzdF9scnUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOwo+ICsKPiArCS8q Cj4gKwkgKiBEb24ndCBtYW5pcHVsYXRlIHRoZSBUVE0gTFJVcyB3aGlsZSBpbiBUVE0gYm8gZGVz dHJ1Y3Rpb24uCj4gKwkgKiBXZSdyZSBjYWxsZWQgdGhyb3VnaCBpOTE1X3R0bV9kZWxldGVfbWVt X25vdGlmeSgpLgo+ICsJICovCj4gKwlpZiAoIWtyZWZfcmVhZCgmYm8tPmtyZWYpKQo+ICsJCXJl dHVybjsKPiArCj4gKwkvKgo+ICsJICogUHV0IG9uIHRoZSBjb3JyZWN0IExSVSBsaXN0IGRlcGVu ZGluZyBvbiB0aGUgTUFEViBzdGF0dXMKPiArCSAqLwo+ICsJc3Bpbl9sb2NrKCZiby0+YmRldi0+ bHJ1X2xvY2spOwo+ICsJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpIHsK PiArCQliby0+cHJpb3JpdHkgPSBJOTE1X1RUTV9QUklPX1BVUkdFOwo+ICsJfSBlbHNlIGlmICgh aTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmopKSB7Cj4gKwkJaWYgKGJvLT5wcmlvcml0eSA8 IEk5MTVfVFRNX1BSSU9fSEFTX1BBR0VTKQo+ICsJCQliby0+cHJpb3JpdHkgPSBJOTE1X1RUTV9Q UklPX0hBU19QQUdFUzsKPiArCX0gZWxzZSB7Cj4gKwkJaWYgKGJvLT5wcmlvcml0eSA+IEk5MTVf VFRNX1BSSU9fTk9fUEFHRVMpCj4gKwkJCWJvLT5wcmlvcml0eSA9IEk5MTVfVFRNX1BSSU9fTk9f UEFHRVM7Cj4gKwl9Cj4gKwo+ICsJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoYm8sICZiby0+bWVt LCBOVUxMKTsKPiArCXNwaW5fdW5sb2NrKCZiby0+YmRldi0+bHJ1X2xvY2spOwo+ICt9Cj4gKwo+ ICsvKgo+ICsgKiBUVE0tYmFja2VkIGdlbSBvYmplY3QgZGVzdHJ1Y3Rpb24gcmVxdWlyZXMgc29t ZSBjbGFyaWZpY2F0aW9uLgo+ICsgKiBCYXNpY2FsbHkgd2UgaGF2ZSB0d28gcG9zc2liaWxpdGll cyBoZXJlLiBXZSBjYW4gZWl0aGVyIHJlbHkgb24gdGhlCj4gKyAqIGk5MTUgZGVsYXllZCBkZXN0 cnVjdGlvbiBhbmQgcHV0IHRoZSBUVE0gb2JqZWN0IHdoZW4gdGhlIG9iamVjdAo+ICsgKiBpcyBp ZGxlLiBUaGlzIHdvdWxkIGJlIGRldGVjdGVkIGJ5IFRUTSB3aGljaCB3b3VsZCBieXBhc3MgdGhl Cj4gKyAqIFRUTSBkZWxheWVkIGRlc3Ryb3kgaGFuZGxpbmcuIFRoZSBvdGhlciBhcHByb2FjaCBp cyB0byBwdXQgdGhlIFRUTQo+ICsgKiBvYmplY3QgZWFybHkgYW5kIHJlbHkgb24gdGhlIFRUTSBk ZXN0cm95ZWQgaGFuZGxpbmcsIGFuZCB0aGVuIGZyZWUKPiArICogdGhlIGxlZnRvdmVyIHBhcnRz IG9mIHRoZSBHRU0gb2JqZWN0IG9uY2UgVFRNJ3MgZGVzdHJveWVkIGxpc3QgaGFuZGxpbmcgaXMK PiArICogY29tcGxldGUuIEZvciBub3csIHdlIHJlbHkgb24gdGhlIGxhdHRlciBmb3IgdHdvIHJl YXNvbnM6Cj4gKyAqIGEpIFRUTSBjYW4gZXZpY3QgYW4gb2JqZWN0IGV2ZW4gd2hlbiBpdCdzIG9u IHRoZSBkZWxheWVkIGRlc3Ryb3kgbGlzdCwKPiArICogd2hpY2ggaW4gdGhlb3J5IGFsbG93cyBm b3IgY29tcGxldGUgZXZpY3Rpb24uCj4gKyAqIGIpIFRoZXJlIGlzIHdvcmsgZ29pbmcgb24gaW4g VFRNIHRvIGFsbG93IGZyZWVpbmcgYW4gb2JqZWN0IGV2ZW4gd2hlbgo+ICsgKiBpdCdzIG5vdCBp ZGxlLCBhbmQgdXNpbmcgdGhlIFRUTSBkZXN0cm95ZWQgbGlzdCBoYW5kbGluZyBjb3VsZCBoZWxw IHVzCj4gKyAqIGJlbmVmaXQgZnJvbSB0aGF0Lgo+ICsgKi8KPiArc3RhdGljIHZvaWQgaTkxNV90 dG1fZGVsYXllZF9mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiAr CXR0bV9ib19wdXQoaTkxNV9nZW1fdG9fdHRtKG9iaikpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX3R0bV9vYmpfb3BzID0g ewo+ICsJLm5hbWUgPSAiaTkxNV9nZW1fb2JqZWN0X3R0bSIsCj4gKwkuZmxhZ3MgPSBJOTE1X0dF TV9PQkpFQ1RfSEFTX0lPTUVNLAo+ICsKPiArCS5nZXRfcGFnZXMgPSBpOTE1X3R0bV9nZXRfcGFn ZXMsCj4gKwkucHV0X3BhZ2VzID0gaTkxNV90dG1fcHV0X3BhZ2VzLAo+ICsJLnRydW5jYXRlID0g aTkxNV90dG1fcHVyZ2UsCj4gKwkuYWRqdXN0X2xydSA9IGk5MTVfdHRtX2FkanVzdF9scnUsCj4g KwkuZGVsYXllZF9mcmVlID0gaTkxNV90dG1fZGVsYXllZF9mcmVlLAo+ICt9Owo+ICsKPiArdm9p ZCBpOTE1X3R0bV9ib19kZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpOTE1X3R0bV90b19nZW0oYm8p Owo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21lbW9yeV9yZWdpb24ob2JqKTsKPiAr CWNhbGxfcmN1KCZvYmotPnJjdSwgX19pOTE1X2dlbV9mcmVlX29iamVjdF9yY3UpOwo+ICt9Cj4g Kwo+ICsvKioKPiArICogX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQgLSBJbml0aWFsaXplIGEg dHRtLWJhY2tlZCBpOTE1IGdlbSBvYmplY3QKPiArICogQG1lbTogVGhlIGluaXRpYWwgbWVtb3J5 IHJlZ2lvbiBmb3IgdGhlIG9iamVjdC4KPiArICogQG9iajogVGhlIGdlbSBvYmplY3QuCj4gKyAq IEBzaXplOiBPYmplY3Qgc2l6ZSBpbiBieXRlcy4KPiArICogQGZsYWdzOiBnZW0gb2JqZWN0IGZs YWdzLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29k ZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IF9faTkxNV9nZW1fdHRtX29iamVjdF9pbml0KHN0 cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCj4g KwkJCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArCXN0YXRpYyBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgbG9ja19jbGFzczsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gbWVtLT5pOTE1Owo+ICsJc2l6ZV90IGFsaWdubWVudCA9IDA7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCS8qIEFkanVzdCBhbGlnbm1lbnQgdG8gR1BVLSBhbmQgQ1BVIGh1Z2UgcGFnZSBzaXplcy4g Ki8KPiArCj4gKwlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyKSB7Cj4gKwkJaWYgKHNpemUgPj0g U1pfMUcpCj4gKwkJCWFsaWdubWVudCA9IFNaXzFHID4+IFBBR0VfU0hJRlQ7Cj4gKwkJZWxzZSBp ZiAoc2l6ZSA+PSBTWl8yTSkKPiArCQkJYWxpZ25tZW50ID0gU1pfMk0gPj4gUEFHRV9TSElGVDsK PiArCQllbHNlIGlmIChzaXplID49IFNaXzY0SykKPiArCQkJYWxpZ25tZW50ID0gU1pfNjRLID4+ IFBBR0VfU0hJRlQ7Cj4gKwl9Cj4gKwo+ICsJZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KCZp OTE1LT5kcm0sICZvYmotPmJhc2UsIHNpemUpOwo+ICsJaTkxNV9nZW1fb2JqZWN0X2luaXQob2Jq LCAmaTkxNV9nZW1fdHRtX29ial9vcHMsICZsb2NrX2NsYXNzLCBmbGFncyk7Cj4gKwlpOTE1X2dl bV9vYmplY3RfaW5pdF9tZW1vcnlfcmVnaW9uKG9iaiwgbWVtKTsKPiArCWk5MTVfZ2VtX29iamVj dF9tYWtlX3Vuc2hyaW5rYWJsZShvYmopOwo+ICsKPiArCXJldCA9IHR0bV9ib19pbml0KCZpOTE1 LT5iZGV2LCBpOTE1X2dlbV90b190dG0ob2JqKSwgc2l6ZSwKPiArCQkJICB0dG1fYm9fdHlwZV9r ZXJuZWwsICZpOTE1X3N5c19wbGFjZW1lbnQsIGFsaWdubWVudCwKPiArCQkJICB0cnVlLCBOVUxM LCBOVUxMLCBpOTE1X3R0bV9ib19kZXN0cm95KTsKPiArCj4gKwlvYmotPnJlYWRfZG9tYWlucyA9 IEk5MTVfR0VNX0RPTUFJTl9XQyB8IEk5MTVfR0VNX0RPTUFJTl9HVFQ7Cj4gKwo+ICsJaTkxNV9n ZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NBQ0hFX05PTkUpOwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV90dG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0u aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iOGQzZGNiYjUw ZGYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3R0bS5oCj4gQEAgLTAsMCArMSw0OCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDIxIEludGVsIENvcnBvcmF0aW9u Cj4gKyAqLwo+ICsjaWZuZGVmIF9JOTE1X0dFTV9UVE1fSF8KPiArI2RlZmluZSBfSTkxNV9HRU1f VFRNX0hfCj4gKwo+ICsjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIgo+ICsK PiArLyoqCj4gKyAqIGk5MTVfZ2VtX3RvX3R0bSAtIENvbnZlcnQgYSBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCB0byBhCj4gKyAqIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdC4KPiArICogQG9i ajogUG9pbnRlciB0byB0aGUgZ2VtIG9iamVjdC4KPiArICoKPiArICogUmV0dXJuOiBQb2ludGVy IHRvIHRoZSBlbWJlZGRlZCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QuCj4gKyAqLwo+ICtzdGF0 aWMgaW5saW5lIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqCj4gK2k5MTVfZ2VtX3RvX3R0bShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlyZXR1cm4gJm9iai0+X19k b19ub3RfYWNjZXNzOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBpOTE1IHR0bSBnZW0gb2JqZWN0IGRl c3RydWN0b3IuIEludGVybmFsIHVzZSBvbmx5Lgo+ICsgKi8KPiArdm9pZCBpOTE1X3R0bV9ib19k ZXN0cm95KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwo+ICsKPiArLyoqCj4gKyAqIGk5 MTVfdHRtX3RvX2dlbSAtIENvbnZlcnQgYSBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgdG8gYW4g ZW1iZWRkaW5nCj4gKyAqIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Lgo+ICsgKgo+ICsgKiBS ZXR1cm46IFBvaW50ZXIgdG8gdGhlIGVtYmVkZGluZyBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qs IG9yIE5VTEwKPiArICogaWYgdGhlIG9iamVjdCB3YXMgbm90IGFuIGk5MTUgdHRtIG9iamVjdC4K PiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtp OTE1X3R0bV90b19nZW0oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKPiArewo+ICsJaWYg KEdFTV9XQVJOX09OKGJvLT5kZXN0cm95ICE9IGk5MTVfdHRtX2JvX2Rlc3Ryb3kpKQo+ICsJCXJl dHVybiBOVUxMOwo+ICsKPiArCXJldHVybiBjb250YWluZXJfb2YoYm8sIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0LCBfX2RvX25vdF9hY2Nlc3MpOwo+ICt9Cj4gKwo+ICtpbnQgX19pOTE1X2dl bV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKPiArCQkJ ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCSAgICAgICByZXNv dXJjZV9zaXplX3Qgc2l6ZSwKPiArCQkJICAgICAgIHVuc2lnbmVkIGludCBmbGFncyk7Cj4gKyNl bmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZWdpb25f bG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVnaW9uX2xtZW0uYwo+IGlu ZGV4IGY3MzY2YjA1NGY4ZS4uNGFlMWY3MTdhOTRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yZWdpb25fbG1lbS5jCj4gQEAgLTksNiArOSw3IEBACj4gICAjaW5jbHVk ZSAiaW50ZWxfcmVnaW9uX3R0bS5oIgo+ICAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9sbWVtLmgi Cj4gICAjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5oIgo+ICsjaW5jbHVkZSAiZ2VtL2k5 MTVfZ2VtX3R0bS5oIgo+ICAgI2luY2x1ZGUgImludGVsX3JlZ2lvbl9sbWVtLmgiCj4gICAKPiAg IHN0YXRpYyBpbnQgaW5pdF9mYWtlX2xtZW1fYmFyKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptZW0pCj4gQEAgLTEwNyw3ICsxMDgsNyBAQCByZWdpb25fbG1lbV9pbml0KHN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICptZW0pCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21lbW9y eV9yZWdpb25fb3BzIGludGVsX3JlZ2lvbl9sbWVtX29wcyA9IHsKPiAgIAkuaW5pdCA9IHJlZ2lv bl9sbWVtX2luaXQsCj4gICAJLnJlbGVhc2UgPSByZWdpb25fbG1lbV9yZWxlYXNlLAo+IC0JLmlu aXRfb2JqZWN0ID0gX19pOTE1X2dlbV9sbWVtX29iamVjdF9pbml0LAo+ICsJLmluaXRfb2JqZWN0 ID0gX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQsCj4gICB9Owo+ICAgCj4gICBzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggMTgwZjZl OTEwN2Q0Li4zNTAyODNhYjlhODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAt MTAwNSw4ICsxMDA1LDExIEBAIGk5MTVfZ2VtX21hZHZpc2VfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IC0JaWYgKG9iai0+bW0u bWFkdiAhPSBfX0k5MTVfTUFEVl9QVVJHRUQpCj4gKwlpZiAob2JqLT5tbS5tYWR2ICE9IF9fSTkx NV9NQURWX1BVUkdFRCkgewo+ICAgCQlvYmotPm1tLm1hZHYgPSBhcmdzLT5tYWR2Owo+ICsJCWlm IChvYmotPm9wcy0+YWRqdXN0X2xydSkKPiArCQkJb2JqLT5vcHMtPmFkanVzdF9scnUob2JqKTsK PiArCX0KPiAgIAo+ICAgCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX3BhZ2VzKG9iaikpIHsKPiAg IAkJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jCj4gaW5kZXggNDA5MmNjOTg3Njc5Li5iZDI3ZTg5N2Q0ZDAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCj4gQEAgLTE0OSw3 ICsxNDksNiBAQCBpbnRlbF9tZW1vcnlfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgIAo+ICAgCW11dGV4X2luaXQoJm1lbS0+b2JqZWN0cy5sb2NrKTsKPiAg IAlJTklUX0xJU1RfSEVBRCgmbWVtLT5vYmplY3RzLmxpc3QpOwo+IC0JSU5JVF9MSVNUX0hFQUQo Jm1lbS0+b2JqZWN0cy5wdXJnZWFibGUpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZtZW0tPnJlc2Vy dmVkKTsKPiAgIAo+ICAgCW11dGV4X2luaXQoJm1lbS0+bW1fbG9jayk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAo+IGluZGV4IGU2OWNkZTEzZGFmMi4uN2I1 ZmE5N2MwYjU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9y eV9yZWdpb24uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdp b24uaAo+IEBAIC0xMDAsNyArMTAwLDYgQEAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewo+ ICAgCXN0cnVjdCB7Cj4gICAJCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBQcm90ZWN0cyBhY2Nlc3Mg dG8gb2JqZWN0cyAqLwo+ICAgCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gLQkJc3RydWN0IGxp c3RfaGVhZCBwdXJnZWFibGU7Cj4gICAJfSBvYmplY3RzOwo+ICAgCj4gICAJc2l6ZV90IGNodW5r X3NpemU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90 dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYwo+IGluZGV4IDNi ZDljYWE2MDI5OC4uYTc0Y2FlNDYwMmI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JlZ2lvbl90dG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JlZ2lvbl90dG0uYwo+IEBAIC0xMCw4ICsxMCw3IEBACj4gICAKPiAgICNpbmNsdWRlICJpbnRl bF9yZWdpb25fdHRtLmgiCj4gICAKPiAtLyogQSBaZXJvLWluaXRpYWxpemVkIGRyaXZlciBmb3Ig bm93LiBXZSBkb24ndCBoYXZlIGEgVFRNIGJhY2tlbmQgeWV0LiAqLwo+IC1zdGF0aWMgc3RydWN0 IHR0bV9kZXZpY2VfZnVuY3MgaTkxNV90dG1fYm9fZHJpdmVyOwo+ICtleHRlcm4gc3RydWN0IHR0 bV9kZXZpY2VfZnVuY3MgaTkxNV90dG1fYm9fZHJpdmVyOwo+ICAgCj4gICAvKioKPiAgICAqIERP QzogVFRNIHN1cHBvcnQgc3RydWN0dXJlCj4gQEAgLTE5OCw2ICsxOTcsNyBAQCBzdHJ1Y3Qgc2df dGFibGUgKmludGVsX3JlZ2lvbl90dG1fbm9kZV90b19zdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbiAqbWVtLAo+ICAgCXJldHVybiBpOTE1X3NnX2Zyb21fbW1fbm9kZShub2RlLCBtZW0tPnJl Z2lvbi5zdGFydCk7Cj4gICB9Cj4gICAKPiArI2lmZGVmIENPTkZJR19EUk1fSTkxNV9TRUxGVEVT VAo+ICAgLyoqCj4gICAgKiBpbnRlbF9yZWdpb25fdHRtX25vZGVfYWxsb2MgLSBBbGxvY2F0ZSBt ZW1vcnkgcmVzb3VyY2VzIGZyb20gYSByZWdpb24KPiAgICAqIEBtZW06IFRoZSBtZW1vcnkgcmVn aW9uLAo+IEBAIC0yNDQsMyArMjQ0LDQgQEAgdm9pZCAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2Fs bG9jKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCj4gICAJCXJldCA9IC1FTlhJTzsK PiAgIAlyZXR1cm4gcmV0ID8gRVJSX1BUUihyZXQpIDogcmVzLm1tX25vZGU7Cj4gICB9Cj4gKyNl bmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRt LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmgKPiBpbmRleCA0MDEy OWY3ZTAzMTcuLjlhNWIwNDM3ZDczZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yZWdpb25fdHRtLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y ZWdpb25fdHRtLmgKPiBAQCAtMjEsOSArMjEsMTIgQEAgdm9pZCBpbnRlbF9yZWdpb25fdHRtX2Zp bmkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7Cj4gICBzdHJ1Y3Qgc2dfdGFibGUg KmludGVsX3JlZ2lvbl90dG1fbm9kZV90b19zdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAq bWVtLAo+ICAgCQkJCQkgICAgIHZvaWQgKm5vZGUpOwo+ICAgCj4gK3ZvaWQgaW50ZWxfcmVnaW9u X3R0bV9ub2RlX2ZyZWUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKPiArCQkJCXZv aWQgKm5vZGUpOwo+ICsKPiArI2lmZGVmIENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVAo+ICAgdm9p ZCAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2FsbG9jKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptZW0sCj4gICAJCQkJICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwKPiAgIAkJCQkgIHVuc2lnbmVk IGludCBmbGFncyk7Cj4gLXZvaWQgaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2ZyZWUoc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbSwKPiAtCQkJCXZvaWQgKm5vZGUpOwo+ICsjZW5kaWYKPiAg ICNlbmRpZiAvKiBfSU5URUxfUkVHSU9OX1RUTV9IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwo+IGlu ZGV4IDQ0NzljNTVhYWExZC4uNzQwMDRkNWNiZmEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4g QEAgLTExNTAsNiArMTE1MCwxNCBAQCBpbnQgdHRtX2JvX3N3YXBvdXQoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibywgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCj4gICAJCXJldHVy biAtRUJVU1k7Cj4gICAJfQo+ICAgCj4gKwlpZiAoYm8tPmJkZXYtPmZ1bmNzLT5zd2FwX3Bvc3Np YmxlKSB7Cj4gKwkJaWYgKCFiby0+YmRldi0+ZnVuY3MtPnN3YXBfcG9zc2libGUoYm8pKSB7Cj4g KwkJCWlmIChsb2NrZWQpCj4gKwkJCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UucmVzdik7Cj4g KwkJCXJldHVybiAtRUJVU1k7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgIAlpZiAoYm8tPmRlbGV0ZWQp IHsKPiAgIAkJdHRtX2JvX2NsZWFudXBfcmVmcyhibywgZmFsc2UsIGZhbHNlLCBsb2NrZWQpOwo+ ICAgCQl0dG1fYm9fcHV0KGJvKTsKPiBAQCAtMTIwMCw2ICsxMjA4LDEwIEBAIGludCB0dG1fYm9f c3dhcG91dChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX29wZXJhdGlv bl9jdHggKmN0eCwKPiAgIAlpZiAoYm8tPmJkZXYtPmZ1bmNzLT5zd2FwX25vdGlmeSkKPiAgIAkJ Ym8tPmJkZXYtPmZ1bmNzLT5zd2FwX25vdGlmeShibyk7Cj4gICAKPiArCS8qIFRoZSBjYWxsIHRv IHN3YXBfbm90aWZ5IG1heSBoYXZlIHB1cmdlZCB0aGUgYm8gKi8KPiArCWlmICghYm8tPnR0bSkK PiArCQlnb3RvIG91dDsKPiArCj4gICAJcmV0ID0gdHRtX3R0X3N3YXBvdXQoYm8tPmJkZXYsIGJv LT50dG0sIGdmcF9mbGFncyk7Cj4gICBvdXQ6Cj4gICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vdHRtL3R0bV9kZXZpY2UuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fZGV2aWNlLmgKPiBpbmRl eCA3YzhmODdiZDUyZDMuLjdjNTlkMzVlOTBmOSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS90 dG0vdHRtX2RldmljZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9kZXZpY2UuaAo+IEBA IC0xODEsNiArMTgxLDE1IEBAIHN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIHsKPiAgIAkgKi8KPiAg IAl2b2lkICgqZGVsZXRlX21lbV9ub3RpZnkpKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8p Owo+ICAgCj4gKwkvKioKPiArCSAqIHN0cnVjdCB0dG1fYm9fZHJpdmVyIG1lbWJlciBzd2FwX3Bv c3NpYmxlCj4gKwkgKgo+ICsJICogQGJvOiB0aGUgYnVmZmVyIG9iamVjdCB0byBiZSBldmljdGVk Cj4gKwkgKgo+ICsJICogQ2hlY2sgd2l0aCB0aGUgZHJpdmVyIGlmIGl0IGlzIHBvc3NpYmxlIHRv IHN3YXAgb3V0IGEgQk8uCj4gKwkgKi8KPiArCWJvb2wgKCpzd2FwX3Bvc3NpYmxlKShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKPiArCj4gICAJLyoqCj4gICAJICogbm90aWZ5IHRoZSBk cml2ZXIgdGhhdCB3ZSdyZSBhYm91dCB0byBzd2FwIG91dCB0aGlzIGJvCj4gICAJICovCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK