From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 22/24] drm/i915: Use full atomic modeset. Date: Mon, 1 Jun 2015 15:27:25 +0200 Message-ID: <1433165247-15928-23-git-send-email-maarten.lankhorst@linux.intel.com> References: <1433165247-15928-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTP id B09CF6E615 for ; Mon, 1 Jun 2015 06:27:45 -0700 (PDT) In-Reply-To: <1433165247-15928-1-git-send-email-maarten.lankhorst@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 SHV6emFoISBcby8KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljLmMgIHwgMTIxIC0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgMjgwICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDUgLQogMyBmaWxlcyBjaGFu Z2VkLCA0MiBpbnNlcnRpb25zKCspLCAzNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwppbmRleCBkZDZlNjkyNWRiYTAuLmQ2NDY5MjQ1NDU3ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKQEAgLTM1LDEyNyArMzUsNiBAQAogI2luY2x1ZGUgPGRy bS9kcm1fcGxhbmVfaGVscGVyLmg+CiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAKLQotLyoqCi0g KiBpbnRlbF9hdG9taWNfY2hlY2sgLSB2YWxpZGF0ZSBzdGF0ZSBvYmplY3QKLSAqIEBkZXY6IGRy bSBkZXZpY2UKLSAqIEBzdGF0ZTogc3RhdGUgdG8gdmFsaWRhdGUKLSAqLwotaW50IGludGVsX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkgICAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQotewotCWludCBucGxhbmVzID0gZGV2LT5tb2RlX2NvbmZpZy5u dW1fdG90YWxfcGxhbmU7Ci0JaW50IG5jcnRjcyA9IGRldi0+bW9kZV9jb25maWcubnVtX2NydGM7 Ci0JaW50IG5jb25uZWN0b3JzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwotCWVu dW0gcGlwZSBudWNsZWFyX3BpcGUgPSBJTlZBTElEX1BJUEU7Ci0Jc3RydWN0IGludGVsX2NydGMg Km51Y2xlYXJfY3J0YyA9IE5VTEw7Ci0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUgPSBOVUxMOwotCWludCByZXQ7Ci0JaW50IGk7Ci0JYm9vbCBub3RfbnVjbGVhciA9IGZhbHNl OwotCi0JLyoKLQkgKiBGSVhNRTogIEF0IHRoZSBtb21lbnQsIHdlIG9ubHkgc3VwcG9ydCAibnVj bGVhciBwYWdlZmxpcCIgb24gYQotCSAqIHNpbmdsZSBDUlRDLiAgQ3Jvc3MtY3J0YyB1cGRhdGVz IHdpbGwgYmUgYWRkZWQgbGF0ZXIuCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG5wbGFuZXM7IGkr KykgewotCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoc3RhdGUt PnBsYW5lc1tpXSk7Ci0JCWlmICghcGxhbmUpCi0JCQljb250aW51ZTsKLQotCQlpZiAobnVjbGVh cl9waXBlID09IElOVkFMSURfUElQRSkgewotCQkJbnVjbGVhcl9waXBlID0gcGxhbmUtPnBpcGU7 Ci0JCX0gZWxzZSBpZiAobnVjbGVhcl9waXBlICE9IHBsYW5lLT5waXBlKSB7Ci0JCQlEUk1fREVC VUdfS01TKCJpOTE1IG9ubHkgc3VwcG9ydCBhdG9taWMgcGxhbmUgb3BlcmF0aW9ucyBvbiBhIHNp bmdsZSBDUlRDIGF0IHRoZSBtb21lbnRcbiIpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQl9 Ci0KLQkvKgotCSAqIEZJWE1FOiAgV2Ugb25seSBoYW5kbGUgcGxhbmVzIGZvciBub3c7IG1ha2Ug c3VyZSB0aGVyZSBhcmUgbm8gQ1JUQydzCi0JICogb3IgY29ubmVjdG9ycyBpbnZvbHZlZC4KLQkg Ki8KLQlzdGF0ZS0+YWxsb3dfbW9kZXNldCA9IGZhbHNlOwotCWZvciAoaSA9IDA7IGkgPCBuY3J0 Y3M7IGkrKykgewotCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoc3Rh dGUtPmNydGNzW2ldKTsKLQkJaWYgKGNydGMpCi0JCQltZW1zZXQoJmNydGMtPmF0b21pYywgMCwg c2l6ZW9mKGNydGMtPmF0b21pYykpOwotCQlpZiAoY3J0YyAmJiBjcnRjLT5waXBlICE9IG51Y2xl YXJfcGlwZSkKLQkJCW5vdF9udWNsZWFyID0gdHJ1ZTsKLQkJaWYgKGNydGMgJiYgY3J0Yy0+cGlw ZSA9PSBudWNsZWFyX3BpcGUpIHsKLQkJCW51Y2xlYXJfY3J0YyA9IGNydGM7Ci0JCQljcnRjX3N0 YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0ZS0+Y3J0Y19zdGF0ZXNbaV0pOwotCQl9Ci0J fQotCWZvciAoaSA9IDA7IGkgPCBuY29ubmVjdG9yczsgaSsrKQotCQlpZiAoc3RhdGUtPmNvbm5l Y3RvcnNbaV0gIT0gTlVMTCkKLQkJCW5vdF9udWNsZWFyID0gdHJ1ZTsKLQotCWlmIChub3RfbnVj bGVhcikgewotCQlEUk1fREVCVUdfS01TKCJpOTE1IG9ubHkgc3VwcG9ydHMgYXRvbWljIHBsYW5l IG9wZXJhdGlvbnMgYXQgdGhlIG1vbWVudFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQot CXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhkZXYsIHN0YXRlKTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKLX0KLQotCi0vKioKLSAqIGludGVs X2F0b21pY19jb21taXQgLSBjb21taXQgdmFsaWRhdGVkIHN0YXRlIG9iamVjdAotICogQGRldjog RFJNIGRldmljZQotICogQHN0YXRlOiB0aGUgdG9wLWxldmVsIGRyaXZlciBzdGF0ZSBvYmplY3QK LSAqIEBhc3luYzogYXN5bmNocm9ub3VzIGNvbW1pdAotICoKLSAqIFRoaXMgZnVuY3Rpb24gY29t bWl0cyBhIHRvcC1sZXZlbCBzdGF0ZSBvYmplY3QgdGhhdCBoYXMgYmVlbiB2YWxpZGF0ZWQKLSAq IHdpdGggZHJtX2F0b21pY19oZWxwZXJfY2hlY2soKS4KLSAqCi0gKiBGSVhNRTogIEF0b21pYyBt b2Rlc2V0IHN1cHBvcnQgZm9yIGk5MTUgaXMgbm90IHlldCBjb21wbGV0ZS4gIEF0IHRoZSBtb21l bnQKLSAqIHdlIGNhbiBvbmx5IGhhbmRsZSBwbGFuZS1yZWxhdGVkIG9wZXJhdGlvbnMgYW5kIGRv IG5vdCB5ZXQgc3VwcG9ydAotICogYXN5bmNocm9ub3VzIGNvbW1pdC4KLSAqCi0gKiBSRVRVUk5T Ci0gKiBaZXJvIGZvciBzdWNjZXNzIG9yIC1lcnJuby4KLSAqLwotaW50IGludGVsX2F0b21pY19j b21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKLQkJCWJvb2wgYXN5bmMpCi17Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlpbnQgcmV0OwotCWludCBpOwotCi0J aWYgKGFzeW5jKSB7Ci0JCURSTV9ERUJVR19LTVMoImk5MTUgZG9lcyBub3QgeWV0IHN1cHBvcnQg YXN5bmMgY29tbWl0XG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcmV0ID0gZHJtX2F0 b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCS8qIFBvaW50IG9mIG5vIHJldHVybiAqLwotCWRybV9hdG9taWNfaGVscGVy X3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSk7Ci0KLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCXRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZyA9 IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwotCi0JCWRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9wbGFuZXNfb25fY3J0YyhjcnRjX3N0YXRlKTsKLQl9Ci0KLQkvKiBGSVhNRTogVGhp cyBmdW5jdGlvbiBzaG91bGQgZXZlbnR1YWxseSBjYWxsIF9faW50ZWxfc2V0X21vZGUgd2hlbiBu ZWVkZWQgKi8KLQotCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0 ZSk7Ci0JZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JZHJt X2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQotCXJldHVybiAwOwotfQotCiAvKioKICAqIGlu dGVsX2Nvbm5lY3Rvcl9hdG9taWNfZ2V0X3Byb3BlcnR5IC0gZmV0Y2ggY29ubmVjdG9yIHByb3Bl cnR5IHZhbHVlCiAgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gZmV0Y2ggcHJvcGVydHkgZm9y CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYmVlNWNkNThkN2U2Li5mNmM2 ZjhmOGRmOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTg2LDcgKzg2 LDYgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsK IAotc3RhdGljIGludCBpbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpOwogc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJCQkJICBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmlmYiwKIAkJCQkgIHN0cnVj dCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKQEAgLTExMCwxNCArMTA5LDYgQEAgc3RhdGlj IHZvaWQgc2tsX2luaXRfc2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3IKIHN0YXRpYyBpbnQgaTl4eF9nZXRfcmVmY2xrKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgaW50IG51bV9jb25uZWN0b3Jz KTsKIAotc3RhdGljIHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9maW5kX2VuY29kZXIoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBpbnQgcGlwZSkKLXsKLQlpZiAoIWNvbm5l Y3Rvci0+bXN0X3BvcnQpCi0JCXJldHVybiBjb25uZWN0b3ItPmVuY29kZXI7Ci0JZWxzZQotCQly ZXR1cm4gJmNvbm5lY3Rvci0+bXN0X3BvcnQtPm1zdF9lbmNvZGVyc1twaXBlXS0+YmFzZTsKLX0K LQogdHlwZWRlZiBzdHJ1Y3QgewogCWludAltaW4sIG1heDsKIH0gaW50ZWxfcmFuZ2VfdDsKQEAg LTYxNTYsNyArNjE0Nyw3IEBAIGludCBpbnRlbF9kaXNwbGF5X3N1c3BlbmQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAl9CiAKIAlpZiAoY3J0Y19tYXNrKSB7Ci0JCXJldCA9IGludGVsX3NldF9t b2RlKHN0YXRlKTsKKwkJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwogCiAJCWlmICgh cmV0KSB7CiAJCQlmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykKQEAgLTYyMTUsNyArNjIwNiw3IEBA IGludCBpbnRlbF9jcnRjX2NvbnRyb2woc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIGFjdGl2 ZSwgYm9vbCBmb3JjZSkKIAlpZiAoZm9yY2UpCiAJCXBpcGVfY29uZmlnLT5iYXNlLmVuYWJsZSA9 IGZhbHNlOwogCi0JcmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOworCXJldCA9IGRybV9hdG9t aWNfY29tbWl0KHN0YXRlKTsKIAlpZiAoIXJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTAxNzUs NyArMTAxNjYsNyBAQCByZXRyeToKIAogCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmJhc2Uu bW9kZSwgbW9kZSk7CiAKLQlpZiAoaW50ZWxfc2V0X21vZGUoc3RhdGUpKSB7CisJaWYgKGRybV9h dG9taWNfY29tbWl0KHN0YXRlKSkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1v ZGUgb24gbG9hZC1kZXRlY3QgcGlwZVxuIik7CiAJCWlmIChvbGQtPnJlbGVhc2VfZmIpCiAJCQlv bGQtPnJlbGVhc2VfZmItPmZ1bmNzLT5kZXN0cm95KG9sZC0+cmVsZWFzZV9mYik7CkBAIC0xMDI0 Myw3ICsxMDIzNCw3IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBlKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAK LQkJcmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOworCQlyZXQgPSBkcm1fYXRvbWljX2NvbW1p dChzdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAKQEAgLTEyNzI1LDcgKzEyNzE2 LDYgQEAgc3RhdGljIGludCBoYXN3ZWxsX21vZGVfc2V0X3BsYW5lc193b3JrYXJvdW5kKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlyZXR1cm4gMDsKIH0KIAotLyogQ29kZSB0aGF0 IHNob3VsZCBldmVudHVhbGx5IGJlIHBhcnQgb2YgYXRvbWljX2NoZWNrKCkgKi8KIHN0YXRpYyBp bnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OwpAQCAtMTI3NTcsMTUgKzEy NzQ3LDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1pbnRlbF9tb2Rl c2V0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKKy8qKgor ICogaW50ZWxfYXRvbWljX2NoZWNrIC0gdmFsaWRhdGUgc3RhdGUgb2JqZWN0CisgKiBAZGV2OiBk cm0gZGV2aWNlCisgKiBAc3RhdGU6IHN0YXRlIHRvIHZhbGlkYXRlCisgKi8KK3N0YXRpYyBpbnQg aW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgICAgICBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwog CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAlpbnQgcmV0LCBpOwogCWJvb2wg YW55X21zID0gZmFsc2U7CiAKLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0 KHN0YXRlLT5kZXYsIHN0YXRlKTsKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rl c2V0KGRldiwgc3RhdGUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTEyNzgxLDcg KzEyNzc2LDYgQEAgaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCiAJCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSkpOwog CQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQogCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHRv X2ludGVsX2NydGMoY3J0YyksCiAJCQkJICAgICAgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSksCiAJCQkJICAgICAgICJbbW9kZXNldF0iKTsKQEAgLTEyNzk3LDkgKzEyNzkxLDI2IEBA IGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQogCXJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoc3RhdGUtPmRldiwg c3RhdGUpOwogfQogCi1zdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQorLyoqCisgKiBpbnRlbF9hdG9taWNfY29tbWl0IC0gY29tbWl0IHZh bGlkYXRlZCBzdGF0ZSBvYmplY3QKKyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBzdGF0ZTogdGhl IHRvcC1sZXZlbCBkcml2ZXIgc3RhdGUgb2JqZWN0CisgKiBAYXN5bmM6IGFzeW5jaHJvbm91cyBj b21taXQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgYSB0b3AtbGV2ZWwgc3RhdGUgb2Jq ZWN0IHRoYXQgaGFzIGJlZW4gdmFsaWRhdGVkCisgKiB3aXRoIGRybV9hdG9taWNfaGVscGVyX2No ZWNrKCkuCisgKgorICogRklYTUU6ICBBdG9taWMgbW9kZXNldCBzdXBwb3J0IGZvciBpOTE1IGlz IG5vdCB5ZXQgY29tcGxldGUuICBBdCB0aGUgbW9tZW50CisgKiB3ZSBjYW4gb25seSBoYW5kbGUg cGxhbmUtcmVsYXRlZCBvcGVyYXRpb25zIGFuZCBkbyBub3QgeWV0IHN1cHBvcnQKKyAqIGFzeW5j aHJvbm91cyBjb21taXQuCisgKgorICogUkVUVVJOUworICogWmVybyBmb3Igc3VjY2VzcyBvciAt ZXJybm8uCisgKi8KK3N0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJ CSAgICAgICBib29sIGFzeW5jKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZTsKQEAgLTEyODA3LDYgKzEyODE4LDExIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRf bW9kZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJaW50IGk7CiAJYm9vbCBhbnlf bXMgPSBmYWxzZTsKIAorCWlmIChhc3luYykgeworCQlEUk1fREVCVUdfS01TKCJpOTE1IGRvZXMg bm90IHlldCBzdXBwb3J0IGFzeW5jIGNvbW1pdFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0K KwogCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xMjg1OCwzNCArMTI4NzQsMTQgQEAgc3RhdGlj IGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAog CS8qIEZJWE1FOiBhZGQgc3VicGl4ZWwgb3JkZXIgKi8KIAorCWRybV9hdG9taWNfaGVscGVyX3dh aXRfZm9yX3ZibGFua3MoZGV2LCBzdGF0ZSk7CiAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9w bGFuZXMoZGV2LCBzdGF0ZSk7Ci0KIAlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwogCi0J cmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGVfY2hlY2tlZChzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0 YXRlLT5kZXY7Ci0JaW50IHJldDsKLQotCXJldCA9IF9faW50ZWxfc2V0X21vZGUoc3RhdGUpOwot CWlmIChyZXQgPT0gMCkKKwlpZiAoYW55X21zKQogCQlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRl KGRldik7CiAKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKLXsKLQlpbnQgcmV0OwotCi0JcmV0ID0gaW50 ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKLQotCXJldHVybiBpbnRlbF9zZXRfbW9kZV9jaGVja2VkKHN0YXRlKTsKKwlyZXR1cm4gMDsK IH0KIAogdm9pZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CkBAIC0xMjkxMiwxMSArMTI5MDgsMTAgQEAgcmV0cnk6CiAJCQlnb3RvIG91dDsKIAogCQljcnRj X3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwotCQlyZXQgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1 dGVfY29uZmlnKHN0YXRlKTsKIAl9CiAKIAlpZiAoIXJldCkKLQkJcmV0ID0gaW50ZWxfc2V0X21v ZGVfY2hlY2tlZChzdGF0ZSk7CisJCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKIAog CWlmIChyZXQgPT0gLUVERUFETEspIHsKIAkJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7 CkBAIC0xMjkzMSwyMDAgKzEyOTI2LDkgQEAgb3V0OgogCiAjdW5kZWYgZm9yX2VhY2hfaW50ZWxf Y3J0Y19tYXNrZWQKIAotc3RhdGljIGJvb2wgaW50ZWxfY29ubmVjdG9yX2luX21vZGVfc2V0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJCQkJc3RydWN0IGRybV9tb2RlX3Nl dCAqc2V0KQotewotCWludCBybzsKLQotCWZvciAocm8gPSAwOyBybyA8IHNldC0+bnVtX2Nvbm5l Y3RvcnM7IHJvKyspCi0JCWlmIChzZXQtPmNvbm5lY3RvcnNbcm9dID09ICZjb25uZWN0b3ItPmJh c2UpCi0JCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGludAot aW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK LQkJCQkgc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAotCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpkcm1fY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQlpbnQgaSwgcmV0OwotCi0JLyogVGhlIHVw cGVyIGxheWVycyBlbnN1cmUgdGhhdCB3ZSBlaXRoZXIgZGlzYWJsZSBhIGNydGMgb3IgaGF2ZSBh IGxpc3QKLQkgKiBvZiBjb25uZWN0b3JzLiBGb3IgcGFyYW5vaWEsIGRvdWJsZS1jaGVjayB0aGlz LiAqLwotCVdBUk5fT04oIXNldC0+ZmIgJiYgKHNldC0+bnVtX2Nvbm5lY3RvcnMgIT0gMCkpOwot CVdBUk5fT04oc2V0LT5mYiAmJiAoc2V0LT5udW1fY29ubmVjdG9ycyA9PSAwKSk7Ci0KLQlmb3Jf ZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKLQkJYm9vbCBpbl9tb2RlX3Nl dCA9IGludGVsX2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCk7Ci0KLQkJaWYg KCFpbl9tb2RlX3NldCAmJiBjb25uZWN0b3ItPmJhc2Uuc3RhdGUtPmNydGMgIT0gc2V0LT5jcnRj KQotCQkJY29udGludWU7Ci0KLQkJY29ubmVjdG9yX3N0YXRlID0KLQkJCWRybV9hdG9taWNfZ2V0 X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7Ci0JCWlmIChJU19FUlIo Y29ubmVjdG9yX3N0YXRlKSkKLQkJCXJldHVybiBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0ZSk7Ci0K LQkJaWYgKGluX21vZGVfc2V0KSB7Ci0JCQlpbnQgcGlwZSA9IHRvX2ludGVsX2NydGMoc2V0LT5j cnRjKS0+cGlwZTsKLQkJCWNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0KLQkJCQkmaW50 ZWxfZmluZF9lbmNvZGVyKGNvbm5lY3RvciwgcGlwZSktPmJhc2U7Ci0JCX0KLQotCQlpZiAoY29u bmVjdG9yLT5iYXNlLnN0YXRlLT5jcnRjICE9IHNldC0+Y3J0YykKLQkJCWNvbnRpbnVlOwotCi0J CS8qIElmIHdlIGRpc2FibGUgdGhlIGNydGMsIGRpc2FibGUgYWxsIGl0cyBjb25uZWN0b3JzLiBB bHNvLCBpZgotCQkgKiB0aGUgY29ubmVjdG9yIGlzIG9uIHRoZSBjaGFuZ2luZyBjcnRjIGJ1dCBu b3Qgb24gdGhlIG5ldwotCQkgKiBjb25uZWN0b3IgbGlzdCwgZGlzYWJsZSBpdC4gKi8KLQkJaWYg KCFzZXQtPmZiIHx8ICFpbl9tb2RlX3NldCkgewotCQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2Vu Y29kZXIgPSBOVUxMOwotCi0JCQlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSB0byBb Tk9DUlRDXVxuIiwKLQkJCQljb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKLQkJCQljb25uZWN0b3It PmJhc2UubmFtZSk7Ci0JCX0KLQl9Ci0JLyogY29ubmVjdG9yLT5uZXdfZW5jb2RlciBpcyBub3cg dXBkYXRlZCBmb3IgYWxsIGNvbm5lY3RvcnMuICovCi0KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5f c3RhdGUoc3RhdGUsIGRybV9jb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewotCQljb25u ZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoZHJtX2Nvbm5lY3Rvcik7Ci0KLQkJaWYgKCFjb25u ZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlcikgewotCQkJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0 Y19mb3JfY29ubmVjdG9yKGNvbm5lY3Rvcl9zdGF0ZSwKLQkJCQkJCQkJTlVMTCk7Ci0JCQlpZiAo cmV0KQotCQkJCXJldHVybiByZXQ7Ci0KLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaWYgKGludGVs X2Nvbm5lY3Rvcl9pbl9tb2RlX3NldChjb25uZWN0b3IsIHNldCkpIHsKLQkJCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IGNvbm5lY3Rvci0+YmFzZS5zdGF0ZS0+Y3J0YzsKLQotCQkJLyogSWYgdGhp cyBjb25uZWN0b3Igd2FzIGluIGEgcHJldmlvdXMgY3J0YywgYWRkIGl0Ci0JCQkgKiB0byB0aGUg c3RhdGUuIFdlIG1pZ2h0IG5lZWQgdG8gZGlzYWJsZSBpdC4gKi8KLQkJCWlmIChjcnRjKSB7Ci0J CQkJY3J0Y19zdGF0ZSA9Ci0JCQkJCWRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNy dGMpOwotCQkJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCi0JCQkJCXJldHVybiBQVFJfRVJSKGNy dGNfc3RhdGUpOwotCQkJfQotCi0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25u ZWN0b3IoY29ubmVjdG9yX3N0YXRlLAotCQkJCQkJCQlzZXQtPmNydGMpOwotCQkJaWYgKHJldCkK LQkJCQlyZXR1cm4gcmV0OwotCQl9Ci0KLQkJLyogTWFrZSBzdXJlIHRoZSBuZXcgQ1JUQyB3aWxs IHdvcmsgd2l0aCB0aGUgZW5jb2RlciAqLwotCQlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2soY29u bmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIsCi0JCQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMp KSB7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCURSTV9ERUJVR19LTVMoIltDT05ORUNU T1I6JWQ6JXNdIHRvIFtDUlRDOiVkXVxuIiwKLQkJCWNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAot CQkJY29ubmVjdG9yLT5iYXNlLm5hbWUsCi0JCQljb25uZWN0b3Jfc3RhdGUtPmNydGMtPmJhc2Uu aWQpOwotCi0JCWlmIChjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSAmY29ubmVjdG9y LT5lbmNvZGVyLT5iYXNlKQotCQkJY29ubmVjdG9yLT5lbmNvZGVyID0KLQkJCQl0b19pbnRlbF9l bmNvZGVyKGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKLQl9Ci0KLQlmb3JfZWFjaF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWJvb2wgaGFzX2Nv bm5lY3RvcnM7Ci0KLQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycyhz dGF0ZSwgY3J0Yyk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCWhhc19jb25uZWN0 b3JzID0gISFkcm1fYXRvbWljX2Nvbm5lY3RvcnNfZm9yX2NydGMoc3RhdGUsIGNydGMpOwotCQlp ZiAoaGFzX2Nvbm5lY3RvcnMgIT0gY3J0Y19zdGF0ZS0+ZW5hYmxlKQotCQkJY3J0Y19zdGF0ZS0+ ZW5hYmxlID0KLQkJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGhhc19jb25uZWN0b3JzOwotCX0KLQot CXJldCA9IGludGVsX21vZGVzZXRfc2V0dXBfcGxhbmVfc3RhdGUoc3RhdGUsIHNldC0+Y3J0Yywg c2V0LT5tb2RlLAotCQkJCQkgICAgICBzZXQtPmZiLCBzZXQtPngsIHNldC0+eSk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKLQotCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0 YXRlKHN0YXRlLCBzZXQtPmNydGMpOwotCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCi0JCXJldHVy biBQVFJfRVJSKGNydGNfc3RhdGUpOwotCi0JaWYgKHNldC0+bW9kZSkKLQkJZHJtX21vZGVfY29w eSgmY3J0Y19zdGF0ZS0+bW9kZSwgc2V0LT5tb2RlKTsKLQotCWlmIChzZXQtPm51bV9jb25uZWN0 b3JzKQotCQljcnRjX3N0YXRlLT5hY3RpdmUgPSB0cnVlOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkK LXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwotCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSA9IE5VTEw7Ci0JaW50IHJldDsKLQotCUJVR19PTighc2V0KTsKLQlCVUdfT04oIXNldC0+ Y3J0Yyk7Ci0JQlVHX09OKCFzZXQtPmNydGMtPmhlbHBlcl9wcml2YXRlKTsKLQotCS8qIEVuZm9y Y2Ugc2FuZSBpbnRlcmZhY2UgYXBpIC0gaGFzIGJlZW4gYWJ1c2VkIGJ5IHRoZSBmYiBoZWxwZXIu ICovCi0JQlVHX09OKCFzZXQtPm1vZGUgJiYgc2V0LT5mYik7Ci0JQlVHX09OKHNldC0+ZmIgJiYg c2V0LT5udW1fY29ubmVjdG9ycyA9PSAwKTsKLQotCWlmIChzZXQtPmZiKSB7Ci0JCURSTV9ERUJV R19LTVMoIltDUlRDOiVkXSBbRkI6JWRdICNjb25uZWN0b3JzPSVkICh4IHkpICglaSAlaSlcbiIs Ci0JCQkJc2V0LT5jcnRjLT5iYXNlLmlkLCBzZXQtPmZiLT5iYXNlLmlkLAotCQkJCShpbnQpc2V0 LT5udW1fY29ubmVjdG9ycywgc2V0LT54LCBzZXQtPnkpOwotCX0gZWxzZSB7Ci0JCURSTV9ERUJV R19LTVMoIltDUlRDOiVkXSBbTk9GQl1cbiIsIHNldC0+Y3J0Yy0+YmFzZS5pZCk7Ci0JfQotCi0J ZGV2ID0gc2V0LT5jcnRjLT5kZXY7Ci0KLQlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2Mo ZGV2KTsKLQlpZiAoIXN0YXRlKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCXN0YXRlLT5hY3F1aXJl X2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7Ci0KLQlyZXQgPSBpbnRlbF9tb2Rl c2V0X3N0YWdlX291dHB1dF9zdGF0ZShkZXYsIHNldCwgc3RhdGUpOwotCWlmIChyZXQpCi0JCWdv dG8gb3V0OwotCi0JcmV0ID0gaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdGF0ZSk7Ci0J aWYgKHJldCkKLQkJZ290byBvdXQ7Ci0KLQlpbnRlbF91cGRhdGVfcGlwZV9zaXplKHRvX2ludGVs X2NydGMoc2V0LT5jcnRjKSk7Ci0KLQlyZXQgPSBpbnRlbF9zZXRfbW9kZV9jaGVja2VkKHN0YXRl KTsKLQlpZiAocmV0KSB7Ci0JCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBzZXQgbW9kZSBvbiBb Q1JUQzolZF0sIGVyciA9ICVkXG4iLAotCQkJICAgICAgc2V0LT5jcnRjLT5iYXNlLmlkLCByZXQp OwotCX0KLQotb3V0OgotCWlmIChyZXQpCi0JCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7 Ci0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBp bnRlbF9jcnRjX2Z1bmNzID0gewogCS5nYW1tYV9zZXQgPSBpbnRlbF9jcnRjX2dhbW1hX3NldCwK LQkuc2V0X2NvbmZpZyA9IGludGVsX2NydGNfc2V0X2NvbmZpZywKKwkuc2V0X2NvbmZpZyA9IGRy bV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCiAJLmRlc3Ryb3kgPSBpbnRlbF9jcnRjX2Rlc3Ry b3ksCiAJLnBhZ2VfZmxpcCA9IGludGVsX2NydGNfcGFnZV9mbGlwLAogCS5hdG9taWNfZHVwbGlj YXRlX3N0YXRlID0gaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUsCkBAIC0xNTI5NCw3ICsxNTA5 OCw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCiAJCWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOwogCi0JCXJldCA9IGludGVsX3Nl dF9tb2RlKHN0YXRlKTsKKwkJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwogCQlpZiAo cmV0KSB7CiAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZXN0b3JlIHByZXZpb3VzIG1vZGVcbiIp OwogCQkJbW9kZXNldF91cGRhdGVfY3J0Y19wb3dlcl9kb21haW5zKHN0YXRlLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDUxZTU3ZTkyNGJjNi4uNTUxODJlYmUxMzZmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTM5MiwxMSArMTM5Miw2IEBAIHZvaWQgaW50 ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1MzIgc3RhcnRfdmJs X2NvdW50KTsKIHZvaWQgaW50ZWxfdHZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAog LyogaW50ZWxfYXRvbWljLmMgKi8KLWludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKLQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Ci1p bnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAotCQkJYm9vbCBhc3luYyk7CiBpbnQgaW50ZWxfY29u bmVjdG9yX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIAkJCQkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAogCQkJCQlz dHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=