From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v2] drm/i915 : Added Programming of the MOCS Date: Fri, 5 Jun 2015 15:43:36 +0100 Message-ID: <1433515416-12946-1-git-send-email-peter.antoine@intel.com> References: <1433442442-512-1-git-send-email-peter.antoine@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 157407A167 for ; Fri, 5 Jun 2015 07:43:48 -0700 (PDT) In-Reply-To: <1433442442-512-1-git-send-email-peter.antoine@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 VGhpcyBjaGFuZ2UgYWRkcyB0aGUgcHJvZ3JhbW1pbmcgb2YgdGhlIE1PQ1MgcmVnaXN0ZXJzIHRv IHRoZSBnZW4gOSsKcGxhdGZvcm1zLiBUaGlzIGNoYW5nZSBzZXQgcHJvZ3JhbXMgdGhlIE1PQ1Mg cmVnaXN0ZXIgdmFsdWVzIHRvIGEgc2V0Cm9mIHZhbHVlcyB0aGF0IGFyZSBkZWZpbmVkIHRvIGJl IG9wdGltYWwuCgpJdCBjcmVhdGVzIGEgZml4ZWQgcmVnaXN0ZXIgc2V0IHRoYXQgaXMgcHJvZ3Jh bW1lZCBhY3Jvc3MgdGhlIGRpZmZlcmVudAplbmdpbmVzIHNvIHRoYXQgYWxsIGVuZ2luZXMgaGF2 ZSB0aGUgc2FtZSB0YWJsZS4gVGhpcyBpcyBkb25lIGFzIHRoZQptYWluIFJDUyBjb250ZXh0IG9u bHkgaG9sZHMgdGhlIHJlZ2lzdGVycyBmb3IgaXRzZWxmIGFuZCB0aGUgc2hhcmVkCkwzIHZhbHVl cy4gQnkgdHJ5aW5nIHRvIGtlZXAgdGhlIHJlZ2lzdGVycyBjb25zaXN0ZW50IGFjcm9zcyB0aGUK ZGlmZmVyZW50IGVuZ2luZXMgaXQgc2hvdWxkIG1ha2UgdGhlIHByb2dyYW1taW5nIGZvciB0aGUg cmVnaXN0ZXJzCmNvbnNpc3RlbnQuCgp2MjogJ3N0YXRpYyBjb25zdCcgZm9yIHByaXZhdGUgZGF0 YSBzdHJ1Y3R1cmVzIGFuZCBzdHlsZSBjaGFuZ2VzLgoKU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50 b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAg fCAgIDkgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICB8ICA2OCArKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIHwgMjQyICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9t b2NzLmggfCAxMDEgKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA0MjIgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21vY3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX21vY3MuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggYjdkZGY0OC4uY2Q3Yjkx MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTM2LDcgKzM2LDggQEAgaTkxNS15ICs9IGk5MTVf Y21kX3BhcnNlci5vIFwKIAkgIGk5MTVfdHJhY2VfcG9pbnRzLm8gXAogCSAgaW50ZWxfbHJjLm8g XAogCSAgaW50ZWxfcmluZ2J1ZmZlci5vIFwKLQkgIGludGVsX3VuY29yZS5vCisJICBpbnRlbF91 bmNvcmUubyBcCisJICBpbnRlbF9tb2NzLm8KIAogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVy IHN0YXRlCiBpOTE1LXkgKz0gaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5vIFwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCmluZGV4IDcyMTMyMjQuLjNhNDM1YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aApAQCAtNzgyOSw0ICs3ODI5LDEzIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2Rl ZmluZSBfUEFMRVRURV9BIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zmc2V0ICsgMHhh MDAwKQogI2RlZmluZSBfUEFMRVRURV9CIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zm c2V0ICsgMHhhODAwKQogCisvKiBNT0NTIChNZW1vcnkgT2JqZWN0IENvbnRyb2wgU3RhdGUpIHJl Z2lzdGVycyAqLworI2RlZmluZSBHRU45X0xOQ0ZDTU9DUzAJCSgweEIwMjApCS8qIEwzIENhY2hl IENvbnRyb2wgYmFzZSAqLworCisjZGVmaW5lIEdFTjlfR0ZYX01PQ1NfMAkJKDB4YzgwMCkJLyog R3JhcGhpY3MgTU9DUyBiYXNlIHJlZ2lzdGVyKi8KKyNkZWZpbmUgR0VOOV9NRlgwX01PQ1NfMAko MHhjOTAwKQkvKiBNZWRpYSAwIE1PQ1MgYmFzZSByZWdpc3RlciovCisjZGVmaW5lIEdFTjlfTUZY MV9NT0NTXzAJKDB4Y0EwMCkJLyogTWVkaWEgMSBNT0NTIGJhc2UgcmVnaXN0ZXIqLworI2RlZmlu ZSBHRU45X1ZFQk9YX01PQ1NfMAkoMHhjQjAwKQkvKiBWaWRlbyBNT0NTIGJhc2UgcmVnaXN0ZXIq LworI2RlZmluZSBHRU45X0JMVF9NT0NTXzAJCSgweGNjMDApCS8qIEJsaXR0ZXIgTU9DUyBiYXNl IHJlZ2lzdGVyKi8KKwogI2VuZGlmIC8qIF9JOTE1X1JFR19IXyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwppbmRleCA5ZjU0ODVkLi5jODc1NTY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwpAQCAtMTM1LDYgKzEzNSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxk cm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX21v Y3MuaCIKIAogI2RlZmluZSBHRU45X0xSX0NPTlRFWFRfUkVOREVSX1NJWkUgKDIyICogUEFHRV9T SVpFKQogI2RlZmluZSBHRU44X0xSX0NPTlRFWFRfUkVOREVSX1NJWkUgKDIwICogUEFHRV9TSVpF KQpAQCAtMTM3MCw2ICsxMzcxLDY3IEBAIG91dDoKIAlyZXR1cm4gcmV0OwogfQogCisvKgorICog aTkxNV9nZW1fcHJvZ3JhbV9tb2NzKCkgLSBwcm9ncmFtIHRoZSBNT0NTIHJlZ2lzdGVyLgorICoK KyAqIHJpbmc6CVRoZSByaW5nIHRoYXQgdGhlIHByb2dyYW1taW5nIGJhdGNoIHdpbGwgYmUgcnVu IGluLgorICogY3R4OgkJVGhlIGludGVsX2NvbnRleHQgdG8gYmUgdXNlZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoIGJ1ZmZlciB3aXRoIHRoZSB2YWx1ZXMgcmVxdWly ZWQgZm9yCisgKiBwcm9ncmFtbWluZyB0aGUgTU9DUyByZWdpc3RlciB2YWx1ZXMgZm9yIGFsbCB0 aGUgY3VycmVubHkgc3VwcG9ydGVkCisgKiByaW5ncy4KKyAqCisgKiBSZXR1cm46IDAgb24gc3Vj Y2Vzcywgb3RoZXJ3aXNlIHRoZSBlcnJvciBzdGF0dXMuCisgKi8KK3N0YXRpYyBpbnQgaTkxNV9n ZW1fcHJvZ3JhbV9tb2NzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjdHgpCit7CisJaW50IHJldCA9IDA7CisKKwlzdHJ1Y3QgZHJtX2k5 MTVfbW9jc190YWJsZSB0OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0u cmluZ2J1ZjsKKworCWlmIChnZXRfbW9jc19zZXR0aW5ncyhkZXYsICZ0KSkgeworCQl1MzIgdGFi bGVfc2l6ZTsKKworCQkvKgorCQkgKiBPSy4gRm9yIGVhY2ggc3VwcG9ydGVkIHJpbmc6CisJCSAq ICB0YWJsZV9zaXplICogMiBkd29yZHMgZm9yIGVhY2ggY29udHJvbF92YWx1ZQorCQkgKiAgcGx1 cyB0YWJsZS8yIGR3b3JkcyBmb3IgbDNjYyB2YWx1ZXMuCisJCSAqCisJCSAqICBQbHVzIDEgZm9y IHRoZSBsb2FkIGNvbW1hbmQgYW5kIDEgZm9yIHRoZSBOT09QIHBlciByaW5nCisJCSAqICBhbmQg dGhlIGwzY2MgcHJvZ3JhbW1pbmcuCisJCSAqLworCQl0YWJsZV9zaXplID0gR0VOOV9OVU1fTU9D U19SSU5HUyAqICgoMiAqIHQuc2l6ZSkgKyAyKSArCisJCQkJdC5zaXplICsgMjsKKwkJcmV0ID0g aW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJpbmdidWYsIGN0eCwgdGFibGVfc2l6ZSk7CisJCWlm IChyZXQpIHsKKwkJCURSTV9FUlJPUigiaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luIGZhaWxlZCAl ZFxuIiwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQkvKiBwcm9ncmFtIHRoZSBjb250 cm9sIHJlZ2lzdGVycyAqLworCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5nYnVmLCAmdCwg R0VOOV9HRlhfTU9DU18wKTsKKwkJZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUocmluZ2J1ZiwgJnQs IEdFTjlfTUZYMF9NT0NTXzApOworCQllbWl0X21vY3NfY29udHJvbF90YWJsZShyaW5nYnVmLCAm dCwgR0VOOV9NRlgxX01PQ1NfMCk7CisJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdidWYs ICZ0LCBHRU45X1ZFQk9YX01PQ1NfMCk7CisJCWVtaXRfbW9jc19jb250cm9sX3RhYmxlKHJpbmdi dWYsICZ0LCBHRU45X0JMVF9NT0NTXzApOworCisJCS8qIG5vdyBwcm9ncmFtIHRoZSBsM2NjIHJl Z2lzdGVycyAqLworCQllbWl0X21vY3NfbDNjY190YWJsZShyaW5nYnVmLCAmdCk7CisKKwkJaW50 ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CisKKwkJRFJNX0lORk8oIk1PQ1M6IFRh YmxlIHNldCBpbiBDb250ZXh0XG4iKTsKKwl9IGVsc2UgeworCQlEUk1fSU5GTygiTU9DUzogVGFi bGUgTm90IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybVxuIik7CisJfQorCisJcmV0dXJuIHJldDsKK30K KworCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAogCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKIHsKQEAgLTEz NzksNiArMTQ0MSwxMiBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwkvKgor CSAqIEZhaWxpbmcgdG8gcHJvZ3JhbSB0aGUgTU9DUyBpcyBub24tZmF0YWwuVGhlIHN5c3RlbSB3 aWxsIG5vdAorCSAqIHJ1biBhdCBwZWFrIHBlcmZvcm1hbmNlLiBTbyBnZW5lcmF0ZSBhIHdhcm5p bmcgYW5kIGNhcnJ5IG9uLgorCSAqLworCVdBUk5fT04oaTkxNV9nZW1fcHJvZ3JhbV9tb2NzKHJp bmcsIGN0eCkgIT0gMCk7CisKIAlyZXR1cm4gaW50ZWxfbHJfY29udGV4dF9yZW5kZXJfc3RhdGVf aW5pdChyaW5nLCBjdHgpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdjNzk2NwotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwpAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAq IENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIFBldGVyIEFu dG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlICJpbnRlbF9t b2NzLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCisjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZl ci5oIgorCisvKgorICogTU9DUyB0YWJsZXMKKyAqCisgKiBUaGVzZSBhcmUgdGhlIE1PQ1MgdGFi bGVzIHRoYXQgYXJlIHByb2dyYW1tZWQgYWNyb3NzIGFsbCB0aGUgcmluZ3MuCisgKiBUaGUgY29u dHJvbCB2YWx1ZSBpcyBwcm9ncmFtbWVkIHRvIGFsbCB0aGUgcmluZ3MgdGhhdCBzdXBwb3J0IHRo ZQorICogTU9DUyByZWdpc3RlcnMuIFdoaWxlIHRoZSBsM2NjX3ZhbHVlcyBhcmUgb25seSBwcm9n cmFtbWVkIHRvIHRoZQorICogTE5DRkNNT0NTMCAtIExOQ0ZDTU9DUzMyIHJlZ2lzdGVycy4KKyAq CisgKiBOT1RFOiBUaGVzZSB0YWJsZXMgTVVTVCBzdGFydCB3aXRoIGJlaW5nIHVuY2FjaGVkIHsw LDB9IGFuZCB0aGUKKyAqICAgICAgIHRoZSBsZW5ndGggTVVTVCBiZSBsZXNzIHRoYW4gNjMgYXMg dGhlIGxhc3QgdHdvIHJlZ2lzdGVycyBhcmUKKyAqICAgICAgIHJlc2VydmVkIGJ5IHRoZSBoYXJk d2FyZS4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IHNreWxh a2VfbW9jc190YWJsZVtdID0geworCSAvKiB7MHgwMDAwMDAwOSwgMHgwMDEwfSAqLworCXsoTU9D U19DQUNIRUFCSUxJVFkoMSkgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgwKSB8CisJ CU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgw KSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NT X0wzX0NBQ0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAzYiwgMHgwMDMwfSAqLworCXso TU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgzKSB8 CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BG TSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBN T0NTX0wzX0NBQ0hFQUJJTElUWSgzKSl9LAorCSAvKiB7MHgwMDAwMDAzOSwgMHgwMDEwfSAqLwor CXsoTU9DU19DQUNIRUFCSUxJVFkoMSkgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgz KSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9D X1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkg fCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAxNywgMHgwMDMwfSAq LworCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8IE1PQ1NfTFJV TSgxKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwg TU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0Mo MCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgzKSl9LAorCSAvKiB7MHgwMDAwMDAxNywgMHgwMDEw fSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8IE1PQ1Nf TFJVTSgxKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDAp IHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19T Q0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAxOSwgMHgw MDEwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFkoMSkgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1P Q1NfTFJVTSgxKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0ND KDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9D U19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAzNywg MHgwMDMwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8 IE1PQ1NfTFJVTSgzKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1Nf U0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwg TU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgzKSl9LAorCSAvKiB7MHgwMDAwMDAz YiwgMHgwMDEwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgy KSB8IE1PQ1NfTFJVTSgzKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1P Q1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDAp IHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgxKSl9LAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX2VudHJ5IGJyb3h0b25fbW9jc190YWJsZVtdID0g eworCSAvKiB7MHgwMDAwMDAwMSwgMHgwMDEwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFkoMSkg fCBNT0NTX1RHVF9DQUNIRSgwKSB8IE1PQ1NfTFJVTSgwKSB8CisJCU1PQ1NfQU9NKDApIHwgTU9D U19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NGKDAp KSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElUWSgx KSl9LAorCSAvKiB7MHgwMDAwNDAwMSwgMHgwMDEwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJVFko MSkgfCBNT0NTX1RHVF9DQUNIRSgwKSB8IE1PQ1NfTFJVTSgwKSB8CisJCU1PQ1NfQU9NKDApIHwg TU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1NfU0NG KDEpKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJTElU WSgxKSl9LAorCSAvKiB7MHgwMDAwNDAzYiwgMHgwMDMwfSAqLworCXsoTU9DU19DQUNIRUFCSUxJ VFkoMykgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgzKSB8CisJCU1PQ1NfQU9NKDAp IHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1PQ1Nf U0NGKDEpKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hFQUJJ TElUWSgzKSl9LAorCSAvKiB7MHgwMDAwNDAxYiwgMHgwMDMwfSAqLworCXsoTU9DU19DQUNIRUFC SUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgxKSB8CisJCU1PQ1NfQU9N KDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJCU1P Q1NfU0NGKDEpKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NBQ0hF QUJJTElUWSgzKSl9LAorCSAvKiB7MHgwMDAwMDAxNywgMHgwMDEwfSAqLworCXsoTU9DU19DQUNI RUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8IE1PQ1NfTFJVTSgxKSB8CisJCU1PQ1Nf QU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8CisJ CU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wzX0NB Q0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAxOSwgMHgwMDEwfSAqLworCXsoTU9DU19D QUNIRUFCSUxJVFkoMSkgfCBNT0NTX1RHVF9DQUNIRSgyKSB8IE1PQ1NfTFJVTSgxKSB8CisJCU1P Q1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgwKSB8 CisJCU1PQ1NfU0NGKDApKSwKKwkJKE1PQ1NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0NTX0wz X0NBQ0hFQUJJTElUWSgxKSl9LAorCSAvKiB7MHgwMDAwMDAzNywgMHgwMDMwfSAqLworCXsoTU9D U19DQUNIRUFCSUxJVFkoMykgfCBNT0NTX1RHVF9DQUNIRSgxKSB8IE1PQ1NfTFJVTSgzKSB8CisJ CU1PQ1NfQU9NKDApIHwgTU9DU19MRUNDX0VTQygwKSB8IE1PQ1NfU0NDKDApIHwgTU9DX1BGTSgw KSB8CisJCU1PQ1NfU0NGKDApKSwKKworCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8IE1P Q1NfTDNfQ0FDSEVBQklMSVRZKDMpKX0sCisJIC8qIHsweDAwMDAwMDNiLCAweDAwMTB9ICovCisJ eyhNT0NTX0NBQ0hFQUJJTElUWSgzKSB8IE1PQ1NfVEdUX0NBQ0hFKDIpIHwgTU9DU19MUlVNKDMp IHwKKwkJTU9DU19BT00oMCkgfCBNT0NTX0xFQ0NfRVNDKDApIHwgTU9DU19TQ0MoMCkgfCBNT0Nf UEZNKDApIHwKKwkJTU9DU19TQ0YoMCkpLAorCQkoTU9DU19FU0MoMCkgfCBNT0NTX1NDQygwKSB8 IE1PQ1NfTDNfQ0FDSEVBQklMSVRZKDEpKX0sCit9OworCisvKioKKyAqIGdldF9tb2NzX3NldHRp bmdzCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgdmFsdWVzIG9mIHRoZSBN T0NTIHRhYmxlIHRoYXQgbmVlZHMgdG8KKyAqIGJlIHByb2dyYW1tZWQgZm9yIHRoZSBwbGF0Zm9y bS4gSXQgd2lsbCByZXR1cm4gdGhlIHZhbHVlcyB0aGF0IG5lZWQKKyAqIHRvIGJlIHByb2dyYW1t ZWQgYW5kIGlmIHRoZXkgbmVlZCB0byBiZSBwcm9ncmFtbWVkLgorICoKKyAqIElmIHRoZSByZXR1 cm4gdmFsdWVzIGlzIGZhbHNlIHRoZW4gdGhlIHJlZ2lzdGVycyBkbyBub3QgbmVlZCBwcm9ncmFt bWluZy4KKyAqLworYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCQkJICAgICAgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlKSB7CisJYm9vbAly ZXN1bHQgPSBmYWxzZTsKKworCWlmIChJU19TS1lMQUtFKGRldikpIHsKKwkJdGFibGUtPnNpemUg ID0gQVJSQVlfU0laRShza3lsYWtlX21vY3NfdGFibGUpOworCQl0YWJsZS0+dGFibGUgPSBza3ls YWtlX21vY3NfdGFibGU7CisJCXJlc3VsdCA9IHRydWU7CisJfSBlbHNlIGlmIChJU19CUk9YVE9O KGRldikpIHsKKwkJdGFibGUtPnNpemUgID0gQVJSQVlfU0laRShicm94dG9uX21vY3NfdGFibGUp OworCQl0YWJsZS0+dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7CisJCXJlc3VsdCA9IHRydWU7 CisJfSBlbHNlIHsKKwkJLyogUGxhdGZvcm0gdGhhdCBzaG91bGQgaGF2ZSBhIE1PQ1MgdGFibGUg ZG9lcyBub3QgKi8KKwkJV0FSTl9PTihJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KTsKKwl9CisK KwlyZXR1cm4gcmVzdWx0OworfQorCisvKioKKyAqIGVtaXRfbW9jc19jb250cm9sX3RhYmxlKCkg LSBlbWl0IHRoZSBtb2NzIGNvbnRyb2wgdGFibGUKKyAqIEByaW5nYnVmOglEUk0gZGV2aWNlLgor ICogQHRhYmxlOglUaGUgdmFsdWVzIHRvIHByb2dyYW0gaW50byB0aGUgY29udHJvbCByZWdzLgor ICogQHJlZ19iYXNlOglUaGUgYmFzZSBmb3IgdGhlIEVuZ2luZSB0aGF0IG5lZWRzIHRvIGJlIHBy b2dyYW1tZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgZW1pdHMgYSBNSV9MT0FEX1JF R0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKKyAqIGdpdmVuIHRhYmxlIHN0YXJ0aW5nIGF0IHRo ZSBnaXZlbiBhZGRyZXNzLgorICoKKyAqIFJldHVybjogTm90aGluZy4KKyAqLwordm9pZCBlbWl0 X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKKwkJ CQkgICAgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlLAorCQkJCSAgICB1MzIgcmVn X2Jhc2UpCit7CisJdW5zaWduZWQgaW50IGluZGV4OworCisJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwKKwkJCU1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklF UykpOworCisJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGFibGUtPnNpemU7IGluZGV4KyspIHsK KwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgcmVnX2Jhc2UgKyAoaW5kZXggKiA0 KSk7CisJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCisJCQkJCXRhYmxlLT50YWJs ZVtpbmRleF0uY29udHJvbF92YWx1ZSk7CisJfQorCisJLyoKKwkgKiBPaywgbm93IHNldCB0aGUg dW51c2VkIGVudHJpZXMgdG8gdW5jYWNoZWQuIFRoZXNlIGVudHJpZXMgYXJlCisJICogb2ZmaWNp YWxseSB1bmRlZmluZWQgYW5kIG5vIGNvbnRhY3QgaXMgZ2l2ZW4gZm9yIHRoZSBjb250ZW50cyBh bmQKKwkgKiBzZXR0aW5ncyBpcyBnaXZlbiBmb3IgdGhlc2UgZW50cmllcy4KKwkgKgorCSAqIEVu dHJ5IDAgaW4gdGhlIHRhYmxlIGlzIHVuY2FjaGVkIC0gc28gd2UgYXJlIGp1c3Qgd3JpdHRlbiB0 aGF0CisJICogdmFsdWUgdG8gYWxsIHRoZSB1c2VkIGVudHJpZXMuCisJICovCisJZm9yICg7IGlu ZGV4IDwgR0VOOV9OVU1fTU9DU19FTlRSSUVTOyBpbmRleCsrKSB7CisJCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNlICsgKGluZGV4ICogNCkpOworCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCB0YWJsZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7CisJ fQorCisJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cit9CisKKy8q KgorICogZW1pdF9tb2NzX2wzY2NfdGFibGUoKSAtIGVtaXQgdGhlIG1vY3MgY29udHJvbCB0YWJs ZQorICogQHJpbmdidWY6CURSTSBkZXZpY2UuCisgKiBAdGFibGU6CVRoZSB2YWx1ZXMgdG8gcHJv Z3JhbSBpbnRvIHRoZSBjb250cm9sIHJlZ3MuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaW1wbHkg ZW1pdHMgYSBNSV9MT0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kIGZvciB0aGUKKyAqIGdpdmVuIHRh YmxlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBhZGRyZXNzLiBUaGlzIHJlZ2lzdGVyIHNldCBpcyAg cHJvZ3JhbW1lZAorICogaW4gcGFpcnMuCisgKgorICogUmV0dXJuOiBOb3RoaW5nLgorICovCit2 b2lkIGVtaXRfbW9jc19sM2NjX3RhYmxlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm LAorCQkJIHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkgeworCXVuc2lnbmVkIGlu dCBjb3VudDsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsCisJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAy KSk7CisKKwlmb3IgKGkgPSAwLCBjb3VudCA9IDA7IGkgPCB0YWJsZS0+c2l6ZSAvIDI7IGkrKywg Y291bnQgKz0gMikgeworCQl1MzIgdmFsdWUgPSAodGFibGUtPnRhYmxlW2NvdW50XS5sM2NjX3Zh bHVlICYgMHhmZmZmKSB8CisJCQkoKHRhYmxlLT50YWJsZVtjb3VudCArIDFdLmwzY2NfdmFsdWUg JiAweGZmZmYpIDw8IDE2KTsKKworCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBH RU45X0xOQ0ZDTU9DUzAgKyAoaSAqIDQpKTsKKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwgdmFsdWUpOworCX0KKworCS8qCisJICogTm93IHNldCB0aGUgcmVzdCBvZiB0aGUgdGFi bGUgdG8gdW5jYWNoZWQgLSB1c2UgZW50cnkgMCBhcyB0aGlzCisJICogd2lsbCBiZSB1bmNhY2hl ZC4gTGVhdmUgdGhlIGxhc3QgcGFpciBpbml0aWFsaXNlZCBhcyByZXNlcnZlZCBieQorCSAqIHRo ZSBoYXJkd2FyZS4KKwkgKi8KKwlmb3IgKDsgaSA8IEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDI7 IGkrKykgeworCQl1MzIgdmFsdWUgPSAodGFibGUtPnRhYmxlWzBdLmwzY2NfdmFsdWUgJiAweGZm ZmYpIHwKKwkJCSgodGFibGUtPnRhYmxlWzBdLmwzY2NfdmFsdWUgJiAweGZmZmYpIDw8IDE2KTsK KworCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUzAgKyAo aSAqIDQpKTsKKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdmFsdWUpOworCX0K KworCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworfQorCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YWNmZmExNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21v Y3MuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4K KyAqCisgKiBBdXRob3JzOgorICogICAgUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRl bC5jb20+CisgKi8KKworI2lmbmRlZiBJTlRFTF9NT0NTX0gKKyNkZWZpbmUgSU5URUxfTU9DU19I CisKKy8qKgorICogRE9DOiBNZW1vcnkgT2JqZWN0cyBDb250cm9sIFN0YXRlIChNT0NTKQorICoK KyAqIE1vdGl2YXRpb246CisgKiBJbiBwcmV2aW91cyBHZW5zIHRoZSBNT0NTIHNldHRpbmdzIHdh cyBhIHZhbHVlIHRoYXQgd2FzIHNldCBieSB1c2VyIGxhbmQgYXMKKyAqIHBhcnQgb2YgdGhlIGJh dGNoLiBJbiBHZW45IHRoaXMgaGFzIGNoYW5nZWQgdG8gYmUgYSBzaW5nbGUgdGFibGUgKHBlciBy aW5nKQorICogdGhhdCBhbGwgYmF0Y2hlcyBub3cgcmVmZXJlbmNlIGJ5IGluZGV4IGluc3RlYWQg b2YgcHJvZ3JhbW1pbmcgdGhlIE1PQ1MKKyAqIGRpcmVjdGx5LgorICoKKyAqIFRoZSBvbmUgd3Jp bmtsZSBpbiB0aGlzIGlzIHRoYXQgb25seSBQQVJUIG9mIHRoZSBNT0NTIHRhYmxlcyBhcmUgaW5j bHVkZWQKKyAqIGluIGNvbnRleHQgKFRoZSBHRlhfTU9DU18wIC0gR0ZYX01PQ1NfNjQgYW5kIHRo ZSBMTkNGQ01PQ1MwIC0gTE5DRkNNT0NTMzIKKyAqIHJlZ2lzdGVycykuIFRoZSByZXN0IGFyZSBu b3QgKHRoZSBzZXR0aW5ncyBmb3IgdGhlIG90aGVyIHJpbmdzKS4KKyAqCisgKiBUaGlzIHRhYmxl IG5lZWRzIHRvIGJlIHNldCBhdCBzeXN0ZW0gc3RhcnQtdXAgYmVjYXVzZSB0aGUgd2F5IHRoZSB0 YWJsZQorICogaW50ZXJhY3RzIHdpdGggdGhlIGNvbnRleHRzIGFuZCB0aGUgR21tTGliIGludGVy ZmFjZS4KKyAqCisgKgorICogSW1wbGVtZW50YXRpb246CisgKgorICogVGhlIHRhYmxlIGlzIHBy b2dyYW1tZWQgb24gYSBwbGF0Zm9ybSBiYXNpcyBmcm9tIGEgdGFibGUgdGhhdCBpcyBnZW5lcmF0 ZWQKKyAqIGZyb20gdGhlIG9uZSB0aGF0IGhhcyBiZWVuIGFncmVlZCBieSB0aGUgZGlmZmVyZW50 IHJlc3BvbnNpYmxlIHBhcnRpZXMuIFRoaXMKKyAqIHRhYmxlcyAob25lIHBlciBzdXBwb3J0ZWQg cGxhdGZvcm0pIGlzIGRlZmluZWQgaW4gaW50ZWxfbW9jcy5jIGFuZCBpcworICogcHJvZ3JhbW1l ZCBpbiB0aGUgZmlyc3QgYmF0Y2ggYWZ0ZXIgdGhlIGNvbnRleHQgaXMgbG9hZGVkICh3aXRoIHRo ZSBoYXJkd2FyZQorICogd29ya2Fyb3VuZHMpLiBUaGlzIHdpbGwgdGhlbiBsZXQgdGhlIHVzdWFs IGNvbnRleHQgaGFuZGxpbmcga2VlcCB0aGUgTU9DUyBpbgorICogc3RlcC4KKyAqLworCisjaW5j bHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCisvKiBEZWZpbmVzIGZv ciB0aGUgdGFibGVzIChYWFhfTU9DU18wIC0gWFhYX01PQ1NfNjMpICovCisjZGVmaW5lCU1PQ1Nf Q0FDSEVBQklMSVRZKHZhbHVlKQkoKHZhbHVlICYgMHgwMykgPDwgMCkKKyNkZWZpbmUJTU9DU19U R1RfQ0FDSEUodmFsdWUpCQkoKHZhbHVlICYgMHgwMykgPDwgMikKKyNkZWZpbmUJTU9DU19MUlVN KHZhbHVlKQkJKCh2YWx1ZSAmIDB4MDMpIDw8IDQpCisjZGVmaW5lCU1PQ1NfQU9NKHZhbHVlKQkJ CSgodmFsdWUgJiAweDAxKSA8PCA2KQorI2RlZmluZQlNT0NTX0xFQ0NfRVNDKHZhbHVlKQkJKCh2 YWx1ZSAmIDB4MDEpIDw8IDcpCisjZGVmaW5lCU1PQ1NfTEVDQ19TQ0ModmFsdWUpCQkoKHZhbHVl ICYgMHgwNykgPDwgOCkKKyNkZWZpbmUJTU9DX1BGTSh2YWx1ZSkJCQkoKHZhbHVlICYgMHgwNykg PDwgMTEpCisjZGVmaW5lCU1PQ1NfU0NGKHZhbHVlKQkJCSgodmFsdWUgJiAweDAxKSA8PCAxNCkK KworLyogRGVmaW5lcyBmb3IgdGhlIHRhYmxlcyAoTE5DRk1PQ1MwIC0gTE5DRk1PQ1MzMSkgLSB0 d28gZW50cmllcyBwZXIgd29yZCAqLworI2RlZmluZQlNT0NTX0VTQyh2YWx1ZSkJCQkoKHZhbHVl ICYgMHgwMSkgPDwgMCkKKyNkZWZpbmUJTU9DU19TQ0ModmFsdWUpCQkJKCh2YWx1ZSAmIDB4MDcp IDw8IDEpCisjZGVmaW5lCU1PQ1NfTDNfQ0FDSEVBQklMSVRZKHZhbHVlKQkoKHZhbHVlICYgMHgw MykgPDwgNCkKKworLyogSGVscGVyIGRlZmluZXMgKi8KKyNkZWZpbmUgR0VOOV9OVU1fTU9DU19S SU5HUwkoNSkJLyogTnVtYmVyIG9mIG1vY3MgZW5naW5lcyB0byBwcm9ncmFtICovCisjZGVmaW5l IEdFTjlfTlVNX01PQ1NfRU5UUklFUwkoNjMpCS8qIDYzIG91dCBvZiA2NCAtIDY0IGlzIHJzdnJk ICovCisKKy8qIHN0cnVjdHVyZXMgcmVxdWlyZWQgKi8KK3N0cnVjdCBkcm1faTkxNV9tb2NzX2Vu dHJ5IHsKKwl1MzIJY29udHJvbF92YWx1ZTsKKwl1MTYJbDNjY192YWx1ZTsKK307CisKK3N0cnVj dCBkcm1faTkxNV9tb2NzX3RhYmxlIHsKKwl1MzIJCQkJCXNpemU7CisJY29uc3Qgc3RydWN0IGRy bV9pOTE1X21vY3NfZW50cnkJKnRhYmxlOworfTsKKwordm9pZCBlbWl0X21vY3NfbDNjY190YWJs ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKKwkJCSBzdHJ1Y3QgZHJtX2k5MTVf bW9jc190YWJsZSAqdGFibGUpOworCit2b2lkIGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAorCQkJCXN0cnVjdCBkcm1faTkxNV9tb2NzX3Rh YmxlICp0YWJsZSwKKwkJCQl1MzIgcmVnX2Jhc2UpOworCitib29sIGdldF9tb2NzX3NldHRpbmdz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190 YWJsZSAqdGFibGUpOworCisjZW5kaWYKKwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==