From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id AFE2C6EBD4 for ; Fri, 15 May 2020 06:44:57 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 15 May 2020 08:44:33 +0200 Message-Id: <20200515064435.25926-6-zbigniew.kempczynski@intel.com> In-Reply-To: <20200515064435.25926-1-zbigniew.kempczynski@intel.com> References: <20200515064435.25926-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 5/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 cmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvZ3B1X2NtZHMuYyB8IDM0MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvZ3B1X2NtZHMu aCB8ICAzMyArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAzNzUgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2xpYi9ncHVfY21kcy5jIGIvbGliL2dwdV9jbWRzLmMKaW5kZXggZGMwYWU5NmMuLmU5 YzAyOGY2IDEwMDY0NAotLS0gYS9saWIvZ3B1X2NtZHMuYworKysgYi9saWIvZ3B1X2NtZHMuYwpA QCAtNzY4LDMgKzc2OCwzNDUgQEAgZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3Qg 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 cm4gb2Zmc2V0OworfQorCit2b2lkCitnZW43X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzX3YyKHN0 cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWludGVsX2JiX291dChpYmIsIEdFTjdfU1RBVEVfQkFT RV9BRERSRVNTIHwgKDEwIC0gMikpOworCisJLyogZ2VuZXJhbCAqLworCWludGVsX2JiX291dChp YmIsIDApOworCisJLyogc3VyZmFjZSAqLworCWludGVsX2JiX2VtaXRfcmVsb2MoaWJiLCBpYmIt PmhhbmRsZSwKKwkJCSAgICBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sIDAsCisJCQkgICAg QkFTRV9BRERSRVNTX01PRElGWSwgMHgwKTsKKworCS8qIGR5bmFtaWMgKi8KKwlpbnRlbF9iYl9l bWl0X3JlbG9jKGliYiwgaWJiLT5oYW5kbGUsCisJCQkgICAgSTkxNV9HRU1fRE9NQUlOX0lOU1RS VUNUSU9OLCAwLAorCQkJICAgIEJBU0VfQUREUkVTU19NT0RJRlksIDB4MCk7CisKKwkvKiBpbmRp cmVjdCAqLworCWludGVsX2JiX291dChpYmIsIDApOworCisJLyogaW5zdHJ1Y3Rpb24gKi8KKwlp bnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgaWJiLT5oYW5kbGUsCisJCQkgICAgSTkxNV9HRU1fRE9N QUlOX0lOU1RSVUNUSU9OLCAwLAorCQkJICAgIEJBU0VfQUREUkVTU19NT0RJRlksIDB4MCk7CisK KwkvKiBnZW5lcmFsL2R5bmFtaWMvaW5kaXJlY3QvaW5zdHJ1Y3Rpb24gYWNjZXNzIEJvdW5kICov CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMCB8IEJBU0VfQURE UkVTU19NT0RJRlkpOworCWludGVsX2JiX291dChpYmIsIDApOworCWludGVsX2JiX291dChpYmIs IDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKK30KKwordm9pZAorZ2VuN19lbWl0X3ZmZV9zdGF0 ZV92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgdGhyZWFkcywKKwkJICAgICAgIHVp bnQzMl90IHVyYl9lbnRyaWVzLCB1aW50MzJfdCB1cmJfc2l6ZSwKKwkJICAgICAgIHVpbnQzMl90 IGN1cmJlX3NpemUsIHVpbnQzMl90IG1vZGUpCit7CisJaW50ZWxfYmJfb3V0KGliYiwgR0VON19N RURJQV9WRkVfU1RBVEUgfCAoOCAtIDIpKTsKKworCS8qIHNjcmF0Y2ggYnVmZmVyICovCisJaW50 ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiBudW1iZXIgb2YgdGhyZWFkcyAmIHVyYiBlbnRyaWVz ICovCisJaW50ZWxfYmJfb3V0KGliYiwgdGhyZWFkcyA8PCAxNiB8CisJCSAgICAgdXJiX2VudHJp ZXMgPDwgOCB8CisJCSAgICAgbW9kZSA8PCAyKTsgLyogR1BHUFUgdnMgbWVkaWEgbW9kZSAqLwor CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisKKwkvKiB1cmIgZW50cnkgc2l6ZSAmIGN1cmJlIHNp emUgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCB1cmJfc2l6ZSA8PCAxNiB8CS8qIGluIDI1NiBiaXRz IHVuaXQgKi8KKwkJICAgICBjdXJiZV9zaXplKTsJCS8qIGluIDI1NiBiaXRzIHVuaXQgKi8KKwor CS8qIHNjb3JlYm9hcmQgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQo aWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKK30KKwordm9pZAorZ2VuN19lbWl0X2N1 cmJlX2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGN1cmJlX2J1ZmZlcikK K3sKKwlpbnRlbF9iYl9vdXQoaWJiLCBHRU43X01FRElBX0NVUkJFX0xPQUQgfCAoNCAtIDIpKTsK KwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwkvKiBjdXJiZSB0b3RhbCBkYXRhIGxlbmd0aCAqLwor CWludGVsX2JiX291dChpYmIsIDY0KTsKKwkvKiBjdXJiZSBkYXRhIHN0YXJ0IGFkZHJlc3MsIGlz IHJlbGF0aXZlIHRvIHRoZSBkeW5hbWljcyBiYXNlIGFkZHJlc3MgKi8KKwlpbnRlbF9iYl9vdXQo aWJiLCBjdXJiZV9idWZmZXIpOworfQorCit2b2lkCitnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2Ny aXB0b3JfbG9hZF92MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgICAgICAgdWludDMyX3Qg aW50ZXJmYWNlX2Rlc2NyaXB0b3IpCit7CisJaW50ZWxfYmJfb3V0KGliYiwgR0VON19NRURJQV9J TlRFUkZBQ0VfREVTQ1JJUFRPUl9MT0FEIHwgKDQgLSAyKSk7CisJaW50ZWxfYmJfb3V0KGliYiwg MCk7CisJLyogaW50ZXJmYWNlIGRlc2NyaXB0b3IgZGF0YSBsZW5ndGggKi8KKwlpZiAoaWJiLT5n ZW4gPT0gNykKKwkJaW50ZWxfYmJfb3V0KGliYiwgc2l6ZW9mKHN0cnVjdCBnZW43X2ludGVyZmFj ZV9kZXNjcmlwdG9yX2RhdGEpKTsKKwllbHNlCisJCWludGVsX2JiX291dChpYmIsIHNpemVvZihz dHJ1Y3QgZ2VuOF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9kYXRhKSk7CisJLyogaW50ZXJmYWNlIGRl c2NyaXB0b3IgYWRkcmVzcywgaXMgcmVsYXRpdmUgdG8gdGhlIGR5bmFtaWNzIGJhc2UKKwkgKiBh ZGRyZXNzCisJICovCisJaW50ZWxfYmJfb3V0KGliYiwgaW50ZXJmYWNlX2Rlc2NyaXB0b3IpOwor fQorCit2b2lkCitnZW43X2VtaXRfZ3BncHVfd2Fsa192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK KwkJCXVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKKwkJCXVuc2lnbmVkIGludCB3aWR0 aCwgdW5zaWduZWQgaW50IGhlaWdodCkKK3sKKwl1aW50MzJfdCB4X2RpbSwgeV9kaW0sIHRtcCwg cmlnaHRfbWFzazsKKworCS8qCisJICogU2ltcGx5IGRvIFNJTUQxNiBiYXNlZCBkaXNwYXRjaCwg c28gZXZlcnkgdGhyZWFkIHVzZXMKKwkgKiBTSU1EMTYgY2hhbm5lbHMuCisJICoKKwkgKiBEZWZp bmUgb3VyIG93biB0aHJlYWQgZ3JvdXAgc2l6ZSwgZS5nIDE2eDEgZm9yIGV2ZXJ5IGdyb3VwLCB0 aGVuCisJICogd2lsbCBoYXZlIDEgdGhyZWFkIGVhY2ggZ3JvdXAgaW4gU0lNRDE2IGRpc3BhdGNo LiBTbyB0aHJlYWQKKwkgKiB3aWR0aC9oZWlnaHQvZGVwdGggYXJlIGFsbCAxLgorCSAqCisJICog VGhlbiB0aHJlYWQgZ3JvdXAgWCA9IHdpZHRoIC8gMTYgKGFsaWduZWQgdG8gMTYpCisJICogdGhy ZWFkIGdyb3VwIFkgPSBoZWlnaHQ7CisJICovCisJeF9kaW0gPSAod2lkdGggKyAxNSkgLyAxNjsK Kwl5X2RpbSA9IGhlaWdodDsKKworCXRtcCA9IHdpZHRoICYgMTU7CisJaWYgKHRtcCA9PSAwKQor CQlyaWdodF9tYXNrID0gKDEgPDwgMTYpIC0gMTsKKwllbHNlCisJCXJpZ2h0X21hc2sgPSAoMSA8 PCB0bXApIC0gMTsKKworCWludGVsX2JiX291dChpYmIsIEdFTjdfR1BHUFVfV0FMS0VSIHwgOSk7 CisKKwkvKiBpbnRlcmZhY2UgZGVzY3JpcHRvciBvZmZzZXQgKi8KKwlpbnRlbF9iYl9vdXQoaWJi LCAwKTsKKworCS8qIFNJTUQgc2l6ZSwgdGhyZWFkIHcvaC9kICovCisJaW50ZWxfYmJfb3V0KGli YiwgMSA8PCAzMCB8IC8qIFNJTUQxNiAqLworCQkgIDAgPDwgMTYgfCAvKiBkZXB0aDoxICovCisJ CSAgMCA8PCA4IHwgLyogaGVpZ2h0OjEgKi8KKwkJICAwKTsgLyogd2lkdGg6MSAqLworCisJLyog dGhyZWFkIGdyb3VwIFggKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQo aWJiLCB4X2RpbSk7CisKKwkvKiB0aHJlYWQgZ3JvdXAgWSAqLworCWludGVsX2JiX291dChpYmIs IDApOworCWludGVsX2JiX291dChpYmIsIHlfZGltKTsKKworCS8qIHRocmVhZCBncm91cCBaICov CisJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJaW50ZWxfYmJfb3V0KGliYiwgMSk7CisKKwkvKiBy aWdodCBtYXNrICovCisJaW50ZWxfYmJfb3V0KGliYiwgcmlnaHRfbWFzayk7CisKKwkvKiBib3R0 b20gbWFzaywgaGVpZ2h0IDEsIGFsd2F5cyAweGZmZmZmZmZmICovCisJaW50ZWxfYmJfb3V0KGli YiwgMHhmZmZmZmZmZik7Cit9CmRpZmYgLS1naXQgYS9saWIvZ3B1X2NtZHMuaCBiL2xpYi9ncHVf Y21kcy5oCmluZGV4IDEzMjFhZjQ0Li43MjhiNGU2OCAxMDA2NDQKLS0tIGEvbGliL2dwdV9jbWRz LmgKKysrIGIvbGliL2dwdV9jbWRzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJkcm10 ZXN0LmgiCiAjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKICNpbmNsdWRlICJpbnRlbF9j aGlwc2V0LmgiCisjaW5jbHVkZSAiaW50ZWxfYnVmb3BzLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+ CiAKIHZvaWQKQEAgLTE0OCw0ICsxNDksMzYgQEAgZ2VuX2VtaXRfbWVkaWFfb2JqZWN0KHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVuc2lnbmVkIGludCB4b2Zmc2V0LAogdm9pZAog Z2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJh dGNoKTsKIAorCisvKiBObyBsaWJkcm0gKi8KK3VpbnQzMl90CitnZW43X2ZpbGxfY3VyYmVfYnVm ZmVyX2RhdGFfdjIoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkgICAgICAgdWludDhfdCBjb2xv cik7CisKK3VpbnQzMl90CitnZW43X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfdjIoc3RydWN0 IGludGVsX2JiICppYmIsCisJCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkJICBjb25z dCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKKwkJCQkgIHNpemVfdCBzaXplKTsKKwordm9pZAorZ2Vu N19lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzc192MihzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CisKK3Zv aWQKK2dlbjdfZW1pdF92ZmVfc3RhdGVfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90 IHRocmVhZHMsCisJCSAgICAgICB1aW50MzJfdCB1cmJfZW50cmllcywgdWludDMyX3QgdXJiX3Np emUsCisJCSAgICAgICB1aW50MzJfdCBjdXJiZV9zaXplLCB1aW50MzJfdCBtb2RlKTsKKwordm9p ZAorZ2VuN19lbWl0X2N1cmJlX2xvYWRfdjIoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90 IGN1cmJlX2J1ZmZlcik7CisKK3ZvaWQKK2dlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9s b2FkX3YyKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCSAgICAgICB1aW50MzJfdCBpbnRlcmZh Y2VfZGVzY3JpcHRvcik7CisKK3ZvaWQKK2dlbjdfZW1pdF9ncGdwdV93YWxrX3YyKHN0cnVjdCBp bnRlbF9iYiAqaWJiLAorCQkJdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LAorCQkJdW5z aWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKKwogI2VuZGlmIC8qIEdQVV9D TURTX0ggKi8KLS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==