Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3474383yba; Mon, 29 Apr 2019 03:04:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqyxJHtDqGWypb0t68cMmhNwJm2z4lUjt41w4ZD0JRpUPZpZtqd82D2PlhnmupCIJBBnf+gM X-Received: by 2002:a63:8949:: with SMTP id v70mr9341171pgd.196.1556532285280; Mon, 29 Apr 2019 03:04:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556532285; cv=none; d=google.com; s=arc-20160816; b=VD2TmBfgvmXuHY3QkDSOtYXtPh4uvpVdIZ8r+opZXPm9LqWbgHstK7UFszfz+ly+E0 8nxa9h+4g2ztZAbSS5z5tk4nX8BDgkQY2EBcbI30qhnzvbk5wuxSRZa1zqLj03eJeFo+ 1Sc6870kTE/KsEzQYMvKIk5waNygveUJDuJMr91BFl8x0/905oV3/MXd9PGw5ez+TY+O znH21d/cvkSgyCXwatrpfA7rp4e3W1/fmOB9XRo6599YXFHqgWEhBd/pmp+HbQqXnlof T/w+gTzxDe0XksJ7AmrrbiUNejUxSDnOqp+XcslpS7BIdqs5nkjeouwi/QzR6n3yN1FC xcew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :nodisclaimer:content-language:accept-language:message-id:date :thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=f+RwpiDiIvXmy1MA6GO96EILHFoNhqy4SG1+zEFlTrc=; b=JQBfBAe3ikDb7FE5qXB1Rz1uvaJ8+bcYoQyS0wVZp1gSYoW6ljs3ARI7Y65LudfoxN 3vHDrr4IjothoDXTYPplN7VKFXW6sR9lz8MugwjX41j62Nr/WJpumGPHUAWmdohi4ggF LBbB1KSy5+nwINDOt/uCFAS1IR/LRtom3r1N3xya0C8jitaStrJ4iSxHftJWjfyzYo+z 9xLtsNl+VsCcUA1zuUsJaw0ly2zzNQEddwXPJ2rGM9W9CN4NjO417BEngLpNiegAI7Zo PNrN/jI+mffEVozPcreUaT3jZkpi8J11XAs91GXy3ZkoVtK1tASJEQ3J1Cs526GpvfOy DsmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=EFZ6Zdwf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w23si33825813plk.109.2019.04.29.03.04.29; Mon, 29 Apr 2019 03:04:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=EFZ6Zdwf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727630AbfD2KDd (ORCPT + 99 others); Mon, 29 Apr 2019 06:03:33 -0400 Received: from mail-eopbgr60065.outbound.protection.outlook.com ([40.107.6.65]:18134 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727560AbfD2KDc (ORCPT ); Mon, 29 Apr 2019 06:03:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f+RwpiDiIvXmy1MA6GO96EILHFoNhqy4SG1+zEFlTrc=; b=EFZ6Zdwf1YRKEDiQGxw5RqD0jCrVE5I8hVrD4LIihSmRI1JBkchcFtOKVrD+8H3MB3rQ5HqtqnHmlBtFfsSjw5EnxQjZekoxEYgkh326uQeJF11Sc+zTYYtxKkjl4sPpCCAgTCHqgiJHdnFYe0Tafl/2oO6b+rmOTz00JU2ThEw= Received: from VE1PR08MB5006.eurprd08.prod.outlook.com (10.255.159.31) by VE1PR08MB4736.eurprd08.prod.outlook.com (10.255.112.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.13; Mon, 29 Apr 2019 10:03:17 +0000 Received: from VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::6841:2153:b91f:759]) by VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::6841:2153:b91f:759%4]) with mapi id 15.20.1835.018; Mon, 29 Apr 2019 10:03:17 +0000 From: "james qian wang (Arm Technology China)" To: "emil.velikov@collabora.com" , Liviu Dudau , "airlied@linux.ie" , Brian Starkey , "maarten.lankhorst@linux.intel.com" , "sean@poorly.run" CC: "Jonathan Chai (Arm Technology China)" , "Julien Yin (Arm Technology China)" , "thomas Sun (Arm Technology China)" , "Lowry Li (Arm Technology China)" , Ayan Halder , "Tiannan Zhu (Arm Technology China)" , "Yiqi Kang (Arm Technology China)" , nd , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "james qian wang (Arm Technology China)" Subject: [PATCH v2] drm/komeda: Add writeback support Thread-Topic: [PATCH v2] drm/komeda: Add writeback support Thread-Index: AQHU/nLEUFbkTns0b0C4HI7lj6lTHw== Date: Mon, 29 Apr 2019 10:03:17 +0000 Message-ID: <20190429100258.4736-1-james.qian.wang@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [113.29.88.7] x-clientproxiedby: HK0P153CA0012.APCP153.PROD.OUTLOOK.COM (2603:1096:203:18::24) To VE1PR08MB5006.eurprd08.prod.outlook.com (2603:10a6:803:113::31) authentication-results: spf=none (sender IP is ) smtp.mailfrom=james.qian.wang@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 653461db-bba2-4b44-765c-08d6cc89e687 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:VE1PR08MB4736; x-ms-traffictypediagnostic: VE1PR08MB4736: nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0022134A87 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(366004)(396003)(346002)(376002)(39860400002)(199004)(189003)(52116002)(2906002)(5660300002)(4326008)(2616005)(71190400001)(97736004)(1076003)(486006)(30864003)(68736007)(6436002)(476003)(14454004)(66946007)(73956011)(64756008)(66446008)(6486002)(66476007)(66556008)(386003)(6506007)(36756003)(186003)(25786009)(55236004)(54906003)(2501003)(110136005)(6116002)(3846002)(2201001)(103116003)(81156014)(81166006)(66066001)(99286004)(71200400001)(478600001)(53936002)(53946003)(6512007)(5024004)(256004)(14444005)(8936002)(8676002)(26005)(7736002)(86362001)(50226002)(102836004)(305945005)(316002)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR08MB4736;H:VE1PR08MB5006.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: NaZ5lPozAI92GT2oQQBi0dDsb+qvYBx3NpJRcTOm2psQxAQAhSQ0fMTjjtj7il9czVmgKNT9ynl4zCaW7aDKrgh2qcDNqgOORnRfZEg1DGBbL85kbXQiPiGqRL5maGHp4XZ/LM+Ob9rNMvIlSNoJqdWIcbroN64jaQjsmvmUjJEUs2AjNoMaUz6emocxQLqidO5CuOgmmnnDqqTi1vWAdCnl2u9erXwFMd4MBnfH6GswVxnjizP/A9HzkKSx6VRtO3R1WH1R8B3cLa0TdHXwHqg9DjtrTt9IHhq5qbROezyfoMBl74PEOArlylT+V/3qmTe92VPsSzgv0tHtSpbX5oeWIUtzVNSZhtkN5tS7M7L92mvCKuHBE5xvtsUw19VgOTB0mGntSUTmzZtlazSnxRO719Nod4EPhoGaQdOE/gw= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 653461db-bba2-4b44-765c-08d6cc89e687 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2019 10:03:17.5601 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4736 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogImphbWVzIHFpYW4gd2FuZyAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIiA8amFtZXMucWlh bi53YW5nQGFybS5jb20+DQoNCktvbWVkYSBkcml2ZXIgdXNlcyBhIGluZGl2aWR1YWwgY29tcG9u ZW50IHRvIGRlc2NyaWJlIHRoZSBIVydzIHdyaXRlYmFjaw0KY2FwcywgYnV0IGRyaXZlcnMgZG9l c24ndCBkZWZpbmUgYSBuZXcgc3RydWN0dXJlIGFuZCBzdGlsbCB1c2VzIHRoZQ0KZXhpc3Rpbmcg InN0cnVjdCBrb21lZGFfbGF5ZXIiIHRvIGRlc2NyaWJlIHRoaXMgbmV3IGNvbXBvbmVudC4NClRo ZSBkZXRhaWxlZCBjaGFuZ2VzIGFzIGZvbGxvdzoNCg0KMS4gSW5pdGlhbGl6ZSB3Yl9sYXllciBh Y2NvcmRpbmcgdG8gSFcgYW5kIHJlcG9ydCBpdCB0byBDT1JFLg0KMi4gQ09SRSBleHBvc2VzIHdi X2xheWVyIGFzIGEgcmVzb3VyY2UgdG8gS01TIGJ5IHByaXZhdGVfb2JqLg0KMy4gUmVwb3J0IHdy aXRlYmFjayBzdXBwb3J0aW5nIGJ5IGFkZCBhIHdiX2Nvbm5lY3RvciB0byBLTVMsIGFuZCB0aGVu DQogICB3Yl9jb25uZWN0b3Igd2lsbCB0YWtlIGFjdCBhcyBhIGNvbXBvbmVudCByZXNvdXJjZXMg dXNlciwNCiAgIHNvIHRoZSBmdW5jIGtvbWVkYV93Yl9lbmNvZGVyX2F0b21pY19jaGVjayBjbGFp bXMga29tZWRhIHJlc291cmNlcw0KICAgKHNjYWxlciBhbmQgd2JfbGF5ZXIpIGFjY3JvZGluZyB0 byBpdHMgc3RhdGUgY29uZmlndXJhdGlvbiB0byB0aGUNCiAgIHdiX2Nvbm5lY3Rvci4gYW5kIHRo ZSB3Yl9zdGF0ZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdmFsaWRhdGVkIG9uIHRoZQ0KICAgc3Bl Y2lmaWMgY29tcG9uZW50IHJlc291cmNlcyB0byBzZWUgaWYgdGhlIGNhcHMgb2YgY29tcG9uZW50 IGNhbg0KICAgbWVldCB0aGUgcmVxdWlyZW1lbnQgb2Ygd2JfY29ubmVjdG9yLiBpZiBub3QgY2hl Y2sgZmFpbGVkLg0KNC4gVXBkYXRlIGlycV9oYW5kbGVyIHRvIG5vdGlmeSB0aGUgY29tcGxldGlv biBvZiB3cml0ZWJhY2suDQoNCk5PVEU6DQpUaGlzIGNoYW5nZSBkb2Vzbid0IGFkZCBzY2FsaW5n IHdyaXRlYmFjayBzdXBwb3J0LCB0aGF0IHN1cHBvcnQgd2lsbA0KYmUgYWRkZWQgaW4gdGhlIGZ1 dHVyZSBhZnRlciB0aGUgc2NhbGVyIHN1cHBvcnQuDQoNCnYyOiBSZWJhc2UNCg0KU2lnbmVkLW9m Zi1ieTogSmFtZXMgUWlhbiBXYW5nIChBcm0gVGVjaG5vbG9neSBDaGluYSkgPGphbWVzLnFpYW4u d2FuZ0Bhcm0uY29tPg0KLS0tDQogZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9N YWtlZmlsZSAgIHwgICAxICsNCiAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfY29tcG9u ZW50LmMgICAgfCAgOTAgKysrKysrKystDQogLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRh L2tvbWVkYV9jcnRjLmMgIHwgIDE1ICsrDQogLi4uL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf ZnJhbWVidWZmZXIuYyAgIHwgIDE5ICsrDQogLi4uL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRh L2tvbWVkYV9rbXMuYyAgIHwgICA0ICsNCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2ttcy5oICAgfCAgMjcgKysrDQogLi4uL2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX3BpcGVsaW5lLmggIHwgICA3ICsNCiAuLi4vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVs aW5lX3N0YXRlLmMgICAgfCAgNTEgKysrKy0NCiAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9wcml2YXRlX29iai5jICAgfCAgIDYgKw0KIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X3diX2Nvbm5lY3Rvci5jICB8IDE4MSArKysrKysrKysrKysrKysrKysNCiAxMCBmaWxlcyBjaGFu Z2VkLCAzOTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9y LmMNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlDQppbmRl eCA2MmJkMWJmZjY2YTMuLmQ3ZTI5ZmM2ODhjMyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCkBAIC0xNCw2ICsxNCw3IEBAIGtvbWVkYS15IDo9IFwN CiAJa29tZWRhX2ttcy5vIFwNCiAJa29tZWRhX2NydGMubyBcDQogCWtvbWVkYV9wbGFuZS5vIFwN CisJa29tZWRhX3diX2Nvbm5lY3Rvci5vIFwNCiAJa29tZWRhX3ByaXZhdGVfb2JqLm8NCiANCiBr b21lZGEteSArPSBcDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jDQppbmRleCAwMzFlNWYzMDVhM2MuLjE1NjE4MDY0MzFl YiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcxL2Q3 MV9jb21wb25lbnQuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9k NzEvZDcxX2NvbXBvbmVudC5jDQpAQCAtMjg4LDEwICsyODgsOTggQEAgc3RhdGljIGludCBkNzFf bGF5ZXJfaW5pdChzdHJ1Y3QgZDcxX2RldiAqZDcxLA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3Rh dGljIHZvaWQgZDcxX3diX2xheWVyX3VwZGF0ZShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywN CisJCQkJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgKnN0YXRlKQ0KK3sNCisJc3RydWN0 IGtvbWVkYV9sYXllcl9zdGF0ZSAqc3QgPSB0b19sYXllcl9zdChzdGF0ZSk7DQorCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0ID0gc3RhdGUtPndiX2Nvbm4tPnN0YXRlOw0KKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNvbm5fc3QtPndyaXRlYmFja19qb2ItPmZiOw0K KwlzdHJ1Y3Qga29tZWRhX2ZiICprZmIgPSB0b19rZmIoZmIpOw0KKwl1MzIgX19pb21lbSAqcmVn ID0gYy0+cmVnOw0KKwl1MzIgY3RybCA9IExfRU4gfCBMV19PRk0sIG1hc2sgPSBMX0VOIHwgTFdf T0ZNIHwgTFdfVEJVX0VOOw0KKwlpbnQgaTsNCisNCisJZm9yIChpID0gMDsgaSA8IGZiLT5mb3Jt YXQtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJbWFsaWRwX3dyaXRlMzIocmVnICsgaSAqIExBWUVS X1BFUl9QTEFORV9SRUdTLCBCTEtfUDBfUFRSX0xPVywNCisJCQkgICAgICAgbG93ZXJfMzJfYml0 cyhzdC0+YWRkcltpXSkpOw0KKwkJbWFsaWRwX3dyaXRlMzIocmVnICsgaSAqIExBWUVSX1BFUl9Q TEFORV9SRUdTLCBCTEtfUDBfUFRSX0hJR0gsDQorCQkJICAgICAgIHVwcGVyXzMyX2JpdHMoc3Qt PmFkZHJbaV0pKTsNCisNCisJCW1hbGlkcF93cml0ZTMyKHJlZyArIGkgKiBMQVlFUl9QRVJfUExB TkVfUkVHUywgQkxLX1AwX1NUUklERSwNCisJCQkgICAgICAgZmItPnBpdGNoZXNbaV0gJiAweEZG RkYpOw0KKwl9DQorDQorCW1hbGlkcF93cml0ZTMyKHJlZywgTEFZRVJfRk1ULCBrZmItPmZvcm1h dF9jYXBzLT5od19pZCk7DQorCW1hbGlkcF93cml0ZTMyKHJlZywgQkxLX0lOX1NJWkUsIEhWX1NJ WkUoc3QtPmhzaXplLCBzdC0+dnNpemUpKTsNCisJbWFsaWRwX3dyaXRlMzIocmVnLCBCTEtfSU5Q VVRfSUQwLCB0b19kNzFfaW5wdXRfaWQoJnN0YXRlLT5pbnB1dHNbMF0pKTsNCisJbWFsaWRwX3dy aXRlMzJfbWFzayhyZWcsIEJMS19DT05UUk9MLCBtYXNrLCBjdHJsKTsNCit9DQorDQorc3RhdGlj IHZvaWQgZDcxX3diX2xheWVyX2R1bXAoc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMsIHN0cnVj dCBzZXFfZmlsZSAqc2YpDQorew0KKwl1MzIgdlsxMl0sIGk7DQorDQorCWR1bXBfYmxvY2tfaGVh ZGVyKHNmLCBjLT5yZWcpOw0KKw0KKwlnZXRfdmFsdWVzX2Zyb21fcmVnKGMtPnJlZywgMHg4MCwg MSwgdik7DQorCXNlcV9wcmludGYoc2YsICJMV19JTlBVVF9JRDA6XHRcdDB4JVhcbiIsIHZbMF0p Ow0KKw0KKwlnZXRfdmFsdWVzX2Zyb21fcmVnKGMtPnJlZywgMHhEMCwgMywgdik7DQorCXNlcV9w cmludGYoc2YsICJMV19DT05UUk9MOlx0XHQweCVYXG4iLCB2WzBdKTsNCisJc2VxX3ByaW50Zihz ZiwgIkxXX1BST0dfTElORTpcdFx0MHglWFxuIiwgdlsxXSk7DQorCXNlcV9wcmludGYoc2YsICJM V19GT1JNQVQ6XHRcdDB4JVhcbiIsIHZbMl0pOw0KKw0KKwlnZXRfdmFsdWVzX2Zyb21fcmVnKGMt PnJlZywgMHhFMCwgMSwgdik7DQorCXNlcV9wcmludGYoc2YsICJMV19JTl9TSVpFOlx0XHQweCVY XG4iLCB2WzBdKTsNCisNCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgew0KKwkJZ2V0X3ZhbHVl c19mcm9tX3JlZyhjLT5yZWcsIDB4MTAwICsgaSAqIDB4MTAsIDMsIHYpOw0KKwkJc2VxX3ByaW50 ZihzZiwgIkxXX1AldV9QVFJfTE9XOlx0XHQweCVYXG4iLCBpLCB2WzBdKTsNCisJCXNlcV9wcmlu dGYoc2YsICJMV19QJXVfUFRSX0hJR0g6XHRcdDB4JVhcbiIsIGksIHZbMV0pOw0KKwkJc2VxX3By aW50ZihzZiwgIkxXX1AldV9TVFJJREU6XHRcdDB4JVhcbiIsIGksIHZbMl0pOw0KKwl9DQorDQor CWdldF92YWx1ZXNfZnJvbV9yZWcoYy0+cmVnLCAweDEzMCwgMTIsIHYpOw0KKwlmb3IgKGkgPSAw OyBpIDwgMTI7IGkrKykNCisJCXNlcV9wcmludGYoc2YsICJMV19SR0JfWVVWX0NPRUZGJXU6XHQw eCVYXG4iLCBpLCB2W2ldKTsNCit9DQorDQorc3RhdGljIHZvaWQgZDcxX3diX2xheWVyX2Rpc2Fi bGUoc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMpDQorew0KKwltYWxpZHBfd3JpdGUzMihjLT5y ZWcsIEJMS19JTlBVVF9JRDAsIDApOw0KKwltYWxpZHBfd3JpdGUzMl9tYXNrKGMtPnJlZywgQkxL X0NPTlRST0wsIExfRU4sIDApOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGtvbWVkYV9jb21wb25l bnRfZnVuY3MgZDcxX3diX2xheWVyX2Z1bmNzID0gew0KKwkudXBkYXRlCQk9IGQ3MV93Yl9sYXll cl91cGRhdGUsDQorCS5kaXNhYmxlCT0gZDcxX3diX2xheWVyX2Rpc2FibGUsDQorCS5kdW1wX3Jl Z2lzdGVyCT0gZDcxX3diX2xheWVyX2R1bXAsDQorfTsNCisNCiBzdGF0aWMgaW50IGQ3MV93Yl9s YXllcl9pbml0KHN0cnVjdCBkNzFfZGV2ICpkNzEsDQogCQkJICAgICBzdHJ1Y3QgYmxvY2tfaGVh ZGVyICpibGssIHUzMiBfX2lvbWVtICpyZWcpDQogew0KLQlEUk1fREVCVUcoIkRldGVjdCBENzFf V2JfTGF5ZXIuXG4iKTsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmM7DQorCXN0cnVjdCBr b21lZGFfbGF5ZXIgKndiX2xheWVyOw0KKwl1MzIgcGlwZV9pZCwgbGF5ZXJfaWQ7DQorDQorCWdl dF9yZXNvdXJjZXNfaWQoYmxrLT5ibG9ja19pbmZvLCAmcGlwZV9pZCwgJmxheWVyX2lkKTsNCisN CisJYyA9IGtvbWVkYV9jb21wb25lbnRfYWRkKCZkNzEtPnBpcGVzW3BpcGVfaWRdLT5iYXNlLCBz aXplb2YoKndiX2xheWVyKSwNCisJCQkJIGxheWVyX2lkLCBCTE9DS19JTkZPX0lOUFVUX0lEKGJs ay0+YmxvY2tfaW5mbyksDQorCQkJCSAmZDcxX3diX2xheWVyX2Z1bmNzLA0KKwkJCQkgMSwgZ2V0 X3ZhbGlkX2lucHV0cyhibGspLCAwLCByZWcsDQorCQkJCSAiTFBVJWRfTEFZRVJfV1IiLCBwaXBl X2lkKTsNCisJaWYgKCFjKSB7DQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgd2JfbGF5ZXIg Y29tcG9uZW50XG4iKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXdiX2xheWVyID0g dG9fbGF5ZXIoYyk7DQorCXdiX2xheWVyLT5sYXllcl90eXBlID0gS09NRURBX0ZNVF9XQl9MQVlF UjsNCisNCisJc2V0X3JhbmdlKCZ3Yl9sYXllci0+aHNpemVfaW4sIEQ3MV9NSU5fTElORV9TSVpF LCBkNzEtPm1heF9saW5lX3NpemUpOw0KKwlzZXRfcmFuZ2UoJndiX2xheWVyLT52c2l6ZV9pbiwg RDcxX01JTl9WRVJUSUNBTF9TSVpFLCBkNzEtPm1heF92c2l6ZSk7DQogDQogCXJldHVybiAwOw0K IH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRj LmMNCmluZGV4IDYyZmFkNTlmNWE2YS4uMjQ5MzczYjU4YjI0IDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jDQorKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMNCkBAIC0xNjUsNiArMTY1 LDE1IEBAIHZvaWQga29tZWRhX2NydGNfaGFuZGxlX2V2ZW50KHN0cnVjdCBrb21lZGFfY3J0YyAg ICprY3J0YywNCiAJaWYgKGV2ZW50cyAmIEtPTUVEQV9FVkVOVF9WU1lOQykNCiAJCWRybV9jcnRj X2hhbmRsZV92YmxhbmsoY3J0Yyk7DQogDQorCWlmIChldmVudHMgJiBLT01FREFfRVZFTlRfRU9X KSB7DQorCQlzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqd2JfY29ubiA9IGtjcnRjLT53Yl9j b25uOw0KKw0KKwkJaWYgKHdiX2Nvbm4pDQorCQkJZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxl dGlvbigmd2JfY29ubi0+YmFzZSwgMCk7DQorCQllbHNlDQorCQkJRFJNX1dBUk4oIkNSVENbJWRd OiBFT1cgaGFwcGVuIGJ1dCBubyB3Yl9jb25uZWN0b3IuXG4iLA0KKwkJCQkgZHJtX2NydGNfaW5k ZXgoJmtjcnRjLT5iYXNlKSk7DQorCX0NCiAJLyogd2lsbCBoYW5kbGUgaXQgdG9nZXRoZXIgd2l0 aCB0aGUgd3JpdGUgYmFjayBzdXBwb3J0ICovDQogCWlmIChldmVudHMgJiBLT01FREFfRVZFTlRf RU9XKQ0KIAkJRFJNX0RFQlVHKCJFT1cuXG4iKTsNCkBAIC0yMDEsNiArMjEwLDggQEAga29tZWRh X2NydGNfZG9fZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLA0KIAlzdHJ1Y3Qga29tZWRhX2Ny dGNfc3RhdGUgKmtjcnRjX3N0ID0gdG9fa2NydGNfc3QoY3J0Yy0+c3RhdGUpOw0KIAlzdHJ1Y3Qg a29tZWRhX2RldiAqbWRldiA9IGtjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7DQogCXN0cnVj dCBrb21lZGFfcGlwZWxpbmUgKm1hc3RlciA9IGtjcnRjLT5tYXN0ZXI7DQorCXN0cnVjdCBrb21l ZGFfd2JfY29ubmVjdG9yICp3Yl9jb25uID0ga2NydGMtPndiX2Nvbm47DQorCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uX3N0Ow0KIA0KIAlEUk1fREVCVUdfQVRPTUlDKCJDUlRDJWRf RkxVU0g6IGFjdGl2ZV9waXBlczogMHgleCwgYWZmZWN0ZWQ6IDB4JXguXG4iLA0KIAkJCSBkcm1f Y3J0Y19pbmRleChjcnRjKSwNCkBAIC0yMTAsNiArMjIxLDEwIEBAIGtvbWVkYV9jcnRjX2RvX2Zs dXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCiAJaWYgKGhhc19iaXQobWFzdGVyLT5pZCwga2Ny dGNfc3QtPmFmZmVjdGVkX3BpcGVzKSkNCiAJCWtvbWVkYV9waXBlbGluZV91cGRhdGUobWFzdGVy LCBvbGQtPnN0YXRlKTsNCiANCisJY29ubl9zdCA9IHdiX2Nvbm4gPyB3Yl9jb25uLT5iYXNlLmJh c2Uuc3RhdGUgOiBOVUxMOw0KKwlpZiAoY29ubl9zdCAmJiBjb25uX3N0LT53cml0ZWJhY2tfam9i KQ0KKwkJZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoJndiX2Nvbm4tPmJhc2UsIGNvbm5fc3QpOw0K Kw0KIAkvKiBzdGVwIDI6IG5vdGlmeSB0aGUgSFcgdG8ga2lja29mZiB0aGUgdXBkYXRlICovDQog CW1kZXYtPmZ1bmNzLT5mbHVzaChtZGV2LCBtYXN0ZXItPmlkLCBrY3J0Y19zdC0+YWN0aXZlX3Bp cGVzKTsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9rb21lZGFfZnJhbWVidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMNCmluZGV4IDljYzk5MzUwMjRmNy4uNGQ4MTYwY2YwOWMz IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf ZnJhbWVidWZmZXIuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfZnJhbWVidWZmZXIuYw0KQEAgLTE2NSwzICsxNjUsMjIgQEAga29tZWRhX2ZiX2dldF9w aXhlbF9hZGRyKHN0cnVjdCBrb21lZGFfZmIgKmtmYiwgaW50IHgsIGludCB5LCBpbnQgcGxhbmUp DQogDQogCXJldHVybiBvYmotPnBhZGRyICsgb2Zmc2V0Ow0KIH0NCisNCisvKiBpZiB0aGUgZmIg Y2FuIGJlIHN1cHBvcnRlZCBieSBhIHNwZWNpZmljIGxheWVyICovDQorYm9vbCBrb21lZGFfZmJf aXNfbGF5ZXJfc3VwcG9ydGVkKHN0cnVjdCBrb21lZGFfZmIgKmtmYiwgdTMyIGxheWVyX3R5cGUp DQorew0KKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZrZmItPmJhc2U7DQorCXN0cnVj dCBrb21lZGFfZGV2ICptZGV2ID0gZmItPmRldi0+ZGV2X3ByaXZhdGU7DQorCWNvbnN0IHN0cnVj dCBrb21lZGFfZm9ybWF0X2NhcHMgKmNhcHM7DQorCXUzMiBmb3VyY2MgPSBmYi0+Zm9ybWF0LT5m b3JtYXQ7DQorCXU2NCBtb2RpZmllciA9IGZiLT5tb2RpZmllcjsNCisNCisJY2FwcyA9IGtvbWVk YV9nZXRfZm9ybWF0X2NhcHMoJm1kZXYtPmZtdF90YmwsIGZvdXJjYywgbW9kaWZpZXIpOw0KKwlp ZiAoIWNhcHMpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCWlmICghKGNhcHMtPnN1cHBvcnRlZF9s YXllcl90eXBlcyAmIGxheWVyX3R5cGUpKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwlyZXR1cm4g dHJ1ZTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9rb21lZGFfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9rbXMuYw0KaW5kZXggODZmNjU0MmFmYjQwLi4zZTU4OTAxZmI3NzYgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYw0KKysrIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMNCkBAIC0xODgsNiAr MTg4LDEwIEBAIHN0cnVjdCBrb21lZGFfa21zX2RldiAqa29tZWRhX2ttc19hdHRhY2goc3RydWN0 IGtvbWVkYV9kZXYgKm1kZXYpDQogCWlmIChlcnIpDQogCQlnb3RvIGNsZWFudXBfbW9kZV9jb25m aWc7DQogDQorCWVyciA9IGtvbWVkYV9rbXNfYWRkX3diX2Nvbm5lY3RvcnMoa21zLCBtZGV2KTsN CisJaWYgKGVycikNCisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsNCisNCiAJZXJyID0gY29t cG9uZW50X2JpbmRfYWxsKG1kZXYtPmRldiwga21zKTsNCiAJaWYgKGVycikNCiAJCWdvdG8gY2xl YW51cF9tb2RlX2NvbmZpZzsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2ttcy5oDQppbmRleCBhYzNkOTIwOWI0ZDkuLmYxNmU5ZTU3NzU5MyAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oDQor KysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaA0KQEAg LTEyLDYgKzEyLDcgQEANCiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPg0KICNpbmNs dWRlIDxkcm0vZHJtX2RldmljZS5oPg0KICNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPg0K KyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+DQogI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5o Pg0KICNpbmNsdWRlIDx2aWRlby9kaXNwbGF5X3RpbWluZy5oPg0KIA0KQEAgLTczLDYgKzc0LDkg QEAgc3RydWN0IGtvbWVkYV9jcnRjIHsNCiAJICovDQogCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnNsYXZlOw0KIA0KKwkvKiogQHdiX2Nvbm46IGtvbWVkYSB3cml0ZSBiYWNrIGNvbm5lY3RvciAq Lw0KKwlzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqd2JfY29ubjsNCisNCiAJLyoqIEBkaXNh YmxlX2RvbmU6IHRoaXMgZmxpcF9kb25lIGlzIGZvciB0cmFjaW5nIHRoZSBkaXNhYmxlICovDQog CXN0cnVjdCBjb21wbGV0aW9uICpkaXNhYmxlX2RvbmU7DQogfTsNCkBAIC0xMTYsNiArMTIwLDI3 IEBAIHN0cnVjdCBrb21lZGFfa21zX2RldiB7DQogI2RlZmluZSB0b19rY3J0YyhwKQljb250YWlu ZXJfb2YocCwgc3RydWN0IGtvbWVkYV9jcnRjLCBiYXNlKQ0KICNkZWZpbmUgdG9fa2NydGNfc3Qo cCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSwgYmFzZSkNCiAjZGVm aW5lIHRvX2tkZXYocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfa21zX2RldiwgYmFz ZSkNCisjZGVmaW5lIHRvX3diX2Nvbm4oeCkJY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fd3Jp dGViYWNrX2Nvbm5lY3RvciwgYmFzZSkNCisNCitzdGF0aWMgaW5saW5lIGJvb2wgaXNfd3JpdGVi YWNrX29ubHkoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdCkNCit7DQorCXN0cnVjdCBrb21lZGFf d2JfY29ubmVjdG9yICp3Yl9jb25uID0gdG9fa2NydGMoc3QtPmNydGMpLT53Yl9jb25uOw0KKwlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9IHdiX2Nvbm4gPyAmd2JfY29ubi0+YmFzZS5iYXNl IDogTlVMTDsNCisNCisJcmV0dXJuIGNvbm4gJiYgKHN0LT5jb25uZWN0b3JfbWFzayA9PSBCSVQo ZHJtX2Nvbm5lY3Rvcl9pbmRleChjb25uKSkpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGJvb2wN Citpc19vbmx5X2NoYW5nZWRfY29ubmVjdG9yKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3QsIHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uKQ0KK3sNCisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpv bGRfc3Q7DQorCXUzMiBjaGFuZ2VkX2Nvbm5lY3RvcnM7DQorDQorCW9sZF9zdCA9IGRybV9hdG9t aWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0LT5zdGF0ZSwgc3QtPmNydGMpOw0KKwljaGFuZ2VkX2Nv bm5lY3RvcnMgPSBzdC0+Y29ubmVjdG9yX21hc2sgXiBvbGRfc3QtPmNvbm5lY3Rvcl9tYXNrOw0K Kw0KKwlyZXR1cm4gQklUKGRybV9jb25uZWN0b3JfaW5kZXgoY29ubikpID09IGNoYW5nZWRfY29u bmVjdG9yczsNCit9DQogDQogaW50IGtvbWVkYV9rbXNfc2V0dXBfY3J0Y3Moc3RydWN0IGtvbWVk YV9rbXNfZGV2ICprbXMsIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsNCiANCkBAIC0xMjMsNiAr MTQ4LDggQEAgaW50IGtvbWVkYV9rbXNfYWRkX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7DQogaW50IGtvbWVkYV9rbXNfYWRkX3BsYW5l cyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOw0K IGludCBrb21lZGFfa21zX2FkZF9wcml2YXRlX29ianMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICpr bXMsDQogCQkJCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsNCitpbnQga29tZWRhX2ttc19hZGRf d2JfY29ubmVjdG9ycyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywNCisJCQkJIHN0cnVjdCBr b21lZGFfZGV2ICptZGV2KTsNCiB2b2lkIGtvbWVkYV9rbXNfY2xlYW51cF9wcml2YXRlX29ianMo c3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMpOw0KIA0KIHZvaWQga29tZWRhX2NydGNfaGFuZGxl X2V2ZW50KHN0cnVjdCBrb21lZGFfY3J0YyAgICprY3J0YywNCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaA0KaW5kZXggYjFmODEz YTM0OWE0Li43OTk4YTFlNDU2YjcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQpAQCAtNDIzLDEwICs0MjMsMTcgQEAg c3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZTsNCiBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGU7DQog c3RydWN0IGtvbWVkYV9jcnRjOw0KIA0KK3ZvaWQgcGlwZWxpbmVfY29tcG9zaXRpb25fc2l6ZShz dHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KKwkJCSAgICAgICB1MTYgKmhzaXpl LCB1MTYgKnZzaXplKTsNCisNCiBpbnQga29tZWRhX2J1aWxkX2xheWVyX2RhdGFfZmxvdyhzdHJ1 Y3Qga29tZWRhX2xheWVyICpsYXllciwNCiAJCQkJIHN0cnVjdCBrb21lZGFfcGxhbmVfc3RhdGUg KmtwbGFuZV9zdCwNCiAJCQkJIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QsDQog CQkJCSBzdHJ1Y3Qga29tZWRhX2RhdGFfZmxvd19jZmcgKmRmbG93KTsNCitpbnQga29tZWRhX2J1 aWxkX3diX2RhdGFfZmxvdyhzdHJ1Y3Qga29tZWRhX2xheWVyICp3Yl9sYXllciwNCisJCQkgICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdCwNCisJCQkgICAgICBzdHJ1Y3Qg a29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfZGF0 YV9mbG93X2NmZyAqZGZsb3cpOw0KIGludCBrb21lZGFfYnVpbGRfZGlzcGxheV9kYXRhX2Zsb3co c3RydWN0IGtvbWVkYV9jcnRjICprY3J0YywNCiAJCQkJICAgc3RydWN0IGtvbWVkYV9jcnRjX3N0 YXRlICprY3J0Y19zdCk7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmVfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lX3N0YXRlLmMNCmluZGV4IDM2NTcwZDdkYWQ2 MS4uOTc0OGM5NDM4ODY4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfcGlwZWxpbmVfc3RhdGUuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmVfc3RhdGUuYw0KQEAgLTMwOCw4ICszMDgs NDEgQEAga29tZWRhX2xheWVyX3ZhbGlkYXRlKHN0cnVjdCBrb21lZGFfbGF5ZXIgKmxheWVyLA0K IAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIHZvaWQgcGlwZWxpbmVfY29tcG9zaXRpb25fc2l6 ZShzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KLQkJCQkgICAgICB1MTYgKmhz aXplLCB1MTYgKnZzaXplKQ0KK3N0YXRpYyBpbnQNCitrb21lZGFfd2JfbGF5ZXJfdmFsaWRhdGUo c3RydWN0IGtvbWVkYV9sYXllciAqd2JfbGF5ZXIsDQorCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0LA0KKwkJCSBzdHJ1Y3Qga29tZWRhX2RhdGFfZmxvd19jZmcgKmRmbG93 KQ0KK3sNCisJc3RydWN0IGtvbWVkYV9mYiAqa2ZiID0gdG9fa2ZiKGNvbm5fc3QtPndyaXRlYmFj a19qb2ItPmZiKTsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgKmNfc3Q7DQorCXN0 cnVjdCBrb21lZGFfbGF5ZXJfc3RhdGUgKnN0Ow0KKwlpbnQgaTsNCisNCisJaWYgKCFrb21lZGFf ZmJfaXNfbGF5ZXJfc3VwcG9ydGVkKGtmYiwgd2JfbGF5ZXItPmxheWVyX3R5cGUpKQ0KKwkJcmV0 dXJuIC1FSU5WQUw7DQorDQorCWNfc3QgPSBrb21lZGFfY29tcG9uZW50X2dldF9zdGF0ZV9hbmRf c2V0X3VzZXIoJndiX2xheWVyLT5iYXNlLA0KKwkJCWNvbm5fc3QtPnN0YXRlLCBjb25uX3N0LT5j b25uZWN0b3IsIGNvbm5fc3QtPmNydGMpOw0KKwlpZiAoSVNfRVJSKGNfc3QpKQ0KKwkJcmV0dXJu IFBUUl9FUlIoY19zdCk7DQorDQorCXN0ID0gdG9fbGF5ZXJfc3QoY19zdCk7DQorDQorCXN0LT5o c2l6ZSA9IGRmbG93LT5vdXRfdzsNCisJc3QtPnZzaXplID0gZGZsb3ctPm91dF9oOw0KKw0KKwlm b3IgKGkgPSAwOyBpIDwga2ZiLT5iYXNlLmZvcm1hdC0+bnVtX3BsYW5lczsgaSsrKQ0KKwkJc3Qt PmFkZHJbaV0gPSBrb21lZGFfZmJfZ2V0X3BpeGVsX2FkZHIoa2ZiLCBkZmxvdy0+b3V0X3gsDQor CQkJCQkJICAgICAgIGRmbG93LT5vdXRfeSwgaSk7DQorDQorCWtvbWVkYV9jb21wb25lbnRfYWRk X2lucHV0KCZzdC0+YmFzZSwgJmRmbG93LT5pbnB1dCwgMCk7DQorCWtvbWVkYV9jb21wb25lbnRf c2V0X291dHB1dCgmZGZsb3ctPmlucHV0LCAmd2JfbGF5ZXItPmJhc2UsIDApOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQordm9pZCBwaXBlbGluZV9jb21wb3NpdGlvbl9zaXplKHN0cnVjdCBrb21l ZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QsDQorCQkJICAgICAgIHUxNiAqaHNpemUsIHUxNiAqdnNp emUpDQogew0KIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbSA9ICZrY3J0Y19zdC0+YmFzZS5h ZGp1c3RlZF9tb2RlOw0KIA0KQEAgLTQ3OCw2ICs1MTEsMjAgQEAgaW50IGtvbWVkYV9idWlsZF9s YXllcl9kYXRhX2Zsb3coc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXIsDQogCXJldHVybiBlcnI7 DQogfQ0KIA0KK2ludCBrb21lZGFfYnVpbGRfd2JfZGF0YV9mbG93KHN0cnVjdCBrb21lZGFfbGF5 ZXIgKndiX2xheWVyLA0KKwkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QsDQorCQkJ ICAgICAgc3RydWN0IGtvbWVkYV9kYXRhX2Zsb3dfY2ZnICpkZmxvdykNCit7DQorCWlmICgoZGZs b3ctPmluX3cgIT0gZGZsb3ctPm91dF93KSB8fA0KKwkgICAgKGRmbG93LT5pbl9oICE9IGRmbG93 LT5vdXRfaCkpIHsNCisJCURSTV9ERUJVR19BVE9NSUMoImN1cnJlbnQgZG8gbm90IHN1cHBvcnQg c2NhbGluZyB3cml0ZWJhY2suXG4iKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXJl dHVybiBrb21lZGFfd2JfbGF5ZXJfdmFsaWRhdGUod2JfbGF5ZXIsIGNvbm5fc3QsIGRmbG93KTsN Cit9DQorDQogLyogYnVpbGQgZGlzcGxheSBvdXRwdXQgZGF0YSBmbG93LCB0aGUgZGF0YSBwYXRo IGlzOg0KICAqIGNvbXBpeiAtPiBpbXByb2MgLT4gdGltaW5nX2N0cmxyDQogICovDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9v YmouYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVf b2JqLmMNCmluZGV4IGE1NDg3OGNiZDZlNC4uZDUzYmQ2YzIzYzVkIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYw0KKysr IGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmou Yw0KQEAgLTI1Miw2ICsyNTIsMTIgQEAgaW50IGtvbWVkYV9rbXNfYWRkX3ByaXZhdGVfb2Jqcyhz dHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywNCiAJCQkJcmV0dXJuIGVycjsNCiAJCX0NCiANCisJ CWlmIChwaXBlLT53Yl9sYXllcikgew0KKwkJCWVyciA9IGtvbWVkYV9sYXllcl9vYmpfYWRkKGtt cywgcGlwZS0+d2JfbGF5ZXIpOw0KKwkJCWlmIChlcnIpDQorCQkJCXJldHVybiBlcnI7DQorCQl9 DQorDQogCQllcnIgPSBrb21lZGFfY29tcGl6X29ial9hZGQoa21zLCBwaXBlLT5jb21waXopOw0K IAkJaWYgKGVycikNCiAJCQlyZXR1cm4gZXJyOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3diX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjBjMWE0MjIwYzI4MA0KLS0tIC9kZXYvbnVs bA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29u bmVjdG9yLmMNCkBAIC0wLDAgKzEsMTgxIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjANCisvKg0KKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCisgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53 YW5nQGFybS5jb20+DQorICoNCisgKi8NCisjaW5jbHVkZSAia29tZWRhX2Rldi5oIg0KKyNpbmNs dWRlICJrb21lZGFfa21zLmgiDQorDQorc3RhdGljIGludA0KK2tvbWVkYV93Yl9pbml0X2RhdGFf ZmxvdyhzdHJ1Y3Qga29tZWRhX2xheWVyICp3Yl9sYXllciwNCisJCQkgc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3QsDQorCQkJIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2Ny dGNfc3QsDQorCQkJIHN0cnVjdCBrb21lZGFfZGF0YV9mbG93X2NmZyAqZGZsb3cpDQorew0KKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNvbm5fc3QtPndyaXRlYmFja19qb2IgPw0KKwkJ CQkgICAgIGNvbm5fc3QtPndyaXRlYmFja19qb2ItPmZiIDogTlVMTDsNCisNCisJaWYgKCFmYikN CisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwltZW1zZXQoZGZsb3csIDAsIHNpemVvZigqZGZsb3cp KTsNCisNCisJZGZsb3ctPm91dF93ID0gZmItPndpZHRoOw0KKwlkZmxvdy0+b3V0X2ggPSBmYi0+ aGVpZ2h0Ow0KKw0KKwkvKiB0aGUgd3JpdGUgYmFjayBkYXRhIGNvbWVzIGZyb20gdGhlIGNvbXBp eiAqLw0KKwlwaXBlbGluZV9jb21wb3NpdGlvbl9zaXplKGtjcnRjX3N0LCAmZGZsb3ctPmluX3cs ICZkZmxvdy0+aW5faCk7DQorCWRmbG93LT5pbnB1dC5jb21wb25lbnQgPSAmd2JfbGF5ZXItPmJh c2UucGlwZWxpbmUtPmNvbXBpei0+YmFzZTsNCisJLyogY29tcGl6IGRvZXNuJ3Qgb3V0cHV0IGFs cGhhICovDQorCWRmbG93LT5waXhlbF9ibGVuZF9tb2RlID0gRFJNX01PREVfQkxFTkRfUElYRUxf Tk9ORTsNCisJZGZsb3ctPnJvdCA9IERSTV9NT0RFX1JPVEFURV8wOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludA0KK2tvbWVkYV93Yl9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQorCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdCwNCisJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3QpDQorew0KKwlzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0ID0gdG9fa2NydGNf c3QoY3J0Y19zdCk7DQorCXN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVyOw0KKwlzdHJ1Y3Qg a29tZWRhX2RhdGFfZmxvd19jZmcgZGZsb3c7DQorCWludCBlcnI7DQorDQorCWlmICghY3J0Y19z dC0+YWN0aXZlKSB7DQorCQlEUk1fREVCVUdfQVRPTUlDKCJDYW5ub3Qgd3JpdGUgdGhlIGNvbXBv c2l0aW9uIHJlc3VsdCBvdXQgb24gYSBpbmFjdGl2ZSBDUlRDLlxuIik7DQorCQlyZXR1cm4gLUVJ TlZBTDsNCisJfQ0KKw0KKwl3Yl9sYXllciA9IHRvX2tjb25uKHRvX3diX2Nvbm4oY29ubl9zdC0+ Y29ubmVjdG9yKSktPndiX2xheWVyOw0KKw0KKwkvKg0KKwkgKiBObyBuZWVkIGZvciBhIGZ1bGwg bW9kZXN0ZWQgd2hlbiB0aGUgb25seSBjb25uZWN0b3IgY2hhbmdlZCBpcyB0aGUNCisJICogd3Jp dGViYWNrIGNvbm5lY3Rvci4NCisJICovDQorCWlmIChjcnRjX3N0LT5jb25uZWN0b3JzX2NoYW5n ZWQgJiYNCisJICAgIGlzX29ubHlfY2hhbmdlZF9jb25uZWN0b3IoY3J0Y19zdCwgY29ubl9zdC0+ Y29ubmVjdG9yKSkNCisJCWNydGNfc3QtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IGZhbHNlOw0KKw0K KwllcnIgPSBrb21lZGFfd2JfaW5pdF9kYXRhX2Zsb3cod2JfbGF5ZXIsIGNvbm5fc3QsIGtjcnRj X3N0LCAmZGZsb3cpOw0KKwlpZiAoZXJyKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJcmV0dXJuIGtv bWVkYV9idWlsZF93Yl9kYXRhX2Zsb3cod2JfbGF5ZXIsIGNvbm5fc3QsIGtjcnRjX3N0LCAmZGZs b3cpOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5j cyBrb21lZGFfd2JfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7DQorCS5hdG9taWNfY2hlY2sgPSBr b21lZGFfd2JfZW5jb2Rlcl9hdG9taWNfY2hlY2ssDQorfTsNCisNCitzdGF0aWMgaW50DQora29t ZWRhX3diX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMN Citrb21lZGFfd2JfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwNCisJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpDQorew0K KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7DQorCXN0cnVjdCBkcm1f bW9kZV9jb25maWcgKm1vZGVfY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7DQorCWludCB3ID0g bW9kZS0+aGRpc3BsYXksIGggPSBtb2RlLT52ZGlzcGxheTsNCisNCisJaWYgKCh3IDwgbW9kZV9j b25maWctPm1pbl93aWR0aCkgfHwgKHcgPiBtb2RlX2NvbmZpZy0+bWF4X3dpZHRoKSkNCisJCXJl dHVybiBNT0RFX0JBRF9IVkFMVUU7DQorDQorCWlmICgoaCA8IG1vZGVfY29uZmlnLT5taW5faGVp Z2h0KSB8fCAoaCA+IG1vZGVfY29uZmlnLT5tYXhfaGVpZ2h0KSkNCisJCXJldHVybiBNT0RFX0JB RF9WVkFMVUU7DQorDQorCXJldHVybiBNT0RFX09LOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGtvbWVkYV93Yl9jb25uX2hlbHBlcl9mdW5j cyA9IHsNCisJLmdldF9tb2Rlcwk9IGtvbWVkYV93Yl9jb25uZWN0b3JfZ2V0X21vZGVzLA0KKwku bW9kZV92YWxpZAk9IGtvbWVkYV93Yl9jb25uZWN0b3JfbW9kZV92YWxpZCwNCit9Ow0KKw0KK3N0 YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzDQora29tZWRhX3diX2Nvbm5lY3Rvcl9kZXRl Y3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCit7DQorCXJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCit9DQorDQorc3RhdGljIGludA0KK2tv bWVkYV93Yl9jb25uZWN0b3JfZmlsbF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLA0KKwkJCSAgICAgICB1aW50MzJfdCBtYXhYLCB1aW50MzJfdCBtYXhZKQ0KK3sNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGtvbWVkYV93Yl9jb25uZWN0b3JfZGVzdHJveShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KK3sNCisJZHJtX2Nvbm5lY3Rvcl9jbGVh bnVwKGNvbm5lY3Rvcik7DQorCWtmcmVlKHRvX2tjb25uKHRvX3diX2Nvbm4oY29ubmVjdG9yKSkp Ow0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3Mga29tZWRh X3diX2Nvbm5lY3Rvcl9mdW5jcyA9IHsNCisJLnJlc2V0CQkJPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfcmVzZXQsDQorCS5kZXRlY3QJCQk9IGtvbWVkYV93Yl9jb25uZWN0b3JfZGV0ZWN0 LA0KKwkuZmlsbF9tb2RlcwkJPSBrb21lZGFfd2JfY29ubmVjdG9yX2ZpbGxfbW9kZXMsDQorCS5k ZXN0cm95CQk9IGtvbWVkYV93Yl9jb25uZWN0b3JfZGVzdHJveSwNCisJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0K KwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVz dHJveV9zdGF0ZSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQga29tZWRhX3diX2Nvbm5lY3Rvcl9hZGQo c3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsDQorCQkJCSAgIHN0cnVjdCBrb21lZGFfY3J0YyAq a2NydGMpDQorew0KKwlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiA9IGttcy0+YmFzZS5kZXZfcHJp dmF0ZTsNCisJc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3IgKmt3Yl9jb25uOw0KKwlzdHJ1Y3Qg ZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm47DQorCXUzMiAqZm9ybWF0cywgbl9mb3Jt YXRzID0gMDsNCisJaW50IGVycjsNCisNCisJaWYgKCFrY3J0Yy0+bWFzdGVyLT53Yl9sYXllcikN CisJCXJldHVybiAwOw0KKw0KKwlrd2JfY29ubiA9IGt6YWxsb2Moc2l6ZW9mKCp3Yl9jb25uKSwg R0ZQX0tFUk5FTCk7DQorCWlmICgha3diX2Nvbm4pDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJ a3diX2Nvbm4tPndiX2xheWVyID0ga2NydGMtPm1hc3Rlci0+d2JfbGF5ZXI7DQorDQorCXdiX2Nv bm4gPSAma3diX2Nvbm4tPmJhc2U7DQorCXdiX2Nvbm4tPmVuY29kZXIucG9zc2libGVfY3J0Y3Mg PSBCSVQoZHJtX2NydGNfaW5kZXgoJmtjcnRjLT5iYXNlKSk7DQorDQorCWZvcm1hdHMgPSBrb21l ZGFfZ2V0X2xheWVyX2ZvdXJjY19saXN0KCZtZGV2LT5mbXRfdGJsLA0KKwkJCQkJICAgICAgIGt3 Yl9jb25uLT53Yl9sYXllci0+bGF5ZXJfdHlwZSwNCisJCQkJCSAgICAgICAmbl9mb3JtYXRzKTsN CisNCisJZXJyID0gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgma21zLT5iYXNlLCB3Yl9j b25uLA0KKwkJCQkJICAgJmtvbWVkYV93Yl9jb25uZWN0b3JfZnVuY3MsDQorCQkJCQkgICAma29t ZWRhX3diX2VuY29kZXJfaGVscGVyX2Z1bmNzLA0KKwkJCQkJICAgZm9ybWF0cywgbl9mb3JtYXRz KTsNCisJa29tZWRhX3B1dF9mb3VyY2NfbGlzdChmb3JtYXRzKTsNCisJaWYgKGVycikNCisJCXJl dHVybiBlcnI7DQorDQorCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmd2JfY29ubi0+YmFzZSwg JmtvbWVkYV93Yl9jb25uX2hlbHBlcl9mdW5jcyk7DQorDQorCWtjcnRjLT53Yl9jb25uID0ga3di X2Nvbm47DQorDQorCXJldHVybiAwOw0KK30NCisNCitpbnQga29tZWRhX2ttc19hZGRfd2JfY29u bmVjdG9ycyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywNCisJCQkJIHN0cnVjdCBrb21lZGFf ZGV2ICptZGV2KQ0KK3sNCisJaW50IGksIGVycjsNCisNCisJZm9yIChpID0gMDsgaSA8IGttcy0+ bl9jcnRjczsgaSsrKSB7DQorCQllcnIgPSBrb21lZGFfd2JfY29ubmVjdG9yX2FkZChrbXMsICZr bXMtPmNydGNzW2ldKTsNCisJCWlmIChlcnIpDQorCQkJcmV0dXJuIGVycjsNCisJfQ0KKw0KKwly ZXR1cm4gMDsNCit9DQotLSANCjIuMTcuMQ0KDQo=