From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhenyu Wang Subject: [PATCH 1/2] lib: Add GPGPU fill Date: Tue, 2 Dec 2014 19:59:27 +0800 Message-ID: <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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 1BF436E18E for ; Mon, 1 Dec 2014 20:00:00 -0800 (PST) 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 ZmZlciBvZmZzZXQuCgpTaWduZWQtb2ZmLWJ5OiBaaGVueXUgV2FuZyA8emhlbnl1d0BsaW51eC5p bnRlbC5jb20+Ci0tLQogbGliL2dlbjdfbWVkaWEuaCAgICAgICAgICAgICB8ICAgMiArCiBsaWIv aW50ZWxfYmF0Y2hidWZmZXIuYyAgICAgIHwgIDE5ICsrKysrCiBsaWIvaW50ZWxfYmF0Y2hidWZm ZXIuaCAgICAgIHwgIDI1ICsrKysrKysKIGxpYi9tZWRpYV9maWxsLmggICAgICAgICAgICAgfCAg IDcgKysKIGxpYi9tZWRpYV9maWxsX2dlbjcuYyAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLQogc2hhZGVycy9ncGdwdS9SRUFETUUgICAgICAg ICB8ICAgNCArKwogc2hhZGVycy9ncGdwdS9ncGdwdV9maWxsLmd4YSB8ICA1MSArKysrKysrKysr KysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyNjUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzaGFkZXJzL2dwZ3B1L1JFQURNRQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNoYWRlcnMvZ3BncHUvZ3BncHVfZmlsbC5neGEKCmRpZmYgLS1naXQgYS9saWIvZ2VuN19t ZWRpYS5oIGIvbGliL2dlbjdfbWVkaWEuaAppbmRleCBkNWY5OTIxLi45MTI5NGQyIDEwMDY0NAot LS0gYS9saWIvZ2VuN19tZWRpYS5oCisrKyBiL2xpYi9nZW43X21lZGlhLmgKQEAgLTE3OSw2ICsx NzksNyBAQAogI2RlZmluZSBHRU43X1BJUEVMSU5FX1NFTEVDVAkJCUdGWFBJUEUoMSwgMSwgNCkK ICMgZGVmaW5lIFBJUEVMSU5FX1NFTEVDVF8zRAkJCSgwIDw8IDApCiAjIGRlZmluZSBQSVBFTElO RV9TRUxFQ1RfTUVESUEJCQkoMSA8PCAwKQorIyBkZWZpbmUgUElQRUxJTkVfU0VMRUNUX0dQR1BV CQkJKDIgPDwgMCkKIAogI2RlZmluZSBHRU43X1NUQVRFX0JBU0VfQUREUkVTUwkJCUdGWFBJUEUo MCwgMSwgMSkKICMgZGVmaW5lIEJBU0VfQUREUkVTU19NT0RJRlkJCQkoMSA8PCAwKQpAQCAtMTg3 LDYgKzE4OCw3IEBACiAjZGVmaW5lIEdFTjdfTUVESUFfQ1VSQkVfTE9BRAkJCUdGWFBJUEUoMiwg MCwgMSkKICNkZWZpbmUgR0VON19NRURJQV9JTlRFUkZBQ0VfREVTQ1JJUFRPUl9MT0FECUdGWFBJ UEUoMiwgMCwgMikKICNkZWZpbmUgR0VON19NRURJQV9PQkpFQ1QJCQlHRlhQSVBFKDIsIDEsIDAp CisjZGVmaW5lIEdFTjdfR1BHUFVfV0FMS0VSICAgICAgICAgICAgICAgICAgICAgICBHRlhQSVBF KDIsIDEsIDUpCiAKIHN0cnVjdCBnZW43X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEKIHsKZGlm ZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVy LmMKaW5kZXggMzBlZjJjZi4uMThiMGVmMyAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKQEAgLTUxMSwzICs1MTEsMjIgQEAg aWd0X21lZGlhX2ZpbGxmdW5jX3QgaWd0X2dldF9tZWRpYV9maWxsZnVuYyhpbnQgZGV2aWQpCiAK IAlyZXR1cm4gZmlsbDsKIH0KKworLyoqCisgKiBpZ3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jOgorICog QGRldmlkOiBwY2kgZGV2aWNlIGlkCisgKgorICogUmV0dXJuczoKKyAqCisgKiBUaGUgcGxhdGZv cm0tc3BlY2lmaWMgbWVkaWEgZmlsbCBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgZGV2aWNlIHNw ZWNpZmllZAorICogd2l0aCBAZGV2aWQuIFdpbGwgcmV0dXJuIE5VTEwgd2hlbiBubyBtZWRpYSBm aWxsIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLgorICovCitpZ3RfZ3BncHVfZmlsbGZ1bmNfdCBp Z3RfZ2V0X2dwZ3B1X2ZpbGxmdW5jKGludCBkZXZpZCkKK3sKKwlpZ3RfZ3BncHVfZmlsbGZ1bmNf dCBmaWxsID0gTlVMTDsKKworCWlmIChJU19HRU43KGRldmlkKSkKKwkJZmlsbCA9IGdlbjdfZ3Bn cHVfZmlsbGZ1bmM7CisKKwlyZXR1cm4gZmlsbDsKK30KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9i YXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggMGVjNjYwMS4uYjVk Njk3ZiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVs X2JhdGNoYnVmZmVyLmgKQEAgLTI2NCw0ICsyNjQsMjkgQEAgdHlwZWRlZiB2b2lkICgqaWd0X21l ZGlhX2ZpbGxmdW5jX3QpKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAKIGlndF9t ZWRpYV9maWxsZnVuY190IGlndF9nZXRfbWVkaWFfZmlsbGZ1bmMoaW50IGRldmlkKTsKIAorLyoq CisgKiBpZ3RfZ3BncHVfZmlsbGZ1bmNfdDoKKyAqIEBiYXRjaDogYmF0Y2hidWZmZXIgb2JqZWN0 CisgKiBAZHN0OiBkZXN0aW5hdGlvbiBpLWctdCBidWZmZXIgb2JqZWN0CisgKiBAeDogZGVzdGlu YXRpb24gcGl4ZWwgeC1jb29yZGluYXRpb24KKyAqIEB5OiBkZXN0aW5hdGlvbiBwaXhlbCB5LWNv b3JkaW5hdGlvbgorICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgZmlsbGVkIHJlY3RhbmdsZQorICog QGhlaWdodDogaGVpZ2h0IG9mIHRoZSBmaWxsZWQgcmVjdGFuZ2xlCisgKiBAY29sb3I6IGZpbGwg Y29sb3IgdG8gdXNlCisgKgorICogVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgcGVyLXBsYXRmb3Jt IG1lZGlhIGZpbGwgZnVuY3Rpb25zLiBUaGUKKyAqIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVu dGF0aW9uIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nCisgKiBpZ3RfZ2V0X2dwZ3B1X2ZpbGxm dW5jKCkuCisgKgorICogQSBtZWRpYSBmaWxsIGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoYnVm ZmVyIHRvIHRoZSBrZXJuZWwgd2hpY2ggZXhlY3V0ZXMKKyAqIHRoZSBzcGVjaWZpZWQgYmxpdCBm aWxsIG9wZXJhdGlvbiB1c2luZyB0aGUgbWVkaWEgZW5naW5lLgorICovCit0eXBlZGVmIHZvaWQg KCppZ3RfZ3BncHVfZmlsbGZ1bmNfdCkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwK KwkJCQkgICAgIHN0cnVjdCBpZ3RfYnVmICpkc3QsCisJCQkJICAgICB1bnNpZ25lZCB4LCB1bnNp Z25lZCB5LAorCQkJCSAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKKwkJCQkg ICAgIHVpbnQ4X3QgY29sb3IpOworCitpZ3RfZ3BncHVfZmlsbGZ1bmNfdCBpZ3RfZ2V0X2dwZ3B1 X2ZpbGxmdW5jKGludCBkZXZpZCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL21lZGlhX2Zp bGwuaCBiL2xpYi9tZWRpYV9maWxsLmgKaW5kZXggMjI2NDg5Yy4uMmEzMDA1NSAxMDA2NDQKLS0t IGEvbGliL21lZGlhX2ZpbGwuaAorKysgYi9saWIvbWVkaWFfZmlsbC5oCkBAIC0zMiw0ICszMiwx MSBAQCBnZW45X21lZGlhX2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gs CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKICAgICAg ICAgICAgICAgICB1aW50OF90IGNvbG9yKTsKIAordm9pZAorZ2VuN19ncGdwdV9maWxsZnVuYyhz dHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAorCQkgICAgc3RydWN0IGlndF9idWYgKmRz dCwKKwkJICAgIHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksCisJCSAgICB1bnNpZ25lZCB3aWR0aCwg dW5zaWduZWQgaGVpZ2h0LAorCQkgICAgdWludDhfdCBjb2xvcik7CisKICNlbmRpZiAvKiBSRU5E RV9NRURJQV9GSUxMX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9tZWRpYV9maWxsX2dlbjcuYyBiL2xp Yi9tZWRpYV9maWxsX2dlbjcuYwppbmRleCA1YTIzYjdkLi43MTEzZmRhIDEwMDY0NAotLS0gYS9s aWIvbWVkaWFfZmlsbF9nZW43LmMKKysrIGIvbGliL21lZGlhX2ZpbGxfZ2VuNy5jCkBAIC04LDcg KzgsNiBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLQogc3RhdGljIGNvbnN0IHVpbnQzMl90 IG1lZGlhX2tlcm5lbFtdWzRdID0gewogCXsgMHgwMDQwMDAwMSwgMHgyMDIwMDIzMSwgMHgwMDAw MDAyMCwgMHgwMDAwMDAwMCB9LAogCXsgMHgwMDYwMDAwMSwgMHgyMDgwMDAyMSwgMHgwMDhkMDAw MCwgMHgwMDAwMDAwMCB9LApAQCAtMjMsNiArMjIsMjMgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90 IG1lZGlhX2tlcm5lbFtdWzRdID0gewogCXsgMHgwNzgwMDAzMSwgMHgyMDAwMWNhOCwgMHgwMDAw MGUwMCwgMHg4MjAwMDAxMCB9LAogfTsKIAorLyogc2hhZGVycy9ncGdwdS9ncGdwdV9maWxsLmd4 YSAqLworc3RhdGljIGNvbnN0IHVpbnQzMl90IGdwZ3B1X2tlcm5lbFtdWzRdID0geworCXsgMHgw MDQwMDAwMSwgMHgyMDIwMDIzMSwgMHgwMDAwMDAyMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDAw MDA0MSwgMHgyMDQwMGMyMSwgMHgwMDAwMDAwNCwgMHgwMDAwMDAxMCB9LAorCXsgMHgwMDAwMDAw MSwgMHgyMDQ0MDAyMSwgMHgwMDAwMDAxOCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDYwMDAwMSwg MHgyMDgwMDAyMSwgMHgwMDhkMDAwMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDIwMDAwMSwgMHgy MDgwMDAyMSwgMHgwMDQ1MDA0MCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDAwMDAwMSwgMHgyMDg4 MDA2MSwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwZiB9LAorCXsgMHgwMDgwMDAwMSwgMHgyMGEwMDAy MSwgMHgwMDAwMDAyMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDgwMDAwMSwgMHgyMGUwMDAyMSwg MHgwMDAwMDAyMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDgwMDAwMSwgMHgyMTIwMDAyMSwgMHgw MDAwMDAyMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDgwMDAwMSwgMHgyMTYwMDAyMSwgMHgwMDAw MDAyMCwgMHgwMDAwMDAwMCB9LAorCXsgMHgwNTgwMDAzMSwgMHgyNDAwMWNhOCwgMHgwMDAwMDA4 MCwgMHgxMjBhODAwMCB9LAorCXsgMHgwMDYwMDAwMSwgMHgyZTAwMDAyMSwgMHgwMDhkMDAwMCwg MHgwMDAwMDAwMCB9LAorCXsgMHgwNzgwMDAzMSwgMHgyMDAwMWNhOCwgMHgwMDAwMGUwMCwgMHg4 MjAwMDAxMCB9LAorfTsKKwogc3RhdGljIHVpbnQzMl90CiBiYXRjaF91c2VkKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gpCiB7CkBAIC0xNjAsMTQgKzE3NiwxNSBAQCBnZW43X2ZpbGxf bWVkaWFfa2VybmVsKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiB9CiAKIHN0YXRp YyB1aW50MzJfdAotZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2gsIHN0cnVjdCBpZ3RfYnVmICpkc3QpCitnZW43X2ZpbGxfaW50ZXJm YWNlX2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgc3RydWN0IGln dF9idWYgKmRzdCwKKwkJCSAgICAgICBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwgc2l6ZV90 IHNpemUpCiB7CiAJc3RydWN0IGdlbjdfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YSAqaWRkOwog CXVpbnQzMl90IG9mZnNldDsKIAl1aW50MzJfdCBiaW5kaW5nX3RhYmxlX29mZnNldCwga2VybmVs X29mZnNldDsKIAogCWJpbmRpbmdfdGFibGVfb2Zmc2V0ID0gZ2VuN19maWxsX2JpbmRpbmdfdGFi bGUoYmF0Y2gsIGRzdCk7Ci0Ja2VybmVsX29mZnNldCA9IGdlbjdfZmlsbF9tZWRpYV9rZXJuZWwo YmF0Y2gsIG1lZGlhX2tlcm5lbCwgc2l6ZW9mKG1lZGlhX2tlcm5lbCkpOworCWtlcm5lbF9vZmZz ZXQgPSBnZW43X2ZpbGxfbWVkaWFfa2VybmVsKGJhdGNoLCBrZXJuZWwsIHNpemUpOwogCiAJaWRk ID0gYmF0Y2hfYWxsb2MoYmF0Y2gsIHNpemVvZigqaWRkKSwgNjQpOwogCW9mZnNldCA9IGJhdGNo X29mZnNldChiYXRjaCwgaWRkKTsKQEAgLTMyOSw3ICszNDYsOSBAQCBnZW43X21lZGlhX2ZpbGxm dW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJYmF0Y2gtPnB0ciA9ICZiYXRj aC0+YnVmZmVyW0JBVENIX1NUQVRFX1NQTElUXTsKIAogCWN1cmJlX2J1ZmZlciA9IGdlbjdfZmls bF9jdXJiZV9idWZmZXJfZGF0YShiYXRjaCwgY29sb3IpOwotCWludGVyZmFjZV9kZXNjcmlwdG9y ID0gZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QpOworCWludGVyZmFj ZV9kZXNjcmlwdG9yID0gZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3Qs CisJCQkJCQkJICAgICAgbWVkaWFfa2VybmVsLAorCQkJCQkJCSAgICAgIHNpemVvZihtZWRpYV9r ZXJuZWwpKTsKIAlpZ3RfYXNzZXJ0KGJhdGNoLT5wdHIgPCAmYmF0Y2gtPmJ1ZmZlcls0MDk1XSk7 CiAKIAkvKiBtZWRpYSBwaXBlbGluZSAqLwpAQCAtMzUzLDMgKzM3MiwxMzcgQEAgZ2VuN19tZWRp YV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCWdlbjdfcmVuZGVy X2ZsdXNoKGJhdGNoLCBiYXRjaF9lbmQpOwogCWludGVsX2JhdGNoYnVmZmVyX3Jlc2V0KGJhdGNo KTsKIH0KKworc3RhdGljIHZvaWQKK2dlbjdfZW1pdF92ZmVfc3RhdGVfZ3BncHUoc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCkKK3sKKwlPVVRfQkFUQ0goR0VON19NRURJQV9WRkVfU1RB VEUgfCAoOCAtIDIpKTsKKworCS8qIHNjcmF0Y2ggYnVmZmVyICovCisJT1VUX0JBVENIKDApOwor CisJLyogbnVtYmVyIG9mIHRocmVhZHMgJiB1cmIgZW50cmllcyAqLworCU9VVF9CQVRDSCgxIDw8 IDE2IHwgLyogbWF4IG51bSBvZiB0aHJlYWRzICovCisJCSAgMCA8PCA4IHwgLyogbnVtIG9mIFVS QiBlbnRyeSAqLworCQkgIDEgPDwgMik7IC8qIEdQR1BVIG1vZGUgKi8KKworCU9VVF9CQVRDSCgw KTsKKworCS8qIHVyYiBlbnRyeSBzaXplICYgY3VyYmUgc2l6ZSAqLworCU9VVF9CQVRDSCgwIDw8 IDE2IHwgCS8qIFVSQiBlbnRyeSBzaXplIGluIDI1NiBiaXRzIHVuaXQgKi8KKwkJICAxKTsJCS8q IENVUkJFIGVudHJ5IHNpemUgaW4gMjU2IGJpdHMgdW5pdCAqLworCisJLyogc2NvcmVib2FyZCAq LworCU9VVF9CQVRDSCgwKTsKKwlPVVRfQkFUQ0goMCk7CisJT1VUX0JBVENIKDApOworfQorCitz dGF0aWMgdm9pZAorZ2VuN19lbWl0X2dwZ3B1X3dhbGsoc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwKKwkJICAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkgICAgIHVuc2lnbmVk IHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCit7CisJdWludDMyX3QgeF9kaW0sIHlfZGltLCB0bXAs IHJpZ2h0X21hc2s7CisKKwkvKgorCSAqIFNpbXBseSBkbyBTSU1EMTYgYmFzZWQgZGlzcGF0Y2gs IHNvIGV2ZXJ5IHRocmVhZCB1c2VzCisJICogU0lNRDE2IGNoYW5uZWxzLgorCSAqCisJICogRGVm aW5lIG91ciBvd24gdGhyZWFkIGdyb3VwIHNpemUsIGUuZyAxNngxIGZvciBldmVyeSBncm91cCwg dGhlbgorCSAqIHdpbGwgaGF2ZSAxIHRocmVhZCBlYWNoIGdyb3VwIGluIFNJTUQxNiBkaXNwYXRj aC4gU28gdGhyZWFkCisJICogd2lkdGgvaGVpZ2h0L2RlcHRoIGFyZSBhbGwgMS4KKwkgKgorCSAq IFRoZW4gdGhyZWFkIGdyb3VwIFggPSB3aWR0aCAvIDE2IChhbGlnbmVkIHRvIDE2KQorCSAqIHRo cmVhZCBncm91cCBZID0gaGVpZ2h0OworCSAqLworCXhfZGltID0gKHdpZHRoICsgMTUpIC8gMTY7 CisJeV9kaW0gPSBoZWlnaHQ7CisKKwl0bXAgPSB3aWR0aCAmIDE1OworCWlmICh0bXAgPT0gMCkK KwkJcmlnaHRfbWFzayA9ICgxIDw8IDE2KSAtIDE7CisJZWxzZQorCQlyaWdodF9tYXNrID0gKDEg PDwgdG1wKSAtIDE7CisKKwlPVVRfQkFUQ0goR0VON19HUEdQVV9XQUxLRVIgfCA5KTsKKworCS8q IGludGVyZmFjZSBkZXNjcmlwdG9yIG9mZnNldCAqLworCU9VVF9CQVRDSCgwKTsKKworCS8qIFNJ TUQgc2l6ZSwgdGhyZWFkIHcvaC9kICovCisJT1VUX0JBVENIKDEgPDwgMzAgfCAvKiBTSU1EMTYg Ki8KKwkJICAwIDw8IDE2IHwgLyogZGVwdGg6MSAqLworCQkgIDAgPDwgOCB8IC8qIGhlaWdodDox ICovCisJCSAgMCk7IC8qIHdpZHRoOjEgKi8KKworCS8qIHRocmVhZCBncm91cCBYICovCisJT1VU X0JBVENIKDApOworCU9VVF9CQVRDSCh4X2RpbSk7CisKKwkvKiB0aHJlYWQgZ3JvdXAgWSAqLwor CU9VVF9CQVRDSCgwKTsKKwlPVVRfQkFUQ0goeV9kaW0pOworCisJLyogdGhyZWFkIGdyb3VwIFog Ki8KKwlPVVRfQkFUQ0goMCk7CisJT1VUX0JBVENIKDEpOworCisJLyogcmlnaHQgbWFzayAqLwor CU9VVF9CQVRDSChyaWdodF9tYXNrKTsKKworCS8qIGJvdHRvbSBtYXNrLCBoZWlnaHQgMSwgYWx3 YXlzIDB4ZmZmZmZmZmYgKi8KKwlPVVRfQkFUQ0goMHhmZmZmZmZmZik7Cit9CisKK3ZvaWQKK2dl bjdfZ3BncHVfZmlsbGZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJICAg IHN0cnVjdCBpZ3RfYnVmICpkc3QsCisJCSAgICB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LAorCQkg ICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKKwkJICAgIHVpbnQ4X3QgY29sb3Ip Cit7CisJdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRlcmZhY2VfZGVzY3JpcHRvcjsKKwl1aW50 MzJfdCBiYXRjaF9lbmQ7CisKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CisKKwkv KiBzZXR1cCBzdGF0ZXMgKi8KKwliYXRjaC0+cHRyID0gJmJhdGNoLT5idWZmZXJbQkFUQ0hfU1RB VEVfU1BMSVRdOworCisJLyoKKwkgKiBjb25zdCBidWZmZXIgbmVlZHMgdG8gZmlsbCBmb3IgZXZl cnkgdGhyZWFkLCBidXQgYXMgd2UgaGF2ZSBqdXN0IDEgdGhyZWFkCisJICogcGVyIGV2ZXJ5IGdy b3VwLCBzbyBuZWVkIG9ubHkgb25lIGN1cmJlIGRhdGEuCisJICoKKwkgKiBGb3IgZWFjaCB0aHJl YWQsIGp1c3QgdXNlIHRocmVhZCBncm91cCBJRCBmb3IgYnVmZmVyIG9mZnNldC4KKwkgKi8KKwlj dXJiZV9idWZmZXIgPSBnZW43X2ZpbGxfY3VyYmVfYnVmZmVyX2RhdGEoYmF0Y2gsIGNvbG9yKTsK KworCWludGVyZmFjZV9kZXNjcmlwdG9yID0gZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9y KGJhdGNoLCBkc3QsCisJCQkJCQkJICAgICAgZ3BncHVfa2VybmVsLAorCQkJCQkJCSAgICAgIHNp emVvZihncGdwdV9rZXJuZWwpKTsKKwlpZ3RfYXNzZXJ0KGJhdGNoLT5wdHIgPCAmYmF0Y2gtPmJ1 ZmZlcls0MDk1XSk7CisKKwliYXRjaC0+cHRyID0gYmF0Y2gtPmJ1ZmZlcjsKKworCS8qIEdQR1BV IHBpcGVsaW5lICovCisJT1VUX0JBVENIKEdFTjdfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVf U0VMRUNUX0dQR1BVKTsKKworCWdlbjdfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3MoYmF0Y2gpOwor CisJZ2VuN19lbWl0X3ZmZV9zdGF0ZV9ncGdwdShiYXRjaCk7CisKKwlnZW43X2VtaXRfY3VyYmVf bG9hZChiYXRjaCwgY3VyYmVfYnVmZmVyKTsKKworCWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3Jp cHRvcl9sb2FkKGJhdGNoLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7CisKKwlnZW43X2VtaXRfZ3Bn cHVfd2FsayhiYXRjaCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKwlPVVRfQkFUQ0goTUlfQkFU Q0hfQlVGRkVSX0VORCk7CisKKwliYXRjaF9lbmQgPSBiYXRjaF9hbGlnbihiYXRjaCwgOCk7CisJ aWd0X2Fzc2VydChiYXRjaF9lbmQgPCBCQVRDSF9TVEFURV9TUExJVCk7CisKKwlnZW43X3JlbmRl cl9mbHVzaChiYXRjaCwgYmF0Y2hfZW5kKTsKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9yZXNldChiYXRj aCk7Cit9CmRpZmYgLS1naXQgYS9zaGFkZXJzL2dwZ3B1L1JFQURNRSBiL3NoYWRlcnMvZ3BncHUv UkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZjMyOGEKLS0tIC9k ZXYvbnVsbAorKysgYi9zaGFkZXJzL2dwZ3B1L1JFQURNRQpAQCAtMCwwICsxLDQgQEAKKworQ29t bWFuZHMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgc2hhZGVyIG9uIGdlbjcKKyQ+IG00IGdwZ3B1X2Zp bGwuZ3hhID4gZ3BncHVfZmlsbC5neG0KKyQ+IGludGVsLWdlbjRhc20gLWcgNyAtbyA8b3V0cHV0 PiBncGdwdV9maWxsLmd4bQpkaWZmIC0tZ2l0IGEvc2hhZGVycy9ncGdwdS9ncGdwdV9maWxsLmd4 YSBiL3NoYWRlcnMvZ3BncHUvZ3BncHVfZmlsbC5neGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZmMzMDlmMwotLS0gL2Rldi9udWxsCisrKyBiL3NoYWRlcnMvZ3BncHUvZ3Bn cHVfZmlsbC5neGEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIFJlZ2lzdGVycworICogZzAgLS0g aGVhZGVyCisgKiBnMSAtLSBjb25zdGFudAorICogZzIgLS0gY2FsY3VsYXRlIFgvWSBvZmZzZXQK KyAqIGc0LWcxMiBwYXlsb2FkIGZvciB3cml0ZSBtZXNzYWdlCisgKi8KK2RlZmluZShgT1JJRycs ICAgICAgICAgIGBnMi4wPDIsMiwxPlVEJykKK2RlZmluZShgT1JJR19YJywgICAgICAgIGBnMi4w PDE+VUQnKQorZGVmaW5lKGBPUklHX1knLCAgICAgICAgYGcyLjQ8MT5VRCcpCitkZWZpbmUoYENP TE9SJywgICAgICAgICBgZzEuMCcpCitkZWZpbmUoYENPTE9SVUInLCAgICAgICBgQ09MT1I8MCwx LDA+VUInKQorZGVmaW5lKGBDT0xPUlVEJywgICAgICAgYENPTE9SPDAsMSwwPlVEJykKK2RlZmlu ZShgWCcsICAgICAgICAgICAgIGBnMC40PDAsMSwwPlVEJykKK2RlZmluZShgWScsICAgICAgICAg ICAgIGBnMC4yNDwwLDEsMD5VRCcpCisKK21vdig0KSAgQ09MT1I8MT5VQiAgICAgIENPTE9SVUIg ICAgICAgICB7YWxpZ24xfTsKKworLyogV1JJVEUgKi8KKy8qIGNvdW50IHRocmVhZCBncm91cCBJ RCBmb3IgWC9ZIG9mZnNldCAqLworbXVsKDEpICBPUklHX1ggICAgICAgICAgWCAgICAgICAgMHgx MFVEIHthbGlnbjF9OworbW92KDEpICBPUklHX1kgICAgICAgICAgWSAgICAgICAgICAgICAgIHth bGlnbjF9OworbW92KDgpICBnNC4wPDE+VUQgICAgICAgZzAuMDw4LDgsMT5VRCAgIHthbGlnbjF9 OworbW92KDIpICBnNC4wPDE+VUQgICAgICAgT1JJRyAgICAgICAgICAgIHthbGlnbjF9OworLyog Tm9ybWFsIG1vZGU6IGZvciBibG9jayBoZWlnaHQgMSByb3cgYW5kIGJsb2NrIHdpZHRoIDE2IGJ5 dGVzICovCittb3YoMSkgIGc0Ljg8MT5VRCAgICAgICAweDAwMDAwMDBmVUQgICAge2FsaWduMX07 CisKK21vdigxNikgZzUuMDwxPlVEICAgICAgIENPTE9SVUQgICAgICAgICB7YWxpZ24xIGNvbXBy fTsKK21vdigxNikgZzcuMDwxPlVEICAgICAgIENPTE9SVUQgICAgICAgICB7YWxpZ24xIGNvbXBy fTsKK21vdigxNikgZzkuMDwxPlVEICAgICAgIENPTE9SVUQgICAgICAgICB7YWxpZ24xIGNvbXBy fTsKK21vdigxNikgZzExLjA8MT5VRCAgICAgIENPTE9SVUQgICAgICAgICB7YWxpZ24xIGNvbXBy fTsKKworLyoKKyAqIGNvbW1lbnQgb3V0IHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24gb24gR2Vu NworICogd3JpdGUoMCwgMCwgMTAsIDEyKQorICogICAxMDogbWVkaWFfYmxvY2tfd3JpdGUKKyAq ICAgMTI6IGRhdGEgY2FjaGUgZGF0YSBwb3J0IDEKKyAqLworc2VuZCgxNikgNCBhY2MwPDE+VVcg bnVsbCB3cml0ZSgwLCAwLCAxMCwgMTIpIG1sZW4gOSBybGVuIDAge2FsaWduMX07CisKKy8qCisg KiB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBvbiBHZW43CisgKiB3cml0ZSgw LCAwLCAxMCwgMCkKKyAqICAgMTA6IG1lZGlhX2Jsb2NrX3dyaXRlCisgKiAgICAwOiByZWFuZGVy IGNhY2hlIGRhdGEgcG9ydAorICovCisvKiBzZW5kKDE2KSA0IGFjYzA8MT5VVyBudWxsIHdyaXRl KDAsIDAsIDEwLCAwKSBtbGVuIDkgcmxlbiAwIHthbGlnbjF9OyAqLworCisvKiBFT1QgKi8KK21v dig4KSAgZzExMi4wPDE+VUQgICAgICAgZzAuMDw4LDgsMT5VRCAgIHthbGlnbjF9Oworc2VuZCgx NikgMTEyIG51bGw8MT5VVyBudWxsIHRocmVhZF9zcGF3bmVyKDAsIDAsIDEpIG1sZW4gMSBybGVu IDAge2FsaWduMSBFT1R9OwotLSAKMi4xLjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==