Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp1532227ybm; Thu, 23 May 2019 02:39:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqw3GsYjB6JXXT8k7FQb+TRJRgTlf8Zvp0znwjAxccd9yJkc4ycfY2LiKA8tGZerGgzcROdg X-Received: by 2002:a65:6495:: with SMTP id e21mr8518016pgv.383.1558604350313; Thu, 23 May 2019 02:39:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558604350; cv=none; d=google.com; s=arc-20160816; b=GwmyHsLN6xIO6OucYklxsHgDjKrxXkn5udlzAmK5FjSXGyQOE95perlVhL4HCGFbWv a4PBzkZ/m/VO5xRtYc7Xt11QqAlW/O2OFubl1z7RFK9qj3R5pur+5Kg8iXlig5CbGVdX OlcfKGlZxxNBkC0Uf05x2BOb2zBvrJ8dMzRoj04pQTpg357+qDc11nIfuiIfk3+Vt0c0 l9yND5PKouXqL0q3Huu2EQlwgqpPY1OAWRXMVxarwjDsm7TrDTiHeC1wAe0nFDqE/wlu 9paM18kKMCkBnjDOWHooM+7RuGS19CNuANvlK/MYFicwh26jsH6PF1wN32Csy48wMc9C i8aQ== 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=kxgbvyyylskze8HyjmVZSUUKoNaDeXrHgVeH9bicq3M=; b=Td50qZGTR0WUEjS8yLACnQciCSIWYaqjt/zqCvbUay9qvPSftICRUkaTZol3vaizRq bUAhFWDpNW0C1pbvZ9P8t78IEIRP/+ptRO2ZDsq0FnN3oIzK9BZSsavdT5h2Rt+O1iNb CyO4oXjYbyY0qh7gsAR1huLLKwy6DKkkouxULRP0VjDoGAhzMNYTfD9ORSpBgNvpP7bz m7eq8P5tsN5kcnvKBTfiyGkzC+GPZ74klXCVljC4NBHE+t2bP90fKoPETp1od5yqY97h xGnvnl+F7xPvju8qp36iznLvVxSOB3ZjEvkWFtkZPlkLcEeZBndD1bdLe/qCr80Whw/x pQmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=2KgQ1U+F; 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 a67si31894956pfb.50.2019.05.23.02.38.54; Thu, 23 May 2019 02:39:10 -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=selector2-armh-onmicrosoft-com header.b=2KgQ1U+F; 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 S1729996AbfEWJgw (ORCPT + 99 others); Thu, 23 May 2019 05:36:52 -0400 Received: from mail-eopbgr70057.outbound.protection.outlook.com ([40.107.7.57]:56516 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726363AbfEWJgv (ORCPT ); Thu, 23 May 2019 05:36:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kxgbvyyylskze8HyjmVZSUUKoNaDeXrHgVeH9bicq3M=; b=2KgQ1U+FgTbrtPZbkC3OyHds8FGnKZTu40Dks83XVjb42IoalZ1PNw4Im3k0lVNEtL2+3KQyTLu2imXrYXw3hlH02UHLGJQlqzaLHQqzFZ3ssnl0TsrcyCsXeQHSZo4cC79Z1Mz+GQ2CZGsmmTGvXu9NBdBS8JHq8svZ02fVTs0= Received: from VE1PR08MB5006.eurprd08.prod.outlook.com (10.255.159.31) by VE1PR08MB4942.eurprd08.prod.outlook.com (10.255.158.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.16; Thu, 23 May 2019 09:36:38 +0000 Received: from VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::206b:5cf6:97e:1358]) by VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::206b:5cf6:97e:1358%7]) with mapi id 15.20.1922.017; Thu, 23 May 2019 09:36:38 +0000 From: "james qian wang (Arm Technology China)" To: 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" , Ben Davis , "Oscar Zhang (Arm Technology China)" , "Channing Chen (Arm Technology China)" , "james qian wang (Arm Technology China)" Subject: [PATCH v4] drm/komeda: Add writeback support Thread-Topic: [PATCH v4] drm/komeda: Add writeback support Thread-Index: AQHVEUsF8jXyOBIZmEuSifirtZkr8g== Date: Thu, 23 May 2019 09:36:38 +0000 Message-ID: <20190523093618.24483-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: HK2PR0401CA0009.apcprd04.prod.outlook.com (2603:1096:202:2::19) 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: 23903ce6-49e0-4585-db15-08d6df622755 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:VE1PR08MB4942; x-ms-traffictypediagnostic: VE1PR08MB4942: x-ms-exchange-purlcount: 1 nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 00462943DE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(376002)(366004)(396003)(136003)(189003)(199004)(8936002)(186003)(53946003)(476003)(30864003)(8676002)(81156014)(81166006)(50226002)(7736002)(2616005)(68736007)(14454004)(55236004)(26005)(102836004)(52116002)(386003)(6506007)(66946007)(73956011)(1076003)(66446008)(64756008)(66556008)(66476007)(486006)(99286004)(66066001)(2906002)(110136005)(54906003)(4326008)(2201001)(6436002)(103116003)(256004)(14444005)(53936002)(36756003)(86362001)(316002)(6306002)(5660300002)(6512007)(305945005)(71200400001)(71190400001)(966005)(2501003)(5024004)(6486002)(25786009)(3846002)(6116002)(478600001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR08MB4942;H:VE1PR08MB5006.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A: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: aUi4mWuizor1Uek8wWZYy2PGhuDqtbzpVhZ0pw3kCGQ/qGFDkhPFX+Mu9uBh6xkqImQReyU6Z6jnamh9HHGMS/D5gJTBOT7k6AOI3wYg4c7Zle6nnPtfx07ZeChUoxpmbtarMGOlKG8dKxrYU7vbpWpYEbo8zbCgp9nqZaID/5x2pH82bZ/8YG/hAiofuZgDIPKSAIQVW/vzOL6aTPMwHO2CRc5rDKlNjc0SAcEJMu3sPhj8YFJygJqhYNKx82nI3TxCiI6sL/ZqyZyjnKEV7SfB9ZPVnGEbr1hqBAUS3zRZNEGP6OYu6fKZt6Bq8yP+oIbZ2BMjPmUBj9pGQYBCRomKLjub4f4Hcb2QNcu7f6sX8TJbeH+dI5nX6xcTZCM8VFm1B8FZAq23TJd4EsaHKhNfnpGW36f+iK6+xs7Hj00= 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: 23903ce6-49e0-4585-db15-08d6df622755 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2019 09:36:38.5237 (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-CrossTenant-userprincipalname: james.qian.wang@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4942 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org S29tZWRhIGRyaXZlciB1c2VzIGEgaW5kaXZpZHVhbCBjb21wb25lbnQgdG8gZGVzY3JpYmUgdGhl IEhXJ3Mgd3JpdGViYWNrDQpjYXBzLCBidXQgZHJpdmVycyBkb2Vzbid0IGRlZmluZSBhIG5ldyBz dHJ1Y3R1cmUgYW5kIHN0aWxsIHVzZXMgdGhlDQpleGlzdGluZyAic3RydWN0IGtvbWVkYV9sYXll ciIgdG8gZGVzY3JpYmUgdGhpcyBuZXcgY29tcG9uZW50Lg0KVGhlIGRldGFpbGVkIGNoYW5nZXMg YXMgZm9sbG93Og0KDQoxLiBJbml0aWFsaXplIHdiX2xheWVyIGFjY29yZGluZyB0byBIVyBhbmQg cmVwb3J0IGl0IHRvIENPUkUuDQoyLiBDT1JFIGV4cG9zZXMgd2JfbGF5ZXIgYXMgYSByZXNvdXJj ZSB0byBLTVMgYnkgcHJpdmF0ZV9vYmouDQozLiBSZXBvcnQgd3JpdGViYWNrIHN1cHBvcnRpbmcg YnkgYWRkIGEgd2JfY29ubmVjdG9yIHRvIEtNUywgYW5kIHRoZW4NCiAgIHdiX2Nvbm5lY3RvciB3 aWxsIHRha2UgYWN0IGFzIGEgY29tcG9uZW50IHJlc291cmNlcyB1c2VyLA0KICAgc28gdGhlIGZ1 bmMga29tZWRhX3diX2VuY29kZXJfYXRvbWljX2NoZWNrIGNsYWltcyBrb21lZGEgcmVzb3VyY2Vz DQogICAoc2NhbGVyIGFuZCB3Yl9sYXllcikgYWNjcm9kaW5nIHRvIGl0cyBzdGF0ZSBjb25maWd1 cmF0aW9uIHRvIHRoZQ0KICAgd2JfY29ubmVjdG9yLiBhbmQgdGhlIHdiX3N0YXRlIGNvbmZpZ3Vy YXRpb24gd2lsbCBiZSB2YWxpZGF0ZWQgb24gdGhlDQogICBzcGVjaWZpYyBjb21wb25lbnQgcmVz b3VyY2VzIHRvIHNlZSBpZiB0aGUgY2FwcyBvZiBjb21wb25lbnQgY2FuDQogICBtZWV0IHRoZSBy ZXF1aXJlbWVudCBvZiB3Yl9jb25uZWN0b3IuIGlmIG5vdCBjaGVjayBmYWlsZWQuDQo0LiBVcGRh dGUgaXJxX2hhbmRsZXIgdG8gbm90aWZ5IHRoZSBjb21wbGV0aW9uIG9mIHdyaXRlYmFjay4NCg0K Tk9URToNClRoaXMgY2hhbmdlIGRvZXNuJ3QgYWRkIHNjYWxpbmcgd3JpdGViYWNrIHN1cHBvcnQs IHRoYXQgc3VwcG9ydCB3aWxsDQpiZSBhZGRlZCBpbiB0aGUgZnV0dXJlIGFmdGVyIHRoZSBzY2Fs ZXIgc3VwcG9ydC4NCg0KdjI6IFJlYmFzZQ0KdjM6IFJlYmFzZSBhbmQgY29uc3RpZnkgdGhlIGQ3 MV93Yl9sYXllcl9mdW5jcw0KdjQ6IEFkZHJlc3NlZCBBeWFuJ3MgY29tbWVudHMNCg0KRGVwZW5k cyBvbjoNCi0gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy81OTkxNS8N Cg0KU2lnbmVkLW9mZi1ieTogSmFtZXMgUWlhbiBXYW5nIChBcm0gVGVjaG5vbG9neSBDaGluYSkg PGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPg0KLS0tDQogZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9NYWtlZmlsZSAgIHwgICAxICsNCiAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2Q3 MS9kNzFfY29tcG9uZW50LmMgICAgfCAgOTAgKysrKysrKystDQogLi4uL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMgIHwgIDE1ICsrDQogLi4uL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfZnJhbWVidWZmZXIuYyAgIHwgIDE5ICsrDQogLi4uL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYyAgIHwgICA0ICsNCiAuLi4vZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2ttcy5oICAgfCAgMjcgKysrDQogLi4uL2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggIHwgICA3ICsNCiAuLi4vZGlzcGxheS9rb21lZGEv a29tZWRhX3BpcGVsaW5lX3N0YXRlLmMgICAgfCAgNTEgKysrKy0NCiAuLi4vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jICAgfCAgIDYgKw0KIC4uLi9hcm0vZGlzcGxheS9r b21lZGEva29tZWRhX3diX2Nvbm5lY3Rvci5jICB8IDE4MSArKysrKysrKysrKysrKysrKysNCiAx MCBmaWxlcyBjaGFuZ2VkLCAzOTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf d2JfY29ubmVjdG9yLmMNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01h a2VmaWxlDQppbmRleCA2MmJkMWJmZjY2YTMuLmQ3ZTI5ZmM2ODhjMyAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCkBAIC0xNCw2ICsxNCw3IEBAIGtv bWVkYS15IDo9IFwNCiAJa29tZWRhX2ttcy5vIFwNCiAJa29tZWRhX2NydGMubyBcDQogCWtvbWVk YV9wbGFuZS5vIFwNCisJa29tZWRhX3diX2Nvbm5lY3Rvci5vIFwNCiAJa29tZWRhX3ByaXZhdGVf b2JqLm8NCiANCiBrb21lZGEteSArPSBcDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jDQppbmRleCA2YmFiODE2ZWQ4ZTcu LjMyM2U1OTk0YTU1YyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEvZDcxL2Q3MV9jb21wb25lbnQuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jDQpAQCAtMjg4LDEwICsyODgsOTggQEAgc3Rh dGljIGludCBkNzFfbGF5ZXJfaW5pdChzdHJ1Y3QgZDcxX2RldiAqZDcxLA0KIAlyZXR1cm4gMDsN CiB9DQogDQorc3RhdGljIHZvaWQgZDcxX3diX2xheWVyX3VwZGF0ZShzdHJ1Y3Qga29tZWRhX2Nv bXBvbmVudCAqYywNCisJCQkJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgKnN0YXRlKQ0K K3sNCisJc3RydWN0IGtvbWVkYV9sYXllcl9zdGF0ZSAqc3QgPSB0b19sYXllcl9zdChzdGF0ZSk7 DQorCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0ID0gc3RhdGUtPndiX2Nvbm4t PnN0YXRlOw0KKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNvbm5fc3QtPndyaXRlYmFj a19qb2ItPmZiOw0KKwlzdHJ1Y3Qga29tZWRhX2ZiICprZmIgPSB0b19rZmIoZmIpOw0KKwl1MzIg X19pb21lbSAqcmVnID0gYy0+cmVnOw0KKwl1MzIgY3RybCA9IExfRU4gfCBMV19PRk0sIG1hc2sg PSBMX0VOIHwgTFdfT0ZNIHwgTFdfVEJVX0VOOw0KKwlpbnQgaTsNCisNCisJZm9yIChpID0gMDsg aSA8IGZiLT5mb3JtYXQtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJbWFsaWRwX3dyaXRlMzIocmVn ICsgaSAqIExBWUVSX1BFUl9QTEFORV9SRUdTLCBCTEtfUDBfUFRSX0xPVywNCisJCQkgICAgICAg bG93ZXJfMzJfYml0cyhzdC0+YWRkcltpXSkpOw0KKwkJbWFsaWRwX3dyaXRlMzIocmVnICsgaSAq IExBWUVSX1BFUl9QTEFORV9SRUdTLCBCTEtfUDBfUFRSX0hJR0gsDQorCQkJICAgICAgIHVwcGVy XzMyX2JpdHMoc3QtPmFkZHJbaV0pKTsNCisNCisJCW1hbGlkcF93cml0ZTMyKHJlZyArIGkgKiBM QVlFUl9QRVJfUExBTkVfUkVHUywgQkxLX1AwX1NUUklERSwNCisJCQkgICAgICAgZmItPnBpdGNo ZXNbaV0gJiAweEZGRkYpOw0KKwl9DQorDQorCW1hbGlkcF93cml0ZTMyKHJlZywgTEFZRVJfRk1U LCBrZmItPmZvcm1hdF9jYXBzLT5od19pZCk7DQorCW1hbGlkcF93cml0ZTMyKHJlZywgQkxLX0lO X1NJWkUsIEhWX1NJWkUoc3QtPmhzaXplLCBzdC0+dnNpemUpKTsNCisJbWFsaWRwX3dyaXRlMzIo cmVnLCBCTEtfSU5QVVRfSUQwLCB0b19kNzFfaW5wdXRfaWQoJnN0YXRlLT5pbnB1dHNbMF0pKTsN CisJbWFsaWRwX3dyaXRlMzJfbWFzayhyZWcsIEJMS19DT05UUk9MLCBtYXNrLCBjdHJsKTsNCit9 DQorDQorc3RhdGljIHZvaWQgZDcxX3diX2xheWVyX2R1bXAoc3RydWN0IGtvbWVkYV9jb21wb25l bnQgKmMsIHN0cnVjdCBzZXFfZmlsZSAqc2YpDQorew0KKwl1MzIgdlsxMl0sIGk7DQorDQorCWR1 bXBfYmxvY2tfaGVhZGVyKHNmLCBjLT5yZWcpOw0KKw0KKwlnZXRfdmFsdWVzX2Zyb21fcmVnKGMt PnJlZywgMHg4MCwgMSwgdik7DQorCXNlcV9wcmludGYoc2YsICJMV19JTlBVVF9JRDA6XHRcdDB4 JVhcbiIsIHZbMF0pOw0KKw0KKwlnZXRfdmFsdWVzX2Zyb21fcmVnKGMtPnJlZywgMHhEMCwgMywg dik7DQorCXNlcV9wcmludGYoc2YsICJMV19DT05UUk9MOlx0XHQweCVYXG4iLCB2WzBdKTsNCisJ c2VxX3ByaW50ZihzZiwgIkxXX1BST0dfTElORTpcdFx0MHglWFxuIiwgdlsxXSk7DQorCXNlcV9w cmludGYoc2YsICJMV19GT1JNQVQ6XHRcdDB4JVhcbiIsIHZbMl0pOw0KKw0KKwlnZXRfdmFsdWVz X2Zyb21fcmVnKGMtPnJlZywgMHhFMCwgMSwgdik7DQorCXNlcV9wcmludGYoc2YsICJMV19JTl9T SVpFOlx0XHQweCVYXG4iLCB2WzBdKTsNCisNCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgew0K KwkJZ2V0X3ZhbHVlc19mcm9tX3JlZyhjLT5yZWcsIDB4MTAwICsgaSAqIDB4MTAsIDMsIHYpOw0K KwkJc2VxX3ByaW50ZihzZiwgIkxXX1AldV9QVFJfTE9XOlx0XHQweCVYXG4iLCBpLCB2WzBdKTsN CisJCXNlcV9wcmludGYoc2YsICJMV19QJXVfUFRSX0hJR0g6XHRcdDB4JVhcbiIsIGksIHZbMV0p Ow0KKwkJc2VxX3ByaW50ZihzZiwgIkxXX1AldV9TVFJJREU6XHRcdDB4JVhcbiIsIGksIHZbMl0p Ow0KKwl9DQorDQorCWdldF92YWx1ZXNfZnJvbV9yZWcoYy0+cmVnLCAweDEzMCwgMTIsIHYpOw0K Kwlmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykNCisJCXNlcV9wcmludGYoc2YsICJMV19SR0JfWVVW X0NPRUZGJXU6XHQweCVYXG4iLCBpLCB2W2ldKTsNCit9DQorDQorc3RhdGljIHZvaWQgZDcxX3di X2xheWVyX2Rpc2FibGUoc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMpDQorew0KKwltYWxpZHBf d3JpdGUzMihjLT5yZWcsIEJMS19JTlBVVF9JRDAsIDApOw0KKwltYWxpZHBfd3JpdGUzMl9tYXNr KGMtPnJlZywgQkxLX0NPTlRST0wsIExfRU4sIDApOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGtvbWVkYV9jb21wb25lbnRfZnVuY3MgZDcxX3diX2xheWVyX2Z1bmNzID0gew0KKwkudXBk YXRlCQk9IGQ3MV93Yl9sYXllcl91cGRhdGUsDQorCS5kaXNhYmxlCT0gZDcxX3diX2xheWVyX2Rp c2FibGUsDQorCS5kdW1wX3JlZ2lzdGVyCT0gZDcxX3diX2xheWVyX2R1bXAsDQorfTsNCisNCiBz dGF0aWMgaW50IGQ3MV93Yl9sYXllcl9pbml0KHN0cnVjdCBkNzFfZGV2ICpkNzEsDQogCQkJICAg ICBzdHJ1Y3QgYmxvY2tfaGVhZGVyICpibGssIHUzMiBfX2lvbWVtICpyZWcpDQogew0KLQlEUk1f REVCVUcoIkRldGVjdCBENzFfV2JfTGF5ZXIuXG4iKTsNCisJc3RydWN0IGtvbWVkYV9jb21wb25l bnQgKmM7DQorCXN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVyOw0KKwl1MzIgcGlwZV9pZCwg bGF5ZXJfaWQ7DQorDQorCWdldF9yZXNvdXJjZXNfaWQoYmxrLT5ibG9ja19pbmZvLCAmcGlwZV9p ZCwgJmxheWVyX2lkKTsNCisNCisJYyA9IGtvbWVkYV9jb21wb25lbnRfYWRkKCZkNzEtPnBpcGVz W3BpcGVfaWRdLT5iYXNlLCBzaXplb2YoKndiX2xheWVyKSwNCisJCQkJIGxheWVyX2lkLCBCTE9D S19JTkZPX0lOUFVUX0lEKGJsay0+YmxvY2tfaW5mbyksDQorCQkJCSAmZDcxX3diX2xheWVyX2Z1 bmNzLA0KKwkJCQkgMSwgZ2V0X3ZhbGlkX2lucHV0cyhibGspLCAwLCByZWcsDQorCQkJCSAiTFBV JWRfTEFZRVJfV1IiLCBwaXBlX2lkKTsNCisJaWYgKElTX0VSUihjKSkgew0KKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gYWRkIHdiX2xheWVyIGNvbXBvbmVudFxuIik7DQorCQlyZXR1cm4gUFRSX0VS UihjKTsNCisJfQ0KKw0KKwl3Yl9sYXllciA9IHRvX2xheWVyKGMpOw0KKwl3Yl9sYXllci0+bGF5 ZXJfdHlwZSA9IEtPTUVEQV9GTVRfV0JfTEFZRVI7DQorDQorCXNldF9yYW5nZSgmd2JfbGF5ZXIt PmhzaXplX2luLCBENzFfTUlOX0xJTkVfU0laRSwgZDcxLT5tYXhfbGluZV9zaXplKTsNCisJc2V0 X3JhbmdlKCZ3Yl9sYXllci0+dnNpemVfaW4sIEQ3MV9NSU5fVkVSVElDQUxfU0laRSwgZDcxLT5t YXhfdnNpemUpOw0KIA0KIAlyZXR1cm4gMDsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jDQppbmRleCAyODRjZTA3OWQ4YzQuLjY3MTI2 MDNiOGM3YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2NydGMuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfY3J0Yy5jDQpAQCAtMTY1LDYgKzE2NSwxNSBAQCB2b2lkIGtvbWVkYV9jcnRjX2hhbmRs ZV9ldmVudChzdHJ1Y3Qga29tZWRhX2NydGMgICAqa2NydGMsDQogCWlmIChldmVudHMgJiBLT01F REFfRVZFTlRfVlNZTkMpDQogCQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKGNydGMpOw0KIA0KKwlp ZiAoZXZlbnRzICYgS09NRURBX0VWRU5UX0VPVykgew0KKwkJc3RydWN0IGtvbWVkYV93Yl9jb25u ZWN0b3IgKndiX2Nvbm4gPSBrY3J0Yy0+d2JfY29ubjsNCisNCisJCWlmICh3Yl9jb25uKQ0KKwkJ CWRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oJndiX2Nvbm4tPmJhc2UsIDApOw0KKwkJ ZWxzZQ0KKwkJCURSTV9XQVJOKCJDUlRDWyVkXTogRU9XIGhhcHBlbiBidXQgbm8gd2JfY29ubmVj dG9yLlxuIiwNCisJCQkJIGRybV9jcnRjX2luZGV4KCZrY3J0Yy0+YmFzZSkpOw0KKwl9DQogCS8q IHdpbGwgaGFuZGxlIGl0IHRvZ2V0aGVyIHdpdGggdGhlIHdyaXRlIGJhY2sgc3VwcG9ydCAqLw0K IAlpZiAoZXZlbnRzICYgS09NRURBX0VWRU5UX0VPVykNCiAJCURSTV9ERUJVRygiRU9XLlxuIik7 DQpAQCAtMjAxLDYgKzIxMCw4IEBAIGtvbWVkYV9jcnRjX2RvX2ZsdXNoKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywNCiAJc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0Y19zdCA9IHRvX2tjcnRj X3N0KGNydGMtPnN0YXRlKTsNCiAJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYgPSBrY3J0Yy0+YmFz ZS5kZXYtPmRldl9wcml2YXRlOw0KIAlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICptYXN0ZXIgPSBr Y3J0Yy0+bWFzdGVyOw0KKwlzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqd2JfY29ubiA9IGtj cnRjLT53Yl9jb25uOw0KKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdDsNCiAN CiAJRFJNX0RFQlVHX0FUT01JQygiQ1JUQyVkX0ZMVVNIOiBhY3RpdmVfcGlwZXM6IDB4JXgsIGFm ZmVjdGVkOiAweCV4LlxuIiwNCiAJCQkgZHJtX2NydGNfaW5kZXgoY3J0YyksDQpAQCAtMjEwLDYg KzIyMSwxMCBAQCBrb21lZGFfY3J0Y19kb19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQog CWlmIChoYXNfYml0KG1hc3Rlci0+aWQsIGtjcnRjX3N0LT5hZmZlY3RlZF9waXBlcykpDQogCQlr b21lZGFfcGlwZWxpbmVfdXBkYXRlKG1hc3Rlciwgb2xkLT5zdGF0ZSk7DQogDQorCWNvbm5fc3Qg PSB3Yl9jb25uID8gd2JfY29ubi0+YmFzZS5iYXNlLnN0YXRlIDogTlVMTDsNCisJaWYgKGNvbm5f c3QgJiYgY29ubl9zdC0+d3JpdGViYWNrX2pvYikNCisJCWRybV93cml0ZWJhY2tfcXVldWVfam9i KCZ3Yl9jb25uLT5iYXNlLCBjb25uX3N0KTsNCisNCiAJLyogc3RlcCAyOiBub3RpZnkgdGhlIEhX IHRvIGtpY2tvZmYgdGhlIHVwZGF0ZSAqLw0KIAltZGV2LT5mdW5jcy0+Zmx1c2gobWRldiwgbWFz dGVyLT5pZCwga2NydGNfc3QtPmFjdGl2ZV9waXBlcyk7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFtZWJ1ZmZlci5jDQppbmRl eCA5Y2M5OTM1MDI0ZjcuLjRkODE2MGNmMDljMyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMNCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMNCkBAIC0xNjUs MyArMTY1LDIyIEBAIGtvbWVkYV9mYl9nZXRfcGl4ZWxfYWRkcihzdHJ1Y3Qga29tZWRhX2ZiICpr ZmIsIGludCB4LCBpbnQgeSwgaW50IHBsYW5lKQ0KIA0KIAlyZXR1cm4gb2JqLT5wYWRkciArIG9m ZnNldDsNCiB9DQorDQorLyogaWYgdGhlIGZiIGNhbiBiZSBzdXBwb3J0ZWQgYnkgYSBzcGVjaWZp YyBsYXllciAqLw0KK2Jvb2wga29tZWRhX2ZiX2lzX2xheWVyX3N1cHBvcnRlZChzdHJ1Y3Qga29t ZWRhX2ZiICprZmIsIHUzMiBsYXllcl90eXBlKQ0KK3sNCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSAma2ZiLT5iYXNlOw0KKwlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldiA9IGZiLT5kZXYt PmRldl9wcml2YXRlOw0KKwljb25zdCBzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzICpjYXBzOw0K Kwl1MzIgZm91cmNjID0gZmItPmZvcm1hdC0+Zm9ybWF0Ow0KKwl1NjQgbW9kaWZpZXIgPSBmYi0+ bW9kaWZpZXI7DQorDQorCWNhcHMgPSBrb21lZGFfZ2V0X2Zvcm1hdF9jYXBzKCZtZGV2LT5mbXRf dGJsLCBmb3VyY2MsIG1vZGlmaWVyKTsNCisJaWYgKCFjYXBzKQ0KKwkJcmV0dXJuIGZhbHNlOw0K Kw0KKwlpZiAoIShjYXBzLT5zdXBwb3J0ZWRfbGF5ZXJfdHlwZXMgJiBsYXllcl90eXBlKSkNCisJ CXJldHVybiBmYWxzZTsNCisNCisJcmV0dXJuIHRydWU7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMNCmluZGV4IDg2ZjY1NDJhZmI0MC4u M2U1ODkwMWZiNzc2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfa21zLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2ttcy5jDQpAQCAtMTg4LDYgKzE4OCwxMCBAQCBzdHJ1Y3Qga29tZWRhX2ttc19k ZXYgKmtvbWVkYV9rbXNfYXR0YWNoKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQ0KIAlpZiAoZXJy KQ0KIAkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOw0KIA0KKwllcnIgPSBrb21lZGFfa21zX2Fk ZF93Yl9jb25uZWN0b3JzKGttcywgbWRldik7DQorCWlmIChlcnIpDQorCQlnb3RvIGNsZWFudXBf bW9kZV9jb25maWc7DQorDQogCWVyciA9IGNvbXBvbmVudF9iaW5kX2FsbChtZGV2LT5kZXYsIGtt cyk7DQogCWlmIChlcnIpDQogCQlnb3RvIGNsZWFudXBfbW9kZV9jb25maWc7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmggYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaA0KaW5kZXggYWMzZDky MDliNGQ5Li5mMTZlOWU1Nzc1OTMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfa21zLmgNCkBAIC0xMiw2ICsxMiw3IEBADQogI2luY2x1ZGUgPGRy bS9kcm1fY3J0Y19oZWxwZXIuaD4NCiAjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4NCiAjaW5j bHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4NCisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPg0K ICNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4NCiAjaW5jbHVkZSA8dmlkZW8vZGlzcGxheV90 aW1pbmcuaD4NCiANCkBAIC03Myw2ICs3NCw5IEBAIHN0cnVjdCBrb21lZGFfY3J0YyB7DQogCSAq Lw0KIAlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpzbGF2ZTsNCiANCisJLyoqIEB3Yl9jb25uOiBr b21lZGEgd3JpdGUgYmFjayBjb25uZWN0b3IgKi8NCisJc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0 b3IgKndiX2Nvbm47DQorDQogCS8qKiBAZGlzYWJsZV9kb25lOiB0aGlzIGZsaXBfZG9uZSBpcyBm b3IgdHJhY2luZyB0aGUgZGlzYWJsZSAqLw0KIAlzdHJ1Y3QgY29tcGxldGlvbiAqZGlzYWJsZV9k b25lOw0KIH07DQpAQCAtMTE2LDYgKzEyMCwyNyBAQCBzdHJ1Y3Qga29tZWRhX2ttc19kZXYgew0K ICNkZWZpbmUgdG9fa2NydGMocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfY3J0Yywg YmFzZSkNCiAjZGVmaW5lIHRvX2tjcnRjX3N0KHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1Y3Qga29t ZWRhX2NydGNfc3RhdGUsIGJhc2UpDQogI2RlZmluZSB0b19rZGV2KHApCWNvbnRhaW5lcl9vZihw LCBzdHJ1Y3Qga29tZWRhX2ttc19kZXYsIGJhc2UpDQorI2RlZmluZSB0b193Yl9jb25uKHgpCWNv bnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IsIGJhc2UpDQorDQor c3RhdGljIGlubGluZSBib29sIGlzX3dyaXRlYmFja19vbmx5KHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqc3QpDQorew0KKwlzdHJ1Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqd2JfY29ubiA9IHRvX2tj cnRjKHN0LT5jcnRjKS0+d2JfY29ubjsNCisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSB3 Yl9jb25uID8gJndiX2Nvbm4tPmJhc2UuYmFzZSA6IE5VTEw7DQorDQorCXJldHVybiBjb25uICYm IChzdC0+Y29ubmVjdG9yX21hc2sgPT0gQklUKGRybV9jb25uZWN0b3JfaW5kZXgoY29ubikpKTsN Cit9DQorDQorc3RhdGljIGlubGluZSBib29sDQoraXNfb25seV9jaGFuZ2VkX2Nvbm5lY3Rvcihz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0LCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubikNCit7 DQorCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0Ow0KKwl1MzIgY2hhbmdlZF9jb25uZWN0 b3JzOw0KKw0KKwlvbGRfc3QgPSBkcm1fYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdC0+c3Rh dGUsIHN0LT5jcnRjKTsNCisJY2hhbmdlZF9jb25uZWN0b3JzID0gc3QtPmNvbm5lY3Rvcl9tYXNr IF4gb2xkX3N0LT5jb25uZWN0b3JfbWFzazsNCisNCisJcmV0dXJuIEJJVChkcm1fY29ubmVjdG9y X2luZGV4KGNvbm4pKSA9PSBjaGFuZ2VkX2Nvbm5lY3RvcnM7DQorfQ0KIA0KIGludCBrb21lZGFf a21zX3NldHVwX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRh X2RldiAqbWRldik7DQogDQpAQCAtMTIzLDYgKzE0OCw4IEBAIGludCBrb21lZGFfa21zX2FkZF9j cnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYp Ow0KIGludCBrb21lZGFfa21zX2FkZF9wbGFuZXMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMs IHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsNCiBpbnQga29tZWRhX2ttc19hZGRfcHJpdmF0ZV9v YmpzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLA0KIAkJCQlzdHJ1Y3Qga29tZWRhX2RldiAq bWRldik7DQoraW50IGtvbWVkYV9rbXNfYWRkX3diX2Nvbm5lY3RvcnMoc3RydWN0IGtvbWVkYV9r bXNfZGV2ICprbXMsDQorCQkJCSBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7DQogdm9pZCBrb21l ZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zKTsN CiANCiB2b2lkIGtvbWVkYV9jcnRjX2hhbmRsZV9ldmVudChzdHJ1Y3Qga29tZWRhX2NydGMgICAq a2NydGMsDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfcGlwZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX3BpcGVsaW5lLmgNCmluZGV4IGJhZThhMzJiODFhNi4uMWI3ZTkzM2VhMzAzIDEwMDY0NA0K LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUu aA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxp bmUuaA0KQEAgLTQyMywxMCArNDIzLDE3IEBAIHN0cnVjdCBrb21lZGFfcGxhbmVfc3RhdGU7DQog c3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlOw0KIHN0cnVjdCBrb21lZGFfY3J0YzsNCiANCit2b2lk IHBpcGVsaW5lX2NvbXBvc2l0aW9uX3NpemUoc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0 Y19zdCwNCisJCQkgICAgICAgdTE2ICpoc2l6ZSwgdTE2ICp2c2l6ZSk7DQorDQogaW50IGtvbWVk YV9idWlsZF9sYXllcl9kYXRhX2Zsb3coc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXIsDQogCQkJ CSBzdHJ1Y3Qga29tZWRhX3BsYW5lX3N0YXRlICprcGxhbmVfc3QsDQogCQkJCSBzdHJ1Y3Qga29t ZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KIAkJCQkgc3RydWN0IGtvbWVkYV9kYXRhX2Zsb3df Y2ZnICpkZmxvdyk7DQoraW50IGtvbWVkYV9idWlsZF93Yl9kYXRhX2Zsb3coc3RydWN0IGtvbWVk YV9sYXllciAqd2JfbGF5ZXIsDQorCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3QsDQorCQkJICAgICAgc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0Y19zdCwN CisJCQkgICAgICBzdHJ1Y3Qga29tZWRhX2RhdGFfZmxvd19jZmcgKmRmbG93KTsNCiBpbnQga29t ZWRhX2J1aWxkX2Rpc3BsYXlfZGF0YV9mbG93KHN0cnVjdCBrb21lZGFfY3J0YyAqa2NydGMsDQog CQkJCSAgIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QpOw0KIA0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lX3N0 YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGlu ZV9zdGF0ZS5jDQppbmRleCAzNjU3MGQ3ZGFkNjEuLjk3NDhjOTQzODg2OCAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lX3N0YXRl LmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVs aW5lX3N0YXRlLmMNCkBAIC0zMDgsOCArMzA4LDQxIEBAIGtvbWVkYV9sYXllcl92YWxpZGF0ZShz dHJ1Y3Qga29tZWRhX2xheWVyICpsYXllciwNCiAJcmV0dXJuIDA7DQogfQ0KIA0KLXN0YXRpYyB2 b2lkIHBpcGVsaW5lX2NvbXBvc2l0aW9uX3NpemUoc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICpr Y3J0Y19zdCwNCi0JCQkJICAgICAgdTE2ICpoc2l6ZSwgdTE2ICp2c2l6ZSkNCitzdGF0aWMgaW50 DQora29tZWRhX3diX2xheWVyX3ZhbGlkYXRlKHN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVy LA0KKwkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdCwNCisJCQkgc3RydWN0 IGtvbWVkYV9kYXRhX2Zsb3dfY2ZnICpkZmxvdykNCit7DQorCXN0cnVjdCBrb21lZGFfZmIgKmtm YiA9IHRvX2tmYihjb25uX3N0LT53cml0ZWJhY2tfam9iLT5mYik7DQorCXN0cnVjdCBrb21lZGFf Y29tcG9uZW50X3N0YXRlICpjX3N0Ow0KKwlzdHJ1Y3Qga29tZWRhX2xheWVyX3N0YXRlICpzdDsN CisJaW50IGk7DQorDQorCWlmICgha29tZWRhX2ZiX2lzX2xheWVyX3N1cHBvcnRlZChrZmIsIHdi X2xheWVyLT5sYXllcl90eXBlKSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwljX3N0ID0ga29t ZWRhX2NvbXBvbmVudF9nZXRfc3RhdGVfYW5kX3NldF91c2VyKCZ3Yl9sYXllci0+YmFzZSwNCisJ CQljb25uX3N0LT5zdGF0ZSwgY29ubl9zdC0+Y29ubmVjdG9yLCBjb25uX3N0LT5jcnRjKTsNCisJ aWYgKElTX0VSUihjX3N0KSkNCisJCXJldHVybiBQVFJfRVJSKGNfc3QpOw0KKw0KKwlzdCA9IHRv X2xheWVyX3N0KGNfc3QpOw0KKw0KKwlzdC0+aHNpemUgPSBkZmxvdy0+b3V0X3c7DQorCXN0LT52 c2l6ZSA9IGRmbG93LT5vdXRfaDsNCisNCisJZm9yIChpID0gMDsgaSA8IGtmYi0+YmFzZS5mb3Jt YXQtPm51bV9wbGFuZXM7IGkrKykNCisJCXN0LT5hZGRyW2ldID0ga29tZWRhX2ZiX2dldF9waXhl bF9hZGRyKGtmYiwgZGZsb3ctPm91dF94LA0KKwkJCQkJCSAgICAgICBkZmxvdy0+b3V0X3ksIGkp Ow0KKw0KKwlrb21lZGFfY29tcG9uZW50X2FkZF9pbnB1dCgmc3QtPmJhc2UsICZkZmxvdy0+aW5w dXQsIDApOw0KKwlrb21lZGFfY29tcG9uZW50X3NldF9vdXRwdXQoJmRmbG93LT5pbnB1dCwgJndi X2xheWVyLT5iYXNlLCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgcGlwZWxpbmVf Y29tcG9zaXRpb25fc2l6ZShzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KKwkJ CSAgICAgICB1MTYgKmhzaXplLCB1MTYgKnZzaXplKQ0KIHsNCiAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm0gPSAma2NydGNfc3QtPmJhc2UuYWRqdXN0ZWRfbW9kZTsNCiANCkBAIC00NzgsNiAr NTExLDIwIEBAIGludCBrb21lZGFfYnVpbGRfbGF5ZXJfZGF0YV9mbG93KHN0cnVjdCBrb21lZGFf bGF5ZXIgKmxheWVyLA0KIAlyZXR1cm4gZXJyOw0KIH0NCiANCitpbnQga29tZWRhX2J1aWxkX3di X2RhdGFfZmxvdyhzdHJ1Y3Qga29tZWRhX2xheWVyICp3Yl9sYXllciwNCisJCQkgICAgICBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdCwNCisJCQkgICAgICBzdHJ1Y3Qga29tZWRh X2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfZGF0YV9mbG93 X2NmZyAqZGZsb3cpDQorew0KKwlpZiAoKGRmbG93LT5pbl93ICE9IGRmbG93LT5vdXRfdykgfHwN CisJICAgIChkZmxvdy0+aW5faCAhPSBkZmxvdy0+b3V0X2gpKSB7DQorCQlEUk1fREVCVUdfQVRP TUlDKCJjdXJyZW50IGRvIG5vdCBzdXBwb3J0IHNjYWxpbmcgd3JpdGViYWNrLlxuIik7DQorCQly ZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlyZXR1cm4ga29tZWRhX3diX2xheWVyX3ZhbGlkYXRl KHdiX2xheWVyLCBjb25uX3N0LCBkZmxvdyk7DQorfQ0KKw0KIC8qIGJ1aWxkIGRpc3BsYXkgb3V0 cHV0IGRhdGEgZmxvdywgdGhlIGRhdGEgcGF0aCBpczoNCiAgKiBjb21waXogLT4gaW1wcm9jIC0+ IHRpbWluZ19jdHJscg0KICAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jDQppbmRleCBhNTQ4NzhjYmQ2ZTQuLmQ1 M2JkNmMyM2M1ZCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX3ByaXZhdGVfb2JqLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMNCkBAIC0yNTIsNiArMjUyLDEyIEBAIGludCBr b21lZGFfa21zX2FkZF9wcml2YXRlX29ianMoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsDQog CQkJCXJldHVybiBlcnI7DQogCQl9DQogDQorCQlpZiAocGlwZS0+d2JfbGF5ZXIpIHsNCisJCQll cnIgPSBrb21lZGFfbGF5ZXJfb2JqX2FkZChrbXMsIHBpcGUtPndiX2xheWVyKTsNCisJCQlpZiAo ZXJyKQ0KKwkJCQlyZXR1cm4gZXJyOw0KKwkJfQ0KKw0KIAkJZXJyID0ga29tZWRhX2NvbXBpel9v YmpfYWRkKGttcywgcGlwZS0+Y29tcGl6KTsNCiAJCWlmIChlcnIpDQogCQkJcmV0dXJuIGVycjsN CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV93 Yl9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X3diX2Nvbm5lY3Rvci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAw Li4wYzFhNDIyMGMyODANCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX3diX2Nvbm5lY3Rvci5jDQpAQCAtMCwwICsxLDE4MSBAQA0K Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLyoNCisgKiAoQykgQ09QWVJJ R0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogQXV0aG9yOiBK YW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPg0KKyAqDQorICovDQorI2lu Y2x1ZGUgImtvbWVkYV9kZXYuaCINCisjaW5jbHVkZSAia29tZWRhX2ttcy5oIg0KKw0KK3N0YXRp YyBpbnQNCitrb21lZGFfd2JfaW5pdF9kYXRhX2Zsb3coc3RydWN0IGtvbWVkYV9sYXllciAqd2Jf bGF5ZXIsDQorCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0LA0KKwkJCSBz dHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0LA0KKwkJCSBzdHJ1Y3Qga29tZWRhX2Rh dGFfZmxvd19jZmcgKmRmbG93KQ0KK3sNCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBj b25uX3N0LT53cml0ZWJhY2tfam9iID8NCisJCQkJICAgICBjb25uX3N0LT53cml0ZWJhY2tfam9i LT5mYiA6IE5VTEw7DQorDQorCWlmICghZmIpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJbWVt c2V0KGRmbG93LCAwLCBzaXplb2YoKmRmbG93KSk7DQorDQorCWRmbG93LT5vdXRfdyA9IGZiLT53 aWR0aDsNCisJZGZsb3ctPm91dF9oID0gZmItPmhlaWdodDsNCisNCisJLyogdGhlIHdyaXRlIGJh Y2sgZGF0YSBjb21lcyBmcm9tIHRoZSBjb21waXogKi8NCisJcGlwZWxpbmVfY29tcG9zaXRpb25f c2l6ZShrY3J0Y19zdCwgJmRmbG93LT5pbl93LCAmZGZsb3ctPmluX2gpOw0KKwlkZmxvdy0+aW5w dXQuY29tcG9uZW50ID0gJndiX2xheWVyLT5iYXNlLnBpcGVsaW5lLT5jb21waXotPmJhc2U7DQor CS8qIGNvbXBpeiBkb2Vzbid0IG91dHB1dCBhbHBoYSAqLw0KKwlkZmxvdy0+cGl4ZWxfYmxlbmRf bW9kZSA9IERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkU7DQorCWRmbG93LT5yb3QgPSBEUk1fTU9E RV9ST1RBVEVfMDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitrb21lZGFf d2JfZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLA0KKwkJ CSAgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3QsDQorCQkJICAgICAgIHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0KQ0KK3sNCisJc3RydWN0IGtvbWVkYV9jcnRj X3N0YXRlICprY3J0Y19zdCA9IHRvX2tjcnRjX3N0KGNydGNfc3QpOw0KKwlzdHJ1Y3Qga29tZWRh X2xheWVyICp3Yl9sYXllcjsNCisJc3RydWN0IGtvbWVkYV9kYXRhX2Zsb3dfY2ZnIGRmbG93Ow0K KwlpbnQgZXJyOw0KKw0KKwlpZiAoIWNydGNfc3QtPmFjdGl2ZSkgew0KKwkJRFJNX0RFQlVHX0FU T01JQygiQ2Fubm90IHdyaXRlIHRoZSBjb21wb3NpdGlvbiByZXN1bHQgb3V0IG9uIGEgaW5hY3Rp dmUgQ1JUQy5cbiIpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJd2JfbGF5ZXIgPSB0 b19rY29ubih0b193Yl9jb25uKGNvbm5fc3QtPmNvbm5lY3RvcikpLT53Yl9sYXllcjsNCisNCisJ LyoNCisJICogTm8gbmVlZCBmb3IgYSBmdWxsIG1vZGVzdGVkIHdoZW4gdGhlIG9ubHkgY29ubmVj dG9yIGNoYW5nZWQgaXMgdGhlDQorCSAqIHdyaXRlYmFjayBjb25uZWN0b3IuDQorCSAqLw0KKwlp ZiAoY3J0Y19zdC0+Y29ubmVjdG9yc19jaGFuZ2VkICYmDQorCSAgICBpc19vbmx5X2NoYW5nZWRf Y29ubmVjdG9yKGNydGNfc3QsIGNvbm5fc3QtPmNvbm5lY3RvcikpDQorCQljcnRjX3N0LT5jb25u ZWN0b3JzX2NoYW5nZWQgPSBmYWxzZTsNCisNCisJZXJyID0ga29tZWRhX3diX2luaXRfZGF0YV9m bG93KHdiX2xheWVyLCBjb25uX3N0LCBrY3J0Y19zdCwgJmRmbG93KTsNCisJaWYgKGVycikNCisJ CXJldHVybiBlcnI7DQorDQorCXJldHVybiBrb21lZGFfYnVpbGRfd2JfZGF0YV9mbG93KHdiX2xh eWVyLCBjb25uX3N0LCBrY3J0Y19zdCwgJmRmbG93KTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mga29tZWRhX3diX2VuY29kZXJfaGVscGVyX2Z1 bmNzID0gew0KKwkuYXRvbWljX2NoZWNrID0ga29tZWRhX3diX2VuY29kZXJfYXRvbWljX2NoZWNr LA0KK307DQorDQorc3RhdGljIGludA0KK2tvbWVkYV93Yl9jb25uZWN0b3JfZ2V0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQor c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzDQora29tZWRhX3diX2Nvbm5lY3Rvcl9tb2RlX3Zh bGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQorCQkJICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQ0KK3sNCisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNv bm5lY3Rvci0+ZGV2Ow0KKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICptb2RlX2NvbmZpZyA9ICZk ZXYtPm1vZGVfY29uZmlnOw0KKwlpbnQgdyA9IG1vZGUtPmhkaXNwbGF5LCBoID0gbW9kZS0+dmRp c3BsYXk7DQorDQorCWlmICgodyA8IG1vZGVfY29uZmlnLT5taW5fd2lkdGgpIHx8ICh3ID4gbW9k ZV9jb25maWctPm1heF93aWR0aCkpDQorCQlyZXR1cm4gTU9ERV9CQURfSFZBTFVFOw0KKw0KKwlp ZiAoKGggPCBtb2RlX2NvbmZpZy0+bWluX2hlaWdodCkgfHwgKGggPiBtb2RlX2NvbmZpZy0+bWF4 X2hlaWdodCkpDQorCQlyZXR1cm4gTU9ERV9CQURfVlZBTFVFOw0KKw0KKwlyZXR1cm4gTU9ERV9P SzsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyBrb21lZGFfd2JfY29ubl9oZWxwZXJfZnVuY3MgPSB7DQorCS5nZXRfbW9kZXMJPSBrb21lZGFf d2JfY29ubmVjdG9yX2dldF9tb2RlcywNCisJLm1vZGVfdmFsaWQJPSBrb21lZGFfd2JfY29ubmVj dG9yX21vZGVfdmFsaWQsDQorfTsNCisNCitzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1 cw0KK2tvbWVkYV93Yl9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsIGJvb2wgZm9yY2UpDQorew0KKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitrb21lZGFfd2JfY29ubmVjdG9yX2ZpbGxfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwNCisJCQkgICAgICAgdWludDMyX3QgbWF4 WCwgdWludDMyX3QgbWF4WSkNCit7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBr b21lZGFfd2JfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikNCit7DQorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOw0KKwlrZnJlZSh0b19r Y29ubih0b193Yl9jb25uKGNvbm5lY3RvcikpKTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2Z1bmNzIGtvbWVkYV93Yl9jb25uZWN0b3JfZnVuY3MgPSB7DQorCS5y ZXNldAkJCT0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KKwkuZGV0ZWN0CQkJ PSBrb21lZGFfd2JfY29ubmVjdG9yX2RldGVjdCwNCisJLmZpbGxfbW9kZXMJCT0ga29tZWRhX3di X2Nvbm5lY3Rvcl9maWxsX21vZGVzLA0KKwkuZGVzdHJveQkJPSBrb21lZGFfd2JfY29ubmVjdG9y X2Rlc3Ryb3ksDQorCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlCT0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCisJLmF0b21pY19kZXN0cm95X3N0YXRlCT0gZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQorfTsNCisNCitzdGF0aWMg aW50IGtvbWVkYV93Yl9jb25uZWN0b3JfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLA0K KwkJCQkgICBzdHJ1Y3Qga29tZWRhX2NydGMgKmtjcnRjKQ0KK3sNCisJc3RydWN0IGtvbWVkYV9k ZXYgKm1kZXYgPSBrbXMtPmJhc2UuZGV2X3ByaXZhdGU7DQorCXN0cnVjdCBrb21lZGFfd2JfY29u bmVjdG9yICprd2JfY29ubjsNCisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9j b25uOw0KKwl1MzIgKmZvcm1hdHMsIG5fZm9ybWF0cyA9IDA7DQorCWludCBlcnI7DQorDQorCWlm ICgha2NydGMtPm1hc3Rlci0+d2JfbGF5ZXIpDQorCQlyZXR1cm4gMDsNCisNCisJa3diX2Nvbm4g PSBremFsbG9jKHNpemVvZigqd2JfY29ubiksIEdGUF9LRVJORUwpOw0KKwlpZiAoIWt3Yl9jb25u KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWt3Yl9jb25uLT53Yl9sYXllciA9IGtjcnRjLT5t YXN0ZXItPndiX2xheWVyOw0KKw0KKwl3Yl9jb25uID0gJmt3Yl9jb25uLT5iYXNlOw0KKwl3Yl9j b25uLT5lbmNvZGVyLnBvc3NpYmxlX2NydGNzID0gQklUKGRybV9jcnRjX2luZGV4KCZrY3J0Yy0+ YmFzZSkpOw0KKw0KKwlmb3JtYXRzID0ga29tZWRhX2dldF9sYXllcl9mb3VyY2NfbGlzdCgmbWRl di0+Zm10X3RibCwNCisJCQkJCSAgICAgICBrd2JfY29ubi0+d2JfbGF5ZXItPmxheWVyX3R5cGUs DQorCQkJCQkgICAgICAgJm5fZm9ybWF0cyk7DQorDQorCWVyciA9IGRybV93cml0ZWJhY2tfY29u bmVjdG9yX2luaXQoJmttcy0+YmFzZSwgd2JfY29ubiwNCisJCQkJCSAgICZrb21lZGFfd2JfY29u bmVjdG9yX2Z1bmNzLA0KKwkJCQkJICAgJmtvbWVkYV93Yl9lbmNvZGVyX2hlbHBlcl9mdW5jcywN CisJCQkJCSAgIGZvcm1hdHMsIG5fZm9ybWF0cyk7DQorCWtvbWVkYV9wdXRfZm91cmNjX2xpc3Qo Zm9ybWF0cyk7DQorCWlmIChlcnIpDQorCQlyZXR1cm4gZXJyOw0KKw0KKwlkcm1fY29ubmVjdG9y X2hlbHBlcl9hZGQoJndiX2Nvbm4tPmJhc2UsICZrb21lZGFfd2JfY29ubl9oZWxwZXJfZnVuY3Mp Ow0KKw0KKwlrY3J0Yy0+d2JfY29ubiA9IGt3Yl9jb25uOw0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQoraW50IGtvbWVkYV9rbXNfYWRkX3diX2Nvbm5lY3RvcnMoc3RydWN0IGtvbWVkYV9rbXNfZGV2 ICprbXMsDQorCQkJCSBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikNCit7DQorCWludCBpLCBlcnI7 DQorDQorCWZvciAoaSA9IDA7IGkgPCBrbXMtPm5fY3J0Y3M7IGkrKykgew0KKwkJZXJyID0ga29t ZWRhX3diX2Nvbm5lY3Rvcl9hZGQoa21zLCAma21zLT5jcnRjc1tpXSk7DQorCQlpZiAoZXJyKQ0K KwkJCXJldHVybiBlcnI7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KLS0gDQoyLjE3LjENCg0K