From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kx97Y-0003MO-2q for qemu-devel@nongnu.org; Mon, 03 Nov 2008 18:46:08 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kx97X-0003MC-7X for qemu-devel@nongnu.org; Mon, 03 Nov 2008 18:46:07 -0500 Received: from [199.232.76.173] (port=54335 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kx97X-0003M9-3t for qemu-devel@nongnu.org; Mon, 03 Nov 2008 18:46:07 -0500 Received: from rv-out-0708.google.com ([209.85.198.243]:45657) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Kx97W-0000UZ-Lk for qemu-devel@nongnu.org; Mon, 03 Nov 2008 18:46:07 -0500 Received: by rv-out-0708.google.com with SMTP id f25so2572658rvb.22 for ; Mon, 03 Nov 2008 15:46:04 -0800 (PST) Message-ID: Date: Tue, 4 Nov 2008 00:46:04 +0100 From: "andrzej zaborowski" Subject: Re: [Qemu-devel] [PATCH] tc6393xb: non-accelerated FB support In-Reply-To: <20081102194047.GA30249@doriath.ww600.siemens.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline References: <1225631790-15735-1-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-2-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-3-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-4-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-5-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-6-git-send-email-dbaryshkov@gmail.com> <1225631790-15735-7-git-send-email-dbaryshkov@gmail.com> <20081102173618.GA13998@doriath.ww600.siemens.net> <20081102194047.GA30249@doriath.ww600.siemens.net> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Dmitry Baryshkov Cc: qemu-devel@nongnu.org MjAwOC8xMS8yIERtaXRyeSBCYXJ5c2hrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPjoKWy4uLl0K PiBBcyBhIHNlY29uZCB0aG91Z2h0IEkndmUgaW1wbGVtZW50ZWQgYmxhbmtpbmcsIGltcGxlbWVu dGVkIHlvdXIKPiBzdWdnZXN0aW9ucy4gUGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBmb2xsb3dp bmcgcGF0Y2guCgpUaGFua3MsIHRoaXMgbG9va3MgYmV0dGVyLgoKPgo+IEZyb20gNTdjZDY2ZmVm YzMxYWMxOGYxZjg5NmE4Y2E1MzQ0MWIwMWYwZDM0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK PiBGcm9tOiBEbWl0cnkgQmFyeXNoa292IDxkYmFyeXNoa292QGdtYWlsLmNvbT4KPiBEYXRlOiBU aHUsIDExIFNlcCAyMDA4IDA0OjM5OjE1ICswNDAwCj4gU3ViamVjdDogW1BBVENIXSB0YzYzOTN4 Yjogbm9uLWFjY2VsZXJhdGVkIEZCIHN1cHBvcnQKPgo+IFNpZ25lZC1vZmYtYnk6IERtaXRyeSBC YXJ5c2hrb3YgPGRiYXJ5c2hrb3ZAZ21haWwuY29tPgo+IC0tLQo+ICBody9kZXZpY2VzLmggICAg ICAgICAgIHwgICAgNCArLQo+ICBody90YzYzOTN4Yi5jICAgICAgICAgIHwgIDEyMCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgaHcvdGM2MzkzeGJf dGVtcGxhdGUuaCB8ICAgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaHcvdG9z YS5jICAgICAgICAgICAgICB8ICAgMTcgKysrKystLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDIwNSBp bnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaHcvdGM2 MzkzeGJfdGVtcGxhdGUuaAo+Cj4gZGlmZiAtLWdpdCBhL2h3L2RldmljZXMuaCBiL2h3L2Rldmlj ZXMuaAo+IGluZGV4IDQ1ZmVhZDkuLjk1NzJhNjMgMTAwNjQ0Cj4gLS0tIGEvaHcvZGV2aWNlcy5o Cj4gKysrIGIvaHcvZGV2aWNlcy5oCj4gQEAgLTY2LDkgKzY2LDExIEBAIHZvaWQgdHVzYjYwMTBf cG93ZXIoc3RydWN0IHR1c2JfcyAqcywgaW50IG9uKTsKPgo+ICAvKiB0YzYzOTN4Yi5jICovCj4g IHN0cnVjdCB0YzYzOTN4Yl9zOwo+IC1zdHJ1Y3QgdGM2MzkzeGJfcyAqdGM2MzkzeGJfaW5pdCh1 aW50MzJfdCBiYXNlLCBxZW11X2lycSBpcnEpOwo+ICsjZGVmaW5lIFRDNjM5M1hCX1JBTSAgIDB4 MTEwMDAwIC8qIGFtb3VudCBvZiByYW0gZm9yIFZpZGVvIGFuZCBVU0IgKi8KPiArc3RydWN0IHRj NjM5M3hiX3MgKnRjNjM5M3hiX2luaXQodWludDMyX3QgYmFzZSwgcWVtdV9pcnEgaXJxLCBEaXNw bGF5U3RhdGUgKmRzKTsKPiAgdm9pZCB0YzYzOTN4Yl9ncGlvX291dF9zZXQoc3RydWN0IHRjNjM5 M3hiX3MgKnMsIGludCBsaW5lLAo+ICAgICAgICAgICAgICAgICAgICAgcWVtdV9pcnEgaGFuZGxl cik7Cj4gIHFlbXVfaXJxICp0YzYzOTN4Yl9ncGlvX2luX2dldChzdHJ1Y3QgdGM2MzkzeGJfcyAq cyk7Cj4gK3FlbXVfaXJxIHRjNjM5M3hiX2wzdl9nZXQoc3RydWN0IHRjNjM5M3hiX3MgKnMpOwo+ Cj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9ody90YzYzOTN4Yi5jIGIvaHcvdGM2MzkzeGIuYwo+ IGluZGV4IDJjMTg5ODQuLjhhM2ZmMTggMTAwNjQ0Cj4gLS0tIGEvaHcvdGM2MzkzeGIuYwo+ICsr KyBiL2h3L3RjNjM5M3hiLmMKPiBAQCAtMTEsNiArMTEsOCBAQAo+ICAjaW5jbHVkZSAicHhhLmgi Cj4gICNpbmNsdWRlICJkZXZpY2VzLmgiCj4gICNpbmNsdWRlICJmbGFzaC5oIgo+ICsjaW5jbHVk ZSAiY29uc29sZS5oIgo+ICsjaW5jbHVkZSAicGl4ZWxfb3BzLmgiCj4KPiAgI2RlZmluZSAgICAg ICAgSVJRX1RDNjM5M19OQU5EICAgICAgICAgMAo+ICAjZGVmaW5lICAgICAgICBJUlFfVEM2Mzkz X01NQyAgICAgICAgICAxCj4gQEAgLTExOSw2ICsxMjEsMTQgQEAgc3RydWN0IHRjNjM5M3hiX3Mg ewo+ICAgICB1aW50MzJfdCBuYW5kX3BoeXM7Cj4gICAgIHN0cnVjdCBuYW5kX2ZsYXNoX3MgKmZs YXNoOwo+ICAgICBzdHJ1Y3QgZWNjX3N0YXRlX3MgZWNjOwo+ICsKPiArICAgIERpc3BsYXlTdGF0 ZSAqZHM7Cj4gKyAgICBRRU1VQ29uc29sZSAqY29uc29sZTsKPiArICAgIHJhbV9hZGRyX3QgdnJh bV9hZGRyOwo+ICsgICAgdWludDMyX3Qgc2NyX3dpZHRoLCBzY3JfaGVpZ2h0OyAvKiBpbiBwaXhl bHMgKi8KPiArICAgIHFlbXVfaXJxIGwzdjsKPiArICAgIHVuc2lnbmVkIGJsYW5rIDogMSwKPiAr ICAgICAgICAgICAgIGJsYW5rZWQgOiAxOwo+ICB9Owo+Cj4gIHFlbXVfaXJxICp0YzYzOTN4Yl9n cGlvX2luX2dldChzdHJ1Y3QgdGM2MzkzeGJfcyAqcykKPiBAQCAtMTY0LDYgKzE3NCwxNiBAQCBz dGF0aWMgdm9pZCB0YzYzOTN4Yl9ncGlvX2hhbmRsZXJfdXBkYXRlKHN0cnVjdCB0YzYzOTN4Yl9z ICpzKQo+ICAgICBzLT5wcmV2X2xldmVsID0gbGV2ZWw7Cj4gIH0KPgo+ICtxZW11X2lycSB0YzYz OTN4Yl9sM3ZfZ2V0KHN0cnVjdCB0YzYzOTN4Yl9zICpzKSB7Cj4gKyAgICByZXR1cm4gcy0+bDN2 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0YzYzOTN4Yl9sM3Yodm9pZCAqb3BhcXVlLCBpbnQg bGluZSwgaW50IGxldmVsKSB7Cj4gKyAgICBzdHJ1Y3QgdGM2MzkzeGJfcyAqcyA9IG9wYXF1ZTsK PiArICAgIHMtPmJsYW5rID0gIWxldmVsOwo+ICsgICAgZnByaW50ZihzdGRlcnIsICJMM1Y6ICVk XG4iLCBsZXZlbCk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIHRjNjM5M3hiX3N1Yl9pcnEodm9p ZCAqb3BhcXVlLCBpbnQgbGluZSwgaW50IGxldmVsKSB7Cj4gICAgIHN0cnVjdCB0YzYzOTN4Yl9z ICpzID0gb3BhcXVlOwo+ICAgICB1aW50OF90IGlzciA9IHMtPnNjci5JU1I7Cj4gQEAgLTM5NSw2 ICs0MTUsODUgQEAgc3RhdGljIHZvaWQgdGM2MzkzeGJfbmFuZF93cml0ZWIoc3RydWN0IHRjNjM5 M3hiX3MgKnMsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkgYWRkciwgdmFsdWUgJiAweGZmKTsKPiAgfQo+ Cj4gKyNkZWZpbmUgQklUUyA4Cj4gKyNpbmNsdWRlICJ0YzYzOTN4Yl90ZW1wbGF0ZS5oIgo+ICsj ZGVmaW5lIEJJVFMgMTUKPiArI2luY2x1ZGUgInRjNjM5M3hiX3RlbXBsYXRlLmgiCj4gKyNkZWZp bmUgQklUUyAxNgo+ICsjaW5jbHVkZSAidGM2MzkzeGJfdGVtcGxhdGUuaCIKPiArI2RlZmluZSBC SVRTIDI0Cj4gKyNpbmNsdWRlICJ0YzYzOTN4Yl90ZW1wbGF0ZS5oIgo+ICsjZGVmaW5lIEJJVFMg MzIKPiArI2luY2x1ZGUgInRjNjM5M3hiX3RlbXBsYXRlLmgiCj4gKwo+ICtzdGF0aWMgdm9pZCB0 YzYzOTN4Yl9kcmF3X2dyYXBoaWMoc3RydWN0IHRjNjM5M3hiX3MgKnMsIGludCBmdWxsX3VwZGF0 ZSkKPiArewo+ICsgICAgc3dpdGNoIChzLT5kcy0+ZGVwdGgpIHsKPiArICAgICAgICBjYXNlIDg6 Cj4gKyAgICAgICAgICAgIHRjNjM5M3hiX2RyYXdfZ3JhcGhpYzgocyk7Cj4gKyAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgIGNhc2UgMTU6Cj4gKyAgICAgICAgICAgIHRjNjM5M3hiX2RyYXdf Z3JhcGhpYzE1KHMpOwo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIDE2Ogo+ ICsgICAgICAgICAgICB0YzYzOTN4Yl9kcmF3X2dyYXBoaWMxNihzKTsKPiArICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgY2FzZSAyNDoKPiArICAgICAgICAgICAgdGM2MzkzeGJfZHJhd19n cmFwaGljMjQocyk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgMzI6Cj4g KyAgICAgICAgICAgIHRjNjM5M3hiX2RyYXdfZ3JhcGhpYzMyKHMpOwo+ICsgICAgICAgICAgICBi cmVhazsKPiArICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICBwcmludGYoInRjNjM5M3hi OiB1bmtub3duIGRlcHRoICVkXG4iLCBzLT5kcy0+ZGVwdGgpOwo+ICsgICAgICAgICAgICByZXR1 cm47Cj4gKyAgICB9Cj4gKwo+ICsgICAgZHB5X3VwZGF0ZShzLT5kcywgMCwgMCwgcy0+c2NyX3dp ZHRoLCBzLT5zY3JfaGVpZ2h0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGM2MzkzeGJfZHJh d19ibGFuayhzdHJ1Y3QgdGM2MzkzeGJfcyAqcywgaW50IGZ1bGxfdXBkYXRlKQo+ICt7Cj4gKyAg ICBpbnQgaSwgdzsKPiArICAgIHVpbnQ4X3QgKmQ7Cj4gKwo+ICsgICAgaWYgKCFmdWxsX3VwZGF0 ZSkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgdyA9IHMtPnNjcl93aWR0aCAqICgocy0+ ZHMtPmRlcHRoICsgNykgPj4gMyk7Cj4gKyAgICBkID0gcy0+ZHMtPmRhdGE7Cj4gKyAgICBmb3Io aSA9IDA7IGkgPCBzLT5zY3JfaGVpZ2h0OyBpKyspIHsKPiArICAgICAgICBtZW1zZXQoZCwgMCwg dyk7Cj4gKyAgICAgICAgZCArPSBzLT5kcy0+bGluZXNpemU7Cj4gKyAgICB9Cj4gKwo+ICsgICAg ZHB5X3VwZGF0ZShzLT5kcywgMCwgMCwgcy0+c2NyX3dpZHRoLCBzLT5zY3JfaGVpZ2h0KTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgdGM2MzkzeGJfdXBkYXRlX2Rpc3BsYXkodm9pZCAqb3BhcXVl KQo+ICt7Cj4gKyAgICBzdHJ1Y3QgdGM2MzkzeGJfcyAqcyA9IG9wYXF1ZTsKPiArICAgIGludCBm dWxsX3VwZGF0ZTsKPiArCj4gKyAgICBpZiAocy0+c2NyX3dpZHRoID09IDAgfHwgcy0+c2NyX2hl aWdodCA9PSAwKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBmdWxsX3VwZGF0ZSA9IDA7 Cj4gKyAgICBpZiAocy0+YmxhbmtlZCAhPSBzLT5ibGFuaykgewo+ICsgICAgICAgIHMtPmJsYW5r ZWQgPSBzLT5ibGFuazsKPiArICAgICAgICBmdWxsX3VwZGF0ZSA9IDE7Cj4gKyAgICB9Cj4gKyAg ICBpZiAocy0+c2NyX3dpZHRoICE9IHMtPmRzLT53aWR0aCB8fCBzLT5zY3JfaGVpZ2h0ICE9IHMt PmRzLT5oZWlnaHQpIHsKPiArICAgICAgICBxZW11X2NvbnNvbGVfcmVzaXplKHMtPmNvbnNvbGUs IHMtPnNjcl93aWR0aCwgcy0+c2NyX2hlaWdodCk7Cj4gKyAgICAgICAgZnVsbF91cGRhdGUgPSAx Owo+ICsgICAgfQo+ICsgICAgaWYgKHMtPmJsYW5rZWQpCj4gKyAgICAgICAgdGM2MzkzeGJfZHJh d19ibGFuayhzLCBmdWxsX3VwZGF0ZSk7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgdGM2MzkzeGJf ZHJhd19ncmFwaGljKHMsIGZ1bGxfdXBkYXRlKTsKPiArfQo+ICsKPiArCj4gIHN0YXRpYyB1aW50 MzJfdCB0YzYzOTN4Yl9yZWFkYih2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRy KSB7Cj4gICAgIHN0cnVjdCB0YzYzOTN4Yl9zICpzID0gb3BhcXVlOwo+ICAgICBhZGRyIC09IHMt PnRhcmdldF9iYXNlOwo+IEBAIC00NjUsNyArNTY0LDcgQEAgc3RhdGljIHZvaWQgdGM2MzkzeGJf d3JpdGVsKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQzMl90IHZh bHUKPiAgICAgdGM2MzkzeGJfd3JpdGViKG9wYXF1ZSwgYWRkciArIDMsIHZhbHVlID4+IDI0KTsK PiAgfQo+Cj4gLXN0cnVjdCB0YzYzOTN4Yl9zICp0YzYzOTN4Yl9pbml0KHVpbnQzMl90IGJhc2Us IHFlbXVfaXJxIGlycSkKPiArc3RydWN0IHRjNjM5M3hiX3MgKnRjNjM5M3hiX2luaXQodWludDMy X3QgYmFzZSwgcWVtdV9pcnEgaXJxLCBEaXNwbGF5U3RhdGUgKmRzKQo+ICB7Cj4gICAgIGludCBp b21lbXR5cGU7Cj4gICAgIHN0cnVjdCB0YzYzOTN4Yl9zICpzOwo+IEBAIC00ODUsMTMgKzU4NCwz MCBAQCBzdHJ1Y3QgdGM2MzkzeGJfcyAqdGM2MzkzeGJfaW5pdCh1aW50MzJfdCBiYXNlLCBxZW11 X2lycSBpcnEpCj4gICAgIHMtPmlycSA9IGlycTsKPiAgICAgcy0+Z3Bpb19pbiA9IHFlbXVfYWxs b2NhdGVfaXJxcyh0YzYzOTN4Yl9ncGlvX3NldCwgcywgVEM2MzkzWEJfR1BJT1MpOwo+Cj4gKyAg ICBzLT5sM3YgPSAqcWVtdV9hbGxvY2F0ZV9pcnFzKHRjNjM5M3hiX2wzdiwgcywgMSk7Cj4gKyAg ICBzLT5ibGFua2VkID0gMTsKPiArCj4gICAgIHMtPnN1Yl9pcnFzID0gcWVtdV9hbGxvY2F0ZV9p cnFzKHRjNjM5M3hiX3N1Yl9pcnEsIHMsIFRDNjM5M1hCX05SX0lSUVMpOwo+Cj4gICAgIHMtPmZs YXNoID0gbmFuZF9pbml0KE5BTkRfTUZSX1RPU0hJQkEsIDB4NzYpOwo+Cj4gICAgIGlvbWVtdHlw ZSA9IGNwdV9yZWdpc3Rlcl9pb19tZW1vcnkoMCwgdGM2MzkzeGJfcmVhZGZuLAo+ICAgICAgICAg ICAgICAgICAgICAgdGM2MzkzeGJfd3JpdGVmbiwgcyk7Cj4gLSAgICBjcHVfcmVnaXN0ZXJfcGh5 c2ljYWxfbWVtb3J5KHMtPnRhcmdldF9iYXNlLCAweDIwMDAwMCwgaW9tZW10eXBlKTsKPiArICAg IGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkocy0+dGFyZ2V0X2Jhc2UsIDB4MTAwMDAsIGlv bWVtdHlwZSk7Cj4gKwo+ICsgICAgaWYgKGRzKSB7Cj4gKyAgICAgICAgcy0+ZHMgPSBkczsKPiAr ICAgICAgICBzLT52cmFtX2FkZHIgPSBxZW11X3JhbV9hbGxvYygweDEwMDAwMCk7Cj4gKyAgICAg ICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShzLT50YXJnZXRfYmFzZSArIDB4MTAwMDAw LCAweDEwMDAwMCwgcy0+dnJhbV9hZGRyKTsKPiArICAgICAgICBzLT5zY3Jfd2lkdGggPSA0ODA7 Cj4gKyAgICAgICAgcy0+c2NyX2hlaWdodCA9IDY0MDsKPiArICAgICAgICBzLT5jb25zb2xlID0g Z3JhcGhpY19jb25zb2xlX2luaXQoZHMsCj4gKyAgICAgICAgICAgICAgICB0YzYzOTN4Yl91cGRh dGVfZGlzcGxheSwKPiArICAgICAgICAgICAgICAgIE5VTEwsIC8qIGludmFsaWRhdGUgKi8KPiAr ICAgICAgICAgICAgICAgIE5VTEwsIC8qIHNjcmVlbl9kdW1wICovCj4gKyAgICAgICAgICAgICAg ICBOVUxMLCAvKiB0ZXh0X3VwZGF0ZSAqLwo+ICsgICAgICAgICAgICAgICAgcyk7Cj4gKyAgICB9 Cj4KPiAgICAgcmV0dXJuIHM7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvaHcvdGM2MzkzeGJfdGVtcGxh dGUuaCBiL2h3L3RjNjM5M3hiX3RlbXBsYXRlLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLmM5ZDRlMDMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaHcvdGM2MzkzeGJf dGVtcGxhdGUuaAo+IEBAIC0wLDAgKzEsNzIgQEAKPiArLyoKPiArICogVG9zaGliYSBUQzYzOTNY QiBJL08gQ29udHJvbGxlci4KPiArICogRm91bmQgaW4gU2hhcnAgWmF1cnVzIFNMLTYwMDAgKHRv c2EpIG9yIHNvbWUKPiArICogVG9zaGliYSBlLVNlcmllcyBQREFzLgo+ICsgKgo+ICsgKiBGQiBz dXBwb3J0IGNvZGUuIEJhc2VkIG9uIEczNjQgZmIgZW11bGF0b3IKPiArICoKPiArICogQ29weXJp Z2h0IChjKSAyMDA3IEhlcnbDqSBQb3Vzc2luZWF1Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YKPiArICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCj4gKyAqIE1BIDAyMTExLTEzMDcgVVNBCj4gKyAq Lwo+ICsKPiArI2lmIEJJVFMgPT0gOAo+ICsjIGRlZmluZSBTRVRfUElYRUwoYWRkciwgY29sb3Ip ICAgICAgICAqKHVpbnQ4X3QqKWFkZHIgPSBjb2xvcjsKPiArI2VsaWYgQklUUyA9PSAxNSB8fCBC SVRTID09IDE2Cj4gKyMgZGVmaW5lIFNFVF9QSVhFTChhZGRyLCBjb2xvcikgICAgICAgICoodWlu dDE2X3QqKWFkZHIgPSBjb2xvcjsKPiArI2VsaWYgQklUUyA9PSAyNAo+ICsjIGRlZmluZSBTRVRf UElYRUwoYWRkciwgY29sb3IpICAgICAgICBcCj4gKyAgICBhZGRyWzBdID0gY29sb3I7IGFkZHJb MV0gPSAoY29sb3IpID4+IDg7IGFkZHJbMl0gPSAoY29sb3IpID4+IDE2Owo+ICsjZWxpZiBCSVRT ID09IDMyCj4gKyMgZGVmaW5lIFNFVF9QSVhFTChhZGRyLCBjb2xvcikgICAgICAgICoodWludDMy X3QqKWFkZHIgPSBjb2xvcjsKPiArI2Vsc2UKPiArIyBlcnJvciB1bmtub3duIGJpdCBkZXB0aAo+ ICsjZW5kaWYKCkhtbS4uIG5vdyB3aGVuIEkgbG9vayBhdCB0aGlzIGl0IHRyaWdnZXJzIGFuIGFs ZXJ0IGJlY2F1c2UKICAqKHVpbnQxNl90ICopIGFkZHIgPSBjb2xvcjsKYW5kCiAgYWRkclswXSA9 IGNvb3I7IGFkZHJbMV0gPSAoY29sb3IpID4+IDg7CmRvIGRpZmZlcmVudCB0aGluZ3Mgb24gYSBi aWdlbmRpYW4gaG9zdC4gIEJ1dCBJIGNhbid0IHRlbGwgb2ZmaGFuZAp3aGljaCBvbmUgd2Ugd2Fu dCBoZXJlLi4uCgpweGEyeHhfdGVtcGxhdGUuaCBhbmQgcGwxMTBfdGVtcGxhdGUuaCBtaWdodCBo YXZlIHRoZSBzYW1lIHByb2JsZW0uCgo+ICsKPiArCj4gK3N0YXRpYyB2b2lkIGdsdWUodGM2Mzkz eGJfZHJhd19ncmFwaGljLCBCSVRTKShzdHJ1Y3QgdGM2MzkzeGJfcyAqcykKPiArewo+ICsgICAg aW50IGk7Cj4gKyAgICBpbnQgd19kaXNwbGF5Owo+ICsgICAgdWludDE2X3QgKmRhdGFfYnVmZmVy Owo+ICsgICAgdWludDhfdCAqZGF0YV9kaXNwbGF5Owo+ICsKPiArICAgIGRhdGFfYnVmZmVyID0g KHVpbnQxNl90KikocGh5c19yYW1fYmFzZSArIHMtPnZyYW1fYWRkcik7Cj4gKyAgICB3X2Rpc3Bs YXkgPSBzLT5zY3Jfd2lkdGggKiBCSVRTIC8gODsKPiArICAgIGRhdGFfZGlzcGxheSA9IHMtPmRz LT5kYXRhOwo+ICsgICAgZm9yKGkgPSAwOyBpIDwgcy0+c2NyX2hlaWdodDsgaSsrKSB7Cj4gKyNp ZiAoQklUUyA9PSAxNikKPiArICAgICAgIG1lbWNweShkYXRhX2Rpc3BsYXksIGRhdGFfYnVmZmVy LCBzLT5zY3Jfd2lkdGggKiAyKTsKPiArICAgICAgIGRhdGFfYnVmZmVyICs9IHMtPnNjcl93aWR0 aDsKPiArICAgICAgICBkYXRhX2Rpc3BsYXkgKz0gcy0+ZHMtPmxpbmVzaXplOwo+ICsjZWxzZQo+ ICsgICAgICAgaW50IGo7Cj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHMtPnNjcl93aWR0aDsg aisrLCBkYXRhX2Rpc3BsYXkgKz0gQklUUyAvIDgsIGRhdGFfYnVmZmVyKyspIHsKPiArICAgICAg ICAgICAgdWludDE2X3QgY29sb3IgPSAqZGF0YV9idWZmZXI7Cj4gKyAgICAgICAgICAgdWludDMy X3QgZGVzdF9jb2xvciA9IGdsdWUocmdiX3RvX3BpeGVsLCBCSVRTKSgKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChjb2xvciAmIDB4ZjgwMCkgKiAweDEwOCkgPj4gMTEsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoY29sb3IgJiAweDdlMCkgKiAweDQxKSA+PiA5LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNvbG9yICYgMHgxZikgKiAweDIxKSA+PiAyCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4gKyAgICAgICAgICAgU0VUX1BJWEVMKGRh dGFfZGlzcGxheSwgZGVzdF9jb2xvcik7Cj4gKyAgICAgICAgfQo+ICsjZW5kaWYKPiArICAgIH0K PiArfQo+ICsKPiArI3VuZGVmIEJJVFMKPiArI3VuZGVmIFNFVF9QSVhFTAo+ICsKPiBkaWZmIC0t Z2l0IGEvaHcvdG9zYS5jIGIvaHcvdG9zYS5jCj4gaW5kZXggZTY2YWIxNi4uYTU0MzkwZiAxMDA2 NDQKPiAtLS0gYS9ody90b3NhLmMKPiArKysgYi9ody90b3NhLmMKPiBAQCAtMzgsNiArMzgsNyBA QAo+ICAjZGVmaW5lIFRPU0FfR1BJT19CVF9MRUQgICAgICAgICAgICAgICAoVE9TQV9TQ09PUF9K Q19HUElPX0JBU0UgKyAwKQo+ICAjZGVmaW5lIFRPU0FfR1BJT19OT1RFX0xFRCAgICAgICAgICAg ICAoVE9TQV9TQ09PUF9KQ19HUElPX0JBU0UgKyAxKQo+ICAjZGVmaW5lIFRPU0FfR1BJT19DSFJH X0VSUl9MRUQgICAgICAgICAoVE9TQV9TQ09PUF9KQ19HUElPX0JBU0UgKyAyKQo+ICsjZGVmaW5l IFRPU0FfR1BJT19UQzYzOTNYQl9MM1ZfT04gICAgICAoVE9TQV9TQ09PUF9KQ19HUElPX0JBU0Ug KyA1KQo+ICAjZGVmaW5lIFRPU0FfR1BJT19XTEFOX0xFRCAgICAgICAgICAgICAoVE9TQV9TQ09P UF9KQ19HUElPX0JBU0UgKyA3KQo+Cj4gICNkZWZpbmUgICAgICAgIERBQ19CQVNFICAgICAgICAw eDRlCj4gQEAgLTg1LDcgKzg2LDggQEAgc3RhdGljIHZvaWQgdG9zYV9vdXRfc3dpdGNoKHZvaWQg Km9wYXF1ZSwgaW50IGxpbmUsIGludCBsZXZlbCkKPgo+ICBzdGF0aWMgdm9pZCB0b3NhX2dwaW9f c2V0dXAoc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICpjcHUsCj4gICAgICAgICAgICAgICAgIHN0cnVj dCBzY29vcF9pbmZvX3MgKnNjcDAsCj4gLSAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Nvb3BfaW5m b19zICpzY3AxKQo+ICsgICAgICAgICAgICAgICAgc3RydWN0IHNjb29wX2luZm9fcyAqc2NwMSwK PiArICAgICAgICAgICAgICAgIHN0cnVjdCB0YzYzOTN4Yl9zICp0bWlvKQo+ICB7Cj4gICAgIHFl bXVfaXJxICpvdXRzaWduYWxzID0gcWVtdV9hbGxvY2F0ZV9pcnFzKHRvc2Ffb3V0X3N3aXRjaCwg Y3B1LCA0KTsKPiAgICAgLyogTU1DL1NEIGhvc3QgKi8KPiBAQCAtMTA5LDYgKzExMSw4IEBAIHN0 YXRpYyB2b2lkIHRvc2FfZ3Bpb19zZXR1cChzdHJ1Y3QgcHhhMnh4X3N0YXRlX3MgKmNwdSwKPiAg ICAgc2Nvb3BfZ3Bpb19vdXRfc2V0KHNjcDEsIFRPU0FfR1BJT19OT1RFX0xFRCwgb3V0c2lnbmFs c1sxXSk7Cj4gICAgIHNjb29wX2dwaW9fb3V0X3NldChzY3AxLCBUT1NBX0dQSU9fQ0hSR19FUlJf TEVELCBvdXRzaWduYWxzWzJdKTsKPiAgICAgc2Nvb3BfZ3Bpb19vdXRfc2V0KHNjcDEsIFRPU0Ff R1BJT19XTEFOX0xFRCwgb3V0c2lnbmFsc1szXSk7Cj4gKwo+ICsgICAgc2Nvb3BfZ3Bpb19vdXRf c2V0KHNjcDEsIFRPU0FfR1BJT19UQzYzOTNYQl9MM1ZfT04sIHRjNjM5M3hiX2wzdl9nZXQodG1p bykpOwo+ICB9Cj4KPiAgc3RhdGljIHVpbnQzMl90IHRvc2Ffc3NwX3JlYWQodm9pZCAqb3BhcXVl KSB7Cj4gQEAgLTE5Nyw5ICsyMDEsMTAgQEAgc3RhdGljIHZvaWQgdG9zYV9pbml0KHJhbV9hZGRy X3QgcmFtX3NpemUsIGludCB2Z2FfcmFtX3NpemUsCj4gICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmluaXRyZF9maWxlbmFtZSwgY29uc3QgY2hhciAqY3B1X21vZGVsKQo+ICB7Cj4gICAgIHN0 cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1Owo+ICsgICAgc3RydWN0IHRjNjM5M3hiX3MgKnRtaW87 Cj4gICAgIHN0cnVjdCBzY29vcF9pbmZvX3MgKnNjcDAsICpzY3AxOwo+Cj4gLSAgICBpZiAocmFt X3NpemUgPCAoVE9TQV9SQU0gKyBUT1NBX1JPTSArIFBYQTJYWF9JTlRFUk5BTF9TSVpFKSkgewo+ ICsgICAgaWYgKHJhbV9zaXplIDwgKFRPU0FfUkFNICsgVE9TQV9ST00gKyBQWEEyWFhfSU5URVJO QUxfU0laRSArIFRDNjM5M1hCX1JBTSkpIHsKPiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGhp cyBwbGF0Zm9ybSByZXF1aXJlcyAlaSBieXRlcyBvZiBtZW1vcnlcbiIsCj4gICAgICAgICAgICAg ICAgIFRPU0FfUkFNICsgVE9TQV9ST00gKyBQWEEyWFhfSU5URVJOQUxfU0laRSk7Cj4gICAgICAg ICBleGl0KDEpOwo+IEBAIC0yMTMsMTIgKzIxOCwxNCBAQCBzdGF0aWMgdm9pZCB0b3NhX2luaXQo cmFtX2FkZHJfdCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwKPiAgICAgY3B1X3JlZ2lzdGVy X3BoeXNpY2FsX21lbW9yeSgwLCBUT1NBX1JPTSwKPiAgICAgICAgICAgICAgICAgICAgIHFlbXVf cmFtX2FsbG9jKFRPU0FfUk9NKSB8IElPX01FTV9ST00pOwo+Cj4gLSAgICB0YzYzOTN4Yl9pbml0 KDB4MTAwMDAwMDAsIHB4YTJ4eF9ncGlvX2luX2dldChjcHUtPmdwaW8pW1RPU0FfR1BJT19UQzYz OTNYQl9JTlRdKTsKPiArICAgIHRtaW8gPSB0YzYzOTN4Yl9pbml0KDB4MTAwMDAwMDAsCj4gKyAg ICAgICAgICAgIHB4YTJ4eF9ncGlvX2luX2dldChjcHUtPmdwaW8pW1RPU0FfR1BJT19UQzYzOTNY Ql9JTlRdLAo+ICsgICAgICAgICAgICBkcyk7Cj4KPiAgICAgc2NwMCA9IHNjb29wX2luaXQoY3B1 LCAwLCAweDA4ODAwMDAwKTsKPiAgICAgc2NwMSA9IHNjb29wX2luaXQoY3B1LCAxLCAweDE0ODAw MDQwKTsKPgo+IC0gICAgdG9zYV9ncGlvX3NldHVwKGNwdSwgc2NwMCwgc2NwMSk7Cj4gKyAgICB0 b3NhX2dwaW9fc2V0dXAoY3B1LCBzY3AwLCBzY3AxLCB0bWlvKTsKPgo+ICAgICB0b3NhX21pY3Jv ZHJpdmVfYXR0YWNoKGNwdSk7Cj4KPiBAQCAtMjM5LDUgKzI0Niw1IEBAIFFFTVVNYWNoaW5lIHRv c2FwZGFfbWFjaGluZSA9IHsKPiAgICAgLm5hbWUgPSAidG9zYSIsCj4gICAgIC5kZXNjID0gIlRv c2EgUERBIChQWEEyNTUpIiwKPiAgICAgLmluaXQgPSB0b3NhX2luaXQsCj4gLSAgICAucmFtX3Jl cXVpcmUgPSBUT1NBX1JBTSArIFRPU0FfUk9NICsgUFhBMlhYX0lOVEVSTkFMX1NJWkUgKyBSQU1T SVpFX0ZJWEVELAo+ICsgICAgLnJhbV9yZXF1aXJlID0gVE9TQV9SQU0gKyBUT1NBX1JPTSArIFBY QTJYWF9JTlRFUk5BTF9TSVpFICsgUkFNU0laRV9GSVhFRCArIFRDNjM5M1hCX1JBTSwKPiAgfTsK PiAtLQo+IDEuNS42LjUKPgo+Cj4gLS0KPiBXaXRoIGJlc3Qgd2lzaGVzCj4gRG1pdHJ5Cj4KPgo=