From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH REBASED v10 1/6] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Wed, 10 Aug 2016 10:27:48 -0400 Message-ID: <1470839281-19639-2-git-send-email-cpaul@redhat.com> References: <1470839281-19639-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1470839281-19639-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Matt Roper Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Daniel Vetter List-Id: intel-gfx@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 L2k5MTVfZHJ2LmgKaW5kZXggN2YyNzU0YS4uZmEzYzlmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0xOTQ0LDYgKzE5NDQsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3Ry dWN0IGk5MTVfc3VzcGVuZF9zYXZlZF9yZWdpc3RlcnMgcmVnZmlsZTsKIAlzdHJ1Y3Qgdmx2X3Mw aXhfc3RhdGUgdmx2X3MwaXhfc3RhdGU7CiAKKwlib29sIHNrbF9zYWd2X2VuYWJsZWQ7CisKIAlz dHJ1Y3QgewogCQkvKgogCQkgKiBSYXcgd2F0ZXJtYXJrIGxhdGVuY3kgdmFsdWVzOgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKaW5kZXggZGE4Mjc0NC4uNmMzOTQ3ZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCkBAIC03MTQzLDYgKzcxNDMsMTAgQEAgZW51bSB7CiAjZGVmaW5lICAgSFNXX1BDT0RF X0RFX1dSSVRFX0ZSRVFfUkVRCQkweDE3CiAjZGVmaW5lICAgRElTUExBWV9JUFNfQ09OVFJPTAkJ CTB4MTkKICNkZWZpbmUJICBIU1dfUENPREVfRFlOQU1JQ19EVVRZX0NZQ0xFX0NPTlRST0wJMHgx QQorI2RlZmluZSAgIEdFTjlfUENPREVfU0FHVl9DT05UUk9MCQkweDIxCisjZGVmaW5lICAgICBH RU45X1NBR1ZfRElTQUJMRQkJCTB4MAorI2RlZmluZSAgICAgR0VOOV9TQUdWX0lTX0RJU0FCTEVE CQkweDEKKyNkZWZpbmUgICAgIEdFTjlfU0FHVl9EWU5BTUlDX0ZSRVEgICAgICAgICAgICAgIDB4 MwogI2RlZmluZSBHRU42X1BDT0RFX0RBVEEJCQkJX01NSU8oMHgxMzgxMjgpCiAjZGVmaW5lICAg R0VONl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKICNkZWZpbmUgICBHRU42X1BDT0RFX0ZS RVFfUklOR19SQVRJT19TSElGVAkxNgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmlu ZGV4IDBhZTI3MDcuLjMwMmNiMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTEzNzY5LDYgKzEzNzY5LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRf dGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCSAgICAgaW50ZWxfc3RhdGUt PmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pKQogCQkJZGV2X3ByaXYt PmRpc3BsYXkubW9kZXNldF9jb21taXRfY2RjbGsoc3RhdGUpOwogCisJCS8qCisJCSAqIFNLTCB3 b3JrYXJvdW5kOiBic3BlYyByZWNvbW1lbmRzIHdlIGRpc2FibGUgdGhlIFNBR1Ygd2hlbiB3ZQor CQkgKiBoYXZlIG1vcmUgdGhlbiBvbmUgcGlwZSBlbmFibGVkCisJCSAqLworCQlpZiAoSVNfU0tZ TEFLRShkZXZfcHJpdikgJiYKKwkJICAgIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2Ny dGNzKSA+IDEpCisJCQlza2xfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsKKwogCQlpbnRlbF9tb2Rl c2V0X3ZlcmlmeV9kaXNhYmxlZChkZXYpOwogCX0KIApAQCAtMTM4NDIsNiArMTM4NTAsMTAgQEAg c3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKIAkJaW50ZWxfbW9kZXNldF92ZXJpZnlfY3J0YyhjcnRjLCBvbGRfY3J0Y19z dGF0ZSwgY3J0Yy0+c3RhdGUpOwogCX0KIAorCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSAmJiBp bnRlbF9zdGF0ZS0+bW9kZXNldCAmJgorCSAgICBod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2 ZV9jcnRjcykgPD0gMSkKKwkJc2tsX2VuYWJsZV9zYWd2KGRldl9wcml2KTsKKwogCWRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0YXRlKTsKIAogCWlmIChpbnRlbF9zdGF0ZS0+bW9k ZXNldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggY2JjZTc4Ni4uZTM1Nzk5ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE2OTgsNiArMTY5OCw4IEBAIHZvaWQgaWxrX3dt X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgc2tsX3dtX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKK2ludCBza2xfZW5hYmxlX3NhZ3Yoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBza2xfZGlzYWJsZV9zYWd2KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB1aW50MzJfdCBpbGtfcGlwZV9waXhlbF9y YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CiBib29sIGls a19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IHNhbml0aXplX3Jj Nl9vcHRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZW5hYmxlX3Jj Nik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA4MWFiMTE5Li5lOTBiOTc0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKQEAgLTI4ODQsNiArMjg4NCwxMTYgQEAgc2tsX3dtX3BsYW5lX2lk KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCiB9CiAKIHN0YXRpYyB2b2lkCitza2xf c2Fndl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorewor CXUzMiB0ZW1wOworCWludCByZXQ7CisKKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCisJCXJl dHVybjsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsICZ0 ZW1wKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisKKwlpZiAoIXJl dCkgeworCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9ICEodGVtcCAmIEdFTjlfU0FHVl9J U19ESVNBQkxFRCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgZm9yIHNvbWUgcmVhc29uIHdl IGNhbid0IGFjY2VzcyB0aGUgU0FHViBzdGF0ZSwgZm9sbG93CisJCSAqIHRoZSBic3BlYyBhbmQg YXNzdW1lIGl0J3MgZW5hYmxlZAorCQkgKi8KKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IFNB R1Ygc3RhdGUsIGFzc3VtaW5nIGVuYWJsZWRcbiIpOworCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5h YmxlZCA9IHRydWU7CisJfQorfQorCisvKgorICogU0FHViBkeW5hbWljYWxseSBhZGp1c3RzIHRo ZSBzeXN0ZW0gYWdlbnQgdm9sdGFnZSBhbmQgY2xvY2sgZnJlcXVlbmNpZXMKKyAqIGRlcGVuZGlu ZyBvbiBwb3dlciBhbmQgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnRzLiBUaGUgZGlzcGxheSBlbmdp bmUgYWNjZXNzCisgKiB0byBzeXN0ZW0gbWVtb3J5IGlzIGJsb2NrZWQgZHVyaW5nIHRoZSBhZGp1 c3RtZW50IHRpbWUuIEhhdmluZyB0aGlzIGVuYWJsZWQKKyAqIGluIG11bHRpLXBpcGUgY29uZmln dXJhdGlvbnMgY2FuIGNhdXNlIGlzc3VlcyAoc3VjaCBhcyB1bmRlcnJ1bnMgY2F1c2luZworICog ZnVsbCBzeXN0ZW0gaGFuZ3MpLCBhbmQgdGhlIGJzcGVjIGFsc28gc3VnZ2VzdHMgdGhhdCBzb2Z0 d2FyZSBkaXNhYmxlIGl0CisgKiB3aGVuIG1vcmUgdGhlbiBvbmUgcGlwZSBpcyBlbmFibGVkLgor ICovCitpbnQKK3NrbF9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJaW50IHJldDsKKworCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKKwkJcmV0dXJu IDA7CisJaWYgKGRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCW11 dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJRFJNX0RFQlVHX0tNUygiRW5hYmxp bmcgdGhlIFNBR1ZcbiIpOworCisJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3By aXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAorCQkJCSAgICAgIEdFTjlfU0FHVl9EWU5BTUlD X0ZSRVEpOworCWlmICghcmV0KQorCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9IHRydWU7 CisJZWxzZQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgdGhlIFNBR1ZcbiIpOworCisJ LyogV2UgZG9uJ3QgbmVlZCB0byB3YWl0IGZvciBTQUdWIHdoZW4gZW5hYmxpbmcgKi8KKwltdXRl eF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludAorc2tsX2RvX3NhZ3ZfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCit7CisJaW50IHJldDsKKwl1aW50MzJfdCB0ZW1wOworCisJcmV0ID0gc2FuZHlicmlk Z2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAorCQkJCSAg ICAgIEdFTjlfU0FHVl9ESVNBQkxFKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVk IHRvIGRpc2FibGUgdGhlIFNBR1ZcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHNh bmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAor CQkJCSAgICAgJnRlbXApOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY2hl Y2sgdGhlIHN0YXR1cyBvZiB0aGUgU0FHVlxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0 dXJuIHRlbXAgJiBHRU45X1NBR1ZfSVNfRElTQUJMRUQ7Cit9CisKK2ludAorc2tsX2Rpc2FibGVf c2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldCwgcmVz dWx0OworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQorCQlyZXR1cm4gMDsKKwlpZiAoIWRl dl9wcml2LT5za2xfc2Fndl9lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmRl dl9wcml2LT5ycHMuaHdfbG9jayk7CisJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIHRoZSBTQUdW XG4iKTsKKworCS8qIGJzcGVjIHNheXMgdG8ga2VlcCByZXRyeWluZyBmb3IgYXQgbGVhc3QgMSBt cyAqLworCXJldCA9IHdhaXRfZm9yKHJlc3VsdCA9IHNrbF9kb19zYWd2X2Rpc2FibGUoZGV2X3By aXYpLCAxKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisKKwlpZiAo cmV0ID09IC1FVElNRURPVVQpIHsKKwkJRFJNX0VSUk9SKCJSZXF1ZXN0IHRvIGRpc2FibGUgU0FH ViB0aW1lZCBvdXRcbiIpOworCX0gZWxzZSB7CisJCWlmIChyZXN1bHQgPT0gR0VOOV9TQUdWX0lT X0RJU0FCTEVEKQorCQkJZGV2X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQgPSBmYWxzZTsKKworCQly ZXQgPSByZXN1bHQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ CQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJCSAgIHN0cnVj dCBza2xfZGRiX2VudHJ5ICphbGxvYywgLyogb3V0ICovCkBAIC00MjM4LDYgKzQzNDgsOCBAQCB2 b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJLyogRWFz eS9jb21tb24gY2FzZTsganVzdCBzYW5pdGl6ZSBEREIgbm93IGlmIGV2ZXJ5dGhpbmcgb2ZmICov CiAJCW1lbXNldChkZGIsIDAsIHNpemVvZigqZGRiKSk7CiAJfQorCisJc2tsX3NhZ3ZfZ2V0X2h3 X3N0YXRlKGRldl9wcml2KTsKIH0KIAogc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0 YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK