From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 1/6] drm/i915: export the stolen region as a resource Date: Wed, 22 Nov 2017 21:19:15 +0000 Message-ID: <20171122211920.20993-2-matthew.auld@intel.com> References: <20171122211920.20993-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171122211920.20993-1-matthew.auld@intel.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 Cc: x86@kernel.org, Paulo Zanoni , Joonas Lahtinen , dri-devel@lists.freedesktop.org, "H . Peter Anvin" , Ingo Molnar List-Id: dri-devel@lists.freedesktop.org V2UgZHVwbGljYXRlIHRoZSBzdG9sZW4gZGlzY292ZXJ5IGNvZGUgaW4gZWFybHktcXVpcmtzIGFu ZCBpbiBpOTE1LApob3dldmVyIGlmIHdlIGp1c3QgZXhwb3J0IHRoZSByZWdpb24gYXMgYSByZXNv dXJjZSBmcm9tIGVhcmx5LXF1aXJrcyB3ZQpjYW4gbnVrZSB0aGUgZHVwbGljYXRpb24uCgpTdWdn ZXN0ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNv bT4KU3VnZ2VzdGVkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K U2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpDYzog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBQYXVsbyBaYW5vbmkgPHBh dWxvLnIuemFub25pQGludGVsLmNvbT4KQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3Jn PgpDYzogSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+CkNjOiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCkNjOiB4ODZAa2VybmVsLm9yZwotLS0KIGFyY2gveDg2L2tlcm5lbC9l YXJseS1xdWlya3MuYyAgICAgICAgIHwgICA2ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyAgICB8ICA1MSArLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3N0b2xlbi5jIHwgMTA5ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogaW5jbHVkZS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogNCBmaWxl cyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jIGIvYXJjaC94ODYva2VybmVsL2Vhcmx5 LXF1aXJrcy5jCmluZGV4IDFlODJmNzg3YzE2MC4uYTk4YTUxY2QxNWE3IDEwMDY0NAotLS0gYS9h cmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2Vhcmx5 LXF1aXJrcy5jCkBAIC01MzEsNiArNTMxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2 aWNlX2lkIGludGVsX2Vhcmx5X2lkc1tdIF9faW5pdGNvbnN0ID0gewogCUlOVEVMX0NOTF9JRFMo JmdlbjlfZWFybHlfb3BzKSwKIH07CiAKK3N0cnVjdCByZXNvdXJjZSBpbnRlbF9ncmFwaGljc19z dG9sZW5fcmVzID0gREVGSU5FX1JFU19NRU0oMCwgMCk7CitFWFBPUlRfU1lNQk9MKGludGVsX2dy YXBoaWNzX3N0b2xlbl9yZXMpOworCiBzdGF0aWMgdm9pZCBfX2luaXQKIGludGVsX2dyYXBoaWNz X3N0b2xlbihpbnQgbnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMsCiAJCSAgICAgIGNvbnN0IHN0cnVj dCBpbnRlbF9lYXJseV9vcHMgKmVhcmx5X29wcykKQEAgLTU0OCw2ICs1NTEsOSBAQCBpbnRlbF9n cmFwaGljc19zdG9sZW4oaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jLAogCXByaW50ayhLRVJO X0lORk8gIlJlc2VydmluZyBJbnRlbCBncmFwaGljcyBtZW1vcnkgYXQgJXBhLSVwYVxuIiwKIAkg ICAgICAgJmJhc2UsICZlbmQpOwogCisJaW50ZWxfZ3JhcGhpY3Nfc3RvbGVuX3Jlcy5zdGFydCA9 IGJhc2U7CisJaW50ZWxfZ3JhcGhpY3Nfc3RvbGVuX3Jlcy5lbmQgPSBlbmQ7CisKIAkvKiBNYXJr IHRoaXMgc3BhY2UgYXMgcmVzZXJ2ZWQgKi8KIAllODIwX19yYW5nZV9hZGQoYmFzZSwgc2l6ZSwg RTgyMF9UWVBFX1JFU0VSVkVEKTsKIAllODIwX191cGRhdGVfdGFibGUoZTgyMF90YWJsZSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGUxMDFiOWE5ODk1Ny4uY2NjZDBjYjUx ZTA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMjk0OSw1MCArMjk0OSw2 IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2h2X2dldF90b3RhbF9ndHRfc2l6ZSh1MTYgZ21jaF9j dHJsKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc2l6ZV90IGdlbjZfZ2V0X3N0b2xlbl9zaXpl KHUxNiBzbmJfZ21jaF9jdGwpCi17Ci0Jc25iX2dtY2hfY3RsID4+PSBTTkJfR01DSF9HTVNfU0hJ RlQ7Ci0Jc25iX2dtY2hfY3RsICY9IFNOQl9HTUNIX0dNU19NQVNLOwotCXJldHVybiAoc2l6ZV90 KXNuYl9nbWNoX2N0bCA8PCAyNTsgLyogMzIgTUIgdW5pdHMgKi8KLX0KLQotc3RhdGljIHNpemVf dCBnZW44X2dldF9zdG9sZW5fc2l6ZSh1MTYgYmR3X2dtY2hfY3RsKQotewotCWJkd19nbWNoX2N0 bCA+Pj0gQkRXX0dNQ0hfR01TX1NISUZUOwotCWJkd19nbWNoX2N0bCAmPSBCRFdfR01DSF9HTVNf TUFTSzsKLQlyZXR1cm4gKHNpemVfdCliZHdfZ21jaF9jdGwgPDwgMjU7IC8qIDMyIE1CIHVuaXRz ICovCi19Ci0KLXN0YXRpYyBzaXplX3QgY2h2X2dldF9zdG9sZW5fc2l6ZSh1MTYgZ21jaF9jdHJs KQotewotCWdtY2hfY3RybCA+Pj0gU05CX0dNQ0hfR01TX1NISUZUOwotCWdtY2hfY3RybCAmPSBT TkJfR01DSF9HTVNfTUFTSzsKLQotCS8qCi0JICogMHgwICB0byAweDEwOiAzMk1CIGluY3JlbWVu dHMgc3RhcnRpbmcgYXQgME1CCi0JICogMHgxMSB0byAweDE2OiA0TUIgaW5jcmVtZW50cyBzdGFy dGluZyBhdCA4TUIKLQkgKiAweDE3IHRvIDB4MWQ6IDRNQiBpbmNyZW1lbnRzIHN0YXJ0IGF0IDM2 TUIKLQkgKi8KLQlpZiAoZ21jaF9jdHJsIDwgMHgxMSkKLQkJcmV0dXJuIChzaXplX3QpZ21jaF9j dHJsIDw8IDI1OwotCWVsc2UgaWYgKGdtY2hfY3RybCA8IDB4MTcpCi0JCXJldHVybiAoc2l6ZV90 KShnbWNoX2N0cmwgLSAweDExICsgMikgPDwgMjI7Ci0JZWxzZQotCQlyZXR1cm4gKHNpemVfdCko Z21jaF9jdHJsIC0gMHgxNyArIDkpIDw8IDIyOwotfQotCi1zdGF0aWMgc2l6ZV90IGdlbjlfZ2V0 X3N0b2xlbl9zaXplKHUxNiBnZW45X2dtY2hfY3RsKQotewotCWdlbjlfZ21jaF9jdGwgPj49IEJE V19HTUNIX0dNU19TSElGVDsKLQlnZW45X2dtY2hfY3RsICY9IEJEV19HTUNIX0dNU19NQVNLOwot Ci0JaWYgKGdlbjlfZ21jaF9jdGwgPCAweGYwKQotCQlyZXR1cm4gKHNpemVfdClnZW45X2dtY2hf Y3RsIDw8IDI1OyAvKiAzMiBNQiB1bml0cyAqLwotCWVsc2UKLQkJLyogNE1CIGluY3JlbWVudHMg c3RhcnRpbmcgYXQgMHhmMCBmb3IgNE1CICovCi0JCXJldHVybiAoc2l6ZV90KShnZW45X2dtY2hf Y3RsIC0gMHhmMCArIDEpIDw8IDIyOwotfQotCiBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9u KHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2NCBzaXplKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGdndHQtPmJhc2UuaTkxNTsKQEAgLTMzNDMsMTQgKzMyOTksMTMg QEAgc3RhdGljIGludCBnZW44X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAog CXBjaV9yZWFkX2NvbmZpZ193b3JkKHBkZXYsIFNOQl9HTUNIX0NUUkwsICZzbmJfZ21jaF9jdGwp OwogCisJZ2d0dC0+c3RvbGVuX3NpemUgPSByZXNvdXJjZV9zaXplKCZpbnRlbF9ncmFwaGljc19z dG9sZW5fcmVzKTsKKwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKLQkJZ2d0dC0+ c3RvbGVuX3NpemUgPSBnZW45X2dldF9zdG9sZW5fc2l6ZShzbmJfZ21jaF9jdGwpOwogCQlzaXpl ID0gZ2VuOF9nZXRfdG90YWxfZ3R0X3NpemUoc25iX2dtY2hfY3RsKTsKIAl9IGVsc2UgaWYgKElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0JCWdndHQtPnN0b2xlbl9zaXplID0gY2h2X2dldF9z dG9sZW5fc2l6ZShzbmJfZ21jaF9jdGwpOwogCQlzaXplID0gY2h2X2dldF90b3RhbF9ndHRfc2l6 ZShzbmJfZ21jaF9jdGwpOwogCX0gZWxzZSB7Ci0JCWdndHQtPnN0b2xlbl9zaXplID0gZ2VuOF9n ZXRfc3RvbGVuX3NpemUoc25iX2dtY2hfY3RsKTsKIAkJc2l6ZSA9IGdlbjhfZ2V0X3RvdGFsX2d0 dF9zaXplKHNuYl9nbWNoX2N0bCk7CiAJfQogCkBAIC0zNDA4LDcgKzMzNjMsNyBAQCBzdGF0aWMg aW50IGdlbjZfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCQlEUk1fRVJST1Io IkNhbid0IHNldCBETUEgbWFzay9jb25zaXN0ZW50IG1hc2sgKCVkKVxuIiwgZXJyKTsKIAlwY2lf cmVhZF9jb25maWdfd29yZChwZGV2LCBTTkJfR01DSF9DVFJMLCAmc25iX2dtY2hfY3RsKTsKIAot CWdndHQtPnN0b2xlbl9zaXplID0gZ2VuNl9nZXRfc3RvbGVuX3NpemUoc25iX2dtY2hfY3RsKTsK KwlnZ3R0LT5zdG9sZW5fc2l6ZSA9IHJlc291cmNlX3NpemUoJmludGVsX2dyYXBoaWNzX3N0b2xl bl9yZXMpOwogCiAJc2l6ZSA9IGdlbjZfZ2V0X3RvdGFsX2d0dF9zaXplKHNuYl9nbWNoX2N0bCk7 CiAJZ2d0dC0+YmFzZS50b3RhbCA9IChzaXplIC8gc2l6ZW9mKGdlbjZfcHRlX3QpKSA8PCBQQUdF X1NISUZUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCAxODc3YWU5 YTFkOWIuLmYxYjhlZWRhMDA1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMKQEAgLTMwLDkgKzMwLDYgQEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KICNpbmNsdWRl ICJpOTE1X2Rydi5oIgogCi0jZGVmaW5lIEtCKHgpICgoeCkgKiAxMDI0KQotI2RlZmluZSBNQih4 KSAoS0IoeCkgKiAxMDI0KQotCiAvKgogICogVGhlIEJJT1MgdHlwaWNhbGx5IHJlc2VydmVzIHNv bWUgb2YgdGhlIHN5c3RlbSdzIG1lbW9yeSBmb3IgdGhlIGV4Y2x1c2l2ZQogICogdXNlIG9mIHRo ZSBpbnRlZ3JhdGVkIGdyYXBoaWNzLiBUaGlzIG1lbW9yeSBpcyBubyBsb25nZXIgYXZhaWxhYmxl IGZvcgpAQCAtODEsMTEzICs3OCw5IEBAIHZvaWQgaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2Rl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGljIGRtYV9hZGRyX3Qg aTkxNV9zdG9sZW5fdG9fZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKIAlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0OworCWRtYV9hZGRyX3QgYmFzZSA9IGludGVs X2dyYXBoaWNzX3N0b2xlbl9yZXMuc3RhcnQ7CiAJc3RydWN0IHJlc291cmNlICpyOwotCWRtYV9h ZGRyX3QgYmFzZTsKLQotCS8qIEFsbW9zdCB1bml2ZXJzYWxseSB3ZSBjYW4gZmluZCB0aGUgR3Jh cGhpY3MgQmFzZSBvZiBTdG9sZW4gTWVtb3J5Ci0JICogYXQgcmVnaXN0ZXIgQlNNICgweDVjKSBp biB0aGUgaWdmeCBjb25maWd1cmF0aW9uIHNwYWNlLiBPbiBhIGZldwotCSAqIChkZXNrdG9wKSBt YWNoaW5lcyB0aGlzIGlzIGFsc28gbWlycm9yZWQgaW4gdGhlIGJyaWRnZSBkZXZpY2UgYXQKLQkg KiBkaWZmZXJlbnQgbG9jYXRpb25zLCBvciBpbiB0aGUgTUNIQkFSLgotCSAqCi0JICogT24gODY1 IHdlIGp1c3QgY2hlY2sgdGhlIFRPVUQgcmVnaXN0ZXIuCi0JICoKLQkgKiBPbiA4MzAvODQ1Lzg1 eCB0aGUgc3RvbGVuIG1lbW9yeSBiYXNlIGlzbid0IGF2YWlsYWJsZSBpbiBhbnkKLQkgKiByZWdp c3Rlci4gV2UgbmVlZCB0byBjYWxjdWxhdGUgaXQgYXMgVE9NLVRTRUdfU0laRS1zdG9sZW5fc2l6 ZS4KLQkgKgotCSAqLwotCWJhc2UgPSAwOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDMp IHsKLQkJdTMyIGJzbTsKLQotCQlwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgSU5URUxfQlNN LCAmYnNtKTsKLQotCQliYXNlID0gYnNtICYgSU5URUxfQlNNX01BU0s7Ci0JfSBlbHNlIGlmIChJ U19JODY1RyhkZXZfcHJpdikpIHsKLQkJdTMyIHRzZWdfc2l6ZSA9IDA7Ci0JCXUxNiB0b3VkID0g MDsKLQkJdTggdG1wOwotCi0JCXBjaV9idXNfcmVhZF9jb25maWdfYnl0ZShwZGV2LT5idXMsIFBD SV9ERVZGTigwLCAwKSwKLQkJCQkJIEk4NDVfRVNNUkFNQywgJnRtcCk7Ci0KLQkJaWYgKHRtcCAm IFRTRUdfRU5BQkxFKSB7Ci0JCQlzd2l0Y2ggKHRtcCAmIEk4NDVfVFNFR19TSVpFX01BU0spIHsK LQkJCWNhc2UgSTg0NV9UU0VHX1NJWkVfNTEySzoKLQkJCQl0c2VnX3NpemUgPSBLQig1MTIpOwot CQkJCWJyZWFrOwotCQkJY2FzZSBJODQ1X1RTRUdfU0laRV8xTToKLQkJCQl0c2VnX3NpemUgPSBN QigxKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCi0JCXBjaV9idXNfcmVhZF9jb25maWdfd29y ZChwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAwKSwKLQkJCQkJIEk4NjVfVE9VRCwgJnRvdWQpOwot Ci0JCWJhc2UgPSAodG91ZCA8PCAxNikgKyB0c2VnX3NpemU7Ci0JfSBlbHNlIGlmIChJU19JODVY KGRldl9wcml2KSkgewotCQl1MzIgdHNlZ19zaXplID0gMDsKLQkJdTMyIHRvbTsKLQkJdTggdG1w OwotCi0JCXBjaV9idXNfcmVhZF9jb25maWdfYnl0ZShwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAw KSwKLQkJCQkJIEk4NVhfRVNNUkFNQywgJnRtcCk7Ci0KLQkJaWYgKHRtcCAmIFRTRUdfRU5BQkxF KQotCQkJdHNlZ19zaXplID0gTUIoMSk7Ci0KLQkJcGNpX2J1c19yZWFkX2NvbmZpZ19ieXRlKHBk ZXYtPmJ1cywgUENJX0RFVkZOKDAsIDEpLAotCQkJCQkgSTg1WF9EUkIzLCAmdG1wKTsKLQkJdG9t ID0gdG1wICogTUIoMzIpOwotCi0JCWJhc2UgPSB0b20gLSB0c2VnX3NpemUgLSBnZ3R0LT5zdG9s ZW5fc2l6ZTsKLQl9IGVsc2UgaWYgKElTX0k4NDVHKGRldl9wcml2KSkgewotCQl1MzIgdHNlZ19z aXplID0gMDsKLQkJdTMyIHRvbTsKLQkJdTggdG1wOwotCi0JCXBjaV9idXNfcmVhZF9jb25maWdf Ynl0ZShwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAwKSwKLQkJCQkJIEk4NDVfRVNNUkFNQywgJnRt cCk7Ci0KLQkJaWYgKHRtcCAmIFRTRUdfRU5BQkxFKSB7Ci0JCQlzd2l0Y2ggKHRtcCAmIEk4NDVf VFNFR19TSVpFX01BU0spIHsKLQkJCWNhc2UgSTg0NV9UU0VHX1NJWkVfNTEySzoKLQkJCQl0c2Vn X3NpemUgPSBLQig1MTIpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBJODQ1X1RTRUdfU0laRV8xTToK LQkJCQl0c2VnX3NpemUgPSBNQigxKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCi0JCXBjaV9i dXNfcmVhZF9jb25maWdfYnl0ZShwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAwKSwKLQkJCQkJIEk4 MzBfRFJCMywgJnRtcCk7Ci0JCXRvbSA9IHRtcCAqIE1CKDMyKTsKLQotCQliYXNlID0gdG9tIC0g dHNlZ19zaXplIC0gZ2d0dC0+c3RvbGVuX3NpemU7Ci0JfSBlbHNlIGlmIChJU19JODMwKGRldl9w cml2KSkgewotCQl1MzIgdHNlZ19zaXplID0gMDsKLQkJdTMyIHRvbTsKLQkJdTggdG1wOwotCi0J CXBjaV9idXNfcmVhZF9jb25maWdfYnl0ZShwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAwKSwKLQkJ CQkJIEk4MzBfRVNNUkFNQywgJnRtcCk7Ci0KLQkJaWYgKHRtcCAmIFRTRUdfRU5BQkxFKSB7Ci0J CQlpZiAodG1wICYgSTgzMF9UU0VHX1NJWkVfMU0pCi0JCQkJdHNlZ19zaXplID0gTUIoMSk7Ci0J CQllbHNlCi0JCQkJdHNlZ19zaXplID0gS0IoNTEyKTsKLQkJfQotCi0JCXBjaV9idXNfcmVhZF9j b25maWdfYnl0ZShwZGV2LT5idXMsIFBDSV9ERVZGTigwLCAwKSwKLQkJCQkJIEk4MzBfRFJCMywg JnRtcCk7Ci0JCXRvbSA9IHRtcCAqIE1CKDMyKTsKLQotCQliYXNlID0gdG9tIC0gdHNlZ19zaXpl IC0gZ2d0dC0+c3RvbGVuX3NpemU7Ci0JfQogCiAJaWYgKGJhc2UgPT0gMCB8fCBhZGRfb3ZlcmZs b3dzKGJhc2UsIGdndHQtPnN0b2xlbl9zaXplKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS9kcm0vaTkxNV9kcm0uaAppbmRleCA0ZTFi Mjc0ZTExNjQuLmM5ZTVhNjYyMWI5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9kcm0u aAorKysgYi9pbmNsdWRlL2RybS9pOTE1X2RybS5oCkBAIC0zNiw2ICszNiw5IEBAIGV4dGVybiBi b29sIGk5MTVfZ3B1X2xvd2VyKHZvaWQpOwogZXh0ZXJuIGJvb2wgaTkxNV9ncHVfYnVzeSh2b2lk KTsKIGV4dGVybiBib29sIGk5MTVfZ3B1X3R1cmJvX2Rpc2FibGUodm9pZCk7CiAKKy8qIEV4cG9y dGVkIGZyb20gYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jICovCitleHRlcm4gc3RydWN0 IHJlc291cmNlIGludGVsX2dyYXBoaWNzX3N0b2xlbl9yZXM7CisKIC8qCiAgKiBUaGUgQnJpZGdl IGRldmljZSdzIFBDSSBjb25maWcgc3BhY2UgaGFzIGluZm9ybWF0aW9uIGFib3V0IHRoZQogICog ZmIgYXBlcnR1cmUgc2l6ZSBhbmQgdGhlIGFtb3VudCBvZiBwcmUtcmVzZXJ2ZWQgbWVtb3J5Lgot LSAKMi4xNC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK