From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v8 1/6] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Fri, 5 Aug 2016 20:07:07 -0400 Message-ID: <1470442033-21388-2-git-send-email-cpaul@redhat.com> References: <1470442033-21388-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: <1470442033-21388-1-git-send-email-cpaul@redhat.com> 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 a2UKZnVsbHkgZnVuY3Rpb25hbC4KCkNoYW5nZXMgc2luY2Ugdjg6CiAtIEFkZCBpbnRlbF9zdGF0 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 QHZnZXIua2VybmVsLm9yZwotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgIDQgKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxMSArKysrCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiA1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKaW5kZXggZmVlYzAwZi4uZWI0NDlmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBA IC0xOTQ4LDYgKzE5NDgsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGk5 MTVfc3VzcGVuZF9zYXZlZF9yZWdpc3RlcnMgcmVnZmlsZTsKIAlzdHJ1Y3Qgdmx2X3MwaXhfc3Rh dGUgdmx2X3MwaXhfc3RhdGU7CiAKKwlib29sIHNrbF9zYWd2X2VuYWJsZWQ7CisKIAlzdHJ1Y3Qg ewogCQkvKgogCQkgKiBSYXcgd2F0ZXJtYXJrIGxhdGVuY3kgdmFsdWVzOgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKaW5kZXggZjM4YTVlMi4uZjdlMGJjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o CkBAIC03MTcwLDYgKzcxNzAsMTAgQEAgZW51bSB7CiAjZGVmaW5lICAgSFNXX1BDT0RFX0RFX1dS SVRFX0ZSRVFfUkVRCQkweDE3CiAjZGVmaW5lICAgRElTUExBWV9JUFNfQ09OVFJPTAkJCTB4MTkK ICNkZWZpbmUJICBIU1dfUENPREVfRFlOQU1JQ19EVVRZX0NZQ0xFX0NPTlRST0wJMHgxQQorI2Rl ZmluZSAgIEdFTjlfUENPREVfU0FHVl9DT05UUk9MCQkweDIxCisjZGVmaW5lICAgICBHRU45X1NB R1ZfRElTQUJMRQkJCTB4MAorI2RlZmluZSAgICAgR0VOOV9TQUdWX0lTX0RJU0FCTEVECQkweDEK KyNkZWZpbmUgICAgIEdFTjlfU0FHVl9EWU5BTUlDX0ZSRVEgICAgICAgICAgICAgIDB4MwogI2Rl ZmluZSBHRU42X1BDT0RFX0RBVEEJCQkJX01NSU8oMHgxMzgxMjgpCiAjZGVmaW5lICAgR0VONl9Q Q09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKICNkZWZpbmUgICBHRU42X1BDT0RFX0ZSRVFfUklO R19SQVRJT19TSElGVAkxNgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDlj YmY1NDMuLjgxNGQwN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEz Njk4LDYgKzEzNjk4LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCSAgICAgaW50ZWxfc3RhdGUtPmNkY2xr X3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pKQogCQkJZGV2X3ByaXYtPmRpc3Bs YXkubW9kZXNldF9jb21taXRfY2RjbGsoc3RhdGUpOwogCisJCS8qCisJCSAqIFNLTCB3b3JrYXJv dW5kOiBic3BlYyByZWNvbW1lbmRzIHdlIGRpc2FibGUgdGhlIFNBR1Ygd2hlbiB3ZQorCQkgKiBo YXZlIG1vcmUgdGhlbiBvbmUgcGlwZSBlbmFibGVkCisJCSAqLworCQlpZiAoSVNfU0tZTEFLRShk ZXZfcHJpdikgJiYKKwkJICAgIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKSA+ IDEpCisJCQlza2xfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsKKwogCQlpbnRlbF9tb2Rlc2V0X3Zl cmlmeV9kaXNhYmxlZChkZXYpOwogCX0KIApAQCAtMTM3NzEsNiArMTM3NzksOSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQogCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBj cnRjLT5zdGF0ZSk7CiAJfQogCisJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0ICYmIGh3ZWlnaHQz MihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKSA8PSAxKQorCQlza2xfZW5hYmxlX3NhZ3YoZGV2 X3ByaXYpOworCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RhdGUpOwogCiAJ aWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAx YWQyZTJjNS4uMjIxY2JlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE3MDAsNiAr MTcwMCw4IEBAIHZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZv aWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKK2ludCBz a2xfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBz a2xfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB1aW50 MzJfdCBpbGtfcGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyk7CiBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogaW50IHNhbml0aXplX3JjNl9vcHRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgZW5hYmxlX3JjNik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCBhZWYw YjEwLi4wYzUyYzUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTI4ODQsNiArMjg4NCwx MTYgQEAgc2tsX3dtX3BsYW5lX2lkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCiB9 CiAKIHN0YXRpYyB2b2lkCitza2xfc2Fndl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCXUzMiB0ZW1wOworCWludCByZXQ7CisKKwlpZiAoSVNfQlJP WFRPTihkZXZfcHJpdikpCisJCXJldHVybjsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7CisJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VOOV9Q Q09ERV9TQUdWX0NPTlRST0wsICZ0ZW1wKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7CisKKwlpZiAoIXJldCkgeworCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9 ICEodGVtcCAmIEdFTjlfU0FHVl9JU19ESVNBQkxFRCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICog SWYgZm9yIHNvbWUgcmVhc29uIHdlIGNhbid0IGFjY2VzcyB0aGUgU0FHViBzdGF0ZSwgZm9sbG93 CisJCSAqIHRoZSBic3BlYyBhbmQgYXNzdW1lIGl0J3MgZW5hYmxlZAorCQkgKi8KKwkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gZ2V0IFNBR1Ygc3RhdGUsIGFzc3VtaW5nIGVuYWJsZWRcbiIpOworCQlk ZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9IHRydWU7CisJfQorfQorCisvKgorICogU0FHViBk eW5hbWljYWxseSBhZGp1c3RzIHRoZSBzeXN0ZW0gYWdlbnQgdm9sdGFnZSBhbmQgY2xvY2sgZnJl cXVlbmNpZXMKKyAqIGRlcGVuZGluZyBvbiBwb3dlciBhbmQgcGVyZm9ybWFuY2UgcmVxdWlyZW1l bnRzLiBUaGUgZGlzcGxheSBlbmdpbmUgYWNjZXNzCisgKiB0byBzeXN0ZW0gbWVtb3J5IGlzIGJs b2NrZWQgZHVyaW5nIHRoZSBhZGp1c3RtZW50IHRpbWUuIEhhdmluZyB0aGlzIGVuYWJsZWQKKyAq IGluIG11bHRpLXBpcGUgY29uZmlndXJhdGlvbnMgY2FuIGNhdXNlIGlzc3VlcyAoc3VjaCBhcyB1 bmRlcnJ1bnMgY2F1c2luZworICogZnVsbCBzeXN0ZW0gaGFuZ3MpLCBhbmQgdGhlIGJzcGVjIGFs c28gc3VnZ2VzdHMgdGhhdCBzb2Z0d2FyZSBkaXNhYmxlIGl0CisgKiB3aGVuIG1vcmUgdGhlbiBv bmUgcGlwZSBpcyBlbmFibGVkLgorICovCitpbnQKK3NrbF9lbmFibGVfc2FndihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldDsKKworCWlmIChJU19CUk9YVE9O KGRldl9wcml2KSkKKwkJcmV0dXJuIDA7CisJaWYgKGRldl9wcml2LT5za2xfc2Fndl9lbmFibGVk KQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJ RFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgdGhlIFNBR1ZcbiIpOworCisJcmV0ID0gc2FuZHlicmlk Z2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAorCQkJCSAg ICAgIEdFTjlfU0FHVl9EWU5BTUlDX0ZSRVEpOworCWlmICghcmV0KQorCQlkZXZfcHJpdi0+c2ts X3NhZ3ZfZW5hYmxlZCA9IHRydWU7CisJZWxzZQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFi bGUgdGhlIFNBR1ZcbiIpOworCisJLyogV2UgZG9uJ3QgbmVlZCB0byB3YWl0IGZvciBTQUdWIHdo ZW4gZW5hYmxpbmcgKi8KKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorc2tsX2RvX3NhZ3ZfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldDsKKwl1aW50MzJfdCB0ZW1w OworCisJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjlfUENPREVf U0FHVl9DT05UUk9MLAorCQkJCSAgICAgIEdFTjlfU0FHVl9ESVNBQkxFKTsKKwlpZiAocmV0KSB7 CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgdGhlIFNBR1ZcbiIpOworCQlyZXR1cm4g cmV0OworCX0KKworCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIEdFTjlf UENPREVfU0FHVl9DT05UUk9MLAorCQkJCSAgICAgJnRlbXApOworCWlmIChyZXQpIHsKKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgU0FHVlxuIik7CisJCXJl dHVybiByZXQ7CisJfQorCisJcmV0dXJuIHRlbXAgJiBHRU45X1NBR1ZfSVNfRElTQUJMRUQ7Cit9 CisKK2ludAorc2tsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJaW50IHJldCwgcmVzdWx0OworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQor CQlyZXR1cm4gMDsKKwlpZiAoIWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkKQorCQlyZXR1cm4g MDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJRFJNX0RFQlVHX0tN UygiRGlzYWJsaW5nIHRoZSBTQUdWXG4iKTsKKworCS8qIGJzcGVjIHNheXMgdG8ga2VlcCByZXRy eWluZyBmb3IgYXQgbGVhc3QgMSBtcyAqLworCXJldCA9IHdhaXRfZm9yKHJlc3VsdCA9IHNrbF9k b19zYWd2X2Rpc2FibGUoZGV2X3ByaXYpLCAxKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7CisKKwlpZiAocmV0ID09IC1FVElNRURPVVQpIHsKKwkJRFJNX0VSUk9SKCJS ZXF1ZXN0IHRvIGRpc2FibGUgU0FHViB0aW1lZCBvdXRcbiIpOworCX0gZWxzZSB7CisJCWlmIChy ZXN1bHQgPT0gR0VOOV9TQUdWX0lTX0RJU0FCTEVEKQorCQkJZGV2X3ByaXYtPnNrbF9zYWd2X2Vu YWJsZWQgPSBmYWxzZTsKKworCQlyZXQgPSByZXN1bHQ7CisJfQorCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlLAogCQkJCSAgIHN0cnVjdCBza2xfZGRiX2VudHJ5ICphbGxvYywgLyogb3V0ICovCkBA IC00MjM4LDYgKzQzNDgsOCBAQCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJLyogRWFzeS9jb21tb24gY2FzZTsganVzdCBzYW5pdGl6ZSBEREIgbm93 IGlmIGV2ZXJ5dGhpbmcgb2ZmICovCiAJCW1lbXNldChkZGIsIDAsIHNpemVvZigqZGRiKSk7CiAJ fQorCisJc2tsX3NhZ3ZfZ2V0X2h3X3N0YXRlKGRldl9wcml2KTsKIH0KIAogc3RhdGljIHZvaWQg aWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLS0gCjIuNy40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK