From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yao Cheng Subject: [RFC PATCH v3 1/4] drm/i915: add i915_ved.c to setup bridge for VED Date: Sat, 22 Nov 2014 03:06:57 +0800 Message-ID: <1416596818-5651-2-git-send-email-yao.cheng@intel.com> References: <1416596818-5651-1-git-send-email-yao.cheng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1416596818-5651-1-git-send-email-yao.cheng@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, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, sean.v.kelley@intel.com, john.chehab@intel.com Cc: emil.l.velikov@gmail.com, fei.jiang@intel.com, dh.herrmann@gmail.com, daniel@fooishbar.org List-Id: dri-devel@lists.freedesktop.org U2V0dXAgbWluaW11bSByZXF1aXJlZCByZXNvdXJjZXMgZHVyaW5nIGk5MTVfZHJpdmVyX2xvYWQ6 CjEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlPL0lSUSByZXNvdXJjZXMK Mi4gTWFrZSB0aGUgcGxhdGZvcm0gZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50 aW1lIFBNLgozLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9yd2FyZCB0aGUgVkVEIGlycXMuClZFRCBk cml2ZXIgKGEgc3RhbmRhbG9uZSBkcm0gZHJpdmVyKSBwcm9iZXMgdGhlIFZFRCBkZXZpY2UgYW5k CmNyZWF0ZXMgYSBuZXcgZHJpIGNhcmQgb24gaW5zdGFsbC4KQ3VycmVudGx5IG9ubHkgc3VwcG9y dHMgVkVEIG9uIHZhbGxleXZpZXcuCktlcm5lbGRvYyBpcyB1cGRhdGVkIGZvciBpOTE1X3ZlZC5j LgoKdjI6CnRha2UgRGFuaWVsICYgSmFuaSdzIGNvbW1lbnRzCgktIGV4dHJhY3QgY2hhbmdlIHRv IG5ldyBmaWxlIGk5MTVfdmVkLmMKCS0gYWRkIGtlcm5lbGRvYwoJLSBjaGFuZ2UgJ2lwdnItdmVk JyB0byAnaXB2ci12bHYtdmVkJyBmb3IgZXh0ZW5zaWJpbGl0eQoJLSB1bnJlZ2lzdGVyIHBsYXRk ZXYgYmVmb3JlIGlycV9mcmVlX2Rlc2MKCS0gYWRkIFdBUk5fT04oIWludGVsX2lycXNfZW5hYmxl ZCkgaW4gaXJxIGluaXQgY29kZQoJLSByZW1vdmUgdW5uZWNlc3NhcnkgdHJhY2UgcG9pbnQKCS0g cmVtb3ZlIHVubmVjZXNzYXJ5IEJVR19PTgoKdjM6CnRha2UgVmlsbGUncyBjb21tZW50cyBhbmQg VkVEIFBSSU1FIHN1cHBvcnQKCS0gYWRkIEhBU19WRUQoKSBjaGVjawoJLSBhZGQgdmVkIHN0cnVj dCB0byBtYWtlIGNvZGUgbmVhdAoJLSBubyBuZWVkIHRvIGNoZWNrIHBsYXRmb3JtIGluIHZsdl9p cnFfaGFuZGxlcgoJLSBpOTE1X3JlZy5oIHVwZGF0ZQoJLSBubyBuZWVkIHRvIGttYWxsb2MgZm9y IHNtYWxsIGFtb3VudCBvZiByZXNvdXJjZQoJLSByZW1vdmUgdW5uZWNlc3NhcnkgUkVHIHJlc291 cmNlCgktIGZvbGxvdyB2bHZfZGlzcGxheV9pcnFzX2luc3RhbGwoKSB0byBpbXBsZW1lbnQgVkVE IG1hc2svdW5tYXNrCgktIHdvcmthcm91bmQgbm9tbXVfbWFwX3NnIGlzc3VlIGJ5IHNldCBkbWFf bWFzayB0byBzdXBwb3J0IFZFRCBQUklNRS4KClNpZ25lZC1vZmYtYnk6IFlhbyBDaGVuZyA8eWFv LmNoZW5nQGludGVsLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgIHwg ICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgfCAgIDMgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYyB8ICAxMSArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCB8ICAxMiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyB8ICAgMiAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdmVkLmMgfCAyNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmVkLmMKCmRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRt cGwKaW5kZXggOWQ5OTc3Mi4uYjJkMTA5ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NC b29rL2RybS50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbApAQCAtMzgz OSw2ICszODM5LDExIEBAIGludCBudW1faW9jdGxzOzwvc3lub3BzaXM+CiAhRmRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMK ICFGZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBpbnRlbF9ydW50aW1lX3BtX2VuYWJs ZV9pbnRlcnJ1cHRzCiAgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0 bGU+VkVEIHZpZGVvIGNvcmUgaW50ZWdyYXRpb248L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZlZC5jIFZFRCB2aWRlbyBjb3JlIGludGVncmF0aW9uCishSWRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdmVkLmMKKyAgICAgIDwvc2VjdDI+CiAgICAgPC9zZWN0MT4KICAgICA8 c2VjdDE+CiAgICAgICA8dGl0bGU+RGlzcGxheSBIYXJkd2FyZSBIYW5kbGluZzwvdGl0bGU+CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCmluZGV4IDg5MWU1ODQuLmUyZjI3NzYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCkBAIC04Myw2ICs4Myw5IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAogaTkxNS15ICs9 IGk5MTVfZG1hLm8gXAogCSAgaTkxNV91bXMubwogCisjIFZFRCBmb3IgVkxWCitpOTE1LXkgKz0g aTkxNV92ZWQubworCiBvYmotJChDT05GSUdfRFJNX0k5MTUpICArPSBpOTE1Lm8KIAogQ0ZMQUdT X2k5MTVfdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmlu ZGV4IDlhNzM1MzMuLmZiZjIxNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtMTc5MSw2 ICsxNzkxLDEzIEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJaWYgKElTX0dFTjUoZGV2KSkKIAkJaW50ZWxfZ3B1X2lw c19pbml0KGRldl9wcml2KTsKIAorCWlmIChIQVNfVkVEKGRldikpIHsKKwkJcmV0ID0gdmx2X3Nl dHVwX3ZlZChkZXYpOworCQlpZiAocmV0IDwgMCkgeworCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g c2V0dXAgVkVEIGJyaWRnZTogJWRcbiIsIHJldCk7CisJCX0KKwl9CisKIAlpbnRlbF9ydW50aW1l X3BtX2VuYWJsZShkZXZfcHJpdik7CiAKIAlyZXR1cm4gMDsKQEAgLTE4MzMsNiArMTg0MCwxMCBA QCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcmV0 OwogCisJaWYgKEhBU19WRUQoZGV2KSkgeworCQl2bHZfdGVhcmRvd25fdmVkKGRldik7CisJfQor CiAJcmV0ID0gaTkxNV9nZW1fc3VzcGVuZChkZXYpOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gaWRsZSBoYXJkd2FyZTogJWRcbiIsIHJldCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCBmODMwNTk2Li42Y2ZhYmFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTE3NjIsNiArMTc2MiwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAl1aW50MzJf dCBiaW9zX3ZnYWNudHI7CiAKKwkvKiBuZWNlc3NhcnkgcmVzb3VyY2Ugc2hhcmluZyB3aXRoIHZl ZCBkcml2ZXIuICovCisJc3RydWN0IHsKKwkJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdGRl djsKKwkJaW50CWlycTsKKwl9IHZlZDsKKwogCS8qIE9sZCBkcmkxIHN1cHBvcnQgaW5mcmFzdHJ1 Y3R1cmUsIGJld2FyZSB0aGUgZHJhZ29ucyB5YSBmb29scyBlbnRlcmluZwogCSAqIGhlcmUhICov CiAJc3RydWN0IGk5MTVfZHJpMV9zdGF0ZSBkcmkxOwpAQCAtMjI1Nyw2ICsyMjYzLDcgQEAgc3Ry dWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAJCQkJIElTX0JST0FEV0VMTChkZXYpIHx8IElTX1ZB TExFWVZJRVcoZGV2KSkKICNkZWZpbmUgSEFTX1JDNihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNikKICNkZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID09 IDYgfHwgSVNfSVZZQlJJREdFKGRldikpCisjZGVmaW5lIEhBU19WRUQoZGV2KQkJKElOVEVMX0lO Rk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU43KGRldikpCiAKICNkZWZpbmUgSU5URUxf UENIX0RFVklDRV9JRF9NQVNLCQkweGZmMDAKICNkZWZpbmUgSU5URUxfUENIX0lCWF9ERVZJQ0Vf SURfVFlQRQkJMHgzYjAwCkBAIC0yODUxLDYgKzI4NTgsMTEgQEAgdm9pZCBpOTE1X3Jlc3RvcmVf ZGlzcGxheV9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGk5MTVfc2V0dXBfc3lz ZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldl9wcml2KTsKIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNm cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2X3ByaXYpOwogCisvKiBpOTE1X3ZlZC5jICovCitpbnQg dmx2X3NldHVwX3ZlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgdmx2X3RlYXJkb3du X3ZlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgdmx2X3ZlZF9pcnFfaGFuZGxlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKwogLyogaW50ZWxfaTJjLmMgKi8KIGV4dGVybiBpbnQg aW50ZWxfc2V0dXBfZ21idXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBp bnRlbF90ZWFyZG93bl9nbWJ1cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCmluZGV4IDVmZmYyODcuLmEzMzk0ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YwpAQCAtMTg2NSw2ICsxODY1LDggQEAgc3RhdGljIGlycXJldHVybl90IHZhbGxleXZpZXdfaXJx X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQkJc25iX2d0X2lycV9oYW5kbGVyKGRldiwg ZGV2X3ByaXYsIGd0X2lpcik7CiAJCWlmIChwbV9paXIpCiAJCQlnZW42X3Jwc19pcnFfaGFuZGxl cihkZXZfcHJpdiwgcG1faWlyKTsKKwkJaWYgKGlpciAmIFZMVl9WRURfQkxPQ0tfSU5URVJSVVBU KQorCQkJdmx2X3ZlZF9pcnFfaGFuZGxlcihkZXYpOwogCQkvKiBDYWxsIHJlZ2FyZGxlc3MsIGFz IHNvbWUgc3RhdHVzIGJpdHMgbWlnaHQgbm90IGJlCiAJCSAqIHNpZ25hbGxlZCBpbiBpaXIgKi8K IAkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihkZXYsIGlpcik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAppbmRleCBkNDNmYTBlLi4xYTQ2ZmU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKQEAgLTEyODQsNiArMTI4NCw5IEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7CiAjZGVmaW5l IFZMVl9ESVNQTEFZX0JBU0UgMHgxODAwMDAKICNkZWZpbmUgVkxWX01JUElfQkFTRSBWTFZfRElT UExBWV9CQVNFCiAKKyNkZWZpbmUgVkxWX1ZFRF9CQVNFIDB4MTcwMDAwCisjZGVmaW5lIFZMVl9W RURfU0laRSAweDAxMDAwMAorCiAjZGVmaW5lIFZMVl9HVV9DVEwwCShWTFZfRElTUExBWV9CQVNF ICsgMHgyMDMwKQogI2RlZmluZSBWTFZfR1VfQ1RMMQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4MjAz NCkKICNkZWZpbmUgU0NQRDAJCTB4MDIwOWMgLyogOTE1KyBvbmx5ICovCkBAIC0xNDc3LDYgKzE0 ODAsNyBAQCBlbnVtIHB1bml0X3Bvd2VyX3dlbGwgewogI2RlZmluZSBJTEtfQlNEX1VTRVJfSU5U RVJSVVBUCQkJCSgxPDw1KQogCiAjZGVmaW5lIEk5MTVfUE1fSU5URVJSVVBUCQkJCSgxPDwzMSkK KyNkZWZpbmUgVkxWX1ZFRF9CTE9DS19JTlRFUlJVUFQJCQkoMTw8MjMpCiAjZGVmaW5lIEk5MTVf SVNQX0lOVEVSUlVQVAkJCQkoMTw8MjIpCiAjZGVmaW5lIEk5MTVfTFBFX1BJUEVfQl9JTlRFUlJV UFQJCQkoMTw8MjEpCiAjZGVmaW5lIEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQJCQkoMTw8MjAp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZlZC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92ZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45ODJlNjllCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 ZWQuYwpAQCAtMCwwICsxLDI1NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqIEF1dGhvcnM6CisgKiAgICBZYW8gQ2hlbmcgPHlhby5jaGVuZ0BpbnRlbC5jb20+Cisg KgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCisvKioKKyAqIERPQzogVkVEIHZpZGVv IGNvcmUgaW50ZWdyYXRpb24KKyAqCisgKiBNb3RpdmF0aW9uOgorICogU29tZSBwbGF0Zm9ybXMg KGUuZy4gdmFsbGV5dmlldykgaW50ZWdyYXRlcyBhIFZFRCBpbnNpZGUgR1BVIHRvIGV4dGVuZCB0 aGUKKyAqIHZpZGVvIGRlY29kaW5nIGNhcGFiaWxpdHkuCisgKiBUaGUgVkVEIGlzIGRyaXZlbiBi eSB0aGUgc3RhbmRhbG9uZSBkcm0gZHJpdmVyICJpcHZyIiB3aGljaCBjb3ZlcnMgUG93ZXJWUgor ICogVlBVcy4gU2luY2UgdGhlIFBvd2VyVlIgVlBVcyBhcmUgYWxzbyBpbnRlZ3JhdGVkIGJ5IG5v bi1pOTE1IHBsYXRmb3JtcyBzdWNoCisgKiBhcyBHTUE1MDAsIHdlJ2QgbGlrZSB0byBrZWVwIGlw dnIgZHJpdmVyIGFuZCBpOTE1IGRyaXZlciBzZXBhcmF0ZWQgYW5kCisgKiBpbmRlcGVuZGVudCB0 byBlYWNoIG90aGVyLiBUbyBhY2hpZXZlIHRoaXMgd2UgZG8gdGhlIG1pbmltdW0gd29yayBpbiBp OTE1CisgKiB0byBzZXR1cCBhIGJyaWRnZSBiZXR3ZWVuIGlwdnIgYW5kIGk5MTU6CisgKiAxLiBD cmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdG8gc2hhcmUgTU1JTy9JUlEgcmVzb3VyY2VzCisgKiAy LiBNYWtlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgY2hpbGQgb2YgaTkxNSBkZXZpY2UgZm9yIHJ1bnRp bWUgUE0uCisgKiAzLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9yd2FyZCB0aGUgVkVEIGlycXMuCisg KiBpcHZyIGRyaXZlciBwcm9iZXMgdGhlIFZFRCBkZXZpY2UgYW5kIGNyZWF0ZXMgYSBuZXcgZHJp IGNhcmQgb24gaW5zdGFsbC4KKyAqCisgKiBUaHJlYXRzOgorICogRHVlIHRvIHRoZSByZXN0cmlj dGlvbiBpbiBMaW51eCBwbGF0Zm9ybSBkZXZpY2UgbW9kZWwsIHVzZXIgbmVlZCBtYW51YWxseQor ICogdW5pbnN0YWxsIGlwdnIgZHJpdmVyIGJlZm9yZSB1bmluc3RhbGxpbmcgaTkxNSBtb2R1bGUs IG90aGVyd2lzZSBoZSBtaWdodAorICogcnVuIGludG8gdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFm dGVyIGk5MTUgcmVtb3ZlcyB0aGUgcGxhdGZvcm0gZGV2aWNlLgorICoKKyAqIEltcGxlbWVudGF0 aW9uOgorICogVGhlIE1NSU8vUkVHIHBsYXRmb3JtIHJlc291cmNlcyBhcmUgY3JlYXRlZCBhY2Nv cmRpbmcgdG8gdGhlIHJlZ2lzdGVycworICogc3BlY2lmaWNhdGlvbi4KKyAqIFdoZW4gZm9yd2Fy ZGluZyBWRUQgaXJxcywgdGhlIGZsb3cgY29udHJvbCBoYW5kbGVyIHNlbGVjdGlvbiBkZXBlbmRz IG9uIHRoZQorICogcGxhdGZvcm0sIGZvciBleGFtcGxlIG9uIHZhbGxleXZpZXcgaGFuZGxlX3Np bXBsZV9pcnEgaXMgZW5vdWdoLgorICoKKyAqLworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rl dmljZSogdmx2X3ZlZF9wbGF0ZGV2X2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorewor CWludCByZXQ7CisJc3RydWN0IHJlc291cmNlIHJzY1syXSA9IHsgezB9LCB7MH0gfTsKKwlzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2OworCXU2NCAqZG1hX21hc2sgPSBOVUxMOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwlp ZiAoZGV2X3ByaXYtPnZlZC5pcnEgPCAwKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwor CXBsYXRkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoImlwdnItdmVkLXZsdiIsIC0xKTsKKwlp ZiAoIXBsYXRkZXYpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWxsb2NhdGUgVkVEIHBsYXRmb3JtIGRldmljZVxuIik7CisJCWdvdG8gZXJyOworCX0KKworCS8q IHRvIHdvcmstYXJvdW5kIGNoZWNrX2FkZHIgaW4gbm9tbXVfbWFwX3NnKCkgKi8KKwlkbWFfbWFz ayA9IGttYWxsb2Moc2l6ZW9mKCpwbGF0ZGV2LT5kZXYuZG1hX21hc2spLCBHRlBfS0VSTkVMKTsK KwlpZiAoIWRtYV9tYXNrKSB7CisJCXJldCA9IC1FTk9NRU07CisJCURSTV9FUlJPUigiRmFpbGVk IHRvIGFsbG9jYXRlIGRtYV9tYXNrXG4iKTsKKwkJZ290byBlcnJfcHV0X2RldjsKKwl9CisJKmRt YV9tYXNrID0gRE1BX0JJVF9NQVNLKDMxKTsKKwlwbGF0ZGV2LT5kZXYuZG1hX21hc2sgPSBkbWFf bWFzazsKKwlwbGF0ZGV2LT5kZXYuY29oZXJlbnRfZG1hX21hc2sgPSAqZG1hX21hc2s7CisKKwly c2NbMF0uc3RhcnQgICAgPSByc2NbMF0uZW5kID0gZGV2X3ByaXYtPnZlZC5pcnE7CisJcnNjWzBd LmZsYWdzICAgID0gSU9SRVNPVVJDRV9JUlE7CisJcnNjWzBdLm5hbWUgICAgID0gImlwdnItdmVk LXZsdi1pcnEiOworCisJcnNjWzFdLnN0YXJ0ICAgID0gcGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+ cGRldiwgMCkgKyBWTFZfVkVEX0JBU0U7CisJcnNjWzFdLmVuZCAgICAgID0gcGNpX3Jlc291cmNl X3N0YXJ0KGRldi0+cGRldiwgMCkgKyBWTFZfVkVEX0JBU0UgKyBWTFZfVkVEX1NJWkU7CisJcnNj WzFdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9NRU07CisJcnNjWzFdLm5hbWUgICAgID0gImlwdnIt dmVkLXZsdi1tbWlvIjsKKworCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHBs YXRkZXYsIHJzYywgMik7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQg cmVzb3VyY2UgZm9yIFZFRCBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4iLCByZXQpOworCQlnb3RvIGVy cl9wdXRfZGV2OworCX0KKworCXBsYXRkZXYtPmRldi5wYXJlbnQgPSBkZXYtPmRldjsgLyogZm9y IFZFRCBkcml2ZXIncyBydW50aW1lLVBNICovCisJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChw bGF0ZGV2KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCBWRUQgcGxh dGZvcm0gZGV2aWNlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfcHV0X2RldjsKKwl9CisKKwly ZXR1cm4gcGxhdGRldjsKK2Vycl9wdXRfZGV2OgorCXBsYXRmb3JtX2RldmljZV9wdXQocGxhdGRl dik7CitlcnI6CisJaWYgKGRtYV9tYXNrKQorCQlrZnJlZShkbWFfbWFzayk7CisJcmV0dXJuIEVS Ul9QVFIocmV0KTsKK30KKworc3RhdGljIHZvaWQgdmx2X3ZlZF9wbGF0ZGV2X2Rlc3Ryb3koc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOworCWlmIChkZXZfcHJpdi0+dmVkLnBsYXRkZXYpIHsKKwkJ a2ZyZWUoZGV2X3ByaXYtPnZlZC5wbGF0ZGV2LT5kZXYuZG1hX21hc2spOworCQlwbGF0Zm9ybV9k ZXZpY2VfdW5yZWdpc3RlcihkZXZfcHJpdi0+dmVkLnBsYXRkZXYpOworCX0KK30KKworc3RhdGlj IHZvaWQgdmx2X3ZlZF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZCkKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZC0+Y2hpcF9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKSBkZXYtPmRldl9wcml2YXRl OworCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2 LT5pcnFfbG9jaywgaXJxZmxhZ3MpOworCisJZGV2X3ByaXYtPmlycV9tYXNrICY9IH5WTFZfVkVE X0JMT0NLX0lOVEVSUlVQVDsKKwlJOTE1X1dSSVRFKFZMVl9JSVIsIFZMVl9WRURfQkxPQ0tfSU5U RVJSVVBUKTsKKwlJOTE1X1dSSVRFKFZMVl9JSVIsIFZMVl9WRURfQkxPQ0tfSU5URVJSVVBUKTsK KwlJOTE1X1dSSVRFKFZMVl9JTVIsIGRldl9wcml2LT5pcnFfbWFzayk7CisJSTkxNV9XUklURShW TFZfSUVSLCB+ZGV2X3ByaXYtPmlycV9tYXNrKTsKKwlQT1NUSU5HX1JFQUQoVkxWX0lFUik7CisK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsK K30KKworc3RhdGljIHZvaWQgdmx2X3ZlZF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCit7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGQtPmNoaXBfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKikgZGV2LT5k ZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKKworCWRldl9wcml2LT5pcnFfbWFzayB8 PSBWTFZfVkVEX0JMT0NLX0lOVEVSUlVQVDsKKwlJOTE1X1dSSVRFKFZMVl9JRVIsIH5kZXZfcHJp di0+aXJxX21hc2spOworCUk5MTVfV1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsK KwlJOTE1X1dSSVRFKFZMVl9JSVIsIFZMVl9WRURfQkxPQ0tfSU5URVJSVVBUKTsKKwlJOTE1X1dS SVRFKFZMVl9JSVIsIFZMVl9WRURfQkxPQ0tfSU5URVJSVVBUKTsKKwlQT1NUSU5HX1JFQUQoVkxW X0lJUik7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGly cWZsYWdzKTsKK30KKworc3RhdGljIHN0cnVjdCBpcnFfY2hpcCB2bHZfdmVkX2lycWNoaXAgPSB7 CisJLm5hbWUgPSAiaXB2cl92ZWRfaXJxY2hpcCIsCisJLmlycV9tYXNrID0gdmx2X3ZlZF9pcnFf bWFzaywKKwkuaXJxX3VubWFzayA9IHZsdl92ZWRfaXJxX3VubWFzaywKK307CisKK3N0YXRpYyBp bnQgdmx2X3ZlZF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgaXJxKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqKSBkZXYtPmRldl9wcml2YXRlOworCVdBUk5fT04oIWludGVsX2lycXNfZW5hYmxlZChk ZXZfcHJpdikpOworCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwKKwkJJnZsdl92 ZWRfaXJxY2hpcCwKKwkJaGFuZGxlX3NpbXBsZV9pcnEsCisJCSJpcHZyX3ZlZF92bHZfaXJxX2hh bmRsZXIiKTsKKwlyZXR1cm4gaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkZXYpOworfQorCisvKioK KyAqIHZsdl92ZWRfaXJxX2hhbmRsZXIoKSAtIGZvcndhcmRzIHRoZSBWRUQgaXJxCisgKiBAZGV2 OiB0aGUgaTkxNSBkcm0gZGV2aWNlCisgKgorICogdGhlIFZFRCBpcnEgaXMgZm9yd2FyZGVkIHRv IHRoZSBpcnEgaGFuZGxlciByZWdpc3RlcmVkIGJ5IFZFRCBkcml2ZXIuCisgKi8KK3ZvaWQgdmx2 X3ZlZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWludCByZXQ7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlp ZiAoZGV2X3ByaXYtPnZlZC5pcnEgPCAwICYmIHByaW50a19yYXRlbGltaXQoKSkgeworCQlEUk1f RVJST1IoImludmFsaWQgdmVkIGlycSBudW1iZXI6ICVkXG4iLCBkZXZfcHJpdi0+dmVkLmlycSk7 CisJCXJldHVybjsKKwl9CisJcmV0ID0gZ2VuZXJpY19oYW5kbGVfaXJxKGRldl9wcml2LT52ZWQu aXJxKTsKKwlpZiAocmV0ICYmIHByaW50a19yYXRlbGltaXQoKSkgeworCQlEUk1fRVJST1IoImVy cm9yIGhhbmRsaW5nIHZsdiB2ZWQgaXJxOiAlZFxuIiwgcmV0KTsKKwl9Cit9CisKKy8qKgorICog dmx2X3NldHVwX3ZlZCgpIC0gc2V0dXAgdGhlIGJyaWRnZSBiZXR3ZWVuIFZFRCBkcml2ZXIgYW5k IGk5MTUKKyAqIEBkZXY6IHRoZSBpOTE1IGRybSBkZXZpY2UKKyAqCisgKiBzZXQgdXAgdGhlIG1p bmltdW0gcmVxdWlyZWQgcmVzb3VyY2VzIGZvciB0aGUgYnJpZGdlOiBpcnEgY2hpcCwgcGxhdGZv cm0KKyAqIHJlc291cmNlIGFuZCBwbGF0Zm9ybSBkZXZpY2UuIGk5MTUgZGV2aWNlIGlzIHNldCBh cyBwYXJlbnQgb2YgdGhlIG5ldworICogcGxhdGZvcm0gZGV2aWNlLgorICoKKyAqIFJldHVybjog MCBpZiBzdWNjZXNzZnVsLiBub24temVybyBpZiBhbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uIGZh aWxzCisgKi8KK2ludCB2bHZfc2V0dXBfdmVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ aW50IHJldDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCisJZGV2X3ByaXYtPnZlZC5pcnEgPSBpcnFfYWxsb2NfZGVzY3MoLTEsIDAsIDEs IDApOworCWlmIChkZXZfcHJpdi0+dmVkLmlycSA8IDApIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgSVJRIGRlc2M6ICVkXG4iLCBkZXZfcHJpdi0+dmVkLmlycSk7CisJCXJldCA9 IGRldl9wcml2LT52ZWQuaXJxOworCQlnb3RvIGVycjsKKwl9CisKKwlyZXQgPSB2bHZfdmVkX2ly cV9pbml0KGRldiwgZGV2X3ByaXYtPnZlZC5pcnEpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBpcnFjaGlwIGZvciB2bHYtdmVkOiAlZFxuIiwgcmV0KTsK KwkJZ290byBlcnJfZnJlZV9pcnE7CisJfQorCisJZGV2X3ByaXYtPnZlZC5wbGF0ZGV2ID0gdmx2 X3ZlZF9wbGF0ZGV2X2NyZWF0ZShkZXYpOworCWlmIChJU19FUlIoZGV2X3ByaXYtPnZlZC5wbGF0 ZGV2KSkgeworCQlyZXQgPSBQVFJfRVJSKGRldl9wcml2LT52ZWQucGxhdGRldik7CisJCURSTV9F UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwbGF0Zm9ybSBkZXZpY2UgZm9yIHZsdi12ZWQ6ICVkXG4i LCByZXQpOworCQlnb3RvIGVycl9mcmVlX2lycTsKKwl9CisKKwlyZXR1cm4gMDsKK2Vycl9mcmVl X2lycToKKwlpcnFfZnJlZV9kZXNjKGRldl9wcml2LT52ZWQuaXJxKTsKK2VycjoKKwlkZXZfcHJp di0+dmVkLmlycSA9IC0xOworCWRldl9wcml2LT52ZWQucGxhdGRldiA9IE5VTEw7CisJcmV0dXJu IHJldDsKK30KKworLyoqCisgKiB2bHZfdGVhcmRvd25fdmVkKCkgLSBkZXN0cm95IHRoZSBicmlk Z2UgYmV0d2VlbiBWRUQgZHJpdmVyIGFuZCBpOTE1CisgKiBAZGV2OiB0aGUgaTkxNSBkcm0gZGV2 aWNlCisgKgorICogcmVsZWFzZSBhbGwgdGhlIHJlc291cmNlcyBmb3IgVkVEIDwtPiBpOTE1IGJy aWRnZS4KKyAqLwordm9pZCB2bHZfdGVhcmRvd25fdmVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwl2bHZfdmVkX3BsYXRkZXZfZGVzdHJveShkZXYpOworCWlmIChkZXZfcHJpdi0+dmVkLmly cSA+PSAwKQorCQlpcnFfZnJlZV9kZXNjKGRldl9wcml2LT52ZWQuaXJxKTsKK30KLS0gCjIuMS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=