From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v4 5/6] drm/i915: enable scrambling Date: Wed, 22 Feb 2017 18:48:30 +0530 Message-ID: <1487769511-17359-6-git-send-email-shashank.sharma@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, jose.abreu@synopsys.com, jani.nikula@linux.intel.com, maarten.lankhorst@linux.intel.com, ville.syrjala@linux.intel.com Cc: daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org R2VtaW5pbGFrZSBwbGF0Zm9ybSBzcG9ydHMgYSBuYXRpdmUgSERNSSAyLjAgY29udHJvbGxlciwg YW5kIGlzCmNhcGFibGUgb2YgZHJpdmluZyBwaXhlbC1jbG9ja3MgdXB0byA1OTRNaHouIEhETUkg Mi4wIHNwZWMKbWVuZGF0ZXMgc2NyYW1ibGluZyBmb3IgdGhlc2UgaGlnaGVyIGNsb2NrcywgZm9y IHJlZHVjZWQgUkYgZm9vdHByaW50LgoKVGhpcyBwYXRjaCBjaGVja3MgaWYgdGhlIG1vbml0b3Ig c3VwcG9ydHMgc2NyYW1ibGluZywgYW5kIGlmIHJlcXVpcmVkLAplbmFibGVzIGl0IGR1cmluZyB0 aGUgbW9kZXNldC4KClYyOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6Ci0g RG8gbm90IHRyYWNrIHNjcmFtYmxpbmcgc3RhdHVzIGluIERSTSBsYXllciwgdHJhY2sgc29tZXdo ZXJlIGluCiAgZHJpdmVyIGxpa2UgaW4gaW50ZWxfY3J0Y19zdGF0ZS4KLSBEb24ndCB0YWxrIHRv IG1vbml0b3IgYXQgc3VjaCBhIGxvdyBsYXllciwgc2V0IG1vbml0b3Igc2NyYW1ibGluZwogIGlu IGludGVsX2VuYWJsZV9kZGkoKSBiZWZvcmUgZW5hYmxpbmcgdGhlIHBvcnQuCgpWMzogQWRkcmVz c2VkIHJldmlldyBjb21tZW50cyBmcm9tIEphbmkKLSBJbiBjb21tZW50cywgZnVuY3Rpb24gbmFt ZXMsIHVzZSAic2luayIgaW5zdGVhZCBvZiAibW9uaXRvciIsCiAgc28gdGhhdCB0aGUgaW1wbGVt ZW50YXRpb24gY291bGQgYmUgY2xvc2UgdG8gdGhlIGxhbmd1YWdlIG9mCiAgSERNSSBzcGVjLgoK VjQ6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudCBmcm9tIE1hYXJ0ZW4KLSBzY3JhbWJsaW5nIC0+ IGhkbWlfc2NyYW1ibGluZwogIGhpZ2hfdG1kc19jbG9ja19yYXRpbyAtPiBoZG1pX2hpZ2hfdG1k c19jbG9ja19yYXRpbwoKU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5z aGFybWFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICB8 ICAgNCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgIHwgIDI4ICsrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAxNCArKysrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggMTQxYTVjMS4uODFjZjEwYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCkBAIC03ODE5LDcgKzc4MTksMTEgQEAgZW51bSB7CiAjZGVmaW5lICBUUkFOU19E RElfRURQX0lOUFVUX0JfT05PRkYJKDU8PDEyKQogI2RlZmluZSAgVFJBTlNfRERJX0VEUF9JTlBV VF9DX09OT0ZGCSg2PDwxMikKICNkZWZpbmUgIFRSQU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9D CSgxPDw4KQorI2RlZmluZSAgVFJBTlNfRERJX0hETUlfU0NSQU1CTEVSX0NUU19FTkFCTEUgKDE8 PDcpCisjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVTRVRfRlJFUSAoMTw8NikK ICNkZWZpbmUgIFRSQU5TX0RESV9CRklfRU5BQkxFCQkoMTw8NCkKKyNkZWZpbmUgIFRSQU5TX0RE SV9ISUdIX1RNRFNfQ0hBUl9SQVRFCSgxPDw0KQorI2RlZmluZSAgVFJBTlNfRERJX0hETUlfU0NS QU1CTElORwkoMTw8MCkKIAogLyogRGlzcGxheVBvcnQgVHJhbnNwb3J0IENvbnRyb2wgKi8KICNk ZWZpbmUgX0RQX1RQX0NUTF9BCQkJMHg2NDA0MApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwppbmRl eCBjZDZmZWRkLi5iZDgyOTNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwpAQCAtMTI3OCw2 ICsxMjc4LDExIEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogCQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfSERNSTsK IAkJZWxzZQogCQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFZJOworCisJCWlmIChJ U19HRU1JTklMQUtFKGRldl9wcml2KSkKKwkJCXRlbXAgPSBpbnRlbF9oZG1pX2hhbmRsZV9zb3Vy Y2Vfc2NyYW1ibGluZygKKwkJCQlpbnRlbF9lbmNvZGVyLAorCQkJCSZpbnRlbF9jcnRjLT5jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwgdGVtcCk7CiAJfSBlbHNlIGlmICh0eXBlID09IElOVEVM X09VVFBVVF9BTkFMT0cpIHsKIAkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRkRJOwog CQl0ZW1wIHw9IChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyAtIDEpIDw8IDE7CkBAIC0x ODQzLDYgKzE4NDgsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RkaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAkJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPQogCQkJZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOwogCisJCWlmIChJ U19HRU1JTklMQUtFKGRldl9wcml2KSkgeworCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOworCQkJLyoKKwkJCSAqIEdMSyBzcG9ydHMgYSBu YXRpdmUgSERNSSAyLjAgY29udHJvbGxlci4gSWYgcmVxdWlyZWQKKwkJCSAqIGNsb2NrIHJhdGUg aXMgPiAzNDAgTWh6ICYmIHNjcmFtYmxpbmcgaXMgc3VwcG9ydGVkCisJCQkgKiBieSBzaW5rLCBl bmFibGUgc2NyYW1ibGluZyBiZWZvcmUgZW5hYmxpbmcgdGhlCisJCQkgKiBIRE1JIDIuMCBwb3J0 LiBUaGUgc2luayBjYW4gY2hvb3NlIHRvIGRpc2FibGUgdGhlCisJCQkgKiBzY3JhbWJsaW5nIGlm IGl0IGRvZXNuJ3QgZGV0ZWN0IGEgc2NyYW1ibGVkIHdpdGhpbgorCQkJICogMTAwIG1zLgorCQkJ ICovCisJCQlpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoaW50ZWxfZW5jb2RlciwK KwkJCQkJCWNvbm5fc3RhdGUtPmNvbm5lY3RvciwKKwkJCQkJCWNydGMtPmNvbmZpZywgdHJ1ZSk7 CisJCX0KKwogCQkvKiBJbiBIRE1JL0RWSSBtb2RlLCB0aGUgcG9ydCB3aWR0aCwgYW5kIHN3aW5n L2VtcGhhc2lzIHZhbHVlcwogCQkgKiBhcmUgaWdub3JlZCBzbyBub3RoaW5nIHNwZWNpYWwgbmVl ZHMgdG8gYmUgZG9uZSBiZXNpZGVzCiAJCSAqIGVuYWJsaW5nIHRoZSBwb3J0LgpAQCAtMTg3NSw2 ICsxODk1LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZGRpKHN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyLAogCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvKQog CQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2VuY29kZXIpOwogCisJaWYgKHR5cGUg PT0gSU5URUxfT1VUUFVUX0hETUkpIHsKKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOworCisJCWludGVsX2hkbWlfaGFuZGxlX3Np bmtfc2NyYW1ibGluZyhpbnRlbF9lbmNvZGVyLAorCQkJCQlvbGRfY29ubl9zdGF0ZS0+Y29ubmVj dG9yLAorCQkJCQlpbnRlbF9jcnRjLT5jb25maWcsIGZhbHNlKTsKKwl9CisKIAlpZiAodHlwZSA9 PSBJTlRFTF9PVVRQVVRfRURQKSB7CiAJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggODIx YzU3Yy4uYzcyNjJkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTY5MSw2ICs2OTEs MTIgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCiAJLyogR2FtbWEgbW9kZSBwcm9ncmFt bWVkIG9uIHRoZSBwaXBlICovCiAJdWludDMyX3QgZ2FtbWFfbW9kZTsKKworCS8qIEhETUkgc2Ny YW1ibGluZyBzdGF0dXMgKHNpbmspICovCisJYm9vbCBoZG1pX3NjcmFtYmxpbmc7CisKKwkvKiBI RE1JIEhpZ2ggVE1EUyBjaGFyIHJhdGUgcmF0aW8gKHNpbmspICovCisJYm9vbCBoZG1pX2hpZ2hf dG1kc19jbG9ja19yYXRpbzsKIH07CiAKIHN0cnVjdCB2bHZfd21fc3RhdGUgewpAQCAtMTYwOSw2 ICsxNjE1LDE0IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGUpOwordWludDMyX3QKK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJj ZV9zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAorCQkJCQlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJdWludDMyX3QgY29uZmlnKTsKK3Zv aWQgaW50ZWxfaGRtaV9oYW5kbGVfc2lua19zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyLAorCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAor CQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAorCQkJCQlib29sIGVuYWJsZSk7 CiB2b2lkIGludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0IGludGVsX2hk bWkgKmhkbWksIGJvb2wgZW5hYmxlKTsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKaW5k ZXggYTU4MGRlOC4uYzQ0YmVlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwpAQCAtMzQs NiArMzQsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPgogI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgorI2luY2x1ZGUgPGRy bS9kcm1fc2NkY19oZWxwZXIuaD4KICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlIDxk cm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlIDxkcm0vaW50ZWxfbHBlX2F1ZGlvLmg+CkBAIC0xNzk1 LDYgKzE3OTYsMTEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2hkbWlfZGVzdHJveShzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCWludGVsX2hkbWktPmFzcGVjdF9yYXRpbyA9IEhETUlf UElDVFVSRV9BU1BFQ1RfTk9ORTsKIH0KIAordm9pZCBpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3Nj cmFtYmxpbmcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCisJCQkJICAgICAg IHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJICAgICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjb25maWcsCisJCQkJICAgICAgIGJvb2wgZW5hYmxlKQoreworCXN0cnVj dCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmludGVsX2VuY29k ZXItPmJhc2UpOworCXN0cnVjdCBkcm1fc2NkYyAqc2NkYyA9ICZjb25uZWN0b3ItPmRpc3BsYXlf aW5mby5oZG1pLnNjZGM7CisJc3RydWN0IGRybV9zY3JhbWJsaW5nICpzY3JhbWJsaW5nID0gJnNj ZGMtPnNjcmFtYmxpbmc7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY29uZmln LT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gY29ubmVjdG9yLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRw dHIgPSBpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihkZXZfcHJpdiwKKwkJCQkJCQkgIGludGVsX2hk bWktPmRkY19idXMpOworCisJaWYgKCFzY3JhbWJsaW5nLT5zdXBwb3J0ZWQpCisJCXJldHVybjsK KworCURSTV9ERUJVR19LTVMoIlNldHRpbmcgc2luayBzY3JhbWJsaW5nIGZvciBlbmM6JXMgY29u bmVjdG9yOiVzXG4iLAorCQkJaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPm5h bWUpOworCisJaWYgKGVuYWJsZSkgeworCisJCWlmIChtb2RlLT5jbG9jayA+IDM0MDAwMCkgewor CQkJLyogU2V0IFRNRFMgYml0IGNsb2NrIHJhdGlvIHRvIDEvNDAgKi8KKwkJCWNvbmZpZy0+aGRt aV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gPQorCQkJCWRybV9zY2RjX3NldF9oaWdoX3RtZHNfY2xv Y2tfcmF0aW8oYWRwdHIpOworCQkJaWYgKCFjb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3Jh dGlvKSB7CisJCQkJRFJNX0VSUk9SKCJTZXQgaGlnaCBUTURTIHJhdGlvIGZhaWxlZFxuIik7CisJ CQkJcmV0dXJuOworCQkJfQorCisJCQkvKiBFbmFibGUgc2luayBzY3JhbWJsaW5nICovCisJCQlj b25maWctPmhkbWlfc2NyYW1ibGluZyA9CisJCQkJCWRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5n KGFkcHRyKTsKKwkJCWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcpIHsKKwkJCQlEUk1fRVJS T1IoIkNhbid0IGVuYWJsZSBzaW5rIHNjcmFtYmxpbmdcbiIpOworCQkJCXJldHVybjsKKwkJCX0K KwkJfQorCisJCS8qIEZldyBzaW5rcyBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgY2xvY2tzIDw9MzQw IE1IeiB0b28gKi8KKwkJaWYgKCFjb25maWctPmhkbWlfc2NyYW1ibGluZyAmJiBzY3JhbWJsaW5n LT5sb3dfcmF0ZXMpIHsKKwkJCWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0KKwkJCQkJZHJtX3Nj ZGNfZW5hYmxlX3NjcmFtYmxpbmcoYWRwdHIpOworCQkJaWYgKCFjb25maWctPmhkbWlfc2NyYW1i bGluZykKKwkJCQlEUk1fRVJST1IoIkNhbid0IGVuYWJsZSBzaW5rIHNjcmFtYmxpbmdcbiIpOwor CQl9CisKKwkJcmV0dXJuOworCX0KKworCWlmIChjb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2Nr X3JhdGlvKSB7CisJCS8qIFNldCBUTURTIGJpdCBjbG9jayByYXRpbyBiYWNrIHRvIDEvMTAgKi8K KwkJY29uZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbyA9CisJCQkhKGRybV9zY2RjX2Ns ZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhhZHB0cikpOworCQlpZiAoY29uZmlnLT5oZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbykKKwkJCURSTV9FUlJPUigiUmVzZXQgaGlnaCBUTURTIHJhdGlv IGZhaWxlZFxuIik7CisJfQorCisJaWYgKGNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nKSB7CisJCS8q IERpc2FibGUgc2luayBzY3JhbWJsaW5nICovCisJCWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0g IShkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxpbmcoYWRwdHIpKTsKKwkJaWYgKGNvbmZpZy0+aGRt aV9zY3JhbWJsaW5nKQorCQkJRFJNX0VSUk9SKCJEaXNhYmxlIHNpbmsgc2NyYW1ibGluZyBmYWls ZWRcbiIpOworCX0KK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCBfaW50ZWxfaGRtaV9zZXRf c291cmNlX3NjcmFtYmxpbmcodWludDMyX3QgaGRtaV9jb25maWcpCit7CisJcmV0dXJuIGhkbWlf Y29uZmlnIHw9IChUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwKKwkJCVRSQU5TX0RESV9IRE1J X1NDUkFNQkxFUl9SRVNFVF9GUkVRIHwKKwkJCVRSQU5TX0RESV9IRE1JX1NDUkFNQkxFUl9DVFNf RU5BQkxFKTsKK30KKwordWludDMyX3QKK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJjZV9zY3JhbWJs aW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAorCQkJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsIHVpbnQzMl90IGhkbWlfY29uZmlnKQoreworCXN0cnVjdCBpbnRl bF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmludGVsX2VuY29kZXItPmJh c2UpOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfaGRtaS0+YXR0 YWNoZWRfY29ubmVjdG9yLT5iYXNlOworCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pX2luZm8g PSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaTsKKwlzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcg KnNjcmFtYmxpbmcgPSAmaGRtaV9pbmZvLT5zY2RjLnNjcmFtYmxpbmc7CisKKwlEUk1fREVCVUdf S01TKCJTZXR0aW5nIHNjcmFtYmxpbmcgZm9yIGVuYzolcyBjb25uZWN0b3I6JXNcbiIsCisJCQlp bnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+bmFtZSk7CisKKwloZG1pX2NvbmZp ZyAmPSB+KFRSQU5TX0RESV9IRE1JX1NDUkFNQkxJTkcgfAorCQlUUkFOU19ERElfSElHSF9UTURT X0NIQVJfUkFURSB8CisJCVRSQU5TX0RESV9IRE1JX1NDUkFNQkxFUl9SRVNFVF9GUkVRIHwKKwkJ VFJBTlNfRERJX0hETUlfU0NSQU1CTEVSX0NUU19FTkFCTEUpOworCisJaWYgKG1vZGUtPmNsb2Nr IDw9IDM0MDAwMCkgeworCQkvKiBGZXcgc2lua3Mgc3VwcG9ydCBzY3JhbWJsaW5nIGF0IHJhdGUg PCAzNDAgTUh6IHRvbyAqLworCQlpZiAoc2NyYW1ibGluZy0+bG93X3JhdGVzKQorCQkJaGRtaV9j b25maWcgPQorCQkJCV9pbnRlbF9oZG1pX3NldF9zb3VyY2Vfc2NyYW1ibGluZyhoZG1pX2NvbmZp Zyk7CisJCXJldHVybiBoZG1pX2NvbmZpZzsKKwl9CisKKwkvKiBTY3JhbWJsaW5nIG9yIG5vdCwg aWYgY2xvY2sgPiAzNDAgTUh6LCBzZXQgaGlnaCBjaGFyIHJhdGUgKi8KKwloZG1pX2NvbmZpZyB8 PSBUUkFOU19ERElfSElHSF9UTURTX0NIQVJfUkFURTsKKworCWlmIChzY3JhbWJsaW5nLT5zdXBw b3J0ZWQpCisJCWhkbWlfY29uZmlnID0gX2ludGVsX2hkbWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5n KGhkbWlfY29uZmlnKTsKKworCXJldHVybiBoZG1pX2NvbmZpZzsKK30KKwogc3RhdGljIHU4IGlu dGVsX2hkbWlfZGRjX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkg ICAgIGVudW0gcG9ydCBwb3J0KQogewotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=