From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v5 1/6] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Tue, 2 Aug 2016 14:52:49 -0400 Message-ID: <1470163975-30467-2-git-send-email-cpaul@redhat.com> References: <1470163975-30467-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: <1470163975-30467-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 a2UKZnVsbHkgZnVuY3Rpb25hbC4KCkNoYW5nZXMgc2luY2UgdjU6CiAtIERvbid0IHVzZSBpc19w b3dlcl9vZl8yLiBNYWtlcyB0aGluZ3MgY29uZnVzaW5nCiAtIERvbid0IHVzZSB0aGUgb2xkIHN0 YXRlIHRvIGZpZ3VyZSBvdXQgd2hldGhlciBvciBub3QgdG8KICAgZW5hYmxlL2Rpc2FibGUgdGhl IHNhZ3YsIHVzZSB0aGUgbmV3IG9uZQogLSBTcGxpdCB0aGUgbG9vcCBpbiBza2xfZGlzYWJsZV9z YWd2IGludG8gaXQncyBvd24gZnVuY3Rpb24KQ2hhbmdlcyBzaW5jZSB2NDoKIC0gVXNlIGlzX3Bv d2VyX29mXzIgYWdhaW5zdCBhY3RpdmVfY3J0Y3MgdG8gY2hlY2sgd2hldGhlciB3ZSBoYXZlID4g MQogICBwaXBlIGVuYWJsZWQKIC0gRml4IHNrbF9zYWd2X2dldF9od19zdGF0ZSgpOiAodGVtcCAm IDB4MSkgaW5kaWNhdGVzIGRpc2FibGVkLCAweDAKICAgZW5hYmxlZAogLSBDYWxsIHNrbF9zYWd2 X2VuYWJsZS9kaXNhYmxlKCkgZnJvbSBwcmUvcG9zdC1wbGFuZSB1cGRhdGVzCkNoYW5nZXMgc2lu Y2UgdjM6CiAtIFVzZSB0aW1lX2JlZm9yZSgpIHRvIGNvbXBhcmUgdGltZW91dCB0byBqaWZmaWVz CkNoYW5nZXMgc2luY2UgdjI6CiAtIFJlYWxseSBhcHBseSBtaW5vciBzdHlsZSBuaXRwaWNrcyB0 byBwYXRjaCB0aGlzIHRpbWUKQ2hhbmdlcyBzaW5jZSB2MToKIC0gQWRkZWQgY29tbWVudHMgYWJv dXQgdGhpcyBwcm9iYWJseSBiZWluZyBvbmUgb2YgdGhlIHJlcXVpcmVtZW50cyB0bwogICBmaXhp bmcgU2t5bGFrZSdzIHdhdGVybWFyayBpc3N1ZXMKIC0gTWlub3Igc3R5bGUgbml0cGlja3MgZnJv bSBNYXR0IFJvcGVyCiAtIERpc2FibGUgdGhlc2UgZnVuY3Rpb25zIG9uIEJyb3h0b24sIHNpbmNl IGl0IGRvZXNuJ3QgaGF2ZSBhbiBTQUdWCgpSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhl dy5kLnJvcGVyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTHl1ZGUgPGNwYXVsQHJlZGhhdC5j b20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IHN0YWJsZUB2Z2Vy Lmtlcm5lbC5vcmcKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg IDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgICA1ICsrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMTIgKysrKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICB8IDExMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDY1YWRhNWQuLjg3MDE4ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTk2 Miw2ICsxOTYyLDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBpOTE1X3N1 c3BlbmRfc2F2ZWRfcmVnaXN0ZXJzIHJlZ2ZpbGU7CiAJc3RydWN0IHZsdl9zMGl4X3N0YXRlIHZs dl9zMGl4X3N0YXRlOwogCisJYm9vbCBza2xfc2Fndl9lbmFibGVkOworCiAJc3RydWN0IHsKIAkJ LyoKIAkJICogUmF3IHdhdGVybWFyayBsYXRlbmN5IHZhbHVlczoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCmluZGV4IDJmOTNkNGEuLjVmYjFjNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAt NzE3MCw2ICs3MTcwLDExIEBAIGVudW0gewogI2RlZmluZSAgIEhTV19QQ09ERV9ERV9XUklURV9G UkVRX1JFUQkJMHgxNwogI2RlZmluZSAgIERJU1BMQVlfSVBTX0NPTlRST0wJCQkweDE5CiAjZGVm aW5lCSAgSFNXX1BDT0RFX0RZTkFNSUNfRFVUWV9DWUNMRV9DT05UUk9MCTB4MUEKKyNkZWZpbmUg ICBHRU45X1BDT0RFX1NBR1ZfQ09OVFJPTAkJMHgyMQorI2RlZmluZSAgICAgR0VOOV9TQUdWX0RJ U0FCTEUJCQkweDAKKyNkZWZpbmUgICAgIEdFTjlfU0FHVl9MT1dfRlJFUQkJCTB4MQorI2RlZmlu ZSAgICAgR0VOOV9TQUdWX0hJR0hfRlJFUQkJCTB4MgorI2RlZmluZSAgICAgR0VOOV9TQUdWX0RZ TkFNSUNfRlJFUSAgICAgICAgICAgICAgMHgzCiAjZGVmaW5lIEdFTjZfUENPREVfREFUQQkJCQlf TU1JTygweDEzODEyOCkKICNkZWZpbmUgICBHRU42X1BDT0RFX0ZSRVFfSUFfUkFUSU9fU0hJRlQJ OAogI2RlZmluZSAgIEdFTjZfUENPREVfRlJFUV9SSU5HX1JBVElPX1NISUZUCTE2CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYThlOGNjOC4uNzZiYTc5ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDU2NSw2ICs0NTY1LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXRlKQogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9CiAJCXRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+YmFz ZS5wcmltYXJ5OwogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wcmlfc3RhdGUgPQogCQlk cm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHByaW1hcnkpOwpA QCAtNDU4OSw2ICs0NTkwLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCQkgICAgICFvbGRfcHJp bWFyeV9zdGF0ZS0+dmlzaWJsZSkpCiAJCQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KCZjcnRj LT5iYXNlKTsKIAl9CisKKwlpZiAoaHdlaWdodDMyKGRldl9wcml2LT5hY3RpdmVfY3J0Y3MpIDw9 IDEpCisJCXNrbF9lbmFibGVfc2FndihkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVs X3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl KQpAQCAtNDY0OSw2ICs0NjUzLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRh dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCX0KIAogCS8qCisJ ICogU0tMIHdvcmthcm91bmQ6IGJzcGVjIHJlY29tbWVuZHMgd2UgZGlzYWJsZSB0aGUgU0FHViB3 aGVuIHdlIGhhdmUKKwkgKiBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAorCSAqLworCWlmIChw aXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgJiYKKwkgICAgaHdlaWdodDMyKGRldl9wcml2LT5hY3Rp dmVfY3J0Y3MgfCBkcm1fY3J0Y19tYXNrKCZjcnRjLT5iYXNlKSkgPiAxKQorCQlza2xfZGlzYWJs ZV9zYWd2KGRldl9wcml2KTsKKworCS8qCiAJICogSWYgd2UncmUgZG9pbmcgYSBtb2Rlc2V0LCB3 ZSdyZSBkb25lLiAgTm8gbmVlZCB0byBkbyBhbnkgcHJlLXZibGFuawogCSAqIHdhdGVybWFyayBw cm9ncmFtbWluZyBoZXJlLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA1MGNk Yzg5Li42YjA1MzJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTcwOSw2ICsxNzA5 LDggQEAgdm9pZCBpbGtfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwog dm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBz a2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pOworaW50IHNrbF9l bmFibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworaW50IHNrbF9k aXNhYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHVpbnQzMl90 IGlsa19waXBlX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKTsKIGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldik7 CiBpbnQgc2FuaXRpemVfcmM2X29wdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCBlbmFibGVfcmM2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGY2MTBiNzEu LjY4NzIxYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMjg4NCw2ICsyODg0LDExNiBA QCBza2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKIH0KIAog c3RhdGljIHZvaWQKK3NrbF9zYWd2X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCit7CisJdTMyIHRlbXA7CisJaW50IHJldDsKKworCWlmIChJU19CUk9YVE9O KGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LCBHRU45X1BDT0RF X1NBR1ZfQ09OVFJPTCwgJnRlbXApOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKKworCWlmICghcmV0KSB7CisJCWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkID0gISh0 ZW1wICYgMHgxKTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBJZiBmb3Igc29tZSByZWFzb24gd2Ug Y2FuJ3QgYWNjZXNzIHRoZSBTQUdWIHN0YXRlLCBmb2xsb3cKKwkJICogdGhlIGJzcGVjIGFuZCBh c3N1bWUgaXQncyBlbmFibGVkCisJCSAqLworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgU0FH ViBzdGF0ZSwgYXNzdW1pbmcgZW5hYmxlZFxuIik7CisJCWRldl9wcml2LT5za2xfc2Fndl9lbmFi bGVkID0gdHJ1ZTsKKwl9Cit9CisKKy8qCisgKiBTQUdWIGR5bmFtaWNhbGx5IGFkanVzdHMgdGhl IHN5c3RlbSBhZ2VudCB2b2x0YWdlIGFuZCBjbG9jayBmcmVxdWVuY2llcworICogZGVwZW5kaW5n IG9uIHBvd2VyIGFuZCBwZXJmb3JtYW5jZSByZXF1aXJlbWVudHMuIFRoZSBkaXNwbGF5IGVuZ2lu ZSBhY2Nlc3MKKyAqIHRvIHN5c3RlbSBtZW1vcnkgaXMgYmxvY2tlZCBkdXJpbmcgdGhlIGFkanVz dG1lbnQgdGltZS4gSGF2aW5nIHRoaXMgZW5hYmxlZAorICogaW4gbXVsdGktcGlwZSBjb25maWd1 cmF0aW9ucyBjYW4gY2F1c2UgaXNzdWVzIChzdWNoIGFzIHVuZGVycnVucyBjYXVzaW5nCisgKiBm dWxsIHN5c3RlbSBoYW5ncyksIGFuZCB0aGUgYnNwZWMgYWxzbyBzdWdnZXN0cyB0aGF0IHNvZnR3 YXJlIGRpc2FibGUgaXQKKyAqIHdoZW4gbW9yZSB0aGVuIG9uZSBwaXBlIGlzIGVuYWJsZWQuCisg Ki8KK2ludAorc2tsX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3sKKwlpbnQgcmV0OworCisJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQorCQlyZXR1cm4g MDsKKwlpZiAoZGV2X3ByaXYtPnNrbF9zYWd2X2VuYWJsZWQpCisJCXJldHVybiAwOworCisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwlEUk1fREVCVUdfS01TKCJFbmFibGlu ZyB0aGUgU0FHVlxuIik7CisKKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCisJCQkJICAgICAgR0VOOV9TQUdWX0RZTkFNSUNf RlJFUSk7CisJaWYgKCFyZXQpCisJCWRldl9wcml2LT5za2xfc2Fndl9lbmFibGVkID0gdHJ1ZTsK KwllbHNlCisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSB0aGUgU0FHVlxuIik7CisKKwkv KiBXZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9yIFNBR1Ygd2hlbiBlbmFibGluZyAqLworCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50Citza2xfZG9fc2Fndl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3sKKwlpbnQgcmV0OworCXVpbnQzMl90IHRlbXA7CisKKwlyZXQgPSBzYW5keWJyaWRn ZV9wY29kZV93cml0ZShkZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCisJCQkJICAg ICAgR0VOOV9TQUdWX0RJU0FCTEUpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gZGlzYWJsZSB0aGUgU0FHVlxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gc2Fu ZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCisJ CQkJICAgICAmdGVtcCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjaGVj ayB0aGUgc3RhdHVzIG9mIHRoZSBTQUdWXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1 cm4gdGVtcCAmIDB4MTsKK30KKworaW50Citza2xfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgcmV0LCByZXN1bHQ7CisKKwlpZiAoSVNfQlJP WFRPTihkZXZfcHJpdikpCisJCXJldHVybiAwOworCWlmICghZGV2X3ByaXYtPnNrbF9zYWd2X2Vu YWJsZWQpCisJCXJldHVybiAwOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2Nr KTsKKwlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgdGhlIFNBR1ZcbiIpOworCisJLyogYnNwZWMg c2F5cyB0byBrZWVwIHJldHJ5aW5nIGZvciBhdCBsZWFzdCAxIG1zICovCisJcmV0ID0gd2FpdF9m b3IocmVzdWx0ID0gc2tsX2RvX3NhZ3ZfZGlzYWJsZShkZXZfcHJpdiksIDEpOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKworCWlmIChyZXQgPT0gLUVUSU1FRE9VVCkK KwkJRFJNX0VSUk9SKCJSZXF1ZXN0IHRvIGRpc2FibGUgU0FHViB0aW1lZCBvdXRcbiIpOworCWVs c2UgeworCQlpZiAocmVzdWx0ID09IDEpCisJCQlkZXZfcHJpdi0+c2tsX3NhZ3ZfZW5hYmxlZCA9 IGZhbHNlOworCisJCXJldCA9IHJlc3VsdDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgdm9pZAogc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUs CiAJCQkJICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jLCAvKiBvdXQgKi8KQEAgLTQyMzYs NiArNDM0Niw4IEBAIHZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQkvKiBFYXN5L2NvbW1vbiBjYXNlOyBqdXN0IHNhbml0aXplIEREQiBub3cgaWYgZXZl cnl0aGluZyBvZmYgKi8KIAkJbWVtc2V0KGRkYiwgMCwgc2l6ZW9mKCpkZGIpKTsKIAl9CisKKwlz a2xfc2Fndl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgdm9pZCBpbGtfcGlw ZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=