From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andi Shyti Subject: [PATCH] drm/i915: Extract GT ring management Date: Sun, 20 Oct 2019 03:50:45 +0300 Message-ID: <20191020005045.19730-1-andi@etezian.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D039789AFF for ; Sun, 20 Oct 2019 00:50:56 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel GFX List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpBbHRob3VnaCB0aGUgcmlu ZyBtYW5hZ2VtZW50IGlzIG11Y2ggc21hbGxlciBjb21wYXJlZCB0byB0aGUgb3RoZXIgR1QKcG93 ZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGNvbnRpbnVlIHRoZSB0aGVtZSBvZiBleHRyYWN0aW5n IGl0IG91dCBvZgp0aGUgaHVnZSBpbnRlbF9wbS5jIGZvciBtYWludGVuYW5jZS4KCkJhc2VkIG9u IGEgcGF0Y2ggYnkgQ2hyaXMgV2lsc29uLgoKU2lnbmVkLW9mZi1ieTogQW5kaSBTaHl0aSA8YW5k aS5zaHl0aUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAg MSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oICB8ICAgMiArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYyAgICAgICB8IDEyMCArKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuaCAgICAgICB8 ICAxNSArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsY190eXBlcy5oIHwgIDEz ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgfCAgIDUgLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgfCAxMTkgKy0tLS0tLS0t LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oICAgICAgICAgICB8 ICAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xs Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxj LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGNf dHlwZXMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZTc5MWQ5MzIzYjUxLi5hMTZhMmRhZWY5 NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC04Nyw2ICs4Nyw3IEBAIGd0LXkgKz0gXAogCWd0 L2ludGVsX2d0X3BtX2lycS5vIFwKIAlndC9pbnRlbF9ndF9yZXF1ZXN0cy5vIFwKIAlndC9pbnRl bF9oYW5nY2hlY2subyBcCisJZ3QvaW50ZWxfbGxjLm8gXAogCWd0L2ludGVsX2xyYy5vIFwKIAln dC9pbnRlbF9yYzYubyBcCiAJZ3QvaW50ZWxfcmVuZGVyc3RhdGUubyBcCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAppbmRleCBiZTRiMjYzNjIxYzguLmFlNGFhZjc1YWM3 OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCkBAIC0xNyw2ICsx Nyw3IEBACiAKICNpbmNsdWRlICJpOTE1X3ZtYS5oIgogI2luY2x1ZGUgImludGVsX2VuZ2luZV90 eXBlcy5oIgorI2luY2x1ZGUgImludGVsX2xsY190eXBlcy5oIgogI2luY2x1ZGUgImludGVsX3Jl c2V0X3R5cGVzLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmM2X3R5cGVzLmgiCiAjaW5jbHVkZSAiaW50 ZWxfd2FrZXJlZi5oIgpAQCAtNzksNiArODAsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCSAqLwog CWludGVsX3dha2VyZWZfdCBhd2FrZTsKIAorCXN0cnVjdCBpbnRlbF9sbGMgbGxjOwogCXN0cnVj dCBpbnRlbF9yYzYgcmM2OwogCiAJc3RydWN0IGJsb2NraW5nX25vdGlmaWVyX2hlYWQgcG1fbm90 aWZpY2F0aW9uczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xs Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZjJiZjQyYWM4YzIKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYwpAQCAtMCwwICsxLDEyMCBAQAor LyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkg MjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jcHVmcmVxLmg+ CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2d0LmgiCisjaW5jbHVk ZSAiaW50ZWxfbGxjLmgiCisjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKKworc3RhdGljIHN0 cnVjdCBpbnRlbF9ndCAqbGxjX3RvX2d0KHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKK3sKKwlyZXR1 cm4gY29udGFpbmVyX29mKGxsYywgc3RydWN0IGludGVsX2d0LCBsbGMpOworfQorCitzdGF0aWMg dW5zaWduZWQgaW50IGNwdV9tYXhfTUh6KHZvaWQpCit7CisJc3RydWN0IGNwdWZyZXFfcG9saWN5 ICpwb2xpY3k7CisJdW5zaWduZWQgaW50IG1heF9raHo7CisKKwlwb2xpY3kgPSBjcHVmcmVxX2Nw dV9nZXQoMCk7CisJaWYgKHBvbGljeSkgeworCQltYXhfa2h6ID0gcG9saWN5LT5jcHVpbmZvLm1h eF9mcmVxOworCQljcHVmcmVxX2NwdV9wdXQocG9saWN5KTsKKwl9IGVsc2UgeworCQkvKgorCQkg KiBEZWZhdWx0IHRvIG1lYXN1cmVkIGZyZXEgaWYgbm9uZSBmb3VuZCwgUENVIHdpbGwgZW5zdXJl IHdlCisJCSAqIGRvbid0IGdvIG92ZXIKKwkJICovCisJCW1heF9raHogPSB0c2Nfa2h6OworCX0K KworCXJldHVybiBtYXhfa2h6IC8gMTAwMDsKK30KKworc3RhdGljIHZvaWQgZ2VuNl91cGRhdGVf cmluZ19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGxsY190b19ndChsbGMpLT5pOTE1OworCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZpOTE1LT5ndF9wbS5ycHM7CisJdW5zaWduZWQgaW50IG1heF9pYV9mcmVxLCBtaW5fcmlu Z19mcmVxOworCXVuc2lnbmVkIGludCBtYXhfZ3B1X2ZyZXEsIG1pbl9ncHVfZnJlcTsKKwljb25z dCBpbnQgbWluX2ZyZXEgPSAxNTsKKwljb25zdCBpbnQgc2NhbGUgPSAxODA7CisJdW5zaWduZWQg aW50IGdwdV9mcmVxOworCisJaWYgKHJwcy0+bWF4X2ZyZXEgPD0gcnBzLT5taW5fZnJlcSkKKwkJ cmV0dXJuOworCisJbWF4X2lhX2ZyZXEgPSBjcHVfbWF4X01IeigpOworCisJbWluX3JpbmdfZnJl cSA9IGludGVsX3VuY29yZV9yZWFkKGxsY190b19ndChsbGMpLT51bmNvcmUsIERDTEspICYgMHhm OworCS8qIGNvbnZlcnQgRERSIGZyZXF1ZW5jeSBmcm9tIHVuaXRzIG9mIDI2Ni42TUh6IHRvIGJh bmR3aWR0aCAqLworCW1pbl9yaW5nX2ZyZXEgPSBtdWx0X2ZyYWMobWluX3JpbmdfZnJlcSwgOCwg Myk7CisKKwltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxOworCW1heF9ncHVfZnJlcSA9IHJw cy0+bWF4X2ZyZXE7CisJaWYgKElTX0dFTjlfQkMoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49 IDEwKSB7CisJCS8qIENvbnZlcnQgR1QgZnJlcXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCisJCW1p bl9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOworCQltYXhfZ3B1X2ZyZXEgLz0gR0VOOV9G UkVRX1NDQUxFUjsKKwl9CisKKwkvKgorCSAqIEZvciBlYWNoIHBvdGVudGlhbCBHUFUgZnJlcXVl bmN5LCBsb2FkIGEgcmluZyBmcmVxdWVuY3kgd2UnZCBsaWtlCisJICogdG8gdXNlIGZvciBtZW1v cnkgYWNjZXNzLiAgV2UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIHRoZSBJQSBmcmVxdWVuY3kKKwkg KiB0aGUgUENVIHNob3VsZCB1c2UgYXMgYSByZWZlcmVuY2UgdG8gZGV0ZXJtaW5lIHRoZSByaW5n IGZyZXF1ZW5jeS4KKwkgKi8KKwlmb3IgKGdwdV9mcmVxID0gbWF4X2dwdV9mcmVxOyBncHVfZnJl cSA+PSBtaW5fZ3B1X2ZyZXE7IGdwdV9mcmVxLS0pIHsKKwkJY29uc3QgaW50IGRpZmYgPSBtYXhf Z3B1X2ZyZXEgLSBncHVfZnJlcTsKKwkJdW5zaWduZWQgaW50IGlhX2ZyZXEgPSAwLCByaW5nX2Zy ZXEgPSAwOworCisJCWlmIChJU19HRU45X0JDKGk5MTUpIHx8IElOVEVMX0dFTihpOTE1KSA+PSAx MCkgeworCQkJLyoKKwkJCSAqIHJpbmdfZnJlcSA9IDIgKiBHVC4gcmluZ19mcmVxIGlzIGluIDEw ME1IeiB1bml0cworCQkJICogTm8gZmxvb3IgcmVxdWlyZWQgZm9yIHJpbmcgZnJlcXVlbmN5IG9u IFNLTC4KKwkJCSAqLworCQkJcmluZ19mcmVxID0gZ3B1X2ZyZXE7CisJCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpID49IDgpIHsKKwkJCS8qIG1heCgyICogR1QsIEREUikuIE5COiBHVCBpcyA1 ME1IeiB1bml0cyAqLworCQkJcmluZ19mcmVxID0gbWF4KG1pbl9yaW5nX2ZyZXEsIGdwdV9mcmVx KTsKKwkJfSBlbHNlIGlmIChJU19IQVNXRUxMKGk5MTUpKSB7CisJCQlyaW5nX2ZyZXEgPSBtdWx0 X2ZyYWMoZ3B1X2ZyZXEsIDUsIDQpOworCQkJcmluZ19mcmVxID0gbWF4KG1pbl9yaW5nX2ZyZXEs IHJpbmdfZnJlcSk7CisJCQkvKiBsZWF2ZSBpYV9mcmVxIGFzIHRoZSBkZWZhdWx0LCBjaG9zZW4g YnkgY3B1ZnJlcSAqLworCQl9IGVsc2UgeworCQkJLyogT24gb2xkZXIgcHJvY2Vzc29ycywgdGhl cmUgaXMgbm8gc2VwYXJhdGUgcmluZworCQkJICogY2xvY2sgZG9tYWluLCBzbyBpbiBvcmRlciB0 byBib29zdCB0aGUgYmFuZHdpZHRoCisJCQkgKiBvZiB0aGUgcmluZywgd2UgbmVlZCB0byB1cGNs b2NrIHRoZSBDUFUgKGlhX2ZyZXEpLgorCQkJICoKKwkJCSAqIEZvciBHUFUgZnJlcXVlbmNpZXMg bGVzcyB0aGFuIDc1ME1IeiwKKwkJCSAqIGp1c3QgdXNlIHRoZSBsb3dlc3QgcmluZyBmcmVxLgor CQkJICovCisJCQlpZiAoZ3B1X2ZyZXEgPCBtaW5fZnJlcSkKKwkJCQlpYV9mcmVxID0gODAwOwor CQkJZWxzZQorCQkJCWlhX2ZyZXEgPSBtYXhfaWFfZnJlcSAtIGRpZmYgKiBzY2FsZSAvIDI7CisJ CQlpYV9mcmVxID0gRElWX1JPVU5EX0NMT1NFU1QoaWFfZnJlcSwgMTAwKTsKKwkJfQorCisJCXNh bmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGk5MTUsCisJCQkJCUdFTjZfUENPREVfV1JJVEVfTUlOX0ZS RVFfVEFCTEUsCisJCQkJCWlhX2ZyZXEgPDwgR0VONl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZU IHwKKwkJCQkJcmluZ19mcmVxIDw8IEdFTjZfUENPREVfRlJFUV9SSU5HX1JBVElPX1NISUZUIHwK KwkJCQkJZ3B1X2ZyZXEpOworCX0KK30KKwordm9pZCBpbnRlbF9sbGNfZW5hYmxlKHN0cnVjdCBp bnRlbF9sbGMgKmxsYykKK3sKKwlpZiAoSEFTX0xMQyhsbGNfdG9fZ3QobGxjKS0+aTkxNSkpCisJ CWdlbjZfdXBkYXRlX3JpbmdfZnJlcShsbGMpOworfQorCit2b2lkIGludGVsX2xsY19kaXNhYmxl KHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKK3sKKwkvKiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gSFcg Y29uZmlndXJhdGlvbiB0byBiZSBkb25lIHRvIGRpc2FibGUuICovCit9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2xsYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZWYwOWE4OTBkMmI3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbGxjLmgKQEAgLTAsMCArMSwxNSBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICov CisKKyNpZm5kZWYgSU5URUxfTExDX0gKKyNkZWZpbmUgSU5URUxfTExDX0gKKworc3RydWN0IGlu dGVsX2xsYzsKKwordm9pZCBpbnRlbF9sbGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9sbGMgKmxsYyk7 Cit2b2lkIGludGVsX2xsY19kaXNhYmxlKHN0cnVjdCBpbnRlbF9sbGMgKmxsYyk7CisKKyNlbmRp ZiAvKiBJTlRFTF9MTENfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbGxjX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGNfdHlw ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjYWQ0Njg3Yjkz MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsY190 eXBlcy5oCkBAIC0wLDAgKzEsMTMgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisj aWZuZGVmIElOVEVMX0xMQ19UWVBFU19ICisjZGVmaW5lIElOVEVMX0xMQ19UWVBFU19ICisKK3N0 cnVjdCBpbnRlbF9sbGMgeworfTsKKworI2VuZGlmIC8qIElOVEVMX0xMQ19UWVBFU19IICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkYjNjM2EwMjVhMDMuLjE2Yjg1YzdmN2YyMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MDUsMTMgKzYwNSw4IEBAIHN0cnVjdCBpbnRlbF9y cHMgewogCXN0cnVjdCBpbnRlbF9ycHNfZWkgZWk7CiB9OwogCi1zdHJ1Y3QgaW50ZWxfbGxjX3Bz dGF0ZSB7Ci0JYm9vbCBlbmFibGVkOwotfTsKLQogc3RydWN0IGludGVsX2dlbjZfcG93ZXJfbWdt dCB7CiAJc3RydWN0IGludGVsX3JwcyBycHM7Ci0Jc3RydWN0IGludGVsX2xsY19wc3RhdGUgbGxj X3BzdGF0ZTsKIH07CiAKIC8qIGRlZmluZWQgaW50ZWxfcG0uYyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggMmI3MWQ1MmE0ZWRlLi4wNGU3OWQzOTkwNzUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZmJjLmgi CiAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9zcHJpdGUuaCIKIAorI2luY2x1ZGUgImd0L2ludGVs X2xsYy5oIgorCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2lycS5oIgog I2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKQEAgLTcwMzAsOTMgKzcwMzIsNiBAQCBzdGF0aWMgdm9p ZCBnZW42X2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxM KTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3By aXYtPmd0X3BtLnJwczsKLQljb25zdCBpbnQgbWluX2ZyZXEgPSAxNTsKLQljb25zdCBpbnQgc2Nh bGluZ19mYWN0b3IgPSAxODA7Ci0JdW5zaWduZWQgaW50IGdwdV9mcmVxOwotCXVuc2lnbmVkIGlu dCBtYXhfaWFfZnJlcSwgbWluX3JpbmdfZnJlcTsKLQl1bnNpZ25lZCBpbnQgbWF4X2dwdV9mcmVx LCBtaW5fZ3B1X2ZyZXE7Ci0Jc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3k7Ci0KLQlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZycHMtPmxvY2spOwotCi0JaWYgKHJwcy0+bWF4X2ZyZXEgPD0gcnBz LT5taW5fZnJlcSkKLQkJcmV0dXJuOwotCi0JcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0KDApOwot CWlmIChwb2xpY3kpIHsKLQkJbWF4X2lhX2ZyZXEgPSBwb2xpY3ktPmNwdWluZm8ubWF4X2ZyZXE7 Ci0JCWNwdWZyZXFfY3B1X3B1dChwb2xpY3kpOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIERlZmF1 bHQgdG8gbWVhc3VyZWQgZnJlcSBpZiBub25lIGZvdW5kLCBQQ1Ugd2lsbCBlbnN1cmUgd2UKLQkJ ICogZG9uJ3QgZ28gb3ZlcgotCQkgKi8KLQkJbWF4X2lhX2ZyZXEgPSB0c2Nfa2h6OwotCX0KLQot CS8qIENvbnZlcnQgZnJvbSBrSHogdG8gTUh6ICovCi0JbWF4X2lhX2ZyZXEgLz0gMTAwMDsKLQot CW1pbl9yaW5nX2ZyZXEgPSBJOTE1X1JFQUQoRENMSykgJiAweGY7Ci0JLyogY29udmVydCBERFIg ZnJlcXVlbmN5IGZyb20gdW5pdHMgb2YgMjY2LjZNSHogdG8gYmFuZHdpZHRoICovCi0JbWluX3Jp bmdfZnJlcSA9IG11bHRfZnJhYyhtaW5fcmluZ19mcmVxLCA4LCAzKTsKLQotCW1pbl9ncHVfZnJl cSA9IHJwcy0+bWluX2ZyZXE7Ci0JbWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKLQlpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewotCQkv KiBDb252ZXJ0IEdUIGZyZXF1ZW5jeSB0byA1MCBIWiB1bml0cyAqLwotCQltaW5fZ3B1X2ZyZXEg Lz0gR0VOOV9GUkVRX1NDQUxFUjsKLQkJbWF4X2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7 Ci0JfQotCi0JLyoKLQkgKiBGb3IgZWFjaCBwb3RlbnRpYWwgR1BVIGZyZXF1ZW5jeSwgbG9hZCBh IHJpbmcgZnJlcXVlbmN5IHdlJ2QgbGlrZQotCSAqIHRvIHVzZSBmb3IgbWVtb3J5IGFjY2Vzcy4g IFdlIGRvIHRoaXMgYnkgc3BlY2lmeWluZyB0aGUgSUEgZnJlcXVlbmN5Ci0JICogdGhlIFBDVSBz aG91bGQgdXNlIGFzIGEgcmVmZXJlbmNlIHRvIGRldGVybWluZSB0aGUgcmluZyBmcmVxdWVuY3ku Ci0JICovCi0JZm9yIChncHVfZnJlcSA9IG1heF9ncHVfZnJlcTsgZ3B1X2ZyZXEgPj0gbWluX2dw dV9mcmVxOyBncHVfZnJlcS0tKSB7Ci0JCWNvbnN0IGludCBkaWZmID0gbWF4X2dwdV9mcmVxIC0g Z3B1X2ZyZXE7Ci0JCXVuc2lnbmVkIGludCBpYV9mcmVxID0gMCwgcmluZ19mcmVxID0gMDsKLQot CQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkg ewotCQkJLyoKLQkJCSAqIHJpbmdfZnJlcSA9IDIgKiBHVC4gcmluZ19mcmVxIGlzIGluIDEwME1I eiB1bml0cwotCQkJICogTm8gZmxvb3IgcmVxdWlyZWQgZm9yIHJpbmcgZnJlcXVlbmN5IG9uIFNL TC4KLQkJCSAqLwotCQkJcmluZ19mcmVxID0gZ3B1X2ZyZXE7Ci0JCX0gZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA4KSB7Ci0JCQkvKiBtYXgoMiAqIEdULCBERFIpLiBOQjogR1QgaXMg NTBNSHogdW5pdHMgKi8KLQkJCXJpbmdfZnJlcSA9IG1heChtaW5fcmluZ19mcmVxLCBncHVfZnJl cSk7Ci0JCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKLQkJCXJpbmdfZnJlcSA9 IG11bHRfZnJhYyhncHVfZnJlcSwgNSwgNCk7Ci0JCQlyaW5nX2ZyZXEgPSBtYXgobWluX3Jpbmdf ZnJlcSwgcmluZ19mcmVxKTsKLQkJCS8qIGxlYXZlIGlhX2ZyZXEgYXMgdGhlIGRlZmF1bHQsIGNo b3NlbiBieSBjcHVmcmVxICovCi0JCX0gZWxzZSB7Ci0JCQkvKiBPbiBvbGRlciBwcm9jZXNzb3Jz LCB0aGVyZSBpcyBubyBzZXBhcmF0ZSByaW5nCi0JCQkgKiBjbG9jayBkb21haW4sIHNvIGluIG9y ZGVyIHRvIGJvb3N0IHRoZSBiYW5kd2lkdGgKLQkJCSAqIG9mIHRoZSByaW5nLCB3ZSBuZWVkIHRv IHVwY2xvY2sgdGhlIENQVSAoaWFfZnJlcSkuCi0JCQkgKgotCQkJICogRm9yIEdQVSBmcmVxdWVu Y2llcyBsZXNzIHRoYW4gNzUwTUh6LAotCQkJICoganVzdCB1c2UgdGhlIGxvd2VzdCByaW5nIGZy ZXEuCi0JCQkgKi8KLQkJCWlmIChncHVfZnJlcSA8IG1pbl9mcmVxKQotCQkJCWlhX2ZyZXEgPSA4 MDA7Ci0JCQllbHNlCi0JCQkJaWFfZnJlcSA9IG1heF9pYV9mcmVxIC0gKChkaWZmICogc2NhbGlu Z19mYWN0b3IpIC8gMik7Ci0JCQlpYV9mcmVxID0gRElWX1JPVU5EX0NMT1NFU1QoaWFfZnJlcSwg MTAwKTsKLQkJfQotCi0JCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LAotCQkJCQlH RU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RBQkxFLAotCQkJCQlpYV9mcmVxIDw8IEdFTjZfUENP REVfRlJFUV9JQV9SQVRJT19TSElGVCB8Ci0JCQkJCXJpbmdfZnJlcSA8PCBHRU42X1BDT0RFX0ZS RVFfUklOR19SQVRJT19TSElGVCB8Ci0JCQkJCWdwdV9mcmVxKTsKLQl9Ci19Ci0KIHN0YXRpYyBp bnQgY2hlcnJ5dmlld19ycHNfbWF4X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewogCXUzMiB2YWwsIHJwMDsKQEAgLTc5NjUsMTggKzc4ODAsNiBAQCB2b2lkIGludGVs X3Nhbml0aXplX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJCWdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOwogfQogCi1zdGF0aWMgaW5s aW5lIHZvaWQgaW50ZWxfZGlzYWJsZV9sbGNfcHN0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQotewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmd0X3BtLnJwcy5sb2NrKTsK LQotCWlmICghaTkxNS0+Z3RfcG0ubGxjX3BzdGF0ZS5lbmFibGVkKQotCQlyZXR1cm47Ci0KLQkv KiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gSFcgY29uZmlndXJhdGlvbiB0byBiZSBkb25lIHRvIGRp c2FibGUuICovCi0KLQlpOTE1LT5ndF9wbS5sbGNfcHN0YXRlLmVuYWJsZWQgPSBmYWxzZTsKLX0K LQogc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5ndF9wbS5ycHMu bG9jayk7CkBAIC04MDA0LDIzICs3OTA3LDExIEBAIHZvaWQgaW50ZWxfZGlzYWJsZV9ndF9wb3dl cnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaW50ZWxfZGlzYWJs ZV9ycHMoZGV2X3ByaXYpOwogCWlmIChIQVNfTExDKGRldl9wcml2KSkKLQkJaW50ZWxfZGlzYWJs ZV9sbGNfcHN0YXRlKGRldl9wcml2KTsKKwkJaW50ZWxfbGxjX2Rpc2FibGUoJmRldl9wcml2LT5n dC5sbGMpOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogfQog Ci1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5hYmxlX2xsY19wc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+Z3RfcG0u cnBzLmxvY2spOwotCi0JaWYgKGk5MTUtPmd0X3BtLmxsY19wc3RhdGUuZW5hYmxlZCkKLQkJcmV0 dXJuOwotCi0JZ2VuNl91cGRhdGVfcmluZ19mcmVxKGk5MTUpOwotCi0JaTkxNS0+Z3RfcG0ubGxj X3BzdGF0ZS5lbmFibGVkID0gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3Jw cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX3Jw cyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CkBAIC04MDY0LDggKzc5NTUsOCBAQCB2b2lk IGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCiAJaWYgKEhBU19SUFMoZGV2X3ByaXYpKQogCQlpbnRlbF9lbmFibGVfcnBzKGRldl9w cml2KTsKLQlpZiAoSEFTX0xMQyhkZXZfcHJpdikpCi0JCWludGVsX2VuYWJsZV9sbGNfcHN0YXRl KGRldl9wcml2KTsKKworCWludGVsX2xsY19lbmFibGUoJmRldl9wcml2LT5ndC5sbGMpOwogCiAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z3RfcG0ucnBzLmxvY2spOwogfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmgKaW5kZXggOTNkMTkyZDA2MTBhLi4xYTVkMmU0MjEwZDYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uaApAQCAtMzIsOSArMzIsOSBAQCB2b2lkIGludGVsX3BtX3NldHVwKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2dwdV9pcHNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9ncHVfaXBzX3RlYXJk b3duKHZvaWQpOwogdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9zYW5pdGl6ZV9ndF9w b3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxf ZW5hYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwot dm9pZCBpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdm9pZCBnZW42X3Jwc19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiB2b2lkIGdlbjZfcnBzX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwot LSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=