From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 4/4] drm/i915/guc: kill the GuC client Date: Thu, 14 Nov 2019 16:22:50 -0800 Message-ID: References: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> <20191106222550.20752-5-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3ACEB6F38F for ; Fri, 15 Nov 2019 00:22:51 +0000 (UTC) In-Reply-To: <20191106222550.20752-5-daniele.ceraolospurio@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTEvNi8yMDE5IDE0OjI1LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IFdlIG5v dyBvbmx5IHVzZSAxIGNsaWVudCB3aXRob3V0IGFueSBwbGFuIHRvIGFkZCBtb3JlLiBUaGUgY2xp ZW50IGlzCj4gYWxzbyBvbmx5IGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFdRIGFuZCB0 aGUgcHJvY2VzcyBkZXNjLCBzbyB3ZQo+IGNhbiBqdXN0IG1vdmUgdGhvc2UgaW4gdGhlIGludGVs X2d1YyBzdHJ1Y3R1cmUgYW5kIGFsd2F5cyB1c2Ugc3RhZ2VfaWQKPiAwLgo+Cj4gU2lnbmVkLW9m Zi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVs LmNvbT4KPiBDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ Cj4gQ2M6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gQ2M6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAgICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgICAgICAgfCAgIDggKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmggICB8ICAgMSAtCj4gICAuLi4v Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgfCAyNzIgKysrKystLS0t LS0tLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmggfCAgNDUgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICAgICAgfCAgMTEgLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAyNTYg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBpbmRl eCBmMDNlMDAwMDUxYzEuLmQyZDg4ZDBiYzlkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmVzZXQuYwo+IEBAIC0yMSw2ICsyMSw3IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfcmVz ZXQuaCIKPiAgIAo+ICAgI2luY2x1ZGUgInVjL2ludGVsX2d1Yy5oIgo+ICsjaW5jbHVkZSAidWMv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiAgIAo+ICAgI2RlZmluZSBSRVNFVF9NQVhfUkVUUklF UyAzCj4gICAKPiBAQCAtMTA3MCw2ICsxMDcxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaW50ZWxf Z3RfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIGludCBp bnRlbF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBj aGFyICptc2cpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2d0ICpndCA9IGVuZ2luZS0+Z3Q7Cj4g Kwlib29sIHVzZXNfZ3VjID0gaW50ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUoZW5n aW5lKTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJR0VNX1RSQUNFKCIlcyBmbGFncz0lbHhcbiIs IGVuZ2luZS0+bmFtZSwgZ3QtPnJlc2V0LmZsYWdzKTsKPiBAQCAtMTA4NSwxNCArMTA4NywxNCBA QCBpbnQgaW50ZWxfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwg Y29uc3QgY2hhciAqbXNnKQo+ICAgCQkJICAgIlJlc2V0dGluZyAlcyBmb3IgJXNcbiIsIGVuZ2lu ZS0+bmFtZSwgbXNnKTsKPiAgIAlhdG9taWNfaW5jKCZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvci5y ZXNldF9lbmdpbmVfY291bnRbZW5naW5lLT51YWJpX2NsYXNzXSk7Cj4gICAKPiAtCWlmICghZW5n aW5lLT5ndC0+dWMuZ3VjLmV4ZWNidWZfY2xpZW50KQo+ICsJaWYgKCF1c2VzX2d1YykKPiAgIAkJ cmV0ID0gaW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7Cj4gICAJZWxzZQo+ICAgCQlyZXQg PSBpbnRlbF9ndWNfcmVzZXRfZW5naW5lKCZlbmdpbmUtPmd0LT51Yy5ndWMsIGVuZ2luZSk7Cj4g ICAJaWYgKHJldCkgewo+ICAgCQkvKiBJZiB3ZSBmYWlsIGhlcmUsIHdlIGV4cGVjdCB0byBmYWxs YmFjayB0byBhIGdsb2JhbCByZXNldCAqLwo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCIlc0ZhaWxl ZCB0byByZXNldCAlcywgcmV0PSVkXG4iLAo+IC0JCQkJIGVuZ2luZS0+Z3QtPnVjLmd1Yy5leGVj YnVmX2NsaWVudCA/ICJHdUMgIiA6ICIiLAo+ICsJCQkJIHVzZXNfZ3VjID8gIkd1QyAiIDogIiIs Cj4gICAJCQkJIGVuZ2luZS0+bmFtZSwgcmV0KTsKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4gaW5kZXggYjJkMTc2NmU2ODlhLi5j ZDA5YzkxMmUzNjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+ IEBAIC00Niw5ICs0NiwxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgIAo+ICAgCXN0cnVjdCBp OTE1X3ZtYSAqc3RhZ2VfZGVzY19wb29sOwo+ICAgCXZvaWQgKnN0YWdlX2Rlc2NfcG9vbF92YWRk cjsKPiAtCXN0cnVjdCBpZGEgc3RhZ2VfaWRzOwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqZXhlY2J1Zl9jbGllbnQ7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKndvcmtxdWV1ZTsKPiAr CXZvaWQgKndvcmtxdWV1ZV92YWRkcjsKPiArCXNwaW5sb2NrX3Qgd3FfbG9jazsKPiArCj4gKwlz dHJ1Y3QgaTkxNV92bWEgKnByb2NfZGVzYzsKPiArCXZvaWQgKnByb2NfZGVzY192YWRkcjsKPiAg IAo+ICAgCS8qIENvbnRyb2wgcGFyYW1zIGZvciBmdyBpbml0aWFsaXphdGlvbiAqLwo+ICAgCXUz MiBwYXJhbXNbR1VDX0NUTF9NQVhfRFdPUkRTXTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19md2lmLmgKPiBpbmRleCAxZThlNGFmN2Q5Y2EuLmE2YjczM2MxNDZjOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAo+IEBA IC0zMSw3ICszMSw2IEBACj4gICAKPiAgICNkZWZpbmUgR1VDX0RPT1JCRUxMX0lOVkFMSUQJCTI1 Ngo+ICAgCj4gLSNkZWZpbmUgR1VDX1BEX1NJWkUJCQkoUEFHRV9TSVpFKQo+ICAgI2RlZmluZSBH VUNfV1FfU0laRQkJCShQQUdFX1NJWkUgKiAyKQo+ICAgCj4gICAvKiBXb3JrIHF1ZXVlIGl0ZW0g aGVhZGVyIGRlZmluaXRpb25zICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMDA4OGMzNDE3NjQxLi43MTc4ODU4OWY5 ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19z dWJtaXNzaW9uLmMKPiBAQCAtMjcsMjQgKzI3LDEzIEBACj4gICAgKiBjb2RlKSBtYXRjaGVzIHRo ZSBvbGQgc3VibWlzc2lvbiBtb2RlbCBhbmQgd2lsbCBiZSB1cGRhdGVkIGFzIHBhcnQgb2YgdGhl Cj4gICAgKiB1cGdyYWRlIHRvIHRoZSBuZXcgZmxvdy4KPiAgICAqCj4gLSAqIEd1QyBjbGllbnQ6 Cj4gLSAqIEEgaW50ZWxfZ3VjX2NsaWVudCByZWZlcnMgdG8gYSBzdWJtaXNzaW9uIHBhdGggdGhy b3VnaCBHdUMuIEN1cnJlbnRseSwgdGhlcmUKPiAtICogaXMgb25seSBvbmUgY2xpZW50LCB3aGlj aCBpcyBjaGFyZ2VkIHdpdGggYWxsIHN1Ym1pc3Npb25zIHRvIHRoZSBHdUMuIFRoaXMKPiAtICog c3RydWN0IGlzIHRoZSBvd25lciBvZiBhIHByb2Nlc3MgZGVzY3JpcHRvciBhbmQgYSB3b3JrcXVl dWUgKGJvdGggb2YgdGhlbQo+IC0gKiBpbnNpZGUgYSBzaW5nbGUgZ2VtIG9iamVjdCB0aGF0IGNv bnRhaW5zIGFsbCByZXF1aXJlZCBwYWdlcyBmb3IgdGhlc2UKPiAtICogZWxlbWVudHMpLgo+IC0g Kgo+ICAgICogR3VDIHN0YWdlIGRlc2NyaXB0b3I6Cj4gICAgKiBEdXJpbmcgaW5pdGlhbGl6YXRp b24sIHRoZSBkcml2ZXIgYWxsb2NhdGVzIGEgc3RhdGljIHBvb2wgb2YgMTAyNCBzdWNoCj4gLSAq IGRlc2NyaXB0b3JzLCBhbmQgc2hhcmVzIHRoZW0gd2l0aCB0aGUgR3VDLgo+IC0gKiBDdXJyZW50 bHksIHRoZXJlIGV4aXN0cyBhIDE6MSBtYXBwaW5nIGJldHdlZW4gYSBpbnRlbF9ndWNfY2xpZW50 IGFuZCBhCj4gLSAqIGd1Y19zdGFnZV9kZXNjICh2aWEgdGhlIGNsaWVudCdzIHN0YWdlX2lkKSwg c28gZWZmZWN0aXZlbHkgb25seSBvbmUKPiAtICogZ2V0cyB1c2VkLiBUaGlzIHN0YWdlIGRlc2Ny aXB0b3IgbGV0cyB0aGUgR3VDIGtub3cgYWJvdXQgdGhlIHdvcmtxdWV1ZSBhbmQKPiArICogZGVz Y3JpcHRvcnMsIGFuZCBzaGFyZXMgdGhlbSB3aXRoIHRoZSBHdUMuIEN1cnJlbnRseSwgd2Ugb25s eSB1c2Ugb25lCj4gKyAqIGRlc2NyaXB0b3IuIFRoaXMgc3RhZ2UgZGVzY3JpcHRvciBsZXRzIHRo ZSBHdUMga25vdyBhYm91dCB0aGUgd29ya3F1ZXVlIGFuZAo+ICAgICogcHJvY2VzcyBkZXNjcmlw dG9yLiBUaGVvcmV0aWNhbGx5LCBpdCBhbHNvIGxldHMgdGhlIEd1QyBrbm93IGFib3V0IG91ciBI Vwo+ICAgICogY29udGV4dHMgKGNvbnRleHQgSUQsIGV0Yy4uLiksIGJ1dCB3ZSBhY3R1YWxseSBl bXBsb3kgYSBraW5kIG9mIHN1Ym1pc3Npb24KPiAtICogd2hlcmUgdGhlIEd1QyB1c2VzIHRoZSBM UkNBIHNlbnQgdmlhIHRoZSB3b3JrIGl0ZW0gaW5zdGVhZCAodGhlIHNpbmdsZQo+IC0gKiBndWNf c3RhZ2VfZGVzYyBhc3NvY2lhdGVkIHRvIGV4ZWNidWYgY2xpZW50IGNvbnRhaW5zIGluZm9ybWF0 aW9uIGFib3V0IHRoZQo+IC0gKiBkZWZhdWx0IGtlcm5lbCBjb250ZXh0IG9ubHksIGJ1dCB0aGlz IGlzIGVzc2VudGlhbGx5IHVudXNlZCkuIFRoaXMgaXMgY2FsbGVkCj4gKyAqIHdoZXJlIHRoZSBH dUMgdXNlcyB0aGUgTFJDQSBzZW50IHZpYSB0aGUgd29yayBpdGVtIGluc3RlYWQuIFRoaXMgaXMg Y2FsbGVkCj4gICAgKiBhICJwcm94eSIgc3VibWlzc2lvbi4KPiAgICAqCj4gICAgKiBUaGUgU2Ny YXRjaCByZWdpc3RlcnM6Cj4gQEAgLTcxLDMzICs2MCw0NSBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCj4gICAJcmV0 dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwgbm9kZSk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3JpdHkoc3RydWN0IGludGVsX2d1Y19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqX19nZXRfc3Rh Z2VfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpZCkKPiAgIHsKPiAtCXJldHVybiAo Y2xpZW50LT5wcmlvcml0eSA9PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9ISUdIIHx8Cj4gLQkJ Y2xpZW50LT5wcmlvcml0eSA9PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0hJR0gpOwo+ICsJc3RydWN0 IGd1Y19zdGFnZV9kZXNjICpiYXNlID0gZ3VjLT5zdGFnZV9kZXNjX3Bvb2xfdmFkZHI7Cj4gKwo+ ICsJcmV0dXJuICZiYXNlW2lkXTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGd1Y19zdGFn ZV9kZXNjICpfX2dldF9zdGFnZV9kZXNjKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyBpbnQgZ3VjX3dvcmtxdWV1ZV9jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICAgewo+IC0Jc3RydWN0IGd1Y19zdGFnZV9kZXNjICpiYXNlID0gY2xpZW50LT5ndWMtPnN0 YWdlX2Rlc2NfcG9vbF92YWRkcjsKPiAtCj4gLQlyZXR1cm4gJmJhc2VbY2xpZW50LT5zdGFnZV9p ZF07Cj4gKwlyZXR1cm4gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1YywgR1VDX1dR X1NJWkUsICZndWMtPndvcmtxdWV1ZSwKPiArCQkJCQkgICAgICAmZ3VjLT53b3JrcXVldWVfdmFk ZHIpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2Mg Kgo+IC1fX2dldF9wcm9jZXNzX2Rlc2Moc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgZ3VjX3dvcmtxdWV1ZV9kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPiAgIHsKPiAtCXJldHVybiBjbGllbnQtPnZhZGRyOwo+ICsJaTkxNV92bWFfdW5waW5fYW5k X3JlbGVhc2UoJmd1Yy0+d29ya3F1ZXVlLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Cj4gICB9Cj4g ICAKPiAgIC8qCj4gICAgKiBJbml0aWFsaXNlIHRoZSBwcm9jZXNzIGRlc2NyaXB0b3Igc2hhcmVk IHdpdGggdGhlIEd1QyBmaXJtd2FyZS4KPiAgICAqLwo+IC1zdGF0aWMgdm9pZCBndWNfcHJvY19k ZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIGludCBn dWNfcHJvY19kZXNjX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gK3sKPiArCWNvbnN0 IHUzMiBzaXplID0gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2MpKTsK PiArCj4gKwlyZXR1cm4gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1Yywgc2l6ZSwg Jmd1Yy0+cHJvY19kZXNjLAo+ICsJCQkJCSAgICAgICZndWMtPnByb2NfZGVzY192YWRkcik7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGd1Y19wcm9jX2Rlc2NfZGVzdHJveShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gK3sKPiArCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPnByb2Nf ZGVzYywgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBndWNf cHJvY19kZXNjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCXN0cnVjdCBn dWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+ICAgCj4gLQlkZXNjID0gbWVtc2V0KF9fZ2V0X3Byb2Nl c3NfZGVzYyhjbGllbnQpLCAwLCBzaXplb2YoKmRlc2MpKTsKPiArCWRlc2MgPSBtZW1zZXQoZ3Vj LT5wcm9jX2Rlc2NfdmFkZHIsIDAsIHNpemVvZigqZGVzYykpOwo+ICAgCj4gICAJLyoKPiAgIAkg KiBYWFg6IHBEb29yYmVsbCBhbmQgV1FWQmFzZUFkZHJlc3MgYXJlIHBvaW50ZXJzIGluIHByb2Nl c3MgYWRkcmVzcwo+IEBAIC0xMDgsMzkgKzEwOSwyNyBAQCBzdGF0aWMgdm9pZCBndWNfcHJvY19k ZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgIAlkZXNjLT53cV9i YXNlX2FkZHIgPSAwOwo+ICAgCWRlc2MtPmRiX2Jhc2VfYWRkciA9IDA7Cj4gICAKPiAtCWRlc2Mt PnN0YWdlX2lkID0gY2xpZW50LT5zdGFnZV9pZDsKPiAgIAlkZXNjLT53cV9zaXplX2J5dGVzID0g R1VDX1dRX1NJWkU7Cj4gICAJZGVzYy0+d3Ffc3RhdHVzID0gV1FfU1RBVFVTX0FDVElWRTsKPiAt CWRlc2MtPnByaW9yaXR5ID0gY2xpZW50LT5wcmlvcml0eTsKPiArCWRlc2MtPnByaW9yaXR5ID0g R1VDX0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lk IGd1Y19wcm9jX2Rlc2NfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBndWNfcHJvY19kZXNjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAg ewo+IC0Jc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2MgKmRlc2M7Cj4gLQo+IC0JZGVzYyA9IF9fZ2V0 X3Byb2Nlc3NfZGVzYyhjbGllbnQpOwo+IC0JbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykp Owo+ICsJbWVtc2V0KGd1Yy0+cHJvY19kZXNjX3ZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IGd1Y19w cm9jZXNzX2Rlc2MpKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBndWNfc3RhZ2VfZGVzY19w b29sX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICB7Cj4gICAJdTMyIHNpemUgPSBQ QUdFX0FMSUdOKHNpemVvZihzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MpICoKPiAgIAkJCSAgICAgIEdV Q19NQVhfU1RBR0VfREVTQ1JJUFRPUlMpOwo+IC0JaW50IHJldDsKPiAtCj4gLQlyZXQgPSBpbnRl bF9ndWNfYWxsb2NhdGVfYW5kX21hcF92bWEoZ3VjLCBzaXplLCAmZ3VjLT5zdGFnZV9kZXNjX3Bv b2wsCj4gLQkJCQkJICAgICAmZ3VjLT5zdGFnZV9kZXNjX3Bvb2xfdmFkZHIpOwo+IC0JaWYgKHJl dCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCWlkYV9pbml0KCZndWMtPnN0YWdlX2lkcyk7Cj4g ICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGludGVsX2d1Y19hbGxvY2F0ZV9hbmRfbWFwX3Zt YShndWMsIHNpemUsICZndWMtPnN0YWdlX2Rlc2NfcG9vbCwKPiArCQkJCQkgICAgICAmZ3VjLT5z dGFnZV9kZXNjX3Bvb2xfdmFkZHIpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBndWNfc3Rh Z2VfZGVzY19wb29sX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+IC0JaWRh X2Rlc3Ryb3koJmd1Yy0+c3RhZ2VfaWRzKTsKPiAgIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFz ZSgmZ3VjLT5zdGFnZV9kZXNjX3Bvb2wsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKPiAgIH0KPiAg IAo+IEBAIC0xNDgsNTggKzEzNyw0OSBAQCBzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19wb29s X2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgICogSW5pdGlhbGlzZS9jbGVhciB0 aGUgc3RhZ2UgZGVzY3JpcHRvciBzaGFyZWQgd2l0aCB0aGUgR3VDIGZpcm13YXJlLgo+ICAgICoK PiAgICAqIFRoaXMgZGVzY3JpcHRvciB0ZWxscyB0aGUgR3VDIHdoZXJlIChpbiBHR1RUIHNwYWNl KSB0byBmaW5kIHRoZSBpbXBvcnRhbnQKPiAtICogZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0aW5nIHRv IHRoaXMgY2xpZW50IChwcm9jZXNzIGRlc2NyaXB0b3IsIHdyaXRlIHF1ZXVlLAo+ICsgKiBkYXRh IHN0cnVjdHVyZXMgcmVsYXRlZCB0byB3b3JrIHN1Ym1pc3Npb24gKHByb2Nlc3MgZGVzY3JpcHRv ciwgd3JpdGUgcXVldWUsCj4gICAgKiBldGMpLgo+ICAgICovCj4gLXN0YXRpYyB2b2lkIGd1Y19z dGFnZV9kZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjbGllbnQtPmd1YzsKPiAgIAlzdHJ1Y3QgZ3VjX3N0 YWdlX2Rlc2MgKmRlc2M7Cj4gLQl1MzIgZ2Z4X2FkZHI7Cj4gICAKPiAtCWRlc2MgPSBfX2dldF9z dGFnZV9kZXNjKGNsaWVudCk7Cj4gKwkvKiB3ZSBvbmx5IHVzZSAxIHN0YWdlIGRlc2MsIHNvIGhh cmRjb2RlIGl0IHRvIDAgKi8KPiArCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGd1YywgMCk7Cj4g ICAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOwo+ICAgCj4gICAJZGVzYy0+YXR0cmli dXRlID0gR1VDX1NUQUdFX0RFU0NfQVRUUl9BQ1RJVkUgfAo+ICAgCQkJICBHVUNfU1RBR0VfREVT Q19BVFRSX0tFUk5FTDsKPiAtCWlmIChpc19oaWdoX3ByaW9yaXR5KGNsaWVudCkpCj4gLQkJZGVz Yy0+YXR0cmlidXRlIHw9IEdVQ19TVEFHRV9ERVNDX0FUVFJfUFJFRU1QVDsKPiAtCWRlc2MtPnN0 YWdlX2lkID0gY2xpZW50LT5zdGFnZV9pZDsKPiAtCWRlc2MtPnByaW9yaXR5ID0gY2xpZW50LT5w cmlvcml0eTsKPiAgIAo+IC0JLyoKPiAtCSAqIFRoZSBwcm9jZXNzIGRlc2NyaXB0b3IgYW5kIHdv cmtxdWV1ZSBhcmUgYWxsIHBhcnRzIG9mIHRoZSBjbGllbnQKPiAtCSAqIG9iamVjdCwgd2hpY2gg dGhlIEd1QyB3aWxsIHJlZmVyZW5jZSB2aWEgdGhlIEdHVFQKPiAtCSAqLwo+IC0JZ2Z4X2FkZHIg PSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBjbGllbnQtPnZtYSk7Cj4gLQlkZXNjLT5wcm9j ZXNzX2Rlc2MgPSBnZnhfYWRkcjsKPiAtCWRlc2MtPndxX2FkZHIgPSBnZnhfYWRkciArIEdVQ19Q RF9TSVpFOwo+IC0JZGVzYy0+d3Ffc2l6ZSA9IEdVQ19XUV9TSVpFOwo+ICsJZGVzYy0+c3RhZ2Vf aWQgPSAwOwo+ICsJZGVzYy0+cHJpb3JpdHkgPSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JN QUw7Cj4gICAKPiAtCWRlc2MtPmRlc2NfcHJpdmF0ZSA9IHB0cl90b191NjQoY2xpZW50KTsKPiAr CWRlc2MtPnByb2Nlc3NfZGVzYyA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+cHJv Y19kZXNjKTsKPiArCWRlc2MtPndxX2FkZHIgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBn dWMtPndvcmtxdWV1ZSk7Cj4gKwlkZXNjLT53cV9zaXplID0gR1VDX1dRX1NJWkU7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19maW5pKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPiAgIHsKPiAgIAlzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MgKmRlc2M7Cj4g ICAKPiAtCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGNsaWVudCk7Cj4gKwlkZXNjID0gX19nZXRf c3RhZ2VfZGVzYyhndWMsIDApOwo+ICAgCW1lbXNldChkZXNjLCAwLCBzaXplb2YoKmRlc2MpKTsK PiAgIH0KPiAgIAo+ICAgLyogQ29uc3RydWN0IGEgV29yayBJdGVtIGFuZCBhcHBlbmQgaXQgdG8g dGhlIEd1QydzIFdvcmsgUXVldWUgKi8KPiAtc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBwZW5k KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQsCj4gK3N0YXRpYyB2b2lkIGd1Y193cV9p dGVtX2FwcGVuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4gICAJCQkgICAgICAgdTMyIHRhcmdl dF9lbmdpbmUsIHUzMiBjb250ZXh0X2Rlc2MsCj4gICAJCQkgICAgICAgdTMyIHJpbmdfdGFpbCwg dTMyIGZlbmNlX2lkKQo+ICAgewo+ICAgCS8qIHdxaV9sZW4gaXMgaW4gRFdvcmRzLCBhbmQgZG9l cyBub3QgaW5jbHVkZSB0aGUgb25lLXdvcmQgaGVhZGVyICovCj4gICAJY29uc3Qgc2l6ZV90IHdx aV9zaXplID0gc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gICAJY29uc3QgdTMyIHdxaV9s ZW4gPSB3cWlfc2l6ZSAvIHNpemVvZih1MzIpIC0gMTsKPiAtCXN0cnVjdCBndWNfcHJvY2Vzc19k ZXNjICpkZXNjID0gX19nZXRfcHJvY2Vzc19kZXNjKGNsaWVudCk7Cj4gKwlzdHJ1Y3QgZ3VjX3By b2Nlc3NfZGVzYyAqZGVzYyA9IGd1Yy0+cHJvY19kZXNjX3ZhZGRyOwo+ICAgCXN0cnVjdCBndWNf d3FfaXRlbSAqd3FpOwo+ICAgCXUzMiB3cV9vZmY7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmNsaWVudC0+d3FfbG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZndWMtPndxX2xv Y2spOwo+ICAgCj4gICAJLyogRm9yIG5vdyB3b3JrcXVldWUgaXRlbSBpcyA0IERXczsgd29ya3F1 ZXVlIGJ1ZmZlciBpcyAyIHBhZ2VzLiBTbyB3ZQo+ICAgCSAqIHNob3VsZCBub3QgaGF2ZSB0aGUg Y2FzZSB3aGVyZSBzdHJ1Y3R1cmUgd3FpIGlzIGFjcm9zcyBwYWdlLCBuZWl0aGVyCj4gQEAgLTIy MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3RydWN0IGludGVs X2d1Y19jbGllbnQgKmNsaWVudCwKPiAgIAlHRU1fQlVHX09OKHdxX29mZiAmICh3cWlfc2l6ZSAt IDEpKTsKPiAgIAo+ICAgCS8qIFdRIHN0YXJ0cyBmcm9tIHRoZSBwYWdlIGFmdGVyIHByb2Nlc3Nf ZGVzYyAqLwpUaGlzIGNvbW1lbnQgaXMgbm93IGludmFsaWQuIFdpdGggdGhhdCBmaXhlZDoKUmV2 aWV3ZWQtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cgo+IC0J d3FpID0gY2xpZW50LT52YWRkciArIHdxX29mZiArIEdVQ19QRF9TSVpFOwo+ICsJd3FpID0gZ3Vj LT53b3JrcXVldWVfdmFkZHIgKyB3cV9vZmY7Cj4gICAKPiAgIAkvKiBOb3cgZmlsbCBpbiB0aGUg NC13b3JkIHdvcmsgcXVldWUgaXRlbSAqLwo+ICAgCXdxaS0+aGVhZGVyID0gV1FfVFlQRV9JTk9S REVSIHwKPiBAQCAtMjM4LDEyICsyMTgsMTEgQEAgc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBw ZW5kKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQsCj4gICAKPiAgIHN0YXRpYyB2b2lk IGd1Y19hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ ZXhlY2J1Zl9jbGllbnQ7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEt PmVuZ2luZTsKPiAgIAl1MzIgY3R4X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKHJxLT5od19jb250ZXh0 LT5scmNfZGVzYyk7Cj4gICAJdTMyIHJpbmdfdGFpbCA9IGludGVsX3Jpbmdfc2V0X3RhaWwocnEt PnJpbmcsIHJxLT50YWlsKSAvIHNpemVvZih1NjQpOwo+ICAgCj4gLQlndWNfd3FfaXRlbV9hcHBl bmQoY2xpZW50LCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCj4gKwlndWNfd3FfaXRlbV9hcHBl bmQoZ3VjLCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCj4gICAJCQkgICByaW5nX3RhaWwsIHJx LT5mZW5jZS5zZXFubyk7Cj4gICB9Cj4gICAKPiBAQCAtMjY3LDkgKzI0Niw4IEBAIHN0YXRpYyB2 b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkgICAg ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqKmVuZCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMgPSAmZW5naW5lLT5ndC0+dWMuZ3VjOwo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQg KmNsaWVudCA9IGd1Yy0+ZXhlY2J1Zl9jbGllbnQ7Cj4gICAKPiAtCXNwaW5fbG9jaygmY2xpZW50 LT53cV9sb2NrKTsKPiArCXNwaW5fbG9jaygmZ3VjLT53cV9sb2NrKTsKPiAgIAo+ICAgCWRvIHsK PiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSAqb3V0Kys7Cj4gQEAgLTI3OCw3ICsyNTYs NyBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIAkJZ3VjX2FkZF9yZXF1ZXN0KGd1YywgcnEpOwo+ICAgCX0gd2hpbGUgKG91dCAhPSBl bmQpOwo+ICAgCj4gLQlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKPiArCXNwaW5fdW5s b2NrKCZndWMtPndxX2xvY2spOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGludCBycV9w cmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+IEBAIC01MjksMTI1ICs1MDcsNiBA QCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgICAqIHBhdGggb2YgZ3VjX3N1Ym1pdCgpIGFib3ZlLgo+ICAgICovCj4gICAKPiAt LyoqCj4gLSAqIGd1Y19jbGllbnRfYWxsb2MoKSAtIEFsbG9jYXRlIGFuIGludGVsX2d1Y19jbGll bnQKPiAtICogQGd1YzoJdGhlIGludGVsX2d1YyBzdHJ1Y3R1cmUKPiAtICogQHByaW9yaXR5Oglm b3VyIGxldmVscyBwcmlvcml0eSBfQ1JJVElDQUwsIF9ISUdILCBfTk9STUFMIGFuZCBfTE9XCj4g LSAqCQlUaGUga2VybmVsIGNsaWVudCB0byByZXBsYWNlIEV4ZWNMaXN0IHN1Ym1pc3Npb24gaXMg Y3JlYXRlZCB3aXRoCj4gLSAqCQlOT1JNQUwgcHJpb3JpdHkuIFByaW9yaXR5IG9mIGEgY2xpZW50 IGZvciBzY2hlZHVsZXIgY2FuIGJlIEhJR0gsCj4gLSAqCQl3aGlsZSBhIHByZWVtcHRpb24gY29u dGV4dCBjYW4gdXNlIENSSVRJQ0FMLgo+IC0gKgo+IC0gKiBSZXR1cm46CUFuIGludGVsX2d1Y19j bGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MsIGVsc2UgTlVMTC4KPiAtICovCj4gLXN0YXRpYyBzdHJ1 Y3QgaW50ZWxfZ3VjX2NsaWVudCAqCj4gLWd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGludGVsX2d1 YyAqZ3VjLCB1MzIgcHJpb3JpdHkpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQ7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCXZvaWQgKnZhZGRyOwo+IC0JaW50 IHJldDsKPiAtCj4gLQljbGllbnQgPSBremFsbG9jKHNpemVvZigqY2xpZW50KSwgR0ZQX0tFUk5F TCk7Cj4gLQlpZiAoIWNsaWVudCkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCj4g LQljbGllbnQtPmd1YyA9IGd1YzsKPiAtCWNsaWVudC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKPiAt CXNwaW5fbG9ja19pbml0KCZjbGllbnQtPndxX2xvY2spOwo+IC0KPiAtCXJldCA9IGlkYV9zaW1w bGVfZ2V0KCZndWMtPnN0YWdlX2lkcywgMCwgR1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUywKPiAt CQkJICAgICBHRlBfS0VSTkVMKTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCWdvdG8gZXJyX2NsaWVu dDsKPiAtCj4gLQljbGllbnQtPnN0YWdlX2lkID0gcmV0Owo+IC0KPiAtCS8qIFRoZSBmaXJzdCBw YWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4gKi8K PiAtCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBHVUNfUERfU0laRSArIEdVQ19X UV9TSVpFKTsKPiAtCWlmIChJU19FUlIodm1hKSkgewo+IC0JCXJldCA9IFBUUl9FUlIodm1hKTsK PiAtCQlnb3RvIGVycl9pZDsKPiAtCX0KPiAtCj4gLQkvKiBXZSdsbCBrZWVwIGp1c3QgdGhlIGZp cnN0IChkb29yYmVsbC9wcm9jKSBwYWdlIHBlcm1hbmVudGx5IGttYXAnZC4gKi8KPiAtCWNsaWVu dC0+dm1hID0gdm1hOwo+IC0KPiAtCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1h LT5vYmosIEk5MTVfTUFQX1dCKTsKPiAtCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gLQkJcmV0ID0g UFRSX0VSUih2YWRkcik7Cj4gLQkJZ290byBlcnJfdm1hOwo+IC0JfQo+IC0JY2xpZW50LT52YWRk ciA9IHZhZGRyOwo+IC0KPiAtCURSTV9ERUJVR19EUklWRVIoIm5ldyBwcmlvcml0eSAldSBjbGll bnQgJXA6IHN0YWdlX2lkICV1XG4iLAo+IC0JCQkgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50LT5z dGFnZV9pZCk7Cj4gLQo+IC0JcmV0dXJuIGNsaWVudDsKPiAtCj4gLWVycl92bWE6Cj4gLQlpOTE1 X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY2xpZW50LT52bWEsIDApOwo+IC1lcnJfaWQ6Cj4gLQlp ZGFfc2ltcGxlX3JlbW92ZSgmZ3VjLT5zdGFnZV9pZHMsIGNsaWVudC0+c3RhZ2VfaWQpOwo+IC1l cnJfY2xpZW50Ogo+IC0Ja2ZyZWUoY2xpZW50KTsKPiAtCXJldHVybiBFUlJfUFRSKHJldCk7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRfZnJlZShzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQo+IC17Cj4gLQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY2xpZW50 LT52bWEsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKPiAtCWlkYV9zaW1wbGVfcmVtb3ZlKCZjbGll bnQtPmd1Yy0+c3RhZ2VfaWRzLCBjbGllbnQtPnN0YWdlX2lkKTsKPiAtCWtmcmVlKGNsaWVudCk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZ3VjX2NsaWVudHNfY3JlYXRlKHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKPiAtewo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudDsKPiAtCj4g LQlHRU1fQlVHX09OKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0KPiAtCWNsaWVudCA9IGd1Y19j bGllbnRfYWxsb2MoZ3VjLCBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JNQUwpOwo+IC0JaWYg KElTX0VSUihjbGllbnQpKSB7Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEd1QyBj bGllbnQgZm9yIHN1Ym1pc3Npb24hXG4iKTsKPiAtCQlyZXR1cm4gUFRSX0VSUihjbGllbnQpOwo+ IC0JfQo+IC0JZ3VjLT5leGVjYnVmX2NsaWVudCA9IGNsaWVudDsKPiAtCj4gLQlyZXR1cm4gMDsK PiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgZ3VjX2NsaWVudHNfZGVzdHJveShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQ7Cj4gLQo+ IC0JY2xpZW50ID0gZmV0Y2hfYW5kX3plcm8oJmd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0JaWYg KGNsaWVudCkKPiAtCQlndWNfY2xpZW50X2ZyZWUoY2xpZW50KTsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQgX19ndWNfY2xpZW50X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50 KQo+IC17Cj4gLQlndWNfcHJvY19kZXNjX2luaXQoY2xpZW50KTsKPiAtCWd1Y19zdGFnZV9kZXNj X2luaXQoY2xpZW50KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgX19ndWNfY2xpZW50X2Rpc2Fi bGUoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAtewo+IC0JZ3VjX3N0YWdlX2Rl c2NfZmluaShjbGllbnQpOwo+IC0JZ3VjX3Byb2NfZGVzY19maW5pKGNsaWVudCk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4gLXsKPiAtCV9fZ3VjX2NsaWVudF9lbmFibGUoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gLX0K PiAtCj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rpc2FibGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+IC17Cj4gLQlpZiAoZ3VjLT5leGVjYnVmX2NsaWVudCkKPiAtCQlfX2d1Y19jbGllbnRf ZGlzYWJsZShndWMtPmV4ZWNidWZfY2xpZW50KTsKPiAtfQo+IC0KPiAgIC8qCj4gICAgKiBTZXQg dXAgdGhlIG1lbW9yeSByZXNvdXJjZXMgdG8gYmUgc2hhcmVkIHdpdGggdGhlIEd1QyAodmlhIHRo ZSBHR1RUKQo+ICAgICogYXQgZmlybXdhcmUgbG9hZGluZyB0aW1lLgo+IEBAIC02NjgsMTIgKzUy NywyMCBAQCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCj4gICAJICovCj4gICAJR0VNX0JVR19PTighZ3VjLT5zdGFnZV9kZXNjX3Bvb2wpOwo+ICAg Cj4gLQlyZXQgPSBndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKPiArCXJldCA9IGd1Y193b3JrcXVl dWVfY3JlYXRlKGd1Yyk7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnJfcG9vbDsKPiAgIAo+ ICsJcmV0ID0gZ3VjX3Byb2NfZGVzY19jcmVhdGUoZ3VjKTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBlcnJfd29ya3F1ZXVlOwo+ICsKPiArCXNwaW5fbG9ja19pbml0KCZndWMtPndxX2xvY2spOwo+ ICsKPiAgIAlyZXR1cm4gMDsKPiAgIAo+ICtlcnJfd29ya3F1ZXVlOgo+ICsJZ3VjX3dvcmtxdWV1 ZV9kZXN0cm95KGd1Yyk7Cj4gICBlcnJfcG9vbDoKPiAgIAlndWNfc3RhZ2VfZGVzY19wb29sX2Rl c3Ryb3koZ3VjKTsKPiAgIAlyZXR1cm4gcmV0Owo+IEBAIC02ODEsMTAgKzU0OCwxMSBAQCBpbnQg aW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAKPiAg IHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g ICB7Cj4gLQlndWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Cj4gLQo+IC0JaWYgKGd1Yy0+c3RhZ2Vf ZGVzY19wb29sKQo+ICsJaWYgKGd1Yy0+c3RhZ2VfZGVzY19wb29sKSB7Cj4gKwkJZ3VjX3Byb2Nf ZGVzY19kZXN0cm95KGd1Yyk7Cj4gKwkJZ3VjX3dvcmtxdWV1ZV9kZXN0cm95KGd1Yyk7Cj4gICAJ CWd1Y19zdGFnZV9kZXNjX3Bvb2xfZGVzdHJveShndWMpOwo+ICsJfQo+ICAgfQo+ICAgCj4gICBz dGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4g QEAgLTgxNiw5ICs2ODQsOCBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJCSAgICAgc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSkg Kgo+ICAgCQkgICAgIEk5MTVfTlVNX0VOR0lORVMgPiBHVUNfV1FfU0laRSk7Cj4gICAKPiAtCUdF TV9CVUdfT04oIWd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0KPiAtCWd1Y19jbGllbnRzX2VuYWJs ZShndWMpOwo+ICsJZ3VjX3Byb2NfZGVzY19pbml0KGd1Yyk7Cj4gKwlndWNfc3RhZ2VfZGVzY19p bml0KGd1Yyk7Cj4gICAKPiAgIAkvKiBUYWtlIG92ZXIgZnJvbSBtYW51YWwgY29udHJvbCBvZiBF TFNQIChleGVjbGlzdHMpICovCj4gICAJZ3VjX2ludGVycnVwdHNfY2FwdHVyZShndCk7Cj4gQEAg LTgzNiw3ICs3MDMsOSBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAgCUdFTV9CVUdfT04oZ3QtPmF3YWtlKTsgLyogR1Qgc2hvdWxk IGJlIHBhcmtlZCBmaXJzdCAqLwo+ICAgCj4gICAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShndCk7 Cj4gLQlndWNfY2xpZW50c19kaXNhYmxlKGd1Yyk7Cj4gKwo+ICsJZ3VjX3N0YWdlX2Rlc2NfZmlu aShndWMpOwo+ICsJZ3VjX3Byb2NfZGVzY19maW5pKGd1Yyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBib29sIF9fZ3VjX3N1Ym1pc3Npb25fc3VwcG9ydChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g QEAgLTg1NCwzICs3MjMsOCBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXRfZWFybHko c3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCWd1Yy0+c3VibWlzc2lvbl9zdXBwb3J0 ZWQgPSBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnQoZ3VjKTsKPiAgIH0KPiArCj4gK2Jvb2wgaW50 ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlyZXR1cm4gZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNz aW9uID09IGd1Y19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oCj4gaW5kZXggZTJkZWI0 ZTZmNDJhLi5lNDAyYTI5MzI1OTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgKPiBAQCAtNiw0OCArNiwxMCBAQAo+ICAgI2lm bmRlZiBfSU5URUxfR1VDX1NVQk1JU1NJT05fSF8KPiAgICNkZWZpbmUgX0lOVEVMX0dVQ19TVUJN SVNTSU9OX0hfCj4gICAKPiAtI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgo+ICAgCj4gLSNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfdHlwZXMu aCIKPiAtCj4gLSNpbmNsdWRlICJpOTE1X2dlbS5oIgo+IC0jaW5jbHVkZSAiaTkxNV9zZWxmdGVz dC5oIgo+IC0KPiAtc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gLQo+IC0vKgo+IC0gKiBUaGlz IHN0cnVjdHVyZSBwcmltYXJpbHkgZGVzY3JpYmVzIHRoZSBHRU0gb2JqZWN0IHNoYXJlZCB3aXRo IHRoZSBHdUMuCj4gLSAqIFRoZSBzcGVjcyBzb21ldGltZXMgcmVmZXIgdG8gdGhpcyBvYmplY3Qg YXMgYSAiR3VDIGNvbnRleHQiLCBidXQgd2UgdXNlCj4gLSAqIHRoZSB0ZXJtICJjbGllbnQiIHRv IGF2b2lkIGNvbmZ1c2lvbiB3aXRoIGhhcmR3YXJlIGNvbnRleHRzLiBUaGlzCj4gLSAqIEdFTSBv YmplY3QgaXMgaGVsZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBvdXIgaW50ZXJhY3Rpb24g d2l0aAo+IC0gKiB0aGUgR3VDLCBiZWluZyBhbGxvY2F0ZWQgYmVmb3JlIHRoZSBHdUMgaXMgbG9h ZGVkIHdpdGggaXRzIGZpcm13YXJlLgo+IC0gKiBCZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIHVw ZGF0ZSB0aGUgYWRkcmVzcyB1c2VkIGJ5IHRoZSBHdUMgYWZ0ZXIKPiAtICogaW5pdGlhbGlzYXRp b24sIHRoZSBzaGFyZWQgb2JqZWN0IG11c3Qgc3RheSBwaW5uZWQgaW50byB0aGUgR0dUVCBhcwo+ IC0gKiBsb25nIGFzIHRoZSBHdUMgaXMgaW4gdXNlLiBXZSBhbHNvIGtlZXAgdGhlIGZpcnN0IHBh Z2UgKG9ubHkpIG1hcHBlZAo+IC0gKiBpbnRvIGtlcm5lbCBhZGRyZXNzIHNwYWNlLCBhcyBpdCBp bmNsdWRlcyBzaGFyZWQgZGF0YSB0aGF0IG11c3QgYmUKPiAtICogdXBkYXRlZCBvbiBldmVyeSBy ZXF1ZXN0IHN1Ym1pc3Npb24uCj4gLSAqCj4gLSAqIFRoZSBzaW5nbGUgR0VNIG9iamVjdCBkZXNj cmliZWQgaGVyZSBpcyBhY3R1YWxseSBtYWRlIHVwIG9mIHNldmVyYWwKPiAtICogc2VwYXJhdGUg YXJlYXMsIGFzIGZhciBhcyB0aGUgR3VDIGlzIGNvbmNlcm5lZC4gVGhlIGZpcnN0IHBhZ2UgKGtl cHQKPiAtICoga21hcCdkKSBpbmNsdWRlcyB0aGUgInByb2Nlc3MgZGVzY3JpcHRvciIgd2hpY2gg aG9sZHMgc2VxdWVuY2UgZGF0YSBmb3IKPiAtICogdGhlIGRvb3JiZWxsLCBhbmQgb25lIGNhY2hl bGluZSB3aGljaCBhY3R1YWxseSAqaXMqIHRoZSBkb29yYmVsbDsgYQo+IC0gKiB3cml0ZSB0byB0 aGlzIHdpbGwgInJpbmcgdGhlIGRvb3JiZWxsIiAoaS5lLiBzZW5kIGFuIGludGVycnVwdCB0byB0 aGUKPiAtICogR3VDKS4gVGhlIHN1YnNlcXVlbnQgIHBhZ2VzIG9mIHRoZSBjbGllbnQgb2JqZWN0 IGNvbnN0aXR1dGUgdGhlIHdvcmsKPiAtICogcXVldWUgKGEgY2lyY3VsYXIgYXJyYXkgb2Ygd29y ayBpdGVtcyksIGFnYWluIGRlc2NyaWJlZCBpbiB0aGUgcHJvY2Vzcwo+IC0gKiBkZXNjcmlwdG9y LiBXb3JrIHF1ZXVlIHBhZ2VzIGFyZSBtYXBwZWQgbW9tZW50YXJpbHkgYXMgcmVxdWlyZWQuCj4g LSAqLwo+IC1zdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCB7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKPiAtCXZvaWQgKnZhZGRyOwo+IC0Jc3RydWN0IGludGVsX2d1YyAqZ3VjOwo+IC0KPiAtCS8q IGJpdG1hcCBvZiAoaG9zdCkgZW5naW5lIGlkcyAqLwo+IC0JdTMyIHByaW9yaXR5Owo+IC0JdTMy IHN0YWdlX2lkOwo+IC0KPiAtCS8qIFByb3RlY3RzIEd1QyBjbGllbnQncyBXUSBhY2Nlc3MgKi8K PiAtCXNwaW5sb2NrX3Qgd3FfbG9jazsKPiAtfTsKPiArc3RydWN0IGludGVsX2d1YzsKPiArc3Ry dWN0IGludGVsX2VuZ2luZV9jczsKPiAgIAo+ICAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9p bml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cj4gICBpbnQgaW50ZWxfZ3VjX3N1Ym1p c3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwo+IEBAIC01Niw1ICsxOCw2IEBAIHZv aWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwo+ ICAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7 Cj4gICBpbnQgaW50ZWxfZ3VjX3ByZWVtcHRfd29ya19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKTsKPiAgIHZvaWQgaW50ZWxfZ3VjX3ByZWVtcHRfd29ya19kZXN0cm95KHN0cnVjdCBpbnRl bF9ndWMgKmd1Yyk7Cj4gK2Jvb2wgaW50ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ICAgI2VuZGlmCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA1ZDU5NzRlN2YzZWQuLmYzMmU3 YjAxNjE5NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE4MDIs MjMgKzE4MDIsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfbG9nX2luZm8oc3RydWN0IHNlcV9m aWxlICptLAo+ICAgc3RhdGljIGludCBpOTE1X2d1Y19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmZGV2X3ByaXYtPmd0LnVjLmd1YzsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50Owo+ICAgCj4gICAJaWYgKCFVU0VTX0dVQyhkZXZf cHJpdikpCj4gICAJCXJldHVybiAtRU5PREVWOwo+ICAgCj4gICAJaTkxNV9ndWNfbG9nX2luZm8o bSwgZGV2X3ByaXYpOwo+ICAgCj4gLQlpZiAoIVVTRVNfR1VDX1NVQk1JU1NJT04oZGV2X3ByaXYp KQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCUdFTV9CVUdfT04oIWd1Yy0+ZXhlY2J1Zl9jbGllbnQp Owo+IC0KPiAtCXNlcV9wcmludGYobSwgIlxuR3VDIGV4ZWNidWYgY2xpZW50IEAgJXA6XG4iLCBj bGllbnQpOwo+IC0Jc2VxX3ByaW50ZihtLCAiXHRQcmlvcml0eSAlZCwgR3VDIHN0YWdlIGluZGV4 OiAldVxuIiwKPiAtCQkgICBjbGllbnQtPnByaW9yaXR5LAo+IC0JCSAgIGNsaWVudC0+c3RhZ2Vf aWQpOwo+ICAgCS8qIEFkZCBtb3JlIGFzIHJlcXVpcmVkIC4uLiAqLwo+ICAgCj4gICAJcmV0dXJu IDA7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0729FC432C3 for ; Fri, 15 Nov 2019 00:22:54 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D2D8D2070E for ; Fri, 15 Nov 2019 00:22:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D2D8D2070E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=Intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 255576F38F; Fri, 15 Nov 2019 00:22:53 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3ACEB6F38F for ; Fri, 15 Nov 2019 00:22:51 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Nov 2019 16:22:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,306,1569308400"; d="scan'208";a="203229621" Received: from johnharr-mobl3.ger.corp.intel.com (HELO [10.251.23.29]) ([10.251.23.29]) by fmsmga008.fm.intel.com with ESMTP; 14 Nov 2019 16:22:50 -0800 To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org References: <20191106222550.20752-1-daniele.ceraolospurio@intel.com> <20191106222550.20752-5-daniele.ceraolospurio@intel.com> From: John Harrison Message-ID: Date: Thu, 14 Nov 2019 16:22:50 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <20191106222550.20752-5-daniele.ceraolospurio@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 4/4] drm/i915/guc: kill the GuC client X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191115002250.Tf4E3NSBIg-WpeQZWSF3t5mXIRNt7rQMksKsePWQgWM@z> T24gMTEvNi8yMDE5IDE0OjI1LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IFdlIG5v dyBvbmx5IHVzZSAxIGNsaWVudCB3aXRob3V0IGFueSBwbGFuIHRvIGFkZCBtb3JlLiBUaGUgY2xp ZW50IGlzCj4gYWxzbyBvbmx5IGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFdRIGFuZCB0 aGUgcHJvY2VzcyBkZXNjLCBzbyB3ZQo+IGNhbiBqdXN0IG1vdmUgdGhvc2UgaW4gdGhlIGludGVs X2d1YyBzdHJ1Y3R1cmUgYW5kIGFsd2F5cyB1c2Ugc3RhZ2VfaWQKPiAwLgo+Cj4gU2lnbmVkLW9m Zi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVs LmNvbT4KPiBDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ Cj4gQ2M6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gQ2M6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAgICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgICAgICAgfCAgIDggKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmggICB8ICAgMSAtCj4gICAuLi4v Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgfCAyNzIgKysrKystLS0t LS0tLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmggfCAgNDUgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICAgICAgfCAgMTEgLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAyNTYg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBpbmRl eCBmMDNlMDAwMDUxYzEuLmQyZDg4ZDBiYzlkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmVzZXQuYwo+IEBAIC0yMSw2ICsyMSw3IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfcmVz ZXQuaCIKPiAgIAo+ICAgI2luY2x1ZGUgInVjL2ludGVsX2d1Yy5oIgo+ICsjaW5jbHVkZSAidWMv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiAgIAo+ICAgI2RlZmluZSBSRVNFVF9NQVhfUkVUUklF UyAzCj4gICAKPiBAQCAtMTA3MCw2ICsxMDcxLDcgQEAgc3RhdGljIGlubGluZSBpbnQgaW50ZWxf Z3RfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIGludCBp bnRlbF9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBj aGFyICptc2cpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2d0ICpndCA9IGVuZ2luZS0+Z3Q7Cj4g Kwlib29sIHVzZXNfZ3VjID0gaW50ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUoZW5n aW5lKTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJR0VNX1RSQUNFKCIlcyBmbGFncz0lbHhcbiIs IGVuZ2luZS0+bmFtZSwgZ3QtPnJlc2V0LmZsYWdzKTsKPiBAQCAtMTA4NSwxNCArMTA4NywxNCBA QCBpbnQgaW50ZWxfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwg Y29uc3QgY2hhciAqbXNnKQo+ICAgCQkJICAgIlJlc2V0dGluZyAlcyBmb3IgJXNcbiIsIGVuZ2lu ZS0+bmFtZSwgbXNnKTsKPiAgIAlhdG9taWNfaW5jKCZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvci5y ZXNldF9lbmdpbmVfY291bnRbZW5naW5lLT51YWJpX2NsYXNzXSk7Cj4gICAKPiAtCWlmICghZW5n aW5lLT5ndC0+dWMuZ3VjLmV4ZWNidWZfY2xpZW50KQo+ICsJaWYgKCF1c2VzX2d1YykKPiAgIAkJ cmV0ID0gaW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7Cj4gICAJZWxzZQo+ICAgCQlyZXQg PSBpbnRlbF9ndWNfcmVzZXRfZW5naW5lKCZlbmdpbmUtPmd0LT51Yy5ndWMsIGVuZ2luZSk7Cj4g ICAJaWYgKHJldCkgewo+ICAgCQkvKiBJZiB3ZSBmYWlsIGhlcmUsIHdlIGV4cGVjdCB0byBmYWxs YmFjayB0byBhIGdsb2JhbCByZXNldCAqLwo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCIlc0ZhaWxl ZCB0byByZXNldCAlcywgcmV0PSVkXG4iLAo+IC0JCQkJIGVuZ2luZS0+Z3QtPnVjLmd1Yy5leGVj YnVmX2NsaWVudCA/ICJHdUMgIiA6ICIiLAo+ICsJCQkJIHVzZXNfZ3VjID8gIkd1QyAiIDogIiIs Cj4gICAJCQkJIGVuZ2luZS0+bmFtZSwgcmV0KTsKPiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4gaW5kZXggYjJkMTc2NmU2ODlhLi5j ZDA5YzkxMmUzNjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+ IEBAIC00Niw5ICs0NiwxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgIAo+ICAgCXN0cnVjdCBp OTE1X3ZtYSAqc3RhZ2VfZGVzY19wb29sOwo+ICAgCXZvaWQgKnN0YWdlX2Rlc2NfcG9vbF92YWRk cjsKPiAtCXN0cnVjdCBpZGEgc3RhZ2VfaWRzOwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqZXhlY2J1Zl9jbGllbnQ7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKndvcmtxdWV1ZTsKPiAr CXZvaWQgKndvcmtxdWV1ZV92YWRkcjsKPiArCXNwaW5sb2NrX3Qgd3FfbG9jazsKPiArCj4gKwlz dHJ1Y3QgaTkxNV92bWEgKnByb2NfZGVzYzsKPiArCXZvaWQgKnByb2NfZGVzY192YWRkcjsKPiAg IAo+ICAgCS8qIENvbnRyb2wgcGFyYW1zIGZvciBmdyBpbml0aWFsaXphdGlvbiAqLwo+ICAgCXUz MiBwYXJhbXNbR1VDX0NUTF9NQVhfRFdPUkRTXTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19md2lmLmgKPiBpbmRleCAxZThlNGFmN2Q5Y2EuLmE2YjczM2MxNDZjOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAo+IEBA IC0zMSw3ICszMSw2IEBACj4gICAKPiAgICNkZWZpbmUgR1VDX0RPT1JCRUxMX0lOVkFMSUQJCTI1 Ngo+ICAgCj4gLSNkZWZpbmUgR1VDX1BEX1NJWkUJCQkoUEFHRV9TSVpFKQo+ICAgI2RlZmluZSBH VUNfV1FfU0laRQkJCShQQUdFX1NJWkUgKiAyKQo+ICAgCj4gICAvKiBXb3JrIHF1ZXVlIGl0ZW0g aGVhZGVyIGRlZmluaXRpb25zICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMDA4OGMzNDE3NjQxLi43MTc4ODU4OWY5 ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19z dWJtaXNzaW9uLmMKPiBAQCAtMjcsMjQgKzI3LDEzIEBACj4gICAgKiBjb2RlKSBtYXRjaGVzIHRo ZSBvbGQgc3VibWlzc2lvbiBtb2RlbCBhbmQgd2lsbCBiZSB1cGRhdGVkIGFzIHBhcnQgb2YgdGhl Cj4gICAgKiB1cGdyYWRlIHRvIHRoZSBuZXcgZmxvdy4KPiAgICAqCj4gLSAqIEd1QyBjbGllbnQ6 Cj4gLSAqIEEgaW50ZWxfZ3VjX2NsaWVudCByZWZlcnMgdG8gYSBzdWJtaXNzaW9uIHBhdGggdGhy b3VnaCBHdUMuIEN1cnJlbnRseSwgdGhlcmUKPiAtICogaXMgb25seSBvbmUgY2xpZW50LCB3aGlj aCBpcyBjaGFyZ2VkIHdpdGggYWxsIHN1Ym1pc3Npb25zIHRvIHRoZSBHdUMuIFRoaXMKPiAtICog c3RydWN0IGlzIHRoZSBvd25lciBvZiBhIHByb2Nlc3MgZGVzY3JpcHRvciBhbmQgYSB3b3JrcXVl dWUgKGJvdGggb2YgdGhlbQo+IC0gKiBpbnNpZGUgYSBzaW5nbGUgZ2VtIG9iamVjdCB0aGF0IGNv bnRhaW5zIGFsbCByZXF1aXJlZCBwYWdlcyBmb3IgdGhlc2UKPiAtICogZWxlbWVudHMpLgo+IC0g Kgo+ICAgICogR3VDIHN0YWdlIGRlc2NyaXB0b3I6Cj4gICAgKiBEdXJpbmcgaW5pdGlhbGl6YXRp b24sIHRoZSBkcml2ZXIgYWxsb2NhdGVzIGEgc3RhdGljIHBvb2wgb2YgMTAyNCBzdWNoCj4gLSAq IGRlc2NyaXB0b3JzLCBhbmQgc2hhcmVzIHRoZW0gd2l0aCB0aGUgR3VDLgo+IC0gKiBDdXJyZW50 bHksIHRoZXJlIGV4aXN0cyBhIDE6MSBtYXBwaW5nIGJldHdlZW4gYSBpbnRlbF9ndWNfY2xpZW50 IGFuZCBhCj4gLSAqIGd1Y19zdGFnZV9kZXNjICh2aWEgdGhlIGNsaWVudCdzIHN0YWdlX2lkKSwg c28gZWZmZWN0aXZlbHkgb25seSBvbmUKPiAtICogZ2V0cyB1c2VkLiBUaGlzIHN0YWdlIGRlc2Ny aXB0b3IgbGV0cyB0aGUgR3VDIGtub3cgYWJvdXQgdGhlIHdvcmtxdWV1ZSBhbmQKPiArICogZGVz Y3JpcHRvcnMsIGFuZCBzaGFyZXMgdGhlbSB3aXRoIHRoZSBHdUMuIEN1cnJlbnRseSwgd2Ugb25s eSB1c2Ugb25lCj4gKyAqIGRlc2NyaXB0b3IuIFRoaXMgc3RhZ2UgZGVzY3JpcHRvciBsZXRzIHRo ZSBHdUMga25vdyBhYm91dCB0aGUgd29ya3F1ZXVlIGFuZAo+ICAgICogcHJvY2VzcyBkZXNjcmlw dG9yLiBUaGVvcmV0aWNhbGx5LCBpdCBhbHNvIGxldHMgdGhlIEd1QyBrbm93IGFib3V0IG91ciBI Vwo+ICAgICogY29udGV4dHMgKGNvbnRleHQgSUQsIGV0Yy4uLiksIGJ1dCB3ZSBhY3R1YWxseSBl bXBsb3kgYSBraW5kIG9mIHN1Ym1pc3Npb24KPiAtICogd2hlcmUgdGhlIEd1QyB1c2VzIHRoZSBM UkNBIHNlbnQgdmlhIHRoZSB3b3JrIGl0ZW0gaW5zdGVhZCAodGhlIHNpbmdsZQo+IC0gKiBndWNf c3RhZ2VfZGVzYyBhc3NvY2lhdGVkIHRvIGV4ZWNidWYgY2xpZW50IGNvbnRhaW5zIGluZm9ybWF0 aW9uIGFib3V0IHRoZQo+IC0gKiBkZWZhdWx0IGtlcm5lbCBjb250ZXh0IG9ubHksIGJ1dCB0aGlz IGlzIGVzc2VudGlhbGx5IHVudXNlZCkuIFRoaXMgaXMgY2FsbGVkCj4gKyAqIHdoZXJlIHRoZSBH dUMgdXNlcyB0aGUgTFJDQSBzZW50IHZpYSB0aGUgd29yayBpdGVtIGluc3RlYWQuIFRoaXMgaXMg Y2FsbGVkCj4gICAgKiBhICJwcm94eSIgc3VibWlzc2lvbi4KPiAgICAqCj4gICAgKiBUaGUgU2Ny YXRjaCByZWdpc3RlcnM6Cj4gQEAgLTcxLDMzICs2MCw0NSBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCj4gICAJcmV0 dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwgbm9kZSk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3JpdHkoc3RydWN0IGludGVsX2d1Y19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqX19nZXRfc3Rh Z2VfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpZCkKPiAgIHsKPiAtCXJldHVybiAo Y2xpZW50LT5wcmlvcml0eSA9PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9ISUdIIHx8Cj4gLQkJ Y2xpZW50LT5wcmlvcml0eSA9PSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0hJR0gpOwo+ICsJc3RydWN0 IGd1Y19zdGFnZV9kZXNjICpiYXNlID0gZ3VjLT5zdGFnZV9kZXNjX3Bvb2xfdmFkZHI7Cj4gKwo+ ICsJcmV0dXJuICZiYXNlW2lkXTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGd1Y19zdGFn ZV9kZXNjICpfX2dldF9zdGFnZV9kZXNjKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyBpbnQgZ3VjX3dvcmtxdWV1ZV9jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICAgewo+IC0Jc3RydWN0IGd1Y19zdGFnZV9kZXNjICpiYXNlID0gY2xpZW50LT5ndWMtPnN0 YWdlX2Rlc2NfcG9vbF92YWRkcjsKPiAtCj4gLQlyZXR1cm4gJmJhc2VbY2xpZW50LT5zdGFnZV9p ZF07Cj4gKwlyZXR1cm4gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1YywgR1VDX1dR X1NJWkUsICZndWMtPndvcmtxdWV1ZSwKPiArCQkJCQkgICAgICAmZ3VjLT53b3JrcXVldWVfdmFk ZHIpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2Mg Kgo+IC1fX2dldF9wcm9jZXNzX2Rlc2Moc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgZ3VjX3dvcmtxdWV1ZV9kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPiAgIHsKPiAtCXJldHVybiBjbGllbnQtPnZhZGRyOwo+ICsJaTkxNV92bWFfdW5waW5fYW5k X3JlbGVhc2UoJmd1Yy0+d29ya3F1ZXVlLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Cj4gICB9Cj4g ICAKPiAgIC8qCj4gICAgKiBJbml0aWFsaXNlIHRoZSBwcm9jZXNzIGRlc2NyaXB0b3Igc2hhcmVk IHdpdGggdGhlIEd1QyBmaXJtd2FyZS4KPiAgICAqLwo+IC1zdGF0aWMgdm9pZCBndWNfcHJvY19k ZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIGludCBn dWNfcHJvY19kZXNjX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gK3sKPiArCWNvbnN0 IHUzMiBzaXplID0gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2MpKTsK PiArCj4gKwlyZXR1cm4gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1Yywgc2l6ZSwg Jmd1Yy0+cHJvY19kZXNjLAo+ICsJCQkJCSAgICAgICZndWMtPnByb2NfZGVzY192YWRkcik7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGd1Y19wcm9jX2Rlc2NfZGVzdHJveShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gK3sKPiArCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPnByb2Nf ZGVzYywgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBndWNf cHJvY19kZXNjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCXN0cnVjdCBn dWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+ICAgCj4gLQlkZXNjID0gbWVtc2V0KF9fZ2V0X3Byb2Nl c3NfZGVzYyhjbGllbnQpLCAwLCBzaXplb2YoKmRlc2MpKTsKPiArCWRlc2MgPSBtZW1zZXQoZ3Vj LT5wcm9jX2Rlc2NfdmFkZHIsIDAsIHNpemVvZigqZGVzYykpOwo+ICAgCj4gICAJLyoKPiAgIAkg KiBYWFg6IHBEb29yYmVsbCBhbmQgV1FWQmFzZUFkZHJlc3MgYXJlIHBvaW50ZXJzIGluIHByb2Nl c3MgYWRkcmVzcwo+IEBAIC0xMDgsMzkgKzEwOSwyNyBAQCBzdGF0aWMgdm9pZCBndWNfcHJvY19k ZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgIAlkZXNjLT53cV9i YXNlX2FkZHIgPSAwOwo+ICAgCWRlc2MtPmRiX2Jhc2VfYWRkciA9IDA7Cj4gICAKPiAtCWRlc2Mt PnN0YWdlX2lkID0gY2xpZW50LT5zdGFnZV9pZDsKPiAgIAlkZXNjLT53cV9zaXplX2J5dGVzID0g R1VDX1dRX1NJWkU7Cj4gICAJZGVzYy0+d3Ffc3RhdHVzID0gV1FfU1RBVFVTX0FDVElWRTsKPiAt CWRlc2MtPnByaW9yaXR5ID0gY2xpZW50LT5wcmlvcml0eTsKPiArCWRlc2MtPnByaW9yaXR5ID0g R1VDX0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lk IGd1Y19wcm9jX2Rlc2NfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBndWNfcHJvY19kZXNjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAg ewo+IC0Jc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2MgKmRlc2M7Cj4gLQo+IC0JZGVzYyA9IF9fZ2V0 X3Byb2Nlc3NfZGVzYyhjbGllbnQpOwo+IC0JbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykp Owo+ICsJbWVtc2V0KGd1Yy0+cHJvY19kZXNjX3ZhZGRyLCAwLCBzaXplb2Yoc3RydWN0IGd1Y19w cm9jZXNzX2Rlc2MpKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBndWNfc3RhZ2VfZGVzY19w b29sX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICB7Cj4gICAJdTMyIHNpemUgPSBQ QUdFX0FMSUdOKHNpemVvZihzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MpICoKPiAgIAkJCSAgICAgIEdV Q19NQVhfU1RBR0VfREVTQ1JJUFRPUlMpOwo+IC0JaW50IHJldDsKPiAtCj4gLQlyZXQgPSBpbnRl bF9ndWNfYWxsb2NhdGVfYW5kX21hcF92bWEoZ3VjLCBzaXplLCAmZ3VjLT5zdGFnZV9kZXNjX3Bv b2wsCj4gLQkJCQkJICAgICAmZ3VjLT5zdGFnZV9kZXNjX3Bvb2xfdmFkZHIpOwo+IC0JaWYgKHJl dCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCWlkYV9pbml0KCZndWMtPnN0YWdlX2lkcyk7Cj4g ICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGludGVsX2d1Y19hbGxvY2F0ZV9hbmRfbWFwX3Zt YShndWMsIHNpemUsICZndWMtPnN0YWdlX2Rlc2NfcG9vbCwKPiArCQkJCQkgICAgICAmZ3VjLT5z dGFnZV9kZXNjX3Bvb2xfdmFkZHIpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBndWNfc3Rh Z2VfZGVzY19wb29sX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+IC0JaWRh X2Rlc3Ryb3koJmd1Yy0+c3RhZ2VfaWRzKTsKPiAgIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFz ZSgmZ3VjLT5zdGFnZV9kZXNjX3Bvb2wsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKPiAgIH0KPiAg IAo+IEBAIC0xNDgsNTggKzEzNyw0OSBAQCBzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19wb29s X2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgICogSW5pdGlhbGlzZS9jbGVhciB0 aGUgc3RhZ2UgZGVzY3JpcHRvciBzaGFyZWQgd2l0aCB0aGUgR3VDIGZpcm13YXJlLgo+ICAgICoK PiAgICAqIFRoaXMgZGVzY3JpcHRvciB0ZWxscyB0aGUgR3VDIHdoZXJlIChpbiBHR1RUIHNwYWNl KSB0byBmaW5kIHRoZSBpbXBvcnRhbnQKPiAtICogZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0aW5nIHRv IHRoaXMgY2xpZW50IChwcm9jZXNzIGRlc2NyaXB0b3IsIHdyaXRlIHF1ZXVlLAo+ICsgKiBkYXRh IHN0cnVjdHVyZXMgcmVsYXRlZCB0byB3b3JrIHN1Ym1pc3Npb24gKHByb2Nlc3MgZGVzY3JpcHRv ciwgd3JpdGUgcXVldWUsCj4gICAgKiBldGMpLgo+ICAgICovCj4gLXN0YXRpYyB2b2lkIGd1Y19z dGFnZV9kZXNjX2luaXQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjbGllbnQtPmd1YzsKPiAgIAlzdHJ1Y3QgZ3VjX3N0 YWdlX2Rlc2MgKmRlc2M7Cj4gLQl1MzIgZ2Z4X2FkZHI7Cj4gICAKPiAtCWRlc2MgPSBfX2dldF9z dGFnZV9kZXNjKGNsaWVudCk7Cj4gKwkvKiB3ZSBvbmx5IHVzZSAxIHN0YWdlIGRlc2MsIHNvIGhh cmRjb2RlIGl0IHRvIDAgKi8KPiArCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGd1YywgMCk7Cj4g ICAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOwo+ICAgCj4gICAJZGVzYy0+YXR0cmli dXRlID0gR1VDX1NUQUdFX0RFU0NfQVRUUl9BQ1RJVkUgfAo+ICAgCQkJICBHVUNfU1RBR0VfREVT Q19BVFRSX0tFUk5FTDsKPiAtCWlmIChpc19oaWdoX3ByaW9yaXR5KGNsaWVudCkpCj4gLQkJZGVz Yy0+YXR0cmlidXRlIHw9IEdVQ19TVEFHRV9ERVNDX0FUVFJfUFJFRU1QVDsKPiAtCWRlc2MtPnN0 YWdlX2lkID0gY2xpZW50LT5zdGFnZV9pZDsKPiAtCWRlc2MtPnByaW9yaXR5ID0gY2xpZW50LT5w cmlvcml0eTsKPiAgIAo+IC0JLyoKPiAtCSAqIFRoZSBwcm9jZXNzIGRlc2NyaXB0b3IgYW5kIHdv cmtxdWV1ZSBhcmUgYWxsIHBhcnRzIG9mIHRoZSBjbGllbnQKPiAtCSAqIG9iamVjdCwgd2hpY2gg dGhlIEd1QyB3aWxsIHJlZmVyZW5jZSB2aWEgdGhlIEdHVFQKPiAtCSAqLwo+IC0JZ2Z4X2FkZHIg PSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBjbGllbnQtPnZtYSk7Cj4gLQlkZXNjLT5wcm9j ZXNzX2Rlc2MgPSBnZnhfYWRkcjsKPiAtCWRlc2MtPndxX2FkZHIgPSBnZnhfYWRkciArIEdVQ19Q RF9TSVpFOwo+IC0JZGVzYy0+d3Ffc2l6ZSA9IEdVQ19XUV9TSVpFOwo+ICsJZGVzYy0+c3RhZ2Vf aWQgPSAwOwo+ICsJZGVzYy0+cHJpb3JpdHkgPSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JN QUw7Cj4gICAKPiAtCWRlc2MtPmRlc2NfcHJpdmF0ZSA9IHB0cl90b191NjQoY2xpZW50KTsKPiAr CWRlc2MtPnByb2Nlc3NfZGVzYyA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+cHJv Y19kZXNjKTsKPiArCWRlc2MtPndxX2FkZHIgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBn dWMtPndvcmtxdWV1ZSk7Cj4gKwlkZXNjLT53cV9zaXplID0gR1VDX1dRX1NJWkU7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfZmluaShzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19maW5pKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPiAgIHsKPiAgIAlzdHJ1Y3QgZ3VjX3N0YWdlX2Rlc2MgKmRlc2M7Cj4g ICAKPiAtCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGNsaWVudCk7Cj4gKwlkZXNjID0gX19nZXRf c3RhZ2VfZGVzYyhndWMsIDApOwo+ICAgCW1lbXNldChkZXNjLCAwLCBzaXplb2YoKmRlc2MpKTsK PiAgIH0KPiAgIAo+ICAgLyogQ29uc3RydWN0IGEgV29yayBJdGVtIGFuZCBhcHBlbmQgaXQgdG8g dGhlIEd1QydzIFdvcmsgUXVldWUgKi8KPiAtc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBwZW5k KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQsCj4gK3N0YXRpYyB2b2lkIGd1Y193cV9p dGVtX2FwcGVuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4gICAJCQkgICAgICAgdTMyIHRhcmdl dF9lbmdpbmUsIHUzMiBjb250ZXh0X2Rlc2MsCj4gICAJCQkgICAgICAgdTMyIHJpbmdfdGFpbCwg dTMyIGZlbmNlX2lkKQo+ICAgewo+ICAgCS8qIHdxaV9sZW4gaXMgaW4gRFdvcmRzLCBhbmQgZG9l cyBub3QgaW5jbHVkZSB0aGUgb25lLXdvcmQgaGVhZGVyICovCj4gICAJY29uc3Qgc2l6ZV90IHdx aV9zaXplID0gc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gICAJY29uc3QgdTMyIHdxaV9s ZW4gPSB3cWlfc2l6ZSAvIHNpemVvZih1MzIpIC0gMTsKPiAtCXN0cnVjdCBndWNfcHJvY2Vzc19k ZXNjICpkZXNjID0gX19nZXRfcHJvY2Vzc19kZXNjKGNsaWVudCk7Cj4gKwlzdHJ1Y3QgZ3VjX3By b2Nlc3NfZGVzYyAqZGVzYyA9IGd1Yy0+cHJvY19kZXNjX3ZhZGRyOwo+ICAgCXN0cnVjdCBndWNf d3FfaXRlbSAqd3FpOwo+ICAgCXUzMiB3cV9vZmY7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmNsaWVudC0+d3FfbG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZndWMtPndxX2xv Y2spOwo+ICAgCj4gICAJLyogRm9yIG5vdyB3b3JrcXVldWUgaXRlbSBpcyA0IERXczsgd29ya3F1 ZXVlIGJ1ZmZlciBpcyAyIHBhZ2VzLiBTbyB3ZQo+ICAgCSAqIHNob3VsZCBub3QgaGF2ZSB0aGUg Y2FzZSB3aGVyZSBzdHJ1Y3R1cmUgd3FpIGlzIGFjcm9zcyBwYWdlLCBuZWl0aGVyCj4gQEAgLTIy MCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBndWNfd3FfaXRlbV9hcHBlbmQoc3RydWN0IGludGVs X2d1Y19jbGllbnQgKmNsaWVudCwKPiAgIAlHRU1fQlVHX09OKHdxX29mZiAmICh3cWlfc2l6ZSAt IDEpKTsKPiAgIAo+ICAgCS8qIFdRIHN0YXJ0cyBmcm9tIHRoZSBwYWdlIGFmdGVyIHByb2Nlc3Nf ZGVzYyAqLwpUaGlzIGNvbW1lbnQgaXMgbm93IGludmFsaWQuIFdpdGggdGhhdCBmaXhlZDoKUmV2 aWV3ZWQtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cgo+IC0J d3FpID0gY2xpZW50LT52YWRkciArIHdxX29mZiArIEdVQ19QRF9TSVpFOwo+ICsJd3FpID0gZ3Vj LT53b3JrcXVldWVfdmFkZHIgKyB3cV9vZmY7Cj4gICAKPiAgIAkvKiBOb3cgZmlsbCBpbiB0aGUg NC13b3JkIHdvcmsgcXVldWUgaXRlbSAqLwo+ICAgCXdxaS0+aGVhZGVyID0gV1FfVFlQRV9JTk9S REVSIHwKPiBAQCAtMjM4LDEyICsyMTgsMTEgQEAgc3RhdGljIHZvaWQgZ3VjX3dxX2l0ZW1fYXBw ZW5kKHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQsCj4gICAKPiAgIHN0YXRpYyB2b2lk IGd1Y19hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ ZXhlY2J1Zl9jbGllbnQ7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEt PmVuZ2luZTsKPiAgIAl1MzIgY3R4X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKHJxLT5od19jb250ZXh0 LT5scmNfZGVzYyk7Cj4gICAJdTMyIHJpbmdfdGFpbCA9IGludGVsX3Jpbmdfc2V0X3RhaWwocnEt PnJpbmcsIHJxLT50YWlsKSAvIHNpemVvZih1NjQpOwo+ICAgCj4gLQlndWNfd3FfaXRlbV9hcHBl bmQoY2xpZW50LCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCj4gKwlndWNfd3FfaXRlbV9hcHBl bmQoZ3VjLCBlbmdpbmUtPmd1Y19pZCwgY3R4X2Rlc2MsCj4gICAJCQkgICByaW5nX3RhaWwsIHJx LT5mZW5jZS5zZXFubyk7Cj4gICB9Cj4gICAKPiBAQCAtMjY3LDkgKzI0Niw4IEBAIHN0YXRpYyB2 b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkgICAg ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqKmVuZCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMgPSAmZW5naW5lLT5ndC0+dWMuZ3VjOwo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQg KmNsaWVudCA9IGd1Yy0+ZXhlY2J1Zl9jbGllbnQ7Cj4gICAKPiAtCXNwaW5fbG9jaygmY2xpZW50 LT53cV9sb2NrKTsKPiArCXNwaW5fbG9jaygmZ3VjLT53cV9sb2NrKTsKPiAgIAo+ICAgCWRvIHsK PiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSAqb3V0Kys7Cj4gQEAgLTI3OCw3ICsyNTYs NyBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIAkJZ3VjX2FkZF9yZXF1ZXN0KGd1YywgcnEpOwo+ICAgCX0gd2hpbGUgKG91dCAhPSBl bmQpOwo+ICAgCj4gLQlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKPiArCXNwaW5fdW5s b2NrKCZndWMtPndxX2xvY2spOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGludCBycV9w cmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+IEBAIC01MjksMTI1ICs1MDcsNiBA QCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgICAqIHBhdGggb2YgZ3VjX3N1Ym1pdCgpIGFib3ZlLgo+ICAgICovCj4gICAKPiAt LyoqCj4gLSAqIGd1Y19jbGllbnRfYWxsb2MoKSAtIEFsbG9jYXRlIGFuIGludGVsX2d1Y19jbGll bnQKPiAtICogQGd1YzoJdGhlIGludGVsX2d1YyBzdHJ1Y3R1cmUKPiAtICogQHByaW9yaXR5Oglm b3VyIGxldmVscyBwcmlvcml0eSBfQ1JJVElDQUwsIF9ISUdILCBfTk9STUFMIGFuZCBfTE9XCj4g LSAqCQlUaGUga2VybmVsIGNsaWVudCB0byByZXBsYWNlIEV4ZWNMaXN0IHN1Ym1pc3Npb24gaXMg Y3JlYXRlZCB3aXRoCj4gLSAqCQlOT1JNQUwgcHJpb3JpdHkuIFByaW9yaXR5IG9mIGEgY2xpZW50 IGZvciBzY2hlZHVsZXIgY2FuIGJlIEhJR0gsCj4gLSAqCQl3aGlsZSBhIHByZWVtcHRpb24gY29u dGV4dCBjYW4gdXNlIENSSVRJQ0FMLgo+IC0gKgo+IC0gKiBSZXR1cm46CUFuIGludGVsX2d1Y19j bGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MsIGVsc2UgTlVMTC4KPiAtICovCj4gLXN0YXRpYyBzdHJ1 Y3QgaW50ZWxfZ3VjX2NsaWVudCAqCj4gLWd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGludGVsX2d1 YyAqZ3VjLCB1MzIgcHJpb3JpdHkpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQ7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCXZvaWQgKnZhZGRyOwo+IC0JaW50 IHJldDsKPiAtCj4gLQljbGllbnQgPSBremFsbG9jKHNpemVvZigqY2xpZW50KSwgR0ZQX0tFUk5F TCk7Cj4gLQlpZiAoIWNsaWVudCkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCj4g LQljbGllbnQtPmd1YyA9IGd1YzsKPiAtCWNsaWVudC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKPiAt CXNwaW5fbG9ja19pbml0KCZjbGllbnQtPndxX2xvY2spOwo+IC0KPiAtCXJldCA9IGlkYV9zaW1w bGVfZ2V0KCZndWMtPnN0YWdlX2lkcywgMCwgR1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUywKPiAt CQkJICAgICBHRlBfS0VSTkVMKTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCWdvdG8gZXJyX2NsaWVu dDsKPiAtCj4gLQljbGllbnQtPnN0YWdlX2lkID0gcmV0Owo+IC0KPiAtCS8qIFRoZSBmaXJzdCBw YWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4gKi8K PiAtCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBHVUNfUERfU0laRSArIEdVQ19X UV9TSVpFKTsKPiAtCWlmIChJU19FUlIodm1hKSkgewo+IC0JCXJldCA9IFBUUl9FUlIodm1hKTsK PiAtCQlnb3RvIGVycl9pZDsKPiAtCX0KPiAtCj4gLQkvKiBXZSdsbCBrZWVwIGp1c3QgdGhlIGZp cnN0IChkb29yYmVsbC9wcm9jKSBwYWdlIHBlcm1hbmVudGx5IGttYXAnZC4gKi8KPiAtCWNsaWVu dC0+dm1hID0gdm1hOwo+IC0KPiAtCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1h LT5vYmosIEk5MTVfTUFQX1dCKTsKPiAtCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gLQkJcmV0ID0g UFRSX0VSUih2YWRkcik7Cj4gLQkJZ290byBlcnJfdm1hOwo+IC0JfQo+IC0JY2xpZW50LT52YWRk ciA9IHZhZGRyOwo+IC0KPiAtCURSTV9ERUJVR19EUklWRVIoIm5ldyBwcmlvcml0eSAldSBjbGll bnQgJXA6IHN0YWdlX2lkICV1XG4iLAo+IC0JCQkgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50LT5z dGFnZV9pZCk7Cj4gLQo+IC0JcmV0dXJuIGNsaWVudDsKPiAtCj4gLWVycl92bWE6Cj4gLQlpOTE1 X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY2xpZW50LT52bWEsIDApOwo+IC1lcnJfaWQ6Cj4gLQlp ZGFfc2ltcGxlX3JlbW92ZSgmZ3VjLT5zdGFnZV9pZHMsIGNsaWVudC0+c3RhZ2VfaWQpOwo+IC1l cnJfY2xpZW50Ogo+IC0Ja2ZyZWUoY2xpZW50KTsKPiAtCXJldHVybiBFUlJfUFRSKHJldCk7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRfZnJlZShzdHJ1Y3QgaW50ZWxfZ3VjX2Ns aWVudCAqY2xpZW50KQo+IC17Cj4gLQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY2xpZW50 LT52bWEsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKPiAtCWlkYV9zaW1wbGVfcmVtb3ZlKCZjbGll bnQtPmd1Yy0+c3RhZ2VfaWRzLCBjbGllbnQtPnN0YWdlX2lkKTsKPiAtCWtmcmVlKGNsaWVudCk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZ3VjX2NsaWVudHNfY3JlYXRlKHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKPiAtewo+IC0Jc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudDsKPiAtCj4g LQlHRU1fQlVHX09OKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0KPiAtCWNsaWVudCA9IGd1Y19j bGllbnRfYWxsb2MoZ3VjLCBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JNQUwpOwo+IC0JaWYg KElTX0VSUihjbGllbnQpKSB7Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEd1QyBj bGllbnQgZm9yIHN1Ym1pc3Npb24hXG4iKTsKPiAtCQlyZXR1cm4gUFRSX0VSUihjbGllbnQpOwo+ IC0JfQo+IC0JZ3VjLT5leGVjYnVmX2NsaWVudCA9IGNsaWVudDsKPiAtCj4gLQlyZXR1cm4gMDsK PiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgZ3VjX2NsaWVudHNfZGVzdHJveShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQ7Cj4gLQo+ IC0JY2xpZW50ID0gZmV0Y2hfYW5kX3plcm8oJmd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0JaWYg KGNsaWVudCkKPiAtCQlndWNfY2xpZW50X2ZyZWUoY2xpZW50KTsKPiAtfQo+IC0KPiAtc3RhdGlj IHZvaWQgX19ndWNfY2xpZW50X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50 KQo+IC17Cj4gLQlndWNfcHJvY19kZXNjX2luaXQoY2xpZW50KTsKPiAtCWd1Y19zdGFnZV9kZXNj X2luaXQoY2xpZW50KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgX19ndWNfY2xpZW50X2Rpc2Fi bGUoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAtewo+IC0JZ3VjX3N0YWdlX2Rl c2NfZmluaShjbGllbnQpOwo+IC0JZ3VjX3Byb2NfZGVzY19maW5pKGNsaWVudCk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cj4gLXsKPiAtCV9fZ3VjX2NsaWVudF9lbmFibGUoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gLX0K PiAtCj4gLXN0YXRpYyB2b2lkIGd1Y19jbGllbnRzX2Rpc2FibGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+IC17Cj4gLQlpZiAoZ3VjLT5leGVjYnVmX2NsaWVudCkKPiAtCQlfX2d1Y19jbGllbnRf ZGlzYWJsZShndWMtPmV4ZWNidWZfY2xpZW50KTsKPiAtfQo+IC0KPiAgIC8qCj4gICAgKiBTZXQg dXAgdGhlIG1lbW9yeSByZXNvdXJjZXMgdG8gYmUgc2hhcmVkIHdpdGggdGhlIEd1QyAodmlhIHRo ZSBHR1RUKQo+ICAgICogYXQgZmlybXdhcmUgbG9hZGluZyB0aW1lLgo+IEBAIC02NjgsMTIgKzUy NywyMCBAQCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCj4gICAJICovCj4gICAJR0VNX0JVR19PTighZ3VjLT5zdGFnZV9kZXNjX3Bvb2wpOwo+ICAg Cj4gLQlyZXQgPSBndWNfY2xpZW50c19jcmVhdGUoZ3VjKTsKPiArCXJldCA9IGd1Y193b3JrcXVl dWVfY3JlYXRlKGd1Yyk7Cj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnJfcG9vbDsKPiAgIAo+ ICsJcmV0ID0gZ3VjX3Byb2NfZGVzY19jcmVhdGUoZ3VjKTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBlcnJfd29ya3F1ZXVlOwo+ICsKPiArCXNwaW5fbG9ja19pbml0KCZndWMtPndxX2xvY2spOwo+ ICsKPiAgIAlyZXR1cm4gMDsKPiAgIAo+ICtlcnJfd29ya3F1ZXVlOgo+ICsJZ3VjX3dvcmtxdWV1 ZV9kZXN0cm95KGd1Yyk7Cj4gICBlcnJfcG9vbDoKPiAgIAlndWNfc3RhZ2VfZGVzY19wb29sX2Rl c3Ryb3koZ3VjKTsKPiAgIAlyZXR1cm4gcmV0Owo+IEBAIC02ODEsMTAgKzU0OCwxMSBAQCBpbnQg aW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAKPiAg IHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g ICB7Cj4gLQlndWNfY2xpZW50c19kZXN0cm95KGd1Yyk7Cj4gLQo+IC0JaWYgKGd1Yy0+c3RhZ2Vf ZGVzY19wb29sKQo+ICsJaWYgKGd1Yy0+c3RhZ2VfZGVzY19wb29sKSB7Cj4gKwkJZ3VjX3Byb2Nf ZGVzY19kZXN0cm95KGd1Yyk7Cj4gKwkJZ3VjX3dvcmtxdWV1ZV9kZXN0cm95KGd1Yyk7Cj4gICAJ CWd1Y19zdGFnZV9kZXNjX3Bvb2xfZGVzdHJveShndWMpOwo+ICsJfQo+ICAgfQo+ICAgCj4gICBz dGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19jYXB0dXJlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4g QEAgLTgxNiw5ICs2ODQsOCBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJCSAgICAgc2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSkg Kgo+ICAgCQkgICAgIEk5MTVfTlVNX0VOR0lORVMgPiBHVUNfV1FfU0laRSk7Cj4gICAKPiAtCUdF TV9CVUdfT04oIWd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+IC0KPiAtCWd1Y19jbGllbnRzX2VuYWJs ZShndWMpOwo+ICsJZ3VjX3Byb2NfZGVzY19pbml0KGd1Yyk7Cj4gKwlndWNfc3RhZ2VfZGVzY19p bml0KGd1Yyk7Cj4gICAKPiAgIAkvKiBUYWtlIG92ZXIgZnJvbSBtYW51YWwgY29udHJvbCBvZiBF TFNQIChleGVjbGlzdHMpICovCj4gICAJZ3VjX2ludGVycnVwdHNfY2FwdHVyZShndCk7Cj4gQEAg LTgzNiw3ICs3MDMsOSBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAgCUdFTV9CVUdfT04oZ3QtPmF3YWtlKTsgLyogR1Qgc2hvdWxk IGJlIHBhcmtlZCBmaXJzdCAqLwo+ICAgCj4gICAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShndCk7 Cj4gLQlndWNfY2xpZW50c19kaXNhYmxlKGd1Yyk7Cj4gKwo+ICsJZ3VjX3N0YWdlX2Rlc2NfZmlu aShndWMpOwo+ICsJZ3VjX3Byb2NfZGVzY19maW5pKGd1Yyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBib29sIF9fZ3VjX3N1Ym1pc3Npb25fc3VwcG9ydChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g QEAgLTg1NCwzICs3MjMsOCBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXRfZWFybHko c3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgewo+ICAgCWd1Yy0+c3VibWlzc2lvbl9zdXBwb3J0 ZWQgPSBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnQoZ3VjKTsKPiAgIH0KPiArCj4gK2Jvb2wgaW50 ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlyZXR1cm4gZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNz aW9uID09IGd1Y19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oCj4gaW5kZXggZTJkZWI0 ZTZmNDJhLi5lNDAyYTI5MzI1OTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgKPiBAQCAtNiw0OCArNiwxMCBAQAo+ICAgI2lm bmRlZiBfSU5URUxfR1VDX1NVQk1JU1NJT05fSF8KPiAgICNkZWZpbmUgX0lOVEVMX0dVQ19TVUJN SVNTSU9OX0hfCj4gICAKPiAtI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgo+ICAgCj4gLSNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfdHlwZXMu aCIKPiAtCj4gLSNpbmNsdWRlICJpOTE1X2dlbS5oIgo+IC0jaW5jbHVkZSAiaTkxNV9zZWxmdGVz dC5oIgo+IC0KPiAtc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gLQo+IC0vKgo+IC0gKiBUaGlz IHN0cnVjdHVyZSBwcmltYXJpbHkgZGVzY3JpYmVzIHRoZSBHRU0gb2JqZWN0IHNoYXJlZCB3aXRo IHRoZSBHdUMuCj4gLSAqIFRoZSBzcGVjcyBzb21ldGltZXMgcmVmZXIgdG8gdGhpcyBvYmplY3Qg YXMgYSAiR3VDIGNvbnRleHQiLCBidXQgd2UgdXNlCj4gLSAqIHRoZSB0ZXJtICJjbGllbnQiIHRv IGF2b2lkIGNvbmZ1c2lvbiB3aXRoIGhhcmR3YXJlIGNvbnRleHRzLiBUaGlzCj4gLSAqIEdFTSBv YmplY3QgaXMgaGVsZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBvdXIgaW50ZXJhY3Rpb24g d2l0aAo+IC0gKiB0aGUgR3VDLCBiZWluZyBhbGxvY2F0ZWQgYmVmb3JlIHRoZSBHdUMgaXMgbG9h ZGVkIHdpdGggaXRzIGZpcm13YXJlLgo+IC0gKiBCZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIHVw ZGF0ZSB0aGUgYWRkcmVzcyB1c2VkIGJ5IHRoZSBHdUMgYWZ0ZXIKPiAtICogaW5pdGlhbGlzYXRp b24sIHRoZSBzaGFyZWQgb2JqZWN0IG11c3Qgc3RheSBwaW5uZWQgaW50byB0aGUgR0dUVCBhcwo+ IC0gKiBsb25nIGFzIHRoZSBHdUMgaXMgaW4gdXNlLiBXZSBhbHNvIGtlZXAgdGhlIGZpcnN0IHBh Z2UgKG9ubHkpIG1hcHBlZAo+IC0gKiBpbnRvIGtlcm5lbCBhZGRyZXNzIHNwYWNlLCBhcyBpdCBp bmNsdWRlcyBzaGFyZWQgZGF0YSB0aGF0IG11c3QgYmUKPiAtICogdXBkYXRlZCBvbiBldmVyeSBy ZXF1ZXN0IHN1Ym1pc3Npb24uCj4gLSAqCj4gLSAqIFRoZSBzaW5nbGUgR0VNIG9iamVjdCBkZXNj cmliZWQgaGVyZSBpcyBhY3R1YWxseSBtYWRlIHVwIG9mIHNldmVyYWwKPiAtICogc2VwYXJhdGUg YXJlYXMsIGFzIGZhciBhcyB0aGUgR3VDIGlzIGNvbmNlcm5lZC4gVGhlIGZpcnN0IHBhZ2UgKGtl cHQKPiAtICoga21hcCdkKSBpbmNsdWRlcyB0aGUgInByb2Nlc3MgZGVzY3JpcHRvciIgd2hpY2gg aG9sZHMgc2VxdWVuY2UgZGF0YSBmb3IKPiAtICogdGhlIGRvb3JiZWxsLCBhbmQgb25lIGNhY2hl bGluZSB3aGljaCBhY3R1YWxseSAqaXMqIHRoZSBkb29yYmVsbDsgYQo+IC0gKiB3cml0ZSB0byB0 aGlzIHdpbGwgInJpbmcgdGhlIGRvb3JiZWxsIiAoaS5lLiBzZW5kIGFuIGludGVycnVwdCB0byB0 aGUKPiAtICogR3VDKS4gVGhlIHN1YnNlcXVlbnQgIHBhZ2VzIG9mIHRoZSBjbGllbnQgb2JqZWN0 IGNvbnN0aXR1dGUgdGhlIHdvcmsKPiAtICogcXVldWUgKGEgY2lyY3VsYXIgYXJyYXkgb2Ygd29y ayBpdGVtcyksIGFnYWluIGRlc2NyaWJlZCBpbiB0aGUgcHJvY2Vzcwo+IC0gKiBkZXNjcmlwdG9y LiBXb3JrIHF1ZXVlIHBhZ2VzIGFyZSBtYXBwZWQgbW9tZW50YXJpbHkgYXMgcmVxdWlyZWQuCj4g LSAqLwo+IC1zdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCB7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKPiAtCXZvaWQgKnZhZGRyOwo+IC0Jc3RydWN0IGludGVsX2d1YyAqZ3VjOwo+IC0KPiAtCS8q IGJpdG1hcCBvZiAoaG9zdCkgZW5naW5lIGlkcyAqLwo+IC0JdTMyIHByaW9yaXR5Owo+IC0JdTMy IHN0YWdlX2lkOwo+IC0KPiAtCS8qIFByb3RlY3RzIEd1QyBjbGllbnQncyBXUSBhY2Nlc3MgKi8K PiAtCXNwaW5sb2NrX3Qgd3FfbG9jazsKPiAtfTsKPiArc3RydWN0IGludGVsX2d1YzsKPiArc3Ry dWN0IGludGVsX2VuZ2luZV9jczsKPiAgIAo+ICAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9p bml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cj4gICBpbnQgaW50ZWxfZ3VjX3N1Ym1p c3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwo+IEBAIC01Niw1ICsxOCw2IEBAIHZv aWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwo+ ICAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7 Cj4gICBpbnQgaW50ZWxfZ3VjX3ByZWVtcHRfd29ya19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAq Z3VjKTsKPiAgIHZvaWQgaW50ZWxfZ3VjX3ByZWVtcHRfd29ya19kZXN0cm95KHN0cnVjdCBpbnRl bF9ndWMgKmd1Yyk7Cj4gK2Jvb2wgaW50ZWxfZW5naW5lX2luX2d1Y19zdWJtaXNzaW9uX21vZGUo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ICAgI2VuZGlmCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA1ZDU5NzRlN2YzZWQuLmYzMmU3 YjAxNjE5NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE4MDIs MjMgKzE4MDIsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfbG9nX2luZm8oc3RydWN0IHNlcV9m aWxlICptLAo+ICAgc3RhdGljIGludCBpOTE1X2d1Y19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmZGV2X3ByaXYtPmd0LnVjLmd1YzsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50Owo+ICAgCj4gICAJaWYgKCFVU0VTX0dVQyhkZXZf cHJpdikpCj4gICAJCXJldHVybiAtRU5PREVWOwo+ICAgCj4gICAJaTkxNV9ndWNfbG9nX2luZm8o bSwgZGV2X3ByaXYpOwo+ICAgCj4gLQlpZiAoIVVTRVNfR1VDX1NVQk1JU1NJT04oZGV2X3ByaXYp KQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCUdFTV9CVUdfT04oIWd1Yy0+ZXhlY2J1Zl9jbGllbnQp Owo+IC0KPiAtCXNlcV9wcmludGYobSwgIlxuR3VDIGV4ZWNidWYgY2xpZW50IEAgJXA6XG4iLCBj bGllbnQpOwo+IC0Jc2VxX3ByaW50ZihtLCAiXHRQcmlvcml0eSAlZCwgR3VDIHN0YWdlIGluZGV4 OiAldVxuIiwKPiAtCQkgICBjbGllbnQtPnByaW9yaXR5LAo+IC0JCSAgIGNsaWVudC0+c3RhZ2Vf aWQpOwo+ICAgCS8qIEFkZCBtb3JlIGFzIHJlcXVpcmVkIC4uLiAqLwo+ICAgCj4gICAJcmV0dXJu IDA7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=