From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: Re: [PATCH] tinydrm/mipi-dbi: Use dma-safe buffers for all SPI transfers Date: Mon, 4 Mar 2019 17:10:17 +0200 Message-ID: <20190304151017.GS9224@smile.fi.intel.com> References: <20190222124329.23046-1-noralf@tronnes.org> <20190222155801.GI9224@smile.fi.intel.com> <57f39dc2-d1f3-6caf-2065-5731ff9bac94@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2DD8D89CF2 for ; Mon, 4 Mar 2019 15:10:20 +0000 (UTC) Content-Disposition: inline In-Reply-To: <57f39dc2-d1f3-6caf-2065-5731ff9bac94@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: david@lechnology.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXIgMDQsIDIwMTkgYXQgMDM6NDU6NTZQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IAo+IERlbiAyMi4wMi4yMDE5IDE2LjU4LCBza3JldiBBbmR5IFNoZXZjaGVu a286Cj4gPiBPbiBGcmksIEZlYiAyMiwgMjAxOSBhdCAwMTo0MzoyOVBNICswMTAwLCBOb3JhbGYg VHLDuG5uZXMgd3JvdGU6Cj4gPj4gQnVmZmVycyBwYXNzZWQgdG8gc3BpX3N5bmMoKSBtdXN0IGJl IGRtYS1zYWZlIGV2ZW4gZm9yIHRpbnkgYnVmZmVycyBzaW5jZQo+ID4+IHNvbWUgU1BJIGNvbnRy b2xsZXJzIHVzZSBETUEgZm9yIGFsbCB0cmFuc2ZlcnMuCj4gPj4KPiA+PiBFeGFtcGxlIHNwbGF0 IHdpdGggQ09ORklHX0RNQV9BUElfREVCVUcgZW5hYmxlZDoKPiA+Pgo+ID4+IFsgICAyMy43NTA0 NjddIERNQS1BUEk6IGR3X2RtYWNfcGNpIDAwMDA6MDA6MTUuMDogZGV2aWNlIGRyaXZlciBtYXBz IG1lbW9yeSBmcm9tIHN0YWNrIFtwcm9iYWJsZSBhZGRyPTAwMDAwMDAwMWU0OTE4NWRdCj4gPj4g WyAgIDIzLjc1MDUyOV0gV0FSTklORzogQ1BVOiAxIFBJRDogMTI5NiBhdCBrZXJuZWwvZG1hL2Rl YnVnLmM6MTE2MSBjaGVja19mb3Jfc3RhY2srMHhiNy8weDE5MAo+ID4+IFsgICAyMy43NTA1MzNd IE1vZHVsZXMgbGlua2VkIGluOiBtbWNfYmxvY2soKykgc3BpX3B4YTJ4eF9wbGF0Zm9ybSgrKSBw d21fbHBzc19wY2kgcHdtX2xwc3Mgc3BpX3B4YTJ4eF9wY2kgc2RoY2lfcGNpIGNxaGNpIGludGVs X21yZmxkX3B3cmJ0biBleHRjb25faW50ZWxfbXJmbGQgc2RoY2kgaW50ZWxfbXJmbGRfYWRjIGxl ZF9jbGFzcyBtbWNfY29yZSBpbGk5MzQxIG1pcGlfZGJpIHRpbnlkcm0gYmFja2xpZ2h0IHRpX2Fk czc5NTAgaW5kdXN0cmlhbGlvX3RyaWdnZXJlZF9idWZmZXIga2ZpZm9fYnVmIGludGVsX3NvY19w bWljX21yZmxkIGhjaV91YXJ0IGJ0YmNtCj4gPj4gWyAgIDIzLjc1MDU5OV0gQ1BVOiAxIFBJRDog MTI5NiBDb21tOiBtb2Rwcm9iZSBOb3QgdGFpbnRlZCA1LjAuMC1yYzcrICMyMzYKPiA+PiBbICAg MjMuNzUwNjA1XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBNZXJyaWZpZWxkL0JP REVHQSBCQVksIEJJT1MgNTQyIDIwMTUuMDEuMjE6MTguMTkuNDgKPiA+PiBbICAgMjMuNzUwNjIw XSBSSVA6IDAwMTA6Y2hlY2tfZm9yX3N0YWNrKzB4YjcvMHgxOTAKPiA+PiBbICAgMjMuNzUwNjMw XSBDb2RlOiA4YiA2ZCA1MCA0ZCA4NSBlZCA3NSAwNCA0YyA4YiA2ZCAxMCA0OCA4OSBlZiBlOCAy ZiA4YiA0NCAwMCA0OCA4OSBjNiA0YSA4ZCAwYyAyMyA0YyA4OSBlYSA0OCBjNyBjNyA4OCBkMCA4 MiBiNCBlOCA0MCA3YyBmOSBmZiA8MGY+IDBiIDhiIDA1IDc5IDAwIDRiIDAxIDg1IGMwIDc0IDA3 IDViIDVkIDQxIDVjIDQxIDVkIGMzIDhiIDA1IDU0Cj4gPj4gWyAgIDIzLjc1MDYzN10gUlNQOiAw MDAwOmZmZmY5N2JiYzAyOTJmYTAgRUZMQUdTOiAwMDAxMDI4Ngo+ID4+IFsgICAyMy43NTA2NDZd IFJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6IGZmZmY5N2JiYzAyOTAwMDAgUkNYOiAwMDAwMDAw MDAwMDAwMDA2Cj4gPj4gWyAgIDIzLjc1MDY1Ml0gUkRYOiAwMDAwMDAwMDAwMDAwMDA3IFJTSTog MDAwMDAwMDAwMDAwMDAwMiBSREk6IGZmZmY5NGIzM2UxMTU0NTAKPiA+PiBbICAgMjMuNzUwNjU4 XSBSQlA6IGZmZmY5NGIzM2M4NTc4YjAgUjA4OiAwMDAwMDAwMDAwMDAwMDAyIFIwOTogMDAwMDAw MDAwMDAyMDFjMAo+ID4+IFsgICAyMy43NTA2NjRdIFIxMDogMDAwMDAwMDZlY2IwY2NjNiBSMTE6 IDAwMDAwMDAwMDAwMzRmMzggUjEyOiAwMDAwMDAwMDAwMDAzMTZjCj4gPj4gWyAgIDIzLjc1MDY3 MF0gUjEzOiBmZmZmOTRiMzNjODRiMjUwIFIxNDogZmZmZjk0YjMzZGVkZDVhMCBSMTU6IDAwMDAw MDAwMDAwMDAwMDEKPiA+PiBbICAgMjMuNzUwNjc5XSBGUzogIDAwMDAwMDAwMDAwMDAwMDAoMDAw MCkgR1M6ZmZmZjk0YjMzZTEwMDAwMCgwMDYzKSBrbmxHUzowMDAwMDAwMGY3ZmFmNjkwCj4gPj4g WyAgIDIzLjc1MDY4Nl0gQ1M6ICAwMDEwIERTOiAwMDJiIEVTOiAwMDJiIENSMDogMDAwMDAwMDA4 MDA1MDAzMwo+ID4+IFsgICAyMy43NTA2OTFdIENSMjogMDAwMDAwMDBmN2Y1NGZhZiBDUjM6IDAw MDAwMDAwMDcyMmMwMDAgQ1I0OiAwMDAwMDAwMDAwMTAwNmUwCj4gPj4gWyAgIDIzLjc1MDY5Nl0g Q2FsbCBUcmFjZToKPiA+PiBbICAgMjMuNzUwNzEzXSAgZGVidWdfZG1hX21hcF9zZysweDEwMC8w eDM0MAo+ID4+IFsgICAyMy43NTA3MjddICA/IGRtYV9kaXJlY3RfbWFwX3NnKzB4M2IvMHhiMAo+ ID4+IFsgICAyMy43NTA3MzldICBzcGlfbWFwX2J1ZisweDI1YS8weDMwMAo+ID4+IFsgICAyMy43 NTA3NTFdICBfX3NwaV9wdW1wX21lc3NhZ2VzKzB4MmE0LzB4NjgwCj4gPj4gWyAgIDIzLjc1MDc2 Ml0gIF9fc3BpX3N5bmMrMHgxZGQvMHgxZjAKPiA+PiBbICAgMjMuNzUwNzczXSAgc3BpX3N5bmMr MHgyNi8weDQwCj4gPj4gWyAgIDIzLjc1MDc5MF0gIG1pcGlfZGJpX3R5cGVjM19jb21tYW5kX3Jl YWQrMHgxNGQvMHgyNDAgW21pcGlfZGJpXQo+ID4+IFsgICAyMy43NTA4MDJdICA/IHNwaV9maW5h bGl6ZV9jdXJyZW50X3RyYW5zZmVyKzB4MTAvMHgxMAo+ID4+IFsgICAyMy43NTA4MjFdICBtaXBp X2RiaV90eXBlYzNfY29tbWFuZCsweDFiYy8weDFkMCBbbWlwaV9kYmldCj4gPj4KPiA+IAo+ID4g QWZ0ZXIgZmV3IHJ1bnMgSSBkb24ndCBzZWUgdGhlIHdhcm5pbmcgYW55bW9yZS4gU28sCj4gPiBU ZXN0ZWQtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwu Y29tPgo+ID4gCj4gCj4gQ2FuIEkgaGF2ZSBhbiBhY2sgYXMgd2VsbCBpZiB5b3UncmUgc2F0aXNm aWVkIHdpdGggaXQ/CgpTdXJlLgoKQWNrZWQtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNo ZXZjaGVua29AbGludXguaW50ZWwuY29tPgoKSSBob3BlIHRvIHNlZSB0aGlzIGluIHY1LjEtcmMx Lgo+IAo+IE5vcmFsZi4KPiAKPiA+IFRob3VnaCBJIHdvdWxkIGxpa2UgdG8gZ2l2ZSBmZXcgbW9y ZSBkYXlzIHRvIG1vbml0b3IgdGhlIHN0YXRlLgo+ID4gKEkgYmVsaWV2ZSBpdCdzIGZpeGVkKQo+ ID4gCj4gPj4gUmVwb3J0ZWQtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29A bGludXguaW50ZWwuY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9y YWxmQHRyb25uZXMub3JnPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9p bGk5MjI1LmMgIHwgIDYgKystLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taXBpLWRi aS5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPj4gIGluY2x1ZGUvZHJt L3Rpbnlkcm0vbWlwaS1kYmkuaCAgICAgfCAgNSArLS0KPiA+PiAgMyBmaWxlcyBjaGFuZ2VkLCA0 OCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueWRy bS9pbGk5MjI1LmMKPiA+PiBpbmRleCAzZjU5Y2ZiZDMxYmEuLmE4NzA3ODY2N2UwNCAxMDA2NDQK PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMKPiA+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmMKPiA+PiBAQCAtMjk5LDcgKzI5OSw3IEBA IHN0YXRpYyB2b2lkIGlsaTkyMjVfcGlwZV9kaXNhYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3Bs YXlfcGlwZSAqcGlwZSkKPiA+PiAgCW1pcGktPmVuYWJsZWQgPSBmYWxzZTsKPiA+PiAgfQo+ID4+ ICAKPiA+PiAtc3RhdGljIGludCBpbGk5MjI1X2RiaV9jb21tYW5kKHN0cnVjdCBtaXBpX2RiaSAq bWlwaSwgdTggY21kLCB1OCAqcGFyLAo+ID4+ICtzdGF0aWMgaW50IGlsaTkyMjVfZGJpX2NvbW1h bmQoc3RydWN0IG1pcGlfZGJpICptaXBpLCB1OCAqY21kLCB1OCAqcGFyLAo+ID4+ICAJCQkgICAg ICAgc2l6ZV90IG51bSkKPiA+PiAgewo+ID4+ICAJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9IG1p cGktPnNwaTsKPiA+PiBAQCAtMzA5LDExICszMDksMTEgQEAgc3RhdGljIGludCBpbGk5MjI1X2Ri aV9jb21tYW5kKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwgdTggY21kLCB1OCAqcGFyLAo+ID4+ICAK PiA+PiAgCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChtaXBpLT5kYywgMCk7Cj4gPj4gIAlzcGVl ZF9oeiA9IG1pcGlfZGJpX3NwaV9jbWRfbWF4X3NwZWVkKHNwaSwgMSk7Cj4gPj4gLQlyZXQgPSB0 aW55ZHJtX3NwaV90cmFuc2ZlcihzcGksIHNwZWVkX2h6LCBOVUxMLCA4LCAmY21kLCAxKTsKPiA+ PiArCXJldCA9IHRpbnlkcm1fc3BpX3RyYW5zZmVyKHNwaSwgc3BlZWRfaHosIE5VTEwsIDgsIGNt ZCwgMSk7Cj4gPj4gIAlpZiAocmV0IHx8ICFudW0pCj4gPj4gIAkJcmV0dXJuIHJldDsKPiA+PiAg Cj4gPj4gLQlpZiAoY21kID09IElMSTkyMjVfV1JJVEVfREFUQV9UT19HUkFNICYmICFtaXBpLT5z d2FwX2J5dGVzKQo+ID4+ICsJaWYgKCpjbWQgPT0gSUxJOTIyNV9XUklURV9EQVRBX1RPX0dSQU0g JiYgIW1pcGktPnN3YXBfYnl0ZXMpCj4gPj4gIAkJYnB3ID0gMTY7Cj4gPj4gIAo+ID4+ICAJZ3Bp b2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKG1pcGktPmRjLCAxKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55ZHJt L21pcGktZGJpLmMKPiA+PiBpbmRleCAyNDZlNzA4YTlmZjcuLjRhNGNkN2U3MjkzOCAxMDA2NDQK PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9taXBpLWRiaS5jCj4gPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuYwo+ID4+IEBAIC0xNTMsMTYgKzE1Myw0 MiBAQCBFWFBPUlRfU1lNQk9MKG1pcGlfZGJpX2NvbW1hbmRfcmVhZCk7Cj4gPj4gICAqLwo+ID4+ ICBpbnQgbWlwaV9kYmlfY29tbWFuZF9idWYoc3RydWN0IG1pcGlfZGJpICptaXBpLCB1OCBjbWQs IHU4ICpkYXRhLCBzaXplX3QgbGVuKQo+ID4+ICB7Cj4gPj4gKwl1OCAqY21kYnVmOwo+ID4+ICAJ aW50IHJldDsKPiA+PiAgCj4gPj4gKwkvKiBTUEkgcmVxdWlyZXMgZG1hLXNhZmUgYnVmZmVycyAq Lwo+ID4+ICsJY21kYnVmID0ga21lbWR1cCgmY21kLCAxLCBHRlBfS0VSTkVMKTsKPiA+PiArCWlm ICghY21kYnVmKQo+ID4+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4+ICsKPiA+PiAgCW11dGV4X2xv Y2soJm1pcGktPmNtZGxvY2spOwo+ID4+IC0JcmV0ID0gbWlwaS0+Y29tbWFuZChtaXBpLCBjbWQs IGRhdGEsIGxlbik7Cj4gPj4gKwlyZXQgPSBtaXBpLT5jb21tYW5kKG1pcGksIGNtZGJ1ZiwgZGF0 YSwgbGVuKTsKPiA+PiAgCW11dGV4X3VubG9jaygmbWlwaS0+Y21kbG9jayk7Cj4gPj4gIAo+ID4+ ICsJa2ZyZWUoY21kYnVmKTsKPiA+PiArCj4gPj4gIAlyZXR1cm4gcmV0Owo+ID4+ICB9Cj4gPj4g IEVYUE9SVF9TWU1CT0wobWlwaV9kYmlfY29tbWFuZF9idWYpOwo+ID4+ICAKPiA+PiArLyogVGhp cyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IG1pcGlfZGJpX2NvbW1hbmQoKSAqLwo+ID4+ICtpbnQg bWlwaV9kYmlfY29tbWFuZF9zdGFja2J1ZihzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4IGNtZCwg dTggKmRhdGEsIHNpemVfdCBsZW4pCj4gPj4gK3sKPiA+PiArCXU4ICpidWY7Cj4gPj4gKwlpbnQg cmV0Owo+ID4+ICsKPiA+PiArCWJ1ZiA9IGttZW1kdXAoZGF0YSwgbGVuLCBHRlBfS0VSTkVMKTsK PiA+PiArCWlmICghYnVmKQo+ID4+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4+ICsKPiA+PiArCXJl dCA9IG1pcGlfZGJpX2NvbW1hbmRfYnVmKG1pcGksIGNtZCwgYnVmLCBsZW4pOwo+ID4+ICsKPiA+ PiArCWtmcmVlKGJ1Zik7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIHJldDsKPiA+PiArfQo+ID4+ICtF WFBPUlRfU1lNQk9MKG1pcGlfZGJpX2NvbW1hbmRfc3RhY2tidWYpOwo+ID4+ICsKPiA+PiAgLyoq Cj4gPj4gICAqIG1pcGlfZGJpX2J1Zl9jb3B5IC0gQ29weSBhIGZyYW1lYnVmZmVyLCB0cmFuc2Zv cm1pbmcgaXQgaWYgbmVjZXNzYXJ5Cj4gPj4gICAqIEBkc3Q6IFRoZSBkZXN0aW5hdGlvbiBidWZm ZXIKPiA+PiBAQCAtNzcyLDE4ICs3OTgsMTggQEAgc3RhdGljIGludCBtaXBpX2RiaV9zcGkxX3Ry YW5zZmVyKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwgaW50IGRjLAo+ID4+ICAJcmV0dXJuIDA7Cj4g Pj4gIH0KPiA+PiAgCj4gPj4gLXN0YXRpYyBpbnQgbWlwaV9kYmlfdHlwZWMxX2NvbW1hbmQoc3Ry dWN0IG1pcGlfZGJpICptaXBpLCB1OCBjbWQsCj4gPj4gK3N0YXRpYyBpbnQgbWlwaV9kYmlfdHlw ZWMxX2NvbW1hbmQoc3RydWN0IG1pcGlfZGJpICptaXBpLCB1OCAqY21kLAo+ID4+ICAJCQkJICAg dTggKnBhcmFtZXRlcnMsIHNpemVfdCBudW0pCj4gPj4gIHsKPiA+PiAtCXVuc2lnbmVkIGludCBi cHcgPSAoY21kID09IE1JUElfRENTX1dSSVRFX01FTU9SWV9TVEFSVCkgPyAxNiA6IDg7Cj4gPj4g Kwl1bnNpZ25lZCBpbnQgYnB3ID0gKCpjbWQgPT0gTUlQSV9EQ1NfV1JJVEVfTUVNT1JZX1NUQVJU KSA/IDE2IDogODsKPiA+PiAgCWludCByZXQ7Cj4gPj4gIAo+ID4+IC0JaWYgKG1pcGlfZGJpX2Nv bW1hbmRfaXNfcmVhZChtaXBpLCBjbWQpKQo+ID4+ICsJaWYgKG1pcGlfZGJpX2NvbW1hbmRfaXNf cmVhZChtaXBpLCAqY21kKSkKPiA+PiAgCQlyZXR1cm4gLUVOT1RTVVBQOwo+ID4+ICAKPiA+PiAt CU1JUElfREJJX0RFQlVHX0NPTU1BTkQoY21kLCBwYXJhbWV0ZXJzLCBudW0pOwo+ID4+ICsJTUlQ SV9EQklfREVCVUdfQ09NTUFORCgqY21kLCBwYXJhbWV0ZXJzLCBudW0pOwo+ID4+ICAKPiA+PiAt CXJldCA9IG1pcGlfZGJpX3NwaTFfdHJhbnNmZXIobWlwaSwgMCwgJmNtZCwgMSwgOCk7Cj4gPj4g KwlyZXQgPSBtaXBpX2RiaV9zcGkxX3RyYW5zZmVyKG1pcGksIDAsIGNtZCwgMSwgOCk7Cj4gPj4g IAlpZiAocmV0IHx8ICFudW0pCj4gPj4gIAkJcmV0dXJuIHJldDsKPiA+PiAgCj4gPj4gQEAgLTc5 Miw3ICs4MTgsNyBAQCBzdGF0aWMgaW50IG1pcGlfZGJpX3R5cGVjMV9jb21tYW5kKHN0cnVjdCBt aXBpX2RiaSAqbWlwaSwgdTggY21kLAo+ID4+ICAKPiA+PiAgLyogTUlQSSBEQkkgVHlwZSBDIE9w dGlvbiAzICovCj4gPj4gIAo+ID4+IC1zdGF0aWMgaW50IG1pcGlfZGJpX3R5cGVjM19jb21tYW5k X3JlYWQoc3RydWN0IG1pcGlfZGJpICptaXBpLCB1OCBjbWQsCj4gPj4gK3N0YXRpYyBpbnQgbWlw aV9kYmlfdHlwZWMzX2NvbW1hbmRfcmVhZChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4ICpjbWQs Cj4gPj4gIAkJCQkJdTggKmRhdGEsIHNpemVfdCBsZW4pCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBz cGlfZGV2aWNlICpzcGkgPSBtaXBpLT5zcGk7Cj4gPj4gQEAgLTgwMSw3ICs4MjcsNyBAQCBzdGF0 aWMgaW50IG1pcGlfZGJpX3R5cGVjM19jb21tYW5kX3JlYWQoc3RydWN0IG1pcGlfZGJpICptaXBp LCB1OCBjbWQsCj4gPj4gIAlzdHJ1Y3Qgc3BpX3RyYW5zZmVyIHRyWzJdID0gewo+ID4+ICAJCXsK PiA+PiAgCQkJLnNwZWVkX2h6ID0gc3BlZWRfaHosCj4gPj4gLQkJCS50eF9idWYgPSAmY21kLAo+ ID4+ICsJCQkudHhfYnVmID0gY21kLAo+ID4+ICAJCQkubGVuID0gMSwKPiA+PiAgCQl9LCB7Cj4g Pj4gIAkJCS5zcGVlZF9oeiA9IHNwZWVkX2h6LAo+ID4+IEBAIC04MTksOCArODQ1LDggQEAgc3Rh dGljIGludCBtaXBpX2RiaV90eXBlYzNfY29tbWFuZF9yZWFkKHN0cnVjdCBtaXBpX2RiaSAqbWlw aSwgdTggY21kLAo+ID4+ICAJICogU3VwcG9ydCBub24tc3RhbmRhcmQgMjQtYml0IGFuZCAzMi1i aXQgTm9raWEgcmVhZCBjb21tYW5kcyB3aGljaAo+ID4+ICAJICogc3RhcnQgd2l0aCBhIGR1bW15 IGNsb2NrLCBzbyB3ZSBuZWVkIHRvIHJlYWQgYW4gZXh0cmEgYnl0ZS4KPiA+PiAgCSAqLwo+ID4+ IC0JaWYgKGNtZCA9PSBNSVBJX0RDU19HRVRfRElTUExBWV9JRCB8fAo+ID4+IC0JICAgIGNtZCA9 PSBNSVBJX0RDU19HRVRfRElTUExBWV9TVEFUVVMpIHsKPiA+PiArCWlmICgqY21kID09IE1JUElf RENTX0dFVF9ESVNQTEFZX0lEIHx8Cj4gPj4gKwkgICAgKmNtZCA9PSBNSVBJX0RDU19HRVRfRElT UExBWV9TVEFUVVMpIHsKPiA+PiAgCQlpZiAoIShsZW4gPT0gMyB8fCBsZW4gPT0gNCkpCj4gPj4g IAkJCXJldHVybiAtRUlOVkFMOwo+ID4+ICAKPiA+PiBAQCAtODUwLDcgKzg3Niw3IEBAIHN0YXRp YyBpbnQgbWlwaV9kYmlfdHlwZWMzX2NvbW1hbmRfcmVhZChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGks IHU4IGNtZCwKPiA+PiAgCQkJZGF0YVtpXSA9IChidWZbaV0gPDwgMSkgfCAhIShidWZbaSArIDFd ICYgQklUKDcpKTsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gLQlNSVBJX0RCSV9ERUJVR19DT01NQU5E KGNtZCwgZGF0YSwgbGVuKTsKPiA+PiArCU1JUElfREJJX0RFQlVHX0NPTU1BTkQoKmNtZCwgZGF0 YSwgbGVuKTsKPiA+PiAgCj4gPj4gIGVycl9mcmVlOgo+ID4+ICAJa2ZyZWUoYnVmKTsKPiA+PiBA QCAtODU4LDcgKzg4NCw3IEBAIHN0YXRpYyBpbnQgbWlwaV9kYmlfdHlwZWMzX2NvbW1hbmRfcmVh ZChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4IGNtZCwKPiA+PiAgCXJldHVybiByZXQ7Cj4gPj4g IH0KPiA+PiAgCj4gPj4gLXN0YXRpYyBpbnQgbWlwaV9kYmlfdHlwZWMzX2NvbW1hbmQoc3RydWN0 IG1pcGlfZGJpICptaXBpLCB1OCBjbWQsCj4gPj4gK3N0YXRpYyBpbnQgbWlwaV9kYmlfdHlwZWMz X2NvbW1hbmQoc3RydWN0IG1pcGlfZGJpICptaXBpLCB1OCAqY21kLAo+ID4+ICAJCQkJICAgdTgg KnBhciwgc2l6ZV90IG51bSkKPiA+PiAgewo+ID4+ICAJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9 IG1pcGktPnNwaTsKPiA+PiBAQCAtODY2LDE4ICs4OTIsMTggQEAgc3RhdGljIGludCBtaXBpX2Ri aV90eXBlYzNfY29tbWFuZChzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4IGNtZCwKPiA+PiAgCXUz MiBzcGVlZF9oejsKPiA+PiAgCWludCByZXQ7Cj4gPj4gIAo+ID4+IC0JaWYgKG1pcGlfZGJpX2Nv bW1hbmRfaXNfcmVhZChtaXBpLCBjbWQpKQo+ID4+ICsJaWYgKG1pcGlfZGJpX2NvbW1hbmRfaXNf cmVhZChtaXBpLCAqY21kKSkKPiA+PiAgCQlyZXR1cm4gbWlwaV9kYmlfdHlwZWMzX2NvbW1hbmRf cmVhZChtaXBpLCBjbWQsIHBhciwgbnVtKTsKPiA+PiAgCj4gPj4gLQlNSVBJX0RCSV9ERUJVR19D T01NQU5EKGNtZCwgcGFyLCBudW0pOwo+ID4+ICsJTUlQSV9EQklfREVCVUdfQ09NTUFORCgqY21k LCBwYXIsIG51bSk7Cj4gPj4gIAo+ID4+ICAJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKG1pcGkt PmRjLCAwKTsKPiA+PiAgCXNwZWVkX2h6ID0gbWlwaV9kYmlfc3BpX2NtZF9tYXhfc3BlZWQoc3Bp LCAxKTsKPiA+PiAtCXJldCA9IHRpbnlkcm1fc3BpX3RyYW5zZmVyKHNwaSwgc3BlZWRfaHosIE5V TEwsIDgsICZjbWQsIDEpOwo+ID4+ICsJcmV0ID0gdGlueWRybV9zcGlfdHJhbnNmZXIoc3BpLCBz cGVlZF9oeiwgTlVMTCwgOCwgY21kLCAxKTsKPiA+PiAgCWlmIChyZXQgfHwgIW51bSkKPiA+PiAg CQlyZXR1cm4gcmV0Owo+ID4+ICAKPiA+PiAtCWlmIChjbWQgPT0gTUlQSV9EQ1NfV1JJVEVfTUVN T1JZX1NUQVJUICYmICFtaXBpLT5zd2FwX2J5dGVzKQo+ID4+ICsJaWYgKCpjbWQgPT0gTUlQSV9E Q1NfV1JJVEVfTUVNT1JZX1NUQVJUICYmICFtaXBpLT5zd2FwX2J5dGVzKQo+ID4+ICAJCWJwdyA9 IDE2Owo+ID4+ICAKPiA+PiAgCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChtaXBpLT5kYywgMSk7 Cj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaCBiL2luY2x1 ZGUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaAo+ID4+IGluZGV4IGFkN2U2YmVkYWI1Zi4uNDY0YTQ3 ZDEwMTNkIDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaAo+ ID4+ICsrKyBiL2luY2x1ZGUvZHJtL3Rpbnlkcm0vbWlwaS1kYmkuaAo+ID4+IEBAIC00Myw3ICs0 Myw3IEBAIHN0cnVjdCBtaXBpX2RiaSB7Cj4gPj4gIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwo+ ID4+ICAJYm9vbCBlbmFibGVkOwo+ID4+ICAJc3RydWN0IG11dGV4IGNtZGxvY2s7Cj4gPj4gLQlp bnQgKCpjb21tYW5kKShzdHJ1Y3QgbWlwaV9kYmkgKm1pcGksIHU4IGNtZCwgdTggKnBhcmFtLCBz aXplX3QgbnVtKTsKPiA+PiArCWludCAoKmNvbW1hbmQpKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwg dTggKmNtZCwgdTggKnBhcmFtLCBzaXplX3QgbnVtKTsKPiA+PiAgCWNvbnN0IHU4ICpyZWFkX2Nv bW1hbmRzOwo+ID4+ICAJc3RydWN0IGdwaW9fZGVzYyAqZGM7Cj4gPj4gIAl1MTYgKnR4X2J1ZjsK PiA+PiBAQCAtODMsNiArODMsNyBAQCB1MzIgbWlwaV9kYmlfc3BpX2NtZF9tYXhfc3BlZWQoc3Ry dWN0IHNwaV9kZXZpY2UgKnNwaSwgc2l6ZV90IGxlbik7Cj4gPj4gIAo+ID4+ICBpbnQgbWlwaV9k YmlfY29tbWFuZF9yZWFkKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwgdTggY21kLCB1OCAqdmFsKTsK PiA+PiAgaW50IG1pcGlfZGJpX2NvbW1hbmRfYnVmKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwgdTgg Y21kLCB1OCAqZGF0YSwgc2l6ZV90IGxlbik7Cj4gPj4gK2ludCBtaXBpX2RiaV9jb21tYW5kX3N0 YWNrYnVmKHN0cnVjdCBtaXBpX2RiaSAqbWlwaSwgdTggY21kLCB1OCAqZGF0YSwgc2l6ZV90IGxl bik7Cj4gPj4gIGludCBtaXBpX2RiaV9idWZfY29weSh2b2lkICpkc3QsIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAo+ID4+ICAJCSAgICAgIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCwgYm9vbCBz d2FwKTsKPiA+PiAgLyoqCj4gPj4gQEAgLTEwMCw3ICsxMDEsNyBAQCBpbnQgbWlwaV9kYmlfYnVm X2NvcHkodm9pZCAqZHN0LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+PiAgI2RlZmlu ZSBtaXBpX2RiaV9jb21tYW5kKG1pcGksIGNtZCwgc2VxLi4uKSBcCj4gPj4gICh7IFwKPiA+PiAg CXU4IGRbXSA9IHsgc2VxIH07IFwKPiA+PiAtCW1pcGlfZGJpX2NvbW1hbmRfYnVmKG1pcGksIGNt ZCwgZCwgQVJSQVlfU0laRShkKSk7IFwKPiA+PiArCW1pcGlfZGJpX2NvbW1hbmRfc3RhY2tidWYo bWlwaSwgY21kLCBkLCBBUlJBWV9TSVpFKGQpKTsgXAo+ID4+ICB9KQo+ID4+ICAKPiA+PiAgI2lm ZGVmIENPTkZJR19ERUJVR19GUwo+ID4+IC0tIAo+ID4+IDIuMjAuMQo+ID4+Cj4gPiAKCi0tIApX aXRoIEJlc3QgUmVnYXJkcywKQW5keSBTaGV2Y2hlbmtvCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVs