Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1134127yba; Sun, 31 Mar 2019 23:41:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqxtBPHD2kGeUPtuDucezZeGoh5qSi73vClmLfUGT3cnLmSXga3ioZfxvA1jp89IcP+I+qwm X-Received: by 2002:aa7:8b4c:: with SMTP id i12mr60497471pfd.189.1554100899050; Sun, 31 Mar 2019 23:41:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554100899; cv=none; d=google.com; s=arc-20160816; b=xtboqYUugZSI1ivy80lgDplzD6TwK2uckK4EMhTpoAuicsxsqupxf0NOUrd0tHizYw UZEntRWUiSyY/jgWece9iQbes3RpG1E2loPhvgzQcbMc5N/HxWX1xBkXcuq1ITvuyh7h lRRbnP4B7JGvqgRPoS5Q59cgTGvmO/hUEMvI+8H4Kj39oTGOZ747d90oV/JaG4laTQB+ YEdZanKbxuri7/w7fzlzvcKnoQY27tgL5l/ROcLyT1wqQpMOJV0i2rvz3Y5EoRq4I6bo jsnD7vmsDnLYN9T8k56UH8/d2KXkVHO3kHim9F1ywPlnPjubpL87ZGBehzSxZfr1Zlp1 436w== 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 :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:to:from:authenticated-by; bh=elvUWCHf2XpXQ8JwlQUvyoCpjsE8sdgcrUvfwZWIVd4=; b=D3228E4t5DdaEFUZRnwBurWYLBsI0OokCECHTTSxXmc5UmQhldzTr09ba1wRx9J866 +ZfC1/gpr0DrEgPkCpoyg/YchnURm0iDRTyTmKML8facrDgFy9MR8tzcmq8m+d7GRQ0+ D85fgyV1fp9kJh5GWORRF63Ent64M9hcgn2IHxYP6C/AIeaiqkX4zx9K++d9OXih1ryl APmPZK3qibz8uifkfg5UQHKIMRSi+jZsnpJTskXQkoMXv//8ZVIFDGb/TRl3TF8pfagW N7uyImXISciiGlDy5hebpiQP1mXJMWzS3+Wwq3amvduSmnZJuJ7YrFA6Qsx7/AOwIZYG CZQw== ARC-Authentication-Results: i=1; mx.google.com; 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 d21si3217155pgv.297.2019.03.31.23.41.23; Sun, 31 Mar 2019 23:41:39 -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; 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 S1731714AbfDAGkg (ORCPT + 99 others); Mon, 1 Apr 2019 02:40:36 -0400 Received: from rtits2.realtek.com ([211.75.126.72]:53852 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725911AbfDAGkg (ORCPT ); Mon, 1 Apr 2019 02:40:36 -0400 Authenticated-By: X-SpamFilter-By: BOX Solutions SpamTrap 5.62 with qID x316eL4G019080, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtitcasv01.realtek.com.tw[172.21.6.18]) by rtits2.realtek.com.tw (8.15.2/2.57/5.78) with ESMTPS id x316eL4G019080 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NOT); Mon, 1 Apr 2019 14:40:21 +0800 Received: from RTITEXH01.realtek.com.tw (172.21.6.62) by RTITCASV01.realtek.com.tw (172.21.6.18) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 1 Apr 2019 14:40:20 +0800 Received: from RTITMBSVM07.realtek.com.tw ([fe80::a512:a803:bf1e:b23]) by RTITEXH01.realtek.com.tw ([::1]) with mapi id 14.03.0439.000; Mon, 1 Apr 2019 14:40:20 +0800 From: =?big5?B?p2Sp/rzhIFJpY2t5?= To: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "colin.king@canonical.com" , "axboe@kernel.dk" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3] misc: rtsx: Enable OCP for rts522a rts524a rts525a rts5260 Thread-Topic: [PATCH v3] misc: rtsx: Enable OCP for rts522a rts524a rts525a rts5260 Thread-Index: AQHU1MpX6lDV9pyCr0mgYIhw2T/y7KYm/w7Q Date: Mon, 1 Apr 2019 06:40:19 +0000 Message-ID: References: <20190307094415.4853-1-ricky_wu@realtek.com> In-Reply-To: <20190307094415.4853-1-ricky_wu@realtek.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.22.88.103] Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RGVhciBhbGwsDQoNCk1heSBJIGtub3cgaG93IGlzIHRoaXMgcGF0Y2ggZ29pbmcgb24gPyANCklz IGl0IHdvcmsgd2VsbCBvbiB5b3VyIHNpZGU/DQpXZSBoYXZlIHNvbWUgZ3Vlc3Qgd2FudCB0byBr bm93IHdoYXQgc3RhZ2UgaXMgdGhpcyBwYXRjaCBnb2luZyB0bw0KDQpUaGFuayB5b3UNCg0KQmVz dCByZWdhcmRzLA0KUmlja3lfd3UgDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogp2Sp/rzhIFJpY2t5DQo+IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAwNywgMjAxOSA1OjQ0 IFBNDQo+IFRvOiBhcm5kQGFybmRiLmRlOyBncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZzsgY29s aW4ua2luZ0BjYW5vbmljYWwuY29tOw0KPiBheGJvZUBrZXJuZWwuZGs7IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcNCj4gQ2M6IKdkqf684SBSaWNreQ0KPiBTdWJqZWN0OiBbUEFUQ0ggdjNd IG1pc2M6IHJ0c3g6IEVuYWJsZSBPQ1AgZm9yIHJ0czUyMmEgcnRzNTI0YSBydHM1MjVhIHJ0czUy NjANCj4gDQo+IEZyb206IFJpY2t5V3UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KPiANCj4gdGhp cyBlbmFibGVzIGFuZCBhZGRzIE9DUCBmdW5jdGlvbiBmb3IgUmVhbHRlayBBIHNlcmllcyBjYXJk cmVhZGVyIGNoaXBzDQo+IGFuZCBmaXhlcyBzb21lIE9DUCBmbG93IGluIHJ0czUyNjAuYw0KPiAN Cj4gU2lnbmVkLW9mZi1ieTogUmlja3lXdSA8cmlja3lfd3VAcmVhbHRlay5jb20+DQo+IC0tLQ0K PiAgZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyNy5jICB8ICA1OCArKysrKysrKysrLS0N Cj4gIGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNDkuYyAgfCAgMjkgKysrKy0tDQo+ICBk cml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjYwLmMgIHwgMTM2ICsrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tDQo+ICBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5jIHwgIDM4 ICsrKysrKy0tDQo+ICBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5oIHwgICA1ICsr DQo+ICA1IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25zKC0p DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyNy5jDQo+ IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyNy5jDQo+IGluZGV4IDAyNGRjYmE4ZDZj OC4uOTUzOTRjNmNhNWM3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9y dHM1MjI3LmMNCj4gKysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTIyNy5jDQo+IEBA IC0xNzAsNiArMTcwLDkgQEAgc3RhdGljIGludCBydHM1MjI3X2NhcmRfcG93ZXJfb24oc3RydWN0 IHJ0c3hfcGNyICpwY3IsDQo+IGludCBjYXJkKQ0KPiAgew0KPiAgCWludCBlcnI7DQo+IA0KPiAr CWlmIChwY3ItPm9wdGlvbi5vY3BfZW4pDQo+ICsJCXJ0c3hfcGNpX2VuYWJsZV9vY3AocGNyKTsN Cj4gKw0KPiAgCXJ0c3hfcGNpX2luaXRfY21kKHBjcik7DQo+ICAJcnRzeF9wY2lfYWRkX2NtZChw Y3IsIFdSSVRFX1JFR19DTUQsIENBUkRfUFdSX0NUTCwNCj4gIAkJCVNEX1BPV0VSX01BU0ssIFNE X1BBUlRJQUxfUE9XRVJfT04pOw0KPiBAQCAtMTgwLDI1ICsxODMsMzAgQEAgc3RhdGljIGludCBy dHM1MjI3X2NhcmRfcG93ZXJfb24oc3RydWN0IHJ0c3hfcGNyDQo+ICpwY3IsIGludCBjYXJkKQ0K PiAgCQlyZXR1cm4gZXJyOw0KPiANCj4gIAkvKiBUbyBhdm9pZCB0b28gbGFyZ2UgaW4tcnVzaCBj dXJyZW50ICovDQo+IC0JdWRlbGF5KDE1MCk7DQo+ICsJbXNsZWVwKDIwKTsNCj4gDQo+ICAJcnRz eF9wY2lfaW5pdF9jbWQocGNyKTsNCj4gIAlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVH X0NNRCwgQ0FSRF9QV1JfQ1RMLA0KPiAgCQkJU0RfUE9XRVJfTUFTSywgU0RfUE9XRVJfT04pOw0K PiAgCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBQV1JfR0FURV9DVFJMLA0K PiAgCQkJTERPMzMxOF9QV1JfTUFTSywgMHgwNik7DQo+ICsJcnRzeF9wY2lfYWRkX2NtZChwY3Is IFdSSVRFX1JFR19DTUQsIENBUkRfT0UsDQo+ICsJCQlTRF9PVVRQVVRfRU4sIFNEX09VVFBVVF9F Tik7DQo+ICsJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIENBUkRfT0UsDQo+ ICsJCQlNU19PVVRQVVRfRU4sIE1TX09VVFBVVF9FTik7DQo+ICAJcmV0dXJuIHJ0c3hfcGNpX3Nl bmRfY21kKHBjciwgMTAwKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW50IHJ0czUyMjdfY2FyZF9w b3dlcl9vZmYoc3RydWN0IHJ0c3hfcGNyICpwY3IsIGludCBjYXJkKQ0KPiAgew0KPiAtCXJ0c3hf cGNpX2luaXRfY21kKHBjcik7DQo+IC0JcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19D TUQsIENBUkRfUFdSX0NUTCwNCj4gLQkJCVNEX1BPV0VSX01BU0sgfCBQTU9TX1NUUkdfTUFTSywN Cj4gLQkJCVNEX1BPV0VSX09GRiB8IFBNT1NfU1RSR180MDBtQSk7DQo+IC0JcnRzeF9wY2lfYWRk X2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFBXUl9HQVRFX0NUUkwsDQo+IC0JCQlMRE8zMzE4X1BX Ul9NQVNLLCAwWDAwKTsNCj4gLQlyZXR1cm4gcnRzeF9wY2lfc2VuZF9jbWQocGNyLCAxMDApOw0K PiArCWlmIChwY3ItPm9wdGlvbi5vY3BfZW4pDQo+ICsJCXJ0c3hfcGNpX2Rpc2FibGVfb2NwKHBj cik7DQo+ICsNCj4gKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENBUkRfUFdSX0NUTCwg U0RfUE9XRVJfTUFTSyB8DQo+ICsJCQlQTU9TX1NUUkdfTUFTSywgU0RfUE9XRVJfT0ZGIHwgUE1P U19TVFJHXzQwMG1BKTsNCj4gKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBXUl9HQVRF X0NUUkwsIExETzMzMThfUFdSX01BU0ssDQo+IDBYMDApOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICB9DQo+IA0KPiAgc3RhdGljIGludCBydHM1MjI3X3N3aXRjaF9vdXRwdXRfdm9sdGFnZShzdHJ1 Y3QgcnRzeF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCj4gQEAgLTM0OCw2ICszNTYsMzIgQEAgc3Rh dGljIGludCBydHM1MjJhX2V4dHJhX2luaXRfaHcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+ICAJ cmV0dXJuIDA7DQo+ICB9DQo+IA0KPiArc3RhdGljIGludCBydHM1MjJhX3N3aXRjaF9vdXRwdXRf dm9sdGFnZShzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCj4gK3sNCj4gKwlpbnQg ZXJyOw0KPiArDQo+ICsJaWYgKHZvbHRhZ2UgPT0gT1VUUFVUXzNWMykgew0KPiArCQllcnIgPSBy dHN4X3BjaV93cml0ZV9waHlfcmVnaXN0ZXIocGNyLCAweDA4LCAweDU3RTQpOw0KPiArCQlpZiAo ZXJyIDwgMCkNCj4gKwkJCXJldHVybiBlcnI7DQo+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IE9V VFBVVF8xVjgpIHsNCj4gKwkJZXJyID0gcnRzeF9wY2lfd3JpdGVfcGh5X3JlZ2lzdGVyKHBjciwg MHgxMSwgMHgzQzAyKTsNCj4gKwkJaWYgKGVyciA8IDApDQo+ICsJCQlyZXR1cm4gZXJyOw0KPiAr CQllcnIgPSBydHN4X3BjaV93cml0ZV9waHlfcmVnaXN0ZXIocGNyLCAweDA4LCAweDU0QTQpOw0K PiArCQlpZiAoZXJyIDwgMCkNCj4gKwkJCXJldHVybiBlcnI7DQo+ICsJfSBlbHNlIHsNCj4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJLyogc2V0IHBhZCBkcml2ZSAqLw0KPiAr CXJ0c3hfcGNpX2luaXRfY21kKHBjcik7DQo+ICsJcnRzNTIyN19maWxsX2RyaXZpbmcocGNyLCB2 b2x0YWdlKTsNCj4gKwlyZXR1cm4gcnRzeF9wY2lfc2VuZF9jbWQocGNyLCAxMDApOw0KPiArfQ0K PiArDQo+ICsNCj4gIC8qIHJ0czUyMmEgb3BlcmF0aW9ucyBtYWlubHkgZGVyaXZlZCBmcm9tIHJ0 czUyMjcsIGV4Y2VwdCBwaHkvaHcgaW5pdCBzZXR0aW5nLg0KPiAgICovDQo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IHBjcl9vcHMgcnRzNTIyYV9wY3Jfb3BzID0gew0KPiBAQCAtMzYwLDcgKzM5NCw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNyX29wcyBydHM1MjJhX3Bjcl9vcHMgPSB7DQo+ICAJ LmRpc2FibGVfYXV0b19ibGluayA9IHJ0czUyMjdfZGlzYWJsZV9hdXRvX2JsaW5rLA0KPiAgCS5j YXJkX3Bvd2VyX29uID0gcnRzNTIyN19jYXJkX3Bvd2VyX29uLA0KPiAgCS5jYXJkX3Bvd2VyX29m ZiA9IHJ0czUyMjdfY2FyZF9wb3dlcl9vZmYsDQo+IC0JLnN3aXRjaF9vdXRwdXRfdm9sdGFnZSA9 IHJ0czUyMjdfc3dpdGNoX291dHB1dF92b2x0YWdlLA0KPiArCS5zd2l0Y2hfb3V0cHV0X3ZvbHRh Z2UgPSBydHM1MjJhX3N3aXRjaF9vdXRwdXRfdm9sdGFnZSwNCj4gIAkuY2RfZGVnbGl0Y2ggPSBO VUxMLA0KPiAgCS5jb252X2Nsa19hbmRfZGl2X24gPSBOVUxMLA0KPiAgCS5mb3JjZV9wb3dlcl9k b3duID0gcnRzNTIyN19mb3JjZV9wb3dlcl9kb3duLA0KPiBAQCAtMzcxLDQgKzQwNSwxMCBAQCB2 b2lkIHJ0czUyMmFfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+ICAJcnRzNTIy N19pbml0X3BhcmFtcyhwY3IpOw0KPiANCj4gIAlwY3ItPnJlZ19wbV9jdHJsMyA9IFJUUzUyMkFf UE1fQ1RSTDM7DQo+ICsNCj4gKwlwY3ItPm9wdGlvbi5vY3BfZW4gPSAxOw0KPiArCXBjci0+aHdf cGFyYW0uaW50ZXJydXB0X2VuIHw9IFNEX09DX0lOVF9FTjsNCj4gKwlwY3ItPmh3X3BhcmFtLm9j cF9nbGl0Y2ggPSBTRF9PQ1BfR0xJVENIXzEwTTsNCj4gKwlwY3ItPm9wdGlvbi5zZF84MDBtQV9v Y3BfdGhkID0gUlRTNTIyQV9PQ1BfVEhEXzgwMDsNCj4gKw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI0OS5jDQo+IGIvZHJpdmVycy9taXNjL2NhcmRy ZWFkZXIvcnRzNTI0OS5jDQo+IGluZGV4IGRiZTAxM2FiZGI4My4uYTMyNzM2NjlmYjljIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjQ5LmMNCj4gKysrIGIvZHJp dmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI0OS5jDQo+IEBAIC0yODMsOCArMjgzLDEyIEBAIHN0 YXRpYyBpbnQgcnRzeF9iYXNlX2Rpc2FibGVfYXV0b19ibGluayhzdHJ1Y3QgcnRzeF9wY3INCj4g KnBjcikNCj4gDQo+ICBzdGF0aWMgaW50IHJ0c3hfYmFzZV9jYXJkX3Bvd2VyX29uKHN0cnVjdCBy dHN4X3BjciAqcGNyLCBpbnQgY2FyZCkNCj4gIHsNCj4gKwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24g Km9wdGlvbiA9ICZwY3ItPm9wdGlvbjsNCj4gIAlpbnQgZXJyOw0KPiANCj4gKwlpZiAob3B0aW9u LT5vY3BfZW4pDQo+ICsJCXJ0c3hfcGNpX2VuYWJsZV9vY3AocGNyKTsNCj4gKw0KPiAgCXJ0c3hf cGNpX2luaXRfY21kKHBjcik7DQo+ICAJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19D TUQsIENBUkRfUFdSX0NUTCwNCj4gIAkJCVNEX1BPV0VSX01BU0ssIFNEX1ZDQ19QQVJUSUFMX1BP V0VSX09OKTsNCj4gQEAgLTMwNiwxMiArMzEwLDE1IEBAIHN0YXRpYyBpbnQgcnRzeF9iYXNlX2Nh cmRfcG93ZXJfb24oc3RydWN0IHJ0c3hfcGNyDQo+ICpwY3IsIGludCBjYXJkKQ0KPiANCj4gIHN0 YXRpYyBpbnQgcnRzeF9iYXNlX2NhcmRfcG93ZXJfb2ZmKHN0cnVjdCBydHN4X3BjciAqcGNyLCBp bnQgY2FyZCkNCj4gIHsNCj4gLQlydHN4X3BjaV9pbml0X2NtZChwY3IpOw0KPiAtCXJ0c3hfcGNp X2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBDQVJEX1BXUl9DVEwsDQo+IC0JCQlTRF9QT1dF Ul9NQVNLLCBTRF9QT1dFUl9PRkYpOw0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9S RUdfQ01ELCBQV1JfR0FURV9DVFJMLA0KPiAtCQkJTERPMzMxOF9QV1JfTUFTSywgMHgwMCk7DQo+ IC0JcmV0dXJuIHJ0c3hfcGNpX3NlbmRfY21kKHBjciwgMTAwKTsNCj4gKwlzdHJ1Y3QgcnRzeF9j cl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9wdGlvbjsNCj4gKw0KPiArCWlmIChvcHRpb24tPm9j cF9lbikNCj4gKwkJcnRzeF9wY2lfZGlzYWJsZV9vY3AocGNyKTsNCj4gKw0KPiArCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0FSRF9QV1JfQ1RMLCBTRF9QT1dFUl9NQVNLLA0KPiBTRF9Q T1dFUl9PRkYpOw0KPiArDQo+ICsJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQV1JfR0FU RV9DVFJMLCBMRE8zMzE4X1BXUl9NQVNLLA0KPiAweDAwKTsNCj4gKwlyZXR1cm4gMDsNCj4gIH0N Cj4gDQo+ICBzdGF0aWMgaW50IHJ0c3hfYmFzZV9zd2l0Y2hfb3V0cHV0X3ZvbHRhZ2Uoc3RydWN0 IHJ0c3hfcGNyICpwY3IsIHU4IHZvbHRhZ2UpDQo+IEBAIC02MjksNiArNjM2LDExIEBAIHZvaWQg cnRzNTI0YV9pbml0X3BhcmFtcyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gDQo+ICAJcGNyLT5y ZWdfcG1fY3RybDMgPSBSVFM1MjRBX1BNX0NUUkwzOw0KPiAgCXBjci0+b3BzID0gJnJ0czUyNGFf cGNyX29wczsNCj4gKw0KPiArCXBjci0+b3B0aW9uLm9jcF9lbiA9IDE7DQo+ICsJcGNyLT5od19w YXJhbS5pbnRlcnJ1cHRfZW4gfD0gU0RfT0NfSU5UX0VOOw0KPiArCXBjci0+aHdfcGFyYW0ub2Nw X2dsaXRjaCA9IFNEX09DUF9HTElUQ0hfMTBNOw0KPiArCXBjci0+b3B0aW9uLnNkXzgwMG1BX29j cF90aGQgPSBSVFM1MjRBX09DUF9USERfODAwOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQgcnRz NTI1YV9jYXJkX3Bvd2VyX29uKHN0cnVjdCBydHN4X3BjciAqcGNyLCBpbnQgY2FyZCkNCj4gQEAg LTczNyw0ICs3NDksOSBAQCB2b2lkIHJ0czUyNWFfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNy ICpwY3IpDQo+IA0KPiAgCXBjci0+cmVnX3BtX2N0cmwzID0gUlRTNTI0QV9QTV9DVFJMMzsNCj4g IAlwY3ItPm9wcyA9ICZydHM1MjVhX3Bjcl9vcHM7DQo+ICsNCj4gKwlwY3ItPm9wdGlvbi5vY3Bf ZW4gPSAxOw0KPiArCXBjci0+aHdfcGFyYW0uaW50ZXJydXB0X2VuIHw9IFNEX09DX0lOVF9FTjsN Cj4gKwlwY3ItPmh3X3BhcmFtLm9jcF9nbGl0Y2ggPSBTRF9PQ1BfR0xJVENIXzEwTTsNCj4gKwlw Y3ItPm9wdGlvbi5zZF84MDBtQV9vY3BfdGhkID0gUlRTNTI1QV9PQ1BfVEhEXzgwMDsNCj4gIH0N Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjAuYw0KPiBiL2Ry aXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjAuYw0KPiBpbmRleCBhNDkzYjAxYzViYzYuLmZm MzAzYTc3MGZlZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2 MC5jDQo+ICsrKyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjAuYw0KPiBAQCAtNjQs MTEgKzY0LDEzIEBAIHN0YXRpYyB2b2lkIHJ0czUyNjBfZmlsbF9kcml2aW5nKHN0cnVjdCBydHN4 X3BjciAqcGNyLCB1OA0KPiB2b2x0YWdlKQ0KPiAgCQlkcml2ZV9zZWwgPSBwY3ItPnNkMzBfZHJp dmVfc2VsXzF2ODsNCj4gIAl9DQo+IA0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9S RUdfQ01ELCBTRDMwX0NMS19EUklWRV9TRUwsDQo+ICsJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBTRDMwX0NMS19EUklWRV9TRUwsDQo+ICAJCQkgMHhGRiwgZHJpdmluZ1tkcml2ZV9zZWxd WzBdKTsNCj4gLQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0QzMF9DTURf RFJJVkVfU0VMLA0KPiArDQo+ICsJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRDMwX0NN RF9EUklWRV9TRUwsDQo+ICAJCQkgMHhGRiwgZHJpdmluZ1tkcml2ZV9zZWxdWzFdKTsNCj4gLQly dHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0QzMF9EQVRfRFJJVkVfU0VMLA0K PiArDQo+ICsJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRDMwX0NNRF9EUklWRV9TRUws DQo+ICAJCQkgMHhGRiwgZHJpdmluZ1tkcml2ZV9zZWxdWzJdKTsNCj4gIH0NCj4gDQo+IEBAIC0x OTMsNyArMTk1LDcgQEAgc3RhdGljIGludCBzZF9zZXRfc2FtcGxlX3B1c2hfdGltaW5nX3NkMzAo c3RydWN0DQo+IHJ0c3hfcGNyICpwY3IpDQo+ICAJCXwgU0RfQVNZTkNfRklGT19OT1RfUlNULCBT RF8zMF9NT0RFIHwNCj4gU0RfQVNZTkNfRklGT19OT1RfUlNUKTsNCj4gIAlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIENMS19DVEwsIENMS19MT1dfRlJFUSwgQ0xLX0xPV19GUkVRKTsNCj4g IAlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENBUkRfQ0xLX1NPVVJDRSwgMHhGRiwNCj4g LQkJCQlDUkNfVkFSX0NMSzAgfCBTRDMwX0ZJWF9DTEsgfCBTQU1QTEVfVkFSX0NMSzEpOw0KPiAr CQkgICAgICAgQ1JDX1ZBUl9DTEswIHwgU0QzMF9GSVhfQ0xLIHwgU0FNUExFX1ZBUl9DTEsxKTsN Cj4gIAlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENMS19DVEwsIENMS19MT1dfRlJFUSwg MCk7DQo+IA0KPiAgCXJldHVybiAwOw0KPiBAQCAtMjA3LDIyICsyMDksMTYgQEAgc3RhdGljIGlu dCBydHM1MjYwX2NhcmRfcG93ZXJfb24oc3RydWN0IHJ0c3hfcGNyDQo+ICpwY3IsIGludCBjYXJk KQ0KPiAgCWlmIChvcHRpb24tPm9jcF9lbikNCj4gIAkJcnRzeF9wY2lfZW5hYmxlX29jcChwY3Ip Ow0KPiANCj4gLQlydHN4X3BjaV9pbml0X2NtZChwY3IpOw0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQo cGNyLCBXUklURV9SRUdfQ01ELCBMRE9fQ09ORklHMiwNCj4gLQkJCSBEVjMzMTgxMl9WREQxLCBE VjMzMTgxMl9WREQxKTsNCj4gLQllcnIgPSBydHN4X3BjaV9zZW5kX2NtZChwY3IsIENNRF9USU1F T1VUX0RFRik7DQo+IC0JaWYgKGVyciA8IDApDQo+IC0JCXJldHVybiBlcnI7DQo+IA0KPiAtCXJ0 c3hfcGNpX2luaXRfY21kKHBjcik7DQo+IC0JcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JF R19DTUQsIExET19WQ0NfQ0ZHMCwNCj4gLQkJCSBSVFM1MjYwX0RWQ0NfVFVORV9NQVNLLCBSVFM1 MjYwX0RWQ0NfMzMpOw0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBM RE9fVkNDX0NGRzEsDQo+IC0JCQkgTERPX1BPV19TRFZERDFfTUFTSywgTERPX1BPV19TRFZERDFf T04pOw0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBMRE9fQ09ORklH MiwNCj4gLQkJCSBEVjMzMTgxMl9QT1dFUk9OLCBEVjMzMTgxMl9QT1dFUk9OKTsNCj4gLQllcnIg PSBydHN4X3BjaV9zZW5kX2NtZChwY3IsIENNRF9USU1FT1VUX0RFRik7DQo+ICsJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBMRE9fQ09ORklHMiwgRFYzMzE4MTJfVkREMSwNCj4gRFYzMzE4 MTJfVkREMSk7DQo+ICsJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBMRE9fVkNDX0NGRzAs DQo+ICsJCQkgCVJUUzUyNjBfRFZDQ19UVU5FX01BU0ssIFJUUzUyNjBfRFZDQ18zMyk7DQo+IA0K PiArCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgTERPX1ZDQ19DRkcxLCBMRE9fUE9XX1NE VkREMV9NQVNLLA0KPiArCQkJCUxET19QT1dfU0RWREQxX09OKTsNCj4gKw0KPiArCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgTERPX0NPTkZJRzIsDQo+ICsJCQkgCURWMzMxODEyX1BPV0VS T04sIERWMzMxODEyX1BPV0VST04pOw0KPiAgCW1zbGVlcCgyMCk7DQo+IA0KPiAgCWlmIChwY3It PmV4dHJhX2NhcHMgJiBFWFRSQV9DQVBTX1NEX1NEUjUwIHx8DQo+IEBAIC0yNzMsOSArMjY5LDkg QEAgc3RhdGljIGludCBydHM1MjYwX3N3aXRjaF9vdXRwdXRfdm9sdGFnZShzdHJ1Y3QNCj4gcnRz eF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCj4gIAl9DQo+IA0KPiAgCS8qIHNldCBwYWQgZHJpdmUg Ki8NCj4gLQlydHN4X3BjaV9pbml0X2NtZChwY3IpOw0KPiAgCXJ0czUyNjBfZmlsbF9kcml2aW5n KHBjciwgdm9sdGFnZSk7DQo+IC0JcmV0dXJuIHJ0c3hfcGNpX3NlbmRfY21kKHBjciwgQ01EX1RJ TUVPVVRfREVGKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lk IHJ0czUyNjBfc3RvcF9jbWQoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+IEBAIC0yOTAsMjkgKzI4 NiwyMiBAQCBzdGF0aWMgdm9pZCBydHM1MjYwX3N0b3BfY21kKHN0cnVjdCBydHN4X3BjciAqcGNy KQ0KPiANCj4gIHN0YXRpYyB2b2lkIHJ0czUyNjBfY2FyZF9iZWZvcmVfcG93ZXJfb2ZmKHN0cnVj dCBydHN4X3BjciAqcGNyKQ0KPiAgew0KPiAtCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0aW9u ID0gJnBjci0+b3B0aW9uOw0KPiAtDQo+ICAJcnRzNTI2MF9zdG9wX2NtZChwY3IpOw0KPiAgCXJ0 czUyNjBfc3dpdGNoX291dHB1dF92b2x0YWdlKHBjciwgT1VUUFVUXzNWMyk7DQo+IA0KPiAtCWlm IChvcHRpb24tPm9jcF9lbikNCj4gLQkJcnRzeF9wY2lfZGlzYWJsZV9vY3AocGNyKTsNCj4gIH0N Cj4gDQo+ICBzdGF0aWMgaW50IHJ0czUyNjBfY2FyZF9wb3dlcl9vZmYoc3RydWN0IHJ0c3hfcGNy ICpwY3IsIGludCBjYXJkKQ0KPiAgew0KPiAtCWludCBlcnIgPSAwOw0KPiAtDQo+ICAJcnRzNTI2 MF9jYXJkX2JlZm9yZV9wb3dlcl9vZmYocGNyKTsNCj4gKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIExET19WQ0NfQ0ZHMSwNCj4gKwkJCQlMRE9fUE9XX1NEVkREMV9NQVNLLCBMRE9fUE9X X1NEVkREMV9PRkYpOw0KPiArCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgTERPX0NPTkZJ RzIsDQo+ICsJCQkJRFYzMzE4MTJfUE9XRVJPTiwgRFYzMzE4MTJfUE9XRVJPRkYpOw0KPiArCWlm IChwY3ItPm9wdGlvbi5vY3BfZW4pDQo+ICsJCXJ0c3hfcGNpX2Rpc2FibGVfb2NwKHBjcik7DQo+ IA0KPiAtCXJ0c3hfcGNpX2luaXRfY21kKHBjcik7DQo+IC0JcnRzeF9wY2lfYWRkX2NtZChwY3Is IFdSSVRFX1JFR19DTUQsIExET19WQ0NfQ0ZHMSwNCj4gLQkJCSBMRE9fUE9XX1NEVkREMV9NQVNL LCBMRE9fUE9XX1NEVkREMV9PRkYpOw0KPiAtCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9S RUdfQ01ELCBMRE9fQ09ORklHMiwNCj4gLQkJCSBEVjMzMTgxMl9QT1dFUk9OLCBEVjMzMTgxMl9Q T1dFUk9GRik7DQo+IC0JZXJyID0gcnRzeF9wY2lfc2VuZF9jbWQocGNyLCBDTURfVElNRU9VVF9E RUYpOw0KPiAtDQo+IC0JcmV0dXJuIGVycjsNCj4gKwlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICBz dGF0aWMgdm9pZCBydHM1MjYwX2luaXRfb2NwKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiBAQCAt MzIyLDQxICszMTEsMjkgQEAgc3RhdGljIHZvaWQgcnRzNTI2MF9pbml0X29jcChzdHJ1Y3QgcnRz eF9wY3IgKnBjcikNCj4gIAlpZiAob3B0aW9uLT5vY3BfZW4pIHsNCj4gIAkJdTggbWFzaywgdmFs Ow0KPiANCj4gLQkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjYwX0RWQ0NfQ1RS TCwNCj4gLQkJCQkJUlRTNTI2MF9EVkNDX09DUF9FTiB8DQo+IC0JCQkJCVJUUzUyNjBfRFZDQ19P Q1BfQ0xfRU4sDQo+IC0JCQkJCVJUUzUyNjBfRFZDQ19PQ1BfRU4gfA0KPiAtCQkJCQlSVFM1MjYw X0RWQ0NfT0NQX0NMX0VOKTsNCj4gLQkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjYwX0RWSU9fQ1RSTCwNCj4gLQkJCQkJUlRTNTI2MF9EVklPX09DUF9FTiB8DQo+IC0JCQkJCVJU UzUyNjBfRFZJT19PQ1BfQ0xfRU4sDQo+IC0JCQkJCVJUUzUyNjBfRFZJT19PQ1BfRU4gfA0KPiAt CQkJCQlSVFM1MjYwX0RWSU9fT0NQX0NMX0VOKTsNCj4gDQo+ICAJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgUlRTNTI2MF9EVkNDX0NUUkwsDQo+ICAJCQkJCVJUUzUyNjBfRFZDQ19PQ1Bf VEhEX01BU0ssDQo+IC0JCQkJCW9wdGlvbi0+c2RfNDAwbUFfb2NwX3RoZCk7DQo+IC0NCj4gLQkJ cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjYwX0RWSU9fQ1RSTCwNCj4gLQkJCQkJ UlRTNTI2MF9EVklPX09DUF9USERfTUFTSywNCj4gLQkJCQkJUlRTNTI2MF9EVklPX09DUF9USERf MzUwKTsNCj4gKwkJCQkJb3B0aW9uLT5zZF84MDBtQV9vY3BfdGhkKTsNCj4gDQo+ICAJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2MF9EVjMzMTgxMl9DRkcsDQo+ICAJCQkJCVJU UzUyNjBfRFYzMzE4MTJfT0NQX1RIRF9NQVNLLA0KPiAtCQkJCQlSVFM1MjYwX0RWMzMxODEyX09D UF9USERfMjEwKTsNCj4gKwkJCQkJUlRTNTI2MF9EVjMzMTgxMl9PQ1BfVEhEXzI3MCk7DQo+IA0K PiAtCQltYXNrID0gU0RfT0NQX0dMSVRDSF9NQVNLIHwgU0RWSU9fT0NQX0dMSVRDSF9NQVNLOw0K PiArCQltYXNrID0gU0RfT0NQX0dMSVRDSF9NQVNLOw0KPiAgCQl2YWwgPSBwY3ItPmh3X3BhcmFt Lm9jcF9nbGl0Y2g7DQo+ICAJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUEdM SVRDSCwgbWFzaywgdmFsKTsNCj4gKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjYwX0RWQ0NfQ1RSTCwNCj4gKwkJCQkJUlRTNTI2MF9EVkNDX09DUF9FTiB8DQo+ICsJCQkJCVJU UzUyNjBfRFZDQ19PQ1BfQ0xfRU4sDQo+ICsJCQkJCVJUUzUyNjBfRFZDQ19PQ1BfRU4gfA0KPiAr CQkJCQlSVFM1MjYwX0RWQ0NfT0NQX0NMX0VOKTsNCj4gDQo+ICAJCXJ0c3hfcGNpX2VuYWJsZV9v Y3AocGNyKTsNCj4gIAl9IGVsc2Ugew0KPiAgCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjBfRFZDQ19DVFJMLA0KPiAgCQkJCQlSVFM1MjYwX0RWQ0NfT0NQX0VOIHwNCj4gIAkJ CQkJUlRTNTI2MF9EVkNDX09DUF9DTF9FTiwgMCk7DQo+IC0JCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUlRTNTI2MF9EVklPX0NUUkwsDQo+IC0JCQkJCVJUUzUyNjBfRFZJT19PQ1BfRU4g fA0KPiAtCQkJCQlSVFM1MjYwX0RWSU9fT0NQX0NMX0VOLCAwKTsNCj4gIAl9DQo+ICB9DQo+IA0K PiBAQCAtMzY0LDE0ICszNDEsOCBAQCBzdGF0aWMgdm9pZCBydHM1MjYwX2VuYWJsZV9vY3Aoc3Ry dWN0IHJ0c3hfcGNyICpwY3IpDQo+ICB7DQo+ICAJdTggdmFsID0gMDsNCj4gDQo+IC0JcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBGUERDVEwsIE9DX1BPV0VSX0RPV04sIDApOw0KPiAtDQo+ ICAJdmFsID0gU0RfT0NQX0lOVF9FTiB8IFNEX0RFVEVDVF9FTjsNCj4gLQl2YWwgfD0gU0RWSU9f T0NQX0lOVF9FTiB8IFNEVklPX0RFVEVDVF9FTjsNCj4gIAlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJFR19PQ1BDVEwsIDB4RkYsIHZhbCk7DQo+IC0JcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSRUdfRFYzMzE4X09DUENUTCwNCj4gLQkJCQlEVjMzMThfREVURUNUX0VOIHwgRFYz MzE4X09DUF9JTlRfRU4sDQo+IC0JCQkJRFYzMzE4X0RFVEVDVF9FTiB8IERWMzMxOF9PQ1BfSU5U X0VOKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBydHM1MjYwX2Rpc2FibGVfb2NwKHN0cnVj dCBydHN4X3BjciAqcGNyKQ0KPiBAQCAtMzc5LDE1ICszNTAsMTAgQEAgc3RhdGljIHZvaWQgcnRz NTI2MF9kaXNhYmxlX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gIAl1OCBtYXNrID0gMDsN Cj4gDQo+ICAJbWFzayA9IFNEX09DUF9JTlRfRU4gfCBTRF9ERVRFQ1RfRU47DQo+IC0JbWFzayB8 PSBTRFZJT19PQ1BfSU5UX0VOIHwgU0RWSU9fREVURUNUX0VOOw0KPiAgCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgMCk7DQo+IC0JcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSRUdfRFYzMzE4X09DUENUTCwNCj4gLQkJCQlEVjMzMThfREVURUNUX0VO IHwgRFYzMzE4X09DUF9JTlRfRU4sIDApOw0KPiAtDQo+IC0JcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBGUERDVEwsIE9DX1BPV0VSX0RPV04sDQo+IC0JCQkJT0NfUE9XRVJfRE9XTik7DQo+ ICB9DQo+IA0KPiArDQo+ICBzdGF0aWMgaW50IHJ0czUyNjBfZ2V0X29jcHN0YXQoc3RydWN0IHJ0 c3hfcGNyICpwY3IsIHU4ICp2YWwpDQo+ICB7DQo+ICAJcmV0dXJuIHJ0c3hfcGNpX3JlYWRfcmVn aXN0ZXIocGNyLCBSRUdfT0NQU1RBVCwgdmFsKTsNCj4gQEAgLTQwNCw5ICszNzAsNyBAQCBzdGF0 aWMgdm9pZCBydHM1MjYwX2NsZWFyX29jcHN0YXQoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+ICAJ dTggdmFsID0gMDsNCj4gDQo+ICAJbWFzayA9IFNEX09DUF9JTlRfQ0xSIHwgU0RfT0NfQ0xSOw0K PiAtCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9DTFIgfCBTRFZJT19PQ19DTFI7DQo+ICAJdmFsID0g U0RfT0NQX0lOVF9DTFIgfCBTRF9PQ19DTFI7DQo+IC0JdmFsIHw9IFNEVklPX09DUF9JTlRfQ0xS IHwgU0RWSU9fT0NfQ0xSOw0KPiANCj4gIAlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJF R19PQ1BDVEwsIG1hc2ssIHZhbCk7DQo+ICAJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBS RUdfRFYzMzE4X09DUENUTCwNCj4gQEAgLTQyNSwzNiArMzg5LDIyIEBAIHN0YXRpYyB2b2lkIHJ0 czUyNjBfcHJvY2Vzc19vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+IA0KPiAgCXJ0c3hfcGNp X2dldF9vY3BzdGF0KHBjciwgJnBjci0+b2NwX3N0YXQpOw0KPiAgCXJ0czUyNjBfZ2V0X29jcHN0 YXQyKHBjciwgJnBjci0+b2NwX3N0YXQyKTsNCj4gLQlpZiAocGNyLT5jYXJkX2V4aXN0ICYgU0Rf RVhJU1QpDQo+IC0JCXJ0c3hfc2RfcG93ZXJfb2ZmX2NhcmQzdjMocGNyKTsNCj4gLQllbHNlIGlm IChwY3ItPmNhcmRfZXhpc3QgJiBNU19FWElTVCkNCj4gLQkJcnRzeF9tc19wb3dlcl9vZmZfY2Fy ZDN2MyhwY3IpOw0KPiAtDQo+IC0JaWYgKCEocGNyLT5jYXJkX2V4aXN0ICYgTVNfRVhJU1QpICYm ICEocGNyLT5jYXJkX2V4aXN0ICYgU0RfRVhJU1QpKSB7DQo+IC0JCWlmICgocGNyLT5vY3Bfc3Rh dCAmIChTRF9PQ19OT1cgfCBTRF9PQ19FVkVSIHwNCj4gLQkJCVNEVklPX09DX05PVyB8IFNEVklP X09DX0VWRVIpKSB8fA0KPiAtCQkJKHBjci0+b2NwX3N0YXQyICYgKERWMzMxOF9PQ1BfTk9XIHwg RFYzMzE4X09DUF9FVkVSKSkpDQo+IC0JCQlydHN4X3BjaV9jbGVhcl9vY3BzdGF0KHBjcik7DQo+ ICsNCj4gKwlpZiAoKHBjci0+b2NwX3N0YXQgJiAoU0RfT0NfTk9XIHwgU0RfT0NfRVZFUikpIHx8 DQo+ICsJCShwY3ItPm9jcF9zdGF0MiAmIChEVjMzMThfT0NQX05PVyB8IERWMzMxOF9PQ1BfRVZF UikpKSB7DQo+ICsJCXJ0c3hfcGNpX2NhcmRfcG93ZXJfb2ZmKHBjciwgUlRTWF9TRF9DQVJEKTsN Cj4gKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDQVJEX09FLCBTRF9PVVRQVVRfRU4s IDApOw0KPiArCQlydHN4X3BjaV9jbGVhcl9vY3BzdGF0KHBjcik7DQo+ICAJCXBjci0+b2NwX3N0 YXQgPSAwOw0KPiAgCQlwY3ItPm9jcF9zdGF0MiA9IDA7DQo+ICAJfQ0KPiANCj4gLQlpZiAoKHBj ci0+b2NwX3N0YXQgJiAoU0RfT0NfTk9XIHwgU0RfT0NfRVZFUiB8DQo+IC0JCQlTRFZJT19PQ19O T1cgfCBTRFZJT19PQ19FVkVSKSkgfHwNCj4gLQkJCShwY3ItPm9jcF9zdGF0MiAmIChEVjMzMThf T0NQX05PVyB8IERWMzMxOF9PQ1BfRVZFUikpKSB7DQo+IC0JCWlmIChwY3ItPmNhcmRfZXhpc3Qg JiBTRF9FWElTVCkNCj4gLQkJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0FSRF9PRSwg U0RfT1VUUFVUX0VOLCAwKTsNCj4gLQkJZWxzZSBpZiAocGNyLT5jYXJkX2V4aXN0ICYgTVNfRVhJ U1QpDQo+IC0JCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIENBUkRfT0UsIE1TX09VVFBV VF9FTiwgMCk7DQo+IC0JfQ0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQgcnRzNTI2MF9pbml0X2h3 KHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiAgew0KPiAgCWludCBlcnI7DQo+IA0KPiAtCXJ0c3hf cGNpX2luaXRfb2NwKHBjcik7DQo+IC0NCj4gIAlydHN4X3BjaV9pbml0X2NtZChwY3IpOw0KPiAN Cj4gIAlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgTDFTVUJfQ09ORklHMSwN Cj4gQEAgLTQ4Myw2ICs0MzMsOCBAQCBzdGF0aWMgaW50IHJ0czUyNjBfaW5pdF9odyhzdHJ1Y3Qg cnRzeF9wY3IgKnBjcikNCj4gIAlpZiAoZXJyIDwgMCkNCj4gIAkJcmV0dXJuIGVycjsNCj4gDQo+ ICsJcnRzeF9wY2lfaW5pdF9vY3AocGNyKTsNCj4gKw0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAN Cj4gQEAgLTQ5OSw2ICs0NTEsMTIgQEAgc3RhdGljIHZvaWQgcnRzNTI2MF9wd3Jfc2F2aW5nX3Nl dHRpbmcoc3RydWN0IHJ0c3hfcGNyDQo+ICpwY3IpDQo+ICAJCXBjcl9kYmcocGNyLCAiU2V0IHBh cmFtZXRlcnMgZm9yIEwxLjIuIik7DQo+ICAJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg UFdSX0dMT0JBTF9DVFJMLA0KPiAgCQkJCQkweEZGLCBQQ0lFX0wxXzJfRU4pOw0KPiArCQlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjBfRFZDQ19DVFJMLA0KPiArCQkJCQlSVFM1 MjYwX0RWQ0NfT0NQX0VOIHwNCj4gKwkJCQkJUlRTNTI2MF9EVkNDX09DUF9DTF9FTiwNCj4gKwkJ CQkJUlRTNTI2MF9EVkNDX09DUF9FTiB8DQo+ICsJCQkJCVJUUzUyNjBfRFZDQ19PQ1BfQ0xfRU4p Ow0KPiArDQo+ICAJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUFdSX0ZFX0NUTCwNCj4g IAkJCQkJMHhGRiwgUENJRV9MMV8yX1BEX0ZFX0VOKTsNCj4gIAl9IGVsc2UgaWYgKGxzc19sMV8x KSB7DQo+IEBAIC03NDIsNyArNzAwLDcgQEAgdm9pZCBydHM1MjYwX2luaXRfcGFyYW1zKHN0cnVj dCBydHN4X3BjciAqcGNyKQ0KPiAgCW9wdGlvbi0+b2NwX2VuID0gMTsNCj4gIAlpZiAob3B0aW9u LT5vY3BfZW4pDQo+ICAJCWh3X3BhcmFtLT5pbnRlcnJ1cHRfZW4gfD0gU0RfT0NfSU5UX0VOOw0K PiAtCWh3X3BhcmFtLT5vY3BfZ2xpdGNoID0gU0RfT0NQX0dMSVRDSF8xME0gfA0KPiBTRFZJT19P Q1BfR0xJVENIXzgwMFU7DQo+ICsJaHdfcGFyYW0tPm9jcF9nbGl0Y2ggPSBTRF9PQ1BfR0xJVENI XzEwMFUgfA0KPiBTRFZJT19PQ1BfR0xJVENIXzgwMFU7DQo+ICAJb3B0aW9uLT5zZF80MDBtQV9v Y3BfdGhkID0gUlRTNTI2MF9EVkNDX09DUF9USERfNTUwOw0KPiAgCW9wdGlvbi0+c2RfODAwbUFf b2NwX3RoZCA9IFJUUzUyNjBfRFZDQ19PQ1BfVEhEXzk3MDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmMNCj4gYi9kcml2ZXJzL21pc2MvY2Fy ZHJlYWRlci9ydHN4X3Bjci5jDQo+IGluZGV4IGRhNDQ1MjIzZjRjYy4uZTgwNzI4MDRkODNhIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5jDQo+ICsrKyBi L2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmMNCj4gQEAgLTcwMyw3ICs3MDMsMTAg QEAgRVhQT1JUX1NZTUJPTF9HUEwocnRzeF9wY2lfY2FyZF9wdWxsX2N0bF9kaXNhYmxlKTsNCj4g DQo+ICBzdGF0aWMgdm9pZCBydHN4X3BjaV9lbmFibGVfYnVzX2ludChzdHJ1Y3QgcnRzeF9wY3Ig KnBjcikNCj4gIHsNCj4gLQlwY3ItPmJpZXIgPSBUUkFOU19PS19JTlRfRU4gfCBUUkFOU19GQUlM X0lOVF9FTiB8IFNEX0lOVF9FTjsNCj4gKwlzdHJ1Y3QgcnRzeF9od19wYXJhbSAqaHdfcGFyYW0g PSAmcGNyLT5od19wYXJhbTsNCj4gKw0KPiArCXBjci0+YmllciA9IFRSQU5TX09LX0lOVF9FTiB8 IFRSQU5TX0ZBSUxfSU5UX0VOIHwgU0RfSU5UX0VOIHwNCj4gKwkJaHdfcGFyYW0tPmludGVycnVw dF9lbjsNCj4gDQo+ICAJaWYgKHBjci0+bnVtX3Nsb3RzID4gMSkNCj4gIAkJcGNyLT5iaWVyIHw9 IE1TX0lOVF9FTjsNCj4gQEAgLTk2OSw4ICs5NzIsMTkgQEAgc3RhdGljIHZvaWQgcnRzeF9wY2lf Y2FyZF9kZXRlY3Qoc3RydWN0IHdvcmtfc3RydWN0DQo+ICp3b3JrKQ0KPiANCj4gIHN0YXRpYyB2 b2lkIHJ0c3hfcGNpX3Byb2Nlc3Nfb2NwKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KPiAgew0KPiAt CWlmIChwY3ItPm9wcy0+cHJvY2Vzc19vY3ApDQo+ICsJaWYgKHBjci0+b3BzLT5wcm9jZXNzX29j cCkgew0KPiAgCQlwY3ItPm9wcy0+cHJvY2Vzc19vY3AocGNyKTsNCj4gKwl9IGVsc2Ugew0KPiAr CQlpZiAoIXBjci0+b3B0aW9uLm9jcF9lbikNCj4gKwkJCXJldHVybjsNCj4gKwkJcnRzeF9wY2lf Z2V0X29jcHN0YXQocGNyLCAmcGNyLT5vY3Bfc3RhdCk7DQo+ICsJCWlmIChwY3ItPm9jcF9zdGF0 ICYgKFNEX09DX05PVyB8IFNEX09DX0VWRVIpKSB7DQo+ICsJCQlydHN4X3BjaV9jYXJkX3Bvd2Vy X29mZihwY3IsIFJUU1hfU0RfQ0FSRCk7DQo+ICsJCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIENBUkRfT0UsIFNEX09VVFBVVF9FTiwgMCk7DQo+ICsJCQlydHN4X3BjaV9jbGVhcl9vY3Bz dGF0KHBjcik7DQo+ICsJCQlwY3ItPm9jcF9zdGF0ID0gMDsNCj4gKwkJfQ0KPiArCX0NCj4gIH0N Cj4gDQo+ICBzdGF0aWMgaW50IHJ0c3hfcGNpX3Byb2Nlc3Nfb2NwX2ludGVycnVwdChzdHJ1Y3Qg cnRzeF9wY3IgKnBjcikNCj4gQEAgLTEwMzksNyArMTA1Myw3IEBAIHN0YXRpYyBpcnFyZXR1cm5f dCBydHN4X3BjaV9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiAgCQl9DQo+ICAJfQ0KPiAN Cj4gLQlpZiAocGNyLT5jYXJkX2luc2VydGVkIHx8IHBjci0+Y2FyZF9yZW1vdmVkKQ0KPiArCWlm ICgocGNyLT5jYXJkX2luc2VydGVkIHx8IHBjci0+Y2FyZF9yZW1vdmVkKSAmJiAhKGludF9yZWcg JiBTRF9PQ19JTlQpKQ0KPiAgCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnBjci0+Y2FyZGRldF93 b3JrLA0KPiAgCQkJCW1zZWNzX3RvX2ppZmZpZXMoMjAwKSk7DQo+IA0KPiBAQCAtMTE0NCwxMCAr MTE1OCwxMiBAQCB2b2lkIHJ0c3hfcGNpX2VuYWJsZV9vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3Ip DQo+ICB7DQo+ICAJdTggdmFsID0gU0RfT0NQX0lOVF9FTiB8IFNEX0RFVEVDVF9FTjsNCj4gDQo+ IC0JaWYgKHBjci0+b3BzLT5lbmFibGVfb2NwKQ0KPiArCWlmIChwY3ItPm9wcy0+ZW5hYmxlX29j cCkgew0KPiAgCQlwY3ItPm9wcy0+ZW5hYmxlX29jcChwY3IpOw0KPiAtCWVsc2UNCj4gKwl9IGVs c2Ugew0KPiArCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEZQRENUTCwgT0NfUE9XRVJf RE9XTiwgMCk7DQo+ICAJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwg MHhGRiwgdmFsKTsNCj4gKwl9DQo+IA0KPiAgfQ0KPiANCj4gQEAgLTExNTUsMTAgKzExNzEsMTMg QEAgdm9pZCBydHN4X3BjaV9kaXNhYmxlX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gIHsN Cj4gIAl1OCBtYXNrID0gU0RfT0NQX0lOVF9FTiB8IFNEX0RFVEVDVF9FTjsNCj4gDQo+IC0JaWYg KHBjci0+b3BzLT5kaXNhYmxlX29jcCkNCj4gKwlpZiAocGNyLT5vcHMtPmRpc2FibGVfb2NwKSB7 DQo+ICAJCXBjci0+b3BzLT5kaXNhYmxlX29jcChwY3IpOw0KPiAtCWVsc2UNCj4gKwl9IGVsc2Ug ew0KPiAgCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BDVEwsIG1hc2ssIDAp Ow0KPiArCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEZQRENUTCwgT0NfUE9XRVJfRE9X TiwNCj4gKwkJCQlPQ19QT1dFUl9ET1dOKTsNCj4gKwl9DQo+ICB9DQo+IA0KPiAgdm9pZCBydHN4 X3BjaV9pbml0X29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4gQEAgLTExNjksNyArMTE4OCw3 IEBAIHZvaWQgcnRzeF9wY2lfaW5pdF9vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQo+ICAJCXN0 cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJihwY3ItPm9wdGlvbik7DQo+IA0KPiAgCQlp ZiAob3B0aW9uLT5vY3BfZW4pIHsNCj4gLQkJCXU4IHZhbCA9IG9wdGlvbi0+c2RfNDAwbUFfb2Nw X3RoZDsNCj4gKwkJCXU4IHZhbCA9IG9wdGlvbi0+c2RfODAwbUFfb2NwX3RoZDsNCj4gDQo+ICAJ CQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEZQRENUTCwgT0NfUE9XRVJfRE9XTiwgMCk7 DQo+ICAJCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BQQVJBMSwNCj4gQEAg LTEyMDQsNiArMTIyMyw3IEBAIHZvaWQgcnRzeF9wY2lfY2xlYXJfb2Nwc3RhdChzdHJ1Y3QgcnRz eF9wY3IgKnBjcikNCj4gIAkJdTggdmFsID0gU0RfT0NQX0lOVF9DTFIgfCBTRF9PQ19DTFI7DQo+ IA0KPiAgCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BDVEwsIG1hc2ssIHZh bCk7DQo+ICsJCXVkZWxheSgxMDApOw0KPiAgCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJFR19PQ1BDVEwsIG1hc2ssIDApOw0KPiAgCX0NCj4gIH0NCj4gQEAgLTEzMTMsNiArMTMzMyw4 IEBAIHN0YXRpYyBpbnQgcnRzeF9wY2lfaW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCj4g IAkJYnJlYWs7DQo+ICAJfQ0KPiANCj4gKwlydHN4X3BjaV9pbml0X29jcChwY3IpOw0KPiArDQo+ ICAJLyogRW5hYmxlIGNsa19yZXF1ZXN0X24gdG8gZW5hYmxlIGNsb2NrIHBvd2VyIG1hbmFnZW1l bnQgKi8NCj4gIAlydHN4X3BjaV93cml0ZV9jb25maWdfYnl0ZShwY3IsIHBjci0+cGNpZV9jYXAg KyBQQ0lfRVhQX0xOS0NUTCArIDEsIDEpOw0KPiAgCS8qIEVudGVyIEwxIHdoZW4gaG9zdCB0eCBp ZGxlICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5o DQo+IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuaA0KPiBpbmRleCA2ZWExNjU1 ZGIwYmIuLjMwMGZjMzFkOGU2NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9taXNjL2NhcmRyZWFk ZXIvcnRzeF9wY3IuaA0KPiArKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5o DQo+IEBAIC00Niw2ICs0NiwxMSBAQA0KPiANCj4gICNkZWZpbmUgU1NDX0NMT0NLX1NUQUJMRV9X QUlUCTEzMA0KPiANCj4gKyNkZWZpbmUgUlRTNTI0QV9PQ1BfVEhEXzgwMAkweDA0DQo+ICsjZGVm aW5lIFJUUzUyNUFfT0NQX1RIRF84MDAJMHgwNQ0KPiArI2RlZmluZSBSVFM1MjJBX09DUF9USERf ODAwCTB4MDYNCj4gKw0KPiArDQo+ICBpbnQgX19ydHN4X3BjaV93cml0ZV9waHlfcmVnaXN0ZXIo c3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4IGFkZHIsIHUxNiB2YWwpOw0KPiAgaW50IF9fcnRzeF9w Y2lfcmVhZF9waHlfcmVnaXN0ZXIoc3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4IGFkZHIsIHUxNiAq dmFsKTsNCj4gDQo+IC0tDQo+IDIuMTcuMQ0KDQo=