From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 10/71] drm/i915/chv: Preliminary interrupt support for Cherryview Date: Wed, 9 Apr 2014 13:28:08 +0300 Message-ID: <1397039349-10639-11-git-send-email-ville.syrjala@linux.intel.com> References: <1397039349-10639-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id C878F6EAF6 for ; Wed, 9 Apr 2014 03:29:48 -0700 (PDT) In-Reply-To: <1397039349-10639-1-git-send-email-ville.syrjala@linux.intel.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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCkNIViBoYXMgdGhl IEdlbjggbWFzdGVyIGludGVycnVwdCByZWdpc3RlciwgYXMgd2VsbCBhcyBHZW44CkdUL1BDVSBp bnRlcnJ1cHQgcmVnaXN0ZXJzLgoKVGhlIGRpc3BsYXkgYmxvY2sgaXMgYmFzZWQgb24gVkxWLCB3 aXRoIHRoZSBtYWluIGRpZmZlcmVuY2UKb2YgYWRkaW5nIHBpcGUgQy4KCkZJWE1FOiBMb3Qgb2Yg dGhpcyBpcyBjb3B5IHBhc3RlZCBmcm9tIGVpdGhlciBWTFYgb3IgQkRXLiBXZSBzaG91bGQKcHJv YmFibHkgcmVmYWN0b3IgYSBiaXQgdG8gc2hhcmUgdGhlIGNvZGUgYmV0dGVyLgoKdjI6IFJld3Jp dGUgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgdG8gbWFrZSBtb3JlIHNlbnNlCiAgICBEb24ndCBi YWlsIG91dCBpZiBNQVNURVJfQ1RMIHJlZ2lzdGVyIGRvZXNuJ3Qgc2hvdyBhbiBpbnRlcnJ1cHQs CiAgICBhcyBkaXNwbGF5IGludGVycnVwdHMgYXJlbid0IHJlcG9ydGVkIHRoZXJlLgoKdjM6IFJl YmFzZSBvbiB0b3Agb2YgRWdiZXJ0IEVpY2gncyBocGQgaXJxIGhhbmRsaW5nIHJld29yayBieSB1 c2luZwp0aGUgcmVsZXZhbnQgcG9ydCBob3RwbHVnIGxvZ2ljIGxpa2UgZm9yIHZsdi4KCnY0OiBS ZWJhc2Ugb24gdG9wIG9mIEJlbidzIGd0IGlycSAjZGVmaW5lIHJlZmFjdG9yaW5nLgoKdjU6IFNx dWFzaCBpbiBnZW44X2d0X2lycV9oYW5kbGVyIHJlZmFjdG9yaW5nIGZyb20gWmhhbyBZYWt1aQo8 eWFrdWkuemhhb0BpbnRlbC5jb20+Cgp2NjogQWRhcHQgdG8gdXBzdHJlYW0gY2hhbmdlcywgZGV2 X3ByaXYtPmlycV9yZWNlaXZlZCBpcyBnb25lLgoKdjc6IEVuYWJsZSAzIHRoZSBjb21tZW50ZWQt b3V0IDMgcGlwZSBzdXBwb3J0LgoKdjg6IEdyYWIgaXJxX2xvY2sgYXJvdW5kIGk5MTVfZW5hYmxl X3BpcGVzdGF0KCkKClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+ICh2MikKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j IHwgMjQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBj aGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCmluZGV4IDQwNzc0MmYuLjE1ODFiM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpA QCAtMTcxNSw2ICsxNzE1LDk1IEBAIG91dDoKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaXJx cmV0dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgZHJtX2RldmljZSAqKSBhcmc7CisJZHJt X2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdTMyIG1hc3Rl cl9jdGwsIGlpcjsKKwlpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsKKwl1bnNpZ25lZCBpbnQg cGlwZXMgPSAwOworCisJbWFzdGVyX2N0bCA9IEk5MTVfUkVBRChHRU44X01BU1RFUl9JUlEpOwor CisJSTkxNV9XUklURShHRU44X01BU1RFUl9JUlEsIDApOworCisJcmV0ID0gZ2VuOF9ndF9pcnFf aGFuZGxlcihkZXYsIGRldl9wcml2LCBtYXN0ZXJfY3RsKTsKKworCWlpciA9IEk5MTVfUkVBRChW TFZfSUlSKTsKKworCWlmIChpaXIgJiAoSTkxNV9ESVNQTEFZX1BJUEVfQV9WQkxBTktfSU5URVJS VVBUIHwgSTkxNV9ESVNQTEFZX1BJUEVfQV9FVkVOVF9JTlRFUlJVUFQpKQorCQlwaXBlcyB8PSAx IDw8IDA7CisJaWYgKGlpciAmIChJOTE1X0RJU1BMQVlfUElQRV9CX1ZCTEFOS19JTlRFUlJVUFQg fCBJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5UX0lOVEVSUlVQVCkpCisJCXBpcGVzIHw9IDEgPDwg MTsKKwlpZiAoaWlyICYgKEk5MTVfRElTUExBWV9QSVBFX0NfVkJMQU5LX0lOVEVSUlVQVCB8IEk5 MTVfRElTUExBWV9QSVBFX0NfRVZFTlRfSU5URVJSVVBUKSkKKwkJcGlwZXMgfD0gMSA8PCAyOwor CisJaWYgKHBpcGVzKSB7CisJCXUzMiBwaXBlX3N0YXRzW0k5MTVfTUFYX1BJUEVTXSA9IHt9Owor CQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCQlpbnQgcGlwZTsKKworCQlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7CisJCWZvcl9lYWNoX3BpcGUocGlw ZSkgeworCQkJdW5zaWduZWQgaW50IHJlZzsKKworCQkJaWYgKCEocGlwZXMgJiAoMSA8PCBwaXBl KSkpCisJCQkJY29udGludWU7CisKKwkJCXJlZyA9IFBJUEVTVEFUKHBpcGUpOworCQkJcGlwZV9z dGF0c1twaXBlXSA9IEk5MTVfUkVBRChyZWcpOworCisJCQkvKgorCQkJICogQ2xlYXIgdGhlIFBJ UEUqU1RBVCByZWdzIGJlZm9yZSB0aGUgSUlSCisJCQkgKi8KKwkJCWlmIChwaXBlX3N0YXRzW3Bp cGVdICYgMHg4MDAwZmZmZikgeworCQkJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUElQRV9GSUZP X1VOREVSUlVOX1NUQVRVUykKKwkJCQkJRFJNX0RFQlVHX0RSSVZFUigicGlwZSAlYyB1bmRlcnJ1 blxuIiwKKwkJCQkJCQkgcGlwZV9uYW1lKHBpcGUpKTsKKwkJCQlJOTE1X1dSSVRFKHJlZywgcGlw ZV9zdGF0c1twaXBlXSk7CisJCQl9CisJCX0KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7CisKKwkJZm9yX2VhY2hfcGlwZShwaXBlKSB7CisJ CQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMpCisJ CQkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsKKworCQkJaWYgKHBpcGVfc3RhdHNbcGlw ZV0gJiBQTEFORV9GTElQX0RPTkVfSU5UX1NUQVRVU19WTFYpIHsKKwkJCQlpbnRlbF9wcmVwYXJl X3BhZ2VfZmxpcChkZXYsIHBpcGUpOworCQkJCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoZGV2LCBw aXBlKTsKKwkJCX0KKwkJfQorCisJCWlmIChwaXBlX3N0YXRzWzBdICYgUElQRV9HTUJVU19JTlRF UlJVUFRfU1RBVFVTKQorCQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2KTsKKworCQlyZXQgPSBJUlFf SEFORExFRDsKKwl9CisKKwkvKiBDb25zdW1lIHBvcnQuICBUaGVuIGNsZWFyIElJUiBvciB3ZSds bCBtaXNzIGV2ZW50cyAqLworCWlmIChpaXIgJiBJOTE1X0RJU1BMQVlfUE9SVF9JTlRFUlJVUFQp IHsKKwkJdTMyIGhvdHBsdWdfc3RhdHVzID0gSTkxNV9SRUFEKFBPUlRfSE9UUExVR19TVEFUKTsK KworCQlJOTE1X1dSSVRFKFBPUlRfSE9UUExVR19TVEFULCBob3RwbHVnX3N0YXR1cyk7CisKKwkJ RFJNX0RFQlVHX0RSSVZFUigiaG90cGx1ZyBldmVudCByZWNlaXZlZCwgc3RhdCAweCUwOHhcbiIs CisJCQkJIGhvdHBsdWdfc3RhdHVzKTsKKwkJaWYgKGhvdHBsdWdfc3RhdHVzICYgSE9UUExVR19J TlRfU1RBVFVTX0k5MTUpCisJCQlxdWV1ZV93b3JrKGRldl9wcml2LT53cSwKKwkJCQkgICAmZGV2 X3ByaXYtPmhvdHBsdWdfd29yayk7CisKKwkJcmV0ID0gSVJRX0hBTkRMRUQ7CisJfQorCisJSTkx NV9XUklURShWTFZfSUlSLCBpaXIpOworCisJSTkxNV9XUklURShHRU44X01BU1RFUl9JUlEsIERF X01BU1RFUl9JUlFfQ09OVFJPTCk7CisJUE9TVElOR19SRUFEKEdFTjhfTUFTVEVSX0lSUSk7CisK KwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdm9pZCBpYnhfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIpCiB7CiAJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZf cHJpdiA9IChkcm1faTkxNV9wcml2YXRlX3QgKikgZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTI5ODUs NiArMzA3NCw2MSBAQCBzdGF0aWMgdm9pZCBnZW44X2lycV9wcmVpbnN0YWxsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJaWJ4X2lycV9wcmVpbnN0YWxsKGRldik7CiB9CiAKK3N0YXRpYyB2b2lk IGNoZXJyeXZpZXdfaXJxX3ByZWluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlk cm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVfdCAqKSBkZXYt PmRldl9wcml2YXRlOworCWludCBwaXBlOworCisJSTkxNV9XUklURShHRU44X01BU1RFUl9JUlEs IDApOworCVBPU1RJTkdfUkVBRChHRU44X01BU1RFUl9JUlEpOworCisvKiBJSVIgY2FuIHRoZW9y ZXRpY2FsbHkgcXVldWUgdXAgdHdvIGV2ZW50cy4gQmUgcGFyYW5vaWQgKi8KKyNkZWZpbmUgR0VO OF9JUlFfSU5JVF9ORFgodHlwZSwgd2hpY2gpCQkJCVwKK2RvIHsJCQkJCQkJCVwKKwlJOTE1X1dS SVRFKEdFTjhfIyN0eXBlIyNfSU1SKHdoaWNoKSwgMHhmZmZmZmZmZik7CVwKKwlQT1NUSU5HX1JF QUQoR0VOOF8jI3R5cGUjI19JTVIod2hpY2gpKTsJCQlcCisJSTkxNV9XUklURShHRU44XyMjdHlw ZSMjX0lFUih3aGljaCksIDApOwkJXAorCUk5MTVfV1JJVEUoR0VOOF8jI3R5cGUjI19JSVIod2hp Y2gpLCAweGZmZmZmZmZmKTsJXAorCVBPU1RJTkdfUkVBRChHRU44XyMjdHlwZSMjX0lJUih3aGlj aCkpOwkJCVwKKwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNfSUlSKHdoaWNoKSwgMHhmZmZmZmZm Zik7CVwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgR0VOOF9JUlFfSU5JVCh0eXBlKQkJCQkJXAor ZG8gewkJCQkJCQkJXAorCUk5MTVfV1JJVEUoR0VOOF8jI3R5cGUjI19JTVIsIDB4ZmZmZmZmZmYp OwkJXAorCVBPU1RJTkdfUkVBRChHRU44XyMjdHlwZSMjX0lNUik7CQkJXAorCUk5MTVfV1JJVEUo R0VOOF8jI3R5cGUjI19JRVIsIDApOwkJCVwKKwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNfSUlS LCAweGZmZmZmZmZmKTsJCVwKKwlQT1NUSU5HX1JFQUQoR0VOOF8jI3R5cGUjI19JSVIpOwkJCVwK KwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNfSUlSLCAweGZmZmZmZmZmKTsJCVwKK30gd2hpbGUg KDApCisKKwlHRU44X0lSUV9JTklUX05EWChHVCwgMCk7CisJR0VOOF9JUlFfSU5JVF9ORFgoR1Qs IDEpOworCUdFTjhfSVJRX0lOSVRfTkRYKEdULCAyKTsKKwlHRU44X0lSUV9JTklUX05EWChHVCwg Myk7CisKKwlHRU44X0lSUV9JTklUKFBDVSk7CisKKyN1bmRlZiBHRU44X0lSUV9JTklUCisjdW5k ZWYgR0VOOF9JUlFfSU5JVF9ORFgKKworCVBPU1RJTkdfUkVBRChHRU44X1BDVV9JSVIpOworCisJ STkxNV9XUklURShEUElOVkdUVCwgRFBJTlZHVFRfU1RBVFVTX01BU0tfQ0hWKTsKKworCUk5MTVf V1JJVEUoUE9SVF9IT1RQTFVHX0VOLCAwKTsKKwlJOTE1X1dSSVRFKFBPUlRfSE9UUExVR19TVEFU LCBJOTE1X1JFQUQoUE9SVF9IT1RQTFVHX1NUQVQpKTsKKworCWZvcl9lYWNoX3BpcGUocGlwZSkK KwkJSTkxNV9XUklURShQSVBFU1RBVChwaXBlKSwgMHhmZmZmKTsKKworCUk5MTVfV1JJVEUoVkxW X0lNUiwgMHhmZmZmZmZmZik7CisJSTkxNV9XUklURShWTFZfSUVSLCAweDApOworCUk5MTVfV1JJ VEUoVkxWX0lJUiwgMHhmZmZmZmZmZik7CisJUE9TVElOR19SRUFEKFZMVl9JSVIpOworfQorCiBz dGF0aWMgdm9pZCBpYnhfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewog CWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSAoZHJtX2k5MTVfcHJpdmF0ZV90ICopIGRl di0+ZGV2X3ByaXZhdGU7CkBAIC0zMzI2LDYgKzM0NzAsNTAgQEAgc3RhdGljIGludCBnZW44X2ly cV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAwOwogfQogCitz dGF0aWMgaW50IGNoZXJyeXZpZXdfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCit7CisJZHJtX2k5MTVfcHJpdmF0ZV90ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJdTMyIGVuYWJsZV9tYXNrID0gSTkxNV9ESVNQTEFZX1BPUlRfSU5URVJSVVBUIHwKKwkJSTkx NV9ESVNQTEFZX1BJUEVfQV9FVkVOVF9JTlRFUlJVUFQgfAorCQlJOTE1X0RJU1BMQVlfUElQRV9B X1ZCTEFOS19JTlRFUlJVUFQgfAorCQlJOTE1X0RJU1BMQVlfUElQRV9CX0VWRU5UX0lOVEVSUlVQ VCB8CisJCUk5MTVfRElTUExBWV9QSVBFX0JfVkJMQU5LX0lOVEVSUlVQVCB8CisJCUk5MTVfRElT UExBWV9QSVBFX0NfRVZFTlRfSU5URVJSVVBUIHwKKwkJSTkxNV9ESVNQTEFZX1BJUEVfQ19WQkxB TktfSU5URVJSVVBUOworCXUzMiBwaXBlc3RhdF9lbmFibGUgPSBQTEFORV9GTElQX0RPTkVfSU5U X0VOX1ZMVjsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBwaXBlOworCisJLyoKKwkg KiBMZWF2ZSB2YmxhbmsgaW50ZXJydXB0cyBtYXNrZWQgaW5pdGlhbGx5LiAgZW5hYmxlL2Rpc2Fi bGUgd2lsbAorCSAqIHRvZ2dsZSB0aGVtIGJhc2VkIG9uIHVzYWdlLgorCSAqLworCWRldl9wcml2 LT5pcnFfbWFzayA9IH5lbmFibGVfbWFzayB8CisJCUk5MTVfRElTUExBWV9QSVBFX0FfVkJMQU5L X0lOVEVSUlVQVCB8CisJCUk5MTVfRElTUExBWV9QSVBFX0JfVkJMQU5LX0lOVEVSUlVQVCB8CisJ CUk5MTVfRElTUExBWV9QSVBFX0NfVkJMQU5LX0lOVEVSUlVQVDsKKworCWZvcl9lYWNoX3BpcGUo cGlwZSkKKwkJSTkxNV9XUklURShQSVBFU1RBVChwaXBlKSwgMHhmZmZmKTsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKKwlpOTE1X2VuYWJsZV9w aXBlc3RhdChkZXZfcHJpdiwgMCwgUElQRV9HTUJVU19FVkVOVF9FTkFCTEUpOworCWZvcl9lYWNo X3BpcGUocGlwZSkKKwkJaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3ByaXYsIHBpcGUsIHBpcGVz dGF0X2VuYWJsZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2Nr LCBpcnFmbGFncyk7CisKKwlJOTE1X1dSSVRFKFZMVl9JSVIsIDB4ZmZmZmZmZmYpOworCUk5MTVf V1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKKwlJOTE1X1dSSVRFKFZMVl9JRVIs IGVuYWJsZV9tYXNrKTsKKworCWdlbjhfZ3RfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsKKwor CUk5MTVfV1JJVEUoR0VOOF9NQVNURVJfSVJRLCBNQVNURVJfSU5URVJSVVBUX0VOQUJMRSk7CisJ UE9TVElOR19SRUFEKEdFTjhfTUFTVEVSX0lSUSk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGlj IHZvaWQgZ2VuOF9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTMz OTcsNiArMzU4NSw1NyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2lycV91bmluc3RhbGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAlQT1NUSU5HX1JFQUQoVkxWX0lFUik7CiB9CiAKK3N0YXRp YyB2b2lkIGNoZXJyeXZpZXdfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWlu dCBwaXBlOworCisJaWYgKCFkZXZfcHJpdikKKwkJcmV0dXJuOworCisJSTkxNV9XUklURShHRU44 X01BU1RFUl9JUlEsIDApOworCVBPU1RJTkdfUkVBRChHRU44X01BU1RFUl9JUlEpOworCisjZGVm aW5lIEdFTjhfSVJRX0ZJTklfTkRYKHR5cGUsIHdoaWNoKQkJCQlcCitkbyB7CQkJCQkJCQlcCisJ STkxNV9XUklURShHRU44XyMjdHlwZSMjX0lNUih3aGljaCksIDB4ZmZmZmZmZmYpOwlcCisJSTkx NV9XUklURShHRU44XyMjdHlwZSMjX0lFUih3aGljaCksIDApOwkJXAorCUk5MTVfV1JJVEUoR0VO OF8jI3R5cGUjI19JSVIod2hpY2gpLCAweGZmZmZmZmZmKTsJXAorCVBPU1RJTkdfUkVBRChHRU44 XyMjdHlwZSMjX0lJUih3aGljaCkpOwkJCVwKKwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNfSUlS KHdoaWNoKSwgMHhmZmZmZmZmZik7CVwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgR0VOOF9JUlFf RklOSSh0eXBlKQkJCQlcCitkbyB7CQkJCQkJCVwKKwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNf SU1SLCAweGZmZmZmZmZmKTsJXAorCUk5MTVfV1JJVEUoR0VOOF8jI3R5cGUjI19JRVIsIDApOwkJ XAorCUk5MTVfV1JJVEUoR0VOOF8jI3R5cGUjI19JSVIsIDB4ZmZmZmZmZmYpOwlcCisJUE9TVElO R19SRUFEKEdFTjhfIyN0eXBlIyNfSUlSKTsJCVwKKwlJOTE1X1dSSVRFKEdFTjhfIyN0eXBlIyNf SUlSLCAweGZmZmZmZmZmKTsJXAorfSB3aGlsZSAoMCkKKworCUdFTjhfSVJRX0ZJTklfTkRYKEdU LCAwKTsKKwlHRU44X0lSUV9GSU5JX05EWChHVCwgMSk7CisJR0VOOF9JUlFfRklOSV9ORFgoR1Qs IDIpOworCUdFTjhfSVJRX0ZJTklfTkRYKEdULCAzKTsKKworCUdFTjhfSVJRX0ZJTkkoUENVKTsK KworI3VuZGVmIEdFTjhfSVJRX0ZJTkkKKyN1bmRlZiBHRU44X0lSUV9GSU5JX05EWAorCisJSTkx NV9XUklURShQT1JUX0hPVFBMVUdfRU4sIDApOworCUk5MTVfV1JJVEUoUE9SVF9IT1RQTFVHX1NU QVQsIEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfU1RBVCkpOworCisJZm9yX2VhY2hfcGlwZShwaXBl KQorCQlJOTE1X1dSSVRFKFBJUEVTVEFUKHBpcGUpLCAweGZmZmYpOworCisJSTkxNV9XUklURShW TFZfSU1SLCAweGZmZmZmZmZmKTsKKwlJOTE1X1dSSVRFKFZMVl9JRVIsIDB4MCk7CisJSTkxNV9X UklURShWTFZfSUlSLCAweGZmZmZmZmZmKTsKKwlQT1NUSU5HX1JFQUQoVkxWX0lJUik7Cit9CisK IHN0YXRpYyB2b2lkIGlyb25sYWtlX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIHsKIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gKGRybV9pOTE1X3ByaXZhdGVf dCAqKSBkZXYtPmRldl9wcml2YXRlOwpAQCAtNDExOSw3ICs0MzU4LDE1IEBAIHZvaWQgaW50ZWxf aXJxX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZGV2LT5kcml2ZXItPmdldF9zY2Fu b3V0X3Bvc2l0aW9uID0gaTkxNV9nZXRfY3J0Y19zY2Fub3V0cG9zOwogCX0KIAotCWlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKSB7CisJCWRldi0+ZHJp dmVyLT5pcnFfaGFuZGxlciA9IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXI7CisJCWRldi0+ZHJpdmVy LT5pcnFfcHJlaW5zdGFsbCA9IGNoZXJyeXZpZXdfaXJxX3ByZWluc3RhbGw7CisJCWRldi0+ZHJp dmVyLT5pcnFfcG9zdGluc3RhbGwgPSBjaGVycnl2aWV3X2lycV9wb3N0aW5zdGFsbDsKKwkJZGV2 LT5kcml2ZXItPmlycV91bmluc3RhbGwgPSBjaGVycnl2aWV3X2lycV91bmluc3RhbGw7CisJCWRl di0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gdmFsbGV5dmlld19lbmFibGVfdmJsYW5rOworCQlk ZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSB2YWxsZXl2aWV3X2Rpc2FibGVfdmJsYW5rOwor CQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOwor CX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CiAJCWRldi0+ZHJpdmVyLT5pcnFfaGFu ZGxlciA9IHZhbGxleXZpZXdfaXJxX2hhbmRsZXI7CiAJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5z dGFsbCA9IHZhbGxleXZpZXdfaXJxX3ByZWluc3RhbGw7CiAJCWRldi0+ZHJpdmVyLT5pcnFfcG9z dGluc3RhbGwgPSB2YWxsZXl2aWV3X2lycV9wb3N0aW5zdGFsbDsKLS0gCjEuOC4zLjIKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==