From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v7] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Wed, 3 Aug 2016 09:50:23 -0400 Message-ID: <1470232224-9102-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 a2UKZnVsbHkgZnVuY3Rpb25hbC4KCkNoYW5nZXMgc2luY2UgdjY6CiAtIFByb3RlY3Qgc2tsX2Vu YWJsZV9zYWd2KCkgd2l0aCBpbnRlbF9zdGF0ZS0+bW9kZXNldCBjb25kaXRpb25hbCBpbgogICBp bnRlbF9hdG9taWNfY29tbWl0X3RhaWwoKQpDaGFuZ2VzIHNpbmNlIHY1OgogLSBEb24ndCB1c2Ug aXNfcG93ZXJfb2ZfMi4gTWFrZXMgdGhpbmdzIGNvbmZ1c2luZwogLSBEb24ndCB1c2UgdGhlIG9s ZCBzdGF0ZSB0byBmaWd1cmUgb3V0IHdoZXRoZXIgb3Igbm90IHRvCiAgIGVuYWJsZS9kaXNhYmxl IHRoZSBzYWd2LCB1c2UgdGhlIG5ldyBvbmUKIC0gU3BsaXQgdGhlIGxvb3AgaW4gc2tsX2Rpc2Fi bGVfc2FndiBpbnRvIGl0J3Mgb3duIGZ1bmN0aW9uCiAtIE1vdmUgc2tsX3NhZ3ZfZW5hYmxlL2Rp c2FibGUoKSBjYWxscyBpbnRvIGludGVsX2F0b21pY19jb21taXRfdGFpbCgpCkNoYW5nZXMgc2lu Y2UgdjQ6CiAtIFVzZSBpc19wb3dlcl9vZl8yIGFnYWluc3QgYWN0aXZlX2NydGNzIHRvIGNoZWNr IHdoZXRoZXIgd2UgaGF2ZSA+IDEKICAgcGlwZSBlbmFibGVkCiAtIEZpeCBza2xfc2Fndl9nZXRf aHdfc3RhdGUoKTogKHRlbXAgJiAweDEpIGluZGljYXRlcyBkaXNhYmxlZCwgMHgwCiAgIGVuYWJs ZWQKIC0gQ2FsbCBza2xfc2Fndl9lbmFibGUvZGlzYWJsZSgpIGZyb20gcHJlL3Bvc3QtcGxhbmUg dXBkYXRlcwpDaGFuZ2VzIHNpbmNlIHYzOgogLSBVc2UgdGltZV9iZWZvcmUoKSB0byBjb21wYXJl IHRpbWVvdXQgdG8gamlmZmllcwpDaGFuZ2VzIHNpbmNlIHYyOgogLSBSZWFsbHkgYXBwbHkgbWlu b3Igc3R5bGUgbml0cGlja3MgdG8gcGF0Y2ggdGhpcyB0aW1lCkNoYW5nZXMgc2luY2UgdjE6CiAt IEFkZGVkIGNvbW1lbnRzIGFib3V0IHRoaXMgcHJvYmFibHkgYmVpbmcgb25lIG9mIHRoZSByZXF1 aXJlbWVudHMgdG8KICAgZml4aW5nIFNreWxha2UncyB3YXRlcm1hcmsgaXNzdWVzCiAtIE1pbm9y IHN0eWxlIG5pdHBpY2tzIGZyb20gTWF0dCBSb3BlcgogLSBEaXNhYmxlIHRoZXNlIGZ1bmN0aW9u cyBvbiBCcm94dG9uLCBzaW5jZSBpdCBkb2Vzbid0IGhhdmUgYW4gU0FHVgoKUmV2aWV3ZWQtYnk6 IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEx5 dWRlIDxjcGF1bEByZWRoYXQuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+CkNjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCgpmaXh1cCEgZHJtL2k5MTUvc2tsOiBBZGQg c3VwcG9ydCBmb3IgdGhlIFNBR1YsIGZpeCB1bmRlcnJ1biBoYW5ncwotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oICAgICAgfCAgIDUgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyB8ICAxMSArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg IDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMTEyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNjVhZGE1ZC4uODcwMThkMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xOTYyLDYgKzE5NjIsOCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGk5MTVfc3VzcGVuZF9zYXZlZF9yZWdpc3RlcnMgcmVnZmls ZTsKIAlzdHJ1Y3Qgdmx2X3MwaXhfc3RhdGUgdmx2X3MwaXhfc3RhdGU7CiAKKwlib29sIHNrbF9z YWd2X2VuYWJsZWQ7CisKIAlzdHJ1Y3QgewogCQkvKgogCQkgKiBSYXcgd2F0ZXJtYXJrIGxhdGVu Y3kgdmFsdWVzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggMmY5M2Q0YS4uNWZiMWM2MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03MTcwLDYgKzcxNzAsMTEgQEAgZW51bSB7CiAj ZGVmaW5lICAgSFNXX1BDT0RFX0RFX1dSSVRFX0ZSRVFfUkVRCQkweDE3CiAjZGVmaW5lICAgRElT UExBWV9JUFNfQ09OVFJPTAkJCTB4MTkKICNkZWZpbmUJICBIU1dfUENPREVfRFlOQU1JQ19EVVRZ X0NZQ0xFX0NPTlRST0wJMHgxQQorI2RlZmluZSAgIEdFTjlfUENPREVfU0FHVl9DT05UUk9MCQkw eDIxCisjZGVmaW5lICAgICBHRU45X1NBR1ZfRElTQUJMRQkJCTB4MAorI2RlZmluZSAgICAgR0VO OV9TQUdWX0xPV19GUkVRCQkJMHgxCisjZGVmaW5lICAgICBHRU45X1NBR1ZfSElHSF9GUkVRCQkJ MHgyCisjZGVmaW5lICAgICBHRU45X1NBR1ZfRFlOQU1JQ19GUkVRICAgICAgICAgICAgICAweDMK ICNkZWZpbmUgR0VONl9QQ09ERV9EQVRBCQkJCV9NTUlPKDB4MTM4MTI4KQogI2RlZmluZSAgIEdF TjZfUENPREVfRlJFUV9JQV9SQVRJT19TSElGVAk4CiAjZGVmaW5lICAgR0VONl9QQ09ERV9GUkVR X1JJTkdfUkFUSU9fU0hJRlQJMTYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRl eCBhOGU4Y2M4Li5mNGNhZjRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBA IC0xMzY5Miw2ICsxMzY5MiwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3Rh aWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkgICAgIGludGVsX3N0YXRlLT5j ZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5jZGNsa19wbGwudmNvKSkKIAkJCWRldl9wcml2LT5k aXNwbGF5Lm1vZGVzZXRfY29tbWl0X2NkY2xrKHN0YXRlKTsKIAorCQkvKgorCQkgKiBTS0wgd29y a2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIHRoZSBTQUdWIHdoZW4gd2UKKwkJ ICogaGF2ZSBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAorCQkgKi8KKwkJaWYgKElTX1NLWUxB S0UoZGV2X3ByaXYpICYmCisJCSAgICBod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRj cykgPiAxKQorCQkJc2tsX2Rpc2FibGVfc2FndihkZXZfcHJpdik7CisKIAkJaW50ZWxfbW9kZXNl dF92ZXJpZnlfZGlzYWJsZWQoZGV2KTsKIAl9CiAKQEAgLTEzNzY1LDYgKzEzNzczLDkgQEAgc3Rh dGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKIAkJaW50ZWxfbW9kZXNldF92ZXJpZnlfY3J0YyhjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwgY3J0Yy0+c3RhdGUpOwogCX0KIAorCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCAmJiBod2Vp Z2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgPD0gMSkKKwkJc2tsX2VuYWJsZV9zYWd2 KGRldl9wcml2KTsKKwogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0YXRlKTsK IAogCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggNTBjZGM4OS4uNmIwNTMyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE3MDks NiArMTcwOSw4IEBAIHZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKK2lu dCBza2xfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2lu dCBza2xfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB1 aW50MzJfdCBpbGtfcGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyk7CiBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwogaW50IHNhbml0aXplX3JjNl9vcHRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgZW5hYmxlX3JjNik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCBm NjEwYjcxLi42ODcyMWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTI4ODQsNiArMjg4 NCwxMTYgQEAgc2tsX3dtX3BsYW5lX2lkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUp CiB9CiAKIHN0YXRpYyB2b2lkCitza2xfc2Fndl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCXUzMiB0ZW1wOworCWludCByZXQ7CisKKwlpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpCisJCXJldHVybjsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7CisJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VO OV9QQ09ERV9TQUdWX0NPTlRST0wsICZ0ZW1wKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7CisKKwlpZiAoIXJldCkgeworCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxl ZCA9ICEodGVtcCAmIDB4MSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgZm9yIHNvbWUgcmVh c29uIHdlIGNhbid0IGFjY2VzcyB0aGUgU0FHViBzdGF0ZSwgZm9sbG93CisJCSAqIHRoZSBic3Bl YyBhbmQgYXNzdW1lIGl0J3MgZW5hYmxlZAorCQkgKi8KKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g Z2V0IFNBR1Ygc3RhdGUsIGFzc3VtaW5nIGVuYWJsZWRcbiIpOworCQlkZXZfcHJpdi0+c2tsX3Nh Z3ZfZW5hYmxlZCA9IHRydWU7CisJfQorfQorCisvKgorICogU0FHViBkeW5hbWljYWxseSBhZGp1 c3RzIHRoZSBzeXN0ZW0gYWdlbnQgdm9sdGFnZSBhbmQgY2xvY2sgZnJlcXVlbmNpZXMKKyAqIGRl cGVuZGluZyBvbiBwb3dlciBhbmQgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnRzLiBUaGUgZGlzcGxh eSBlbmdpbmUgYWNjZXNzCisgKiB0byBzeXN0ZW0gbWVtb3J5IGlzIGJsb2NrZWQgZHVyaW5nIHRo ZSBhZGp1c3RtZW50IHRpbWUuIEhhdmluZyB0aGlzIGVuYWJsZWQKKyAqIGluIG11bHRpLXBpcGUg Y29uZmlndXJhdGlvbnMgY2FuIGNhdXNlIGlzc3VlcyAoc3VjaCBhcyB1bmRlcnJ1bnMgY2F1c2lu ZworICogZnVsbCBzeXN0ZW0gaGFuZ3MpLCBhbmQgdGhlIGJzcGVjIGFsc28gc3VnZ2VzdHMgdGhh dCBzb2Z0d2FyZSBkaXNhYmxlIGl0CisgKiB3aGVuIG1vcmUgdGhlbiBvbmUgcGlwZSBpcyBlbmFi bGVkLgorICovCitpbnQKK3NrbF9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCit7CisJaW50IHJldDsKKworCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKKwkJ cmV0dXJuIDA7CisJaWYgKGRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkKQorCQlyZXR1cm4gMDsK KworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJRFJNX0RFQlVHX0tNUygi RW5hYmxpbmcgdGhlIFNBR1ZcbiIpOworCisJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUo ZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAorCQkJCSAgICAgIEdFTjlfU0FHVl9E WU5BTUlDX0ZSRVEpOworCWlmICghcmV0KQorCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9 IHRydWU7CisJZWxzZQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgdGhlIFNBR1ZcbiIp OworCisJLyogV2UgZG9uJ3QgbmVlZCB0byB3YWl0IGZvciBTQUdWIHdoZW4gZW5hYmxpbmcgKi8K KwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludAorc2tsX2RvX3NhZ3ZfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldDsKKwl1aW50MzJfdCB0ZW1wOworCisJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAor CQkJCSAgICAgIEdFTjlfU0FHVl9ESVNBQkxFKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi RmFpbGVkIHRvIGRpc2FibGUgdGhlIFNBR1ZcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05U Uk9MLAorCQkJCSAgICAgJnRlbXApOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgU0FHVlxuIik7CisJCXJldHVybiByZXQ7CisJfQor CisJcmV0dXJuIHRlbXAgJiAweDE7Cit9CisKK2ludAorc2tsX2Rpc2FibGVfc2FndihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldCwgcmVzdWx0OworCisJaWYg KElTX0JST1hUT04oZGV2X3ByaXYpKQorCQlyZXR1cm4gMDsKKwlpZiAoIWRldl9wcml2LT5za2xf c2Fndl9lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7CisJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIHRoZSBTQUdWXG4iKTsKKworCS8q IGJzcGVjIHNheXMgdG8ga2VlcCByZXRyeWluZyBmb3IgYXQgbGVhc3QgMSBtcyAqLworCXJldCA9 IHdhaXRfZm9yKHJlc3VsdCA9IHNrbF9kb19zYWd2X2Rpc2FibGUoZGV2X3ByaXYpLCAxKTsKKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisKKwlpZiAocmV0ID09IC1FVElN RURPVVQpCisJCURSTV9FUlJPUigiUmVxdWVzdCB0byBkaXNhYmxlIFNBR1YgdGltZWQgb3V0XG4i KTsKKwllbHNlIHsKKwkJaWYgKHJlc3VsdCA9PSAxKQorCQkJZGV2X3ByaXYtPnNrbF9zYWd2X2Vu YWJsZWQgPSBmYWxzZTsKKworCQlyZXQgPSByZXN1bHQ7CisJfQorCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlLAogCQkJCSAgIHN0cnVjdCBza2xfZGRiX2VudHJ5ICphbGxvYywgLyogb3V0ICovCkBA IC00MjM2LDYgKzQzNDYsOCBAQCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJLyogRWFzeS9jb21tb24gY2FzZTsganVzdCBzYW5pdGl6ZSBEREIgbm93 IGlmIGV2ZXJ5dGhpbmcgb2ZmICovCiAJCW1lbXNldChkZGIsIDAsIHNpemVvZigqZGRiKSk7CiAJ fQorCisJc2tsX3NhZ3ZfZ2V0X2h3X3N0YXRlKGRldl9wcml2KTsKIH0KIAogc3RhdGljIHZvaWQg aWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLS0gCjIuNy40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK