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=-8.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 BEF35C5518A for ; Wed, 22 Apr 2020 07:54:35 +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 8C8D0206E9 for ; Wed, 22 Apr 2020 07:54:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="Uf6mFtOH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8C8D0206E9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5DF0C6E9E7; Wed, 22 Apr 2020 07:54:35 +0000 (UTC) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-eopbgr760088.outbound.protection.outlook.com [40.107.76.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F9136E9E7 for ; Wed, 22 Apr 2020 07:54:34 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QENahtjezOkyXoDTxAfvj216+z/7MRZCOkSJGbp5ILfFRy/lGe0Zrfh4CSTbRt+uPfs0F9+tkN248o3Iyql2eo4c+7+w9UpqrJgSFmWITUmLmwUGYHI5LjCXfU0h4i1CeBmb1upuCp5B2EhPzrw5w2UFebndhNGpOIl3MkoOi/oPh0RY/qnq8RF9+q8xNmyn4GdniKD7DCzEYgTT8qn9jOifj034BMC236Pk9iv3+CDAqw6K5IOq0P2pQC49EU68L5a+cFZFsNAQosj3Tg5MyZ5F8eYaFfmRrarNlDaR6b1+HtMD3+n7esvOuZ6I1f45hoerlcKICY/YgVEexd7YIA== 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=KGhvP0fkoFLnVRcvpLP7LUTAsNieIS8iVtm9tOj3Sqo=; b=FCyE5vPbBCVXsxG12fcYD+U3nQGuljPocbdBgn5Q3CAgMDAnBxO9oXqmicS0jhOAkHakCCKjGgQuTnK0Y9MUa8vkLUYx7y89kRL+lpbF/iUYJWSllDimS8CxXMFvulEYDJAMyAsppzlXm3RCnZ+EblxJkY8ShS8383KBeH+9Kk1XNo+fl4ZKs6i5y75g9dDQ0oigqGwdhvW0N48Bf+edPayN/8jaupdn4btEbRmtesGf6ZARP38xdHpWSbzH5HEZrzu8tf2Tnd09XOjvVCuP+XTnUPc+IqzvXBvuaYci+KG89RzTMmtvKubiK8PNtBoGKbuBR4gWaSE7vIs4MLKKfw== 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=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KGhvP0fkoFLnVRcvpLP7LUTAsNieIS8iVtm9tOj3Sqo=; b=Uf6mFtOH24gCvRJvWJyuyAYkrudFphnRFWcXSL1jYdODOLqeaBVF/A1xO6WYxZarclVihn9tw0nKQaNU9vZ0rWhlf8Gwlga/sK3SN7xHNIOS0fX5Se+Syr1uGWKQIk7plKxkHHeBTJlaKDGspnNz2AeWOzOTJ0opWtArVdY91RA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; Received: from DM6PR12MB4401.namprd12.prod.outlook.com (2603:10b6:5:2a9::15) by DM6PR12MB3273.namprd12.prod.outlook.com (2603:10b6:5:188::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25; Wed, 22 Apr 2020 07:54:32 +0000 Received: from DM6PR12MB4401.namprd12.prod.outlook.com ([fe80::7949:b580:a2d5:f766]) by DM6PR12MB4401.namprd12.prod.outlook.com ([fe80::7949:b580:a2d5:f766%3]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 07:54:32 +0000 Subject: Re: [PATCH] drm/amdgpu: refine kiq access register To: "Tao, Yintian" , "Liu, Monk" , "Liu, Shaoyun" , "Kuehling, Felix" References: <20200422044228.20986-1-yttao@amd.com> <9ce5395a-aebf-f205-5237-5fd4c40a6449@amd.com> <21d25270-181b-af96-35b6-bf5fa04e14eb@gmail.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <3fd63099-fbd7-e257-0081-843e1b269b1d@amd.com> Date: Wed, 22 Apr 2020 09:53:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 In-Reply-To: Content-Language: en-US X-ClientProxiedBy: AM0PR10CA0016.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::26) To DM6PR12MB4401.namprd12.prod.outlook.com (2603:10b6:5:2a9::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7] (2a02:908:1252:fb60:be8a:bd56:1f94:86e7) by AM0PR10CA0016.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:17c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.26 via Frontend Transport; Wed, 22 Apr 2020 07:54:31 +0000 X-Originating-IP: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 94c04705-c969-4701-e3bb-08d7e69264a0 X-MS-TrafficTypeDiagnostic: DM6PR12MB3273:|DM6PR12MB3273: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-Forefront-PRVS: 03818C953D X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB4401.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(346002)(376002)(136003)(39860400002)(366004)(396003)(52116002)(31696002)(30864003)(66556008)(6486002)(8936002)(6636002)(16526019)(4326008)(2616005)(86362001)(5660300002)(66574012)(66476007)(36756003)(53546011)(66946007)(186003)(31686004)(8676002)(45080400002)(6666004)(316002)(81156014)(2906002)(478600001)(966005)(110136005); DIR:OUT; SFP:1101; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: osqPzhqNPs1v/DEn6mqeJuLtVF9Ojs1Gx9xUGqNGk71nYCqxadnM8fJzrpCoWHK4KJsPAE9NuZrOr54aVrhe9svb7X86t+UX++cFEZCCkObzSw8PDvN4sQBvkxrt2hP/p4GUP28WmdnSEtRs5hewK5R9qGXzCbEogGUYY7rumvpvPZ1KdpXP93FLuCxIFGAbcmEVNNEZpVObNN2AN6z2rKZP70OO6/STj4XQwXtnxHkhS37rrf0ThXSI6w+l+AHfNGewRvdBI+Zk0Nyd0212dM5lA+aHAD7HLN3Ff7EDgDUQ2uvGpJrJHUTr2udkKernb1fWCHZJ2HTcXP3oW/OXibh4li4i/wQjmZ9Jm7SVqPP6F6KFkh8que3qeDckcXnFVSr/jTt8Xgv2ZeskxbKix2MmElsKZHfgxYPBa3xGVMnKy6hE+PUZqA7Y/o7TsuMaZNjWvtFQQ0tkMkIUmG0tdbEd0CVWWaY9IV5U71Oj68g= X-MS-Exchange-AntiSpam-MessageData: J1KqYvrgmn1cd6T0tqPdoAj1odXw+m3uBFrUhqyFc4JS/FK+S5b2Vi8L3R/cG3x0vhHV/ZFcmBCWRpwvndlhrRpcbtXq0tdqDXdqnJvvFXMWZlgA25azEW9DtHwh0qrR6R7PfXV9BkzxEttKeJbvdkoj2NAXqz1//BieQsjezKDWnOXhYUSkV9TXEgES0WOXkAktFbLz8qmHmKyvRu1OhHye9RLb0Bahj76LN21fBVLFI+ajKBVBXrHlniwRU8DuPCFNxz9WfKVT1HpU5Ecs8HCU1ANW3II328FFY4/oLSWonqBxmcQrPagEvm57IzT6X93JaYNqqa3g/IRRZ/rI+++iHgfmCNfmpBOX1lEJNb2z9rVtZy7O89XB25b7R5c9VhXyLpY4IBdw6EoLTsAfcbYDzYTyfDsxStBOgO4qh4vDh/CIM8qomFd3WpSnvjJyqhx/j+Y1EAk2y8UZmTIcfRe0XyVDfyyUQ2iiLnom2X7Cq4bikuP/po3uasJ3MDV5iwxFnaKml4leWj5y5vqfUWPCaydn5dvB5GtIq+it3UF3CrHLAEGD7K0zRtYjlpdj+3CdoZr6YNN/YCLxe1FmRHm4DWmDkk5F9YG1jEaLv6UEU8DLg6SojGNx2Ljul+1rxrcBGh3RxyyIxtVWiOhFMDll54zi7+4dTDoluvtycPXEtIIg/gTQCmx/NBs1cYizdnAMyJRts1nfDzbX/XAPf1107bkw4/6hlImrPJW/9bMGfCUZ6SRN6DRTmtoYB0zeD1iHwJuZz/Hw5rFE+SM05z9kg8k+oRadjhgU9BX8RCB9/JcOIxffYQ6QH0hwTPTG4Rlq9Bf2HB+WPYhN+p1JjxXBGJ5y9qZqWparORgvc4s= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94c04705-c969-4701-e3bb-08d7e69264a0 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 07:54:32.6901 (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: alyWDX/DUK/mt0kIqSckq4a7WK0H/nt3ljoShWsP9UReSWBZcDRKpbbAcDutNwGT X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3273 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "amd-gfx@lists.freedesktop.org" Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" QW0gMjIuMDQuMjAgdW0gMDk6NDkgc2NocmllYiBUYW8sIFlpbnRpYW46Cj4gSGkgQ2hyaXN0aWFu Cj4KPgo+IFBsZWFzZSBzZWUgaW5saW5lIGNvbW1lbnRzLgo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4gRnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBn bWFpbC5jb20+Cj4gU2VudDogMjAyMOW5tDTmnIgyMuaXpSAxNTo0MAo+IFRvOiBUYW8sIFlpbnRp YW4gPFlpbnRpYW4uVGFvQGFtZC5jb20+OyBLb2VuaWcsIENocmlzdGlhbiA8Q2hyaXN0aWFuLktv ZW5pZ0BhbWQuY29tPjsgTGl1LCBNb25rIDxNb25rLkxpdUBhbWQuY29tPjsgTGl1LCBTaGFveXVu IDxTaGFveXVuLkxpdUBhbWQuY29tPjsgS3VlaGxpbmcsIEZlbGl4IDxGZWxpeC5LdWVobGluZ0Bh bWQuY29tPgo+IENjOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1YmplY3Q6IFJl OiBbUEFUQ0hdIGRybS9hbWRncHU6IHJlZmluZSBraXEgYWNjZXNzIHJlZ2lzdGVyCj4KPiBBbSAy Mi4wNC4yMCB1bSAwOTozNSBzY2hyaWViIFRhbywgWWludGlhbjoKPj4gSGkgIENocmlzdGlhbgo+ Pgo+Pgo+Pj4gQlVHX09OKGluX2ludGVycnVwdCgpKTsKPj4gVGhhdCB3b24ndCB3b3JrIGxpa2Ug dGhpcy4gVGhlIEtJUSBpcyBhbHNvIHVzZWQgaW4gaW50ZXJydXB0IGNvbnRleHQgaW4gdGhlIGRy aXZlciwgdGhhdCdzIHdoeSB3ZSB1c2VkIHNwaW5fbG9ja19pcnFzYXZlKCkuCj4+IFt5dHRhb106 IEFjY29yZGluZyB0byB0aGUgY3VycmVudCBkcm0tbmV4dCBjb2RlLCBJIGhhdmUgbm90IGZpbmQg d2hlcmUgdG8gYWNjZXNzIHJlZ2lzdGVyIHRocm91Z2ggS0lRLgo+PiAJCUFuZCB5b3UgbmVlZCB0 byB3YWl0IGZvciB0aGUgZnJlZSBraXEgcmluZyBidWZmZXIgc3BhY2UgaWYgdGhlcmUgaXMgbm8g ZnJlZSBraXEgcmluZyBidWZmZXIsIGhlcmUsIHlvdSB3YWl0IGF0IGludGVycnVwdCBjb250ZXh0 IGlzIGlsbGVnYWwuCj4gV2FpdGluZyBpbiBhdG9taWMgY29udGV4dCBpcyBpbGxlZ2FsIGFzIHdl bGwsIGJ1dCB3ZSBkb24ndCBoYXZlIG11Y2ggb3RoZXIgY2hvaWNlLgo+IFt5dHRhb106IG5vLCB0 aGVyZSBpcyBubyBzbGVlcCBpbiBhdG9taWMgY29udGV4dCBhdCBteSBwYXRjaC4KCkknbSBub3Qg dGFsa2luZyBhYm91dCBhIHNsZWVwaW5nLCBidXQgYnVzeSB3YWl0aW5nLgoKPiBXZSBqdXN0IG5l ZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2FpdGluZyBuZXZlciBoYXBwZW5zIGJ5IG1ha2luZyB0aGUg YnVmZmVycyBsYXJnZSBlbm91Z2ggYW5kIGlmIGl0IHN0aWxsIGhhcHBlbnMgcHJpbnQgYW5kIGVy cm9yLgo+IFt5dHRhb106IHRoaXMgaXMgbm90IHRoZSBnb29kIGNob2ljZSBiZWNhdXNlIEtNRCBu ZWVkIHRvIHByb3RlY3QgaXQgaW5zdGVhZCBvZiBob3BpbmcgdXNlciBub3QgZnJlcXVlbnRseSBp bnZva2UgS0lRIGFjZXNzLgoKVGhlIG9ubHkgb3RoZXIgY2hvaWNlIHdlIGhhdmUgaXMgYnVzeSB3 YWl0aW5nLCBlLmcuIGxvb3AgdW50aWwgd2UgZ2V0IGEgCmZyZWUgc2xvdC4KClJlZ2FyZHMsCkNo cmlzdGlhbi4KCj4KPj4gQW5kIEkgd291bGQgZWl0aGVyIHNheSB0aGF0IHdlIHNob3VsZCB1c2Ug dGhlIHRyaWNrIHdpdGggdGhlIE5PUCB0byByZXNlcnZlIHNwYWNlIG9uIHRoZSByaW5nIGJ1ZmZl ciBvciBjYWxsIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgZm9yIGVhY2ggcmVhZC4gYW1kZ3B1X2Rl dmljZV93Yl9nZXQoKSBhbHNvIHVzZXMgZmluZF9maXJzdF96ZXJvX2JpdCgpIGFuZCBzaG91bGQg d29yayBlcXVhbGx5IHdlbGwuCj4+IFt5dHRhb106IHNvcnJ5LCBjYW4geW91IGdpdmUgbWUgbW9y ZSBkZXRhaWxzIGFib3V0IGhvdyB0byB1c2UgTk9QIHRvIHJlc2VydmUgc3BhY2U/IEkgd2lsbCB1 c2UgYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBmb3IgdGhlIHJlYWQgb3BlcmF0aW9uLgo+IFdlIGNv dWxkIHVzZSB0aGUgTk9QIFBNNCBjb21tYW5kIGFzIEZlbGl4IHN1Z2dlc3RlZCwgdGhpcyBjb21t YW5kIGhhcyBhCj4gaGVhZGVyK2xlbmd0aCBhbmQgc2F5cyB0aGF0IHRoZSBuZXh0IFggZHcgc2hv dWxkIGJlIGlnbm9yZSBvbiB0aGUgcmluZwo+IGJ1ZmZlci4KPgo+IEJ1dCBJIHRoaW5rIHVzaW5n IGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgaXMgYmV0dGVyIGFueXdheS4KPiBbeXR0YW9dOiB5ZXMs IEkgYWdyZWVkIHdpdGggYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBtZXRob2QgYmVjYXVzZSBpdCB3 aWxsIGZpeCBwcmV2ZW50IHBvdGVudGlhbCByZWFkIHJhY2UgY29uZGl0aW9uIGJ1dCBOT1AgbWV0 aG9kIHdpbGwgbm90IHByZXZlbnQgaXQKPgo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+Cj4+Cj4+ Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IEtvZW5pZywgQ2hyaXN0aWFu IDxDaHJpc3RpYW4uS29lbmlnQGFtZC5jb20+Cj4+IFNlbnQ6IDIwMjDlubQ05pyIMjLml6UgMTU6 MjMKPj4gVG86IFRhbywgWWludGlhbiA8WWludGlhbi5UYW9AYW1kLmNvbT47IExpdSwgTW9uayA8 TW9uay5MaXVAYW1kLmNvbT47IExpdSwgU2hhb3l1biA8U2hhb3l1bi5MaXVAYW1kLmNvbT47IEt1 ZWhsaW5nLCBGZWxpeCA8RmVsaXguS3VlaGxpbmdAYW1kLmNvbT4KPj4gQ2M6IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGRybS9hbWRncHU6IHJl ZmluZSBraXEgYWNjZXNzIHJlZ2lzdGVyCj4+Cj4+PiBCVUdfT04oaW5faW50ZXJydXB0KCkpOwo+ PiBUaGF0IHdvbid0IHdvcmsgbGlrZSB0aGlzLiBUaGUgS0lRIGlzIGFsc28gdXNlZCBpbiBpbnRl cnJ1cHQgY29udGV4dCBpbiB0aGUgZHJpdmVyLCB0aGF0J3Mgd2h5IHdlIHVzZWQgc3Bpbl9sb2Nr X2lycXNhdmUoKS4KPj4KPj4gQW5kIEkgd291bGQgZWl0aGVyIHNheSB0aGF0IHdlIHNob3VsZCB1 c2UgdGhlIHRyaWNrIHdpdGggdGhlIE5PUCB0byByZXNlcnZlIHNwYWNlIG9uIHRoZSByaW5nIGJ1 ZmZlciBvciBjYWxsIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgZm9yIGVhY2ggcmVhZC4gYW1kZ3B1 X2RldmljZV93Yl9nZXQoKSBhbHNvIHVzZXMgZmluZF9maXJzdF96ZXJvX2JpdCgpIGFuZCBzaG91 bGQgd29yayBlcXVhbGx5IHdlbGwuCj4+Cj4+IFlvdSBhbHNvIGRvbid0IG5lZWQgdG8gd29ycnkg dG8gbXVjaCBhYm91dCBvdmVyZmxvd2luZyB0aGUgd2IgYXJlYS4KPj4gU2luY2Ugd2UgcnVuIGlu IGFuIGF0b21pYyBjb250ZXh0IHdlIGNhbiBoYXZlIGF0IG1vc3QgdGhlIG51bWJlciBvZiBDUFUg aW4gdGhlIHN5c3RlbSArIGludGVycnVwdCBjb250ZXh0IGhlcmUuCj4+Cj4+IFJlZ2FyZHMsCj4+ IENocmlzdGlhbi4KPj4KPj4gQW0gMjIuMDQuMjAgdW0gMDk6MTEgc2NocmllYiBUYW8sIFlpbnRp YW46Cj4+PiBBZGQgRmVsaXggYW5kIFNoYW95dW4KPj4+Cj4+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+Pj4gRnJvbTogWWludGlhbiBUYW8gPHl0dGFvQGFtZC5jb20+Cj4+PiBTZW50OiAy MDIw5bm0NOaciDIy5pelIDEyOjQyCj4+PiBUbzogS29lbmlnLCBDaHJpc3RpYW4gPENocmlzdGlh bi5Lb2VuaWdAYW1kLmNvbT47IExpdSwgTW9uawo+Pj4gPE1vbmsuTGl1QGFtZC5jb20+Cj4+PiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFRhbywgWWludGlhbiA8WWludGlhbi5U YW9AYW1kLmNvbT4KPj4+IFN1YmplY3Q6IFtQQVRDSF0gZHJtL2FtZGdwdTogcmVmaW5lIGtpcSBh Y2Nlc3MgcmVnaXN0ZXIKPj4+Cj4+PiBBY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQga2lxIGFjY2Vz cyByZWdpc3RlciBtZXRob2QsIHRoZXJlIHdpbGwgYmUgcmFjZSBjb25kaXRpb24gd2hlbiB1c2lu ZyBLSVEgdG8gcmVhZCByZWdpc3RlciBpZiBtdWx0aXBsZSBjbGllbnRzIHdhbnQgdG8gcmVhZCBh dCBzYW1lIHRpbWUganVzdCBsaWtlIHRoZSBleHBhbXBsZSBiZWxvdzoKPj4+IDEuIGNsaWVudC1B IHN0YXJ0IHRvIHJlYWQgUkVHLTAgdGhyb2d1aCBLSVEgMi4gY2xpZW50LUEgcG9sbCB0aGUgc2Vx bm8tMCAzLiBjbGllbnQtQiBzdGFydCB0byByZWFkIFJFRy0xIHRocm91Z2ggS0lRIDQuIGNsaWVu dC1CIHBvbGwgdGhlIHNlcW5vLTEgNS4gdGhlIGtpcSBjb21wbGV0ZSB0aGVzZSB0d28gcmVhZCBv cGVyYXRpb24gNi4gY2xpZW50LUEgdG8gcmVhZCB0aGUgcmVnaXN0ZXIgYXQgdGhlIHdiIGJ1ZmZl ciBhbmQKPj4+ICAgICAgIGdldCBSRUctMSB2YWx1ZQo+Pj4KPj4+IEFuZCBpZiB0aGVyZSBhcmUg bXVsdGlwbGUgY2xpZW50cyB0byBmcmVxdWVudGx5IHdyaXRlIHJlZ2lzdGVycyB0aHJvdWdoIEtJ USB3aGljaCBtYXkgcmFpc2UgdGhlIEtJUSByaW5nIGJ1ZmZlciBvdmVyd3JpdHRlbiBwcm9ibGVt Lgo+Pj4KPj4+IFRoZXJlZm9yZSwgYWxsb2NhdGUgZml4ZWQgbnVtYmVyIHdiIHNsb3QgZm9yIHJy ZWcgdXNlIGFuZCBsaW1pdCB0aGUgc3VibWl0IG51bWJlciB3aGljaCBkZXBlbmRzIG9uIHRoZSBr aXEgcmluZ19zaXplIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIG92ZXJ3cml0dGVuIHByb2JsZW0u Cj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogWWludGlhbiBUYW8gPHl0dGFvQGFtZC5jb20+Cj4+PiAt LS0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgICAg fCAgIDcgKy0KPj4+ICAgICAuLi4vZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEw LmMgICAgfCAgMTIgKy0KPj4+ICAgICAuLi4vZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRr ZmRfZ2Z4X3Y5LmMgfCAgMTIgKy0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2Z4LmMgICAgICAgfCAxMjkgKysrKysrKysrKysrKysrKy0tCj4+PiAgICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dmeC5oICAgICAgIHwgICA2ICstCj4+PiAgICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCAgICAgIHwgICA2ICstCj4+ PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZpcnQuYyAgICAgIHwgIDEz ICstCj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMgICAgICAg IHwgICA4ICstCj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAg ICAgICAgIHwgICA4ICstCj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5 XzAuYyAgICAgICAgIHwgIDM0ICsrKy0tCj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ21jX3YxMF8wLmMgICAgICAgIHwgIDEyICstCj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y5XzAuYyAgICAgICAgIHwgIDEyICstCj4+PiAgICAgMTIgZmlsZXMgY2hh bmdlZCwgMjExIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4gaW5kZXggNGUxZDRjZmU3YTlmLi40NTMwZTBk ZTQyNTcgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+IEBAIC01 MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9zZXRfaWJfdmFsdWUoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4+PiAgICAgLyoKPj4+ICAgICAgKiBXcml0ZWJhY2sK Pj4+ICAgICAgKi8KPj4+IC0jZGVmaW5lIEFNREdQVV9NQVhfV0IgMTI4CS8qIFJlc2VydmUgYXQg bW9zdCAxMjggV0Igc2xvdHMgZm9yIGFtZGdwdS1vd25lZCByaW5ncy4gKi8KPj4+ICsjZGVmaW5l IEFNREdQVV9NQVhfV0IgMjU2CS8qIFJlc2VydmUgYXQgbW9zdCAyNTYgV0Igc2xvdHMgZm9yIGFt ZGdwdS1vd25lZCByaW5ncy4gKi8KPj4+ICAgICAKPj4+ICAgICBzdHJ1Y3QgYW1kZ3B1X3diIHsK Pj4+ICAgICAJc3RydWN0IGFtZGdwdV9ibwkqd2Jfb2JqOwo+Pj4gQEAgLTEwMjgsNiArMTAyOCwx MSBAQCBib29sIGFtZGdwdV9kZXZpY2VfaGFzX2RjX3N1cHBvcnQoc3RydWN0Cj4+PiBhbWRncHVf ZGV2aWNlICphZGV2KTsKPj4+ICAgICAKPj4+ICAgICBpbnQgZW11X3NvY19hc2ljX2luaXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+Pj4gICAgIAo+Pj4gK2ludCBhbWRncHVfZ2Z4X2tp cV9sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIGJvb2wgcmVhZCk7IHZvaWQKPj4+ICthbWRn cHVfZ2Z4X2tpcV91bmxvY2soc3RydWN0IGFtZGdwdV9raXEgKmtpcSk7Cj4+PiArCj4+PiArdm9p ZCBhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIHVpbnQzMl90 ICpvZmZzKTsKPj4+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoc3RydWN0IGFtZGdwdV9r aXEgKmtpcSwgdWludDMyX3QgKm9mZnMpOwo+Pj4gICAgIC8qCj4+PiAgICAgICogUmVnaXN0ZXJz IHJlYWQgJiB3cml0ZSBmdW5jdGlvbnMuCj4+PiAgICAgICovCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMKPj4+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMKPj4+IGluZGV4 IDY5MWM4OTcwNWJjZC4uMDM0YzlmNDE2NDk5IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3YxMC5jCj4+PiBAQCAtMzA5LDYg KzMwOSw3IEBAIHN0YXRpYyBpbnQga2dkX2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dk LCB2b2lkICptcWQsCj4+PiAgICAgCQkJICAgIHVpbnQzMl90IGRvb3JiZWxsX29mZikKPj4+ICAg ICB7Cj4+PiAgICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZp Y2Uoa2dkKTsKPj4+ICsJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwo+ Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKmtpcV9yaW5nID0gJmFkZXYtPmdmeC5raXEucmlu ZzsKPj4+ICAgICAJc3RydWN0IHYxMF9jb21wdXRlX21xZCAqbTsKPj4+ICAgICAJdWludDMyX3Qg bWVjLCBwaXBlOwo+Pj4gQEAgLTMyNCwxMyArMzI1LDE5IEBAIHN0YXRpYyBpbnQga2dkX2hpcV9t cWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsCj4+PiAgICAgCXByX2RlYnVn KCJrZmQ6IHNldCBISVEsIG1lYzolZCwgcGlwZTolZCwgcXVldWU6JWQuXG4iLAo+Pj4gICAgIAkJ IG1lYywgcGlwZSwgcXVldWVfaWQpOwo+Pj4gICAgIAo+Pj4gLQlzcGluX2xvY2soJmFkZXYtPmdm eC5raXEucmluZ19sb2NrKTsKPj4+ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxz ZSk7Cj4+PiArCWlmIChyKSB7Cj4+PiArCQlwcl9lcnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7 Cj4+PiArCQlnb3RvIG91dF91bmxvY2s7Cj4+PiArCX0KPj4+ICsKPj4+ICAgICAJciA9IGFtZGdw dV9yaW5nX2FsbG9jKGtpcV9yaW5nLCA3KTsKPj4+ICAgICAJaWYgKHIpIHsKPj4+ICAgICAJCXBy X2VycigiRmFpbGVkIHRvIGFsbG9jIEtJUSAoJWQpLlxuIiwgcik7Cj4+PiAgICAgCQlnb3RvIG91 dF91bmxvY2s7Cj4+PiAgICAgCX0KPj4+ICAgICAKPj4+ICsJYW1kZ3B1X2dmeF9raXFfY29uc3Vt ZShraXEsIE5VTEwpOwo+Pj4gICAgIAlhbWRncHVfcmluZ193cml0ZShraXFfcmluZywgUEFDS0VU MyhQQUNLRVQzX01BUF9RVUVVRVMsIDUpKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUoa2lx X3JpbmcsCj4+PiAgICAgCQkJICBQQUNLRVQzX01BUF9RVUVVRVNfUVVFVUVfU0VMKDApIHwgLyog UXVldWVfU2VsICovIEBAIC0zNTAsOCArMzU3LDkgQEAgc3RhdGljIGludCBrZ2RfaGlxX21xZF9s b2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKPj4+ICAgICAJYW1kZ3B1X3Jpbmdf d3JpdGUoa2lxX3JpbmcsIG0tPmNwX2hxZF9wcV93cHRyX3BvbGxfYWRkcl9oaSk7Cj4+PiAgICAg CWFtZGdwdV9yaW5nX2NvbW1pdChraXFfcmluZyk7Cj4+PiAgICAgCj4+PiArCWFtZGdwdV9nZnhf a2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ICAgICBvdXRfdW5sb2NrOgo+Pj4gLQlzcGluX3Vu bG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2spOwo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxv Y2soJmFkZXYtPmdmeC5raXEpOwo+Pj4gICAgIAlyZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAgICAg Cj4+PiAgICAgCXJldHVybiByOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjkuYwo+Pj4gaW5kZXggZGY4NDFjMmFjNWU3Li5mMjQz ZDk5OTBjZWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dmeF92OS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkX2dmeF92OS5jCj4+PiBAQCAtMzA3LDYgKzMwNyw3IEBAIGludCBrZ2RfZ2Z4 X3Y5X2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsCj4+PiAgICAg CQkJICAgIHVpbnQzMl90IGRvb3JiZWxsX29mZikKPj4+ICAgICB7Cj4+PiAgICAgCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKPj4+ICsJc3RydWN0 IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKmtpcV9yaW5nID0gJmFkZXYtPmdmeC5raXEucmluZzsKPj4+ICAgICAJc3RydWN0IHY5 X21xZCAqbTsKPj4+ICAgICAJdWludDMyX3QgbWVjLCBwaXBlOwo+Pj4gQEAgLTMyMiwxMyArMzIz LDE5IEBAIGludCBrZ2RfZ2Z4X3Y5X2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2 b2lkICptcWQsCj4+PiAgICAgCXByX2RlYnVnKCJrZmQ6IHNldCBISVEsIG1lYzolZCwgcGlwZTol ZCwgcXVldWU6JWQuXG4iLAo+Pj4gICAgIAkJIG1lYywgcGlwZSwgcXVldWVfaWQpOwo+Pj4gICAg IAo+Pj4gLQlzcGluX2xvY2soJmFkZXYtPmdmeC5raXEucmluZ19sb2NrKTsKPj4+ICsJciA9IGFt ZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7Cj4+PiArCWlmIChyKSB7Cj4+PiArCQlwcl9l cnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7Cj4+PiArCQlnb3RvIG91dF91bmxvY2s7Cj4+PiAr CX0KPj4+ICsKPj4+ICAgICAJciA9IGFtZGdwdV9yaW5nX2FsbG9jKGtpcV9yaW5nLCA3KTsKPj4+ ICAgICAJaWYgKHIpIHsKPj4+ICAgICAJCXByX2VycigiRmFpbGVkIHRvIGFsbG9jIEtJUSAoJWQp LlxuIiwgcik7Cj4+PiAgICAgCQlnb3RvIG91dF91bmxvY2s7Cj4+PiAgICAgCX0KPj4+ICAgICAK Pj4+ICsJYW1kZ3B1X2dmeF9raXFfY29uc3VtZShraXEsIE5VTEwpOwo+Pj4gICAgIAlhbWRncHVf cmluZ193cml0ZShraXFfcmluZywgUEFDS0VUMyhQQUNLRVQzX01BUF9RVUVVRVMsIDUpKTsKPj4+ ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUoa2lxX3JpbmcsCj4+PiAgICAgCQkJICBQQUNLRVQzX01B UF9RVUVVRVNfUVVFVUVfU0VMKDApIHwgLyogUXVldWVfU2VsICovIEBAIC0zNDgsOCArMzU1LDkg QEAgaW50IGtnZF9nZnhfdjlfaGlxX21xZF9sb2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQg Km1xZCwKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUoa2lxX3JpbmcsIG0tPmNwX2hxZF9wcV93 cHRyX3BvbGxfYWRkcl9oaSk7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX2NvbW1pdChraXFfcmluZyk7 Cj4+PiAgICAgCj4+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ICAg ICBvdXRfdW5sb2NrOgo+Pj4gLQlzcGluX3VubG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2sp Owo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2soJmFkZXYtPmdmeC5raXEpOwo+Pj4gICAgIAly ZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAgICAgCj4+PiAgICAgCXJldHVybiByOwo+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZnguYwo+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMKPj4+IGluZGV4IGVhNTc2YjQyNjBh NC4uYzZiMWM3N2I1ZWFjIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2dmeC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZ2Z4LmMKPj4+IEBAIC0yOTUsMjMgKzI5NSw5OSBAQCBzdGF0aWMgaW50IGFtZGdwdV9nZnhf a2lxX2FjcXVpcmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiAgICAgCXJldHVybiAt RUlOVkFMOwo+Pj4gICAgIH0KPj4+ICAgICAKPj4+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3JlZ19v ZmZzX2dldChzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxLAo+Pj4gKwkJCQkgdWludDMyX3QgKm9mZnNl dCkKPj4+ICt7Cj4+PiArCXVpbnQzMl90IHRtcCA9IDA7Cj4+PiArCj4+PiArCXRtcCA9IGZpbmRf Zmlyc3RfemVyb19iaXQoa2lxLT51c2VkLAo+Pj4gKwkJCQkgICAgICBraXEtPm51bV9zbG90KTsK Pj4+ICsJaWYgKHRtcCA8IGtpcS0+bnVtX3Nsb3QpIHsKPj4+ICsJCV9fc2V0X2JpdCh0bXAsIGtp cS0+dXNlZCk7Cj4+PiArCQkqb2Zmc2V0ID0ga2lxLT5yZWdfdmFsX29mZnNbdG1wXTsKPj4+ICsJ fQo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3JlZ19vZmZzX2ZyZWUoc3Ry dWN0IGFtZGdwdV9raXEgKmtpcSwKPj4+ICsJCQkJIHVpbnQzMl90IG9mZnNldCkKPj4+ICt7Cj4+ PiArCXVpbnQzMl90IHRtcCA9IDA7Cj4+PiArCj4+PiArCXRtcCA9IChvZmZzZXQgLSBraXEtPnJl Z192YWxfb2Zmc1swXSkgPj4gMzsKPj4+ICsJaWYgKHRtcCA8IGtpcS0+bnVtX3Nsb3QpCj4+PiAr CQlfX2NsZWFyX2JpdCh0bXAsIGtpcS0+dXNlZCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCBhbWRn cHVfZ2Z4X2tpcV9sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIGJvb2wgcmVhZCkgewo+Pj4g KwlpbnQgcmV0cnkgPSBNQVhfS0lRX1JFR19UUlk7Cj4+PiArCj4+PiArCUJVR19PTihpbl9pbnRl cnJ1cHQoKSk7Cj4+PiArCXdoaWxlIChyZXRyeS0tID4gMCkgewo+Pj4gKwkJc3Bpbl9sb2NrKCZr aXEtPnJpbmdfbG9jayk7Cj4+PiArCQlpZiAoKGF0b21pYzY0X3JlYWQoJmtpcS0+c3VibWl0X2F2 YWlsKSA+IDApICYmCj4+PiArCQkgICAgKHJlYWQgPyBmaW5kX2ZpcnN0X3plcm9fYml0KGtpcS0+ dXNlZCwga2lxLT5udW1fc2xvdCkgPAo+Pj4gKwkJICAgICBraXEtPm51bV9zbG90IDogMSkpIHsK Pj4+ICsJCQkJYnJlYWs7Cj4+PiArCQl9IGVsc2Ugewo+Pj4gKwkJCXNwaW5fdW5sb2NrKCZraXEt PnJpbmdfbG9jayk7Cj4+PiArCQkJbXNsZWVwKDIpOwo+Pj4gKwkJCWNvbnRpbnVlOwo+Pj4gKwkJ fQo+Pj4gKwo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmIChyZXRyeSA+IDApCj4+PiArCQlyZXR1cm4g MDsKPj4+ICsJZWxzZQo+Pj4gKwkJcmV0dXJuIC1FVElNRTsKPj4+ICt9Cj4+PiArCj4+PiArdm9p ZCBhbWRncHVfZ2Z4X2tpcV91bmxvY2soc3RydWN0IGFtZGdwdV9raXEgKmtpcSkgewo+Pj4gKwlz cGluX3VubG9jaygma2lxLT5yaW5nX2xvY2spOwo+Pj4gK30KPj4+ICsKPj4+ICt2b2lkIGFtZGdw dV9nZnhfa2lxX2NvbnN1bWUoc3RydWN0IGFtZGdwdV9raXEgKmtpcSwgdWludDMyX3QgKm9mZnMp IHsKPj4+ICsJYXRvbWljNjRfZGVjKCZraXEtPnN1Ym1pdF9hdmFpbCk7Cj4+PiArCWlmIChvZmZz KQo+Pj4gKwkJYW1kZ3B1X2dmeF9raXFfcmVnX29mZnNfZ2V0KGtpcSwgb2Zmcyk7Cj4+PiArCj4+ PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShzdHJ1Y3QgYW1kZ3B1 X2tpcSAqa2lxLCB1aW50MzJfdCAqb2Zmcykgewo+Pj4gKwlhdG9taWM2NF9pbmMoJmtpcS0+c3Vi bWl0X2F2YWlsKTsKPj4+ICsJaWYgKG9mZnMpCj4+PiArCQlhbWRncHVfZ2Z4X2tpcV9yZWdfb2Zm c19mcmVlKGtpcSwgKm9mZnMpOyB9Cj4+PiArCj4+PiAgICAgaW50IGFtZGdwdV9nZnhfa2lxX2lu aXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAgICAJCQkgICAgIHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywKPj4+ICAgICAJCQkgICAgIHN0cnVjdCBhbWRncHVfaXJxX3Ny YyAqaXJxKQo+Pj4gICAgIHsKPj4+ICAgICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2 LT5nZngua2lxOwo+Pj4gLQlpbnQgciA9IDA7Cj4+PiArCWludCByID0gMCwgaSwgajsKPj4+ICAg ICAKPj4+ICAgICAJc3Bpbl9sb2NrX2luaXQoJmtpcS0+cmluZ19sb2NrKTsKPj4+ICAgICAKPj4+ IC0JciA9IGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KGFkZXYsICZraXEtPnJlZ192YWxfb2Zmcyk7Cj4+ PiAtCWlmIChyKQo+Pj4gLQkJcmV0dXJuIHI7Cj4+PiArCWZvciAoaSA9IDA7IGkgPCBNQVhfS0lR X1JSRUdfTlVNOyBpKyspIHsKPj4+ICsJCXIgPSBhbWRncHVfZGV2aWNlX3diX2dldChhZGV2LCAm a2lxLT5yZWdfdmFsX29mZnNbaV0pOwo+Pj4gKwkJaWYgKHIpIHsKPj4+ICsJCQlmb3IgKGogPSAw OyBqIDwgaTsgaisrKQo+Pj4gKwkJCQlhbWRncHVfZGV2aWNlX3diX2ZyZWUoYWRldiwga2lxLT5y ZWdfdmFsX29mZnNbal0pOwo+Pj4gKwkJCXJldHVybiByOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiAg ICAgCj4+PiAgICAgCXJpbmctPmFkZXYgPSBOVUxMOwo+Pj4gICAgIAlyaW5nLT5yaW5nX29iaiA9 IE5VTEw7Cj4+PiAgICAgCXJpbmctPnVzZV9kb29yYmVsbCA9IHRydWU7Cj4+PiAgICAgCXJpbmct PmRvb3JiZWxsX2luZGV4ID0gYWRldi0+ZG9vcmJlbGxfaW5kZXgua2lxOwo+Pj4gKwlraXEtPm51 bV9zbG90ID0gTUFYX0tJUV9SUkVHX05VTTsKPj4+ICsJbWVtc2V0KCZraXEtPnVzZWQsIDAsIHNp emVvZihraXEtPnVzZWQpKTsKPj4+ICsKPj4+ICAgICAKPj4+ICAgICAJciA9IGFtZGdwdV9nZnhf a2lxX2FjcXVpcmUoYWRldiwgcmluZyk7Cj4+PiAgICAgCWlmIChyKQo+Pj4gQEAgLTMyNSwxMyAr NDAxLDIwIEBAIGludCBhbWRncHVfZ2Z4X2tpcV9pbml0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4+PiAgICAgCQkJICAgICBBTURHUFVfUklOR19QUklPX0RFRkFVTFQpOwo+Pj4g ICAgIAlpZiAocikKPj4+ICAgICAJCWRldl93YXJuKGFkZXYtPmRldiwgIiglZCkgZmFpbGVkIHRv IGluaXQga2lxIHJpbmdcbiIsIHIpOwo+Pj4gKwllbHNlCj4+PiArCQlhdG9taWM2NF9zZXQoJmtp cS0+c3VibWl0X2F2YWlsLCByaW5nLT5yaW5nX3NpemUgLyA0IC8KPj4+ICsJCQkgICAgIChyaW5n LT5mdW5jcy0+YWxpZ25fbWFzayArIDEpKTsKPj4+ICAgICAKPj4+ICAgICAJcmV0dXJuIHI7Cj4+ PiAgICAgfQo+Pj4gICAgIAo+Pj4gICAgIHZvaWQgYW1kZ3B1X2dmeF9raXFfZnJlZV9yaW5nKHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZykgIHsKPj4+IC0JYW1kZ3B1X2RldmljZV93Yl9mcmVlKHJp bmctPmFkZXYsIHJpbmctPmFkZXYtPmdmeC5raXEucmVnX3ZhbF9vZmZzKTsKPj4+ICsJc3RydWN0 IGFtZGdwdV9raXEgKmtpcSA9ICZyaW5nLT5hZGV2LT5nZngua2lxOwo+Pj4gKwlpbnQgaSA9IDA7 Cj4+PiArCj4+PiArCWZvciAoaSA9IDA7IGkgPCBNQVhfS0lRX1JSRUdfTlVNOyBpKyspCj4+PiAr CQlhbWRncHVfZGV2aWNlX3diX2ZyZWUocmluZy0+YWRldiwga2lxLT5yZWdfdmFsX29mZnNbaV0p Owo+Pj4gICAgIAlhbWRncHVfcmluZ19maW5pKHJpbmcpOwo+Pj4gICAgIH0KPj4+ICAgICAKPj4+ IEBAIC02NzEsMTkgKzc1NCwyNCBAQCBpbnQgYW1kZ3B1X2dmeF9jcF9lY2NfZXJyb3JfaXJxKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCAgdWludDMyX3QgYW1kZ3B1X2tpcV9ycmVnKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcpICB7Cj4+PiAgICAgCXNpZ25lZCBs b25nIHIsIGNudCA9IDA7Cj4+PiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+PiAtCXVpbnQzMl90 IHNlcTsKPj4+ICsJdWludDMyX3Qgc2VxLCByZWdfdmFsX29mZnMgPSAwLCB2YWx1ZSA9IDA7Cj4+ PiAgICAgCXN0cnVjdCBhbWRncHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsKPj4+ICAgICAJ c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmtpcS0+cmluZzsKPj4+ICAgICAKPj4+ICAgICAJ QlVHX09OKCFyaW5nLT5mdW5jcy0+ZW1pdF9ycmVnKTsKPj4+ICAgICAKPj4+IC0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7Cj4+PiArCXIgPSBhbWRncHVfZ2Z4X2tp cV9sb2NrKGtpcSwgdHJ1ZSk7Cj4+PiArCWlmIChyKSB7Cj4+PiArCQlwcl9lcnIoImZhaWxlZCB0 byBsb2NrIGtpcVxuIik7Cj4+PiArCQlnb3RvIGtpcV9yZWFkX2V4aXQ7Cj4+PiArCX0KPj4+ICsK Pj4+ICsJYW1kZ3B1X2dmeF9raXFfY29uc3VtZShraXEsICZyZWdfdmFsX29mZnMpOwo+Pj4gICAg IAlhbWRncHVfcmluZ19hbGxvYyhyaW5nLCAzMik7Cj4+PiAtCWFtZGdwdV9yaW5nX2VtaXRfcnJl ZyhyaW5nLCByZWcpOwo+Pj4gKwlhbWRncHVfcmluZ19lbWl0X3JyZWcocmluZywgcmVnLCByZWdf dmFsX29mZnMpOwo+Pj4gICAgIAlhbWRncHVfZmVuY2VfZW1pdF9wb2xsaW5nKHJpbmcsICZzZXEp Owo+Pj4gICAgIAlhbWRncHVfcmluZ19jb21taXQocmluZyk7Cj4+PiAtCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7Cj4+PiArCWFtZGdwdV9nZnhfa2lxX3Vu bG9jayhraXEpOwo+Pj4gICAgIAo+Pj4gICAgIAlyID0gYW1kZ3B1X2ZlbmNlX3dhaXRfcG9sbGlu ZyhyaW5nLCBzZXEsIE1BWF9LSVFfUkVHX1dBSVQpOwo+Pj4gICAgIAo+Pj4gQEAgLTcwNyw5ICs3 OTUsMTQgQEAgdWludDMyX3QgYW1kZ3B1X2tpcV9ycmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCByZWcpCj4+PiAgICAgCWlmIChjbnQgPiBNQVhfS0lRX1JFR19UUlkpCj4+ PiAgICAgCQlnb3RvIGZhaWxlZF9raXFfcmVhZDsKPj4+ICAgICAKPj4+IC0JcmV0dXJuIGFkZXYt PndiLndiW2tpcS0+cmVnX3ZhbF9vZmZzXTsKPj4+ICsJbWIoKTsKPj4+ICsJdmFsdWUgPSBhZGV2 LT53Yi53YltyZWdfdmFsX29mZnNdOwo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwg JnJlZ192YWxfb2Zmcyk7Cj4+PiArCXJldHVybiB2YWx1ZTsKPj4+ICAgICAKPj4+ICAgICBmYWls ZWRfa2lxX3JlYWQ6Cj4+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCAmcmVnX3ZhbF9v ZmZzKTsKPj4+ICtraXFfcmVhZF9leGl0Ogo+Pj4gICAgIAlwcl9lcnIoImZhaWxlZCB0byByZWFk IHJlZzoleFxuIiwgcmVnKTsKPj4+ICAgICAJcmV0dXJuIH4wOwo+Pj4gICAgIH0KPj4+IEBAIC03 MTcsMTkgKzgxMCwyNCBAQCB1aW50MzJfdCBhbWRncHVfa2lxX3JyZWcoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHVpbnQzMl90IHJlZykgIHZvaWQgYW1kZ3B1X2tpcV93cmVnKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHYpICB7Cj4+PiAgICAg CXNpZ25lZCBsb25nIHIsIGNudCA9IDA7Cj4+PiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+PiAg ICAgCXVpbnQzMl90IHNlcTsKPj4+ICAgICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2 LT5nZngua2lxOwo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSAma2lxLT5yaW5n Owo+Pj4gICAgIAo+Pj4gICAgIAlCVUdfT04oIXJpbmctPmZ1bmNzLT5lbWl0X3dyZWcpOwo+Pj4g ICAgIAo+Pj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgma2lxLT5yaW5nX2xvY2ssIGZsYWdzKTsKPj4+ ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7Cj4+PiArCWlmIChyKSB7Cj4+ PiArCQlwcl9lcnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7Cj4+PiArCQlnb3RvIGtpcV93cml0 ZV9leGl0Owo+Pj4gKwl9Cj4+PiArCj4+PiArCWFtZGdwdV9nZnhfa2lxX2NvbnN1bWUoa2lxLCBO VUxMKTsKPj4+ICAgICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIpOwo+Pj4gICAgIAlhbWRn cHVfcmluZ19lbWl0X3dyZWcocmluZywgcmVnLCB2KTsKPj4+ICAgICAJYW1kZ3B1X2ZlbmNlX2Vt aXRfcG9sbGluZyhyaW5nLCAmc2VxKTsKPj4+ICAgICAJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcp Owo+Pj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOwo+ Pj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsKPj4+ICAgICAKPj4+ICAgICAJciA9IGFt ZGdwdV9mZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBNQVhfS0lRX1JFR19XQUlUKTsKPj4+ ICAgICAKPj4+IEBAIC03NTQsOCArODUyLDExIEBAIHZvaWQgYW1kZ3B1X2tpcV93cmVnKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHYpCj4+PiAgICAg CWlmIChjbnQgPiBNQVhfS0lRX1JFR19UUlkpCj4+PiAgICAgCQlnb3RvIGZhaWxlZF9raXFfd3Jp dGU7Cj4+PiAgICAgCj4+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ ICAgICAJcmV0dXJuOwo+Pj4gICAgIAo+Pj4gICAgIGZhaWxlZF9raXFfd3JpdGU6Cj4+PiArCWFt ZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ICtraXFfd3JpdGVfZXhpdDoKPj4+ ICAgICAJcHJfZXJyKCJmYWlsZWQgdG8gd3JpdGUgcmVnOiV4XG4iLCByZWcpOyAgfSBkaWZmIC0t Z2l0Cj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZnguaAo+Pj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmgKPj4+IGluZGV4IDYzNDc0Njgy OTAyNC4uYmIwNTU5NGMyN2UwIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2dmeC5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2Z4LmgKPj4+IEBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBraXFfcG00X2Z1bmNzIHsK Pj4+ICAgICAJaW50IGludmFsaWRhdGVfdGxic19zaXplOwo+Pj4gICAgIH07Cj4+PiAgICAgCj4+ PiArI2RlZmluZSBNQVhfS0lRX1JSRUdfTlVNIDY0Cj4+PiAgICAgc3RydWN0IGFtZGdwdV9raXEg ewo+Pj4gICAgIAl1NjQJCQllb3BfZ3B1X2FkZHI7Cj4+PiAgICAgCXN0cnVjdCBhbWRncHVfYm8J KmVvcF9vYmo7Cj4+PiBAQCAtMTAzLDcgKzEwNCwxMCBAQCBzdHJ1Y3QgYW1kZ3B1X2tpcSB7Cj4+ PiAgICAgCXN0cnVjdCBhbWRncHVfcmluZwlyaW5nOwo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X2ly cV9zcmMJaXJxOwo+Pj4gICAgIAljb25zdCBzdHJ1Y3Qga2lxX3BtNF9mdW5jcyAqcG1mOwo+Pj4g LQl1aW50MzJfdAkJCXJlZ192YWxfb2ZmczsKPj4+ICsJdWludDMyX3QJCXJlZ192YWxfb2Zmc1tN QVhfS0lRX1JSRUdfTlVNXTsKPj4+ICsJYXRvbWljNjRfdAkJc3VibWl0X2F2YWlsOwo+Pj4gKwl1 aW50MzJfdAkJbnVtX3Nsb3Q7Cj4+PiArCXVuc2lnbmVkIGxvbmcJCXVzZWRbRElWX1JPVU5EX1VQ KE1BWF9LSVFfUlJFR19OVU0sIEJJVFNfUEVSX0xPTkcpXTsKPj4+ICAgICB9Owo+Pj4gICAgIAo+ Pj4gICAgIC8qCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5o Cj4+PiBpbmRleCBmNjE2NjRlZTQ5NDAuLmIwZWE0ZjY3YTZlMSAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPj4+IEBAIC0xODEsNyArMTgxLDggQEAg c3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzIHsKPj4+ICAgICAJdm9pZCAoKmVuZF91c2UpKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZyk7Cj4+PiAgICAgCXZvaWQgKCplbWl0X3N3aXRjaF9idWZmZXIp IChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4gICAgIAl2b2lkICgqZW1pdF9jbnR4Y250 bCkgKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgZmxhZ3MpOwo+Pj4gLQl2b2lk ICgqZW1pdF9ycmVnKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZyk7Cj4+ PiArCXZvaWQgKCplbWl0X3JyZWcpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3Qg cmVnLAo+Pj4gKwkJCSAgdWludDMyX3QgcmVnX3ZhbF9vZmZzKTsKPj4+ICAgICAJdm9pZCAoKmVt aXRfd3JlZykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcsIHVpbnQzMl90 IHZhbCk7Cj4+PiAgICAgCXZvaWQgKCplbWl0X3JlZ193YWl0KShzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcsIHVpbnQzMl90IHJlZywKPj4+ICAgICAJCQkgICAgICB1aW50MzJfdCB2YWwsIHVpbnQz Ml90IG1hc2spOyBAQCAtMjY1LDcgKzI2Niw3IEBAIHN0cnVjdAo+Pj4gYW1kZ3B1X3JpbmcgeyAg I2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2hkcF9mbHVzaChyKSAociktPmZ1bmNzLT5lbWl0X2hk cF9mbHVzaCgocikpICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfc3dpdGNoX2J1ZmZlcihyKSAo ciktPmZ1bmNzLT5lbWl0X3N3aXRjaF9idWZmZXIoKHIpKQo+Pj4gICAgICNkZWZpbmUgYW1kZ3B1 X3JpbmdfZW1pdF9jbnR4Y250bChyLCBkKQo+Pj4gKHIpLT5mdW5jcy0+ZW1pdF9jbnR4Y250bCgo ciksIChkKSkgLSNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9ycmVnKHIsCj4+PiBkKSAociktPmZ1 bmNzLT5lbWl0X3JyZWcoKHIpLCAoZCkpCj4+PiArI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3Jy ZWcociwgZCwgbykgKHIpLT5mdW5jcy0+ZW1pdF9ycmVnKChyKSwKPj4+ICsoZCksCj4+PiArKG8p KQo+Pj4gICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF93cmVnKHIsIGQsIHYpIChyKS0+ZnVu Y3MtPmVtaXRfd3JlZygociksIChkKSwgKHYpKSAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3Jl Z193YWl0KHIsIGQsIHYsIG0pIChyKS0+ZnVuY3MtPmVtaXRfcmVnX3dhaXQoKHIpLCAoZCksICh2 KSwgKG0pKSAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JlZ193cml0ZV9yZWdfd2FpdChyLCBk MCwgZDEsIHYsIG0pIChyKS0+ZnVuY3MtPmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0KChyKSwgKGQw KSwgKGQxKSwgKHYpLCAobSkpIEBAIC0zMDgsNiArMzA5LDcgQEAgc3RhdGljIGlubGluZSB2b2lk IGFtZGdwdV9yaW5nX3dyaXRlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3Qgdikg IHsKPj4+ICAgICAJaWYgKHJpbmctPmNvdW50X2R3IDw9IDApCj4+PiAgICAgCQlEUk1fRVJST1Io ImFtZGdwdTogd3JpdGluZyBtb3JlIGR3b3JkcyB0byB0aGUgcmluZyB0aGFuCj4+PiBleHBlY3Rl ZCFcbiIpOwo+Pj4gKwo+Pj4gICAgIAlyaW5nLT5yaW5nW3JpbmctPndwdHIrKyAmIHJpbmctPmJ1 Zl9tYXNrXSA9IHY7Cj4+PiAgICAgCXJpbmctPndwdHIgJj0gcmluZy0+cHRyX21hc2s7Cj4+PiAg ICAgCXJpbmctPmNvdW50X2R3LS07Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZpcnQuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdmlydC5jCj4+PiBpbmRleCA4YzEwMDg0ZjQ0ZWYuLmRkNTRlYTgwMmE5YSAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMKPj4+IEBAIC01Niwx MyArNTYsMTkgQEAgdm9pZCBhbWRncHVfdmlydF9raXFfcmVnX3dyaXRlX3JlZ193YWl0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gICAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4g ICAgIAl1aW50MzJfdCBzZXE7Cj4+PiAgICAgCj4+PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZraXEt PnJpbmdfbG9jaywgZmxhZ3MpOwo+Pj4gKwlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEsIGZh bHNlKTsKPj4+ICsJaWYgKHIpIHsKPj4+ICsJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4i KTsKPj4+ICsJCWdvdG8gZmFpbGVkX2V4aXQ7Cj4+PiArCX0KPj4+ICsKPj4+ICsJYW1kZ3B1X2dm eF9raXFfY29uc3VtZShraXEsIE5VTEwpOwo+Pj4gICAgIAlhbWRncHVfcmluZ19hbGxvYyhyaW5n LCAzMik7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX2VtaXRfcmVnX3dyaXRlX3JlZ193YWl0KHJpbmcs IHJlZzAsIHJlZzEsCj4+PiAgICAgCQkJCQkgICAgcmVmLCBtYXNrKTsKPj4+ICAgICAJYW1kZ3B1 X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsKPj4+ICAgICAJYW1kZ3B1X3JpbmdfY29t bWl0KHJpbmcpOwo+Pj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZraXEtPnJpbmdfbG9jaywg ZmxhZ3MpOwo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsKPj4+ICAgICAKPj4+ICAg ICAJciA9IGFtZGdwdV9mZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBNQVhfS0lRX1JFR19X QUlUKTsKPj4+ICAgICAKPj4+IEBAIC04MCw5ICs4NiwxMiBAQCB2b2lkIGFtZGdwdV92aXJ0X2tp cV9yZWdfd3JpdGVfcmVnX3dhaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiAgICAg CWlmIChjbnQgPiBNQVhfS0lRX1JFR19UUlkpCj4+PiAgICAgCQlnb3RvIGZhaWxlZF9raXE7Cj4+ PiAgICAgCj4+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ICAgICAJ cmV0dXJuOwo+Pj4gICAgIAo+Pj4gICAgIGZhaWxlZF9raXE6Cj4+PiArCWFtZGdwdV9nZnhfa2lx X3Jlc3RvcmUoa2lxLCBOVUxMKTsKPj4+ICtmYWlsZWRfZXhpdDoKPj4+ICAgICAJcHJfZXJyKCJm YWlsZWQgdG8gd3JpdGUgcmVnICV4IHdhaXQgcmVnICV4XG4iLCByZWcwLCByZWcxKTsgIH0KPj4+ ICAgICAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEw XzAuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYwo+Pj4gaW5k ZXggMGEwM2UyYWQ1ZDk1Li43ODUzZGJjM2M4YmQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3YxMF8wLmMKPj4+IEBAIC03NTk0LDEwICs3NTk0LDEwIEBAIHN0YXRpYyB2 b2lkIGdmeF92MTBfMF9yaW5nX2VtaXRfZnJhbWVfY250bChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsIGJvb2wgc3RhcnQsCj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHYgfCBGUkFN RV9DTUQoc3RhcnQgPyAwIDogMSkpOyAgfQo+Pj4gICAgIAo+Pj4gLXN0YXRpYyB2b2lkIGdmeF92 MTBfMF9yaW5nX2VtaXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiB1aW50MzJf dCByZWcpCj4+PiArc3RhdGljIHZvaWQgZ2Z4X3YxMF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZywgdWludDMyX3QgcmVnLAo+Pj4gKwkJCQkgICAgIHVpbnQzMl90IHJl Z192YWxfb2ZmcykKPj4+ICAgICB7Cj4+PiAgICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gcmluZy0+YWRldjsKPj4+IC0Jc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngu a2lxOwo+Pj4gICAgIAo+Pj4gICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBB Q0tFVDNfQ09QWV9EQVRBLCA0KSk7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDAg fAkvKiBzcmM6IHJlZ2lzdGVyKi8KPj4+IEBAIC03NjA2LDkgKzc2MDYsOSBAQCBzdGF0aWMgdm9p ZCBnZnhfdjEwXzBfcmluZ19lbWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50 MzJfdCByZWcpCj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHJlZyk7Cj4+PiAgICAg CWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+Pj4gICAgIAlhbWRncHVfcmluZ193cml0ZShy aW5nLCBsb3dlcl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsKPj4+IC0JCQkJa2lxLT5yZWdf dmFsX29mZnMgKiA0KSk7Cj4+PiArCQkJCXJlZ192YWxfb2ZmcyAqIDQpKTsKPj4+ICAgICAJYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgdXBwZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArCj4+ PiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOwo+Pj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0 KSk7Cj4+PiAgICAgfQo+Pj4gICAgIAo+Pj4gICAgIHN0YXRpYyB2b2lkIGdmeF92MTBfMF9yaW5n X2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiB1aW50MzJfdCByZWcsIGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKPj4+IGluZGV4IGZjNmMyZjJiYzc2 Yy4uYmRiZDkyZDRmZTQ1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y4XzAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4 XzAuYwo+Pj4gQEAgLTYzODMsMTAgKzYzODMsMTAgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfcmlu Z19lbWl0X3BhdGNoX2NvbmRfZXhlYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVuc2lnbmUK Pj4+ICAgICAJCXJpbmctPnJpbmdbb2Zmc2V0XSA9IChyaW5nLT5yaW5nX3NpemUgPj4gMikgLSBv ZmZzZXQgKyBjdXI7ICB9Cj4+PiAgICAgCj4+PiAtc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfcmluZ19l bWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gdWludDMyX3QgcmVnKQo+Pj4g K3N0YXRpYyB2b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgcmVnLAo+Pj4gKwkJCQkgICAgdWludDMyX3QgcmVnX3ZhbF9vZmZzKQo+ Pj4gICAgIHsKPj4+ICAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2 Owo+Pj4gLQlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7Cj4+PiAgICAg Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RB VEEsIDQpKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCB8CS8qIHNyYzogcmVn aXN0ZXIqLwo+Pj4gQEAgLTYzOTUsOSArNjM5NSw5IEBAIHN0YXRpYyB2b2lkIGdmeF92OF8wX3Jp bmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgcmVnKQo+Pj4g ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCByZWcpOwo+Pj4gICAgIAlhbWRncHVfcmluZ193 cml0ZShyaW5nLCAwKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJf Yml0cyhhZGV2LT53Yi5ncHVfYWRkciArCj4+PiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkp Owo+Pj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0KSk7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKwo+Pj4gLQkJCQlraXEtPnJl Z192YWxfb2ZmcyAqIDQpKTsKPj4+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOwo+Pj4gICAgIH0K Pj4+ICAgICAKPj4+ICAgICBzdGF0aWMgdm9pZCBnZnhfdjhfMF9yaW5nX2VtaXRfd3JlZyhzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiB1aW50MzJfdCByZWcsIGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMKPj4+IGluZGV4IDg0ZmNmODQyMzE2ZC4uZjdkZDEwMzY5ODZl IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwo+Pj4gQEAgLTQw NDIsMTQgKzQwNDIsMjAgQEAgc3RhdGljIGludCBnZnhfdjlfMF9zb2Z0X3Jlc2V0KHZvaWQgKmhh bmRsZSkgIHN0YXRpYyB1aW50NjRfdCBnZnhfdjlfMF9raXFfcmVhZF9jbG9jayhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikgIHsKPj4+ICAgICAJc2lnbmVkIGxvbmcgciwgY250ID0gMDsKPj4+ IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+IC0JdWludDMyX3Qgc2VxOwo+Pj4gKwl1aW50MzJf dCBzZXEsIHJlZ192YWxfb2ZmczsKPj4+ICsJdWludDY0X3QgdmFsdWUgPSAwOwo+Pj4gICAgIAlz dHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7Cj4+PiAgICAgCXN0cnVjdCBh bWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7Cj4+PiAgICAgCj4+PiAgICAgCUJVR19PTigh cmluZy0+ZnVuY3MtPmVtaXRfcnJlZyk7Cj4+PiAgICAgCj4+PiAtCXNwaW5fbG9ja19pcnFzYXZl KCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOwo+Pj4gKwlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhr aXEsIHRydWUpOwo+Pj4gKwlpZiAocikgewo+Pj4gKwkJcHJfZXJyKCJmYWlsZWQgdG8gbG9jayBr aXFcbiIpOwo+Pj4gKwkJZ290byBmYWlsZWRfa2lxX2V4aXQ7Cj4+PiArCX0KPj4+ICsKPj4+ICsJ YW1kZ3B1X2dmeF9raXFfY29uc3VtZShraXEsICZyZWdfdmFsX29mZnMpOwo+Pj4gICAgIAlhbWRn cHVfcmluZ19hbGxvYyhyaW5nLCAzMik7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs IFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RBVEEsIDQpKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3Jp dGUocmluZywgOSB8CS8qIHNyYzogcmVnaXN0ZXIqLwo+Pj4gQEAgLTQwNTksMTIgKzQwNjUsMTIg QEAgc3RhdGljIHVpbnQ2NF90IGdmeF92OV8wX2tpcV9yZWFkX2Nsb2NrKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQo+Pj4gICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKPj4+ICAg ICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIGxvd2VyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKwo+Pj4gLQkJCQlraXEtPnJl Z192YWxfb2ZmcyAqIDQpKTsKPj4+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOwo+Pj4gICAgIAlh bWRncHVfcmluZ193cml0ZShyaW5nLCB1cHBlcl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsK Pj4+IC0JCQkJa2lxLT5yZWdfdmFsX29mZnMgKiA0KSk7Cj4+PiArCQkJCXJlZ192YWxfb2ZmcyAq IDQpKTsKPj4+ICAgICAJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsKPj4+ ICAgICAJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOwo+Pj4gLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOwo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2so a2lxKTsKPj4+ICAgICAKPj4+ICAgICAJciA9IGFtZGdwdV9mZW5jZV93YWl0X3BvbGxpbmcocmlu Zywgc2VxLCBNQVhfS0lRX1JFR19XQUlUKTsKPj4+ICAgICAKPj4+IEBAIC00MDg4LDEwICs0MDk0 LDE0IEBAIHN0YXRpYyB1aW50NjRfdCBnZnhfdjlfMF9raXFfcmVhZF9jbG9jayhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKPj4+ICAgICAJaWYgKGNudCA+IE1BWF9LSVFfUkVHX1RSWSkKPj4+ ICAgICAJCWdvdG8gZmFpbGVkX2tpcV9yZWFkOwo+Pj4gICAgIAo+Pj4gLQlyZXR1cm4gKHVpbnQ2 NF90KWFkZXYtPndiLndiW2tpcS0+cmVnX3ZhbF9vZmZzXSB8Cj4+PiAtCQkodWludDY0X3QpYWRl di0+d2Iud2Jba2lxLT5yZWdfdmFsX29mZnMgKyAxIF0gPDwgMzJVTEw7Cj4+PiArCXZhbHVlID0g KHVpbnQ2NF90KWFkZXYtPndiLndiW3JlZ192YWxfb2Zmc10gfAo+Pj4gKwkJKHVpbnQ2NF90KWFk ZXYtPndiLndiW3JlZ192YWxfb2ZmcyArIDEgXSA8PCAzMlVMTDsKPj4+ICAgICAKPj4+ICsJYW1k Z3B1X2dmeF9raXFfcmVzdG9yZShraXEsICZyZWdfdmFsX29mZnMpOwo+Pj4gKwlyZXR1cm4gdmFs dWU7Cj4+PiAgICAgZmFpbGVkX2tpcV9yZWFkOgo+Pj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3Jl KGtpcSwgJnJlZ192YWxfb2Zmcyk7Cj4+PiArZmFpbGVkX2tpcV9leGl0Ogo+Pj4gICAgIAlwcl9l cnIoImZhaWxlZCB0byByZWFkIGdwdSBjbG9ja1xuIik7Cj4+PiAgICAgCXJldHVybiB+MDsKPj4+ ICAgICB9Cj4+PiBAQCAtNTQ4MiwxMCArNTQ5MiwxMCBAQCBzdGF0aWMgdm9pZCBnZnhfdjlfMF9y aW5nX2VtaXRfcGF0Y2hfY29uZF9leGVjKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWdu ZQo+Pj4gICAgIAkJcmluZy0+cmluZ1tvZmZzZXRdID0gKHJpbmctPnJpbmdfc2l6ZT4+MikgLSBv ZmZzZXQgKyBjdXI7ICB9Cj4+PiAgICAgCj4+PiAtc3RhdGljIHZvaWQgZ2Z4X3Y5XzBfcmluZ19l bWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gdWludDMyX3QgcmVnKQo+Pj4g K3N0YXRpYyB2b2lkIGdmeF92OV8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgcmVnLAo+Pj4gKwkJCQkgICAgdWludDMyX3QgcmVnX3ZhbF9vZmZzKQo+ Pj4gICAgIHsKPj4+ICAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2 Owo+Pj4gLQlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7Cj4+PiAgICAg Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RB VEEsIDQpKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCB8CS8qIHNyYzogcmVn aXN0ZXIqLwo+Pj4gQEAgLTU0OTQsOSArNTUwNCw5IEBAIHN0YXRpYyB2b2lkIGdmeF92OV8wX3Jp bmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgcmVnKQo+Pj4g ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCByZWcpOwo+Pj4gICAgIAlhbWRncHVfcmluZ193 cml0ZShyaW5nLCAwKTsKPj4+ICAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJf Yml0cyhhZGV2LT53Yi5ncHVfYWRkciArCj4+PiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkp Owo+Pj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0KSk7Cj4+PiAgICAgCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKwo+Pj4gLQkJCQlraXEtPnJl Z192YWxfb2ZmcyAqIDQpKTsKPj4+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOwo+Pj4gICAgIH0K Pj4+ICAgICAKPj4+ICAgICBzdGF0aWMgdm9pZCBnZnhfdjlfMF9yaW5nX2VtaXRfd3JlZyhzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiB1aW50MzJfdCByZWcsIGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjEwXzAuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nbWNfdjEwXzAuYwo+Pj4gaW5kZXggMzBiNzVkNzllZmRiLi42YjRkYzBlZDRm ZmYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjEwXzAu Ywo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3YxMF8wLmMKPj4+IEBA IC00MjIsMjAgKzQyMiwyOCBAQCBzdGF0aWMgaW50IGdtY192MTBfMF9mbHVzaF9ncHVfdGxiX3Bh c2lkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gICAgIAlzdHJ1Y3QgYW1kZ3B1X2tp cSAqa2lxID0gJmFkZXYtPmdmeC5raXE7Cj4+PiAgICAgCj4+PiAgICAgCWlmIChhbWRncHVfZW11 X21vZGUgPT0gMCAmJiByaW5nLT5zY2hlZC5yZWFkeSkgewo+Pj4gLQkJc3Bpbl9sb2NrKCZhZGV2 LT5nZngua2lxLnJpbmdfbG9jayk7Cj4+PiArCQlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEs IGZhbHNlKTsKPj4+ICsJCWlmIChyKSB7Cj4+PiArCQkJcHJfZXJyKCJmYWlsZWQgdG8gbG9jayBr aXFcbiIpOwo+Pj4gKwkJCXJldHVybiAtRVRJTUU7Cj4+PiArCQl9Cj4+PiArCj4+PiAgICAgCQkv KiAyIGR3b3JkcyBmbHVzaCArIDggZHdvcmRzIGZlbmNlICovCj4+PiAgICAgCQlhbWRncHVfcmlu Z19hbGxvYyhyaW5nLCBraXEtPnBtZi0+aW52YWxpZGF0ZV90bGJzX3NpemUgKyA4KTsKPj4+ICsJ CWFtZGdwdV9nZnhfa2lxX2NvbnN1bWUoa2lxLCBOVUxMKTsKPj4+ICAgICAJCWtpcS0+cG1mLT5r aXFfaW52YWxpZGF0ZV90bGJzKHJpbmcsCj4+PiAgICAgCQkJCQlwYXNpZCwgZmx1c2hfdHlwZSwg YWxsX2h1Yik7Cj4+PiAgICAgCQlhbWRncHVfZmVuY2VfZW1pdF9wb2xsaW5nKHJpbmcsICZzZXEp Owo+Pj4gICAgIAkJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOwo+Pj4gLQkJc3Bpbl91bmxvY2so JmFkZXYtPmdmeC5raXEucmluZ19sb2NrKTsKPj4+ICsJCWFtZGdwdV9nZnhfa2lxX3VubG9jayhr aXEpOwo+Pj4gICAgIAkJciA9IGFtZGdwdV9mZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBh ZGV2LT51c2VjX3RpbWVvdXQpOwo+Pj4gICAgIAkJaWYgKHIgPCAxKSB7Cj4+PiAgICAgCQkJRFJN X0VSUk9SKCJ3YWl0IGZvciBraXEgZmVuY2UgZXJyb3I6ICVsZC5cbiIsIHIpOwo+Pj4gKwkJCWFt ZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBmYWxzZSk7Cj4+PiAgICAgCQkJcmV0dXJuIC1FVElN RTsKPj4+ICAgICAJCX0KPj4+ICAgICAKPj4+ICsJCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lx LCBOVUxMKTsKPj4+ICAgICAJCXJldHVybiAwOwo+Pj4gICAgIAl9Cj4+PiAgICAgCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jCj4+PiBpbmRleCBmZWNkYmM0NzE5ODMu LjYyMzg3MDJjODBiNCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192OV8wLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8w LmMKPj4+IEBAIC02MTMsNyArNjEzLDEzIEBAIHN0YXRpYyBpbnQgZ21jX3Y5XzBfZmx1c2hfZ3B1 X3RsYl9wYXNpZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAgICAJCWlmICh2ZWdh MjBfeGdtaV93YSkKPj4+ICAgICAJCQluZHcgKz0ga2lxLT5wbWYtPmludmFsaWRhdGVfdGxic19z aXplOwo+Pj4gICAgIAo+Pj4gLQkJc3Bpbl9sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbG9jayk7 Cj4+PiArCQlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEsIGZhbHNlKTsKPj4+ICsJCWlmIChy KSB7Cj4+PiArCQkJcHJfZXJyKCJmYWlsZWQgdG8gbG9jayBraXFcbiIpOwo+Pj4gKwkJCXJldHVy biAtRVRJTUU7Cj4+PiArCQl9Cj4+PiArCj4+PiArCQlhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKGtp cSwgTlVMTCk7Cj4+PiAgICAgCQkvKiAyIGR3b3JkcyBmbHVzaCArIDggZHdvcmRzIGZlbmNlICov Cj4+PiAgICAgCQlhbWRncHVfcmluZ19hbGxvYyhyaW5nLCBuZHcpOwo+Pj4gICAgIAkJaWYgKHZl Z2EyMF94Z21pX3dhKQo+Pj4gQEAgLTYyMywxMyArNjI5LDE1IEBAIHN0YXRpYyBpbnQgZ21jX3Y5 XzBfZmx1c2hfZ3B1X3RsYl9wYXNpZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAg ICAJCQkJCXBhc2lkLCBmbHVzaF90eXBlLCBhbGxfaHViKTsKPj4+ICAgICAJCWFtZGdwdV9mZW5j ZV9lbWl0X3BvbGxpbmcocmluZywgJnNlcSk7Cj4+PiAgICAgCQlhbWRncHVfcmluZ19jb21taXQo cmluZyk7Cj4+PiAtCQlzcGluX3VubG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2spOwo+Pj4g KwkJYW1kZ3B1X2dmeF9raXFfdW5sb2NrKGtpcSk7Cj4+PiAgICAgCQlyID0gYW1kZ3B1X2ZlbmNl X3dhaXRfcG9sbGluZyhyaW5nLCBzZXEsIGFkZXYtPnVzZWNfdGltZW91dCk7Cj4+PiAgICAgCQlp ZiAociA8IDEpIHsKPj4+ICAgICAJCQlEUk1fRVJST1IoIndhaXQgZm9yIGtpcSBmZW5jZSBlcnJv cjogJWxkLlxuIiwgcik7Cj4+PiArCQkJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsIE5VTEwp Owo+Pj4gICAgIAkJCXJldHVybiAtRVRJTUU7Cj4+PiAgICAgCQl9Cj4+PiAgICAgCj4+PiArCQlh bWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7Cj4+PiAgICAgCQlyZXR1cm4gMDsKPj4+ ICAgICAJfQo+Pj4gICAgIAo+Pj4gLS0KPj4+IDIuMTcuMQo+Pj4KPj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QK Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9uYW0xMS5zYWZlbGlu a3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGbGlzdHMuZnJlZWRl c2t0b3Aub3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGYW1kLWdmeCZhbXA7ZGF0YT0wMiU3QzAx JTdDWWludGlhbi5UYW8lNDBhbWQuY29tJTdDMTZkNWNhZWFiMzQ0NDc4YTM5NTgwOGQ3ZTY5MDcw ZDMlN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4MmQ5OTRlMTgzZCU3QzAlN0MwJTdDNjM3MjMxMzgw MzY2NTU2NTkzJmFtcDtzZGF0YT1tUm5SemxTbEZ1ZmVIeXRQbUNMaktsU29uMlY2U1NTQyUyRnh4 OWM1NUYyZ1UlM0QmYW1wO3Jlc2VydmVkPTAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo=