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 EF78CC55189 for ; Wed, 22 Apr 2020 07:23:17 +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 B658D20738 for ; Wed, 22 Apr 2020 07:23:17 +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="KM1hFj58" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B658D20738 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 5E26E6E340; Wed, 22 Apr 2020 07:23:17 +0000 (UTC) Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690054.outbound.protection.outlook.com [40.107.69.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A8E16E340 for ; Wed, 22 Apr 2020 07:23:16 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fEz139N7IkMzgMdw07WvTEQ+VLSy8Nb4m9ZfkRjK0jSlbQY5vrCcuysuUePgxOmIioe9pHngeTv9uBpQYGqb5KXH/t9n5GfZC3e7tedn34EGgPgRiJzPRpB96Q1lkqsq16pS8Fl1lZrMHZjCrR7JrPuVeIpFYxBjHlO+xRZuNmosOivDKrQICwjK8cAXs3Vu0yQ+qmhmMwTfisX1wPlr3SXvDSsDmLwiryG+iQZyp4EP97gJQ/W/jkWaHqe8ac2d8Rq2F2H2Sdj6cpUYCduf8kmFEDDY3pIcD4f8n7RSf4HvP/CSA0RteAykCa840gDItm27+HGbg38ejnhskimISw== 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=HjFJSDw988FAWzbpvJhs7Vl0BFEE9TBC0RGiG+pWGBs=; b=kn9IrJrp7nfVgU/N3hFOa3qw9x83Te5cqZqnIqSRswiRc/Zt0h6khXUTpDy2ZsUskh55ml82TGSsd1MTaSr2TvGMQftAHexYI+sLD4a0ZOhgM3sA6CVXX9iD8INdPHNcwdv+EqtoKHBygLFSPMxW833B2zK5eGKz1jYapO6QFmcAEgciuEAON8E4JtUEBIpfalAG3k5RY9o37NpaZb/Z5pk3uPI3JanD9IpFM/FGzeNkVqQVp3P7XtD0Vyop1tFrpxVHkretJzoyMTT2V63YrpA94RL4Nc4Mc/cNAj5gSvQxcJfeTejW7Sc5HUXxPaw1OtOK+34uhXKzW2SdKCPj9w== 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=HjFJSDw988FAWzbpvJhs7Vl0BFEE9TBC0RGiG+pWGBs=; b=KM1hFj58yzNwztkH4o1eyQeXxdb/msxdvNJaMgfxmx3ZuFlirK5k4LoPPAA+/SvmRY6bdikUoMMB+NiPH7jtaHdX2ISKQdhvD6J/8Hn6Iet7keSJJy9u/JlXXh7+PXtAnHGJgwehOu5D/Us10QgBdDEPBbU6HcR7X/ZzJyYojB4= 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 DM6PR12MB2875.namprd12.prod.outlook.com (2603:10b6:5:15c::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 07:23:14 +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:23:14 +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> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <9ce5395a-aebf-f205-5237-5fd4c40a6449@amd.com> Date: Wed, 22 Apr 2020 09:23:08 +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: AM3PR04CA0147.eurprd04.prod.outlook.com (2603:10a6:207::31) 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 AM3PR04CA0147.eurprd04.prod.outlook.com (2603:10a6:207::31) 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:23:12 +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: d5ff7c7f-1135-4e32-2861-08d7e68e04ee X-MS-TrafficTypeDiagnostic: DM6PR12MB2875:|DM6PR12MB2875: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; 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)(376002)(366004)(39860400002)(346002)(396003)(136003)(186003)(66476007)(2616005)(2906002)(30864003)(66946007)(86362001)(16526019)(4326008)(53546011)(8936002)(81156014)(8676002)(66556008)(5660300002)(478600001)(6636002)(110136005)(31696002)(36756003)(52116002)(6486002)(6666004)(316002)(31686004); 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: 66oET9OCE1Z/jb4+ZC25H9LGe41GS7s+J8DT9gWn5UbGwV1Yb4OjhLDOqNus9QvRb+ADTBHN+EeVDXhCXz6OURliT35UAtstHmRDZOxBzf/KhsR891zENB6pkMrI8s68EIgJr3DgSS3vtaAR4p5zIY4OGUw8U5jfl3pWV/dQ2QjVZtbXf/rb+CArE8anI3vnN8ANSr4K8Jab/HNY1M+uoI7S5CxaefGX3+LSGOqcGrSo4gUeZBo1Rcrb+YzensW66O1cQyO/6f4fYwNhac8dITWkO1V+cxjALCM/1NW/DQ4f0f6x1EHE0lXZ2TYCrJ1yxEChh9ocT3wNrHFwrJumxjn1jyGtri8IH36600Q2OUah4IHAgseM/LH8ONuRQIkzSg7w+Z4KTUEd5bExOIlEI9ymEX1JbFZRUy9mdwi94jRJjxFGjAewnldsqfQ7/EnU X-MS-Exchange-AntiSpam-MessageData: EpXxt6J2+xqNPzsfdU9xJXo46SA5pb7aZmAkRloldCKvjFQ30nXGD7whLtZqQUzryH8yKh9NK5VFbhb68Tdmn38+rgL9e5R/0hcwHge+epAYmSssSThwEMAi2ysJjh1rsnvHQaAs/gE1xfJdqNO4ohkoXW7iWvszwtJ9f218uVkyT5Tb88p0uwp5u+oyjUi3hXbrzqnckbHBME5myul3UbWluON9Qq2Kax7gChtLy+/JDy6fsvg1Jyhj+mS6Hs3Scyn5TW9kVCqmQ4t//PpyxBe6sgN5+b434N87t3/x/BGVpt9XFi0MglAA/zrrAfIFD+zm4+ojVGCxOJLcrl40IRizkHa5O5HaJrDpTVLz/4a3mX6f9Ny8MUT0D11u9eU4gDN2vw3zR1oZzGS5+Sv1j+uw/vJStg5+GKZmwThnhkyJdWQ4KoN/qb43KBN4vYoS3YFQ4QDZSUlLNKblenKvIdmYncwQfVlDR0onxN3XFPe4pJXCkTXIFeuCxtWPfUaC0yR14AO0EvMLQy2/9xRQOPK6I8RSoanqKwTxrXS3qaYF2FtfKRJzdONGZWPpKLG4bCtSllN3XBHXZW1BD1TKSXXbwK+xfAQervRqJjtTyu8+CzLjrQB4ORkrFxJFop89z4LTraeg0AuOtLev+bGKAKiT+3eS5rcsYWYDayh67KZxff4r5Wjuc3Pbs5/bMUzvlhFtWWJ0TtMSpF5l3ZmLGHbm7dzY9o/I1bvfECogzCvav9XHvJk+Z6sK3OeTNyTpkLPXzNhCf9O3pcSrurRQ3hCtyRovWHlyDd9fXbVI0V7VtdrNApIZZQFIoF6sVl56lQCWNKLRhCpIG7CZm7nW9Cj0yOKOejlNMdt40SeLLK0= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5ff7c7f-1135-4e32-2861-08d7e68e04ee X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2020 07:23:14.1732 (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: mlO8rQHiHvu75paDzI0GqzdQP0msQdYpowrmNOcGr3E9DA29RxVdCXL3gzesatrH X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2875 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="gbk"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" PiBCVUdfT04oaW5faW50ZXJydXB0KCkpOwpUaGF0IHdvbid0IHdvcmsgbGlrZSB0aGlzLiBUaGUg S0lRIGlzIGFsc28gdXNlZCBpbiBpbnRlcnJ1cHQgY29udGV4dCBpbiAKdGhlIGRyaXZlciwgdGhh dCdzIHdoeSB3ZSB1c2VkIHNwaW5fbG9ja19pcnFzYXZlKCkuCgpBbmQgSSB3b3VsZCBlaXRoZXIg c2F5IHRoYXQgd2Ugc2hvdWxkIHVzZSB0aGUgdHJpY2sgd2l0aCB0aGUgTk9QIHRvIApyZXNlcnZl IHNwYWNlIG9uIHRoZSByaW5nIGJ1ZmZlciBvciBjYWxsIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkg Zm9yIGVhY2ggCnJlYWQuIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgYWxzbyB1c2VzIGZpbmRfZmly c3RfemVyb19iaXQoKSBhbmQgc2hvdWxkIAp3b3JrIGVxdWFsbHkgd2VsbC4KCllvdSBhbHNvIGRv bid0IG5lZWQgdG8gd29ycnkgdG8gbXVjaCBhYm91dCBvdmVyZmxvd2luZyB0aGUgd2IgYXJlYS4g ClNpbmNlIHdlIHJ1biBpbiBhbiBhdG9taWMgY29udGV4dCB3ZSBjYW4gaGF2ZSBhdCBtb3N0IHRo ZSBudW1iZXIgb2YgQ1BVIAppbiB0aGUgc3lzdGVtICsgaW50ZXJydXB0IGNvbnRleHQgaGVyZS4K ClJlZ2FyZHMsCkNocmlzdGlhbi4KCkFtIDIyLjA0LjIwIHVtIDA5OjExIHNjaHJpZWIgVGFvLCBZ aW50aWFuOgo+IEFkZCBGZWxpeCBhbmQgU2hhb3l1bgo+Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0KPiBGcm9tOiBZaW50aWFuIFRhbyA8eXR0YW9AYW1kLmNvbT4KPiBTZW50OiAyMDIwxOo0 1MIyMsjVIDEyOjQyCj4gVG86IEtvZW5pZywgQ2hyaXN0aWFuIDxDaHJpc3RpYW4uS29lbmlnQGFt ZC5jb20+OyBMaXUsIE1vbmsgPE1vbmsuTGl1QGFtZC5jb20+Cj4gQ2M6IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnOyBUYW8sIFlpbnRpYW4gPFlpbnRpYW4uVGFvQGFtZC5jb20+Cj4gU3Vi amVjdDogW1BBVENIXSBkcm0vYW1kZ3B1OiByZWZpbmUga2lxIGFjY2VzcyByZWdpc3Rlcgo+Cj4g QWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGtpcSBhY2Nlc3MgcmVnaXN0ZXIgbWV0aG9kLCB0aGVy ZSB3aWxsIGJlIHJhY2UgY29uZGl0aW9uIHdoZW4gdXNpbmcgS0lRIHRvIHJlYWQgcmVnaXN0ZXIg aWYgbXVsdGlwbGUgY2xpZW50cyB3YW50IHRvIHJlYWQgYXQgc2FtZSB0aW1lIGp1c3QgbGlrZSB0 aGUgZXhwYW1wbGUgYmVsb3c6Cj4gMS4gY2xpZW50LUEgc3RhcnQgdG8gcmVhZCBSRUctMCB0aHJv Z3VoIEtJUSAyLiBjbGllbnQtQSBwb2xsIHRoZSBzZXFuby0wIDMuIGNsaWVudC1CIHN0YXJ0IHRv IHJlYWQgUkVHLTEgdGhyb3VnaCBLSVEgNC4gY2xpZW50LUIgcG9sbCB0aGUgc2Vxbm8tMSA1LiB0 aGUga2lxIGNvbXBsZXRlIHRoZXNlIHR3byByZWFkIG9wZXJhdGlvbiA2LiBjbGllbnQtQSB0byBy ZWFkIHRoZSByZWdpc3RlciBhdCB0aGUgd2IgYnVmZmVyIGFuZAo+ICAgICBnZXQgUkVHLTEgdmFs dWUKPgo+IEFuZCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2xpZW50cyB0byBmcmVxdWVudGx5IHdy aXRlIHJlZ2lzdGVycyB0aHJvdWdoIEtJUSB3aGljaCBtYXkgcmFpc2UgdGhlIEtJUSByaW5nIGJ1 ZmZlciBvdmVyd3JpdHRlbiBwcm9ibGVtLgo+Cj4gVGhlcmVmb3JlLCBhbGxvY2F0ZSBmaXhlZCBu dW1iZXIgd2Igc2xvdCBmb3IgcnJlZyB1c2UgYW5kIGxpbWl0IHRoZSBzdWJtaXQgbnVtYmVyIHdo aWNoIGRlcGVuZHMgb24gdGhlIGtpcSByaW5nX3NpemUgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUg b3ZlcndyaXR0ZW4gcHJvYmxlbS4KPgo+IFNpZ25lZC1vZmYtYnk6IFlpbnRpYW4gVGFvIDx5dHRh b0BhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmgg ICAgICAgICAgIHwgICA3ICstCj4gICAuLi4vZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n ZnhfdjEwLmMgICAgfCAgMTIgKy0KPiAgIC4uLi9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ft ZGtmZF9nZnhfdjkuYyB8ICAxMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2dmeC5jICAgICAgIHwgMTI5ICsrKysrKysrKysrKysrKystLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dmeC5oICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oICAgICAgfCAgIDYgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMgICAgICB8ICAxMyArLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMgICAgICAgIHwgICA4ICstCj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jICAgICAgICAgfCAgIDggKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgICAgICAgICB8ICAzNCArKystLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3YxMF8wLmMgICAgICAgIHwgIDEyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jICAgICAgICAgfCAgMTIg Ky0KPiAgIDEyIGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4gaW5kZXggNGUxZDRjZmU3YTlm Li40NTMwZTBkZTQyNTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+IEBA IC01MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9zZXRfaWJfdmFsdWUo c3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gICAvKgo+ICAgICogV3JpdGViYWNrCj4gICAg Ki8KPiAtI2RlZmluZSBBTURHUFVfTUFYX1dCIDEyOAkvKiBSZXNlcnZlIGF0IG1vc3QgMTI4IFdC IHNsb3RzIGZvciBhbWRncHUtb3duZWQgcmluZ3MuICovCj4gKyNkZWZpbmUgQU1ER1BVX01BWF9X QiAyNTYJLyogUmVzZXJ2ZSBhdCBtb3N0IDI1NiBXQiBzbG90cyBmb3IgYW1kZ3B1LW93bmVkIHJp bmdzLiAqLwo+ICAgCj4gICBzdHJ1Y3QgYW1kZ3B1X3diIHsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Jv CSp3Yl9vYmo7Cj4gQEAgLTEwMjgsNiArMTAyOCwxMSBAQCBib29sIGFtZGdwdV9kZXZpY2VfaGFz X2RjX3N1cHBvcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+ICAgCj4gICBpbnQgZW11 X3NvY19hc2ljX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+ICAgCj4gK2ludCBh bWRncHVfZ2Z4X2tpcV9sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIGJvb2wgcmVhZCk7IHZv aWQKPiArYW1kZ3B1X2dmeF9raXFfdW5sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEpOwo+ICsK PiArdm9pZCBhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIHVp bnQzMl90ICpvZmZzKTsKPiArdm9pZCBhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKHN0cnVjdCBhbWRn cHVfa2lxICpraXEsIHVpbnQzMl90ICpvZmZzKTsKPiAgIC8qCj4gICAgKiBSZWdpc3RlcnMgcmVh ZCAmIHdyaXRlIGZ1bmN0aW9ucy4KPiAgICAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92MTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3YxMC5jCj4gaW5kZXggNjkxYzg5NzA1YmNkLi4w MzRjOWY0MTY0OTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2FtZGtmZF9nZnhfdjEwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkX2dmeF92MTAuYwo+IEBAIC0zMDksNiArMzA5LDcgQEAgc3RhdGljIGludCBr Z2RfaGlxX21xZF9sb2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKPiAgIAkJCSAg ICB1aW50MzJfdCBkb29yYmVsbF9vZmYpCj4gICB7Cj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2QpOwo+ICsJc3RydWN0IGFtZGdwdV9raXEgKmtp cSA9ICZhZGV2LT5nZngua2lxOwo+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqa2lxX3JpbmcgPSAm YWRldi0+Z2Z4LmtpcS5yaW5nOwo+ICAgCXN0cnVjdCB2MTBfY29tcHV0ZV9tcWQgKm07Cj4gICAJ dWludDMyX3QgbWVjLCBwaXBlOwo+IEBAIC0zMjQsMTMgKzMyNSwxOSBAQCBzdGF0aWMgaW50IGtn ZF9oaXFfbXFkX2xvYWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLAo+ICAgCXByX2Rl YnVnKCJrZmQ6IHNldCBISVEsIG1lYzolZCwgcGlwZTolZCwgcXVldWU6JWQuXG4iLAo+ICAgCQkg bWVjLCBwaXBlLCBxdWV1ZV9pZCk7Cj4gICAKPiAtCXNwaW5fbG9jaygmYWRldi0+Z2Z4LmtpcS5y aW5nX2xvY2spOwo+ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7Cj4gKwlp ZiAocikgewo+ICsJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4iKTsKPiArCQlnb3RvIG91 dF91bmxvY2s7Cj4gKwl9Cj4gKwo+ICAgCXIgPSBhbWRncHVfcmluZ19hbGxvYyhraXFfcmluZywg Nyk7Cj4gICAJaWYgKHIpIHsKPiAgIAkJcHJfZXJyKCJGYWlsZWQgdG8gYWxsb2MgS0lRICglZCku XG4iLCByKTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+ICAgCX0KPiAgIAo+ICsJYW1kZ3B1X2dm eF9raXFfY29uc3VtZShraXEsIE5VTEwpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKGtpcV9yaW5n LCBQQUNLRVQzKFBBQ0tFVDNfTUFQX1FVRVVFUywgNSkpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRl KGtpcV9yaW5nLAo+ICAgCQkJICBQQUNLRVQzX01BUF9RVUVVRVNfUVVFVUVfU0VMKDApIHwgLyog UXVldWVfU2VsICovIEBAIC0zNTAsOCArMzU3LDkgQEAgc3RhdGljIGludCBrZ2RfaGlxX21xZF9s b2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKPiAgIAlhbWRncHVfcmluZ193cml0 ZShraXFfcmluZywgbS0+Y3BfaHFkX3BxX3dwdHJfcG9sbF9hZGRyX2hpKTsKPiAgIAlhbWRncHVf cmluZ19jb21taXQoa2lxX3JpbmcpOwo+ICAgCj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtp cSwgTlVMTCk7Cj4gICBvdXRfdW5sb2NrOgo+IC0Jc3Bpbl91bmxvY2soJmFkZXYtPmdmeC5raXEu cmluZ19sb2NrKTsKPiArCWFtZGdwdV9nZnhfa2lxX3VubG9jaygmYWRldi0+Z2Z4LmtpcSk7Cj4g ICAJcmVsZWFzZV9xdWV1ZShrZ2QpOwo+ICAgCj4gICAJcmV0dXJuIHI7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OS5jCj4gaW5kZXggZGY4 NDFjMmFjNWU3Li5mMjQzZDk5OTBjZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMKPiBAQCAtMzA3LDYgKzMwNyw3IEBAIGlu dCBrZ2RfZ2Z4X3Y5X2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQs Cj4gICAJCQkgICAgdWludDMyX3QgZG9vcmJlbGxfb2ZmKQo+ICAgewo+ICAgCXN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKPiArCXN0cnVjdCBhbWRn cHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKmtp cV9yaW5nID0gJmFkZXYtPmdmeC5raXEucmluZzsKPiAgIAlzdHJ1Y3QgdjlfbXFkICptOwo+ICAg CXVpbnQzMl90IG1lYywgcGlwZTsKPiBAQCAtMzIyLDEzICszMjMsMTkgQEAgaW50IGtnZF9nZnhf djlfaGlxX21xZF9sb2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKPiAgIAlwcl9k ZWJ1Zygia2ZkOiBzZXQgSElRLCBtZWM6JWQsIHBpcGU6JWQsIHF1ZXVlOiVkLlxuIiwKPiAgIAkJ IG1lYywgcGlwZSwgcXVldWVfaWQpOwo+ICAgCj4gLQlzcGluX2xvY2soJmFkZXYtPmdmeC5raXEu cmluZ19sb2NrKTsKPiArCXIgPSBhbWRncHVfZ2Z4X2tpcV9sb2NrKGtpcSwgZmFsc2UpOwo+ICsJ aWYgKHIpIHsKPiArCQlwcl9lcnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7Cj4gKwkJZ290byBv dXRfdW5sb2NrOwo+ICsJfQo+ICsKPiAgIAlyID0gYW1kZ3B1X3JpbmdfYWxsb2Moa2lxX3Jpbmcs IDcpOwo+ICAgCWlmIChyKSB7Cj4gICAJCXByX2VycigiRmFpbGVkIHRvIGFsbG9jIEtJUSAoJWQp LlxuIiwgcik7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiAgIAl9Cj4gICAKPiArCWFtZGdwdV9n Znhfa2lxX2NvbnN1bWUoa2lxLCBOVUxMKTsKPiAgIAlhbWRncHVfcmluZ193cml0ZShraXFfcmlu ZywgUEFDS0VUMyhQQUNLRVQzX01BUF9RVUVVRVMsIDUpKTsKPiAgIAlhbWRncHVfcmluZ193cml0 ZShraXFfcmluZywKPiAgIAkJCSAgUEFDS0VUM19NQVBfUVVFVUVTX1FVRVVFX1NFTCgwKSB8IC8q IFF1ZXVlX1NlbCAqLyBAQCAtMzQ4LDggKzM1NSw5IEBAIGludCBrZ2RfZ2Z4X3Y5X2hpcV9tcWRf bG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsCj4gICAJYW1kZ3B1X3Jpbmdfd3Jp dGUoa2lxX3JpbmcsIG0tPmNwX2hxZF9wcV93cHRyX3BvbGxfYWRkcl9oaSk7Cj4gICAJYW1kZ3B1 X3JpbmdfY29tbWl0KGtpcV9yaW5nKTsKPiAgIAo+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShr aXEsIE5VTEwpOwo+ICAgb3V0X3VubG9jazoKPiAtCXNwaW5fdW5sb2NrKCZhZGV2LT5nZngua2lx LnJpbmdfbG9jayk7Cj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2soJmFkZXYtPmdmeC5raXEpOwo+ ICAgCXJlbGVhc2VfcXVldWUoa2dkKTsKPiAgIAo+ICAgCXJldHVybiByOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMKPiBpbmRleCBlYTU3NmI0MjYwYTQuLmM2YjFjNzdi NWVhYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMKPiBAQCAt Mjk1LDIzICsyOTUsOTkgQEAgc3RhdGljIGludCBhbWRncHVfZ2Z4X2tpcV9hY3F1aXJlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCXJldHVybiAtRUlOVkFMOwo+ICAgfQo+ICAgCj4g K3ZvaWQgYW1kZ3B1X2dmeF9raXFfcmVnX29mZnNfZ2V0KHN0cnVjdCBhbWRncHVfa2lxICpraXEs Cj4gKwkJCQkgdWludDMyX3QgKm9mZnNldCkKPiArewo+ICsJdWludDMyX3QgdG1wID0gMDsKPiAr Cj4gKwl0bXAgPSBmaW5kX2ZpcnN0X3plcm9fYml0KGtpcS0+dXNlZCwKPiArCQkJCSAgICAgIGtp cS0+bnVtX3Nsb3QpOwo+ICsJaWYgKHRtcCA8IGtpcS0+bnVtX3Nsb3QpIHsKPiArCQlfX3NldF9i aXQodG1wLCBraXEtPnVzZWQpOwo+ICsJCSpvZmZzZXQgPSBraXEtPnJlZ192YWxfb2Zmc1t0bXBd Owo+ICsJfQo+ICt9Cj4gKwo+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3JlZ19vZmZzX2ZyZWUoc3Ry dWN0IGFtZGdwdV9raXEgKmtpcSwKPiArCQkJCSB1aW50MzJfdCBvZmZzZXQpCj4gK3sKPiArCXVp bnQzMl90IHRtcCA9IDA7Cj4gKwo+ICsJdG1wID0gKG9mZnNldCAtIGtpcS0+cmVnX3ZhbF9vZmZz WzBdKSA+PiAzOwo+ICsJaWYgKHRtcCA8IGtpcS0+bnVtX3Nsb3QpCj4gKwkJX19jbGVhcl9iaXQo dG1wLCBraXEtPnVzZWQpOwo+ICt9Cj4gKwo+ICtpbnQgYW1kZ3B1X2dmeF9raXFfbG9jayhzdHJ1 Y3QgYW1kZ3B1X2tpcSAqa2lxLCBib29sIHJlYWQpIHsKPiArCWludCByZXRyeSA9IE1BWF9LSVFf UkVHX1RSWTsKPiArCj4gKwlCVUdfT04oaW5faW50ZXJydXB0KCkpOwo+ICsJd2hpbGUgKHJldHJ5 LS0gPiAwKSB7Cj4gKwkJc3Bpbl9sb2NrKCZraXEtPnJpbmdfbG9jayk7Cj4gKwkJaWYgKChhdG9t aWM2NF9yZWFkKCZraXEtPnN1Ym1pdF9hdmFpbCkgPiAwKSAmJgo+ICsJCSAgICAocmVhZCA/IGZp bmRfZmlyc3RfemVyb19iaXQoa2lxLT51c2VkLCBraXEtPm51bV9zbG90KSA8Cj4gKwkJICAgICBr aXEtPm51bV9zbG90IDogMSkpIHsKPiArCQkJCWJyZWFrOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXNw aW5fdW5sb2NrKCZraXEtPnJpbmdfbG9jayk7Cj4gKwkJCW1zbGVlcCgyKTsKPiArCQkJY29udGlu dWU7Cj4gKwkJfQo+ICsKPiArCX0KPiArCj4gKwlpZiAocmV0cnkgPiAwKQo+ICsJCXJldHVybiAw Owo+ICsJZWxzZQo+ICsJCXJldHVybiAtRVRJTUU7Cj4gK30KPiArCj4gK3ZvaWQgYW1kZ3B1X2dm eF9raXFfdW5sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEpIHsKPiArCXNwaW5fdW5sb2NrKCZr aXEtPnJpbmdfbG9jayk7Cj4gK30KPiArCj4gK3ZvaWQgYW1kZ3B1X2dmeF9raXFfY29uc3VtZShz dHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxLCB1aW50MzJfdCAqb2Zmcykgewo+ICsJYXRvbWljNjRfZGVj KCZraXEtPnN1Ym1pdF9hdmFpbCk7Cj4gKwlpZiAob2ZmcykKPiArCQlhbWRncHVfZ2Z4X2tpcV9y ZWdfb2Zmc19nZXQoa2lxLCBvZmZzKTsKPiArCj4gK30KPiArCj4gK3ZvaWQgYW1kZ3B1X2dmeF9r aXFfcmVzdG9yZShzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxLCB1aW50MzJfdCAqb2Zmcykgewo+ICsJ YXRvbWljNjRfaW5jKCZraXEtPnN1Ym1pdF9hdmFpbCk7Cj4gKwlpZiAob2ZmcykKPiArCQlhbWRn cHVfZ2Z4X2tpcV9yZWdfb2Zmc19mcmVlKGtpcSwgKm9mZnMpOyB9Cj4gKwo+ICAgaW50IGFtZGdw dV9nZnhfa2lxX2luaXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCSAg ICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ICAgCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2ly cV9zcmMgKmlycSkKPiAgIHsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdm eC5raXE7Cj4gLQlpbnQgciA9IDA7Cj4gKwlpbnQgciA9IDAsIGksIGo7Cj4gICAKPiAgIAlzcGlu X2xvY2tfaW5pdCgma2lxLT5yaW5nX2xvY2spOwo+ICAgCj4gLQlyID0gYW1kZ3B1X2RldmljZV93 Yl9nZXQoYWRldiwgJmtpcS0+cmVnX3ZhbF9vZmZzKTsKPiAtCWlmIChyKQo+IC0JCXJldHVybiBy Owo+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9LSVFfUlJFR19OVU07IGkrKykgewo+ICsJCXIgPSBh bWRncHVfZGV2aWNlX3diX2dldChhZGV2LCAma2lxLT5yZWdfdmFsX29mZnNbaV0pOwo+ICsJCWlm IChyKSB7Cj4gKwkJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspCj4gKwkJCQlhbWRncHVfZGV2aWNl X3diX2ZyZWUoYWRldiwga2lxLT5yZWdfdmFsX29mZnNbal0pOwo+ICsJCQlyZXR1cm4gcjsKPiAr CQl9Cj4gKwl9Cj4gICAKPiAgIAlyaW5nLT5hZGV2ID0gTlVMTDsKPiAgIAlyaW5nLT5yaW5nX29i aiA9IE5VTEw7Cj4gICAJcmluZy0+dXNlX2Rvb3JiZWxsID0gdHJ1ZTsKPiAgIAlyaW5nLT5kb29y YmVsbF9pbmRleCA9IGFkZXYtPmRvb3JiZWxsX2luZGV4LmtpcTsKPiArCWtpcS0+bnVtX3Nsb3Qg PSBNQVhfS0lRX1JSRUdfTlVNOwo+ICsJbWVtc2V0KCZraXEtPnVzZWQsIDAsIHNpemVvZihraXEt PnVzZWQpKTsKPiArCj4gICAKPiAgIAlyID0gYW1kZ3B1X2dmeF9raXFfYWNxdWlyZShhZGV2LCBy aW5nKTsKPiAgIAlpZiAocikKPiBAQCAtMzI1LDEzICs0MDEsMjAgQEAgaW50IGFtZGdwdV9nZnhf a2lxX2luaXRfcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCSAgICAgQU1E R1BVX1JJTkdfUFJJT19ERUZBVUxUKTsKPiAgIAlpZiAocikKPiAgIAkJZGV2X3dhcm4oYWRldi0+ ZGV2LCAiKCVkKSBmYWlsZWQgdG8gaW5pdCBraXEgcmluZ1xuIiwgcik7Cj4gKwllbHNlCj4gKwkJ YXRvbWljNjRfc2V0KCZraXEtPnN1Ym1pdF9hdmFpbCwgcmluZy0+cmluZ19zaXplIC8gNCAvCj4g KwkJCSAgICAgKHJpbmctPmZ1bmNzLT5hbGlnbl9tYXNrICsgMSkpOwo+ICAgCj4gICAJcmV0dXJu IHI7Cj4gICB9Cj4gICAKPiAgIHZvaWQgYW1kZ3B1X2dmeF9raXFfZnJlZV9yaW5nKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZykgIHsKPiAtCWFtZGdwdV9kZXZpY2Vfd2JfZnJlZShyaW5nLT5hZGV2 LCByaW5nLT5hZGV2LT5nZngua2lxLnJlZ192YWxfb2Zmcyk7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2tp cSAqa2lxID0gJnJpbmctPmFkZXYtPmdmeC5raXE7Cj4gKwlpbnQgaSA9IDA7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IE1BWF9LSVFfUlJFR19OVU07IGkrKykKPiArCQlhbWRncHVfZGV2aWNlX3di X2ZyZWUocmluZy0+YWRldiwga2lxLT5yZWdfdmFsX29mZnNbaV0pOwo+ICAgCWFtZGdwdV9yaW5n X2ZpbmkocmluZyk7Cj4gICB9Cj4gICAKPiBAQCAtNjcxLDE5ICs3NTQsMjQgQEAgaW50IGFtZGdw dV9nZnhfY3BfZWNjX2Vycm9yX2lycShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgIHVpbnQz Ml90IGFtZGdwdV9raXFfcnJlZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg cmVnKSAgewo+ICAgCXNpZ25lZCBsb25nIHIsIGNudCA9IDA7Cj4gLQl1bnNpZ25lZCBsb25nIGZs YWdzOwo+IC0JdWludDMyX3Qgc2VxOwo+ICsJdWludDMyX3Qgc2VxLCByZWdfdmFsX29mZnMgPSAw LCB2YWx1ZSA9IDA7Cj4gICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lx Owo+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7Cj4gICAKPiAgIAlC VUdfT04oIXJpbmctPmZ1bmNzLT5lbWl0X3JyZWcpOwo+ICAgCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgma2lxLT5yaW5nX2xvY2ssIGZsYWdzKTsKPiArCXIgPSBhbWRncHVfZ2Z4X2tpcV9sb2NrKGtp cSwgdHJ1ZSk7Cj4gKwlpZiAocikgewo+ICsJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4i KTsKPiArCQlnb3RvIGtpcV9yZWFkX2V4aXQ7Cj4gKwl9Cj4gKwo+ICsJYW1kZ3B1X2dmeF9raXFf Y29uc3VtZShraXEsICZyZWdfdmFsX29mZnMpOwo+ICAgCWFtZGdwdV9yaW5nX2FsbG9jKHJpbmcs IDMyKTsKPiAtCWFtZGdwdV9yaW5nX2VtaXRfcnJlZyhyaW5nLCByZWcpOwo+ICsJYW1kZ3B1X3Jp bmdfZW1pdF9ycmVnKHJpbmcsIHJlZywgcmVnX3ZhbF9vZmZzKTsKPiAgIAlhbWRncHVfZmVuY2Vf ZW1pdF9wb2xsaW5nKHJpbmcsICZzZXEpOwo+ICAgCWFtZGdwdV9yaW5nX2NvbW1pdChyaW5nKTsK PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7Cj4gKwlh bWRncHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsKPiAgIAo+ICAgCXIgPSBhbWRncHVfZmVuY2Vfd2Fp dF9wb2xsaW5nKHJpbmcsIHNlcSwgTUFYX0tJUV9SRUdfV0FJVCk7Cj4gICAKPiBAQCAtNzA3LDkg Kzc5NSwxNCBAQCB1aW50MzJfdCBhbWRncHVfa2lxX3JyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVpbnQzMl90IHJlZykKPiAgIAlpZiAoY250ID4gTUFYX0tJUV9SRUdfVFJZKQo+ICAg CQlnb3RvIGZhaWxlZF9raXFfcmVhZDsKPiAgIAo+IC0JcmV0dXJuIGFkZXYtPndiLndiW2tpcS0+ cmVnX3ZhbF9vZmZzXTsKPiArCW1iKCk7Cj4gKwl2YWx1ZSA9IGFkZXYtPndiLndiW3JlZ192YWxf b2Zmc107Cj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgJnJlZ192YWxfb2Zmcyk7Cj4g KwlyZXR1cm4gdmFsdWU7Cj4gICAKPiAgIGZhaWxlZF9raXFfcmVhZDoKPiArCWFtZGdwdV9nZnhf a2lxX3Jlc3RvcmUoa2lxLCAmcmVnX3ZhbF9vZmZzKTsKPiAra2lxX3JlYWRfZXhpdDoKPiAgIAlw cl9lcnIoImZhaWxlZCB0byByZWFkIHJlZzoleFxuIiwgcmVnKTsKPiAgIAlyZXR1cm4gfjA7Cj4g ICB9Cj4gQEAgLTcxNywxOSArODEwLDI0IEBAIHVpbnQzMl90IGFtZGdwdV9raXFfcnJlZyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVnKSAgdm9pZCBhbWRncHVfa2lxX3dy ZWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHJlZywgdWludDMyX3Qgdikg IHsKPiAgIAlzaWduZWQgbG9uZyByLCBjbnQgPSAwOwo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsK PiAgIAl1aW50MzJfdCBzZXE7Cj4gICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5n Zngua2lxOwo+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7Cj4gICAK PiAgIAlCVUdfT04oIXJpbmctPmZ1bmNzLT5lbWl0X3dyZWcpOwo+ICAgCj4gLQlzcGluX2xvY2tf aXJxc2F2ZSgma2lxLT5yaW5nX2xvY2ssIGZsYWdzKTsKPiArCXIgPSBhbWRncHVfZ2Z4X2tpcV9s b2NrKGtpcSwgZmFsc2UpOwo+ICsJaWYgKHIpIHsKPiArCQlwcl9lcnIoImZhaWxlZCB0byBsb2Nr IGtpcVxuIik7Cj4gKwkJZ290byBraXFfd3JpdGVfZXhpdDsKPiArCX0KPiArCj4gKwlhbWRncHVf Z2Z4X2tpcV9jb25zdW1lKGtpcSwgTlVMTCk7Cj4gICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywg MzIpOwo+ICAgCWFtZGdwdV9yaW5nX2VtaXRfd3JlZyhyaW5nLCByZWcsIHYpOwo+ICAgCWFtZGdw dV9mZW5jZV9lbWl0X3BvbGxpbmcocmluZywgJnNlcSk7Cj4gICAJYW1kZ3B1X3JpbmdfY29tbWl0 KHJpbmcpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgma2lxLT5yaW5nX2xvY2ssIGZsYWdz KTsKPiArCWFtZGdwdV9nZnhfa2lxX3VubG9jayhraXEpOwo+ICAgCj4gICAJciA9IGFtZGdwdV9m ZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBNQVhfS0lRX1JFR19XQUlUKTsKPiAgIAo+IEBA IC03NTQsOCArODUyLDExIEBAIHZvaWQgYW1kZ3B1X2tpcV93cmVnKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHYpCj4gICAJaWYgKGNudCA+IE1BWF9L SVFfUkVHX1RSWSkKPiAgIAkJZ290byBmYWlsZWRfa2lxX3dyaXRlOwo+ICAgCj4gKwlhbWRncHVf Z2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7Cj4gICAJcmV0dXJuOwo+ICAgCj4gICBmYWlsZWRf a2lxX3dyaXRlOgo+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsIE5VTEwpOwo+ICtraXFf d3JpdGVfZXhpdDoKPiAgIAlwcl9lcnIoImZhaWxlZCB0byB3cml0ZSByZWc6JXhcbiIsIHJlZyk7 ICB9IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmgKPiBpbmRleCA2MzQ3NDY4 MjkwMjQuLmJiMDU1OTRjMjdlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2Z4LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZ2Z4LmgKPiBAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3Qga2lxX3BtNF9mdW5jcyB7Cj4gICAJ aW50IGludmFsaWRhdGVfdGxic19zaXplOwo+ICAgfTsKPiAgIAo+ICsjZGVmaW5lIE1BWF9LSVFf UlJFR19OVU0gNjQKPiAgIHN0cnVjdCBhbWRncHVfa2lxIHsKPiAgIAl1NjQJCQllb3BfZ3B1X2Fk ZHI7Cj4gICAJc3RydWN0IGFtZGdwdV9ibwkqZW9wX29iajsKPiBAQCAtMTAzLDcgKzEwNCwxMCBA QCBzdHJ1Y3QgYW1kZ3B1X2tpcSB7Cj4gICAJc3RydWN0IGFtZGdwdV9yaW5nCXJpbmc7Cj4gICAJ c3RydWN0IGFtZGdwdV9pcnFfc3JjCWlycTsKPiAgIAljb25zdCBzdHJ1Y3Qga2lxX3BtNF9mdW5j cyAqcG1mOwo+IC0JdWludDMyX3QJCQlyZWdfdmFsX29mZnM7Cj4gKwl1aW50MzJfdAkJcmVnX3Zh bF9vZmZzW01BWF9LSVFfUlJFR19OVU1dOwo+ICsJYXRvbWljNjRfdAkJc3VibWl0X2F2YWlsOwo+ ICsJdWludDMyX3QJCW51bV9zbG90Owo+ICsJdW5zaWduZWQgbG9uZwkJdXNlZFtESVZfUk9VTkRf VVAoTUFYX0tJUV9SUkVHX05VTSwgQklUU19QRVJfTE9ORyldOwo+ICAgfTsKPiAgIAo+ICAgLyoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPiBpbmRleCBmNjE2NjRl ZTQ5NDAuLmIwZWE0ZjY3YTZlMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcmluZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+IEBAIC0xODEsNyArMTgxLDggQEAgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNz IHsKPiAgIAl2b2lkICgqZW5kX3VzZSkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPiAgIAl2 b2lkICgqZW1pdF9zd2l0Y2hfYnVmZmVyKSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPiAg IAl2b2lkICgqZW1pdF9jbnR4Y250bCkgKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMy X3QgZmxhZ3MpOwo+IC0Jdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LCB1aW50MzJfdCByZWcpOwo+ICsJdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCB1aW50MzJfdCByZWcsCj4gKwkJCSAgdWludDMyX3QgcmVnX3ZhbF9vZmZzKTsKPiAg IAl2b2lkICgqZW1pdF93cmVnKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJl ZywgdWludDMyX3QgdmFsKTsKPiAgIAl2b2lkICgqZW1pdF9yZWdfd2FpdCkoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcsCj4gICAJCQkgICAgICB1aW50MzJfdCB2YWwsIHVp bnQzMl90IG1hc2spOwo+IEBAIC0yNjUsNyArMjY2LDcgQEAgc3RydWN0IGFtZGdwdV9yaW5nIHsg ICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9oZHBfZmx1c2gocikgKHIpLT5mdW5jcy0+ZW1pdF9o ZHBfZmx1c2goKHIpKSAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3N3aXRjaF9idWZmZXIocikg KHIpLT5mdW5jcy0+ZW1pdF9zd2l0Y2hfYnVmZmVyKChyKSkKPiAgICNkZWZpbmUgYW1kZ3B1X3Jp bmdfZW1pdF9jbnR4Y250bChyLCBkKSAociktPmZ1bmNzLT5lbWl0X2NudHhjbnRsKChyKSwgKGQp KSAtI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JyZWcociwgZCkgKHIpLT5mdW5jcy0+ZW1pdF9y cmVnKChyKSwgKGQpKQo+ICsjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfcnJlZyhyLCBkLCBvKSAo ciktPmZ1bmNzLT5lbWl0X3JyZWcoKHIpLCAoZCksCj4gKyhvKSkKPiAgICNkZWZpbmUgYW1kZ3B1 X3JpbmdfZW1pdF93cmVnKHIsIGQsIHYpIChyKS0+ZnVuY3MtPmVtaXRfd3JlZygociksIChkKSwg KHYpKSAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JlZ193YWl0KHIsIGQsIHYsIG0pIChyKS0+ ZnVuY3MtPmVtaXRfcmVnX3dhaXQoKHIpLCAoZCksICh2KSwgKG0pKSAgI2RlZmluZSBhbWRncHVf cmluZ19lbWl0X3JlZ193cml0ZV9yZWdfd2FpdChyLCBkMCwgZDEsIHYsIG0pIChyKS0+ZnVuY3Mt PmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0KChyKSwgKGQwKSwgKGQxKSwgKHYpLCAobSkpIEBAIC0z MDgsNiArMzA5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9yaW5nX3dyaXRlKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgdikgIHsKPiAgIAlpZiAocmluZy0+Y291bnRf ZHcgPD0gMCkKPiAgIAkJRFJNX0VSUk9SKCJhbWRncHU6IHdyaXRpbmcgbW9yZSBkd29yZHMgdG8g dGhlIHJpbmcgdGhhbiBleHBlY3RlZCFcbiIpOwo+ICsKPiAgIAlyaW5nLT5yaW5nW3JpbmctPndw dHIrKyAmIHJpbmctPmJ1Zl9tYXNrXSA9IHY7Cj4gICAJcmluZy0+d3B0ciAmPSByaW5nLT5wdHJf bWFzazsKPiAgIAlyaW5nLT5jb3VudF9kdy0tOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdmlydC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZpcnQuYwo+IGluZGV4IDhjMTAwODRmNDRlZi4uZGQ1NGVhODAyYTlhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmlydC5jCj4gQEAgLTU2LDEzICs1Niwx OSBAQCB2b2lkIGFtZGdwdV92aXJ0X2tpcV9yZWdfd3JpdGVfcmVnX3dhaXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgIAl1aW50MzJfdCBz ZXE7Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOwo+ ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7Cj4gKwlpZiAocikgewo+ICsJ CXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4iKTsKPiArCQlnb3RvIGZhaWxlZF9leGl0Owo+ ICsJfQo+ICsKPiArCWFtZGdwdV9nZnhfa2lxX2NvbnN1bWUoa2lxLCBOVUxMKTsKPiAgIAlhbWRn cHVfcmluZ19hbGxvYyhyaW5nLCAzMik7Cj4gICAJYW1kZ3B1X3JpbmdfZW1pdF9yZWdfd3JpdGVf cmVnX3dhaXQocmluZywgcmVnMCwgcmVnMSwKPiAgIAkJCQkJICAgIHJlZiwgbWFzayk7Cj4gICAJ YW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsKPiAgIAlhbWRncHVfcmluZ19j b21taXQocmluZyk7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZraXEtPnJpbmdfbG9jaywg ZmxhZ3MpOwo+ICsJYW1kZ3B1X2dmeF9raXFfdW5sb2NrKGtpcSk7Cj4gICAKPiAgIAlyID0gYW1k Z3B1X2ZlbmNlX3dhaXRfcG9sbGluZyhyaW5nLCBzZXEsIE1BWF9LSVFfUkVHX1dBSVQpOwo+ICAg Cj4gQEAgLTgwLDkgKzg2LDEyIEBAIHZvaWQgYW1kZ3B1X3ZpcnRfa2lxX3JlZ193cml0ZV9yZWdf d2FpdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAlpZiAoY250ID4gTUFYX0tJUV9S RUdfVFJZKQo+ICAgCQlnb3RvIGZhaWxlZF9raXE7Cj4gICAKPiArCWFtZGdwdV9nZnhfa2lxX3Jl c3RvcmUoa2lxLCBOVUxMKTsKPiAgIAlyZXR1cm47Cj4gICAKPiAgIGZhaWxlZF9raXE6Cj4gKwlh bWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7Cj4gK2ZhaWxlZF9leGl0Ogo+ICAgCXBy X2VycigiZmFpbGVkIHRvIHdyaXRlIHJlZyAleCB3YWl0IHJlZyAleFxuIiwgcmVnMCwgcmVnMSk7 ICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Yx MF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYwo+IGluZGV4IDBh MDNlMmFkNWQ5NS4uNzg1M2RiYzNjOGJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92MTBfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3YxMF8wLmMKPiBAQCAtNzU5NCwxMCArNzU5NCwxMCBAQCBzdGF0aWMgdm9pZCBnZnhfdjEw XzBfcmluZ19lbWl0X2ZyYW1lX2NudGwoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBib29sIHN0 YXJ0LAo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHYgfCBGUkFNRV9DTUQoc3RhcnQgPyAw IDogMSkpOyAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGdmeF92MTBfMF9yaW5nX2VtaXRfcnJlZyhz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZykKPiArc3RhdGljIHZvaWQgZ2Z4 X3YxMF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3Qg cmVnLAo+ICsJCQkJICAgICB1aW50MzJfdCByZWdfdmFsX29mZnMpCj4gICB7Cj4gICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+IC0Jc3RydWN0IGFtZGdwdV9raXEg KmtpcSA9ICZhZGV2LT5nZngua2lxOwo+ICAgCj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg UEFDS0VUMyhQQUNLRVQzX0NPUFlfREFUQSwgNCkpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJp bmcsIDAgfAkvKiBzcmM6IHJlZ2lzdGVyKi8KPiBAQCAtNzYwNiw5ICs3NjA2LDkgQEAgc3RhdGlj IHZvaWQgZ2Z4X3YxMF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywg dWludDMyX3QgcmVnKQo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHJlZyk7Cj4gICAJYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgMCk7Cj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbG93 ZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArCj4gLQkJCQlraXEtPnJlZ192YWxfb2ZmcyAq IDQpKTsKPiArCQkJCXJlZ192YWxfb2ZmcyAqIDQpKTsKPiAgIAlhbWRncHVfcmluZ193cml0ZShy aW5nLCB1cHBlcl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsKPiAtCQkJCWtpcS0+cmVnX3Zh bF9vZmZzICogNCkpOwo+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgdm9pZCBnZnhfdjEwXzBfcmluZ19lbWl0X3dyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nLCB1aW50MzJfdCByZWcsIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwo+IGlu ZGV4IGZjNmMyZjJiYzc2Yy4uYmRiZDkyZDRmZTQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5jCj4gQEAgLTYzODMsMTAgKzYzODMsMTAgQEAgc3RhdGljIHZvaWQgZ2Z4 X3Y4XzBfcmluZ19lbWl0X3BhdGNoX2NvbmRfZXhlYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs IHVuc2lnbmUKPiAgIAkJcmluZy0+cmluZ1tvZmZzZXRdID0gKHJpbmctPnJpbmdfc2l6ZSA+PiAy KSAtIG9mZnNldCArIGN1cjsgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBnZnhfdjhfMF9yaW5nX2Vt aXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZykKPiArc3RhdGlj IHZvaWQgZ2Z4X3Y4XzBfcmluZ19lbWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1 aW50MzJfdCByZWcsCj4gKwkJCQkgICAgdWludDMyX3QgcmVnX3ZhbF9vZmZzKQo+ICAgewo+ICAg CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKPiAtCXN0cnVjdCBhbWRn cHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsKPiAgIAo+ICAgCWFtZGdwdV9yaW5nX3dyaXRl KHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RBVEEsIDQpKTsKPiAgIAlhbWRncHVfcmluZ193 cml0ZShyaW5nLCAwIHwJLyogc3JjOiByZWdpc3RlciovCj4gQEAgLTYzOTUsOSArNjM5NSw5IEBA IHN0YXRpYyB2b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgcmVnKQo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHJlZyk7Cj4g ICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7Cj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgbG93ZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArCj4gLQkJCQlraXEtPnJlZ192YWxf b2ZmcyAqIDQpKTsKPiArCQkJCXJlZ192YWxfb2ZmcyAqIDQpKTsKPiAgIAlhbWRncHVfcmluZ193 cml0ZShyaW5nLCB1cHBlcl8zMl9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsKPiAtCQkJCWtpcS0+ cmVnX3ZhbF9vZmZzICogNCkpOwo+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgdm9pZCBnZnhfdjhfMF9yaW5nX2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcsIHVpbnQzMl90IHJlZywgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5j Cj4gaW5kZXggODRmY2Y4NDIzMTZkLi5mN2RkMTAzNjk4NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMKPiBAQCAtNDA0MiwxNCArNDA0MiwyMCBAQCBzdGF0aWMgaW50 IGdmeF92OV8wX3NvZnRfcmVzZXQodm9pZCAqaGFuZGxlKSAgc3RhdGljIHVpbnQ2NF90IGdmeF92 OV8wX2tpcV9yZWFkX2Nsb2NrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KSAgewo+ICAgCXNp Z25lZCBsb25nIHIsIGNudCA9IDA7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0JdWludDMy X3Qgc2VxOwo+ICsJdWludDMyX3Qgc2VxLCByZWdfdmFsX29mZnM7Cj4gKwl1aW50NjRfdCB2YWx1 ZSA9IDA7Cj4gICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOwo+ICAg CXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7Cj4gICAKPiAgIAlCVUdfT04o IXJpbmctPmZ1bmNzLT5lbWl0X3JyZWcpOwo+ICAgCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgma2lx LT5yaW5nX2xvY2ssIGZsYWdzKTsKPiArCXIgPSBhbWRncHVfZ2Z4X2tpcV9sb2NrKGtpcSwgdHJ1 ZSk7Cj4gKwlpZiAocikgewo+ICsJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4iKTsKPiAr CQlnb3RvIGZhaWxlZF9raXFfZXhpdDsKPiArCX0KPiArCj4gKwlhbWRncHVfZ2Z4X2tpcV9jb25z dW1lKGtpcSwgJnJlZ192YWxfb2Zmcyk7Cj4gICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIp Owo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RBVEEs IDQpKTsKPiAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCA5IHwJLyogc3JjOiByZWdpc3Rlciov Cj4gQEAgLTQwNTksMTIgKzQwNjUsMTIgQEAgc3RhdGljIHVpbnQ2NF90IGdmeF92OV8wX2tpcV9y ZWFkX2Nsb2NrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAgCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIDApOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+ICAgCWFtZGdw dV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKwo+IC0J CQkJa2lxLT5yZWdfdmFsX29mZnMgKiA0KSk7Cj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0KSk7Cj4g ICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdXBwZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRk ciArCj4gLQkJCQlraXEtPnJlZ192YWxfb2ZmcyAqIDQpKTsKPiArCQkJCXJlZ192YWxfb2ZmcyAq IDQpKTsKPiAgIAlhbWRncHVfZmVuY2VfZW1pdF9wb2xsaW5nKHJpbmcsICZzZXEpOwo+ICAgCWFt ZGdwdV9yaW5nX2NvbW1pdChyaW5nKTsKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmtpcS0+ cmluZ19sb2NrLCBmbGFncyk7Cj4gKwlhbWRncHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsKPiAgIAo+ ICAgCXIgPSBhbWRncHVfZmVuY2Vfd2FpdF9wb2xsaW5nKHJpbmcsIHNlcSwgTUFYX0tJUV9SRUdf V0FJVCk7Cj4gICAKPiBAQCAtNDA4OCwxMCArNDA5NCwxNCBAQCBzdGF0aWMgdWludDY0X3QgZ2Z4 X3Y5XzBfa2lxX3JlYWRfY2xvY2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4gICAJaWYg KGNudCA+IE1BWF9LSVFfUkVHX1RSWSkKPiAgIAkJZ290byBmYWlsZWRfa2lxX3JlYWQ7Cj4gICAK PiAtCXJldHVybiAodWludDY0X3QpYWRldi0+d2Iud2Jba2lxLT5yZWdfdmFsX29mZnNdIHwKPiAt CQkodWludDY0X3QpYWRldi0+d2Iud2Jba2lxLT5yZWdfdmFsX29mZnMgKyAxIF0gPDwgMzJVTEw7 Cj4gKwl2YWx1ZSA9ICh1aW50NjRfdClhZGV2LT53Yi53YltyZWdfdmFsX29mZnNdIHwKPiArCQko dWludDY0X3QpYWRldi0+d2Iud2JbcmVnX3ZhbF9vZmZzICsgMSBdIDw8IDMyVUxMOwo+ICAgCj4g KwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgJnJlZ192YWxfb2Zmcyk7Cj4gKwlyZXR1cm4g dmFsdWU7Cj4gICBmYWlsZWRfa2lxX3JlYWQ6Cj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtp cSwgJnJlZ192YWxfb2Zmcyk7Cj4gK2ZhaWxlZF9raXFfZXhpdDoKPiAgIAlwcl9lcnIoImZhaWxl ZCB0byByZWFkIGdwdSBjbG9ja1xuIik7Cj4gICAJcmV0dXJuIH4wOwo+ICAgfQo+IEBAIC01NDgy LDEwICs1NDkyLDEwIEBAIHN0YXRpYyB2b2lkIGdmeF92OV8wX3JpbmdfZW1pdF9wYXRjaF9jb25k X2V4ZWMoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25lCj4gICAJCXJpbmctPnJpbmdb b2Zmc2V0XSA9IChyaW5nLT5yaW5nX3NpemU+PjIpIC0gb2Zmc2V0ICsgY3VyOyAgfQo+ICAgCj4g LXN0YXRpYyB2b2lkIGdmeF92OV8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgcmVnKQo+ICtzdGF0aWMgdm9pZCBnZnhfdjlfMF9yaW5nX2VtaXRfcnJl ZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywKPiArCQkJCSAgICB1aW50 MzJfdCByZWdfdmFsX29mZnMpCj4gICB7Cj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSByaW5nLT5hZGV2Owo+IC0Jc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lx Owo+ICAgCj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUMyhQQUNLRVQzX0NPUFlf REFUQSwgNCkpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDAgfAkvKiBzcmM6IHJlZ2lz dGVyKi8KPiBAQCAtNTQ5NCw5ICs1NTA0LDkgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y5XzBfcmluZ19l bWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcpCj4gICAJYW1k Z3B1X3Jpbmdfd3JpdGUocmluZywgcmVnKTsKPiAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAw KTsKPiAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8zMl9iaXRzKGFkZXYtPndiLmdw dV9hZGRyICsKPiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOwo+ICsJCQkJcmVnX3ZhbF9v ZmZzICogNCkpOwo+ICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMoYWRl di0+d2IuZ3B1X2FkZHIgKwo+IC0JCQkJa2lxLT5yZWdfdmFsX29mZnMgKiA0KSk7Cj4gKwkJCQly ZWdfdmFsX29mZnMgKiA0KSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGdmeF92OV8wX3Jp bmdfZW1pdF93cmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgcmVnLCBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3YxMF8wLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjEwXzAuYwo+IGluZGV4IDMwYjc1ZDc5ZWZkYi4uNmI0 ZGMwZWQ0ZmZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 MTBfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3YxMF8wLmMKPiBA QCAtNDIyLDIwICs0MjIsMjggQEAgc3RhdGljIGludCBnbWNfdjEwXzBfZmx1c2hfZ3B1X3RsYl9w YXNpZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAq a2lxID0gJmFkZXYtPmdmeC5raXE7Cj4gICAKPiAgIAlpZiAoYW1kZ3B1X2VtdV9tb2RlID09IDAg JiYgcmluZy0+c2NoZWQucmVhZHkpIHsKPiAtCQlzcGluX2xvY2soJmFkZXYtPmdmeC5raXEucmlu Z19sb2NrKTsKPiArCQlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEsIGZhbHNlKTsKPiArCQlp ZiAocikgewo+ICsJCQlwcl9lcnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7Cj4gKwkJCXJldHVy biAtRVRJTUU7Cj4gKwkJfQo+ICsKPiAgIAkJLyogMiBkd29yZHMgZmx1c2ggKyA4IGR3b3JkcyBm ZW5jZSAqLwo+ICAgCQlhbWRncHVfcmluZ19hbGxvYyhyaW5nLCBraXEtPnBtZi0+aW52YWxpZGF0 ZV90bGJzX3NpemUgKyA4KTsKPiArCQlhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKGtpcSwgTlVMTCk7 Cj4gICAJCWtpcS0+cG1mLT5raXFfaW52YWxpZGF0ZV90bGJzKHJpbmcsCj4gICAJCQkJCXBhc2lk LCBmbHVzaF90eXBlLCBhbGxfaHViKTsKPiAgIAkJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhy aW5nLCAmc2VxKTsKPiAgIAkJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOwo+IC0JCXNwaW5fdW5s b2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbG9jayk7Cj4gKwkJYW1kZ3B1X2dmeF9raXFfdW5sb2Nr KGtpcSk7Cj4gICAJCXIgPSBhbWRncHVfZmVuY2Vfd2FpdF9wb2xsaW5nKHJpbmcsIHNlcSwgYWRl di0+dXNlY190aW1lb3V0KTsKPiAgIAkJaWYgKHIgPCAxKSB7Cj4gICAJCQlEUk1fRVJST1IoIndh aXQgZm9yIGtpcSBmZW5jZSBlcnJvcjogJWxkLlxuIiwgcik7Cj4gKwkJCWFtZGdwdV9nZnhfa2lx X3Jlc3RvcmUoa2lxLCBmYWxzZSk7Cj4gICAJCQlyZXR1cm4gLUVUSU1FOwo+ICAgCQl9Cj4gICAK PiArCQlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7Cj4gICAJCXJldHVybiAwOwo+ ICAgCX0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNf djlfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+IGluZGV4IGZl Y2RiYzQ3MTk4My4uNjIzODcwMmM4MGI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OV8wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n bWNfdjlfMC5jCj4gQEAgLTYxMyw3ICs2MTMsMTMgQEAgc3RhdGljIGludCBnbWNfdjlfMF9mbHVz aF9ncHVfdGxiX3Bhc2lkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQlpZiAodmVn YTIwX3hnbWlfd2EpCj4gICAJCQluZHcgKz0ga2lxLT5wbWYtPmludmFsaWRhdGVfdGxic19zaXpl Owo+ICAgCj4gLQkJc3Bpbl9sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbG9jayk7Cj4gKwkJciA9 IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7Cj4gKwkJaWYgKHIpIHsKPiArCQkJcHJf ZXJyKCJmYWlsZWQgdG8gbG9jayBraXFcbiIpOwo+ICsJCQlyZXR1cm4gLUVUSU1FOwo+ICsJCX0K PiArCj4gKwkJYW1kZ3B1X2dmeF9raXFfY29uc3VtZShraXEsIE5VTEwpOwo+ICAgCQkvKiAyIGR3 b3JkcyBmbHVzaCArIDggZHdvcmRzIGZlbmNlICovCj4gICAJCWFtZGdwdV9yaW5nX2FsbG9jKHJp bmcsIG5kdyk7Cj4gICAJCWlmICh2ZWdhMjBfeGdtaV93YSkKPiBAQCAtNjIzLDEzICs2MjksMTUg QEAgc3RhdGljIGludCBnbWNfdjlfMF9mbHVzaF9ncHVfdGxiX3Bhc2lkKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+ICAgCQkJCQlwYXNpZCwgZmx1c2hfdHlwZSwgYWxsX2h1Yik7Cj4gICAJ CWFtZGdwdV9mZW5jZV9lbWl0X3BvbGxpbmcocmluZywgJnNlcSk7Cj4gICAJCWFtZGdwdV9yaW5n X2NvbW1pdChyaW5nKTsKPiAtCQlzcGluX3VubG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2sp Owo+ICsJCWFtZGdwdV9nZnhfa2lxX3VubG9jayhraXEpOwo+ICAgCQlyID0gYW1kZ3B1X2ZlbmNl X3dhaXRfcG9sbGluZyhyaW5nLCBzZXEsIGFkZXYtPnVzZWNfdGltZW91dCk7Cj4gICAJCWlmIChy IDwgMSkgewo+ICAgCQkJRFJNX0VSUk9SKCJ3YWl0IGZvciBraXEgZmVuY2UgZXJyb3I6ICVsZC5c biIsIHIpOwo+ICsJCQlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7Cj4gICAJCQly ZXR1cm4gLUVUSU1FOwo+ICAgCQl9Cj4gICAKPiArCQlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtp cSwgTlVMTCk7Cj4gICAJCXJldHVybiAwOwo+ICAgCX0KPiAgIAo+IC0tCj4gMi4xNy4xCj4KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFp bGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=