From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, 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 A927BC47088 for ; Wed, 26 May 2021 17:33:02 +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 66BF9613B9 for ; Wed, 26 May 2021 17:33:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 66BF9613B9 Authentication-Results: mail.kernel.org; dmarc=fail (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 238F76E84B; Wed, 26 May 2021 17:33:02 +0000 (UTC) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam08on2064.outbound.protection.outlook.com [40.107.101.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9301B6E84B for ; Wed, 26 May 2021 17:33:01 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D5tgQzvMSwXLKWzYUswj6BJOdSIzObX6T5LeNaHMC6xyM2v/FQSSofnmsHMDFYCgHLSctdfMWO6pm/kff6VH5Wl8468JSGaDqSgpaXm3mPl8Ol2Ns3gU6HHoCPfjhM3xElmRh6iOoodL1WxTlS6mpOZ3KRXI6IsIgIvI0m3D7dBWvaCDQzWIyqg3fvTeX0a6N79RU8gqGsyfEiy07g9rFExPJYJxCwHI36Iz2X3HrFf1LGf8UNyZ/5r738Y2R3f0D5nv58bPs8q9yl7i+iZu+ot1wTzdhw0drxx9sqW1+hxIFJGtnRmKm3P1N6DJc1tpTILsSwYjeZnv16EffcUrPg== 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=nkNy81knpOnwFsps/qqG6zTfmmWdDcGzyLN3hIZxKrI=; b=BzV5aRrE/nHf//HyIS0cN+vmi8ZmGm9OTzJa8tNa2PqC3NN6ncOQHuwyjjTrvnZ2KMoUUNuvY5h82pOkXDlQLpQOeBjiHdZxYupi6KPzuyJ9chzNOli/mt4yrQTZpAa6Ey1inr51nshacRLrFFGQM/nCMVn9pV6SKcfpEYhWAzItvwa5qJl+ZrF16nkPecAK5St3vU/lWrsc6GGObHEWrT7mseNqwe6GEhyGDgXI3TENyQSj12vkrCjoGQqTofxFOIO28YVZG8rxWoOMIrC4ojY14c3Fa57AmAp/SnNXyz4CL6CaEuELAtsn2cuZo2ZSuMCFI9DlyNjh8M5nzkzhuA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nkNy81knpOnwFsps/qqG6zTfmmWdDcGzyLN3hIZxKrI=; b=rMADjACToLw5Ys+5s1xKbkA7AEvp8JvYJIYPm4BikNVyMeuNYOvroF0RW3A4jUUaVRYND9qvDLvElMCISlIeiJ9rjMgkC/5GUW4TacBlbC6a1eGdLPiPepuHlMZz/CQ/d09MYeZjnJEVQMiSc+vY6Bj1+e0cJewQsdLpC7pbcoQ= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from DM4PR12MB5136.namprd12.prod.outlook.com (2603:10b6:5:393::23) by DM6PR12MB5552.namprd12.prod.outlook.com (2603:10b6:5:1bd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.22; Wed, 26 May 2021 17:33:00 +0000 Received: from DM4PR12MB5136.namprd12.prod.outlook.com ([fe80::4074:4943:244:a5fa]) by DM4PR12MB5136.namprd12.prod.outlook.com ([fe80::4074:4943:244:a5fa%6]) with mapi id 15.20.4150.027; Wed, 26 May 2021 17:33:00 +0000 Subject: Re: [PATCH v2 3/5] drm/amdgpu: switch to amdgpu_bo_vm for vm code To: =?UTF-8?Q?Christian_K=c3=b6nig?= , Nirmoy Das , amd-gfx@lists.freedesktop.org References: <20210526130658.4237-1-nirmoy.das@amd.com> <20210526130658.4237-3-nirmoy.das@amd.com> From: Nirmoy Message-ID: Date: Wed, 26 May 2021 19:32:49 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 In-Reply-To: Content-Language: en-US X-Originating-IP: [217.86.98.218] X-ClientProxiedBy: PR3P195CA0018.EURP195.PROD.OUTLOOK.COM (2603:10a6:102:b6::23) To DM4PR12MB5136.namprd12.prod.outlook.com (2603:10b6:5:393::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.178.87] (217.86.98.218) by PR3P195CA0018.EURP195.PROD.OUTLOOK.COM (2603:10a6:102:b6::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21 via Frontend Transport; Wed, 26 May 2021 17:32:58 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: de416009-b037-4df1-d974-08d9206c4ea8 X-MS-TrafficTypeDiagnostic: DM6PR12MB5552: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8PMCCxLwC6dFIt2gXneWQuFk1FePAl+4KvprS1s0fXLIRfHC2zZERCP6W0i/83euYAbDtL9jh+tPsNh2R+2hwswcGBVi0iAcWQaSRX7pxpHtsqPlGu+3gAFxzA0oIK5V0ditBmRJ5ET91zQAg54IH1hubq8Rl91FekH3UGhZZ/Znrphx3klFuHWOI5AwglOBNnJx5+An54RMIyTTpPQATtHpw8k4mmOhEt9wahumNooBFJJ8sNZeCoMusKUXXbyUKVCNSEVo1w4jgdqQzv2D6Hst/LRUDjNHPzrzTZQPotYuUswJYQ1qEnSwMe0RPNmodY7Cb1Zs4X2Cbd4jGX33Ffe31QipkybtGQ4Y+M3MpJotTYcUMpVaJd7COc1o46p+2bePw/JPUbhwvYB+D54QwAxoLTeHXM0akA2IWdymH9V6ISjLKdTYpmtxhtQZqNn05z0l7fMTkYY8NsmPM4WlQ0ozeRVFY/3ce9Sz74uNg0ZcGXimB6Ha6M2CSATZaIFOucoF1iYXp2kVvhd+UO6bqSQ0aPnK/sBPGazraN4yaAdP984pNlNxN1IGL7JeXhA4r22/aAEl9BJt2IdTIp75cIFDjX6GpIagK0vETpatYGe3AyGSZ3q+z/H1VrzuBdfNacuA+5TKuXIvhH/buz8QRawgt04L6a45xZWUj0hwqTWrmUOeC/ML64ovncm5T1E2HS/nTfEbf8ty6Foic+UvLvG4ZOO4t7nkmnv4MA2XbGA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5136.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(366004)(376002)(136003)(396003)(16526019)(186003)(26005)(6486002)(2906002)(2616005)(956004)(5660300002)(36756003)(66946007)(66476007)(66556008)(30864003)(83380400001)(110136005)(53546011)(52116002)(38350700002)(31696002)(16576012)(38100700002)(8676002)(6666004)(478600001)(31686004)(4326008)(66574015)(316002)(8936002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?VlRGMmZWcDhHazZnMXg2VHRvakJiMmwxNU5HRFppWklkMWZJNkVIMnZ4SkhG?= =?utf-8?B?UlkwK1lvWWVuaFFCUzJTakx4UVEwN1N0Ukd2dDlmV3ZMaHFiYWtFZUpyUEJE?= =?utf-8?B?S3RLZ2d1S2twMEplVHBRMWcrRU1tMmE2RjZXckVJcURUTjVmS1BhYVNNTjBY?= =?utf-8?B?bTVYYWpCZTNIcFFPRTZlR29DWm50Um1hMFBTbjlvNitmUzN2cXNjVVV0NDMw?= =?utf-8?B?Z1U1REtHd1VyUzAvUjg5SUw3VXBKb0hjdVB6aUtaRDlsZTdIWTc3TlUzbXFj?= =?utf-8?B?cUpHYllpT1RtNm5EalZiUEpBK3M5T1NIN0ovSjJFY1I1RXBPb0xwdzd4ZUFB?= =?utf-8?B?cFF0eUx6M3NjSkdhOEYwaWZ6Q0lRL28wektLUGlJaWY4bXhXK1BFTUk5Qity?= =?utf-8?B?TkJVMEFXQ3dia3M2RE1Sa2VxUW9KQVBRTk1LSkU2Z2RPN3RVVXNxUHBJbkRN?= =?utf-8?B?Yk9GUTFzTjdoMy8xYzZ5WXNqZ0Z1Q3B2UmVVRitoMjZ4eWFjaVhacXZUOGp5?= =?utf-8?B?Nlk2NE52dE5PcmFaVlN5MVdNTWxkY2dGZGIrNndQZzVWTytkbUJjdHowb2pL?= =?utf-8?B?anluajUzOVE1c2U4Y0p3cXVVTmJZbkE4ckcwUG5MdmdFd1JMK2FqSEYvSUZD?= =?utf-8?B?aGlmVFpzVGlPMkpsTHovRDZHbDkyK2ptY3JHbjRZNnZDOExZM0pEcWdBMUtZ?= =?utf-8?B?Z0lETUtiK1hyWThFOWU5QlVkN1REMmQxKy9OMkFtY2hoVWZXSjVuYzhRYVpZ?= =?utf-8?B?VFdDMGlXU0hoNXdkcm5PU1lRUGZPalFIY1FnY0U0YjZOeExPdmpYMWNVZkta?= =?utf-8?B?NkhrVjFoRy9TTTdPdXJlZHU4L3F6SDZDRFNLaS9aOXJDQUxPZHc1Vmc1YjlS?= =?utf-8?B?OUZLRGVldHRwN3dZWS9SVkpmaDR1dlN6UGtHMENSM2dsdEZyQk5iTVNmS2FR?= =?utf-8?B?VTNUS1hRNXEvRUZ1OEoxTDRUWmREVFpZdkZ2M0g2ZHFjS2Y3QUN6bDdsQ2pR?= =?utf-8?B?aGYxRndVc1JwSlhaUlhCVEFmN1A4akhQeUNWeWU5MWtST3FGUnNUNUQ4djda?= =?utf-8?B?VW03endWQkE0TEtxLzFRUlpWSkE4OGIxUGhKVnZnS0srZ0tsUmhzNkhJU1JE?= =?utf-8?B?VmJnVURzL0dyaHNmS2NYUXBWd3NYU3hEM3BVUklyTG1DMGJiY3ArRlJLanZ3?= =?utf-8?B?NDVqSS9WRCs3VkpZeTQ0aG1MN0RibDhaSXZJOHdieDVxelBaZ0Jsdm9jdUhU?= =?utf-8?B?QnMrWFNkTSthNzhHSFRRUzRpTkU5Nk5LYUVmY1BQTmdjNzdmQWNibDkrM0ZD?= =?utf-8?B?bVdEdTdNMmUzR0pEbEh5NTVHa1R3bGowZ0x6OEErVW03TjRoYmp3SktnVzg0?= =?utf-8?B?USsrZThaODdDck9ram1VQXc2Y0EzcnVIeUZ4aEMrRXRsRjVmNWYyRGNyam5U?= =?utf-8?B?TGhuQzFscHFzLzJUVVg5NDM5TXJRaG1jVW9yK1RjWDdmSGtab0tSWkN5QmxQ?= =?utf-8?B?QWNTcFJMdGFyTXJadFhrUFJhNEN3UUlEQWp5aTNFa0E1ZTNHWmg0NVhuZ0Zm?= =?utf-8?B?SVQxRkFlbFkxOXJjR1puNnVLVmtteXpVWDB5WWxaUFg1dHlGV1E4SXNrSWJ4?= =?utf-8?B?ZTlCaGg1bDdDa3Q0QVZ2eVJ5KzBlMk9JSmJDMmhpUDd1NW9wakkzOUNDODNv?= =?utf-8?B?N0tZYmZYRTFXVGc0R3BLRWZ1NjE5UUlDaStOQVRCa0Q2TW9jbDlzZ0NGK3lE?= =?utf-8?Q?2PabTU8y/fDnFBPWD+iQY4axUC24LW04a+/tGvm?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: de416009-b037-4df1-d974-08d9206c4ea8 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5136.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2021 17:32:59.9683 (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: 2U+AiAcb3zE2V2Jgv+h+tXGXq7tM8Awxl/vbYV3QFYVO1E9+Pf74woIzM8NeQ2c/eSzwvAzqPP1NjwbLbxkoTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB5552 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: alexander.deucher@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" SGkgQ2hyaXN0aWFuLAoKT24gNS8yNi8yMSA0OjU4IFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEFtIDI2LjA1LjIxIHVtIDE1OjA2IHNjaHJpZWIgTmlybW95IERhczoKPj4gVGhlIHN1YmNs YXNzLCBhbWRncHVfYm9fdm0gaXMgaW50ZW5kZWQgZm9yIFBUL1BEIEJPcyB3aGljaCBhcmUgYWxz bwo+PiBzaGFkb3dlZCwgc28gc3dpdGNoIHRvIGFtZGdwdV9ib192bSBCTyBmb3IgUFQvUEQgQk9z Lgo+Pgo+PiB2Mjogc3F1YXNoIHRocmVlIHJlbGF0ZWQgcGF0Y2hlcy4KPj4KPj4gU2lnbmVkLW9m Zi1ieTogTmlybW95IERhcyA8bmlybW95LmRhc0BhbWQuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmPCoMKgwqDCoMKgIHwgOTAgKysrKysrKysr KysrKy0tLS0tLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9z ZG1hLmMgfCAxNiArKy0tCj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwg MzkgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdm0uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dm0uYwo+PiBpbmRleCA2YmM3NTY2Y2MxOTMuLjgwZDUwZTZkNzVmOSAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gQEAgLTY1OCw5ICs2NTgsOSBAQCB2b2lk IGFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsKHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRl diwKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+ dGJvLCAmYm8tPnRiby5tZW0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAmdm0tPmxydV9idWxrX21vdmUpOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKGJvLT5z aGFkb3cpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19tb3ZlX3RvX2xydV90YWls KCZiby0+c2hhZG93LT50Ym8sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICZiby0+c2hhZG93LT50Ym8ubWVtLAo+PiArwqDCoMKgwqDCoMKgwqAgaWYg KGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4+ICsgdHRtX2JvX21vdmVfdG9f bHJ1X3RhaWwoJnRvX2FtZGdwdV9ib192bShibyktPnNoYWRvdy0+dGJvLAo+PiArICZ0b19hbWRn cHVfYm9fdm0oYm8pLT5zaGFkb3ctPnRiby5tZW0sCj4KPiBNYXliZSB1c2UgYSBsb2NhbCB2YXJp YWJsZSBmb3IgdGhlIHNoYWRvdyBCTyBoZXJlLgo+Cj4+ICZ2bS0+bHJ1X2J1bGtfbW92ZSk7Cj4+ IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZhZGV2LT5tbWFuLmJkZXYu bHJ1X2xvY2spOwo+PiBAQCAtNjk2LDggKzY5Niw4IEBAIGludCBhbWRncHVfdm1fdmFsaWRhdGVf cHRfYm9zKHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAq dm0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByID0gdmFsaWRhdGUocGFyYW0sIGJvKTsKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcjsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChiby0+c2hhZG93KSB7Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHIgPSB2YWxpZGF0ZShwYXJhbSwgYm8tPnNoYWRvdyk7Cj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoYm8tPnRiby50eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkgewo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByID0gdmFsaWRhdGUocGFyYW0sIHRvX2FtZGdwdV9ib192bShi byktPnNoYWRvdyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+PiBAQCAtNzkzLDggKzc5Myw5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2NsZWFy X2JvKHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gwqDCoMKgwqDCoCBpZiAocikK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+Pgo+PiAtwqDCoMKgIGlmIChiby0+c2hh ZG93KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCByID0gdHRtX2JvX3ZhbGlkYXRlKCZiby0+c2hhZG93 LT50Ym8sICZiby0+c2hhZG93LT5wbGFjZW1lbnQsCj4+ICvCoMKgwqAgaWYgKGJvLT50Ym8udHlw ZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHIgPSB0dG1fYm9f dmFsaWRhdGUoJnRvX2FtZGdwdV9ib192bShibyktPnNoYWRvdy0+dGJvLAo+PiArICZ0b19hbWRn cHVfYm9fdm0oYm8pLT5zaGFkb3ctPnBsYWNlbWVudCwKPgo+IFNhbWUgaGVyZS4KPgo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmN0eCk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7 Cj4+IEBAIC04NjMsMTQgKzg2NCwxNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9jbGVhcl9ibyhz dHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqAgKiBAdm06IHJlcXVlc3Rpbmcg dm0KPj4gwqDCoCAqIEBsZXZlbDogdGhlIHBhZ2UgdGFibGUgbGV2ZWwKPj4gwqDCoCAqIEBpbW1l ZGlhdGU6IHVzZSBhIGltbWVkaWF0ZSB1cGRhdGUKPj4gLSAqIEBibzogcG9pbnRlciB0byB0aGUg YnVmZmVyIG9iamVjdCBwb2ludGVyCj4+ICsgKiBAdm1ibzogcG9pbnRlciB0byB0aGUgYnVmZmVy IG9iamVjdCBwb2ludGVyCj4+IMKgwqAgKi8KPj4gwqAgc3RhdGljIGludCBhbWRncHVfdm1fcHRf Y3JlYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBsZXZlbCwgYm9vbCBpbW1lZGlhdGUs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9i byAqKmJvKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBh bWRncHVfYm9fdm0gKip2bWJvKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9i b19wYXJhbSBicDsKPj4gK8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKPj4gK8KgwqDCoCBz dHJ1Y3QgYW1kZ3B1X2JvICpzaGFkb3dfYm87Cj4+ICvCoMKgwqAgc3RydWN0IGRtYV9yZXN2ICpy ZXN2Owo+PiDCoMKgwqDCoMKgIGludCByOwo+Pgo+PiDCoMKgwqDCoMKgIG1lbXNldCgmYnAsIDAs IHNpemVvZihicCkpOwo+PiBAQCAtODgxLDcgKzg4NSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zt X3B0X2NyZWF0ZShzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqDCoMKgwqAg YnAuZG9tYWluID0gYW1kZ3B1X2JvX2dldF9wcmVmZXJyZWRfcGluX2RvbWFpbihhZGV2LCBicC5k b21haW4pOwo+PiDCoMKgwqDCoMKgIGJwLmZsYWdzID0gQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9D T05USUdVT1VTIHwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9H VFRfVVNXQzsKPj4gLcKgwqDCoCBicC5ib19wdHJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1 X2JvKTsKPj4gK8KgwqDCoCBicC5ib19wdHJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2Jv X3ZtKTsKPj4gwqDCoMKgwqDCoCBpZiAodm0tPnVzZV9jcHVfZm9yX3VwZGF0ZSkKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGJwLmZsYWdzIHw9IEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVR VUlSRUQ7Cj4+Cj4+IEBAIC04OTAsMjYgKzg5NCw0MyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9w dF9jcmVhdGUoc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDCoMKgwqDCoMKgIGlm ICh2bS0+cm9vdC5iYXNlLmJvKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYnAucmVzdiA9IHZtLT5y b290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3Y7Cj4+Cj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19j cmVhdGUoYWRldiwgJmJwLCBibyk7Cj4+ICvCoMKgwqAgciA9IGFtZGdwdV9ib19jcmVhdGVfdm0o YWRldiwgJmJwLCB2bWJvKTsKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByOwo+Cj4+ICvCoMKgwqAgYm8gPSAmKCp2bWJvKS0+Ym87Cj4+IMKgwqDCoMKg wqAgaWYgKHZtLT5pc19jb21wdXRlX2NvbnRleHQgJiYgKGFkZXYtPmZsYWdzICYgQU1EX0lTX0FQ VSkpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4KPj4gwqDCoMKgwqDCoCBpZiAo IWJwLnJlc3YpCj4+IC3CoMKgwqDCoMKgwqDCoCBXQVJOX09OKGRtYV9yZXN2X2xvY2soKCpibykt PnRiby5iYXNlLnJlc3YsCj4+ICvCoMKgwqDCoMKgwqDCoCBXQVJOX09OKGRtYV9yZXN2X2xvY2so Ym8tPnRiby5iYXNlLnJlc3YsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgTlVMTCkpOwo+PiAtwqDCoMKgIHIgPSBhbWRncHVfYm9fY3JlYXRlX3NoYWRv dyhhZGV2LCBicC5zaXplLCAqYm8pOwo+PiArwqDCoMKgIHJlc3YgPSBicC5yZXN2Owo+Cj4gTWF5 YmUgc2h1ZmZsZSB0aGF0IGNvZGUgYXJvdW5kIGEgYml0LCB0aGVuIHlvdSBvbmx5IG5lZWQgdGhl IHJlc3YgCj4gdmFyaWFibGUgYW5kIG5vIGxvbmdlciB0aGUgYm8gdmFyaWFibGUuCgoKSSBjYW4g cmVtb3ZlIHRoZSBzaGFkb3dfYm8gdmFyaWFibGUgYnV0IEkgbmVlZCB0aGUgYm8gZm9yIAphbWRn cHVfYm9fdW5yZWYoKSwgYXMgdGhpcyB0YWtlcyBhbWRncHVfYm8gKiogYXMgYXJndW1lbnQuCgoK UmVnYXJkcywKCk5pcm1veQoKCj4KPj4gK8KgwqDCoCBtZW1zZXQoJmJwLCAwLCBzaXplb2YoYnAp KTsKPj4gK8KgwqDCoCBicC5zaXplID0gYW1kZ3B1X3ZtX2JvX3NpemUoYWRldiwgbGV2ZWwpOwo+ PiArwqDCoMKgIGJwLmRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4gK8KgwqDCoCBi cC5mbGFncyA9IEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9HVFRfVVNXQzsKPj4gK8KgwqDCoCBicC50 eXBlID0gdHRtX2JvX3R5cGVfa2VybmVsOwo+PiArwqDCoMKgIGJwLnJlc3YgPSBiby0+dGJvLmJh c2UucmVzdjsKPj4gK8KgwqDCoCBicC5ib19wdHJfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1 X2JvKTsKPj4KPj4gLcKgwqDCoCBpZiAoIWJwLnJlc3YpCj4+IC3CoMKgwqDCoMKgwqDCoCBkbWFf cmVzdl91bmxvY2soKCpibyktPnRiby5iYXNlLnJlc3YpOwo+PiArwqDCoMKgIHIgPSBhbWRncHVf Ym9fY3JlYXRlKGFkZXYsICZicCwgJnNoYWRvd19ibyk7Cj4KPj4gKwo+PiArCj4KPiBSZW1vdmUg dGhlIHR3byBlbXB0eSBsaW5lcyBoZXJlCj4KPj4gK8KgwqDCoCBpZiAoIXJlc3YpCj4+ICvCoMKg wqDCoMKgwqDCoCBkbWFfcmVzdl91bmxvY2soYm8tPnRiby5iYXNlLnJlc3YpOwo+Pgo+PiDCoMKg wqDCoMKgIGlmIChyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZWYoYm8pOwo+ PiArwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZibyk7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gcjsKPj4gwqDCoMKgwqDCoCB9Cj4+Cj4+ICvCoMKgwqAgc2hhZG93X2JvLT5w YXJlbnQgPSBhbWRncHVfYm9fcmVmKGJvKTsKPj4gK8KgwqDCoCBtdXRleF9sb2NrKCZhZGV2LT5z aGFkb3dfbGlzdF9sb2NrKTsKPj4gK8KgwqDCoCBsaXN0X2FkZF90YWlsKCZzaGFkb3dfYm8tPnNo YWRvd19saXN0LCAmYWRldi0+c2hhZG93X2xpc3QpOwo+PiArwqDCoMKgIG11dGV4X3VubG9jaygm YWRldi0+c2hhZG93X2xpc3RfbG9jayk7Cj4+ICvCoMKgwqAgKCp2bWJvKS0+c2hhZG93ID0gc2hh ZG93X2JvOwo+Cj4gT2ssIHdlIHNob3VsZCBlaXRoZXIgbW92ZSB0aGUgc2hhZG93X2xpc3QgaW50 byB0aGUgdm1fbWdyIHN0cnVjdHVyZSBvciAKPiBrZWVwIHRoYXQgaW4gdGhlIG9iamVjdCBjb2Rl Lgo+Cj4gSSB0aGluayBJIHByZWZlciB0aGUgbGF0ZXIsIHNvbWV0aGluZyBsaWtlIAo+IGFtZGdw dV9ib19hZGRfdG9fc2hhZG93X2xpc3QoKS4KPgo+PiArCj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+IMKgIH0KPj4KPj4gQEAgLTkzMyw3ICs5NTQsOCBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9h bGxvY19wdHMoc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgaW1tZWRpYXRlKQo+PiDCoCB7Cj4+IMKg wqDCoMKgwqAgc3RydWN0IGFtZGdwdV92bV9wdCAqZW50cnkgPSBjdXJzb3ItPmVudHJ5Owo+PiAt wqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKnB0Owo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8g KnB0X2JvOwo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm9fdm0gKnB0Owo+PiDCoMKgwqDCoMKg IGludCByOwo+Pgo+PiDCoMKgwqDCoMKgIGlmIChjdXJzb3ItPmxldmVsIDwgQU1ER1BVX1ZNX1BU QiAmJiAhZW50cnktPmVudHJpZXMpIHsKPj4gQEAgLTk1NywxMCArOTc5LDExIEBAIHN0YXRpYyBp bnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ IMKgwqDCoMKgwqAgLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8g YXZvaWQKPj4gwqDCoMKgwqDCoMKgICogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBvcmRl ci4KPj4gwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqAgcHQtPnBhcmVudCA9IGFtZGdwdV9ib19y ZWYoY3Vyc29yLT5wYXJlbnQtPmJhc2UuYm8pOwo+PiAtwqDCoMKgIGFtZGdwdV92bV9ib19iYXNl X2luaXQoJmVudHJ5LT5iYXNlLCB2bSwgcHQpOwo+PiArwqDCoMKgIHB0X2JvID0gJnB0LT5ibzsK Pj4gK8KgwqDCoCBwdF9iby0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihjdXJzb3ItPnBhcmVudC0+ YmFzZS5ibyk7Cj4+ICvCoMKgwqAgYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5pdCgmZW50cnktPmJhc2Us IHZtLCBwdF9ibyk7Cj4+Cj4+IC3CoMKgwqAgciA9IGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2LCB2 bSwgcHQsIGltbWVkaWF0ZSk7Cj4+ICvCoMKgwqAgciA9IGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2 LCB2bSwgcHRfYm8sIGltbWVkaWF0ZSk7Cj4+IMKgwqDCoMKgwqAgaWYgKHIpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIGVycm9yX2ZyZWVfcHQ7Cj4+Cj4+IEBAIC05NjgsNyArOTkxLDcgQEAg c3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfcHRzKHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAq YWRldiwKPj4KPj4gwqAgZXJyb3JfZnJlZV9wdDoKPj4gwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5y ZWYoJnB0LT5zaGFkb3cpOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlZigmcHQpOwo+PiArwqDC oMKgIGFtZGdwdV9ib191bnJlZigmcHRfYm8pOwo+PiDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDC oCB9Cj4+Cj4+IEBAIC05ODIsNyArMTAwNSw4IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9mcmVl X3RhYmxlKHN0cnVjdCAKPj4gYW1kZ3B1X3ZtX3B0ICplbnRyeSkKPj4gwqDCoMKgwqDCoCBpZiAo ZW50cnktPmJhc2UuYm8pIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGVudHJ5LT5iYXNlLmJvLT52 bV9ibyA9IE5VTEw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2RlbCgmZW50cnktPmJhc2Uu dm1fc3RhdHVzKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlZigmZW50cnktPmJh c2UuYm8tPnNoYWRvdyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZW50cnktPmJhc2UuYm8tPnRi by50eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkKPgo+IFRoYXQgc2hvdWxkIGFsd2F5cyBiZSB0 cnVlLCBvdGhlcndpc2Ugd2UgaGF2ZSBhIHJhdGhlciBiaWcgYnVnLgo+Cj4gU28gbm8gbmVlZCB0 byBjaGVjayB0aGF0IGhlcmUuCj4KPj4gKyBhbWRncHVfYm9fdW5yZWYoJnRvX2FtZGdwdV9ib192 bShlbnRyeS0+YmFzZS5ibyktPnNoYWRvdyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVf Ym9fdW5yZWYoJmVudHJ5LT5iYXNlLmJvKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgwqDCoMKgwqAg a3ZmcmVlKGVudHJ5LT5lbnRyaWVzKTsKPj4gQEAgLTI2NzQsNyArMjY5OCw4IEBAIHZvaWQgYW1k Z3B1X3ZtX2JvX2ludmFsaWRhdGUoc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+PiDC oMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYm9fYmFzZTsKPj4KPj4gwqDCoMKg wqDCoCAvKiBzaGFkb3cgYm8gZG9lc24ndCBoYXZlIGJvIGJhc2UsIGl0cyB2YWxpZGF0aW9uIG5l ZWRzIGl0cyAKPj4gcGFyZW50ICovCj4+IC3CoMKgwqAgaWYgKGJvLT5wYXJlbnQgJiYgYm8tPnBh cmVudC0+c2hhZG93ID09IGJvKQo+PiArwqDCoMKgIGlmIChiby0+cGFyZW50ICYmIGJvLT50Ym8u dHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwgJiYKPj4gK8KgwqDCoMKgwqDCoMKgIHRvX2FtZGdw dV9ib192bShiby0+cGFyZW50KS0+c2hhZG93ID09IGJvKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg Ym8gPSBiby0+cGFyZW50Owo+Pgo+PiDCoMKgwqDCoMKgIGZvciAoYm9fYmFzZSA9IGJvLT52bV9i bzsgYm9fYmFzZTsgYm9fYmFzZSA9IGJvX2Jhc2UtPm5leHQpIHsKPj4gQEAgLTI4NDMsNyArMjg2 OCw4IEBAIGxvbmcgYW1kZ3B1X3ZtX3dhaXRfaWRsZShzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwgCj4+ IGxvbmcgdGltZW91dCkKPj4gwqDCoCAqLwo+PiDCoCBpbnQgYW1kZ3B1X3ZtX2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gCj4+ICp2bSwgdTMyIHBhc2lk KQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqcm9vdDsKPj4gK8KgwqDCoCBz dHJ1Y3QgYW1kZ3B1X2JvICpyb290X2JvOwo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm9fdm0g KnJvb3Q7Cj4+IMKgwqDCoMKgwqAgaW50IHIsIGk7Cj4+Cj4+IMKgwqDCoMKgwqAgdm0tPnZhID0g UkJfUk9PVF9DQUNIRUQ7Cj4+IEBAIC0yODk3LDE4ICsyOTIzLDE4IEBAIGludCBhbWRncHVfdm1f aW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAKPj4gKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZt LCB1MzIgcGFzaWQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2Us ICZyb290KTsKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyb3JfZnJlZV9kZWxheWVkOwo+PiAtCj4+IC3CoMKgwqAgciA9IGFtZGdwdV9ib19yZXNlcnZl KHJvb3QsIHRydWUpOwo+PiArwqDCoMKgIHJvb3RfYm8gPSAmcm9vdC0+Ym87Cj4+ICvCoMKgwqAg ciA9IGFtZGdwdV9ib19yZXNlcnZlKHJvb3RfYm8sIHRydWUpOwo+PiDCoMKgwqDCoMKgIGlmIChy KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl9mcmVlX3Jvb3Q7Cj4+Cj4+IC3CoMKg wqAgciA9IGRtYV9yZXN2X3Jlc2VydmVfc2hhcmVkKHJvb3QtPnRiby5iYXNlLnJlc3YsIDEpOwo+ PiArwqDCoMKgIHIgPSBkbWFfcmVzdl9yZXNlcnZlX3NoYXJlZChyb290X2JvLT50Ym8uYmFzZS5y ZXN2LCAxKTsKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyb3JfdW5yZXNlcnZlOwo+Pgo+PiAtwqDCoMKgIGFtZGdwdV92bV9ib19iYXNlX2luaXQoJnZt LT5yb290LmJhc2UsIHZtLCByb290KTsKPj4gK8KgwqDCoCBhbWRncHVfdm1fYm9fYmFzZV9pbml0 KCZ2bS0+cm9vdC5iYXNlLCB2bSwgcm9vdF9ibyk7Cj4+Cj4+IC3CoMKgwqAgciA9IGFtZGdwdV92 bV9jbGVhcl9ibyhhZGV2LCB2bSwgcm9vdCwgZmFsc2UpOwo+PiArwqDCoMKgIHIgPSBhbWRncHVf dm1fY2xlYXJfYm8oYWRldiwgdm0sIHJvb3RfYm8sIGZhbHNlKTsKPj4gwqDCoMKgwqDCoCBpZiAo cikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3JfdW5yZXNlcnZlOwo+Pgo+PiBAQCAt MjkzNSw4ICsyOTYxLDggQEAgaW50IGFtZGdwdV92bV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCAKPj4gc3RydWN0IGFtZGdwdV92bSAqdm0sIHUzMiBwYXNpZCkKPj4gwqDCoMKgwqDC oCBhbWRncHVfYm9fdW5yZXNlcnZlKHZtLT5yb290LmJhc2UuYm8pOwo+Pgo+PiDCoCBlcnJvcl9m cmVlX3Jvb3Q6Cj4+IC3CoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9vdC5iYXNlLmJvLT5z aGFkb3cpOwo+PiAtwqDCoMKgIGFtZGdwdV9ib191bnJlZigmdm0tPnJvb3QuYmFzZS5ibyk7Cj4+ ICvCoMKgwqAgYW1kZ3B1X2JvX3VucmVmKCZyb290LT5zaGFkb3cpOwo+PiArwqDCoMKgIGFtZGdw dV9ib191bnJlZigmcm9vdF9ibyk7Cj4+IMKgwqDCoMKgwqAgdm0tPnJvb3QuYmFzZS5ibyA9IE5V TEw7Cj4+Cj4+IMKgIGVycm9yX2ZyZWVfZGVsYXllZDoKPj4gQEAgLTMwNzgsNyArMzEwNCw3IEBA IGludCBhbWRncHVfdm1fbWFrZV9jb21wdXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+PiAqYWRl diwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+IMKgwqDCoMKgwqAgfQo+Pgo+PiDCoMKgwqDCoMKg IC8qIEZyZWUgdGhlIHNoYWRvdyBibyBmb3IgY29tcHV0ZSBWTSAqLwo+PiAtwqDCoMKgIGFtZGdw dV9ib191bnJlZigmdm0tPnJvb3QuYmFzZS5iby0+c2hhZG93KTsKPj4gKyBhbWRncHVfYm9fdW5y ZWYoJnRvX2FtZGdwdV9ib192bSh2bS0+cm9vdC5iYXNlLmJvKS0+c2hhZG93KTsKPj4KPj4gwqDC oMKgwqDCoCBpZiAocGFzaWQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2bS0+cGFzaWQgPSBwYXNp ZDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9z ZG1hLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtX3NkbWEuYwo+ PiBpbmRleCBhODNhNjQ2NzU5YzUuLjNkOWNmZjBjOWRkYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtX3NkbWEuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm1fc2RtYS5jCj4+IEBAIC00MSw4ICs0MSw4IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X3ZtX3NkbWFfbWFwX3RhYmxlKHN0cnVjdCAKPj4gYW1kZ3B1X2JvICp0 YWJsZSkKPj4gwqDCoMKgwqDCoCBpZiAocikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy Owo+Pgo+PiAtwqDCoMKgIGlmICh0YWJsZS0+c2hhZG93KQo+PiAtwqDCoMKgwqDCoMKgwqAgciA9 IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmdGFibGUtPnNoYWRvdy0+dGJvKTsKPj4gK8KgwqDCoCBp ZiAodGFibGUtPnRiby50eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkKPgo+Cj4gQWdhaW4gdGhh dCBjaGVjayBzaG91bGQgYmUgdW5lY2Vzc2FyeS4KPj4gK8KgwqDCoMKgwqDCoMKgIHIgPSAKPj4g YW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZ0b19hbWRncHVfYm9fdm0odGFibGUpLT5zaGFkb3ctPnRi byk7Cj4+Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+IMKgIH0KPj4gQEAgLTIzOCw4ICsyMzgs OSBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9zZG1hX3VwZGF0ZShzdHJ1Y3QgCj4+IGFtZGdwdV92 bV91cGRhdGVfcGFyYW1zICpwLAo+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFwLT5wYWdl c19hZGRyKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIHNldCBwYWdlIGNvbW1h bmRzIG5lZWRlZCAqLwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYm8tPnNoYWRvdykK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfdm1fc2RtYV9zZXRfcHRl cyhwLCBiby0+c2hhZG93LCBwZSwgYWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4KPiBTYW1lIGhlcmUuCj4KPj4g KyBhbWRncHVfdm1fc2RtYV9zZXRfcHRlcyhwLCB0b19hbWRncHVfYm9fdm0oYm8pLT5zaGFkb3cs Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcGUsIGFkZHIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY291bnQsIGluY3IsIGZsYWdzKTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYW1kZ3B1X3ZtX3NkbWFfc2V0X3B0ZXMocCwgYm8sIHBlLCBhZGRyLCBjb3Vu dCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW5jciwgZmxhZ3MpOwo+PiBAQCAtMjQ4LDcgKzI0OSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zt X3NkbWFfdXBkYXRlKHN0cnVjdCAKPj4gYW1kZ3B1X3ZtX3VwZGF0ZV9wYXJhbXMgKnAsCj4+Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBjb3B5IGNvbW1hbmRzIG5lZWRlZCAqLwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgbmR3IC09IHAtPmFkZXYtPnZtX21hbmFnZXIudm1fcHRlX2Z1bmNzLT5jb3B5 X3B0ZV9udW1fZHcgKgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYm8tPnNoYWRvdyA/IDIg OiAxKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKChiby0+dGJvLnR5cGUgPT0gdHRtX2Jv X3R5cGVfa2VybmVsKSA/IDIgOiAxKTsKPgo+IEFuZCB0aGF0IGhlcmUgd29uJ3Qgd29yayBhbmQg YWxsb2NhdGUgdG8gbXVjaCBTRE1BIHNwYWNlLgo+Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBmb3IgcGFkZGluZyAqLwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbmR3IC09IDc7Cj4+IEBAIC0y NjMsOCArMjY0LDkgQEAgc3RhdGljIGludCBhbWRncHVfdm1fc2RtYV91cGRhdGUoc3RydWN0IAo+ PiBhbWRncHVfdm1fdXBkYXRlX3BhcmFtcyAqcCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcHRlW2ldIHw9IGZsYWdzOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pgo+PiAtwqDCoMKg wqDCoMKgwqAgaWYgKGJvLT5zaGFkb3cpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdw dV92bV9zZG1hX2NvcHlfcHRlcyhwLCBiby0+c2hhZG93LCBwZSwgbnB0ZXMpOwo+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4gQW5kIHRo YXQgaXMgd3JvbmcgYXMgd2VsbC4KPgo+IENocmlzdGlhbi4KPgo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBhbWRncHVfdm1fc2RtYV9jb3B5X3B0ZXMocCwgdG9fYW1kZ3B1X2JvX3ZtKGJvKS0+ c2hhZG93LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBlLCBucHRlcyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfdm1fc2RtYV9jb3B5 X3B0ZXMocCwgYm8sIHBlLCBucHRlcyk7Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwZSArPSBu cHRlcyAqIDg7Cj4+IC0tIAo+PiAyLjMxLjEKPj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngK