From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BCAB6E3FE for ; Mon, 18 May 2020 09:09:34 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 18 May 2020 11:09:16 +0200 Message-Id: <20200518090919.14756-5-zbigniew.kempczynski@intel.com> In-Reply-To: <20200518090919.14756-1-zbigniew.kempczynski@intel.com> References: <20200518090919.14756-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 4/7] lib/gpu_cmds: Add gpgpu pipeline functions based on intel_bb List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: QWRkIG5vLWxpYmRybSBmdW5jdGlvbnMgd2hpY2ggd2lsbCByZXBsYWNlIGxpYmRybSB2ZXJzaW9u IGluIHRoZQpmaW5hbCB2ZXJzaW9uLgoKU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcgS2VtcGN6ecWE c2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvZ3B1X2NtZHMuYyB8IDU1OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvZ3B1X2NtZHMu aCB8ICA1NCArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA2MTMgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2xpYi9ncHVfY21kcy5jIGIvbGliL2dwdV9jbWRzLmMKaW5kZXggZGMwYWU5NmMuLmRi MWE1ZjcwIDEwMDY0NAotLS0gYS9saWIvZ3B1X2NtZHMuYworKysgYi9saWIvZ3B1X2NtZHMuYwpA QCAtNzY4LDMgKzc2OCw1NjIgQEAgZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3Qg aW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoKQogCU9VVF9CQVRDSCgwKTsKIAlPVVRfQkFUQ0goMHhm ZmZmZjAwMCk7CiB9CisKKy8qCisgKiBIZXJlIHdlIHN0YXJ0IHZlcnNpb24gb2YgdGhlIGdwZ3B1 IGZpbGwgcGlwZWxpbmUgY3JlYXRpb24gd2hpY2ggaXMgYmFzZWQKKyAqIG9uIGludGVsX2JiLgor ICovCit1aW50MzJfdAorZ2VuN19maWxsX2N1cmJlX2J1ZmZlcl9kYXRhX3YyKHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50OF90IGNvbG9yKQoreworCXVpbnQzMl90ICpjdXJiZV9idWZmZXI7CisJ dWludDMyX3Qgb2Zmc2V0OworCisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgNjQpOworCWN1cmJl X2J1ZmZlciA9IGludGVsX2JiX3B0cihpYmIpOworCW9mZnNldCA9IGludGVsX2JiX29mZnNldChp YmIpOworCisJKmN1cmJlX2J1ZmZlciA9IGNvbG9yOworCWludGVsX2JiX3B0cl9hZGQoaWJiLCAz Mik7CisKKwlyZXR1cm4gb2Zmc2V0OworfQorCitzdGF0aWMgdWludDMyX3QKK2dlbjdfZmlsbF9r ZXJuZWxfdjIoc3RydWN0IGludGVsX2JiICppYmIsCisJCSAgICBjb25zdCB1aW50MzJfdCBrZXJu ZWxbXVs0XSwKKwkJICAgIHNpemVfdCBzaXplKQoreworCXVpbnQzMl90ICprZXJuZWxfZHN0Owor CXVpbnQzMl90IG9mZnNldDsKKworCWludGVsX2JiX3B0cl9hbGlnbihpYmIsIDY0KTsKKwlrZXJu ZWxfZHN0ID0gaW50ZWxfYmJfcHRyKGliYik7CisJb2Zmc2V0ID0gaW50ZWxfYmJfb2Zmc2V0KGli Yik7CisKKwltZW1jcHkoa2VybmVsX2RzdCwga2VybmVsLCBzaXplKTsKKworCWludGVsX2JiX3B0 cl9hZGQoaWJiLCBzaXplKTsKKworCXJldHVybiBvZmZzZXQ7Cit9CisKK3N0YXRpYyB1aW50MzJf dAorZ2VuN19maWxsX3N1cmZhY2Vfc3RhdGVfdjIoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkg ICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkgICB1aW50MzJfdCBmb3JtYXQsCisJCQkgICBp bnQgaXNfZHN0KQoreworCXN0cnVjdCBnZW43X3N1cmZhY2Vfc3RhdGUgKnNzOworCXVpbnQzMl90 IHdyaXRlX2RvbWFpbiwgcmVhZF9kb21haW4sIG9mZnNldDsKKworCWlmIChpc19kc3QpIHsKKwkJ d3JpdGVfZG9tYWluID0gcmVhZF9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCX0g ZWxzZSB7CisJCXdyaXRlX2RvbWFpbiA9IDA7CisJCXJlYWRfZG9tYWluID0gSTkxNV9HRU1fRE9N QUlOX1NBTVBMRVI7CisJfQorCisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgNjQpOworCW9mZnNl dCA9IGludGVsX2JiX29mZnNldChpYmIpOworCXNzID0gaW50ZWxfYmJfcHRyKGliYik7CisJaW50 ZWxfYmJfcHRyX2FkZChpYmIsIDY0KTsKKworCXNzLT5zczAuc3VyZmFjZV90eXBlID0gU1VSRkFD RV8yRDsKKwlzcy0+c3MwLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0OworCXNzLT5zczAucmVuZGVy X2NhY2hlX3JlYWRfd3JpdGUgPSAxOworCisJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5H X1gpCisJCXNzLT5zczAudGlsZWRfbW9kZSA9IDI7CisJZWxzZSBpZiAoYnVmLT50aWxpbmcgPT0g STkxNV9USUxJTkdfWSkKKwkJc3MtPnNzMC50aWxlZF9tb2RlID0gMzsKKworCXNzLT5zczEuYmFz ZV9hZGRyID0gMDsKKworCWludGVsX2JiX29mZnNldF9yZWxvYyhpYmIsIGJ1Zi0+aGFuZGxlLAor CQkJICAgICAgcmVhZF9kb21haW4sIHdyaXRlX2RvbWFpbiwKKwkJCSAgICAgIG9mZnNldCArIDQs IDB4MCk7CisKKwlzcy0+c3MyLmhlaWdodCA9IGludGVsX2J1Zl9oZWlnaHQoYnVmKSAtIDE7CisJ c3MtPnNzMi53aWR0aCAgPSBpbnRlbF9idWZfd2lkdGgoYnVmKSAtIDE7CisJc3MtPnNzMy5waXRj aCAgPSBidWYtPnN0cmlkZSAtIDE7CisKKwlzcy0+c3M3LnNoYWRlcl9jaGFuZWxfc2VsZWN0X3Ig PSA0OworCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfZyA9IDU7CisJc3MtPnNzNy5zaGFk ZXJfY2hhbmVsX3NlbGVjdF9iID0gNjsKKwlzcy0+c3M3LnNoYWRlcl9jaGFuZWxfc2VsZWN0X2Eg PSA3OworCisJcmV0dXJuIG9mZnNldDsKK30KKworc3RhdGljIHVpbnQzMl90CitnZW44X2ZpbGxf c3VyZmFjZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgIHN0cnVjdCBpbnRl bF9idWYgKmJ1ZiwKKwkJCSAgIHVpbnQzMl90IGZvcm1hdCwKKwkJCSAgIGludCBpc19kc3QpCit7 CisJc3RydWN0IGdlbjhfc3VyZmFjZV9zdGF0ZSAqc3M7CisJdWludDMyX3Qgd3JpdGVfZG9tYWlu LCByZWFkX2RvbWFpbiwgb2Zmc2V0OworCisJaWYgKGlzX2RzdCkgeworCQl3cml0ZV9kb21haW4g PSByZWFkX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CisJfSBlbHNlIHsKKwkJd3Jp dGVfZG9tYWluID0gMDsKKwkJcmVhZF9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fU0FNUExFUjsK Kwl9CisKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7CisJb2Zmc2V0ID0gaW50ZWxfYmJf b2Zmc2V0KGliYik7CisJc3MgPSBpbnRlbF9iYl9wdHIoaWJiKTsKKwlpbnRlbF9iYl9wdHJfYWRk KGliYiwgNjQpOworCisJc3MtPnNzMC5zdXJmYWNlX3R5cGUgPSBTVVJGQUNFXzJEOworCXNzLT5z czAuc3VyZmFjZV9mb3JtYXQgPSBmb3JtYXQ7CisJc3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93 cml0ZSA9IDE7CisJc3MtPnNzMC52ZXJ0aWNhbF9hbGlnbm1lbnQgPSAxOyAvKiBhbGlnbiA0ICov CisJc3MtPnNzMC5ob3Jpem9udGFsX2FsaWdubWVudCA9IDE7IC8qIGFsaWduIDQgKi8KKworCWlm IChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19YKQorCQlzcy0+c3MwLnRpbGVkX21vZGUgPSAy OworCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1kpCisJCXNzLT5zczAudGls ZWRfbW9kZSA9IDM7CisKKwlzcy0+c3M4LmJhc2VfYWRkciA9IDA7CisKKwlpbnRlbF9iYl9vZmZz ZXRfcmVsb2MoaWJiLCBidWYtPmhhbmRsZSwKKwkJCSAgICAgIHJlYWRfZG9tYWluLCB3cml0ZV9k b21haW4sCisJCQkgICAgICBvZmZzZXQgKyA0LCAweDApOworCisJc3MtPnNzMi5oZWlnaHQgPSBp bnRlbF9idWZfaGVpZ2h0KGJ1ZikgLSAxOworCXNzLT5zczIud2lkdGggID0gaW50ZWxfYnVmX3dp ZHRoKGJ1ZikgLSAxOworCXNzLT5zczMucGl0Y2ggID0gYnVmLT5zdHJpZGUgLSAxOworCisJc3Mt PnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsKKwlzcy0+c3M3LnNoYWRlcl9jaGFuZWxf c2VsZWN0X2cgPSA1OworCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfYiA9IDY7CisJc3Mt PnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9hID0gNzsKKworCXJldHVybiBvZmZzZXQ7Cit9CisK K3N0YXRpYyB1aW50MzJfdAorZ2VuN19maWxsX2JpbmRpbmdfdGFibGVfdjIoc3RydWN0IGludGVs X2JiICppYmIsCisJCQkgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCit7CisJdWludDMyX3QgYmlu ZGluZ190YWJsZV9vZmZzZXQ7CisJdWludDMyX3QgKmJpbmRpbmdfdGFibGU7CisJdWludDMyX3Qg ZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGliYi0+aTkxNSk7CisKKwlpbnRlbF9iYl9wdHJf YWxpZ24oaWJiLCA2NCk7CisJYmluZGluZ190YWJsZV9vZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQo aWJiKTsKKwliaW5kaW5nX3RhYmxlID0gaW50ZWxfYmJfcHRyKGliYik7CisJaW50ZWxfYmJfcHRy X2FkZChpYmIsIDY0KTsKKworCWlmIChJU19HRU43KGRldmlkKSkKKwkJYmluZGluZ190YWJsZVsw XSA9IGdlbjdfZmlsbF9zdXJmYWNlX3N0YXRlX3YyKGliYiwgYnVmLAorCQkJCQkJCSAgICAgIFNV UkZBQ0VGT1JNQVRfUjhfVU5PUk0sIDEpOworCisJZWxzZQorCQliaW5kaW5nX3RhYmxlWzBdID0g Z2VuOF9maWxsX3N1cmZhY2Vfc3RhdGVfdjIoaWJiLCBidWYsCisJCQkJCQkJICAgICAgU1VSRkFD RUZPUk1BVF9SOF9VTk9STSwgMSk7CisKKwlyZXR1cm4gYmluZGluZ190YWJsZV9vZmZzZXQ7Cit9 CisKK3VpbnQzMl90CitnZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoc3RydWN0IGlu dGVsX2JiICppYmIsCisJCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkJICBjb25zdCB1 aW50MzJfdCBrZXJuZWxbXVs0XSwKKwkJCQkgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBnZW43 X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEgKmlkZDsKKwl1aW50MzJfdCBvZmZzZXQ7CisJdWlu dDMyX3QgYmluZGluZ190YWJsZV9vZmZzZXQsIGtlcm5lbF9vZmZzZXQ7CisKKwliaW5kaW5nX3Rh YmxlX29mZnNldCA9IGdlbjdfZmlsbF9iaW5kaW5nX3RhYmxlX3YyKGliYiwgYnVmKTsKKwlrZXJu ZWxfb2Zmc2V0ID0gZ2VuN19maWxsX2tlcm5lbF92MihpYmIsIGtlcm5lbCwgc2l6ZSk7CisKKwlp bnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA2NCk7CisJaWRkID0gaW50ZWxfYmJfcHRyKGliYik7CisJ b2Zmc2V0ID0gaW50ZWxfYmJfb2Zmc2V0KGliYik7CisKKwlpZGQtPmRlc2MwLmtlcm5lbF9zdGFy dF9wb2ludGVyID0gKGtlcm5lbF9vZmZzZXQgPj4gNik7CisKKwlpZGQtPmRlc2MxLnNpbmdsZV9w cm9ncmFtX2Zsb3cgPSAxOworCWlkZC0+ZGVzYzEuZmxvYXRpbmdfcG9pbnRfbW9kZSA9IEdFTjdf RkxPQVRJTkdfUE9JTlRfSUVFRV83NTQ7CisKKwlpZGQtPmRlc2MyLnNhbXBsZXJfY291bnQgPSAw OyAgICAgIC8qIDAgc2FtcGxlcnMgdXNlZCAqLworCWlkZC0+ZGVzYzIuc2FtcGxlcl9zdGF0ZV9w b2ludGVyID0gMDsKKworCWlkZC0+ZGVzYzMuYmluZGluZ190YWJsZV9lbnRyeV9jb3VudCA9IDA7 CisJaWRkLT5kZXNjMy5iaW5kaW5nX3RhYmxlX3BvaW50ZXIgPSAoYmluZGluZ190YWJsZV9vZmZz ZXQgPj4gNSk7CisKKwlpZGQtPmRlc2M0LmNvbnN0YW50X3VyYl9lbnRyeV9yZWFkX29mZnNldCA9 IDA7CisJaWRkLT5kZXNjNC5jb25zdGFudF91cmJfZW50cnlfcmVhZF9sZW5ndGggPSAxOyAvKiBn cmYgMSAqLworCisJaW50ZWxfYmJfcHRyX2FkZChpYmIsIHNpemVvZigqaWRkKSk7CisKKwlyZXR1 cm4gb2Zmc2V0OworfQorCit1aW50MzJfdAorZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9y X3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCSAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAor CQkJCSAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCisJCQkJICBzaXplX3Qgc2l6ZSkKK3sK KwlzdHJ1Y3QgZ2VuOF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9kYXRhICppZGQ7CisJdWludDMyX3Qg b2Zmc2V0OworCXVpbnQzMl90IGJpbmRpbmdfdGFibGVfb2Zmc2V0LCBrZXJuZWxfb2Zmc2V0Owor CisJYmluZGluZ190YWJsZV9vZmZzZXQgPSBnZW43X2ZpbGxfYmluZGluZ190YWJsZV92MihpYmIs IGJ1Zik7CisJa2VybmVsX29mZnNldCA9IGdlbjdfZmlsbF9rZXJuZWxfdjIoaWJiLCBrZXJuZWws IHNpemUpOworCisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgNjQpOworCWlkZCA9IGludGVsX2Ji X3B0cihpYmIpOworCW9mZnNldCA9IGludGVsX2JiX29mZnNldChpYmIpOworCisJaWRkLT5kZXNj MC5rZXJuZWxfc3RhcnRfcG9pbnRlciA9IChrZXJuZWxfb2Zmc2V0ID4+IDYpOworCisJaWRkLT5k ZXNjMi5zaW5nbGVfcHJvZ3JhbV9mbG93ID0gMTsKKwlpZGQtPmRlc2MyLmZsb2F0aW5nX3BvaW50 X21vZGUgPSBHRU44X0ZMT0FUSU5HX1BPSU5UX0lFRUVfNzU0OworCisJaWRkLT5kZXNjMy5zYW1w bGVyX2NvdW50ID0gMDsgICAgICAvKiAwIHNhbXBsZXJzIHVzZWQgKi8KKwlpZGQtPmRlc2MzLnNh bXBsZXJfc3RhdGVfcG9pbnRlciA9IDA7CisKKwlpZGQtPmRlc2M0LmJpbmRpbmdfdGFibGVfZW50 cnlfY291bnQgPSAwOworCWlkZC0+ZGVzYzQuYmluZGluZ190YWJsZV9wb2ludGVyID0gKGJpbmRp bmdfdGFibGVfb2Zmc2V0ID4+IDUpOworCisJaWRkLT5kZXNjNS5jb25zdGFudF91cmJfZW50cnlf cmVhZF9vZmZzZXQgPSAwOworCWlkZC0+ZGVzYzUuY29uc3RhbnRfdXJiX2VudHJ5X3JlYWRfbGVu Z3RoID0gMTsgLyogZ3JmIDEgKi8KKworCWlkZC0+ZGVzYzYubnVtX3RocmVhZHNfaW5fdGcgPSAx OworCisJcmV0dXJuIG9mZnNldDsKK30KKwordm9pZAorZ2VuN19lbWl0X3N0YXRlX2Jhc2VfYWRk cmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlpbnRlbF9iYl9vdXQoaWJiLCBHRU43 X1NUQVRFX0JBU0VfQUREUkVTUyB8ICgxMCAtIDIpKTsKKworCS8qIGdlbmVyYWwgKi8KKwlpbnRl bF9iYl9vdXQoaWJiLCAwKTsKKworCS8qIHN1cmZhY2UgKi8KKwlpbnRlbF9iYl9lbWl0X3JlbG9j KGliYiwgaWJiLT5oYW5kbGUsCisJCQkgICAgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCAw LAorCQkJICAgIEJBU0VfQUREUkVTU19NT0RJRlksIDB4MCk7CisKKwkvKiBkeW5hbWljICovCisJ aW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGliYi0+aGFuZGxlLAorCQkJICAgIEk5MTVfR0VNX0RP TUFJTl9JTlNUUlVDVElPTiwgMCwKKwkJCSAgICBCQVNFX0FERFJFU1NfTU9ESUZZLCAweDApOwor CisJLyogaW5kaXJlY3QgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKworCS8qIGluc3RydWN0 aW9uICovCisJaW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGliYi0+aGFuZGxlLAorCQkJICAgIEk5 MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwgMCwKKwkJCSAgICBCQVNFX0FERFJFU1NfTU9ESUZZ LCAweDApOworCisJLyogZ2VuZXJhbC9keW5hbWljL2luZGlyZWN0L2luc3RydWN0aW9uIGFjY2Vz cyBCb3VuZCAqLworCWludGVsX2JiX291dChpYmIsIDApOworCWludGVsX2JiX291dChpYmIsIDAg fCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9i Yl9vdXQoaWJiLCAwIHwgQkFTRV9BRERSRVNTX01PRElGWSk7Cit9CisKK3ZvaWQKK2dlbjhfZW1p dF9zdGF0ZV9iYXNlX2FkZHJlc3NfdjIoc3RydWN0IGludGVsX2JiICppYmIpCit7CisJaW50ZWxf YmJfb3V0KGliYiwgR0VOOF9TVEFURV9CQVNFX0FERFJFU1MgfCAoMTYgLSAyKSk7CisKKwkvKiBn ZW5lcmFsICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCB8IEJBU0VfQUREUkVTU19NT0RJRlkpOwor CWludGVsX2JiX291dChpYmIsIDApOworCisJLyogc3RhdGVsZXNzIGRhdGEgcG9ydCAqLworCWlu dGVsX2JiX291dChpYmIsIDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKKworCS8qIHN1cmZhY2Ug Ki8KKwlpbnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgaWJiLT5oYW5kbGUsCisJCQkgICAgSTkxNV9H RU1fRE9NQUlOX1NBTVBMRVIsIDAsCisJCQkgICAgQkFTRV9BRERSRVNTX01PRElGWSwgMHgwKTsK KworCS8qIGR5bmFtaWMgKi8KKwlpbnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgaWJiLT5oYW5kbGUs CisJCQkgICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiB8IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVD VElPTiwKKwkJCSAgICAwLAorCQkJICAgIEJBU0VfQUREUkVTU19NT0RJRlksIDB4MCk7CisKKwkv KiBpbmRpcmVjdCAqLworCWludGVsX2JiX291dChpYmIsIDApOworCWludGVsX2JiX291dChpYmIs IDApOworCisJLyogaW5zdHJ1Y3Rpb24gKi8KKwlpbnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgaWJi LT5oYW5kbGUsCisJCQkgICAgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLAorCQkJICAgIDAs CisJCQkgICAgQkFTRV9BRERSRVNTX01PRElGWSwgMHgwKTsKKworCisJLyogZ2VuZXJhbCBzdGF0 ZSBidWZmZXIgc2l6ZSAqLworCWludGVsX2JiX291dChpYmIsIDB4ZmZmZmYwMDAgfCAxKTsKKwkv KiBkeW5hbWljIHN0YXRlIGJ1ZmZlciBzaXplICovCisJaW50ZWxfYmJfb3V0KGliYiwgMSA8PCAx MiB8IDEpOworCS8qIGluZGlyZWN0IG9iamVjdCBidWZmZXIgc2l6ZSAqLworCWludGVsX2JiX291 dChpYmIsIDB4ZmZmZmYwMDAgfCAxKTsKKwkvKiBpbnN0cnVjdGlvbiBidWZmZXIgc2l6ZSwgbXVz dCBzZXQgbW9kaWZ5IGVuYWJsZSBiaXQsIG90aGVyd2lzZSBpdCBtYXkKKwkgKiByZXN1bHQgaW4g R1BVIGhhbmcKKwkgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAxIDw8IDEyIHwgMSk7Cit9CisKKwor dm9pZAorZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmli YikKK3sKKwlpbnRlbF9iYl9vdXQoaWJiLCBHRU44X1NUQVRFX0JBU0VfQUREUkVTUyB8ICgxOSAt IDIpKTsKKworCS8qIGdlbmVyYWwgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwIHwgQkFTRV9BRERS RVNTX01PRElGWSk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiBzdGF0ZWxlc3MgZGF0 YSBwb3J0ICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCB8IEJBU0VfQUREUkVTU19NT0RJRlkpOwor CisJLyogc3VyZmFjZSAqLworCWludGVsX2JiX2VtaXRfcmVsb2MoaWJiLCBpYmItPmhhbmRsZSwK KwkJCSAgICBJOTE1X0dFTV9ET01BSU5fU0FNUExFUiwgMCwKKwkJCSAgICBCQVNFX0FERFJFU1Nf TU9ESUZZLCAweDApOworCisJLyogZHluYW1pYyAqLworCWludGVsX2JiX2VtaXRfcmVsb2MoaWJi LCBpYmItPmhhbmRsZSwKKwkJCSAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSIHwgSTkxNV9HRU1f RE9NQUlOX0lOU1RSVUNUSU9OLAorCQkJICAgIDAsCisJCQkgICAgQkFTRV9BRERSRVNTX01PRElG WSwgMHgwKTsKKworCS8qIGluZGlyZWN0ICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiBpbnN0cnVjdGlvbiAqLworCWludGVsX2JiX2VtaXRf cmVsb2MoaWJiLCBpYmItPmhhbmRsZSwKKwkJCSAgICBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJ T04sIDAsCisJCQkgICAgQkFTRV9BRERSRVNTX01PRElGWSwgMHgwKTsKKworCS8qIGdlbmVyYWwg c3RhdGUgYnVmZmVyIHNpemUgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAweGZmZmZmMDAwIHwgMSk7 CisJLyogZHluYW1pYyBzdGF0ZSBidWZmZXIgc2l6ZSAqLworCWludGVsX2JiX291dChpYmIsIDEg PDwgMTIgfCAxKTsKKwkvKiBpbmRpcmVjdCBvYmplY3QgYnVmZmVyIHNpemUgKi8KKwlpbnRlbF9i Yl9vdXQoaWJiLCAweGZmZmZmMDAwIHwgMSk7CisJLyogaW50cnVjdGlvbiBidWZmZXIgc2l6ZSwg bXVzdCBzZXQgbW9kaWZ5IGVuYWJsZSBiaXQsIG90aGVyd2lzZSBpdCBtYXkKKwkgKiByZXN1bHQg aW4gR1BVIGhhbmcKKwkgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAxIDw8IDEyIHwgMSk7CisKKwkv KiBCaW5kbGVzcyBzdXJmYWNlIHN0YXRlIGJhc2UgYWRkcmVzcyAqLworCWludGVsX2JiX291dChp YmIsIDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlp bnRlbF9iYl9vdXQoaWJiLCAweGZmZmZmMDAwKTsKK30KKwordm9pZAorZ2VuN19lbWl0X3ZmZV9z dGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgdGhyZWFkcywKKwkJICAgICAg IHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKKwkJICAgICAgIHVpbnQz Ml90IGN1cmJlX3NpemUsIHVpbnQzMl90IG1vZGUpCit7CisJaW50ZWxfYmJfb3V0KGliYiwgR0VO N19NRURJQV9WRkVfU1RBVEUgfCAoOCAtIDIpKTsKKworCS8qIHNjcmF0Y2ggYnVmZmVyICovCisJ aW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiBudW1iZXIgb2YgdGhyZWFkcyAmIHVyYiBlbnRy aWVzICovCisJaW50ZWxfYmJfb3V0KGliYiwgdGhyZWFkcyA8PCAxNiB8CisJCSAgICAgdXJiX2Vu dHJpZXMgPDwgOCB8CisJCSAgICAgbW9kZSA8PCAyKTsgLyogR1BHUFUgdnMgbWVkaWEgbW9kZSAq LworCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiB1cmIgZW50cnkgc2l6ZSAmIGN1cmJl IHNpemUgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCB1cmJfc2l6ZSA8PCAxNiB8CS8qIGluIDI1NiBi aXRzIHVuaXQgKi8KKwkJICAgICBjdXJiZV9zaXplKTsJCS8qIGluIDI1NiBiaXRzIHVuaXQgKi8K KworCS8qIHNjb3JlYm9hcmQgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9v dXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKK30KKwordm9pZAorZ2VuOF9lbWl0 X3ZmZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgdGhyZWFkcywKKwkJ ICAgICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKKwkJICAgICAg IHVpbnQzMl90IGN1cmJlX3NpemUpCit7CisJaW50ZWxfYmJfb3V0KGliYiwgR0VON19NRURJQV9W RkVfU1RBVEUgfCAoOSAtIDIpKTsKKworCS8qIHNjcmF0Y2ggYnVmZmVyICovCisJaW50ZWxfYmJf b3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiBudW1iZXIgb2YgdGhy ZWFkcyAmIHVyYiBlbnRyaWVzICovCisJaW50ZWxfYmJfb3V0KGliYiwgdGhyZWFkcyA8PCAxNiB8 IHVyYl9lbnRyaWVzIDw8IDgpOworCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiB1cmIg ZW50cnkgc2l6ZSAmIGN1cmJlIHNpemUgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCB1cmJfc2l6ZSA8 PCAxNiB8IGN1cmJlX3NpemUpOworCisJLyogc2NvcmVib2FyZCAqLworCWludGVsX2JiX291dChp YmIsIDApOworCWludGVsX2JiX291dChpYmIsIDApOworCWludGVsX2JiX291dChpYmIsIDApOwor fQorCit2b2lkCitnZW43X2VtaXRfY3VyYmVfbG9hZF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwg dWludDMyX3QgY3VyYmVfYnVmZmVyKQoreworCWludGVsX2JiX291dChpYmIsIEdFTjdfTUVESUFf Q1VSQkVfTE9BRCB8ICg0IC0gMikpOworCWludGVsX2JiX291dChpYmIsIDApOworCS8qIGN1cmJl IHRvdGFsIGRhdGEgbGVuZ3RoICovCisJaW50ZWxfYmJfb3V0KGliYiwgNjQpOworCS8qIGN1cmJl IGRhdGEgc3RhcnQgYWRkcmVzcywgaXMgcmVsYXRpdmUgdG8gdGhlIGR5bmFtaWNzIGJhc2UgYWRk cmVzcyAqLworCWludGVsX2JiX291dChpYmIsIGN1cmJlX2J1ZmZlcik7Cit9CisKK3ZvaWQKK2dl bjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAorCQkJCSAgICAgICB1aW50MzJfdCBpbnRlcmZhY2VfZGVzY3JpcHRvcikKK3sKKwlpbnRlbF9i Yl9vdXQoaWJiLCBHRU43X01FRElBX0lOVEVSRkFDRV9ERVNDUklQVE9SX0xPQUQgfCAoNCAtIDIp KTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwkvKiBpbnRlcmZhY2UgZGVzY3JpcHRvciBkYXRh IGxlbmd0aCAqLworCWlmIChpYmItPmdlbiA9PSA3KQorCQlpbnRlbF9iYl9vdXQoaWJiLCBzaXpl b2Yoc3RydWN0IGdlbjdfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YSkpOworCWVsc2UKKwkJaW50 ZWxfYmJfb3V0KGliYiwgc2l6ZW9mKHN0cnVjdCBnZW44X2ludGVyZmFjZV9kZXNjcmlwdG9yX2Rh dGEpKTsKKwkvKiBpbnRlcmZhY2UgZGVzY3JpcHRvciBhZGRyZXNzLCBpcyByZWxhdGl2ZSB0byB0 aGUgZHluYW1pY3MgYmFzZQorCSAqIGFkZHJlc3MKKwkgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCBp bnRlcmZhY2VfZGVzY3JpcHRvcik7Cit9CisKK3ZvaWQKK2dlbjdfZW1pdF9ncGdwdV93YWxrX3Yy KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5 LAorCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KQoreworCXVpbnQz Ml90IHhfZGltLCB5X2RpbSwgdG1wLCByaWdodF9tYXNrOworCisJLyoKKwkgKiBTaW1wbHkgZG8g U0lNRDE2IGJhc2VkIGRpc3BhdGNoLCBzbyBldmVyeSB0aHJlYWQgdXNlcworCSAqIFNJTUQxNiBj aGFubmVscy4KKwkgKgorCSAqIERlZmluZSBvdXIgb3duIHRocmVhZCBncm91cCBzaXplLCBlLmcg MTZ4MSBmb3IgZXZlcnkgZ3JvdXAsIHRoZW4KKwkgKiB3aWxsIGhhdmUgMSB0aHJlYWQgZWFjaCBn cm91cCBpbiBTSU1EMTYgZGlzcGF0Y2guIFNvIHRocmVhZAorCSAqIHdpZHRoL2hlaWdodC9kZXB0 aCBhcmUgYWxsIDEuCisJICoKKwkgKiBUaGVuIHRocmVhZCBncm91cCBYID0gd2lkdGggLyAxNiAo YWxpZ25lZCB0byAxNikKKwkgKiB0aHJlYWQgZ3JvdXAgWSA9IGhlaWdodDsKKwkgKi8KKwl4X2Rp bSA9ICh3aWR0aCArIDE1KSAvIDE2OworCXlfZGltID0gaGVpZ2h0OworCisJdG1wID0gd2lkdGgg JiAxNTsKKwlpZiAodG1wID09IDApCisJCXJpZ2h0X21hc2sgPSAoMSA8PCAxNikgLSAxOworCWVs c2UKKwkJcmlnaHRfbWFzayA9ICgxIDw8IHRtcCkgLSAxOworCisJaW50ZWxfYmJfb3V0KGliYiwg R0VON19HUEdQVV9XQUxLRVIgfCA5KTsKKworCS8qIGludGVyZmFjZSBkZXNjcmlwdG9yIG9mZnNl dCAqLworCWludGVsX2JiX291dChpYmIsIDApOworCisJLyogU0lNRCBzaXplLCB0aHJlYWQgdy9o L2QgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAxIDw8IDMwIHwgLyogU0lNRDE2ICovCisJCSAgMCA8 PCAxNiB8IC8qIGRlcHRoOjEgKi8KKwkJICAwIDw8IDggfCAvKiBoZWlnaHQ6MSAqLworCQkgIDAp OyAvKiB3aWR0aDoxICovCisKKwkvKiB0aHJlYWQgZ3JvdXAgWCAqLworCWludGVsX2JiX291dChp YmIsIDApOworCWludGVsX2JiX291dChpYmIsIHhfZGltKTsKKworCS8qIHRocmVhZCBncm91cCBZ ICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgeV9kaW0pOwor CisJLyogdGhyZWFkIGdyb3VwIFogKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9i Yl9vdXQoaWJiLCAxKTsKKworCS8qIHJpZ2h0IG1hc2sgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCBy aWdodF9tYXNrKTsKKworCS8qIGJvdHRvbSBtYXNrLCBoZWlnaHQgMSwgYWx3YXlzIDB4ZmZmZmZm ZmYgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAweGZmZmZmZmZmKTsKK30KKwordm9pZAorZ2VuOF9l bWl0X2dwZ3B1X3dhbGtfdjIoc3RydWN0IGludGVsX2JiICppYmIsCisJCQl1bnNpZ25lZCBpbnQg eCwgdW5zaWduZWQgaW50IHksCisJCQl1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBo ZWlnaHQpCit7CisJdWludDMyX3QgeF9kaW0sIHlfZGltLCB0bXAsIHJpZ2h0X21hc2s7CisKKwkv KgorCSAqIFNpbXBseSBkbyBTSU1EMTYgYmFzZWQgZGlzcGF0Y2gsIHNvIGV2ZXJ5IHRocmVhZCB1 c2VzCisJICogU0lNRDE2IGNoYW5uZWxzLgorCSAqCisJICogRGVmaW5lIG91ciBvd24gdGhyZWFk IGdyb3VwIHNpemUsIGUuZyAxNngxIGZvciBldmVyeSBncm91cCwgdGhlbgorCSAqIHdpbGwgaGF2 ZSAxIHRocmVhZCBlYWNoIGdyb3VwIGluIFNJTUQxNiBkaXNwYXRjaC4gU28gdGhyZWFkCisJICog d2lkdGgvaGVpZ2h0L2RlcHRoIGFyZSBhbGwgMS4KKwkgKgorCSAqIFRoZW4gdGhyZWFkIGdyb3Vw IFggPSB3aWR0aCAvIDE2IChhbGlnbmVkIHRvIDE2KQorCSAqIHRocmVhZCBncm91cCBZID0gaGVp Z2h0OworCSAqLworCXhfZGltID0gKHdpZHRoICsgMTUpIC8gMTY7CisJeV9kaW0gPSBoZWlnaHQ7 CisKKwl0bXAgPSB3aWR0aCAmIDE1OworCWlmICh0bXAgPT0gMCkKKwkJcmlnaHRfbWFzayA9ICgx IDw8IDE2KSAtIDE7CisJZWxzZQorCQlyaWdodF9tYXNrID0gKDEgPDwgdG1wKSAtIDE7CisKKwlp bnRlbF9iYl9vdXQoaWJiLCBHRU43X0dQR1BVX1dBTEtFUiB8IDEzKTsKKworCWludGVsX2JiX291 dChpYmIsIDApOyAvKiBrZXJuZWwgb2Zmc2V0ICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7IC8q IGluZGlyZWN0IGRhdGEgbGVuZ3RoICovCisJaW50ZWxfYmJfb3V0KGliYiwgMCk7IC8qIGluZGly ZWN0IGRhdGEgb2Zmc2V0ICovCisKKwkvKiBTSU1EIHNpemUsIHRocmVhZCB3L2gvZCAqLworCWlu dGVsX2JiX291dChpYmIsIDEgPDwgMzAgfCAvKiBTSU1EMTYgKi8KKwkJICAgICAwIDw8IDE2IHwg LyogZGVwdGg6MSAqLworCQkgICAgIDAgPDwgOCB8IC8qIGhlaWdodDoxICovCisJCSAgICAgMCk7 IC8qIHdpZHRoOjEgKi8KKworCS8qIHRocmVhZCBncm91cCBYICovCisJaW50ZWxfYmJfb3V0KGli YiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgeF9kaW0p OworCisJLyogdGhyZWFkIGdyb3VwIFkgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRl bF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCB5X2RpbSk7CisKKwkvKiB0aHJl YWQgZ3JvdXAgWiAqLworCWludGVsX2JiX291dChpYmIsIDApOworCWludGVsX2JiX291dChpYmIs IDEpOworCisJLyogcmlnaHQgbWFzayAqLworCWludGVsX2JiX291dChpYmIsIHJpZ2h0X21hc2sp OworCisJLyogYm90dG9tIG1hc2ssIGhlaWdodCAxLCBhbHdheXMgMHhmZmZmZmZmZiAqLworCWlu dGVsX2JiX291dChpYmIsIDB4ZmZmZmZmZmYpOworfQpkaWZmIC0tZ2l0IGEvbGliL2dwdV9jbWRz LmggYi9saWIvZ3B1X2NtZHMuaAppbmRleCAxMzIxYWY0NC4uNjFhZmYxNTMgMTAwNjQ0Ci0tLSBh L2xpYi9ncHVfY21kcy5oCisrKyBiL2xpYi9ncHVfY21kcy5oCkBAIC0zNSw2ICszNSw3IEBACiAj aW5jbHVkZSAiZHJtdGVzdC5oIgogI2luY2x1ZGUgImludGVsX2JhdGNoYnVmZmVyLmgiCiAjaW5j bHVkZSAiaW50ZWxfY2hpcHNldC5oIgorI2luY2x1ZGUgImludGVsX2J1Zm9wcy5oIgogI2luY2x1 ZGUgPGFzc2VydC5oPgogCiB2b2lkCkBAIC0xNDgsNCArMTQ5LDU3IEBAIGdlbl9lbWl0X21lZGlh X29iamVjdChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCB1bnNpZ25lZCBpbnQgeG9m ZnNldCwKIHZvaWQKIGdlbjlfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3Moc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCk7CiAKKworLyogTm8gbGliZHJtICovCit1aW50MzJfdAorZ2VuN19m aWxsX2N1cmJlX2J1ZmZlcl9kYXRhX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJICAgICAg IHVpbnQ4X3QgY29sb3IpOworCit1aW50MzJfdAorZ2VuN19maWxsX2ludGVyZmFjZV9kZXNjcmlw dG9yX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCSAgc3RydWN0IGludGVsX2J1ZiAqYnVm LAorCQkJCSAgY29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCisJCQkJICBzaXplX3Qgc2l6ZSk7 CisKK3VpbnQzMl90CitnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoc3RydWN0IGlu dGVsX2JiICppYmIsCisJCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkJICBjb25zdCB1 aW50MzJfdCBrZXJuZWxbXVs0XSwKKwkJCQkgIHNpemVfdCBzaXplKTsKKwordm9pZAorZ2VuN19l bWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CisKK3ZvaWQK K2dlbjhfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3NfdjIoc3RydWN0IGludGVsX2JiICppYmIpOwor Cit2b2lkCitnZW45X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzX3YyKHN0cnVjdCBpbnRlbF9iYiAq aWJiKTsKKwordm9pZAorZ2VuN19lbWl0X3ZmZV9zdGF0ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmli YiwgdWludDMyX3QgdGhyZWFkcywKKwkJICAgICAgIHVpbnQzMl90IHVyYl9lbnRyaWVzLCB1aW50 MzJfdCB1cmJfc2l6ZSwKKwkJICAgICAgIHVpbnQzMl90IGN1cmJlX3NpemUsIHVpbnQzMl90IG1v ZGUpOworCit2b2lkCitnZW44X2VtaXRfdmZlX3N0YXRlX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJi LCB1aW50MzJfdCB0aHJlYWRzLAorCQkgICAgICAgdWludDMyX3QgdXJiX2VudHJpZXMsIHVpbnQz Ml90IHVyYl9zaXplLAorCQkgICAgICAgdWludDMyX3QgY3VyYmVfc2l6ZSk7Cit2b2lkCitnZW43 X2VtaXRfY3VyYmVfbG9hZF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3VyYmVf YnVmZmVyKTsKKwordm9pZAorZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWRfdjIo c3RydWN0IGludGVsX2JiICppYmIsCisJCQkJICAgICAgIHVpbnQzMl90IGludGVyZmFjZV9kZXNj cmlwdG9yKTsKKwordm9pZAorZ2VuN19lbWl0X2dwZ3B1X3dhbGtfdjIoc3RydWN0IGludGVsX2Ji ICppYmIsCisJCQl1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCisJCQl1bnNpZ25lZCBp bnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQpOworCit2b2lkCitnZW44X2VtaXRfZ3BncHVf d2Fsa192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCXVuc2lnbmVkIGludCB4LCB1bnNpZ25l ZCBpbnQgeSwKKwkJCXVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCk7CisK ICNlbmRpZiAvKiBHUFVfQ01EU19IICovCi0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldgo=