From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v10] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Mon, 8 Aug 2016 17:03:26 -0400 Message-ID: <1470690207-6606-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Matt Roper Cc: Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Daniel Vetter , Lyude List-Id: dri-devel@lists.freedesktop.org U2luY2UgdGhlIHdhdGVybWFyayBjYWxjdWxhdGlvbnMgZm9yIFNreWxha2UgYXJlIHN0aWxsIGJy b2tlbiwgd2UncmUgYXB0CnRvIGhpdHRpbmcgdW5kZXJydW5zIHZlcnkgZWFzaWx5IHVuZGVyIG11 bHRpLW1vbml0b3IgY29uZmlndXJhdGlvbnMuCldoaWxlIGl0IHdvdWxkIGJlIGxvdmVseSBpZiB0 aGlzIHdhcyBmaXhlZCwgaXQncyBub3QuIEFub3RoZXIgcHJvYmxlbQp0aGF0J3MgYmVlbiBjb21p bmcgZnJvbSB0aGlzIGhvd2V2ZXIsIGlzIHRoZSBteXN0ZXJpb3VzIGlzc3VlIG9mCnVuZGVycnVu cyBjYXVzaW5nIGZ1bGwgc3lzdGVtIGhhbmdzLiBBbiBlYXN5IHdheSB0byByZXByb2R1Y2UgdGhp cyB3aXRoCmEgc2t5bGFrZSBzeXN0ZW06CgotIEdldCBhIGxhcHRvcCB3aXRoIGEgc2t5bGFrZSBH UFUsIGFuZCBob29rIHVwIHR3byBleHRlcm5hbCBtb25pdG9ycyB0bwogIGl0Ci0gTW92ZSB0aGUg Y3Vyc29yIGZyb20gdGhlIGJ1aWx0LWluIExDRCB0byBvbmUgb2YgdGhlIGV4dGVybmFsIGRpc3Bs YXlzCiAgYXMgcXVpY2tseSBhcyB5b3UgY2FuCi0gWW91J2xsIGdldCBhIGZldyBwaXBlIHVuZGVy cnVucywgYW5kIGV2ZW50dWFsbHkgdGhlIGVudGlyZSBzeXN0ZW0gd2lsbAogIGp1c3QgZnJlZXpl LgoKQWZ0ZXIgZG9pbmcgYSBsb3Qgb2YgaW52ZXN0aWdhdGlvbiBhbmQgcmVhZGluZyB0aHJvdWdo IHRoZSBic3BlYywgSQpmb3VuZCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBTQUdWLCB3aGljaCBpcyBy ZXNwb25zaWJsZSBmb3IgYWRqdXN0aW5nIHRoZQpzeXN0ZW0gYWdlbnQgdm9sdGFnZSBhbmQgY2xv Y2sgZnJlcXVlbmNpZXMgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHBvd2VyCndlIG5lZWQuIEFjY29y ZGluZyB0byB0aGUgYnNwZWM6CgoiVGhlIGRpc3BsYXkgZW5naW5lIGFjY2VzcyB0byBzeXN0ZW0g bWVtb3J5IGlzIGJsb2NrZWQgZHVyaW5nIHRoZQogYWRqdXN0bWVudCB0aW1lLiBTQUdWIGRlZmF1 bHRzIHRvIGVuYWJsZWQuIFNvZnR3YXJlIG11c3QgdXNlIHRoZQogR1QtZHJpdmVyIHBjb2RlIG1h aWxib3ggdG8gZGlzYWJsZSBTQUdWIHdoZW4gdGhlIGRpc3BsYXkgZW5naW5lIGlzIG5vdAogYWJs ZSB0byB0b2xlcmF0ZSB0aGUgYmxvY2tpbmcgdGltZS4iCgpUaGUgcmVzdCBvZiB0aGUgYnNwZWMg Z29lcyBvbiB0byBleHBsYWluIHRoYXQgc29mdHdhcmUgY2FuIHNpbXBseSBsZWF2ZQp0aGUgU0FH ViBlbmFibGVkLCBhbmQgZGlzYWJsZSBpdCB3aGVuIHdlIHVzZSBpbnRlcmxhY2VkIHBpcGVzL2hh dmUgbW9yZQp0aGVuIG9uZSBwaXBlIGFjdGl2ZS4KClN1cmUgZW5vdWdoLCB3aXRoIHRoaXMgcGF0 Y2hzZXQgdGhlIHN5c3RlbSBoYW5ncyByZXN1bHRpbmcgZnJvbSBwaXBlCnVuZGVycnVucyBvbiBT a3lsYWtlIGhhdmUgY29tcGxldGVseSB2YW5pc2hlZCBvbiBteSBUNDYwcy4gQWRkaXRpb25hbGx5 LAp0aGUgYnNwZWMgbWVudGlvbnMgdHVybmluZyBvZmYgdGhlIFNBR1YJd2l0aCBtb3JlIHRoZW4g b25lIHBpcGUgZW5hYmxlZAphcyBhIHdvcmthcm91bmQgZm9yIGRpc3BsYXkgdW5kZXJydW5zLiBX aGlsZSB0aGlzIHBhdGNoIGRvZXNuJ3QgZW50aXJlbHkKZml4IHRoYXQsIGl0IGxvb2tzIGxpa2Ug aXQgZG9lcyBpbXByb3ZlIHRoZSBzaXR1YXRpb24gYSBsaXR0bGUgYml0IHNvCml0J3MgbGlrZWx5 IHRoaXMgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQgdG8gbWFrZSB3YXRlcm1hcmtzIG9uIFNreWxh a2UKZnVsbHkgZnVuY3Rpb25hbC4KCkNoYW5nZXMgc2luY2Ugdjk6CiAtIE9ubHkgZW5hYmxlL2Rp c2FibGUgc2FndiBvbiBTa3lsYWtlCkNoYW5nZXMgc2luY2Ugdjg6CiAtIEFkZCBpbnRlbF9zdGF0 ZS0+bW9kZXNldCBndWFyZCB0byB0aGUgY29uZGl0aW9uYWwgZm9yCiAgIHNrbF9lbmFibGVfc2Fn digpCkNoYW5nZXMgc2luY2Ugdjc6CiAtIFJlbW92ZSBHRU45X1NBR1ZfTE9XX0ZSRVEsIHJlcGxh Y2Ugd2l0aCBHRU45X1NBR1ZfSVNfRU5BQkxFRCAodGhhdCdzCiAgIGFsbCB3ZSB1c2UgaXQgZm9y IGFueXdheSkKIC0gVXNlIEdFTjlfU0FHVl9JU19FTkFCTEVEIGluc3RlYWQgb2YgMHgxIGZvciBj bGFyaWZpY2F0aW9uCiAtIEZpeCBhIHN0eWxpbmcgZXJyb3IgdGhhdCBzbnVjayBwYXN0IG1lCkNo YW5nZXMgc2luY2UgdjY6CiAtIFByb3RlY3Qgc2tsX2VuYWJsZV9zYWd2KCkgd2l0aCBpbnRlbF9z dGF0ZS0+bW9kZXNldCBjb25kaXRpb25hbCBpbgogICBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwo KQpDaGFuZ2VzIHNpbmNlIHY1OgogLSBEb24ndCB1c2UgaXNfcG93ZXJfb2ZfMi4gTWFrZXMgdGhp bmdzIGNvbmZ1c2luZwogLSBEb24ndCB1c2UgdGhlIG9sZCBzdGF0ZSB0byBmaWd1cmUgb3V0IHdo ZXRoZXIgb3Igbm90IHRvCiAgIGVuYWJsZS9kaXNhYmxlIHRoZSBzYWd2LCB1c2UgdGhlIG5ldyBv bmUKIC0gU3BsaXQgdGhlIGxvb3AgaW4gc2tsX2Rpc2FibGVfc2FndiBpbnRvIGl0J3Mgb3duIGZ1 bmN0aW9uCiAtIE1vdmUgc2tsX3NhZ3ZfZW5hYmxlL2Rpc2FibGUoKSBjYWxscyBpbnRvIGludGVs X2F0b21pY19jb21taXRfdGFpbCgpCkNoYW5nZXMgc2luY2UgdjQ6CiAtIFVzZSBpc19wb3dlcl9v Zl8yIGFnYWluc3QgYWN0aXZlX2NydGNzIHRvIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSA+IDEKICAg cGlwZSBlbmFibGVkCiAtIEZpeCBza2xfc2Fndl9nZXRfaHdfc3RhdGUoKTogKHRlbXAgJiAweDEp IGluZGljYXRlcyBkaXNhYmxlZCwgMHgwCiAgIGVuYWJsZWQKIC0gQ2FsbCBza2xfc2Fndl9lbmFi bGUvZGlzYWJsZSgpIGZyb20gcHJlL3Bvc3QtcGxhbmUgdXBkYXRlcwpDaGFuZ2VzIHNpbmNlIHYz OgogLSBVc2UgdGltZV9iZWZvcmUoKSB0byBjb21wYXJlIHRpbWVvdXQgdG8gamlmZmllcwpDaGFu Z2VzIHNpbmNlIHYyOgogLSBSZWFsbHkgYXBwbHkgbWlub3Igc3R5bGUgbml0cGlja3MgdG8gcGF0 Y2ggdGhpcyB0aW1lCkNoYW5nZXMgc2luY2UgdjE6CiAtIEFkZGVkIGNvbW1lbnRzIGFib3V0IHRo aXMgcHJvYmFibHkgYmVpbmcgb25lIG9mIHRoZSByZXF1aXJlbWVudHMgdG8KICAgZml4aW5nIFNr eWxha2UncyB3YXRlcm1hcmsgaXNzdWVzCiAtIE1pbm9yIHN0eWxlIG5pdHBpY2tzIGZyb20gTWF0 dCBSb3BlcgogLSBEaXNhYmxlIHRoZXNlIGZ1bmN0aW9ucyBvbiBCcm94dG9uLCBzaW5jZSBpdCBk b2Vzbid0IGhhdmUgYW4gU0FHVgoKUmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5y b3BlckBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8Y3BhdWxAcmVk aGF0LmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogc3RhYmxl QHZnZXIua2VybmVsLm9yZwoKc3F1YXNoISBkcm0vaTkxNS9za2w6IEFkZCBzdXBwb3J0IGZvciB0 aGUgU0FHViwgZml4IHVuZGVycnVuIGhhbmdzCgpzcXVhc2ghIGRybS9pOTE1L3NrbDogQWRkIHN1 cHBvcnQgZm9yIHRoZSBTQUdWLCBmaXggdW5kZXJydW4gaGFuZ3MKClNpZ25lZC1vZmYtYnk6IEx5 dWRlIDxjcGF1bEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAg IDQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxMiArKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKaW5kZXggZmVlYzAwZi4uZWI0NDlmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0xOTQ4LDYgKzE5NDgsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3Ry dWN0IGk5MTVfc3VzcGVuZF9zYXZlZF9yZWdpc3RlcnMgcmVnZmlsZTsKIAlzdHJ1Y3Qgdmx2X3Mw aXhfc3RhdGUgdmx2X3MwaXhfc3RhdGU7CiAKKwlib29sIHNrbF9zYWd2X2VuYWJsZWQ7CisKIAlz dHJ1Y3QgewogCQkvKgogCQkgKiBSYXcgd2F0ZXJtYXJrIGxhdGVuY3kgdmFsdWVzOgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKaW5kZXggZjM4YTVlMi4uZjdlMGJjMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCkBAIC03MTcwLDYgKzcxNzAsMTAgQEAgZW51bSB7CiAjZGVmaW5lICAgSFNXX1BDT0RF X0RFX1dSSVRFX0ZSRVFfUkVRCQkweDE3CiAjZGVmaW5lICAgRElTUExBWV9JUFNfQ09OVFJPTAkJ CTB4MTkKICNkZWZpbmUJICBIU1dfUENPREVfRFlOQU1JQ19EVVRZX0NZQ0xFX0NPTlRST0wJMHgx QQorI2RlZmluZSAgIEdFTjlfUENPREVfU0FHVl9DT05UUk9MCQkweDIxCisjZGVmaW5lICAgICBH RU45X1NBR1ZfRElTQUJMRQkJCTB4MAorI2RlZmluZSAgICAgR0VOOV9TQUdWX0lTX0RJU0FCTEVE CQkweDEKKyNkZWZpbmUgICAgIEdFTjlfU0FHVl9EWU5BTUlDX0ZSRVEgICAgICAgICAgICAgIDB4 MwogI2RlZmluZSBHRU42X1BDT0RFX0RBVEEJCQkJX01NSU8oMHgxMzgxMjgpCiAjZGVmaW5lICAg R0VONl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKICNkZWZpbmUgICBHRU42X1BDT0RFX0ZS RVFfUklOR19SQVRJT19TSElGVAkxNgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmlu ZGV4IDljYmY1NDMuLjhiZmY4YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTEzNjk4LDYgKzEzNjk4LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRf dGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCSAgICAgaW50ZWxfc3RhdGUt PmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pKQogCQkJZGV2X3ByaXYt PmRpc3BsYXkubW9kZXNldF9jb21taXRfY2RjbGsoc3RhdGUpOwogCisJCS8qCisJCSAqIFNLTCB3 b3JrYXJvdW5kOiBic3BlYyByZWNvbW1lbmRzIHdlIGRpc2FibGUgdGhlIFNBR1Ygd2hlbiB3ZQor CQkgKiBoYXZlIG1vcmUgdGhlbiBvbmUgcGlwZSBlbmFibGVkCisJCSAqLworCQlpZiAoSVNfU0tZ TEFLRShkZXZfcHJpdikgJiYKKwkJICAgIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2Ny dGNzKSA+IDEpCisJCQlza2xfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsKKwogCQlpbnRlbF9tb2Rl c2V0X3ZlcmlmeV9kaXNhYmxlZChkZXYpOwogCX0KIApAQCAtMTM3NzEsNiArMTM3NzksMTAgQEAg c3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKIAkJaW50ZWxfbW9kZXNldF92ZXJpZnlfY3J0YyhjcnRjLCBvbGRfY3J0Y19z dGF0ZSwgY3J0Yy0+c3RhdGUpOwogCX0KIAorCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSAmJiBp bnRlbF9zdGF0ZS0+bW9kZXNldCAmJgorCSAgICBod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2 ZV9jcnRjcykgPD0gMSkKKwkJc2tsX2VuYWJsZV9zYWd2KGRldl9wcml2KTsKKwogCWRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0YXRlKTsKIAogCWlmIChpbnRlbF9zdGF0ZS0+bW9k ZXNldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMWFkMmUyYzUuLjIyMWNiZTAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzAwLDYgKzE3MDAsOCBAQCB2b2lkIGlsa193 bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIHNrbF93bV9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIHNrbF9kZGJfZ2V0X2h3X3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLyk7CitpbnQgc2tsX2VuYWJsZV9zYWd2KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitpbnQgc2tsX2Rpc2FibGVfc2FndihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxf cmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogYm9vbCBp bGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCBzYW5pdGl6ZV9y YzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGVuYWJsZV9y YzYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggYWVmMGIxMC4uMGM1MmM1MCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0yODg0LDYgKzI4ODQsMTE2IEBAIHNrbF93bV9wbGFuZV9p ZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQogfQogCiBzdGF0aWMgdm9pZAorc2ts X3NhZ3ZfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sK Kwl1MzIgdGVtcDsKKwlpbnQgcmV0OworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQorCQly ZXR1cm47CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCXJldCA9IHNh bmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLCAm dGVtcCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCisJaWYgKCFy ZXQpIHsKKwkJZGV2X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQgPSAhKHRlbXAgJiBHRU45X1NBR1Zf SVNfRElTQUJMRUQpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIElmIGZvciBzb21lIHJlYXNvbiB3 ZSBjYW4ndCBhY2Nlc3MgdGhlIFNBR1Ygc3RhdGUsIGZvbGxvdworCQkgKiB0aGUgYnNwZWMgYW5k IGFzc3VtZSBpdCdzIGVuYWJsZWQKKwkJICovCisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGdldCBT QUdWIHN0YXRlLCBhc3N1bWluZyBlbmFibGVkXG4iKTsKKwkJZGV2X3ByaXYtPnNrbF9zYWd2X2Vu YWJsZWQgPSB0cnVlOworCX0KK30KKworLyoKKyAqIFNBR1YgZHluYW1pY2FsbHkgYWRqdXN0cyB0 aGUgc3lzdGVtIGFnZW50IHZvbHRhZ2UgYW5kIGNsb2NrIGZyZXF1ZW5jaWVzCisgKiBkZXBlbmRp bmcgb24gcG93ZXIgYW5kIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50cy4gVGhlIGRpc3BsYXkgZW5n aW5lIGFjY2VzcworICogdG8gc3lzdGVtIG1lbW9yeSBpcyBibG9ja2VkIGR1cmluZyB0aGUgYWRq dXN0bWVudCB0aW1lLiBIYXZpbmcgdGhpcyBlbmFibGVkCisgKiBpbiBtdWx0aS1waXBlIGNvbmZp Z3VyYXRpb25zIGNhbiBjYXVzZSBpc3N1ZXMgKHN1Y2ggYXMgdW5kZXJydW5zIGNhdXNpbmcKKyAq IGZ1bGwgc3lzdGVtIGhhbmdzKSwgYW5kIHRoZSBic3BlYyBhbHNvIHN1Z2dlc3RzIHRoYXQgc29m dHdhcmUgZGlzYWJsZSBpdAorICogd2hlbiBtb3JlIHRoZW4gb25lIHBpcGUgaXMgZW5hYmxlZC4K KyAqLworaW50Citza2xfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQoreworCWludCByZXQ7CisKKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCisJCXJldHVy biAwOworCWlmIChkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCURSTV9ERUJVR19LTVMoIkVuYWJs aW5nIHRoZSBTQUdWXG4iKTsKKworCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9w cml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKKwkJCQkgICAgICBHRU45X1NBR1ZfRFlOQU1J Q19GUkVRKTsKKwlpZiAoIXJldCkKKwkJZGV2X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQgPSB0cnVl OworCWVsc2UKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHRoZSBTQUdWXG4iKTsKKwor CS8qIFdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgU0FHViB3aGVuIGVuYWJsaW5nICovCisJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQKK3NrbF9kb19zYWd2X2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCWludCByZXQ7CisJdWludDMyX3QgdGVtcDsKKworCXJldCA9IHNhbmR5YnJp ZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKKwkJCQkg ICAgICBHRU45X1NBR1ZfRElTQUJMRSk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBkaXNhYmxlIHRoZSBTQUdWXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBz YW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwK KwkJCQkgICAgICZ0ZW1wKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNo ZWNrIHRoZSBzdGF0dXMgb2YgdGhlIFNBR1ZcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dHVybiB0ZW1wICYgR0VOOV9TQUdWX0lTX0RJU0FCTEVEOworfQorCitpbnQKK3NrbF9kaXNhYmxl X3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCByZXQsIHJl c3VsdDsKKworCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKKwkJcmV0dXJuIDA7CisJaWYgKCFk ZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyB0aGUgU0FH VlxuIik7CisKKwkvKiBic3BlYyBzYXlzIHRvIGtlZXAgcmV0cnlpbmcgZm9yIGF0IGxlYXN0IDEg bXMgKi8KKwlyZXQgPSB3YWl0X2ZvcihyZXN1bHQgPSBza2xfZG9fc2Fndl9kaXNhYmxlKGRldl9w cml2KSwgMSk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCisJaWYg KHJldCA9PSAtRVRJTUVET1VUKSB7CisJCURSTV9FUlJPUigiUmVxdWVzdCB0byBkaXNhYmxlIFNB R1YgdGltZWQgb3V0XG4iKTsKKwl9IGVsc2UgeworCQlpZiAocmVzdWx0ID09IEdFTjlfU0FHVl9J U19ESVNBQkxFRCkKKwkJCWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkID0gZmFsc2U7CisKKwkJ cmV0ID0gcmVzdWx0OworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCiBza2xf ZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJCQkgICBzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MsIC8qIG91dCAqLwpAQCAtNDIzOCw2ICs0MzQ4LDggQEAg dm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCS8qIEVh c3kvY29tbW9uIGNhc2U7IGp1c3Qgc2FuaXRpemUgRERCIG5vdyBpZiBldmVyeXRoaW5nIG9mZiAq LwogCQltZW1zZXQoZGRiLCAwLCBzaXplb2YoKmRkYikpOwogCX0KKworCXNrbF9zYWd2X2dldF9o d19zdGF0ZShkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGlsa19waXBlX3dtX2dldF9od19z dGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==