From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/2] lib: Add GPGPU fill Date: Tue, 2 Dec 2014 11:00:32 +0100 Message-ID: <20141202100032.GO32117@phenom.ffwll.local> References: <1417521568-15820-1-git-send-email-zhenyuw@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f49.google.com (mail-wg0-f49.google.com [74.125.82.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 9D37D6E812 for ; Tue, 2 Dec 2014 02:00:03 -0800 (PST) Received: by mail-wg0-f49.google.com with SMTP id n12so8213879wgh.8 for ; Tue, 02 Dec 2014 02:00:02 -0800 (PST) Content-Disposition: inline In-Reply-To: <1417521568-15820-1-git-send-email-zhenyuw@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhenyu Wang Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMDIsIDIwMTQgYXQgMDc6NTk6MjdQTSArMDgwMCwgWmhlbnl1IFdhbmcgd3Jv dGU6Cj4gVGhpcyBpcyB0byBhZGQgZmlsbCBvcGVyYXRpb24gdXNpbmcgR1BHUFUgcGlwZWxpbmUg d2hpY2ggaXMgc2ltaWxhciB0bwo+IGN1cnJlbnQgbWVkaWEgZmlsbC4gVGhpcyBjYW4gYmUgdXNl ZCB0byBzaW1wbHkgdmVyaWZ5IEdQR1BVIHBpcGVsaW5lCj4gYW5kIGhlbHAgdG8gZW5hYmxlIGl0 IG9uIG5ld2VyIEhXLCBjdXJyZW50bHkgaXQgd29ya3Mgb24gR2VuNyBvbmx5IGFuZAo+IHdpbGwg YWRkIHN1cHBvcnQgb24gbGF0ZXIgcGxhdGZvcm0uCj4gCj4gTm93IHRoaXMgc2V0cyB2ZXJ5IHNp bXBseSB0aHJlYWQgZ3JvdXAgZGlzcGF0Y2ggZm9yIG9uZSB0aHJlYWQgcGVyCj4gdGhyZWFkIGdy b3VwIG9uIFNJTUQxNiBkaXNwYXRjaC4gU28gdGhlIGZpbGwgc2hhZGVyIGp1c3QgdXNlcyB0aHJl YWQKPiBncm91cCBJRCBmb3IgYnVmZmVyIG9mZnNldC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBaaGVu eXUgV2FuZyA8emhlbnl1d0BsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9nZW43X21lZGlh LmggICAgICAgICAgICAgfCAgIDIgKwo+ICBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuYyAgICAgIHwg IDE5ICsrKysrCj4gIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oICAgICAgfCAgMjUgKysrKysrKwo+ ICBsaWIvbWVkaWFfZmlsbC5oICAgICAgICAgICAgIHwgICA3ICsrCj4gIGxpYi9tZWRpYV9maWxs X2dlbjcuYyAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQo+ICBzaGFkZXJzL2dwZ3B1L1JFQURNRSAgICAgICAgIHwgICA0ICsrCj4gIHNoYWRl cnMvZ3BncHUvZ3BncHVfZmlsbC5neGEgfCAgNTEgKysrKysrKysrKysrKysKPiAgNyBmaWxlcyBj aGFuZ2VkLCAyNjUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IHNoYWRlcnMvZ3BncHUvUkVBRE1FCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzaGFkZXJz L2dwZ3B1L2dwZ3B1X2ZpbGwuZ3hhCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9nZW43X21lZGlhLmgg Yi9saWIvZ2VuN19tZWRpYS5oCj4gaW5kZXggZDVmOTkyMS4uOTEyOTRkMiAxMDA2NDQKPiAtLS0g YS9saWIvZ2VuN19tZWRpYS5oCj4gKysrIGIvbGliL2dlbjdfbWVkaWEuaAo+IEBAIC0xNzksNiAr MTc5LDcgQEAKPiAgI2RlZmluZSBHRU43X1BJUEVMSU5FX1NFTEVDVAkJCUdGWFBJUEUoMSwgMSwg NCkKPiAgIyBkZWZpbmUgUElQRUxJTkVfU0VMRUNUXzNECQkJKDAgPDwgMCkKPiAgIyBkZWZpbmUg UElQRUxJTkVfU0VMRUNUX01FRElBCQkJKDEgPDwgMCkKPiArIyBkZWZpbmUgUElQRUxJTkVfU0VM RUNUX0dQR1BVCQkJKDIgPDwgMCkKPiAgCj4gICNkZWZpbmUgR0VON19TVEFURV9CQVNFX0FERFJF U1MJCQlHRlhQSVBFKDAsIDEsIDEpCj4gICMgZGVmaW5lIEJBU0VfQUREUkVTU19NT0RJRlkJCQko MSA8PCAwKQo+IEBAIC0xODcsNiArMTg4LDcgQEAKPiAgI2RlZmluZSBHRU43X01FRElBX0NVUkJF X0xPQUQJCQlHRlhQSVBFKDIsIDAsIDEpCj4gICNkZWZpbmUgR0VON19NRURJQV9JTlRFUkZBQ0Vf REVTQ1JJUFRPUl9MT0FECUdGWFBJUEUoMiwgMCwgMikKPiAgI2RlZmluZSBHRU43X01FRElBX09C SkVDVAkJCUdGWFBJUEUoMiwgMSwgMCkKPiArI2RlZmluZSBHRU43X0dQR1BVX1dBTEtFUiAgICAg ICAgICAgICAgICAgICAgICAgR0ZYUElQRSgyLCAxLCA1KQo+ICAKPiAgc3RydWN0IGdlbjdfaW50 ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKPiBpbmRleCAzMGVmMmNmLi4xOGIw ZWYzIDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCj4gKysrIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmMKPiBAQCAtNTExLDMgKzUxMSwyMiBAQCBpZ3RfbWVkaWFfZmlsbGZ1 bmNfdCBpZ3RfZ2V0X21lZGlhX2ZpbGxmdW5jKGludCBkZXZpZCkKPiAgCj4gIAlyZXR1cm4gZmls bDsKPiAgfQo+ICsKPiArLyoqCj4gKyAqIGlndF9nZXRfZ3BncHVfZmlsbGZ1bmM6Cj4gKyAqIEBk ZXZpZDogcGNpIGRldmljZSBpZAo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKgo+ICsgKiBUaGUg cGxhdGZvcm0tc3BlY2lmaWMgbWVkaWEgZmlsbCBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZGV2 aWNlIHNwZWNpZmllZAo+ICsgKiB3aXRoIEBkZXZpZC4gV2lsbCByZXR1cm4gTlVMTCB3aGVuIG5v IG1lZGlhIGZpbGwgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQuCj4gKyAqLwo+ICtpZ3RfZ3BncHVf ZmlsbGZ1bmNfdCBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jKGludCBkZXZpZCkKPiArewo+ICsJaWd0 X2dwZ3B1X2ZpbGxmdW5jX3QgZmlsbCA9IE5VTEw7Cj4gKwo+ICsJaWYgKElTX0dFTjcoZGV2aWQp KQo+ICsJCWZpbGwgPSBnZW43X2dwZ3B1X2ZpbGxmdW5jOwo+ICsKPiArCXJldHVybiBmaWxsOwo+ ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2Jh dGNoYnVmZmVyLmgKPiBpbmRleCAwZWM2NjAxLi5iNWQ2OTdmIDEwMDY0NAo+IC0tLSBhL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5oCj4gKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKPiBAQCAt MjY0LDQgKzI2NCwyOSBAQCB0eXBlZGVmIHZvaWQgKCppZ3RfbWVkaWFfZmlsbGZ1bmNfdCkoc3Ry dWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiAgCj4gIGlndF9tZWRpYV9maWxsZnVuY190 IGlndF9nZXRfbWVkaWFfZmlsbGZ1bmMoaW50IGRldmlkKTsKPiAgCj4gKy8qKgo+ICsgKiBpZ3Rf Z3BncHVfZmlsbGZ1bmNfdDoKPiArICogQGJhdGNoOiBiYXRjaGJ1ZmZlciBvYmplY3QKPiArICog QGRzdDogZGVzdGluYXRpb24gaS1nLXQgYnVmZmVyIG9iamVjdAo+ICsgKiBAeDogZGVzdGluYXRp b24gcGl4ZWwgeC1jb29yZGluYXRpb24KPiArICogQHk6IGRlc3RpbmF0aW9uIHBpeGVsIHktY29v cmRpbmF0aW9uCj4gKyAqIEB3aWR0aDogd2lkdGggb2YgdGhlIGZpbGxlZCByZWN0YW5nbGUKPiAr ICogQGhlaWdodDogaGVpZ2h0IG9mIHRoZSBmaWxsZWQgcmVjdGFuZ2xlCj4gKyAqIEBjb2xvcjog ZmlsbCBjb2xvciB0byB1c2UKPiArICoKPiArICogVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgcGVy LXBsYXRmb3JtIG1lZGlhIGZpbGwgZnVuY3Rpb25zLiBUaGUKPiArICogcGxhdGZvcm0tc3BlY2lm aWMgaW1wbGVtZW50YXRpb24gY2FuIGJlIG9idGFpbmVkIGJ5IGNhbGxpbmcKPiArICogaWd0X2dl dF9ncGdwdV9maWxsZnVuYygpLgo+ICsgKgo+ICsgKiBBIG1lZGlhIGZpbGwgZnVuY3Rpb24gd2ls bCBlbWl0IGEgYmF0Y2hidWZmZXIgdG8gdGhlIGtlcm5lbCB3aGljaCBleGVjdXRlcwo+ICsgKiB0 aGUgc3BlY2lmaWVkIGJsaXQgZmlsbCBvcGVyYXRpb24gdXNpbmcgdGhlIG1lZGlhIGVuZ2luZS4K PiArICovCj4gK3R5cGVkZWYgdm9pZCAoKmlndF9ncGdwdV9maWxsZnVuY190KShzdHJ1Y3QgaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ICsJCQkJICAgICBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAo+ ICsJCQkJICAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAo+ICsJCQkJICAgICB1bnNpZ25lZCB3 aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAo+ICsJCQkJICAgICB1aW50OF90IGNvbG9yKTsKPiArCj4g K2lndF9ncGdwdV9maWxsZnVuY190IGlndF9nZXRfZ3BncHVfZmlsbGZ1bmMoaW50IGRldmlkKTsK ClBsZWFzZSBkb24ndCBjcmVhdGUgYSBuZXcgdHlwZWRlZiBmb3IgdGhpcyBidXQgcmV1c2UgdGhl IG1lZGlhX2ZpbGxmdW5jCnR5cGVkZWYuIElmIHlvdSB3YW50IHlvdSBjb3VsZCByZW5hbWUgdGhh dCB0byBpZ3RfZmlsbGZ1bmNfdCAocGx1cyBhZGp1c3QKdGhlIGFwaSBkb2MgdG8gbm8gbG9uZ2Vy IG1lbnRpb24gbWVkaWEpLiBIYXZpbmcgdGhlIHNhbWUgaW50ZXJmYWNlcyBhbGxvd3MKeW91IHRv IGRvIGZhbmN5IHRlc3RzIHdoZXJlIHdlIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBpbXBsZW1l bnRhdGlvbnMKKGUuZy4gZm9yIGRpZmZlcmVudCBzdWJ0ZXN0cykuCgpPdGhlcndpc2UgbGd0bS4K LURhbmllbAoKPiArCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIvbWVkaWFfZmlsbC5oIGIv bGliL21lZGlhX2ZpbGwuaAo+IGluZGV4IDIyNjQ4OWMuLjJhMzAwNTUgMTAwNjQ0Cj4gLS0tIGEv bGliL21lZGlhX2ZpbGwuaAo+ICsrKyBiL2xpYi9tZWRpYV9maWxsLmgKPiBAQCAtMzIsNCArMzIs MTEgQEAgZ2VuOV9tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo LAo+ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKPiAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgY29sb3IpOwo+ICAKPiArdm9pZAo+ICtnZW43X2dwZ3B1 X2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gKwkJICAgIHN0cnVj dCBpZ3RfYnVmICpkc3QsCj4gKwkJICAgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCj4gKwkJICAg IHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCj4gKwkJICAgIHVpbnQ4X3QgY29sb3Ip Owo+ICsKPiAgI2VuZGlmIC8qIFJFTkRFX01FRElBX0ZJTExfSCAqLwo+IGRpZmYgLS1naXQgYS9s aWIvbWVkaWFfZmlsbF9nZW43LmMgYi9saWIvbWVkaWFfZmlsbF9nZW43LmMKPiBpbmRleCA1YTIz YjdkLi43MTEzZmRhIDEwMDY0NAo+IC0tLSBhL2xpYi9tZWRpYV9maWxsX2dlbjcuYwo+ICsrKyBi L2xpYi9tZWRpYV9maWxsX2dlbjcuYwo+IEBAIC04LDcgKzgsNiBAQAo+ICAKPiAgI2luY2x1ZGUg PGFzc2VydC5oPgo+ICAKPiAtCj4gIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtZWRpYV9rZXJuZWxb XVs0XSA9IHsKPiAgCXsgMHgwMDQwMDAwMSwgMHgyMDIwMDIzMSwgMHgwMDAwMDAyMCwgMHgwMDAw MDAwMCB9LAo+ICAJeyAweDAwNjAwMDAxLCAweDIwODAwMDIxLCAweDAwOGQwMDAwLCAweDAwMDAw MDAwIH0sCj4gQEAgLTIzLDYgKzIyLDIzIEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtZWRpYV9r ZXJuZWxbXVs0XSA9IHsKPiAgCXsgMHgwNzgwMDAzMSwgMHgyMDAwMWNhOCwgMHgwMDAwMGUwMCwg MHg4MjAwMDAxMCB9LAo+ICB9Owo+ICAKPiArLyogc2hhZGVycy9ncGdwdS9ncGdwdV9maWxsLmd4 YSAqLwo+ICtzdGF0aWMgY29uc3QgdWludDMyX3QgZ3BncHVfa2VybmVsW11bNF0gPSB7Cj4gKwl7 IDB4MDA0MDAwMDEsIDB4MjAyMDAyMzEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKPiArCXsg MHgwMDAwMDA0MSwgMHgyMDQwMGMyMSwgMHgwMDAwMDAwNCwgMHgwMDAwMDAxMCB9LAo+ICsJeyAw eDAwMDAwMDAxLCAweDIwNDQwMDIxLCAweDAwMDAwMDE4LCAweDAwMDAwMDAwIH0sCj4gKwl7IDB4 MDA2MDAwMDEsIDB4MjA4MDAwMjEsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwKPiArCXsgMHgw MDIwMDAwMSwgMHgyMDgwMDAyMSwgMHgwMDQ1MDA0MCwgMHgwMDAwMDAwMCB9LAo+ICsJeyAweDAw MDAwMDAxLCAweDIwODgwMDYxLCAweDAwMDAwMDAwLCAweDAwMDAwMDBmIH0sCj4gKwl7IDB4MDA4 MDAwMDEsIDB4MjBhMDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKPiArCXsgMHgwMDgw MDAwMSwgMHgyMGUwMDAyMSwgMHgwMDAwMDAyMCwgMHgwMDAwMDAwMCB9LAo+ICsJeyAweDAwODAw MDAxLCAweDIxMjAwMDIxLCAweDAwMDAwMDIwLCAweDAwMDAwMDAwIH0sCj4gKwl7IDB4MDA4MDAw MDEsIDB4MjE2MDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKPiArCXsgMHgwNTgwMDAz MSwgMHgyNDAwMWNhOCwgMHgwMDAwMDA4MCwgMHgxMjBhODAwMCB9LAo+ICsJeyAweDAwNjAwMDAx LCAweDJlMDAwMDIxLCAweDAwOGQwMDAwLCAweDAwMDAwMDAwIH0sCj4gKwl7IDB4MDc4MDAwMzEs IDB4MjAwMDFjYTgsIDB4MDAwMDBlMDAsIDB4ODIwMDAwMTAgfSwKPiArfTsKPiArCj4gIHN0YXRp YyB1aW50MzJfdAo+ICBiYXRjaF91c2VkKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gp Cj4gIHsKPiBAQCAtMTYwLDE0ICsxNzYsMTUgQEAgZ2VuN19maWxsX21lZGlhX2tlcm5lbChzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ICB9Cj4gIAo+ICBzdGF0aWMgdWludDMyX3QK PiAtZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2gsIHN0cnVjdCBpZ3RfYnVmICpkc3QpCj4gK2dlbjdfZmlsbF9pbnRlcmZhY2VfZGVz Y3JpcHRvcihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCBzdHJ1Y3QgaWd0X2J1ZiAq ZHN0LAo+ICsJCQkgICAgICAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sIHNpemVfdCBzaXpl KQo+ICB7Cj4gIAlzdHJ1Y3QgZ2VuN19pbnRlcmZhY2VfZGVzY3JpcHRvcl9kYXRhICppZGQ7Cj4g IAl1aW50MzJfdCBvZmZzZXQ7Cj4gIAl1aW50MzJfdCBiaW5kaW5nX3RhYmxlX29mZnNldCwga2Vy bmVsX29mZnNldDsKPiAgCj4gIAliaW5kaW5nX3RhYmxlX29mZnNldCA9IGdlbjdfZmlsbF9iaW5k aW5nX3RhYmxlKGJhdGNoLCBkc3QpOwo+IC0Ja2VybmVsX29mZnNldCA9IGdlbjdfZmlsbF9tZWRp YV9rZXJuZWwoYmF0Y2gsIG1lZGlhX2tlcm5lbCwgc2l6ZW9mKG1lZGlhX2tlcm5lbCkpOwo+ICsJ a2VybmVsX29mZnNldCA9IGdlbjdfZmlsbF9tZWRpYV9rZXJuZWwoYmF0Y2gsIGtlcm5lbCwgc2l6 ZSk7Cj4gIAo+ICAJaWRkID0gYmF0Y2hfYWxsb2MoYmF0Y2gsIHNpemVvZigqaWRkKSwgNjQpOwo+ ICAJb2Zmc2V0ID0gYmF0Y2hfb2Zmc2V0KGJhdGNoLCBpZGQpOwo+IEBAIC0zMjksNyArMzQ2LDkg QEAgZ2VuN19tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ ICAJYmF0Y2gtPnB0ciA9ICZiYXRjaC0+YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKPiAgCj4g IAljdXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoYmF0Y2gsIGNvbG9y KTsKPiAtCWludGVyZmFjZV9kZXNjcmlwdG9yID0gZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlw dG9yKGJhdGNoLCBkc3QpOwo+ICsJaW50ZXJmYWNlX2Rlc2NyaXB0b3IgPSBnZW43X2ZpbGxfaW50 ZXJmYWNlX2Rlc2NyaXB0b3IoYmF0Y2gsIGRzdCwKPiArCQkJCQkJCSAgICAgIG1lZGlhX2tlcm5l bCwKPiArCQkJCQkJCSAgICAgIHNpemVvZihtZWRpYV9rZXJuZWwpKTsKPiAgCWlndF9hc3NlcnQo YmF0Y2gtPnB0ciA8ICZiYXRjaC0+YnVmZmVyWzQwOTVdKTsKPiAgCj4gIAkvKiBtZWRpYSBwaXBl bGluZSAqLwo+IEBAIC0zNTMsMyArMzcyLDEzNyBAQCBnZW43X21lZGlhX2ZpbGxmdW5jKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gIAlnZW43X3JlbmRlcl9mbHVzaChiYXRjaCwg YmF0Y2hfZW5kKTsKPiAgCWludGVsX2JhdGNoYnVmZmVyX3Jlc2V0KGJhdGNoKTsKPiAgfQo+ICsK PiArc3RhdGljIHZvaWQKPiArZ2VuN19lbWl0X3ZmZV9zdGF0ZV9ncGdwdShzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoKQo+ICt7Cj4gKwlPVVRfQkFUQ0goR0VON19NRURJQV9WRkVfU1RB VEUgfCAoOCAtIDIpKTsKPiArCj4gKwkvKiBzY3JhdGNoIGJ1ZmZlciAqLwo+ICsJT1VUX0JBVENI KDApOwo+ICsKPiArCS8qIG51bWJlciBvZiB0aHJlYWRzICYgdXJiIGVudHJpZXMgKi8KPiArCU9V VF9CQVRDSCgxIDw8IDE2IHwgLyogbWF4IG51bSBvZiB0aHJlYWRzICovCj4gKwkJICAwIDw8IDgg fCAvKiBudW0gb2YgVVJCIGVudHJ5ICovCj4gKwkJICAxIDw8IDIpOyAvKiBHUEdQVSBtb2RlICov Cj4gKwo+ICsJT1VUX0JBVENIKDApOwo+ICsKPiArCS8qIHVyYiBlbnRyeSBzaXplICYgY3VyYmUg c2l6ZSAqLwo+ICsJT1VUX0JBVENIKDAgPDwgMTYgfCAJLyogVVJCIGVudHJ5IHNpemUgaW4gMjU2 IGJpdHMgdW5pdCAqLwo+ICsJCSAgMSk7CQkvKiBDVVJCRSBlbnRyeSBzaXplIGluIDI1NiBiaXRz IHVuaXQgKi8KPiArCj4gKwkvKiBzY29yZWJvYXJkICovCj4gKwlPVVRfQkFUQ0goMCk7Cj4gKwlP VVRfQkFUQ0goMCk7Cj4gKwlPVVRfQkFUQ0goMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4g K2dlbjdfZW1pdF9ncGdwdV93YWxrKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4g KwkJICAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAo+ICsJCSAgICAgdW5zaWduZWQgd2lkdGgs IHVuc2lnbmVkIGhlaWdodCkKPiArewo+ICsJdWludDMyX3QgeF9kaW0sIHlfZGltLCB0bXAsIHJp Z2h0X21hc2s7Cj4gKwo+ICsJLyoKPiArCSAqIFNpbXBseSBkbyBTSU1EMTYgYmFzZWQgZGlzcGF0 Y2gsIHNvIGV2ZXJ5IHRocmVhZCB1c2VzCj4gKwkgKiBTSU1EMTYgY2hhbm5lbHMuCj4gKwkgKgo+ ICsJICogRGVmaW5lIG91ciBvd24gdGhyZWFkIGdyb3VwIHNpemUsIGUuZyAxNngxIGZvciBldmVy eSBncm91cCwgdGhlbgo+ICsJICogd2lsbCBoYXZlIDEgdGhyZWFkIGVhY2ggZ3JvdXAgaW4gU0lN RDE2IGRpc3BhdGNoLiBTbyB0aHJlYWQKPiArCSAqIHdpZHRoL2hlaWdodC9kZXB0aCBhcmUgYWxs IDEuCj4gKwkgKgo+ICsJICogVGhlbiB0aHJlYWQgZ3JvdXAgWCA9IHdpZHRoIC8gMTYgKGFsaWdu ZWQgdG8gMTYpCj4gKwkgKiB0aHJlYWQgZ3JvdXAgWSA9IGhlaWdodDsKPiArCSAqLwo+ICsJeF9k aW0gPSAod2lkdGggKyAxNSkgLyAxNjsKPiArCXlfZGltID0gaGVpZ2h0Owo+ICsKPiArCXRtcCA9 IHdpZHRoICYgMTU7Cj4gKwlpZiAodG1wID09IDApCj4gKwkJcmlnaHRfbWFzayA9ICgxIDw8IDE2 KSAtIDE7Cj4gKwllbHNlCj4gKwkJcmlnaHRfbWFzayA9ICgxIDw8IHRtcCkgLSAxOwo+ICsKPiAr CU9VVF9CQVRDSChHRU43X0dQR1BVX1dBTEtFUiB8IDkpOwo+ICsKPiArCS8qIGludGVyZmFjZSBk ZXNjcmlwdG9yIG9mZnNldCAqLwo+ICsJT1VUX0JBVENIKDApOwo+ICsKPiArCS8qIFNJTUQgc2l6 ZSwgdGhyZWFkIHcvaC9kICovCj4gKwlPVVRfQkFUQ0goMSA8PCAzMCB8IC8qIFNJTUQxNiAqLwo+ ICsJCSAgMCA8PCAxNiB8IC8qIGRlcHRoOjEgKi8KPiArCQkgIDAgPDwgOCB8IC8qIGhlaWdodDox ICovCj4gKwkJICAwKTsgLyogd2lkdGg6MSAqLwo+ICsKPiArCS8qIHRocmVhZCBncm91cCBYICov Cj4gKwlPVVRfQkFUQ0goMCk7Cj4gKwlPVVRfQkFUQ0goeF9kaW0pOwo+ICsKPiArCS8qIHRocmVh ZCBncm91cCBZICovCj4gKwlPVVRfQkFUQ0goMCk7Cj4gKwlPVVRfQkFUQ0goeV9kaW0pOwo+ICsK PiArCS8qIHRocmVhZCBncm91cCBaICovCj4gKwlPVVRfQkFUQ0goMCk7Cj4gKwlPVVRfQkFUQ0go MSk7Cj4gKwo+ICsJLyogcmlnaHQgbWFzayAqLwo+ICsJT1VUX0JBVENIKHJpZ2h0X21hc2spOwo+ ICsKPiArCS8qIGJvdHRvbSBtYXNrLCBoZWlnaHQgMSwgYWx3YXlzIDB4ZmZmZmZmZmYgKi8KPiAr CU9VVF9CQVRDSCgweGZmZmZmZmZmKTsKPiArfQo+ICsKPiArdm9pZAo+ICtnZW43X2dwZ3B1X2Zp bGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gKwkJICAgIHN0cnVjdCBp Z3RfYnVmICpkc3QsCj4gKwkJICAgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCj4gKwkJICAgIHVu c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCj4gKwkJICAgIHVpbnQ4X3QgY29sb3IpCj4g K3sKPiArCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNlX2Rlc2NyaXB0b3I7Cj4gKwl1 aW50MzJfdCBiYXRjaF9lbmQ7Cj4gKwo+ICsJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gp Owo+ICsKPiArCS8qIHNldHVwIHN0YXRlcyAqLwo+ICsJYmF0Y2gtPnB0ciA9ICZiYXRjaC0+YnVm ZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKPiArCj4gKwkvKgo+ICsJICogY29uc3QgYnVmZmVyIG5l ZWRzIHRvIGZpbGwgZm9yIGV2ZXJ5IHRocmVhZCwgYnV0IGFzIHdlIGhhdmUganVzdCAxIHRocmVh ZAo+ICsJICogcGVyIGV2ZXJ5IGdyb3VwLCBzbyBuZWVkIG9ubHkgb25lIGN1cmJlIGRhdGEuCj4g KwkgKgo+ICsJICogRm9yIGVhY2ggdGhyZWFkLCBqdXN0IHVzZSB0aHJlYWQgZ3JvdXAgSUQgZm9y IGJ1ZmZlciBvZmZzZXQuCj4gKwkgKi8KPiArCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmlsbF9jdXJi ZV9idWZmZXJfZGF0YShiYXRjaCwgY29sb3IpOwo+ICsKPiArCWludGVyZmFjZV9kZXNjcmlwdG9y ID0gZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QsCj4gKwkJCQkJCQkg ICAgICBncGdwdV9rZXJuZWwsCj4gKwkJCQkJCQkgICAgICBzaXplb2YoZ3BncHVfa2VybmVsKSk7 Cj4gKwlpZ3RfYXNzZXJ0KGJhdGNoLT5wdHIgPCAmYmF0Y2gtPmJ1ZmZlcls0MDk1XSk7Cj4gKwo+ ICsJYmF0Y2gtPnB0ciA9IGJhdGNoLT5idWZmZXI7Cj4gKwo+ICsJLyogR1BHUFUgcGlwZWxpbmUg Ki8KPiArCU9VVF9CQVRDSChHRU43X1BJUEVMSU5FX1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9H UEdQVSk7Cj4gKwo+ICsJZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhiYXRjaCk7Cj4gKwo+ ICsJZ2VuN19lbWl0X3ZmZV9zdGF0ZV9ncGdwdShiYXRjaCk7Cj4gKwo+ICsJZ2VuN19lbWl0X2N1 cmJlX2xvYWQoYmF0Y2gsIGN1cmJlX2J1ZmZlcik7Cj4gKwo+ICsJZ2VuN19lbWl0X2ludGVyZmFj ZV9kZXNjcmlwdG9yX2xvYWQoYmF0Y2gsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKPiArCj4gKwln ZW43X2VtaXRfZ3BncHVfd2FsayhiYXRjaCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Cj4gKwo+ICsJ T1VUX0JBVENIKE1JX0JBVENIX0JVRkZFUl9FTkQpOwo+ICsKPiArCWJhdGNoX2VuZCA9IGJhdGNo X2FsaWduKGJhdGNoLCA4KTsKPiArCWlndF9hc3NlcnQoYmF0Y2hfZW5kIDwgQkFUQ0hfU1RBVEVf U1BMSVQpOwo+ICsKPiArCWdlbjdfcmVuZGVyX2ZsdXNoKGJhdGNoLCBiYXRjaF9lbmQpOwo+ICsJ aW50ZWxfYmF0Y2hidWZmZXJfcmVzZXQoYmF0Y2gpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL3NoYWRl cnMvZ3BncHUvUkVBRE1FIGIvc2hhZGVycy9ncGdwdS9SRUFETUUKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjNiZjMyOGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc2hh ZGVycy9ncGdwdS9SRUFETUUKPiBAQCAtMCwwICsxLDQgQEAKPiArCj4gK0NvbW1hbmRzIHVzZWQg dG8gZ2VuZXJhdGUgdGhlIHNoYWRlciBvbiBnZW43Cj4gKyQ+IG00IGdwZ3B1X2ZpbGwuZ3hhID4g Z3BncHVfZmlsbC5neG0KPiArJD4gaW50ZWwtZ2VuNGFzbSAtZyA3IC1vIDxvdXRwdXQ+IGdwZ3B1 X2ZpbGwuZ3htCj4gZGlmZiAtLWdpdCBhL3NoYWRlcnMvZ3BncHUvZ3BncHVfZmlsbC5neGEgYi9z aGFkZXJzL2dwZ3B1L2dwZ3B1X2ZpbGwuZ3hhCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5mYzMwOWYzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3NoYWRlcnMvZ3BncHUv Z3BncHVfZmlsbC5neGEKPiBAQCAtMCwwICsxLDUxIEBACj4gKy8qCj4gKyAqIFJlZ2lzdGVycwo+ ICsgKiBnMCAtLSBoZWFkZXIKPiArICogZzEgLS0gY29uc3RhbnQKPiArICogZzIgLS0gY2FsY3Vs YXRlIFgvWSBvZmZzZXQKPiArICogZzQtZzEyIHBheWxvYWQgZm9yIHdyaXRlIG1lc3NhZ2UKPiAr ICovCj4gK2RlZmluZShgT1JJRycsICAgICAgICAgIGBnMi4wPDIsMiwxPlVEJykKPiArZGVmaW5l KGBPUklHX1gnLCAgICAgICAgYGcyLjA8MT5VRCcpCj4gK2RlZmluZShgT1JJR19ZJywgICAgICAg IGBnMi40PDE+VUQnKQo+ICtkZWZpbmUoYENPTE9SJywgICAgICAgICBgZzEuMCcpCj4gK2RlZmlu ZShgQ09MT1JVQicsICAgICAgIGBDT0xPUjwwLDEsMD5VQicpCj4gK2RlZmluZShgQ09MT1JVRCcs ICAgICAgIGBDT0xPUjwwLDEsMD5VRCcpCj4gK2RlZmluZShgWCcsICAgICAgICAgICAgIGBnMC40 PDAsMSwwPlVEJykKPiArZGVmaW5lKGBZJywgICAgICAgICAgICAgYGcwLjI0PDAsMSwwPlVEJykK PiArCj4gK21vdig0KSAgQ09MT1I8MT5VQiAgICAgIENPTE9SVUIgICAgICAgICB7YWxpZ24xfTsK PiArCj4gKy8qIFdSSVRFICovCj4gKy8qIGNvdW50IHRocmVhZCBncm91cCBJRCBmb3IgWC9ZIG9m ZnNldCAqLwo+ICttdWwoMSkgIE9SSUdfWCAgICAgICAgICBYICAgICAgICAweDEwVUQge2FsaWdu MX07Cj4gK21vdigxKSAgT1JJR19ZICAgICAgICAgIFkgICAgICAgICAgICAgICB7YWxpZ24xfTsK PiArbW92KDgpICBnNC4wPDE+VUQgICAgICAgZzAuMDw4LDgsMT5VRCAgIHthbGlnbjF9Owo+ICtt b3YoMikgIGc0LjA8MT5VRCAgICAgICBPUklHICAgICAgICAgICAge2FsaWduMX07Cj4gKy8qIE5v cm1hbCBtb2RlOiBmb3IgYmxvY2sgaGVpZ2h0IDEgcm93IGFuZCBibG9jayB3aWR0aCAxNiBieXRl cyAqLwo+ICttb3YoMSkgIGc0Ljg8MT5VRCAgICAgICAweDAwMDAwMDBmVUQgICAge2FsaWduMX07 Cj4gKwo+ICttb3YoMTYpIGc1LjA8MT5VRCAgICAgICBDT0xPUlVEICAgICAgICAge2FsaWduMSBj b21wcn07Cj4gK21vdigxNikgZzcuMDwxPlVEICAgICAgIENPTE9SVUQgICAgICAgICB7YWxpZ24x IGNvbXByfTsKPiArbW92KDE2KSBnOS4wPDE+VUQgICAgICAgQ09MT1JVRCAgICAgICAgIHthbGln bjEgY29tcHJ9Owo+ICttb3YoMTYpIGcxMS4wPDE+VUQgICAgICBDT0xPUlVEICAgICAgICAge2Fs aWduMSBjb21wcn07Cj4gKwo+ICsvKgo+ICsgKiBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGlu c3RydWN0aW9uIG9uIEdlbjcKPiArICogd3JpdGUoMCwgMCwgMTAsIDEyKQo+ICsgKiAgIDEwOiBt ZWRpYV9ibG9ja193cml0ZQo+ICsgKiAgIDEyOiBkYXRhIGNhY2hlIGRhdGEgcG9ydCAxCj4gKyAq Lwo+ICtzZW5kKDE2KSA0IGFjYzA8MT5VVyBudWxsIHdyaXRlKDAsIDAsIDEwLCAxMikgbWxlbiA5 IHJsZW4gMCB7YWxpZ24xfTsKPiArCj4gKy8qCj4gKyAqIHVuY29tbWVudCB0aGUgZm9sbG93aW5n IGluc3RydWN0aW9uIG9uIEdlbjcKPiArICogd3JpdGUoMCwgMCwgMTAsIDApCj4gKyAqICAgMTA6 IG1lZGlhX2Jsb2NrX3dyaXRlCj4gKyAqICAgIDA6IHJlYW5kZXIgY2FjaGUgZGF0YSBwb3J0Cj4g KyAqLwo+ICsvKiBzZW5kKDE2KSA0IGFjYzA8MT5VVyBudWxsIHdyaXRlKDAsIDAsIDEwLCAwKSBt bGVuIDkgcmxlbiAwIHthbGlnbjF9OyAqLwo+ICsKPiArLyogRU9UICovCj4gK21vdig4KSAgZzEx Mi4wPDE+VUQgICAgICAgZzAuMDw4LDgsMT5VRCAgIHthbGlnbjF9Owo+ICtzZW5kKDE2KSAxMTIg bnVsbDwxPlVXIG51bGwgdGhyZWFkX3NwYXduZXIoMCwgMCwgMSkgbWxlbiAxIHJsZW4gMCB7YWxp Z24xIEVPVH07Cj4gLS0gCj4gMi4xLjMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK