From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhenyu Wang Subject: [PATCH 2/3] lib: Add GPGPU fill Date: Wed, 3 Dec 2014 19:11:18 +0800 Message-ID: <1417605079-10913-2-git-send-email-zhenyuw@linux.intel.com> References: <1417605079-10913-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 3FDBE72644 for ; Tue, 2 Dec 2014 19:11:50 -0800 (PST) In-Reply-To: <1417605079-10913-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBpcyB0byBhZGQgZmlsbCBvcGVyYXRpb24gdXNpbmcgR1BHUFUgcGlwZWxpbmUgd2hpY2gg aXMgc2ltaWxhciB0bwpjdXJyZW50IG1lZGlhIGZpbGwuIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2lt cGx5IHZlcmlmeSBHUEdQVSBwaXBlbGluZQphbmQgaGVscCB0byBlbmFibGUgaXQgb24gbmV3ZXIg SFcsIGN1cnJlbnRseSBpdCB3b3JrcyBvbiBHZW43IG9ubHkgYW5kCndpbGwgYWRkIHN1cHBvcnQg b24gbGF0ZXIgcGxhdGZvcm0uCgpOb3cgdGhpcyBzZXRzIHZlcnkgc2ltcGx5IHRocmVhZCBncm91 cCBkaXNwYXRjaCBmb3Igb25lIHRocmVhZCBwZXIKdGhyZWFkIGdyb3VwIG9uIFNJTUQxNiBkaXNw YXRjaC4gU28gdGhlIGZpbGwgc2hhZGVyIGp1c3QgdXNlcyB0aHJlYWQKZ3JvdXAgSUQgZm9yIGJ1 ZmZlciBvZmZzZXQuCgp2MjogTm8gbmV3IGZpbGwgZnVuYyB0eXBlZGVmIGJ1dCBhZGFwdCB0byBp Z3RfZmlsbGZ1bmNfdC4KClNpZ25lZC1vZmYtYnk6IFpoZW55dSBXYW5nIDx6aGVueXV3QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBsaWIvZ2VuN19tZWRpYS5oICAgICAgICAgICAgIHwgICAyICsKIGxp Yi9pbnRlbF9iYXRjaGJ1ZmZlci5jICAgICAgfCAgMTkgKysrKysKIGxpYi9pbnRlbF9iYXRjaGJ1 ZmZlci5oICAgICAgfCAgIDcgKy0KIGxpYi9tZWRpYV9maWxsLmggICAgICAgICAgICAgfCAgIDcg KysKIGxpYi9tZWRpYV9maWxsX2dlbjcuYyAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogc2hhZGVycy9ncGdwdS9SRUFETUUgICAgICAgICB8 ICAgNCArKwogc2hhZGVycy9ncGdwdS9ncGdwdV9maWxsLmd4YSB8ICA1MSArKysrKysrKysrKysr KwogNyBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzaGFkZXJzL2dwZ3B1L1JFQURNRQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNoYWRlcnMvZ3BncHUvZ3BncHVfZmlsbC5neGEKCmRpZmYgLS1naXQgYS9saWIvZ2VuN19tZWRp YS5oIGIvbGliL2dlbjdfbWVkaWEuaAppbmRleCBkNWY5OTIxLi45MTI5NGQyIDEwMDY0NAotLS0g YS9saWIvZ2VuN19tZWRpYS5oCisrKyBiL2xpYi9nZW43X21lZGlhLmgKQEAgLTE3OSw2ICsxNzks NyBAQAogI2RlZmluZSBHRU43X1BJUEVMSU5FX1NFTEVDVAkJCUdGWFBJUEUoMSwgMSwgNCkKICMg ZGVmaW5lIFBJUEVMSU5FX1NFTEVDVF8zRAkJCSgwIDw8IDApCiAjIGRlZmluZSBQSVBFTElORV9T RUxFQ1RfTUVESUEJCQkoMSA8PCAwKQorIyBkZWZpbmUgUElQRUxJTkVfU0VMRUNUX0dQR1BVCQkJ KDIgPDwgMCkKIAogI2RlZmluZSBHRU43X1NUQVRFX0JBU0VfQUREUkVTUwkJCUdGWFBJUEUoMCwg MSwgMSkKICMgZGVmaW5lIEJBU0VfQUREUkVTU19NT0RJRlkJCQkoMSA8PCAwKQpAQCAtMTg3LDYg KzE4OCw3IEBACiAjZGVmaW5lIEdFTjdfTUVESUFfQ1VSQkVfTE9BRAkJCUdGWFBJUEUoMiwgMCwg MSkKICNkZWZpbmUgR0VON19NRURJQV9JTlRFUkZBQ0VfREVTQ1JJUFRPUl9MT0FECUdGWFBJUEUo MiwgMCwgMikKICNkZWZpbmUgR0VON19NRURJQV9PQkpFQ1QJCQlHRlhQSVBFKDIsIDEsIDApCisj ZGVmaW5lIEdFTjdfR1BHUFVfV0FMS0VSICAgICAgICAgICAgICAgICAgICAgICBHRlhQSVBFKDIs IDEsIDUpCiAKIHN0cnVjdCBnZW43X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEKIHsKZGlmZiAt LWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMK aW5kZXggNGIzYTViOC4uYzcwZjZkOCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVy LmMKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKQEAgLTUxMSwzICs1MTEsMjIgQEAgaWd0 X2ZpbGxmdW5jX3QgaWd0X2dldF9tZWRpYV9maWxsZnVuYyhpbnQgZGV2aWQpCiAKIAlyZXR1cm4g ZmlsbDsKIH0KKworLyoqCisgKiBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jOgorICogQGRldmlkOiBw Y2kgZGV2aWNlIGlkCisgKgorICogUmV0dXJuczoKKyAqCisgKiBUaGUgcGxhdGZvcm0tc3BlY2lm aWMgZ3BncHUgZmlsbCBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZGV2aWNlIHNwZWNpZmllZAor ICogd2l0aCBAZGV2aWQuIFdpbGwgcmV0dXJuIE5VTEwgd2hlbiBubyBncGdwdSBmaWxsIGZ1bmN0 aW9uIGlzIGltcGxlbWVudGVkLgorICovCitpZ3RfZmlsbGZ1bmNfdCBpZ3RfZ2V0X2dwZ3B1X2Zp bGxmdW5jKGludCBkZXZpZCkKK3sKKwlpZ3RfZmlsbGZ1bmNfdCBmaWxsID0gTlVMTDsKKworCWlm IChJU19HRU43KGRldmlkKSkKKwkJZmlsbCA9IGdlbjdfZ3BncHVfZmlsbGZ1bmM7CisKKwlyZXR1 cm4gZmlsbDsKK30KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggZjBlMjFlYS4uMTJmN2JlMSAxMDA2NDQKLS0tIGEvbGli L2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKQEAgLTI1 MCwxMSArMjUwLDExIEBAIGlndF9yZW5kZXJfY29weWZ1bmNfdCBpZ3RfZ2V0X3JlbmRlcl9jb3B5 ZnVuYyhpbnQgZGV2aWQpOwogICogQGNvbG9yOiBmaWxsIGNvbG9yIHRvIHVzZQogICoKICAqIFRo aXMgaXMgdGhlIHR5cGUgb2YgdGhlIHBlci1wbGF0Zm9ybSBmaWxsIGZ1bmN0aW9ucyB1c2luZyBt ZWRpYQotICogcGlwZWxpbmUuIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBj YW4gYmUgb2J0YWluZWQKLSAqIGJ5IGNhbGxpbmcgaWd0X2dldF9tZWRpYV9maWxsZnVuYygpLgor ICogb3IgZ3BncHUgcGlwZWxpbmUuIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlv biBjYW4gYmUgb2J0YWluZWQKKyAqIGJ5IGNhbGxpbmcgaWd0X2dldF9tZWRpYV9maWxsZnVuYygp IG9yIGlndF9nZXRfZ3BncHVfZmlsbGZ1bmMoKS4KICAqCiAgKiBBIGZpbGwgZnVuY3Rpb24gd2ls bCBlbWl0IGEgYmF0Y2hidWZmZXIgdG8gdGhlIGtlcm5lbCB3aGljaCBleGVjdXRlcwotICogdGhl IHNwZWNpZmllZCBibGl0IGZpbGwgb3BlcmF0aW9uIHVzaW5nIHRoZSBtZWRpYSBlbmdpbmUuCisg KiB0aGUgc3BlY2lmaWVkIGJsaXQgZmlsbCBvcGVyYXRpb24gdXNpbmcgdGhlIG1lZGlhL2dwZ3B1 IGVuZ2luZS4KICAqLwogdHlwZWRlZiB2b2lkICgqaWd0X2ZpbGxmdW5jX3QpKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJCQkgICAgICAgc3RydWN0IGlndF9idWYgKmRzdCwKQEAg LTI2Myw1ICsyNjMsNiBAQCB0eXBlZGVmIHZvaWQgKCppZ3RfZmlsbGZ1bmNfdCkoc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCSAgICAgICB1aW50OF90IGNvbG9yKTsKIAogaWd0 X2ZpbGxmdW5jX3QgaWd0X2dldF9tZWRpYV9maWxsZnVuYyhpbnQgZGV2aWQpOworaWd0X2ZpbGxm dW5jX3QgaWd0X2dldF9ncGdwdV9maWxsZnVuYyhpbnQgZGV2aWQpOwogCiAjZW5kaWYKZGlmZiAt LWdpdCBhL2xpYi9tZWRpYV9maWxsLmggYi9saWIvbWVkaWFfZmlsbC5oCmluZGV4IDIyNjQ4OWMu LjJhMzAwNTUgMTAwNjQ0Ci0tLSBhL2xpYi9tZWRpYV9maWxsLmgKKysrIGIvbGliL21lZGlhX2Zp bGwuaApAQCAtMzIsNCArMzIsMTEgQEAgZ2VuOV9tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNp Z25lZCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgdWludDhfdCBjb2xvcik7CiAKK3ZvaWQKK2dl bjdfZ3BncHVfZmlsbGZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJICAg IHN0cnVjdCBpZ3RfYnVmICpkc3QsCisJCSAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkg ICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKKwkJICAgIHVpbnQ4X3QgY29sb3Ip OworCiAjZW5kaWYgLyogUkVOREVfTUVESUFfRklMTF9IICovCmRpZmYgLS1naXQgYS9saWIvbWVk aWFfZmlsbF9nZW43LmMgYi9saWIvbWVkaWFfZmlsbF9nZW43LmMKaW5kZXggNWEyM2I3ZC4uNzEx M2ZkYSAxMDA2NDQKLS0tIGEvbGliL21lZGlhX2ZpbGxfZ2VuNy5jCisrKyBiL2xpYi9tZWRpYV9m aWxsX2dlbjcuYwpAQCAtOCw3ICs4LDYgQEAKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0KIHN0 YXRpYyBjb25zdCB1aW50MzJfdCBtZWRpYV9rZXJuZWxbXVs0XSA9IHsKIAl7IDB4MDA0MDAwMDEs IDB4MjAyMDAyMzEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKIAl7IDB4MDA2MDAwMDEsIDB4 MjA4MDAwMjEsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwKQEAgLTIzLDYgKzIyLDIzIEBAIHN0 YXRpYyBjb25zdCB1aW50MzJfdCBtZWRpYV9rZXJuZWxbXVs0XSA9IHsKIAl7IDB4MDc4MDAwMzEs IDB4MjAwMDFjYTgsIDB4MDAwMDBlMDAsIDB4ODIwMDAwMTAgfSwKIH07CiAKKy8qIHNoYWRlcnMv Z3BncHUvZ3BncHVfZmlsbC5neGEgKi8KK3N0YXRpYyBjb25zdCB1aW50MzJfdCBncGdwdV9rZXJu ZWxbXVs0XSA9IHsKKwl7IDB4MDA0MDAwMDEsIDB4MjAyMDAyMzEsIDB4MDAwMDAwMjAsIDB4MDAw MDAwMDAgfSwKKwl7IDB4MDAwMDAwNDEsIDB4MjA0MDBjMjEsIDB4MDAwMDAwMDQsIDB4MDAwMDAw MTAgfSwKKwl7IDB4MDAwMDAwMDEsIDB4MjA0NDAwMjEsIDB4MDAwMDAwMTgsIDB4MDAwMDAwMDAg fSwKKwl7IDB4MDA2MDAwMDEsIDB4MjA4MDAwMjEsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwK Kwl7IDB4MDAyMDAwMDEsIDB4MjA4MDAwMjEsIDB4MDA0NTAwNDAsIDB4MDAwMDAwMDAgfSwKKwl7 IDB4MDAwMDAwMDEsIDB4MjA4ODAwNjEsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMGYgfSwKKwl7IDB4 MDA4MDAwMDEsIDB4MjBhMDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDA4 MDAwMDEsIDB4MjBlMDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDA4MDAw MDEsIDB4MjEyMDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDA4MDAwMDEs IDB4MjE2MDAwMjEsIDB4MDAwMDAwMjAsIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDU4MDAwMzEsIDB4 MjQwMDFjYTgsIDB4MDAwMDAwODAsIDB4MTIwYTgwMDAgfSwKKwl7IDB4MDA2MDAwMDEsIDB4MmUw MDAwMjEsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDc4MDAwMzEsIDB4MjAwMDFj YTgsIDB4MDAwMDBlMDAsIDB4ODIwMDAwMTAgfSwKK307CisKIHN0YXRpYyB1aW50MzJfdAogYmF0 Y2hfdXNlZChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoKQogewpAQCAtMTYwLDE0ICsx NzYsMTUgQEAgZ2VuN19maWxsX21lZGlhX2tlcm5lbChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLAogfQogCiBzdGF0aWMgdWludDMyX3QKLWdlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3Jp cHRvcihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0 KQorZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2gsIHN0cnVjdCBpZ3RfYnVmICpkc3QsCisJCQkgICAgICAgY29uc3QgdWludDMyX3Qg a2VybmVsW11bNF0sIHNpemVfdCBzaXplKQogewogCXN0cnVjdCBnZW43X2ludGVyZmFjZV9kZXNj cmlwdG9yX2RhdGEgKmlkZDsKIAl1aW50MzJfdCBvZmZzZXQ7CiAJdWludDMyX3QgYmluZGluZ190 YWJsZV9vZmZzZXQsIGtlcm5lbF9vZmZzZXQ7CiAKIAliaW5kaW5nX3RhYmxlX29mZnNldCA9IGdl bjdfZmlsbF9iaW5kaW5nX3RhYmxlKGJhdGNoLCBkc3QpOwotCWtlcm5lbF9vZmZzZXQgPSBnZW43 X2ZpbGxfbWVkaWFfa2VybmVsKGJhdGNoLCBtZWRpYV9rZXJuZWwsIHNpemVvZihtZWRpYV9rZXJu ZWwpKTsKKwlrZXJuZWxfb2Zmc2V0ID0gZ2VuN19maWxsX21lZGlhX2tlcm5lbChiYXRjaCwga2Vy bmVsLCBzaXplKTsKIAogCWlkZCA9IGJhdGNoX2FsbG9jKGJhdGNoLCBzaXplb2YoKmlkZCksIDY0 KTsKIAlvZmZzZXQgPSBiYXRjaF9vZmZzZXQoYmF0Y2gsIGlkZCk7CkBAIC0zMjksNyArMzQ2LDkg QEAgZ2VuN19tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAog CWJhdGNoLT5wdHIgPSAmYmF0Y2gtPmJ1ZmZlcltCQVRDSF9TVEFURV9TUExJVF07CiAKIAljdXJi ZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoYmF0Y2gsIGNvbG9yKTsKLQlp bnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjdfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihiYXRj aCwgZHN0KTsKKwlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjdfZmlsbF9pbnRlcmZhY2VfZGVz Y3JpcHRvcihiYXRjaCwgZHN0LAorCQkJCQkJCSAgICAgIG1lZGlhX2tlcm5lbCwKKwkJCQkJCQkg ICAgICBzaXplb2YobWVkaWFfa2VybmVsKSk7CiAJaWd0X2Fzc2VydChiYXRjaC0+cHRyIDwgJmJh dGNoLT5idWZmZXJbNDA5NV0pOwogCiAJLyogbWVkaWEgcGlwZWxpbmUgKi8KQEAgLTM1MywzICsz NzIsMTM3IEBAIGdlbjdfbWVkaWFfZmlsbGZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaCwKIAlnZW43X3JlbmRlcl9mbHVzaChiYXRjaCwgYmF0Y2hfZW5kKTsKIAlpbnRlbF9iYXRj aGJ1ZmZlcl9yZXNldChiYXRjaCk7CiB9CisKK3N0YXRpYyB2b2lkCitnZW43X2VtaXRfdmZlX3N0 YXRlX2dwZ3B1KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gpCit7CisJT1VUX0JBVENI KEdFTjdfTUVESUFfVkZFX1NUQVRFIHwgKDggLSAyKSk7CisKKwkvKiBzY3JhdGNoIGJ1ZmZlciAq LworCU9VVF9CQVRDSCgwKTsKKworCS8qIG51bWJlciBvZiB0aHJlYWRzICYgdXJiIGVudHJpZXMg Ki8KKwlPVVRfQkFUQ0goMSA8PCAxNiB8IC8qIG1heCBudW0gb2YgdGhyZWFkcyAqLworCQkgIDAg PDwgOCB8IC8qIG51bSBvZiBVUkIgZW50cnkgKi8KKwkJICAxIDw8IDIpOyAvKiBHUEdQVSBtb2Rl ICovCisKKwlPVVRfQkFUQ0goMCk7CisKKwkvKiB1cmIgZW50cnkgc2l6ZSAmIGN1cmJlIHNpemUg Ki8KKwlPVVRfQkFUQ0goMCA8PCAxNiB8IAkvKiBVUkIgZW50cnkgc2l6ZSBpbiAyNTYgYml0cyB1 bml0ICovCisJCSAgMSk7CQkvKiBDVVJCRSBlbnRyeSBzaXplIGluIDI1NiBiaXRzIHVuaXQgKi8K KworCS8qIHNjb3JlYm9hcmQgKi8KKwlPVVRfQkFUQ0goMCk7CisJT1VUX0JBVENIKDApOworCU9V VF9CQVRDSCgwKTsKK30KKworc3RhdGljIHZvaWQKK2dlbjdfZW1pdF9ncGdwdV93YWxrKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCSAgICAgdW5zaWduZWQgeCwgdW5zaWduZWQg eSwKKwkJICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworCXVpbnQzMl90 IHhfZGltLCB5X2RpbSwgdG1wLCByaWdodF9tYXNrOworCisJLyoKKwkgKiBTaW1wbHkgZG8gU0lN RDE2IGJhc2VkIGRpc3BhdGNoLCBzbyBldmVyeSB0aHJlYWQgdXNlcworCSAqIFNJTUQxNiBjaGFu bmVscy4KKwkgKgorCSAqIERlZmluZSBvdXIgb3duIHRocmVhZCBncm91cCBzaXplLCBlLmcgMTZ4 MSBmb3IgZXZlcnkgZ3JvdXAsIHRoZW4KKwkgKiB3aWxsIGhhdmUgMSB0aHJlYWQgZWFjaCBncm91 cCBpbiBTSU1EMTYgZGlzcGF0Y2guIFNvIHRocmVhZAorCSAqIHdpZHRoL2hlaWdodC9kZXB0aCBh cmUgYWxsIDEuCisJICoKKwkgKiBUaGVuIHRocmVhZCBncm91cCBYID0gd2lkdGggLyAxNiAoYWxp Z25lZCB0byAxNikKKwkgKiB0aHJlYWQgZ3JvdXAgWSA9IGhlaWdodDsKKwkgKi8KKwl4X2RpbSA9 ICh3aWR0aCArIDE1KSAvIDE2OworCXlfZGltID0gaGVpZ2h0OworCisJdG1wID0gd2lkdGggJiAx NTsKKwlpZiAodG1wID09IDApCisJCXJpZ2h0X21hc2sgPSAoMSA8PCAxNikgLSAxOworCWVsc2UK KwkJcmlnaHRfbWFzayA9ICgxIDw8IHRtcCkgLSAxOworCisJT1VUX0JBVENIKEdFTjdfR1BHUFVf V0FMS0VSIHwgOSk7CisKKwkvKiBpbnRlcmZhY2UgZGVzY3JpcHRvciBvZmZzZXQgKi8KKwlPVVRf QkFUQ0goMCk7CisKKwkvKiBTSU1EIHNpemUsIHRocmVhZCB3L2gvZCAqLworCU9VVF9CQVRDSCgx IDw8IDMwIHwgLyogU0lNRDE2ICovCisJCSAgMCA8PCAxNiB8IC8qIGRlcHRoOjEgKi8KKwkJICAw IDw8IDggfCAvKiBoZWlnaHQ6MSAqLworCQkgIDApOyAvKiB3aWR0aDoxICovCisKKwkvKiB0aHJl YWQgZ3JvdXAgWCAqLworCU9VVF9CQVRDSCgwKTsKKwlPVVRfQkFUQ0goeF9kaW0pOworCisJLyog dGhyZWFkIGdyb3VwIFkgKi8KKwlPVVRfQkFUQ0goMCk7CisJT1VUX0JBVENIKHlfZGltKTsKKwor CS8qIHRocmVhZCBncm91cCBaICovCisJT1VUX0JBVENIKDApOworCU9VVF9CQVRDSCgxKTsKKwor CS8qIHJpZ2h0IG1hc2sgKi8KKwlPVVRfQkFUQ0gocmlnaHRfbWFzayk7CisKKwkvKiBib3R0b20g bWFzaywgaGVpZ2h0IDEsIGFsd2F5cyAweGZmZmZmZmZmICovCisJT1VUX0JBVENIKDB4ZmZmZmZm ZmYpOworfQorCit2b2lkCitnZW43X2dwZ3B1X2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCisJCSAgICBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAorCQkgICAgdW5zaWduZWQg eCwgdW5zaWduZWQgeSwKKwkJICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisJ CSAgICB1aW50OF90IGNvbG9yKQoreworCXVpbnQzMl90IGN1cmJlX2J1ZmZlciwgaW50ZXJmYWNl X2Rlc2NyaXB0b3I7CisJdWludDMyX3QgYmF0Y2hfZW5kOworCisJaW50ZWxfYmF0Y2hidWZmZXJf Zmx1c2goYmF0Y2gpOworCisJLyogc2V0dXAgc3RhdGVzICovCisJYmF0Y2gtPnB0ciA9ICZiYXRj aC0+YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKKworCS8qCisJICogY29uc3QgYnVmZmVyIG5l ZWRzIHRvIGZpbGwgZm9yIGV2ZXJ5IHRocmVhZCwgYnV0IGFzIHdlIGhhdmUganVzdCAxIHRocmVh ZAorCSAqIHBlciBldmVyeSBncm91cCwgc28gbmVlZCBvbmx5IG9uZSBjdXJiZSBkYXRhLgorCSAq CisJICogRm9yIGVhY2ggdGhyZWFkLCBqdXN0IHVzZSB0aHJlYWQgZ3JvdXAgSUQgZm9yIGJ1ZmZl ciBvZmZzZXQuCisJICovCisJY3VyYmVfYnVmZmVyID0gZ2VuN19maWxsX2N1cmJlX2J1ZmZlcl9k YXRhKGJhdGNoLCBjb2xvcik7CisKKwlpbnRlcmZhY2VfZGVzY3JpcHRvciA9IGdlbjdfZmlsbF9p bnRlcmZhY2VfZGVzY3JpcHRvcihiYXRjaCwgZHN0LAorCQkJCQkJCSAgICAgIGdwZ3B1X2tlcm5l bCwKKwkJCQkJCQkgICAgICBzaXplb2YoZ3BncHVfa2VybmVsKSk7CisJaWd0X2Fzc2VydChiYXRj aC0+cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0pOworCisJYmF0Y2gtPnB0ciA9IGJhdGNoLT5i dWZmZXI7CisKKwkvKiBHUEdQVSBwaXBlbGluZSAqLworCU9VVF9CQVRDSChHRU43X1BJUEVMSU5F X1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9HUEdQVSk7CisKKwlnZW43X2VtaXRfc3RhdGVfYmFz ZV9hZGRyZXNzKGJhdGNoKTsKKworCWdlbjdfZW1pdF92ZmVfc3RhdGVfZ3BncHUoYmF0Y2gpOwor CisJZ2VuN19lbWl0X2N1cmJlX2xvYWQoYmF0Y2gsIGN1cmJlX2J1ZmZlcik7CisKKwlnZW43X2Vt aXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChiYXRjaCwgaW50ZXJmYWNlX2Rlc2NyaXB0b3Ip OworCisJZ2VuN19lbWl0X2dwZ3B1X3dhbGsoYmF0Y2gsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwor CisJT1VUX0JBVENIKE1JX0JBVENIX0JVRkZFUl9FTkQpOworCisJYmF0Y2hfZW5kID0gYmF0Y2hf YWxpZ24oYmF0Y2gsIDgpOworCWlndF9hc3NlcnQoYmF0Y2hfZW5kIDwgQkFUQ0hfU1RBVEVfU1BM SVQpOworCisJZ2VuN19yZW5kZXJfZmx1c2goYmF0Y2gsIGJhdGNoX2VuZCk7CisJaW50ZWxfYmF0 Y2hidWZmZXJfcmVzZXQoYmF0Y2gpOworfQpkaWZmIC0tZ2l0IGEvc2hhZGVycy9ncGdwdS9SRUFE TUUgYi9zaGFkZXJzL2dwZ3B1L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zYmYzMjhhCi0tLSAvZGV2L251bGwKKysrIGIvc2hhZGVycy9ncGdwdS9SRUFETUUKQEAg LTAsMCArMSw0IEBACisKK0NvbW1hbmRzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHNoYWRlciBvbiBn ZW43CiskPiBtNCBncGdwdV9maWxsLmd4YSA+IGdwZ3B1X2ZpbGwuZ3htCiskPiBpbnRlbC1nZW40 YXNtIC1nIDcgLW8gPG91dHB1dD4gZ3BncHVfZmlsbC5neG0KZGlmZiAtLWdpdCBhL3NoYWRlcnMv Z3BncHUvZ3BncHVfZmlsbC5neGEgYi9zaGFkZXJzL2dwZ3B1L2dwZ3B1X2ZpbGwuZ3hhCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMzA5ZjMKLS0tIC9kZXYvbnVsbAorKysg Yi9zaGFkZXJzL2dwZ3B1L2dwZ3B1X2ZpbGwuZ3hhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBS ZWdpc3RlcnMKKyAqIGcwIC0tIGhlYWRlcgorICogZzEgLS0gY29uc3RhbnQKKyAqIGcyIC0tIGNh bGN1bGF0ZSBYL1kgb2Zmc2V0CisgKiBnNC1nMTIgcGF5bG9hZCBmb3Igd3JpdGUgbWVzc2FnZQor ICovCitkZWZpbmUoYE9SSUcnLCAgICAgICAgICBgZzIuMDwyLDIsMT5VRCcpCitkZWZpbmUoYE9S SUdfWCcsICAgICAgICBgZzIuMDwxPlVEJykKK2RlZmluZShgT1JJR19ZJywgICAgICAgIGBnMi40 PDE+VUQnKQorZGVmaW5lKGBDT0xPUicsICAgICAgICAgYGcxLjAnKQorZGVmaW5lKGBDT0xPUlVC JywgICAgICAgYENPTE9SPDAsMSwwPlVCJykKK2RlZmluZShgQ09MT1JVRCcsICAgICAgIGBDT0xP UjwwLDEsMD5VRCcpCitkZWZpbmUoYFgnLCAgICAgICAgICAgICBgZzAuNDwwLDEsMD5VRCcpCitk ZWZpbmUoYFknLCAgICAgICAgICAgICBgZzAuMjQ8MCwxLDA+VUQnKQorCittb3YoNCkgIENPTE9S PDE+VUIgICAgICBDT0xPUlVCICAgICAgICAge2FsaWduMX07CisKKy8qIFdSSVRFICovCisvKiBj b3VudCB0aHJlYWQgZ3JvdXAgSUQgZm9yIFgvWSBvZmZzZXQgKi8KK211bCgxKSAgT1JJR19YICAg ICAgICAgIFggICAgICAgIDB4MTBVRCB7YWxpZ24xfTsKK21vdigxKSAgT1JJR19ZICAgICAgICAg IFkgICAgICAgICAgICAgICB7YWxpZ24xfTsKK21vdig4KSAgZzQuMDwxPlVEICAgICAgIGcwLjA8 OCw4LDE+VUQgICB7YWxpZ24xfTsKK21vdigyKSAgZzQuMDwxPlVEICAgICAgIE9SSUcgICAgICAg ICAgICB7YWxpZ24xfTsKKy8qIE5vcm1hbCBtb2RlOiBmb3IgYmxvY2sgaGVpZ2h0IDEgcm93IGFu ZCBibG9jayB3aWR0aCAxNiBieXRlcyAqLworbW92KDEpICBnNC44PDE+VUQgICAgICAgMHgwMDAw MDAwZlVEICAgIHthbGlnbjF9OworCittb3YoMTYpIGc1LjA8MT5VRCAgICAgICBDT0xPUlVEICAg ICAgICAge2FsaWduMSBjb21wcn07Cittb3YoMTYpIGc3LjA8MT5VRCAgICAgICBDT0xPUlVEICAg ICAgICAge2FsaWduMSBjb21wcn07Cittb3YoMTYpIGc5LjA8MT5VRCAgICAgICBDT0xPUlVEICAg ICAgICAge2FsaWduMSBjb21wcn07Cittb3YoMTYpIGcxMS4wPDE+VUQgICAgICBDT0xPUlVEICAg ICAgICAge2FsaWduMSBjb21wcn07CisKKy8qCisgKiBjb21tZW50IG91dCB0aGUgZm9sbG93aW5n IGluc3RydWN0aW9uIG9uIEdlbjcKKyAqIHdyaXRlKDAsIDAsIDEwLCAxMikKKyAqICAgMTA6IG1l ZGlhX2Jsb2NrX3dyaXRlCisgKiAgIDEyOiBkYXRhIGNhY2hlIGRhdGEgcG9ydCAxCisgKi8KK3Nl bmQoMTYpIDQgYWNjMDwxPlVXIG51bGwgd3JpdGUoMCwgMCwgMTAsIDEyKSBtbGVuIDkgcmxlbiAw IHthbGlnbjF9OworCisvKgorICogdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24g b24gR2VuNworICogd3JpdGUoMCwgMCwgMTAsIDApCisgKiAgIDEwOiBtZWRpYV9ibG9ja193cml0 ZQorICogICAgMDogcmVhbmRlciBjYWNoZSBkYXRhIHBvcnQKKyAqLworLyogc2VuZCgxNikgNCBh Y2MwPDE+VVcgbnVsbCB3cml0ZSgwLCAwLCAxMCwgMCkgbWxlbiA5IHJsZW4gMCB7YWxpZ24xfTsg Ki8KKworLyogRU9UICovCittb3YoOCkgIGcxMTIuMDwxPlVEICAgICAgIGcwLjA8OCw4LDE+VUQg ICB7YWxpZ24xfTsKK3NlbmQoMTYpIDExMiBudWxsPDE+VVcgbnVsbCB0aHJlYWRfc3Bhd25lcigw LCAwLCAxKSBtbGVuIDEgcmxlbiAwIHthbGlnbjEgRU9UfTsKLS0gCjIuMS4zCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=