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,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD66FC433DF for ; Tue, 7 Jul 2020 03:16:13 +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 79A1420702 for ; Tue, 7 Jul 2020 03:16:13 +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="JMvEFQOS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 79A1420702 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 DCA2389E15; Tue, 7 Jul 2020 03:16:12 +0000 (UTC) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2073.outbound.protection.outlook.com [40.107.93.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2124A89E15 for ; Tue, 7 Jul 2020 03:16:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OVqqn/pq8DiwdyZzHmTMHG9zgCLrfKNoAYMFNWxQ4qxPxwIbXU5zRFdFeXCenWmwJE4XRwYTUTgWFHyDqgyw9tbuQVCQfXflyPB+aRjXZD0Cb4EMT076v1ezFVHlysc/YoKqBtCvJvzixv0Bb1R8LndF4vA7gV4SjqNa2OroxlU11sJvT1yZyxd//s/FR1SqKXWz0RXktDjJpPi6eX4Kye9LAIxJOZYflVKQSmGFpz4qNCFIFpgzxQQIJOkFxRzYJMLVaul2jZBvKEfKAwSGRToep0/GfCUvlYF0YjKyycO2N+C2doI5qFNNehRFQbfZd/eKatiG/D3H4FlfBmpzdg== 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=sfbq9KKnbJBWSeAGfa4/kaoPo5SJXR0g6prdjGDpYF0=; b=Pi7X0iCTgFoozA6QviAtGCnn6M+NlTKd2QnnLIT+tDUwHr9poYNUZ5S04/83da3Zz73QM2g2/vz1gYqQKCTY0YxwNznxxU8w93knQEUH/MBvttKqj/CYimQZ+mvKW0yJ/DYR1GwfyjYhskBf5HjUrkpzyoSNkClexT312ufto8kvtM329Z0dAKE/GujD++mIH819dp0W84rtB+YCCLQVdzCKfEkrZoS69kADtzxE394SJTSxdt7sHD5nRh7AYJ0JdpKTycFY/NMxWwXc0En3/A1SM78piqbPAH4/DeFWZ9gF6taPPv0quchU5c+7Mkq8fRmR/wCtUsgA7hCc3WiE+A== 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=sfbq9KKnbJBWSeAGfa4/kaoPo5SJXR0g6prdjGDpYF0=; b=JMvEFQOSRnhT4UgZKhcycMrZWK71M4rNKrl609KZlgIedWedp8VLf3Sz49ZmEYkiss2yBI+gB+yQyl+Pw2PO5Cj2hWZH+6y5gKPYkINgsm79ymhAiEu3Y4pY0WxJyYYZauBItZbHgYrgo/T49yzDfNlLQR1iqyw3AiJW6tfckac= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from SN1PR12MB2414.namprd12.prod.outlook.com (2603:10b6:802:2e::31) by SN6PR12MB2686.namprd12.prod.outlook.com (2603:10b6:805:72::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.28; Tue, 7 Jul 2020 03:16:09 +0000 Received: from SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::180c:9e60:d3cd:e89d]) by SN1PR12MB2414.namprd12.prod.outlook.com ([fe80::180c:9e60:d3cd:e89d%3]) with mapi id 15.20.3153.029; Tue, 7 Jul 2020 03:16:09 +0000 Subject: Re: [PATCH] drm/amdgpu: fix system hang issue during GPU reset To: "Li, Dennis" , "amd-gfx@lists.freedesktop.org" , "Deucher, Alexander" , "Zhou1, Tao" , "Zhang, Hawking" , "Chen, Guchun" References: <20200706100113.25141-1-Dennis.Li@amd.com> <34860e8d-d501-bda0-8b23-63f35b344322@amd.com> <2da50150-8e8f-7425-5f95-87f010901f3f@amd.com> From: Felix Kuehling Message-ID: <2ea10855-fa95-c7bb-b648-26700a7dbe49@amd.com> Date: Mon, 6 Jul 2020 23:16:06 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 In-Reply-To: Content-Language: en-US X-ClientProxiedBy: YTOPR0101CA0022.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::35) To SN1PR12MB2414.namprd12.prod.outlook.com (2603:10b6:802:2e::31) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.2.100] (142.117.53.25) by YTOPR0101CA0022.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.23 via Frontend Transport; Tue, 7 Jul 2020 03:16:08 +0000 X-Originating-IP: [142.117.53.25] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b3713597-1e5e-4b38-58fc-08d8222417b9 X-MS-TrafficTypeDiagnostic: SN6PR12MB2686: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-Forefront-PRVS: 0457F11EAF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JqXZcy9DKaND/NL4vjgRUQNjvL7FZXL3daQNVRbshbgjALv6lc6egHScYvib+n0d5veqCzIZvOTMAruJLQHIHpkyCEG92w+vJnexOIimgzWhYZXUlLHErICUq4noB65z0iXl/0/dTxyjV8sSsT8wLHtyJvJjaVw+MTkhHt2lJZCyS06A/mCjgKWO0uj7sKd6aC0QUvU6/uEbhZ0vdZR5RkC0CbbVtVX5Sc6X4anvyfBj9CS0ebZqnTbhAyI7IKQFXWIV4K2ddcsQsz+Zbb8nd6ggdJIgTVupnp/uVwo2PG685lrwtJSHroMNaRAu670oIzb9Pfp6E0FelncU7A++/bmFRTL+hQopCI98IBDh+gkFwlugu1NKuCYKw0jvC+in0ODuFHg0cS20DZr3vGnt+Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN1PR12MB2414.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(6486002)(8676002)(44832011)(5660300002)(86362001)(66476007)(31686004)(66556008)(36756003)(66946007)(186003)(16526019)(478600001)(30864003)(53546011)(52116002)(31696002)(8936002)(110136005)(83380400001)(26005)(6636002)(956004)(316002)(2906002)(16576012)(2616005)(921003)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: jA10tLzWPvRb6uT6EITcz2nH6g/Zw2PXiWJcdi+jojNK3ompdFs2G7cs/qjFlTPcX6D/toDbtxTYG6m/iMtXcmQz+lti5GGeyRZCbEc3lmbKfn3igeS1yftsBbmDwaXK7vYpDUHGfA1xikRelC8WHQZCASvznm0S4KGZGUaffR4PXn3XWWdTgD/qViZIWALRYOnrJTgsR2MBFbupF65G6fF+dMc9EKl93O/0QLq7uFWrcRVreeI9gbIa+skNOCOE5VaOw5y4xMk1WAO1lLvrTV+UKRHGXm2JMGfbruoxXiEZzd/xYwKeylit9wV3gM1CSmG9KduTyGiQXIY48bO0gfNi/04am1W5pY0ZCP+GSBfuaCqhD2MxvxxeHIV0CplTRIy+0o/a5bIvzDc4UB2QfN/hJwxwT0vsk8K9ABjNhM0CbL0/wepOqDkM/ThKsZBCrGF5Al4DHREgI57L2W87Pr0BIBSWcu98+ry4VQWJehgcwPOLsmVtEU/MR9Bj8eUE X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3713597-1e5e-4b38-58fc-08d8222417b9 X-MS-Exchange-CrossTenant-AuthSource: SN1PR12MB2414.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2020 03:16:08.9592 (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: oRgJTw0TXhmfgIiekxEHx3koPer0BnfEJbDLySEfN2ZsamtTnGSxRCUQit8jbJOJkjOTujoQhAP6KjtK0Z+A2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2686 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" QW0gMjAyMC0wNy0wNiB1bSAxMDoyNiBwLm0uIHNjaHJpZWIgTGksIERlbm5pczoKPiBbQU1EIE9m ZmljaWFsIFVzZSBPbmx5IC0gSW50ZXJuYWwgRGlzdHJpYnV0aW9uIE9ubHldCj4KPiBIaSwgRmVs aXgsCj4gICAgICAgRG8geW91IG1lYW4gdGhhdCBLRkQgdXNlIGRxbS0+aXNfcmVzZXR0aW5nIGFu ZCBkcW1fbG9jayB0b2dldGhlciB0byBkbyB0aGlzIHByb3RlY3Rpb24sIGp1c3QgbGlrZSB0aGUg YmVsb3cgZnVuY3Rpb24/ICBJZiBzbywgdGhlcmUgaXMgYSBuZXcgcHJvYmxlbS4gV2hlbiBLRkQg ZmluZCBkcW0tPmlzX3Jlc2V0dGluZyBoYXMgYmVlbiBzZXQsIGhvdyB0byBoYW5kbGU/IAo+ICAg ICAgIGZ1bmN0aW9uICgpIHsKPiAJZHFtX2xvY2soZHFtKTsKPiAJaWYgKGRxbS0+aXNfcmVzZXR0 aW5nKQo+IAkJLy8gV2hhdCB0byBkbz8gcmV0dXJuIGVycm9yIG9yIG90aGVycz8gCgpLaW5kIG9m LiBkcW0tPmlzX3Jlc2V0dGluZyBpcyBvbmx5IGFjY2Vzc2VkIHdoaWxlIGhvbGRpbmcgdGhlIERR TSBsb2NrLgpTbyBhcyBsb25nIGFzIHlvdSBkb24ndCBicmVhayB0aGF0LCBkcW0tPmlzX3Jlc2V0 dGluZyBpcyBzYWZlIHRvIHVzZSBpbgptdWx0aXBsZSB0aHJlYWRzLgoKV2hhdCB0byBkbyB3aGVu IGRxbSBpcyByZXNldHRpbmc/IFlvdSBjYW4gYmFzaWNhbGx5IGp1c3Qgc2tpcCBhbnkgY2FsbHMK dGhhdCB3b3VsZCBhY2Nlc3MgaGFyZHdhcmUgYW5kIGFzc3VtZSB0aGF0IHRoZSBoYXJkd2FyZSB3 aWxsIGJlCnJlaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhlIHJlc2V0IGFueXdheS4gSW4gdGhlIHByZV9y ZXNldCBmdW5jdGlvbiwgd2Ugd2lsbAphY3R1YWxseSBzdG9wIHRoZSBEUU0gKGVpdGhlciB3aXRo IHN0b3BfY3BzY2ggb3Igc3RvcF9ub2Nwc2NoKS4gVGhpcwp3aWxsIHNldCBkcW0tPnNjaGVkX3J1 bm5pbmcgPSBmYWxzZSwgd2hpY2ggd2lsbCBwcmV2ZW50IEhXIGFjY2VzcyBpbiBhbGwKb3RoZXIg RFFNIGNhbGxzIGFmdGVyd2FyZHMuIFNvIHRoZSBvbmx5IEhXIGFjY2VzcyB5b3UgbmVlZCB0byBw cmV2ZW50CmJhc2VkIG9uIGRxbS0+aXNfcmVzZXR0aW5nIHdvdWxkIGJlIEhXIGFjY2VzcyB0aGF0 IGhhcHBlbnMgYmVmb3JlIHdlCnN0b3AgRFFNLgoKVGhhdCdzIGJhc2ljYWxseSBrZmRfc3VzcGVu ZF9hbGxfcHJvY2Vzc2VzIGNhbGxlZCBpbiBrZ2Qya2ZkX3N1c3BlbmQuClRoaXMgd2lsbCBjYWxs IGV2aWN0X3Byb2Nlc3NfcXVldWVzXyogaW4gRFFNLiBXaXRoIEhXUyB0aGF0IHdpbGwgdHJ5IHRv CnByZWVtcHQgYWxsIHRoZSBxdWV1ZXMgYnkgc2VuZGluZyBhbiB1bm1hcF9xdWV1ZXMgcGFja2V0 IHRvIHRoZSBISVEuCldpdGhvdXQgSFdTIGl0IHdpbGwgdHJ5IHRvIHByZWVtcHQgdGhlIHF1ZXVl cyB3aXRoIGhxZF9kZXN0cm95IGNhbGxzIGluCmFtZGdwdV9hbWRrZmdfZ2Z4X3YqLmMuIE9ubHkg dGhvc2UgZXZpY3RfcHJvY2Vzc19xdWV1ZXNfKiBjYWxscyB3b3VsZApuZWVkIHRvIGxvb2sgYXQg ZHFtLT5pc19yZXNldHRpbmcgYW5kIGp1c3Qgc2tpcCB0aGUgcXVldWUgcHJlZW1wdGlvbiBpZgp5 b3UgYmVsaWV2ZSBpdCdzIHNhZmVyIG5vdCB0byBhY2Nlc3MgdGhlIGhhcmR3YXJlIGF0IHRoYXQg cG9pbnQuIFdlCnNob3VsZCBzdGlsbCB1cGRhdGUgYWxsIHRoZSBxdWV1ZSBzdGF0ZSwgdG8ga2Vl cCB0aGUgaW50ZXJuYWwgc3RhdGUKY29uc2lzdGVudCBhbmQgbWFrZSBzdXJlIHRoZSBxdWV1ZXMg ZG9uJ3QgZ2V0IHJlc3RhcnRlZCBhZnRlciB0aGUgcmVzZXQuClRoYXQgbWVhbnMsIGp1c3Qgc2tp cCB0aGUgbXFkX21nci0+ZGVzdHJveV9tcWQgY2FsbHMgYW5kCmV4ZWN1dGVfcXVldWVzX2Nwc2No IGNhbGxzIGlmIGRxbS0+aXNfcmVzZXR0aW5nLgoKQWZ0ZXIgcHJlX3Jlc2V0IGlzIGRvbmUsIGRx bS0+c2NoZWRfcnVubmluZyA9PSBmYWxzZS4gWW91J2xsIHNlZSB0aGF0IHdlCmFscmVhZHkgY2hl Y2sgZHFtLT5zY2hlZF9ydW5uaW5nIGluIGEgYnVuY2ggb2YgcGxhY2VzIHRvIGF2b2lkIEhXCmFj Y2Vzcy4gVGhlc2UgY2hlY2tzIGFyZSB0aGVyZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lIGFz IHdlbGwuIEl0CnVzdWFsbHkganVzdCByZXR1cm5zIHN1Y2Nlc3MsIGFzc3VtaW5nIHRoYXQgdGhl IG5lY2Vzc2FyeSBIVyBhY2Nlc3Mgd2lsbApoYXBwZW4gbGF0ZXIgb25jZSB0aGUgRFFNIGlzIHJl c3RhcnRlZCBhbmQgcXVldWVzIGFyZSByZXN1bWVkLgoKVGhlIGRpZmZlcmVuY2UgYmV0d2VlZW4g c3VzcGVuZC9yZXN1bWUgYW5kIGEgR1BVIHJlc2V0IGlzLCB0aGF0IGFmdGVyIGEKR1BVIHJlc2V0 IHdlIGxlYXZlIHRoZSBxdWV1ZXMgZXZpY3RlZC4gV2UgZG9uJ3Qgd2FudCB0byByZXN0YXJ0IHVz ZXIKbW9kZSBxdWV1ZXMgaW4gYW4gdW5rbm93biBzdGF0ZS4gSW5zdGVhZCB3ZSBub3RpZnkgdXNl ciBtb2RlIGFuZCBsZXQKdGhlbSB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgYXMgZ3JhY2VmdWxseSBh cyBwb3NzaWJsZS4KClJlZ2FyZHMsCsKgIEZlbGl4CgoKPiAJZHFtX3VubG9jayhkcW0pOwo+ICAg ICAgIH0KPiAgICAgICBJbiBteSBzb2x1dGlvbiwgY3VycmVudCB0aHJlYWQgd2lsbCBiZSBwZW5k aW5nICx3YWl0aW5nIGZvciBHUFUgcmVzZXQgZmluaXNoZWQgYW5kIHRoZW4gY29udGludWUgd29y ay4gQlRXLCBJIGNvdWxkbid0IGZpbmQgbG9jayBkZXBlbmRlbmN5IGlzc3VlIGluIG15IHBhdGNo LCBjYW4geW91IHNob3cgbWUgdGhlIGRldGFpbHM/IFRoZSByZXNldF9zZW0gaXMgb25seSB1c2Vk IGluIEFNREdQVSBkcml2ZXIsIGlmIGl0IGlzIGxvY2tlZCBhbmQgdW5sb2NrZWQgaW4gcGFpciwg aXQgaXMgc2FmZS4gCj4KPiBCZXN0IFJlZ2FyZHMKPiBEZW5uaXMgTGkKPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQo+IEZyb206IEt1ZWhsaW5nLCBGZWxpeCA8RmVsaXguS3VlaGxpbmdAYW1k LmNvbT4gCj4gU2VudDogVHVlc2RheSwgSnVseSA3LCAyMDIwIDk6MzggQU0KPiBUbzogTGksIERl bm5pcyA8RGVubmlzLkxpQGFtZC5jb20+OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsg RGV1Y2hlciwgQWxleGFuZGVyIDxBbGV4YW5kZXIuRGV1Y2hlckBhbWQuY29tPjsgWmhvdTEsIFRh byA8VGFvLlpob3UxQGFtZC5jb20+OyBaaGFuZywgSGF3a2luZyA8SGF3a2luZy5aaGFuZ0BhbWQu Y29tPjsgQ2hlbiwgR3VjaHVuIDxHdWNodW4uQ2hlbkBhbWQuY29tPgo+IFN1YmplY3Q6IFJlOiBb UEFUQ0hdIGRybS9hbWRncHU6IGZpeCBzeXN0ZW0gaGFuZyBpc3N1ZSBkdXJpbmcgR1BVIHJlc2V0 Cj4KPiBBbSAyMDIwLTA3LTA2IHVtIDk6MTYgcC5tLiBzY2hyaWViIExpLCBEZW5uaXM6Cj4+IFtB TUQgT2ZmaWNpYWwgVXNlIE9ubHkgLSBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0KPj4KPj4g SGksIEZlbGl4LAo+PiAgICAgICBEcml2ZXIgc2hvdWxkIHVzZSB0aGUgc2FtZSBsb2NrIHRvIHBy b3RlY3QgaGFyZHdhcmUgZnJvbSBiZWluZyBhY2Nlc3NlZCBkdXJpbmcgR1BVIHJlc2V0LiBUaGUg ZmxhZyBkcW0tPmlzX3Jlc2V0dGluZyBjb3VsZG4ndCBwcmV2ZW50IGNhbGxzIHRoYXQgYWNjZXNz IGhhcmR3YXJlIGluIG11bHRpLXRocmVhZHMgY2FzZS4gCj4gVGhlIGZsYWcgaXMgc2VyaWFsaXpl ZCBieSB0aGUgRFFNIGxvY2suIFRoYXQgc2hvdWxkIGhhbmRsZSB0aGUgbXVsdGktdGhyZWFkZWQg Y2FzZS4gSnVzdCBtYWtlIHN1cmUgeW91IGRvbid0IHN0YXJ0IHRoZSByZXNldCB1bnRpbCBhZnRl ciBhbGwgdGhlIHByZV9yZXNldCBjYWxscyBhcmUgZG9uZS4KPgo+IFJlZ2FyZHMsCj4gwqAgRmVs aXgKPgo+PiBCZXN0IFJlZ2FyZHMKPj4gRGVubmlzIExpCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4+IEZyb206IEt1ZWhsaW5nLCBGZWxpeCA8RmVsaXguS3VlaGxpbmdAYW1kLmNvbT4K Pj4gU2VudDogVHVlc2RheSwgSnVseSA3LCAyMDIwIDU6NDMgQU0KPj4gVG86IExpLCBEZW5uaXMg PERlbm5pcy5MaUBhbWQuY29tPjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IAo+PiBE ZXVjaGVyLCBBbGV4YW5kZXIgPEFsZXhhbmRlci5EZXVjaGVyQGFtZC5jb20+OyBaaG91MSwgVGFv IAo+PiA8VGFvLlpob3UxQGFtZC5jb20+OyBaaGFuZywgSGF3a2luZyA8SGF3a2luZy5aaGFuZ0Bh bWQuY29tPjsgQ2hlbiwgCj4+IEd1Y2h1biA8R3VjaHVuLkNoZW5AYW1kLmNvbT4KPj4gU3ViamVj dDogUmU6IFtQQVRDSF0gZHJtL2FtZGdwdTogZml4IHN5c3RlbSBoYW5nIGlzc3VlIGR1cmluZyBH UFUgCj4+IHJlc2V0Cj4+Cj4+Cj4+IEFtIDIwMjAtMDctMDYgdW0gNjowMSBhLm0uIHNjaHJpZWIg RGVubmlzIExpOgo+Pj4gRHVyaW5nIEdQVSByZXNldCwgZHJpdmVyIHNob3VsZCBob2xkIG9uIGFs bCBleHRlcm5hbCBhY2Nlc3MgdG8gR1BVLCAKPj4+IG90aGVyd2lzZSBwc3Agd2lsbCByYW5kb21s eSBmYWlsIHRvIGRvIHBvc3QsIGFuZCB0aGVuIGNhdXNlIHN5c3RlbSAKPj4+IGhhbmcuCj4+Pgo+ Pj4gU2lnbmVkLW9mZi1ieTogRGVubmlzIExpIDxkZW5uaXMubGlAYW1kLmNvbT4KPj4+IENoYW5n ZS1JZDogSTdkNWQ0MWY5YzQxOThiOTE3ZDdiNDk2MDZiYTM4NTA5ODhlNWI5MzYKPj4+Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+IGluZGV4IDZjN2RkMGE3MDdjOS4u MzRiZmMyYTE0N2ZmIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+ PiBAQCAtOTY1LDcgKzk2NSw3IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNlIHsKPj4+ICAKPj4+ICAJ Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9ncHVfcmVzZXQ7Cj4+PiAgCWVudW0g cHBfbXAxX3N0YXRlICAgICAgICAgICAgICAgbXAxX3N0YXRlOwo+Pj4gLQlzdHJ1Y3QgbXV0ZXgg IGxvY2tfcmVzZXQ7Cj4+PiArCXN0cnVjdCByd19zZW1hcGhvcmUJcmVzZXRfc2VtOwo+Pj4gIAlz dHJ1Y3QgYW1kZ3B1X2Rvb3JiZWxsX2luZGV4IGRvb3JiZWxsX2luZGV4Owo+Pj4gIAo+Pj4gIAlz dHJ1Y3QgbXV0ZXgJCQlub3RpZmllcl9sb2NrOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMKPj4+IGluZGV4IGFkNTlhYzQ0MjNiOC4uNDEzOWM4MTM4 OWE0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ft ZGtmZC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk LmMKPj4+IEBAIC02MTEsNyArNjExLDkgQEAgaW50IGFtZGdwdV9hbWRrZmRfc3VibWl0X2liKHN0 cnVjdCBrZ2RfZGV2ICprZ2QsIGVudW0ga2dkX2VuZ2luZV90eXBlIGVuZ2luZSwKPj4+ICAJLyog VGhpcyB3b3JrcyBmb3IgTk9fSFdTLiBUT0RPOiBuZWVkIHRvIGhhbmRsZSB3aXRob3V0IGtub3dp bmcgVk1JRCAqLwo+Pj4gIAlqb2ItPnZtaWQgPSB2bWlkOwo+Pj4gIAo+Pj4gKwlkb3duX3JlYWQo JmFkZXYtPnJlc2V0X3NlbSk7Cj4+IFRoaXMgKGFuZCBvdGhlciBpbnN0YW5jZXMgYmVsb3cpIHdp bGwgaW50cm9kdWNlIHNvbWUgbG9jayBkZXBlbmRlbmN5IGlzc3Vlcy4gQW55IGxvY2sgdGhhdCB5 b3UgdGFrZSB1bmRlciBLRkQncyBEUU0gbG9jayB3aWxsIGluaGVyaXQgdGhlIHByb2JsZW0gdGhh dCB5b3UgY2FuJ3QgcmVjbGFpbSBtZW1vcnkgd2hpbGUgaG9sZGluZyBpdCBiZWNhdXNlIHRoZSBE UU0gbG9jayBpcyB0YWtlbiBpbiBNTVUgbm90aWZpZXJzLiBUaGF0IHdpbGwgYWZmZWN0IGFueSBh dHRlbXB0cyBvZiBhbGxvY2F0aW5nIG1lbW9yeSB3aGlsZSBob2xkaW5nIHRoZSByZXNldF9zZW0u Cj4+Cj4+IERRTSBhbHJlYWR5IGhhcyBhbiBpbnRlcm5hbCBmbGFnIGRxbS0+aXNfcmVzZXR0aW5n IHRoYXQgaXMgc2V0IGluIHRoZSBLRkQgcHJlX3Jlc2V0IGNhbGxiYWNrLiBJdCB3b3VsZCBiZSBi ZXR0ZXIgdG8gdXNlIHRoYXQgaW4gRFFNIHRvIHByZXZlbnQgYW55IGNhbGxzIHRoYXQgYWNjZXNz IGhhcmR3YXJlLgo+Pgo+PiBSZWdhcmRzLAo+PiDCoCBGZWxpeAo+Pgo+Pgo+Pj4gIAlyZXQgPSBh bWRncHVfaWJfc2NoZWR1bGUocmluZywgMSwgaWIsIGpvYiwgJmYpOwo+Pj4gKwl1cF9yZWFkKCZh ZGV2LT5yZXNldF9zZW0pOwo+Pj4gIAlpZiAocmV0KSB7Cj4+PiAgCQlEUk1fRVJST1IoImFtZGdw dTogZmFpbGVkIHRvIHNjaGVkdWxlIElCLlxuIik7Cj4+PiAgCQlnb3RvIGVycl9pYl9zY2hlZDsK Pj4+IEBAIC02NDksNiArNjUxLDggQEAgaW50IGFtZGdwdV9hbWRrZmRfZmx1c2hfZ3B1X3RsYl92 bWlkKHN0cnVjdAo+Pj4ga2dkX2RldiAqa2dkLCB1aW50MTZfdCB2bWlkKSAgewo+Pj4gIAlzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWtnZDsKPj4+ ICAKPj4+ICsJZG93bl9yZWFkKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gKwo+Pj4gIAlpZiAoYWRl di0+ZmFtaWx5ID09IEFNREdQVV9GQU1JTFlfQUkpIHsKPj4+ICAJCWludCBpOwo+Pj4gIAo+Pj4g QEAgLTY1OCw2ICs2NjIsOCBAQCBpbnQgYW1kZ3B1X2FtZGtmZF9mbHVzaF9ncHVfdGxiX3ZtaWQo c3RydWN0IGtnZF9kZXYgKmtnZCwgdWludDE2X3Qgdm1pZCkKPj4+ICAJCWFtZGdwdV9nbWNfZmx1 c2hfZ3B1X3RsYihhZGV2LCB2bWlkLCBBTURHUFVfR0ZYSFVCXzAsIDApOwo+Pj4gIAl9Cj4+PiAg Cj4+PiArCXVwX3JlYWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiArCj4+PiAgCXJldHVybiAwOwo+ Pj4gIH0KPj4+ICAKPj4+IEBAIC02NjYsMTEgKzY3MiwxOCBAQCBpbnQgYW1kZ3B1X2FtZGtmZF9m bHVzaF9ncHVfdGxiX3Bhc2lkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQxNl90IHBhc2lkKQo+ Pj4gIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWtnZDsKPj4+ICAJY29uc3QgdWludDMyX3QgZmx1c2hfdHlwZSA9IDA7Cj4+PiAgCWJvb2wgYWxs X2h1YiA9IGZhbHNlOwo+Pj4gKwlpbnQgcmV0ID0gMDsKPj4+ICAKPj4+ICAJaWYgKGFkZXYtPmZh bWlseSA9PSBBTURHUFVfRkFNSUxZX0FJKQo+Pj4gIAkJYWxsX2h1YiA9IHRydWU7Cj4+PiAgCj4+ PiAtCXJldHVybiBhbWRncHVfZ21jX2ZsdXNoX2dwdV90bGJfcGFzaWQoYWRldiwgcGFzaWQsIGZs dXNoX3R5cGUsIGFsbF9odWIpOwo+Pj4gKwlkb3duX3JlYWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+ PiArCj4+PiArCXJldCA9IGFtZGdwdV9nbWNfZmx1c2hfZ3B1X3RsYl9wYXNpZChhZGV2LCBwYXNp ZCwgZmx1c2hfdHlwZSwgCj4+PiArYWxsX2h1Yik7Cj4+PiArCj4+PiArCXVwX3JlYWQoJmFkZXYt PnJlc2V0X3NlbSk7Cj4+PiArCj4+PiArCXJldHVybiByZXQ7Cj4+PiAgfQo+Pj4gIAo+Pj4gIGJv b2wgYW1kZ3B1X2FtZGtmZF9oYXZlX2F0b21pY3Nfc3VwcG9ydChzdHJ1Y3Qga2dkX2RldiAqa2dk KSBkaWZmIAo+Pj4gLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92MTAuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92MTAuYwo+Pj4gaW5kZXggNjkxYzg5NzA1YmNkLi5kYjVkNTMzZGQ0MDYgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92 MTAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n ZnhfdjEwLmMKPj4+IEBAIC01NDIsNiArNTQyLDcgQEAgc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ry b3koc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLAo+Pj4gIAl1bnNpZ25lZCBsb25nIGVu ZF9qaWZmaWVzOwo+Pj4gIAl1aW50MzJfdCB0ZW1wOwo+Pj4gIAlzdHJ1Y3QgdjEwX2NvbXB1dGVf bXFkICptID0gZ2V0X21xZChtcWQpOwo+Pj4gKwlpbnQgcmV0ID0gMDsKPj4+ICAKPj4+ICAJaWYg KGFkZXYtPmluX2dwdV9yZXNldCkKPj4+ICAJCXJldHVybiAtRUlPOwo+Pj4gQEAgLTU1MSw2ICs1 NTIsOCBAQCBzdGF0aWMgaW50IGtnZF9ocWRfZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2 b2lkICptcWQsCj4+PiAgCWludCByZXRyeTsKPj4+ICAjZW5kaWYKPj4+ICAKPj4+ICsJZG93bl9y ZWFkKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gKwo+Pj4gIAlhY3F1aXJlX3F1ZXVlKGtnZCwgcGlw ZV9pZCwgcXVldWVfaWQpOwo+Pj4gIAo+Pj4gIAlpZiAobS0+Y3BfaHFkX3ZtaWQgPT0gMCkKPj4+ IEBAIC02MzMsMTQgKzYzNiwxNiBAQCBzdGF0aWMgaW50IGtnZF9ocWRfZGVzdHJveShzdHJ1Y3Qg a2dkX2RldiAqa2dkLCB2b2lkICptcWQsCj4+PiAgCQkJYnJlYWs7Cj4+PiAgCQlpZiAodGltZV9h ZnRlcihqaWZmaWVzLCBlbmRfamlmZmllcykpIHsKPj4+ICAJCQlwcl9lcnIoImNwIHF1ZXVlIHBy ZWVtcHRpb24gdGltZSBvdXQuXG4iKTsKPj4+IC0JCQlyZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAt CQkJcmV0dXJuIC1FVElNRTsKPj4+ICsJCQlyZXQgPSAtRVRJTUU7Cj4+PiArCQkJZ290byBwcm9f ZW5kOwo+Pj4gIAkJfQo+Pj4gIAkJdXNsZWVwX3JhbmdlKDUwMCwgMTAwMCk7Cj4+PiAgCX0KPj4+ ICAKPj4+ICtwcm9fZW5kOgo+Pj4gIAlyZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAtCXJldHVybiAw Owo+Pj4gKwl1cF9yZWFkKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4g IH0KPj4+ICAKPj4+ICBzdGF0aWMgaW50IGtnZF9ocWRfc2RtYV9kZXN0cm95KHN0cnVjdCBrZ2Rf ZGV2ICprZ2QsIHZvaWQgKm1xZCwgZGlmZiAKPj4+IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jCj4+PiBpbmRleCAwYjdlNzg3NDg1NDAuLmNm MjdmZTUwOTFhYSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKPj4+IEBAIC00MjQsMTAgKzQyNCwxMyBAQCBzdGF0aWMg aW50IGtnZF9ocWRfZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsCj4+PiAg CWVudW0gaHFkX2RlcXVldWVfcmVxdWVzdF90eXBlIHR5cGU7Cj4+PiAgCXVuc2lnbmVkIGxvbmcg ZmxhZ3MsIGVuZF9qaWZmaWVzOwo+Pj4gIAlpbnQgcmV0cnk7Cj4+PiArCWludCByZXQgPSAwOwo+ Pj4gIAo+Pj4gIAlpZiAoYWRldi0+aW5fZ3B1X3Jlc2V0KQo+Pj4gIAkJcmV0dXJuIC1FSU87Cj4+ PiAgCj4+PiArCWRvd25fcmVhZCgmYWRldi0+cmVzZXRfc2VtKTsKPj4+ICsKPj4+ICAJYWNxdWly ZV9xdWV1ZShrZ2QsIHBpcGVfaWQsIHF1ZXVlX2lkKTsKPj4+ICAJV1JFRzMyKG1tQ1BfSFFEX1BR X0RPT1JCRUxMX0NPTlRST0wsIDApOwo+Pj4gIAo+Pj4gQEAgLTUwNiwxNCArNTA5LDE2IEBAIHN0 YXRpYyBpbnQga2dkX2hxZF9kZXN0cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwK Pj4+ICAJCQlicmVhazsKPj4+ICAJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF9qaWZmaWVz KSkgewo+Pj4gIAkJCXByX2VycigiY3AgcXVldWUgcHJlZW1wdGlvbiB0aW1lIG91dFxuIik7Cj4+ PiAtCQkJcmVsZWFzZV9xdWV1ZShrZ2QpOwo+Pj4gLQkJCXJldHVybiAtRVRJTUU7Cj4+PiArCQkJ cmV0ID0gLUVUSU1FOwo+Pj4gKwkJCWdvdG8gcHJvX2VuZDsKPj4+ICAJCX0KPj4+ICAJCXVzbGVl cF9yYW5nZSg1MDAsIDEwMDApOwo+Pj4gIAl9Cj4+PiAgCj4+PiArcHJvX2VuZDoKPj4+ICAJcmVs ZWFzZV9xdWV1ZShrZ2QpOwo+Pj4gLQlyZXR1cm4gMDsKPj4+ICsJdXBfcmVhZCgmYWRldi0+cmVz ZXRfc2VtKTsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICB9Cj4+PiAgCj4+PiAgc3RhdGljIGludCBr Z2RfaHFkX3NkbWFfZGVzdHJveShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQsIGRpZmYg Cj4+PiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4 X3Y4LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhf djguYwo+Pj4gaW5kZXggY2NkNjM1YjgxMmI1Li5iYzhlMDcxODZhODUgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCj4+ PiBAQCAtNDIwLDEwICs0MjAsMTMgQEAgc3RhdGljIGludCBrZ2RfaHFkX2Rlc3Ryb3koc3RydWN0 IGtnZF9kZXYgKmtnZCwgdm9pZCAqbXFkLAo+Pj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzLCBlbmRf amlmZmllczsKPj4+ICAJaW50IHJldHJ5Owo+Pj4gIAlzdHJ1Y3QgdmlfbXFkICptID0gZ2V0X21x ZChtcWQpOwo+Pj4gKwlpbnQgcmV0ID0gMDsKPj4+ICAKPj4+ICAJaWYgKGFkZXYtPmluX2dwdV9y ZXNldCkKPj4+ICAJCXJldHVybiAtRUlPOwo+Pj4gIAo+Pj4gKwlkb3duX3JlYWQoJmFkZXYtPnJl c2V0X3NlbSk7Cj4+PiArCj4+PiAgCWFjcXVpcmVfcXVldWUoa2dkLCBwaXBlX2lkLCBxdWV1ZV9p ZCk7Cj4+PiAgCj4+PiAgCWlmIChtLT5jcF9ocWRfdm1pZCA9PSAwKQo+Pj4gQEAgLTUwNCwxNCAr NTA3LDE2IEBAIHN0YXRpYyBpbnQga2dkX2hxZF9kZXN0cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2Qs IHZvaWQgKm1xZCwKPj4+ICAJCQlicmVhazsKPj4+ICAJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMs IGVuZF9qaWZmaWVzKSkgewo+Pj4gIAkJCXByX2VycigiY3AgcXVldWUgcHJlZW1wdGlvbiB0aW1l IG91dC5cbiIpOwo+Pj4gLQkJCXJlbGVhc2VfcXVldWUoa2dkKTsKPj4+IC0JCQlyZXR1cm4gLUVU SU1FOwo+Pj4gKwkJCXJldCA9IC1FVElNRTsKPj4+ICsJCQlnb3RvIHByb19lbmQ7Cj4+PiAgCQl9 Cj4+PiAgCQl1c2xlZXBfcmFuZ2UoNTAwLCAxMDAwKTsKPj4+ICAJfQo+Pj4gIAo+Pj4gK3Byb19l bmQ6Cj4+PiAgCXJlbGVhc2VfcXVldWUoa2dkKTsKPj4+IC0JcmV0dXJuIDA7Cj4+PiArCXVwX3Jl YWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiArCXJldHVybiByZXQ7Cj4+PiAgfQo+Pj4gIAo+Pj4g IHN0YXRpYyBpbnQga2dkX2hxZF9zZG1hX2Rlc3Ryb3koc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9p ZCAqbXFkLCBkaWZmIAo+Pj4gLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dmeF92OS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9hbWRrZmRfZ2Z4X3Y5LmMKPj4+IGluZGV4IGRmODQxYzJhYzVlNy4uMzQxYWQ2NTJkOTEwIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n ZnhfdjkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtm ZF9nZnhfdjkuYwo+Pj4gQEAgLTU0MCwxMCArNTQwLDEzIEBAIGludCBrZ2RfZ2Z4X3Y5X2hxZF9k ZXN0cm95KHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwKPj4+ICAJdW5zaWduZWQgbG9u ZyBlbmRfamlmZmllczsKPj4+ICAJdWludDMyX3QgdGVtcDsKPj4+ICAJc3RydWN0IHY5X21xZCAq bSA9IGdldF9tcWQobXFkKTsKPj4+ICsJaW50IHJldCA9IDA7Cj4+PiAgCj4+PiAgCWlmIChhZGV2 LT5pbl9ncHVfcmVzZXQpCj4+PiAgCQlyZXR1cm4gLUVJTzsKPj4+ICAKPj4+ICsJZG93bl9yZWFk KCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gKwo+Pj4gIAlhY3F1aXJlX3F1ZXVlKGtnZCwgcGlwZV9p ZCwgcXVldWVfaWQpOwo+Pj4gIAo+Pj4gIAlpZiAobS0+Y3BfaHFkX3ZtaWQgPT0gMCkKPj4+IEBA IC01NzAsMTQgKzU3MywxNiBAQCBpbnQga2dkX2dmeF92OV9ocWRfZGVzdHJveShzdHJ1Y3Qga2dk X2RldiAqa2dkLCB2b2lkICptcWQsCj4+PiAgCQkJYnJlYWs7Cj4+PiAgCQlpZiAodGltZV9hZnRl cihqaWZmaWVzLCBlbmRfamlmZmllcykpIHsKPj4+ICAJCQlwcl9lcnIoImNwIHF1ZXVlIHByZWVt cHRpb24gdGltZSBvdXQuXG4iKTsKPj4+IC0JCQlyZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAtCQkJ cmV0dXJuIC1FVElNRTsKPj4+ICsJCQlyZXQgPSAtRVRJTUU7Cj4+PiArCQkJZ290byBwcm9fZW5k Owo+Pj4gIAkJfQo+Pj4gIAkJdXNsZWVwX3JhbmdlKDUwMCwgMTAwMCk7Cj4+PiAgCX0KPj4+ICAK Pj4+ICtwcm9fZW5kOgo+Pj4gIAlyZWxlYXNlX3F1ZXVlKGtnZCk7Cj4+PiAtCXJldHVybiAwOwo+ Pj4gKwl1cF9yZWFkKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gIH0K Pj4+ICAKPj4+ICBzdGF0aWMgaW50IGtnZF9ocWRfc2RtYV9kZXN0cm95KHN0cnVjdCBrZ2RfZGV2 ICprZ2QsIHZvaWQgKm1xZCwgZGlmZiAKPj4+IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RlYnVnZnMuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGVidWdmcy5jCj4+PiBpbmRleCBhZWFkYTdjOWZiZWEuLmQ4ZjI2NGM0N2I4NiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmMKPj4+ IEBAIC0xMDAsMTQgKzEwMCwxNCBAQCBzdGF0aWMgaW50IGFtZGdwdV9kZWJ1Z2ZzX2F1dG9kdW1w X29wZW4oc3RydWN0Cj4+PiBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+Pj4gIAo+ Pj4gIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBhZGV2Owo+Pj4gIAo+Pj4gLQltdXRleF9sb2NrKCZh ZGV2LT5sb2NrX3Jlc2V0KTsKPj4+ICsJZG93bl9yZWFkKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4g IAlpZiAoYWRldi0+YXV0b2R1bXAuZHVtcGluZy5kb25lKSB7Cj4+PiAgCQlyZWluaXRfY29tcGxl dGlvbigmYWRldi0+YXV0b2R1bXAuZHVtcGluZyk7Cj4+PiAgCQlyZXQgPSAwOwo+Pj4gIAl9IGVs c2Ugewo+Pj4gIAkJcmV0ID0gLUVCVVNZOwo+Pj4gIAl9Cj4+PiAtCW11dGV4X3VubG9jaygmYWRl di0+bG9ja19yZXNldCk7Cj4+PiArCXVwX3JlYWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAgCj4+ PiAgCXJldHVybiByZXQ7Cj4+PiAgfQo+Pj4gQEAgLTExODgsNyArMTE4OCw3IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2RlYnVnZnNfdGVzdF9pYihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4+PiAgCX0KPj4+ICAKPj4+ICAJLyogQXZvaWQgYWNjaWRlbnRseSB1bnBhcmtpbmcgdGhlIHNj aGVkIHRocmVhZCBkdXJpbmcgR1BVIHJlc2V0ICovCj4+PiAtCW11dGV4X2xvY2soJmFkZXYtPmxv Y2tfcmVzZXQpOwo+Pj4gKwlkb3duX3JlYWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAgCj4+PiAg CS8qIGhvbGQgb24gdGhlIHNjaGVkdWxlciAqLwo+Pj4gIAlmb3IgKGkgPSAwOyBpIDwgQU1ER1BV X01BWF9SSU5HUzsgaSsrKSB7IEBAIC0xMjE1LDcgKzEyMTUsNyBAQCAKPj4+IHN0YXRpYyBpbnQg YW1kZ3B1X2RlYnVnZnNfdGVzdF9pYihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4+ PiAgCQlrdGhyZWFkX3VucGFyayhyaW5nLT5zY2hlZC50aHJlYWQpOwo+Pj4gIAl9Cj4+PiAgCj4+ PiAtCW11dGV4X3VubG9jaygmYWRldi0+bG9ja19yZXNldCk7Cj4+PiArCXVwX3JlYWQoJmFkZXYt PnJlc2V0X3NlbSk7Cj4+PiAgCj4+PiAgCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koZGV2LT5k ZXYpOwo+Pj4gIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYtPmRldik7Cj4+PiBAQCAt MTM5NSw3ICsxMzk1LDcgQEAgc3RhdGljIGludCBhbWRncHVfZGVidWdmc19pYl9wcmVlbXB0KHZv aWQgKmRhdGEsIHU2NCB2YWwpCj4+PiAgCQlyZXR1cm4gLUVOT01FTTsKPj4+ICAKPj4+ICAJLyog QXZvaWQgYWNjaWRlbnRseSB1bnBhcmtpbmcgdGhlIHNjaGVkIHRocmVhZCBkdXJpbmcgR1BVIHJl c2V0ICovCj4+PiAtCW11dGV4X2xvY2soJmFkZXYtPmxvY2tfcmVzZXQpOwo+Pj4gKwlkb3duX3Jl YWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAgCj4+PiAgCS8qIHN0b3AgdGhlIHNjaGVkdWxlciAq Lwo+Pj4gIAlrdGhyZWFkX3BhcmsocmluZy0+c2NoZWQudGhyZWFkKTsKPj4+IEBAIC0xNDM2LDcg KzE0MzYsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9kZWJ1Z2ZzX2liX3ByZWVtcHQodm9pZCAqZGF0 YSwgdTY0IHZhbCkKPj4+ICAJLyogcmVzdGFydCB0aGUgc2NoZWR1bGVyICovCj4+PiAgCWt0aHJl YWRfdW5wYXJrKHJpbmctPnNjaGVkLnRocmVhZCk7Cj4+PiAgCj4+PiAtCW11dGV4X3VubG9jaygm YWRldi0+bG9ja19yZXNldCk7Cj4+PiArCXVwX3JlYWQoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAg Cj4+PiAgCXR0bV9ib191bmxvY2tfZGVsYXllZF93b3JrcXVldWUoJmFkZXYtPm1tYW4uYmRldiwg cmVzY2hlZCk7Cj4+PiAgCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kZXZpY2UuYwo+Pj4gaW5kZXggMjg1OGMwOWZkOGMwLi5iYzkwMmM1OWMxYzAgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4gQEAgLTMw NDQsNyArMzA0NCw3IEBAIGludCBhbWRncHVfZGV2aWNlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4+PiAgCW11dGV4X2luaXQoJmFkZXYtPm1uX2xvY2spOwo+Pj4gIAltdXRleF9p bml0KCZhZGV2LT52aXJ0LnZmX2Vycm9ycy5sb2NrKTsKPj4+ICAJaGFzaF9pbml0KGFkZXYtPm1u X2hhc2gpOwo+Pj4gLQltdXRleF9pbml0KCZhZGV2LT5sb2NrX3Jlc2V0KTsKPj4+ICsJaW5pdF9y d3NlbSgmYWRldi0+cmVzZXRfc2VtKTsKPj4+ICAJbXV0ZXhfaW5pdCgmYWRldi0+cHNwLm11dGV4 KTsKPj4+ICAJbXV0ZXhfaW5pdCgmYWRldi0+bm90aWZpZXJfbG9jayk7Cj4+PiAgCj4+PiBAQCAt NDE1MCwxMCArNDE1MCwxMCBAQCBzdGF0aWMgaW50IGFtZGdwdV9kb19hc2ljX3Jlc2V0KHN0cnVj dCAKPj4+IGFtZGdwdV9oaXZlX2luZm8gKmhpdmUsICBzdGF0aWMgYm9vbCBhbWRncHVfZGV2aWNl X2xvY2tfYWRldihzdHJ1Y3QgCj4+PiBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIHRyeWxvY2sp ICB7Cj4+PiAgCWlmICh0cnlsb2NrKSB7Cj4+PiAtCQlpZiAoIW11dGV4X3RyeWxvY2soJmFkZXYt PmxvY2tfcmVzZXQpKQo+Pj4gKwkJaWYgKCFkb3duX3dyaXRlX3RyeWxvY2soJmFkZXYtPnJlc2V0 X3NlbSkpCj4+PiAgCQkJcmV0dXJuIGZhbHNlOwo+Pj4gIAl9IGVsc2UKPj4+IC0JCW11dGV4X2xv Y2soJmFkZXYtPmxvY2tfcmVzZXQpOwo+Pj4gKwkJZG93bl93cml0ZSgmYWRldi0+cmVzZXRfc2Vt KTsKPj4+ICAKPj4+ICAJYXRvbWljX2luYygmYWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpOwo+Pj4g IAlhZGV2LT5pbl9ncHVfcmVzZXQgPSB0cnVlOwo+Pj4gQEAgLTQxNzcsNyArNDE3Nyw3IEBAIHN0 YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCj4+PiAgCWFtZGdwdV92Zl9lcnJvcl90cmFuc19hbGwoYWRldik7Cj4+PiAgCWFkZXYt Pm1wMV9zdGF0ZSA9IFBQX01QMV9TVEFURV9OT05FOwo+Pj4gIAlhZGV2LT5pbl9ncHVfcmVzZXQg PSBmYWxzZTsKPj4+IC0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5sb2NrX3Jlc2V0KTsKPj4+ICsJdXBf d3JpdGUoJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAgfQo+Pj4gIAo+Pj4gIHN0YXRpYyB2b2lkIGFt ZGdwdV9kZXZpY2VfcmVzdW1lX2Rpc3BsYXlfYXVkaW8oc3RydWN0IGFtZGdwdV9kZXZpY2UKPj4+ ICphZGV2KSBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pv Yi5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwo+Pj4gaW5k ZXggMjk3NWM0YTZlNTgxLi5kNGM2OWY5NTc3YTQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwo+Pj4gQEAgLTIyNSw4ICsyMjUsMTAgQEAgc3RhdGljIHN0 cnVjdCBkbWFfZmVuY2UgKmFtZGdwdV9qb2JfcnVuKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hl ZF9qb2IpCj4+PiAgCWlmIChmaW5pc2hlZC0+ZXJyb3IgPCAwKSB7Cj4+PiAgCQlEUk1fSU5GTygi U2tpcCBzY2hlZHVsaW5nIElCcyFcbiIpOwo+Pj4gIAl9IGVsc2Ugewo+Pj4gKwkJZG93bl9yZWFk KCZyaW5nLT5hZGV2LT5yZXNldF9zZW0pOwo+Pj4gIAkJciA9IGFtZGdwdV9pYl9zY2hlZHVsZShy aW5nLCBqb2ItPm51bV9pYnMsIGpvYi0+aWJzLCBqb2IsCj4+PiAgCQkJCSAgICAgICAmZmVuY2Up Owo+Pj4gKwkJdXBfcmVhZCgmcmluZy0+YWRldi0+cmVzZXRfc2VtKTsKPj4+ICAJCWlmIChyKQo+ Pj4gIAkJCURSTV9FUlJPUigiRXJyb3Igc2NoZWR1bGluZyBJQnMgKCVkKVxuIiwgcik7Cj4+PiAg CX0KPj4+IEBAIC0yMzcsNiArMjM5LDcgQEAgc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKmFtZGdw dV9qb2JfcnVuKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpCj4+PiAgCWFtZGdwdV9q b2JfZnJlZV9yZXNvdXJjZXMoam9iKTsKPj4+ICAKPj4+ICAJZmVuY2UgPSByID8gRVJSX1BUUihy KSA6IGZlbmNlOwo+Pj4gKwo+Pj4gIAlyZXR1cm4gZmVuY2U7Cj4+PiAgfQo+Pj4gIAo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwo+Pj4gaW5kZXggMTNlYThl YmM0MjFjLi4zOGE3NTFmN2Q4ODkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcmluZy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcmluZy5jCj4+PiBAQCAtMTIxLDYgKzEyMSw3IEBAIHZvaWQgYW1kZ3B1X3Jpbmdf Z2VuZXJpY19wYWRfaWIoc3RydWN0IAo+Pj4gYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCBhbWRn cHVfaWIgKmliKSAgdm9pZCAKPj4+IGFtZGdwdV9yaW5nX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcpICB7Cj4+PiAgCXVpbnQzMl90IGNvdW50Owo+Pj4gKwlzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+PiAgCj4+PiAgCS8qIFdlIHBhZCB0byBtYXRjaCBm ZXRjaCBzaXplICovCj4+PiAgCWNvdW50ID0gcmluZy0+ZnVuY3MtPmFsaWduX21hc2sgKyAxIC0g ZGlmZiAtLWdpdCAKPj4+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbXhncHVfYWkuYwo+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV9haS5jCj4+PiBpbmRleCA1ZmQ2 N2UxY2MyYTAuLjk3ZjMzNTQwYWEwMiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L214Z3B1X2FpLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L214Z3B1X2FpLmMKPj4+IEBAIC0yNDQsMTEgKzI0NCwxMSBAQCBzdGF0aWMgdm9pZCB4Z3B1X2Fp X21haWxib3hfZmxyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+Pj4gIAkgKiBvdGhl cndpc2UgdGhlIG1haWxib3ggbXNnIHdpbGwgYmUgcnVpbmVkL3Jlc2V0ZWQgYnkKPj4+ICAJICog dGhlIFZGIEZMUi4KPj4+ICAJICoKPj4+IC0JICogd2UgY2FuIHVubG9jayB0aGUgbG9ja19yZXNl dCB0byBhbGxvdyAiYW1kZ3B1X2pvYl90aW1lZG91dCIKPj4+ICsJICogd2UgY2FuIHVubG9jayB0 aGUgcmVzZXRfc2VtIHRvIGFsbG93ICJhbWRncHVfam9iX3RpbWVkb3V0Igo+Pj4gIAkgKiB0byBy dW4gZ3B1X3JlY292ZXIoKSBhZnRlciBGTFJfTk9USUZJQ0FUSU9OX0NNUEwgcmVjZWl2ZWQKPj4+ ICAJICogd2hpY2ggbWVhbnMgaG9zdCBzaWRlIGhhZCBmaW5pc2hlZCB0aGlzIFZGJ3MgRkxSLgo+ Pj4gIAkgKi8KPj4+IC0JbG9ja2VkID0gbXV0ZXhfdHJ5bG9jaygmYWRldi0+bG9ja19yZXNldCk7 Cj4+PiArCWxvY2tlZCA9IGRvd25fd3JpdGVfdHJ5bG9jaygmYWRldi0+cmVzZXRfc2VtKTsKPj4+ ICAJaWYgKGxvY2tlZCkKPj4+ICAJCWFkZXYtPmluX2dwdV9yZXNldCA9IHRydWU7Cj4+PiAgCj4+ PiBAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIHhncHVfYWlfbWFpbGJveF9mbHJfd29y ayhzdHJ1Y3QgCj4+PiB3b3JrX3N0cnVjdCAqd29yaykKPj4+ICBmbHJfZG9uZToKPj4+ICAJaWYg KGxvY2tlZCkgewo+Pj4gIAkJYWRldi0+aW5fZ3B1X3Jlc2V0ID0gZmFsc2U7Cj4+PiAtCQltdXRl eF91bmxvY2soJmFkZXYtPmxvY2tfcmVzZXQpOwo+Pj4gKwkJdXBfd3JpdGUoJmFkZXYtPnJlc2V0 X3NlbSk7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJLyogVHJpZ2dlciByZWNvdmVyeSBmb3Igd29ybGQg c3dpdGNoIGZhaWx1cmUgaWYgbm8gVERSICovIGRpZmYgCj4+PiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L214Z3B1X252LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvbXhncHVfbnYuYwo+Pj4gaW5kZXggY2UyYmYxZmI3OWVkLi40ODRkNjFjMjIzOTYgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV9udi5jCj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9teGdwdV9udi5jCj4+PiBAQCAtMjY1LDExICsy NjUsMTEgQEAgc3RhdGljIHZvaWQgeGdwdV9udl9tYWlsYm94X2Zscl93b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPj4+ICAJICogb3RoZXJ3aXNlIHRoZSBtYWlsYm94IG1zZyB3aWxsIGJl IHJ1aW5lZC9yZXNldGVkIGJ5Cj4+PiAgCSAqIHRoZSBWRiBGTFIuCj4+PiAgCSAqCj4+PiAtCSAq IHdlIGNhbiB1bmxvY2sgdGhlIGxvY2tfcmVzZXQgdG8gYWxsb3cgImFtZGdwdV9qb2JfdGltZWRv dXQiCj4+PiArCSAqIHdlIGNhbiB1bmxvY2sgdGhlIHJlc2V0X3NlbSB0byBhbGxvdyAiYW1kZ3B1 X2pvYl90aW1lZG91dCIKPj4+ICAJICogdG8gcnVuIGdwdV9yZWNvdmVyKCkgYWZ0ZXIgRkxSX05P VElGSUNBVElPTl9DTVBMIHJlY2VpdmVkCj4+PiAgCSAqIHdoaWNoIG1lYW5zIGhvc3Qgc2lkZSBo YWQgZmluaXNoZWQgdGhpcyBWRidzIEZMUi4KPj4+ICAJICovCj4+PiAtCWxvY2tlZCA9IG11dGV4 X3RyeWxvY2soJmFkZXYtPmxvY2tfcmVzZXQpOwo+Pj4gKwlsb2NrZWQgPSBkb3duX3dyaXRlX3Ry eWxvY2soJmFkZXYtPnJlc2V0X3NlbSk7Cj4+PiAgCWlmIChsb2NrZWQpCj4+PiAgCQlhZGV2LT5p bl9ncHVfcmVzZXQgPSB0cnVlOwo+Pj4gIAo+Pj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMg dm9pZCB4Z3B1X252X21haWxib3hfZmxyX3dvcmsoc3RydWN0IAo+Pj4gd29ya19zdHJ1Y3QgKndv cmspCj4+PiAgZmxyX2RvbmU6Cj4+PiAgCWlmIChsb2NrZWQpIHsKPj4+ICAJCWFkZXYtPmluX2dw dV9yZXNldCA9IGZhbHNlOwo+Pj4gLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5sb2NrX3Jlc2V0KTsK Pj4+ICsJCXVwX3dyaXRlKCZhZGV2LT5yZXNldF9zZW0pOwo+Pj4gIAl9Cj4+PiAgCj4+PiAgCS8q IFRyaWdnZXIgcmVjb3ZlcnkgZm9yIHdvcmxkIHN3aXRjaCBmYWlsdXJlIGlmIG5vIFREUiAqLwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1h aWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK