From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v4 1/6] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Tue, 26 Jul 2016 13:34:37 -0400 Message-ID: <1469554483-24999-2-git-send-email-cpaul@redhat.com> References: <1469554483-24999-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: <1469554483-24999-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, Maarten Lankhorst , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= 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 a2UKZnVsbHkgZnVuY3Rpb25hbC4KCkNoYW5nZXMgc2luY2UgdjQ6CiAtIFVzZSBpc19wb3dlcl9v Zl8yIGFnYWluc3QgYWN0aXZlX2NydGNzIHRvIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSA+IDEKICAg cGlwZSBlbmFibGVkCiAtIEZpeCBza2xfc2Fndl9nZXRfaHdfc3RhdGUoKTogKHRlbXAgJiAweDEp IGluZGljYXRlcyBkaXNhYmxlZCwgMHgwCiAgIGVuYWJsZWQKIC0gQ2FsbCBza2xfc2Fndl9lbmFi bGUvZGlzYWJsZSgpIGZyb20gcHJlL3Bvc3QtcGxhbmUgdXBkYXRlcwpDaGFuZ2VzIHNpbmNlIHYz OgogLSBVc2UgdGltZV9iZWZvcmUoKSB0byBjb21wYXJlIHRpbWVvdXQgdG8gamlmZmllcwpDaGFu Z2VzIHNpbmNlIHYyOgogLSBSZWFsbHkgYXBwbHkgbWlub3Igc3R5bGUgbml0cGlja3MgdG8gcGF0 Y2ggdGhpcyB0aW1lCkNoYW5nZXMgc2luY2UgdjE6CiAtIEFkZGVkIGNvbW1lbnRzIGFib3V0IHRo aXMgcHJvYmFibHkgYmVpbmcgb25lIG9mIHRoZSByZXF1aXJlbWVudHMgdG8KICAgZml4aW5nIFNr eWxha2UncyB3YXRlcm1hcmsgaXNzdWVzCiAtIE1pbm9yIHN0eWxlIG5pdHBpY2tzIGZyb20gTWF0 dCBSb3BlcgogLSBEaXNhYmxlIHRoZXNlIGZ1bmN0aW9ucyBvbiBCcm94dG9uLCBzaW5jZSBpdCBk b2Vzbid0IGhhdmUgYW4gU0FHVgoKUmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5y b3BlckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgpD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBzdGFibGVAdmdlci5rZXJu ZWwub3JnCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAyICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgNSArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE5ICsrKysrKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jICAgICAgfCAxMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUg ZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApp bmRleCA5ZjY1NWUyLi4xZjZmZThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE5NjIs NiArMTk2Miw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAlzdHJ1Y3QgaTkxNV9zdXNw ZW5kX3NhdmVkX3JlZ2lzdGVycyByZWdmaWxlOwogCXN0cnVjdCB2bHZfczBpeF9zdGF0ZSB2bHZf czBpeF9zdGF0ZTsKIAorCWJvb2wgc2tsX3NhZ3ZfZW5hYmxlZDsKKwogCXN0cnVjdCB7CiAJCS8q CiAJCSAqIFJhdyB3YXRlcm1hcmsgbGF0ZW5jeSB2YWx1ZXM6CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAppbmRleCA5Mzk3ZGRlLi44OWQxNDZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTcx NjYsNiArNzE2NiwxMSBAQCBlbnVtIHsKICNkZWZpbmUgICBIU1dfUENPREVfREVfV1JJVEVfRlJF UV9SRVEJCTB4MTcKICNkZWZpbmUgICBESVNQTEFZX0lQU19DT05UUk9MCQkJMHgxOQogI2RlZmlu ZQkgIEhTV19QQ09ERV9EWU5BTUlDX0RVVFlfQ1lDTEVfQ09OVFJPTAkweDFBCisjZGVmaW5lICAg R0VOOV9QQ09ERV9TQUdWX0NPTlRST0wJCTB4MjEKKyNkZWZpbmUgICAgIEdFTjlfU0FHVl9ESVNB QkxFCQkJMHgwCisjZGVmaW5lICAgICBHRU45X1NBR1ZfTE9XX0ZSRVEJCQkweDEKKyNkZWZpbmUg ICAgIEdFTjlfU0FHVl9ISUdIX0ZSRVEJCQkweDIKKyNkZWZpbmUgICAgIEdFTjlfU0FHVl9EWU5B TUlDX0ZSRVEgICAgICAgICAgICAgIDB4MwogI2RlZmluZSBHRU42X1BDT0RFX0RBVEEJCQkJX01N SU8oMHgxMzgxMjgpCiAjZGVmaW5lICAgR0VONl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgK ICNkZWZpbmUgICBHRU42X1BDT0RFX0ZSRVFfUklOR19SQVRJT19TSElGVAkxNgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDc4YmViN2UuLmI4MGMwNTEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTQ1NjIsOSArNDU2MiwxMiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9s ZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUgPSBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQorCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3N0 YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQogCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGNydGMtPmJhc2UucHJp bWFyeTsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcHJpX3N0YXRlID0KIAkJZHJtX2F0 b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUob2xkX3N0YXRlLCBwcmltYXJ5KTsKQEAgLTQ1 ODksNiArNDU5MiwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJCSAgICAgIW9sZF9wcmltYXJ5 X3N0YXRlLT52aXNpYmxlKSkKIAkJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoJmNydGMtPmJh c2UpOwogCX0KKworCWlmIChvbGRfaW50ZWxfc3RhdGUtPm1vZGVzZXQgJiYKKwkgICAgKG9sZF9p bnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzID09IDAgfHwKKwkgICAgIGlzX3Bvd2VyX29mXzIob2xk X2ludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpKSkKKwkJc2tsX2VuYWJsZV9zYWd2KGRldl9wcml2 KTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCkBAIC00NTk5LDYgKzQ2MDcsOCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSkKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQogCQl0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwogCXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpvbGRfc3RhdGUgPSBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKKwlzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQorCQl0b19pbnRlbF9hdG9taWNf c3RhdGUob2xkX3N0YXRlKTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+YmFz ZS5wcmltYXJ5OwogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wcmlfc3RhdGUgPQogCQlk cm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHByaW1hcnkpOwpA QCAtNDY0OSw2ICs0NjU5LDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCX0KIAogCS8qCisJICog U0tMIHdvcmthcm91bmQ6IGJzcGVjIHJlY29tbWVuZHMgd2UgZGlzYWJsZSB0aGUgU0FHViB3aGVu IHdlIGhhdmUKKwkgKiBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAorCSAqLworCWlmIChvbGRf aW50ZWxfc3RhdGUtPm1vZGVzZXQgJiYKKwkgICAgIWlzX3Bvd2VyX29mXzIob2xkX2ludGVsX3N0 YXRlLT5hY3RpdmVfY3J0Y3MpICYmCisJICAgIG9sZF9pbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNz ICE9IDApCisJCXNrbF9kaXNhYmxlX3NhZ3YoZGV2X3ByaXYpOworCisJLyoKIAkgKiBJZiB3ZSdy ZSBkb2luZyBhIG1vZGVzZXQsIHdlJ3JlIGRvbmUuICBObyBuZWVkIHRvIGRvIGFueSBwcmUtdmJs YW5rCiAJICogd2F0ZXJtYXJrIHByb2dyYW1taW5nIGhlcmUuCiAJICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCmluZGV4IGU3NGQ4NTEuLjExM2JmNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCkBAIC0xNzA5LDYgKzE3MDksOCBAQCB2b2lkIGlsa193bV9nZXRfaHdfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiB2b2lkIHNrbF9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8q IG91dCAqLyk7CitpbnQgc2tsX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CitpbnQgc2tsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGVuYWJsZV9yYzYpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggNjRkNjI4Yy4uNTVhOTY5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBA IC0yODc2LDYgKzI4NzYsMTA5IEBAIHNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lKQogfQogCiBzdGF0aWMgdm9pZAorc2tsX3NhZ3ZfZ2V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwl1MzIgdGVtcDsKKwlpbnQgcmV0 OworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQorCQlyZXR1cm47CisKKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQo ZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLCAmdGVtcCk7CisJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCisJaWYgKCFyZXQpIHsKKwkJZGV2X3ByaXYtPnNr bF9zYWd2X2VuYWJsZWQgPSAhKHRlbXAgJiAweDEpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIElm IGZvciBzb21lIHJlYXNvbiB3ZSBjYW4ndCBhY2Nlc3MgdGhlIFNBR1Ygc3RhdGUsIGZvbGxvdwor CQkgKiB0aGUgYnNwZWMgYW5kIGFzc3VtZSBpdCdzIGVuYWJsZWQKKwkJICovCisJCURSTV9FUlJP UigiRmFpbGVkIHRvIGdldCBTQUdWIHN0YXRlLCBhc3N1bWluZyBlbmFibGVkXG4iKTsKKwkJZGV2 X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQgPSB0cnVlOworCX0KK30KKworLyoKKyAqIFNBR1YgZHlu YW1pY2FsbHkgYWRqdXN0cyB0aGUgc3lzdGVtIGFnZW50IHZvbHRhZ2UgYW5kIGNsb2NrIGZyZXF1 ZW5jaWVzCisgKiBkZXBlbmRpbmcgb24gcG93ZXIgYW5kIHBlcmZvcm1hbmNlIHJlcXVpcmVtZW50 cy4gVGhlIGRpc3BsYXkgZW5naW5lIGFjY2VzcworICogdG8gc3lzdGVtIG1lbW9yeSBpcyBibG9j a2VkIGR1cmluZyB0aGUgYWRqdXN0bWVudCB0aW1lLiBIYXZpbmcgdGhpcyBlbmFibGVkCisgKiBp biBtdWx0aS1waXBlIGNvbmZpZ3VyYXRpb25zIGNhbiBjYXVzZSBpc3N1ZXMgKHN1Y2ggYXMgdW5k ZXJydW5zIGNhdXNpbmcKKyAqIGZ1bGwgc3lzdGVtIGhhbmdzKSwgYW5kIHRoZSBic3BlYyBhbHNv IHN1Z2dlc3RzIHRoYXQgc29mdHdhcmUgZGlzYWJsZSBpdAorICogd2hlbiBtb3JlIHRoZW4gb25l IHBpcGUgaXMgZW5hYmxlZC4KKyAqLworaW50Citza2xfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCByZXQ7CisKKwlpZiAoSVNfQlJPWFRPTihk ZXZfcHJpdikpCisJCXJldHVybiAwOworCWlmIChkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCkK KwkJcmV0dXJuIDA7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCURS TV9ERUJVR19LTVMoIkVuYWJsaW5nIHRoZSBTQUdWXG4iKTsKKworCXJldCA9IHNhbmR5YnJpZGdl X3Bjb2RlX3dyaXRlKGRldl9wcml2LCBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTCwKKwkJCQkgICAg ICBHRU45X1NBR1ZfRFlOQU1JQ19GUkVRKTsKKwlpZiAoIXJldCkKKwkJZGV2X3ByaXYtPnNrbF9z YWd2X2VuYWJsZWQgPSB0cnVlOworCWVsc2UKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxl IHRoZSBTQUdWXG4iKTsKKworCS8qIFdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgU0FHViB3aGVu IGVuYWJsaW5nICovCisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCXJl dHVybiByZXQ7Cit9CisKK2ludAorc2tsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IHJldCA9IDA7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0 OworCXUzMiB0ZW1wOworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQorCQlyZXR1cm4gMDsK KwlpZiAoIWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCW11dGV4 X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5n IHRoZSBTQUdWXG4iKTsKKworCS8qIGJzcGVjIHNheXMgdG8ga2VlcCByZXRyeWluZyBmb3IgYXQg bGVhc3QgMSBtcyAqLworCXRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcygxKTsK KwlkbyB7CisJCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBHRU45X1BD T0RFX1NBR1ZfQ09OVFJPTCwKKwkJCQkJICAgICAgR0VOOV9TQUdWX0RJU0FCTEUpOworCQlpZiAo cmV0KSB7CisJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNhYmxlIHRoZSBTQUdWXG4iKTsKKwkJ CWdvdG8gb3V0OworCQl9CisKKwkJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJp diwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCisJCQkJCSAgICAgJnRlbXApOworCQlpZiAocmV0 KSB7CisJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBTQUdW XG4iKTsKKwkJCWdvdG8gb3V0OworCQl9CisJfSB3aGlsZSAoISh0ZW1wICYgMHgxKSAmJiB0aW1l X2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7CisKKwlpZiAodGVtcCAmIDB4MSkgeworCQlkZXZf cHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9IGZhbHNlOworCX0gZWxzZSB7CisJCXJldCA9IC0xOwor CQlEUk1fRVJST1IoIlJlcXVlc3QgdG8gZGlzYWJsZSBTQUdWIHRpbWVkIG91dFxuIik7CisJfQor CitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyB2b2lkCiBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKIAkJCQkgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MsIC8qIG91 dCAqLwpAQCAtNDIyOCw2ICs0MzMxLDggQEAgdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJCS8qIEVhc3kvY29tbW9uIGNhc2U7IGp1c3Qgc2FuaXRpemUg RERCIG5vdyBpZiBldmVyeXRoaW5nIG9mZiAqLwogCQltZW1zZXQoZGRiLCAwLCBzaXplb2YoKmRk YikpOwogCX0KKworCXNrbF9zYWd2X2dldF9od19zdGF0ZShkZXZfcHJpdik7CiB9CiAKIHN0YXRp YyB2b2lkIGlsa19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCi0t IAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==