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.1 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 84031C352A3 for ; Tue, 11 Feb 2020 12:04:14 +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 52CFE2051A for ; Tue, 11 Feb 2020 12:04:14 +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="DjfhSNEQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 52CFE2051A 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 1619C6EA35; Tue, 11 Feb 2020 12:04:14 +0000 (UTC) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2061.outbound.protection.outlook.com [40.107.243.61]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9DCA76EA35 for ; Tue, 11 Feb 2020 12:04:13 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OH8tNA4N6j+vGkT+bQI4dQ+epD4bN+0Nc5nsHGMm1dRafrQunIDibvo9E9OBsJogMUEPVfPZfQr9fYM/KF3GYJD5LaFGJciNjq692D+kYNkITI+uL0mhXbbYOuDXaxCtUSPtjfxEQ1pMQ+65bhIWH2KskB/iNtkyGIY43qc4RDocyNkNEeghq64zGxSCJi3EU7LNzx+NVPtSB44ekwgGt/2V8daitcIczMtqqjGf/4/WRvMsuu1OZ8pDSfbcROwAvBF5237E/02vw1hjA+KvReFCYQec5D4nIlfRrJWJlrMRxZ0CND0fPaY4NPESolAjvK1Arv3eU49/nmkixgYrIQ== 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=f3S47dMLQ0aUy+a12kAw2itit0sSIXRrx87A9xoGmyE=; b=GxsYA4bnPOMEsJv63nLcUmG0+0b2N8RbZWUSUetAPsECsTcEXq8Pftqs/7/+FSF2cKATIxN1w7epZfmjgPghy1+bGQpWRpXMCfbPeVNG2zIoXzYPJRmqpdf5AxWmfLHBPW1Ou2NDPJREy0j2/A70vLzOUBGv4ql6sHiWeZeIRm1pzdTtff8XA7HJb+MQOjUJqwSDhpcCLXxWp0U9gF7Ow+Uv1G8AS5EeO00NPKzqBUgLxQQOJHVjfLhrM+pUYHbQSeH5+cPdK1hagIRGLLV/jGBW4xOuiK1C+zPMSv5rcyrFOfoVMPbR8dJtrYGuicivwZsD8l3ddU6jEIIg5ScKTA== 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=f3S47dMLQ0aUy+a12kAw2itit0sSIXRrx87A9xoGmyE=; b=DjfhSNEQ+mjyOZVpCDgYM8e5cbfDH2iU5oPq+x/GpHkt9LReFRLzY0esSCoIKQiwaTaIcO51/yF4julr2VzFp/ZkEeeDsV4ZfbpnJi4GMOCcJ5OrtbL8YKRO5+KWkjhJWXG+/Q6YMXkw4K9YHJvCeijHPbP/eTkr8eOT8tdwf3s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Nirmoy.Das@amd.com; Received: from DM5PR12MB2376.namprd12.prod.outlook.com (52.132.143.139) by DM5PR12MB2456.namprd12.prod.outlook.com (52.132.141.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.30; Tue, 11 Feb 2020 12:04:12 +0000 Received: from DM5PR12MB2376.namprd12.prod.outlook.com ([fe80::c06c:24da:d4c5:5ee3]) by DM5PR12MB2376.namprd12.prod.outlook.com ([fe80::c06c:24da:d4c5:5ee3%6]) with mapi id 15.20.2707.030; Tue, 11 Feb 2020 12:04:12 +0000 Subject: Re: [RFC PATCH] drm/amdgpu: move ttm bo->offset to amdgpu_bo To: =?UTF-8?Q?Christian_K=c3=b6nig?= , Nirmoy Das , amd-gfx@lists.freedesktop.org References: <20200211111722.6372-1-nirmoy.das@amd.com> From: Nirmoy Message-ID: <205b208c-9af9-6da9-b426-6977f417e9e3@amd.com> Date: Tue, 11 Feb 2020 13:06:40 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 In-Reply-To: Content-Language: en-US X-ClientProxiedBy: ZRAP278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::26) To DM5PR12MB2376.namprd12.prod.outlook.com (2603:10b6:4:b9::11) MIME-Version: 1.0 Received: from [IPv6:2003:c5:8f2b:9b00:46cb:968b:e998:10ca] (2003:c5:8f2b:9b00:46cb:968b:e998:10ca) by ZRAP278CA0016.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.21 via Frontend Transport; Tue, 11 Feb 2020 12:04:10 +0000 X-Originating-IP: [2003:c5:8f2b:9b00:46cb:968b:e998:10ca] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6c3829bf-7b5c-400c-9aae-08d7aeea8174 X-MS-TrafficTypeDiagnostic: DM5PR12MB2456:|DM5PR12MB2456: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1060; X-Forefront-PRVS: 0310C78181 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(396003)(136003)(376002)(366004)(39860400002)(189003)(199004)(31696002)(2906002)(4326008)(186003)(16526019)(316002)(66946007)(66556008)(66476007)(31686004)(36756003)(81166006)(6666004)(2616005)(53546011)(5660300002)(478600001)(52116002)(6486002)(110136005)(66574012)(8936002)(8676002)(30864003)(81156014); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB2456; H:DM5PR12MB2376.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; 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: xaO/hDtoypSeCpO6chXl2MAOp/M/4oQMv53d9ipKuQTQJInSRo1QMNjTVzUMG3w51dH0AVE3M5yjv3pDDmhLdMhSPR2TffL3XmOXjkqTjwmS06Ny1PffESvspQeggR8osdaR7ud60rECMpXLH9mOHfLn5J6tNRicQds/SocVomsW5iRZvjiylLXWydBIoPieV/hb38VE8+fMA19bZxZ+hkeENm9o/kdO0wr+cZReA9b1F7Mxb4TVufYdQSbp8Xb+jMhUfO7wZgrIHtoHpoCqcAqCTSaPtoslW8kz0lvorKSl9nSmb5ZfWnRVZsvJlfreKlJY6p0ZxiyMHzUoyOYtToRCpPl5XvWBYa6RL1tXV+/yUf7hLBlc9CAVGqqQzR87+/1GEFXUs8FDInWAlVIzApANDQyDtN0GTytXKsgUhca0j7c5amOT2R2V+/tuttZA X-MS-Exchange-AntiSpam-MessageData: 7vUxj4K8YLulUi9b+ZUBW6FlaMbG1HX+Hwgu8zz9JEwOCDwfh+4BV6TbFHMLwtK8wGCXqmXvLMKT40uGIAhnJcILF9VzdMO4nv/ue+2j6eVkegYNIiJ7TR0MuaIH/DfSI4s4oyQH5Tq4E3XlNww94eKdsm6fR+oohsUIhdTPqBWvrdUaOSoPtUiBU02TjkJ2tXpFBHi+wtWv/jHw9XgMdQ== X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c3829bf-7b5c-400c-9aae-08d7aeea8174 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Feb 2020 12:04:12.0643 (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: /g4s7TRi4+Vgm8ysPlbshNVXWZThw8t92+tEZ3ggZnTSGxabCaOJEaEZrfbht8ebdqJhLO/+nR6P9OQvxIqY9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB2456 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, nirmoy.das@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" SGkgQ2hyaXN0aWFuCgpPbiAyLzExLzIwIDEyOjUwIFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEFtIDExLjAyLjIwIHVtIDEyOjE3IHNjaHJpZWIgTmlybW95IERhczoKPj4gR1BVIGFkZHJl c3Mgc2hvdWxkIGJlbG9uZyB0byBkcml2ZXIgbm90IGluIG1lbW9yeSBtYW5hZ2VtZW50Lgo+PiBU aGlzIHBhdGNoIG1vdmVzIHR0bSBiby5vZmZzZXQgYW5kIGdwdV9vZmZzZXQgY2FsY3VsYXRpb24g dG8gYW1kZ3B1IAo+PiBkcml2ZXIuCj4KPiBBY3R1YWxseSBmb3IgYW1kZ3B1IHdlIHNob3VsZCBi ZSBhYmxlIHRvIGdldCBjb21wbGV0ZWx5IHJpZCBvZiAKPiBiby0+b2Zmc2V0LiBBbGwgd2UgbmVl ZCB0byBkbyBpcyB0byBjaGFuZ2UgYW1kZ3B1X2JvX2dwdV9vZmZzZXQoKSBhbmQgCj4gZG8gdGhl IGNvcnJlY3Qgb2Zmc2V0IGNhbGN1bGF0aW9uIHRoZXJlLgoKSWYgSSBhbSBub3Qgd3Jvbmcgd2l0 aCB0aGlzIHBhdGNoIGFtZGdwdSBjb21wbGV0bHkgZ290IHJpZCBvZiB0dG0ncyAKYm8tPm9mZnNl dCBhbmQgdHRtX21lbV90eXBlX21hbmFnZXItPmdwdV9vZmZzZXQuwqAgRG8geW91IG1lYW4gd2Ug ZG9uJ3QgCmV2ZW4gbmVlZCBhbWRncHVfYm8tPm9mZnNldChhZGRlZCBieSB0aGlzIHBhdGNoKSBh cyB3ZWxsID8KCgpSZWdhcmRzLAoKTmlybW95Cgo+Cj4gQXBhcnQgZnJvbSB0aGF0IGxvb2tzIGdv b2QgdG8gbWUuCj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBOaXJtb3kgRGFzIDxuaXJtb3kuZGFzQGFtZC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmPCoMKgwqAgfMKgIDIgKy0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2JlbmNobWFyay5jIHzCoCA0ICstCj4+IMKg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jwqDCoMKgwqDCoMKgwqAgfMKg IDQgKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuY8Kg wqAgfMKgIDIgKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmPC oMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfb2JqZWN0LmPCoMKgwqAgfCAyMiArKysrKysrKy0tCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaMKgwqDCoCB8wqAgMyArKwo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdGVzdC5jwqDCoMKgwqDCoCB8wqAgMiArLQo+PiDC oCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmPCoMKgwqDCoMKgwqAgfCA0 MCArKysrKysrKystLS0tLS0tLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90dG0uaMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm1fc2RtYS5jwqDCoCB8wqAgOCArKy0tCj4+IMKgIC4uLi9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8wqAgMiArLQo+PiDCoCAxMiBmaWxl cyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQuYyAKPj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkLmMKPj4gaW5kZXggODYwOTI4 NzYyMGVhLi42MTMwNDdlYTkwNjUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYW1ka2ZkLmMKPj4gQEAgLTI2Myw3ICsyNjMsNyBAQCBpbnQgYW1kZ3B1X2FtZGtm ZF9hbGxvY19ndHRfbWVtKHN0cnVjdCBrZ2RfZGV2IAo+PiAqa2dkLCBzaXplX3Qgc2l6ZSwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gYWxsb2NhdGVfbWVtX3Bpbl9ib19mYWlsZWQ7Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIHIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmJvLT50 Ym8pOwo+PiArwqDCoMKgIHIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoYm8pOwo+PiDCoMKgwqDC oMKgIGlmIChyKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGFkZXYtPmRldiwgIiVw IGJpbmQgZmFpbGVkXG4iLCBibyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGFsbG9jYXRl X21lbV9rbWFwX2JvX2ZhaWxlZDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9iZW5jaG1hcmsuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYmVuY2htYXJrLmMKPj4gaW5kZXggZDliMzVkZjMzODA2Li5mMjk5ODYyMzFiMjcg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9iZW5jaG1h cmsuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYmVuY2htYXJr LmMKPj4gQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2JlbmNobWFya19tb3Zl KHN0cnVjdCAKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgc2l6ZSwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGFtZGdwdV9ib191bnJlc2VydmUoc29iaik7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIG91dF9jbGVhbnVwOwo+PiDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoCByID0gYW1k Z3B1X3R0bV9hbGxvY19nYXJ0KCZzb2JqLT50Ym8pOwo+PiArwqDCoMKgIHIgPSBhbWRncHVfdHRt X2FsbG9jX2dhcnQoc29iaik7Cj4+IMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShzb2Jq KTsKPj4gwqDCoMKgwqDCoCBpZiAocikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRf Y2xlYW51cDsKPj4gQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfYmVuY2ht YXJrX21vdmUoc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBzaXplLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShzb2JqKTsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gb3V0X2NsZWFudXA7Cj4+IMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKg IHIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmRvYmotPnRibyk7Cj4+ICvCoMKgwqAgciA9IGFt ZGdwdV90dG1fYWxsb2NfZ2FydChkb2JqKTsKPj4gwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZXNl cnZlKGRvYmopOwo+PiDCoMKgwqDCoMKgIGlmIChyKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBn b3RvIG91dF9jbGVhbnVwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz LmMKPj4gaW5kZXggODBiYTZkZmM1NGUyLi45MjE3MTlkOTJhYjEgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+IEBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGlj IGludCBhbWRncHVfY3NfcGFyc2VyX2JvcyhzdHJ1Y3QgCj4+IGFtZGdwdV9jc19wYXJzZXIgKnAs Cj4+IMKgwqDCoMKgwqAgaWYgKCFyICYmIHAtPnVmX2VudHJ5LnR2LmJvKSB7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICp1ZiA9IHR0bV90b19hbWRncHVfYm8ocC0+dWZf ZW50cnkudHYuYm8pOwo+PiDCoCAtwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV90dG1fYWxsb2Nf Z2FydCgmdWYtPnRibyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19n YXJ0KHVmKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHAtPmpvYi0+dWZfYWRkciArPSBhbWRncHVf Ym9fZ3B1X29mZnNldCh1Zik7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCBAQCAtMTY3Niw1ICsxNjc2 LDUgQEAgaW50IGFtZGdwdV9jc19maW5kX21hcHBpbmcoc3RydWN0IAo+PiBhbWRncHVfY3NfcGFy c2VyICpwYXJzZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDC oMKgwqDCoMKgIH0KPj4gwqAgLcKgwqDCoCByZXR1cm4gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCYo KmJvKS0+dGJvKTsKPj4gK8KgwqDCoCByZXR1cm4gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCpibyk7 Cj4+IMKgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kaXNwbGF5LmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3Bs YXkuYwo+PiBpbmRleCBjYTkwNTZiMDQ3MmEuLjNkMGFhMmIyOTI2ZiAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCj4+IEBAIC0xOTksNyArMTk5 LDcgQEAgaW50IGFtZGdwdV9kaXNwbGF5X2NydGNfcGFnZV9mbGlwX3RhcmdldChzdHJ1Y3QgCj4+ IGRybV9jcnRjICpjcnRjLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIH0K Pj4gwqAgLcKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZuZXdfYWJvLT50Ym8pOwo+ PiArwqDCoMKgIHIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQobmV3X2Fibyk7Cj4+IMKgwqDCoMKg wqAgaWYgKHVubGlrZWx5KHIgIT0gMCkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJP UigiJXAgYmluZCBmYWlsZWRcbiIsIG5ld19hYm8pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byB1bnBpbjsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9mYi5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9mYi5jCj4+IGlu ZGV4IDE0Mzc1M2QyMzdlNy4uYTAyYjFjYmQwMDZkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZmIuYwo+PiBAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBpbnQgYW1k Z3B1ZmJfY3JlYXRlX3Bpbm5lZF9vYmplY3Qoc3RydWN0IAo+PiBhbWRncHVfZmJkZXYgKnJmYmRl diwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X3VucmVmOwo+PiDCoMKgwqDCoMKgIH0K Pj4gwqAgLcKgwqDCoCByZXQgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmFiby0+dGJvKTsKPj4g K8KgwqDCoCByZXQgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoYWJvKTsKPj4gwqDCoMKgwqDCoCBp ZiAocmV0KSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZlKGFibyk7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGFkZXYtPmRldiwgIiVwIGJpbmQgZmFpbGVk XG4iLCBhYm8pOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmpl Y3QuYwo+PiBpbmRleCA2ZjYwYTU4MWUzYmEuLjY1MDc1OGE1YjNhYSAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiBAQCAtMjc0LDcgKzI3NCw3 IEBAIGludCBhbWRncHVfYm9fY3JlYXRlX3Jlc2VydmVkKHN0cnVjdCAKPj4gYW1kZ3B1X2Rldmlj ZSAqYWRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3JfdW5yZXNlcnZlOwo+PiDC oMKgwqDCoMKgIH0KPj4gwqAgLcKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCYoKmJv X3B0ciktPnRibyk7Cj4+ICvCoMKgwqAgciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgqYm9fcHRy KTsKPj4gwqDCoMKgwqDCoCBpZiAocikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2Vycihh ZGV2LT5kZXYsICIlcCBiaW5kIGZhaWxlZFxuIiwgKmJvX3B0cik7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGVycm9yX3VucGluOwo+PiBAQCAtOTE3LDcgKzkxNyw3IEBAIGludCBhbWRncHVf Ym9fcGluX3Jlc3RyaWN0ZWQoc3RydWN0IGFtZGdwdV9ibyAKPj4gKmJvLCB1MzIgZG9tYWluLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgYm8tPnBpbl9jb3VudCsrOwo+PiDCoCDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKG1heF9vZmZzZXQgIT0gMCkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 NjQgZG9tYWluX3N0YXJ0ID0gYm8tPnRiby5iZGV2LT5tYW5bbWVtX3R5cGVdLmdwdV9vZmZzZXQ7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU2NCBkb21haW5fc3RhcnQgPSBhbWRncHVfYm9f Z3B1X3N0YXJ0KGFkZXYsIG1lbV90eXBlKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg V0FSTl9PTl9PTkNFKG1heF9vZmZzZXQgPAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAoYW1kZ3B1X2JvX2dwdV9vZmZzZXQoYm8pIC0gZG9tYWluX3N0YXJ0 KSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IEBAIC0xMjQ4LDYgKzEyNDgsMTggQEAgaW50 IGFtZGdwdV9ib19nZXRfbWV0YWRhdGEoc3RydWN0IGFtZGdwdV9ibyAKPj4gKmJvLCB2b2lkICpi dWZmZXIsCj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgK3VpbnQ2NF90IGFt ZGdwdV9ib19ncHVfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IAo+ PiB0eXBlKQo+PiArewo+PiArwqDCoMKgIHN3aXRjaCh0eXBlKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBjYXNlIFRUTV9QTF9UVDoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGFkZXYt PmdtYy5nYXJ0X3N0YXJ0Owo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBUVE1fUExfVlJBTToKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGFkZXYtPmdtYy52cmFtX3N0YXJ0Owo+PiAr wqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+IMKgIC8qKgo+ PiDCoMKgICogYW1kZ3B1X2JvX21vdmVfbm90aWZ5IC0gbm90aWZpY2F0aW9uIGFib3V0IGEgbWVt b3J5IG1vdmUKPj4gwqDCoCAqIEBibzogcG9pbnRlciB0byBhIGJ1ZmZlciBvYmplY3QKPj4gQEAg LTEyNzgsNiArMTI5MCwxMCBAQCB2b2lkIGFtZGdwdV9ib19tb3ZlX25vdGlmeShzdHJ1Y3QgCj4+ IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPj4gwqDCoMKgwqDCoCBpZiAoZXZpY3QpCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBhdG9taWM2NF9pbmMoJmFkZXYtPm51bV9ldmljdGlvbnMpOwo+PiDCoCAr wqDCoMKgIGlmIChuZXdfbWVtKQo+PiArwqDCoMKgwqDCoMKgwqAgYWJvLT5vZmZzZXQgPSAobmV3 X21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVCkgKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFtZGdwdV9ib19ncHVfc3RhcnQoYW1kZ3B1X3R0bV9hZGV2KGJvLT5iZGV2KSwgCj4+IG5ld19t ZW0tPm1lbV90eXBlKTsKPj4gKwo+PiDCoMKgwqDCoMKgIC8qIHVwZGF0ZSBzdGF0aXN0aWNzICov Cj4+IMKgwqDCoMKgwqAgaWYgKCFuZXdfbWVtKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu Owo+PiBAQCAtMTQ2Nyw3ICsxNDgzLDcgQEAgdTY0IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHN0cnVj dCBhbWRncHVfYm8gKmJvKQo+PiDCoMKgwqDCoMKgIFdBUk5fT05fT05DRShiby0+dGJvLm1lbS5t ZW1fdHlwZSA9PSBUVE1fUExfVlJBTSAmJgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICEoYm8tPmZsYWdzICYgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTKSk7Cj4+IMKg IC3CoMKgwqAgcmV0dXJuIGFtZGdwdV9nbWNfc2lnbl9leHRlbmQoYm8tPnRiby5vZmZzZXQpOwo+ PiArwqDCoMKgIHJldHVybiBhbWRncHVfZ21jX3NpZ25fZXh0ZW5kKGJvLT5vZmZzZXQpOwo+PiDC oCB9Cj4+IMKgIMKgIC8qKgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X29iamVjdC5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9vYmplY3QuaAo+PiBpbmRleCA5NmQ4MDU4ODllOGQuLmM3ZTEwMjhmZDMxZiAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+PiBAQCAtOTQsNiAr OTQsOCBAQCBzdHJ1Y3QgYW1kZ3B1X2JvIHsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcHJpbWVfc2hhcmVkX2NvdW50Owo+PiDCoMKgwqDCoMKgIC8qIHBlciBW TSBzdHJ1Y3R1cmUgZm9yIHBhZ2UgdGFibGVzIGFuZCB3aXRoIHZpcnR1YWwgYWRkcmVzc2VzICov Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV92bV9ib19iYXNlwqDCoMKgICp2bV9ibzsKPj4g K8KgwqDCoMKgIC8qIEdQVSBhZGRyZXNzIHNwYWNlIGlzIGluZGVwZW5kZW50IG9mIENQVSB3b3Jk IHNpemUgKi8KPj4gK8KgwqDCoCB1aW50NjRfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2Zmc2V0 Owo+PiDCoMKgwqDCoMKgIC8qIENvbnN0YW50IGFmdGVyIGluaXRpYWxpemF0aW9uICovCj4+IMKg wqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ib8KgwqDCoMKgwqDCoMKgICpwYXJlbnQ7Cj4+IMKgwqDC oMKgwqAgc3RydWN0IGFtZGdwdV9ib8KgwqDCoMKgwqDCoMKgICpzaGFkb3c7Cj4+IEBAIC0yOTQs NiArMjk2LDcgQEAgaW50IGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2Jv IAo+PiAqc2hhZG93LAo+PiDCoCB1aW50MzJfdCBhbWRncHVfYm9fZ2V0X3ByZWZlcnJlZF9waW5f ZG9tYWluKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+PiAqYWRldiwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QgZG9tYWluKTsKPj4g wqAgK3VpbnQ2NF90IGFtZGdwdV9ib19ncHVfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHVpbnQzMl90IAo+PiB0eXBlKTsKPj4gwqAgLyoKPj4gwqDCoCAqIHN1YiBhbGxvY2F0aW9u Cj4+IMKgwqAgKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90ZXN0LmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Rlc3Qu Ywo+PiBpbmRleCA0NzZmMWY4OWFhYWQuLmRmYWI2NGJiYjVmYSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Rlc3QuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdGVzdC5jCj4+IEBAIC0xMDMsNyArMTAzLDcgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X2RvX3Rlc3RfbW92ZXMoc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICph ZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIkZhaWxlZCB0byBw aW4gR1RUIG9iamVjdCAlZFxuIiwgaSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gb3V0X2xjbGVhbl91bnJlczsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKg wqDCoMKgIHIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmd0dF9vYmpbaV0tPnRibyk7Cj4+ICvC oMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KGd0dF9vYmpbaV0pOwo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJNX0VSUk9SKCIlcCBiaW5kIGZhaWxlZFxuIiwgZ3R0X29ialtpXSk7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X2xjbGVhbl91bnBpbjsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYyAKPj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4gaW5kZXggMmMxZDFlYjFhN2UxLi4xNWQ5ZThm ODA3YjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90 dG0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4g QEAgLTEwMyw3ICsxMDMsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9pbml0X21lbV90eXBlKHN0cnVj dCAKPj4gdHRtX2JvX2RldmljZSAqYmRldiwgdWludDMyX3QgdHlwZSwKPj4gwqDCoMKgwqDCoCBj YXNlIFRUTV9QTF9UVDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEdUVCBtZW1vcnnCoCAqLwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWFuLT5mdW5jID0gJmFtZGdwdV9ndHRfbWdyX2Z1bmM7Cj4+ IC3CoMKgwqDCoMKgwqDCoCBtYW4tPmdwdV9vZmZzZXQgPSBhZGV2LT5nbWMuZ2FydF9zdGFydDsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIG1hbi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBUVE1fUExfTUFT S19DQUNISU5HOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWFuLT5kZWZhdWx0X2NhY2hpbmcgPSBU VE1fUExfRkxBR19DQUNIRUQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtYW4tPmZsYWdzID0gVFRN X01FTVRZUEVfRkxBR19NQVBQQUJMRSB8IFRUTV9NRU1UWVBFX0ZMQUdfQ01BOwo+PiBAQCAtMTEx LDcgKzExMCw2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2luaXRfbWVtX3R5cGUoc3RydWN0IAo+PiB0 dG1fYm9fZGV2aWNlICpiZGV2LCB1aW50MzJfdCB0eXBlLAo+PiDCoMKgwqDCoMKgIGNhc2UgVFRN X1BMX1ZSQU06Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAiT24tY2FyZCIgdmlkZW8gcmFtICov Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtYW4tPmZ1bmMgPSAmYW1kZ3B1X3ZyYW1fbWdyX2Z1bmM7 Cj4+IC3CoMKgwqDCoMKgwqDCoCBtYW4tPmdwdV9vZmZzZXQgPSBhZGV2LT5nbWMudnJhbV9zdGFy dDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG1hbi0+ZmxhZ3MgPSBUVE1fTUVNVFlQRV9GTEFHX0ZJ WEVEIHwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRUTV9NRU1UWVBF X0ZMQUdfTUFQUEFCTEU7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtYW4tPmF2YWlsYWJsZV9jYWNo aW5nID0gVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfCAKPj4gVFRNX1BMX0ZMQUdfV0M7Cj4+IEBAIC0x MjIsNyArMTIwLDYgQEAgc3RhdGljIGludCBhbWRncHVfaW5pdF9tZW1fdHlwZShzdHJ1Y3QgCj4+ IHR0bV9ib19kZXZpY2UgKmJkZXYsIHVpbnQzMl90IHR5cGUsCj4+IMKgwqDCoMKgwqAgY2FzZSBB TURHUFVfUExfT0E6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBPbi1jaGlwIEdEUyBtZW1vcnkq Lwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbWFuLT5mdW5jID0gJnR0bV9ib19tYW5hZ2VyX2Z1bmM7 Cj4+IC3CoMKgwqDCoMKgwqDCoCBtYW4tPmdwdV9vZmZzZXQgPSAwOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgbWFuLT5mbGFncyA9IFRUTV9NRU1UWVBFX0ZMQUdfRklYRUQgfCBUVE1fTUVNVFlQRV9G TEFHX0NNQTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG1hbi0+YXZhaWxhYmxlX2NhY2hpbmcgPSBU VE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG1hbi0+ZGVmYXVsdF9j YWNoaW5nID0gVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+IEBAIC0yNzAsNyArMjY3LDcgQEAgc3Rh dGljIHVpbnQ2NF90IGFtZGdwdV9tbV9ub2RlX2FkZHIoc3RydWN0IAo+PiB0dG1fYnVmZmVyX29i amVjdCAqYm8sCj4+IMKgIMKgwqDCoMKgwqAgaWYgKG1tX25vZGUtPnN0YXJ0ICE9IEFNREdQVV9C T19JTlZBTElEX09GRlNFVCkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkciA9IG1tX25vZGUt PnN0YXJ0IDw8IFBBR0VfU0hJRlQ7Cj4+IC3CoMKgwqDCoMKgwqDCoCBhZGRyICs9IGJvLT5iZGV2 LT5tYW5bbWVtLT5tZW1fdHlwZV0uZ3B1X29mZnNldDsKPj4gK8KgwqDCoMKgwqDCoMKgIGFkZHIg Kz0gYW1kZ3B1X2JvX2dwdV9zdGFydChhbWRncHVfdHRtX2FkZXYoYm8tPmJkZXYpLCAKPj4gbWVt LT5tZW1fdHlwZSk7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDCoMKgIHJldHVybiBhZGRyOwo+ PiDCoCB9Cj4+IEBAIC0xMDg2LDI3ICsxMDgzLDI4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3R0bV9i YWNrZW5kX2JpbmQoc3RydWN0IAo+PiB0dG1fdHQgKnR0bSwKPj4gwqAgLyoqCj4+IMKgwqAgKiBh bWRncHVfdHRtX2FsbG9jX2dhcnQgLSBBbGxvY2F0ZSBHQVJUIG1lbW9yeSBmb3IgYnVmZmVyIG9i amVjdAo+PiDCoMKgICovCj4+IC1pbnQgYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8pCj4+ICtpbnQgYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KHN0cnVjdCBh bWRncHVfYm8gKmJvKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSBhbWRncHVfdHRtX2FkZXYoYm8tPmJkZXYpOwo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqdGJvID0gJmJvLT50Ym87Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYgPSBhbWRncHVfdHRtX2FkZXYodGJvLT5iZGV2KTsKPj4gwqDCoMKgwqDCoCBzdHJ1 Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwgZmFsc2UgfTsKPj4gLcKgwqDCoCBz dHJ1Y3QgYW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQqKWJvLT50dG07Cj4+ICvCoMKgwqAgc3Ry dWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkKil0Ym8tPnR0bTsKPj4gwqDCoMKgwqDCoCBz dHJ1Y3QgdHRtX21lbV9yZWcgdG1wOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fcGxhY2VtZW50 IHBsYWNlbWVudDsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX3BsYWNlIHBsYWNlbWVudHM7Cj4+ IMKgwqDCoMKgwqAgdWludDY0X3QgYWRkciwgZmxhZ3M7Cj4+IMKgwqDCoMKgwqAgaW50IHI7Cj4+ IMKgIC3CoMKgwqAgaWYgKGJvLT5tZW0uc3RhcnQgIT0gQU1ER1BVX0JPX0lOVkFMSURfT0ZGU0VU KQo+PiArwqDCoMKgIGlmICh0Ym8tPm1lbS5zdGFydCAhPSBBTURHUFVfQk9fSU5WQUxJRF9PRkZT RVQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgLcKgwqDCoCBhZGRyID0g YW1kZ3B1X2dtY19hZ3BfYWRkcihibyk7Cj4+ICvCoMKgwqAgYWRkciA9IGFtZGdwdV9nbWNfYWdw X2FkZHIodGJvKTsKPj4gwqDCoMKgwqDCoCBpZiAoYWRkciAhPSBBTURHUFVfQk9fSU5WQUxJRF9P RkZTRVQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGJvLT5tZW0uc3RhcnQgPSBhZGRyID4+IFBBR0Vf U0hJRlQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0Ym8tPm1lbS5zdGFydCA9IGFkZHIgPj4gUEFHRV9T SElGVDsKPj4gwqDCoMKgwqDCoCB9IGVsc2Ugewo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgLyog YWxsb2NhdGUgR0FSVCBzcGFjZSAqLwo+PiAtwqDCoMKgwqDCoMKgwqAgdG1wID0gYm8tPm1lbTsK Pj4gK8KgwqDCoMKgwqDCoMKgIHRtcCA9IHRiby0+bWVtOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg dG1wLm1tX25vZGUgPSBOVUxMOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcGxhY2VtZW50Lm51bV9w bGFjZW1lbnQgPSAxOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcGxhY2VtZW50LnBsYWNlbWVudCA9 ICZwbGFjZW1lbnRzOwo+PiBAQCAtMTExNCwzMCArMTExMiwzMCBAQCBpbnQgYW1kZ3B1X3R0bV9h bGxvY19nYXJ0KHN0cnVjdCAKPj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgcGxhY2VtZW50LmJ1c3lfcGxhY2VtZW50ID0gJnBsYWNlbWVudHM7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBwbGFjZW1lbnRzLmZwZm4gPSAwOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cGxhY2VtZW50cy5scGZuID0gYWRldi0+Z21jLmdhcnRfc2l6ZSA+PiBQQUdFX1NISUZUOwo+PiAt wqDCoMKgwqDCoMKgwqAgcGxhY2VtZW50cy5mbGFncyA9IChiby0+bWVtLnBsYWNlbWVudCAmIH5U VE1fUExfTUFTS19NRU0pIHwKPj4gK8KgwqDCoMKgwqDCoMKgIHBsYWNlbWVudHMuZmxhZ3MgPSAo dGJvLT5tZW0ucGxhY2VtZW50ICYgflRUTV9QTF9NQVNLX01FTSkgfAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBUVE1fUExfRkxBR19UVDsKPj4gwqAgLcKgwqDCoMKgwqDCoMKgIHIgPSB0 dG1fYm9fbWVtX3NwYWNlKGJvLCAmcGxhY2VtZW50LCAmdG1wLCAmY3R4KTsKPj4gK8KgwqDCoMKg wqDCoMKgIHIgPSB0dG1fYm9fbWVtX3NwYWNlKHRibywgJnBsYWNlbWVudCwgJnRtcCwgJmN0eCk7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkocikpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgLyogY29tcHV0 ZSBQVEUgZmxhZ3MgZm9yIHRoaXMgYnVmZmVyIG9iamVjdCAqLwo+PiAtwqDCoMKgwqDCoMKgwqAg ZmxhZ3MgPSBhbWRncHVfdHRtX3R0X3B0ZV9mbGFncyhhZGV2LCBiby0+dHRtLCAmdG1wKTsKPj4g K8KgwqDCoMKgwqDCoMKgIGZsYWdzID0gYW1kZ3B1X3R0bV90dF9wdGVfZmxhZ3MoYWRldiwgdGJv LT50dG0sICZ0bXApOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgLyogQmluZCBwYWdlcyAqLwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ3R0LT5vZmZzZXQgPSAodTY0KXRtcC5zdGFydCA8PCBQQUdF X1NISUZUOwo+PiAtwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV90dG1fZ2FydF9iaW5kKGFkZXYs IGJvLCBmbGFncyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X3R0bV9nYXJ0X2JpbmQo YWRldiwgdGJvLCBmbGFncyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkocikp IHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHRtX2JvX21lbV9wdXQoYm8sICZ0bXApOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0dG1fYm9fbWVtX3B1dCh0Ym8sICZ0bXApOwo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4gwqAgLcKgwqDCoMKgwqDCoMKgIHR0bV9ib19tZW1fcHV0KGJvLCAmYm8tPm1lbSk7Cj4+ IC3CoMKgwqDCoMKgwqDCoCBiby0+bWVtID0gdG1wOwo+PiArwqDCoMKgwqDCoMKgwqAgdHRtX2Jv X21lbV9wdXQodGJvLCAmdGJvLT5tZW0pOwo+PiArwqDCoMKgwqDCoMKgwqAgdGJvLT5tZW0gPSB0 bXA7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIGJvLT5vZmZzZXQgPSAoYm8tPm1lbS5z dGFydCA8PCBQQUdFX1NISUZUKSArCj4+IC3CoMKgwqDCoMKgwqDCoCBiby0+YmRldi0+bWFuW2Jv LT5tZW0ubWVtX3R5cGVdLmdwdV9vZmZzZXQ7Cj4+ICvCoMKgwqAgYm8tPm9mZnNldCA9ICh0Ym8t Pm1lbS5zdGFydCA8PCBQQUdFX1NISUZUKSArCj4+ICvCoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9f Z3B1X3N0YXJ0KGFkZXYsIHRiby0+bWVtLm1lbV90eXBlKTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1 cm4gMDsKPj4gwqAgfQo+PiBAQCAtMjE0OSw3ICsyMTQ3LDcgQEAgaW50IGFtZGdwdV9maWxsX2J1 ZmZlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIMKgwqDCoMKg wqAgaWYgKGJvLT50Ym8ubWVtLm1lbV90eXBlID09IFRUTV9QTF9UVCkgewo+PiAtwqDCoMKgwqDC oMKgwqAgciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmYm8tPnRibyk7Cj4+ICvCoMKgwqDCoMKg wqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KGJvKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqDCoMKg wqDCoCB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dHRtLmggCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+IGlu ZGV4IGYxZWJkNDI0NTEwYy4uNGY2ZTdlZjJiMDA0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+IEBAIC0xMDAsNyArMTAwLDcgQEAgaW50IGFtZGdwdV9m aWxsX2J1ZmZlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsKPj4gwqAgwqAgaW50IGFtZGdwdV9tbWFw KHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Cj4+IC1pbnQg YW1kZ3B1X3R0bV9hbGxvY19nYXJ0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwo+PiAr aW50IGFtZGdwdV90dG1fYWxsb2NfZ2FydChzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4+IMKgIGlu dCBhbWRncHVfdHRtX3JlY292ZXJfZ2FydChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibyk7 Cj4+IMKgIMKgICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fQU1ER1BVX1VTRVJQVFIpCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm1fc2RtYS5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9zZG1hLmMKPj4gaW5kZXgg NGNjNzg4MWY0MzhjLi5jODEwY2RhN2EwNmUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92bV9zZG1hLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZtX3NkbWEuYwo+PiBAQCAtMzcsMTIgKzM3LDEyIEBAIHN0YXRpYyBp bnQgYW1kZ3B1X3ZtX3NkbWFfbWFwX3RhYmxlKHN0cnVjdCAKPj4gYW1kZ3B1X2JvICp0YWJsZSkK Pj4gwqAgewo+PiDCoMKgwqDCoMKgIGludCByOwo+PiDCoCAtwqDCoMKgIHIgPSBhbWRncHVfdHRt X2FsbG9jX2dhcnQoJnRhYmxlLT50Ym8pOwo+PiArwqDCoMKgIHIgPSBhbWRncHVfdHRtX2FsbG9j X2dhcnQodGFibGUpOwo+PiDCoMKgwqDCoMKgIGlmIChyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIHI7Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKHRhYmxlLT5zaGFkb3cpCj4+IC3CoMKgwqDC oMKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZ0YWJsZS0+c2hhZG93LT50Ym8pOwo+ PiArwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCh0YWJsZS0+c2hhZG93 KTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4gwqAgfQo+PiBAQCAtMTQwLDcgKzE0MCw3 IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9zZG1hX2NvcHlfcHRlcyhzdHJ1Y3QgCj4+IGFtZGdw dV92bV91cGRhdGVfcGFyYW1zICpwLAo+PiDCoCDCoMKgwqDCoMKgIHNyYyArPSBwLT5udW1fZHdf bGVmdCAqIDQ7Cj4+IMKgIC3CoMKgwqAgcGUgKz0gYW1kZ3B1X2dtY19zaWduX2V4dGVuZChiby0+ dGJvLm9mZnNldCk7Cj4+ICvCoMKgwqAgcGUgKz0gYW1kZ3B1X2dtY19zaWduX2V4dGVuZChiby0+ b2Zmc2V0KTsKPj4gwqDCoMKgwqDCoCB0cmFjZV9hbWRncHVfdm1fY29weV9wdGVzKHBlLCBzcmMs IGNvdW50LCBwLT5kaXJlY3QpOwo+PiDCoCDCoMKgwqDCoMKgIGFtZGdwdV92bV9jb3B5X3B0ZShw LT5hZGV2LCBpYiwgcGUsIHNyYywgY291bnQpOwo+PiBAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRp YyB2b2lkIGFtZGdwdV92bV9zZG1hX3NldF9wdGVzKHN0cnVjdCAKPj4gYW1kZ3B1X3ZtX3VwZGF0 ZV9wYXJhbXMgKnAsCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2liICppYiA9 IHAtPmpvYi0+aWJzOwo+PiDCoCAtwqDCoMKgIHBlICs9IGFtZGdwdV9nbWNfc2lnbl9leHRlbmQo Ym8tPnRiby5vZmZzZXQpOwo+PiArwqDCoMKgIHBlICs9IGFtZGdwdV9nbWNfc2lnbl9leHRlbmQo Ym8tPm9mZnNldCk7Cj4+IMKgwqDCoMKgwqAgdHJhY2VfYW1kZ3B1X3ZtX3NldF9wdGVzKHBlLCBh ZGRyLCBjb3VudCwgaW5jciwgZmxhZ3MsIHAtPmRpcmVjdCk7Cj4+IMKgwqDCoMKgwqAgaWYgKGNv dW50IDwgMykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3ZtX3dyaXRlX3B0ZShwLT5h ZGV2LCBpYiwgcGUsIGFkZHIgfCBmbGFncywKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+PiBpbmRleCA2Nzg2ZDM0ZjdkMDQu LjI3N2RiYzZiYThlYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+IEBAIC01MjEyLDcgKzUyMTIsNyBAQCBzdGF0aWMg aW50IGRtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCAKPj4gZHJtX3BsYW5lICpwbGFu ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAg LcKgwqDCoCByID0gYW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZyYm8tPnRibyk7Cj4+ICvCoMKgwqAg ciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydChyYm8pOwo+PiDCoMKgwqDCoMKgIGlmICh1bmxpa2Vs eShyICE9IDApKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fdW5waW4ocmJvKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKCZ0aWNrZXQs ICZsaXN0KTsKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK