From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/38] drm: Add reference counting to drm_atomic_state Date: Tue, 20 Sep 2016 09:29:59 +0100 Message-ID: <20160920083012.2754-26-chris@chris-wilson.co.uk> References: <20160920083012.2754-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160920083012.2754-1-chris@chris-wilson.co.uk> 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: Daniel Vetter , joonas.lahtinen@linux.intel.com, dri-devel@lists.freedesktop.org, mika.kuoppala@intel.com List-Id: dri-devel@lists.freedesktop.org ZHJtX2F0b21pY19zdGF0ZSBoYXMgYSBjb21wbGljYXRlZCBzaW5nbGUgb3duZXIgbW9kZWwgdGhh dCB0cmFja3MgdGhlCnNpbmdsZSByZWZlcmVuY2UgZnJvbSBhbGxvY2F0aW9uIHRocm91Z2ggdG8g ZGVzdHJ1Y3Rpb24gb24gYW5vdGhlcgp0aHJlYWQgLSBvciBwZXJoYXBzIG9uIGEgbG9jYWwgZXJy b3IgcGF0aC4gV2UgY2FuIHNpbXBsaWZ5IHRoaXMgdHJhY2tpbmcKYnkgdXNpbmcgcmVmZXJlbmNl IGNvdW50aW5nIChhdCBhIGNvc3Qgb2YgYSBmZXcgbW9yZSBhdG9taWNzKS4gVGhpcyBpcwpldmVu IG1vcmUgYmVuZWZpY2lhbCB3aGVuIHRoZSBsaWZldGltZSBvZiB0aGUgc3RhdGUgYmVjb21lcyBt b3JlCmNvbnZvbHV0ZWQgdGhhbiBiZWluZyBwYXNzZWQgdG8gYSBzaW5nbGUgd29ya2VyIHRocmVh ZCBmb3IgdGhlIGNvbW1pdC4KCnYyOiBEb3VibGUgY2hlY2sgIWludGVsIGF0b21pY19jb21taXQg ZnVuY3Rpb25zIGZvciBtaXNzaW5nIGdldHMKdjM6IFVwZGF0ZSBrZXJuZWxkb2NzCgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnClJldmlld2VkLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpYy5lbmdlc3Ryb21A aW1ndGVjLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNf ZGMuYyB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgICAgICAg ICB8IDI1ICsrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jICAgICAg ICAgIHwgOTggKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYyAgICAgICAgICAgICAgfCAgOSArLS0KIGRyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9kcnYuYyAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyAgICAgICAgIHwgMzEgKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYyAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuYyAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9t aWMuYyAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Ry di5jICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2tt cy5jICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYyAgICAgICAg ICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMgICAgICAgICAgICAg ICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyAgICAgICAg ICB8ICAyIC0KIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jICAgICAgICAgICAgICAgIHwg IDMgKy0KIGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCAgICAgICAgICAgICAgICAgICAgIHwgMjgg KysrKysrKy0KIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKwogMTggZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDEyOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNf ZGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19kYy5jCmluZGV4 IDhlNzQ4M2Q5MGM0Ny4uYzllNjQ1ZmExMjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfZGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwt aGxjZGMvYXRtZWxfaGxjZGNfZGMuYwpAQCAtNDY0LDcgKzQ2NCw3IEBAIGF0bWVsX2hsY2RjX2Rj X2F0b21pY19jb21wbGV0ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfZGNfY29tbWl0ICpjb21taXQpCiAK IAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7CiAKLQlk cm1fYXRvbWljX3N0YXRlX2ZyZWUob2xkX3N0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChv bGRfc3RhdGUpOwogCiAJLyogQ29tcGxldGUgdGhlIGNvbW1pdCwgd2FrZSB1cCBhbnkgd2FpdGVy LiAqLwogCXNwaW5fbG9jaygmZGMtPmNvbW1pdC53YWl0LmxvY2spOwpAQCAtNTIxLDYgKzUyMSw3 IEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfZGNfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCS8qIFN3YXAgdGhlIHN0YXRlLCB0aGlzIGlzIHRoZSBwb2ludCBvZiBubyBy ZXR1cm4uICovCiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgdHJ1ZSk7CiAK Kwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKGFzeW5jKQogCQlxdWV1ZV93b3Jr KGRjLT53cSwgJmNvbW1pdC0+d29yayk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKaW5kZXggMjM3 Mzk2MDk0MjdkLi41ZGQ3MDU0MDIxOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwpAQCAtNzQsNiArNzQs OCBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfc3RhdGVfZGVmYXVsdF9yZWxlYXNlKTsKIGlu dAogZHJtX2F0b21pY19zdGF0ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKKwlrcmVmX2luaXQoJnN0YXRlLT5yZWYpOworCiAJ LyogVE9ETyBsZWdhY3kgcGF0aHMgc2hvdWxkIG1heWJlIGRvIGEgYmV0dGVyIGpvYiBhYm91dAog CSAqIHNldHRpbmcgdGhpcyBhcHByb3ByaWF0ZWx5PwogCSAqLwpAQCAtMjE1LDIyICsyMTcsMTYg QEAgdm9pZCBkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19zdGF0ZV9jbGVhcik7CiAKIC8qKgotICog ZHJtX2F0b21pY19zdGF0ZV9mcmVlIC0gZnJlZSBhbGwgbWVtb3J5IGZvciBhbiBhdG9taWMgc3Rh dGUKLSAqIEBzdGF0ZTogYXRvbWljIHN0YXRlIHRvIGRlYWxsb2NhdGUKKyAqIF9fZHJtX2F0b21p Y19zdGF0ZV9mcmVlIC0gZnJlZSBhbGwgbWVtb3J5IGZvciBhbiBhdG9taWMgc3RhdGUKKyAqIEBy ZWY6IFRoaXMgYXRvbWljIHN0YXRlIHRvIGRlYWxsb2NhdGUKICAqCiAgKiBUaGlzIGZyZWVzIGFs bCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGFuIGF0b21pYyBzdGF0ZSwgaW5jbHVkaW5nIGFsbCB0 aGUKICAqIHBlci1vYmplY3Qgc3RhdGUgZm9yIHBsYW5lcywgY3J0Y3MgYW5kIGNvbm5lY3RvcnMu CiAgKi8KLXZvaWQgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKK3ZvaWQgX19kcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKnJlZikK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwotCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNv bmZpZzsKLQotCWlmICghc3RhdGUpCi0JCXJldHVybjsKLQotCWRldiA9IHN0YXRlLT5kZXY7Ci0J Y29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gY29udGFpbmVyX29mKHJlZiwgdHlwZW9mKCpzdGF0ZSksIHJlZik7CisJc3RydWN0IGRy bV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJnN0YXRlLT5kZXYtPm1vZGVfY29uZmlnOwogCiAJZHJt X2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7CiAKQEAgLTI0Myw3ICsyMzksNyBAQCB2b2lkIGRy bV9hdG9taWNfc3RhdGVfZnJlZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWtm cmVlKHN0YXRlKTsKIAl9CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfc3RhdGVfZnJlZSk7 CitFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlKTsKIAogLyoqCiAgKiBkcm1f YXRvbWljX2dldF9jcnRjX3N0YXRlIC0gZ2V0IGNydGMgc3RhdGUKQEAgLTE3NDIsNyArMTczOCw3 IEBAIHJldHJ5OgogCWlmIChhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSkg ewogCQkvKgogCQkgKiBVbmxpa2UgY29tbWl0LCBjaGVja19vbmx5IGRvZXMgbm90IGNsZWFuIHVw IHN0YXRlLgotCQkgKiBCZWxvdyB3ZSBjYWxsIGRybV9hdG9taWNfc3RhdGVfZnJlZSBmb3IgaXQu CisJCSAqIEJlbG93IHdlIGNhbGwgZHJtX2F0b21pY19zdGF0ZV9wdXQgZm9yIGl0LgogCQkgKi8K IAkJcmV0ID0gZHJtX2F0b21pY19jaGVja19vbmx5KHN0YXRlKTsKIAl9IGVsc2UgaWYgKGFyZy0+ ZmxhZ3MgJiBEUk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0spIHsKQEAgLTE3NzUsOCArMTc3MSw3IEBA IG91dDoKIAkJZ290byByZXRyeTsKIAl9CiAKLQlpZiAocmV0IHx8IGFyZy0+ZmxhZ3MgJiBEUk1f TU9ERV9BVE9NSUNfVEVTVF9PTkxZKQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwor CWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3Mo JmN0eCk7CiAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuYwppbmRleCBjM2Y4MzQ3NmY5OTYuLmRmNmU5YjdjMzc3YyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHN0YXRpYyB2b2lk IGNvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9jbGVhbnVwX2RvbmUoc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0 ZV9mcmVlKHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiB9CiAKIHN0YXRp YyB2b2lkIGNvbW1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTEyODksNiAr MTI4OSw3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkgKiBtYWtlIHN1cmUgd29yayBpdGVtcyBkb24ndCBhcnRpZmljYWxseSBzdGFsbCBv biBlYWNoIGFub3RoZXIuCiAJICovCiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJ aWYgKG5vbmJsb2NrKQogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUtPmNv bW1pdF93b3JrKTsKIAllbHNlCkBAIC0xNTkwLDcgKzE1OTEsNyBAQCBFWFBPUlRfU1lNQk9MKGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKTsKICAqCiAgKiBUaGlzIHNpZ25hbHMgY29t cGxldGlvbiBvZiB0aGUgYXRvbWljIHVwZGF0ZSBAc3RhdGUsIGluY2x1ZGluZyBhbnkgY2xlYW51 cAogICogd29yay4gSWYgdXNlZCwgaXQgbXVzdCBiZSBjYWxsZWQgcmlnaHQgYmVmb3JlIGNhbGxp bmcKLSAqIGRybV9hdG9taWNfc3RhdGVfZnJlZSgpLgorICogZHJtX2F0b21pY19zdGF0ZV9wdXQo KS4KICAqCiAgKiBUaGlzIGlzIHBhcnQgb2YgdGhlIGF0b21pYyBoZWxwZXIgc3VwcG9ydCBmb3Ig bm9uYmxvY2tpbmcgY29tbWl0cywgc2VlCiAgKiBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21t aXQoKSBmb3IgYW4gb3ZlcnZpZXcuCkBAIC0yMTEzLDE4ICsyMTE0LDEzIEBAIHJldHJ5OgogCQlz dGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUgPSB0cnVlOwogCiAJcmV0ID0gZHJtX2F0b21pY19j b21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVy IHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1 cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0J ZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0 YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIo c3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjE4NiwxOCAr MjE4MiwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0b21pY19jb21t aXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVyIHRh a2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1cm4g MDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0JZHJt X2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3Rh dGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjMyNiwxOCArMjMx NywxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0b21pY19jb21taXQo c3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVyIHRha2Vz IG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1cm4gMDsK IGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0JZHJtX2F0 b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsK IAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUp OwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjQ3OSwxMSArMjQ2NSw4 IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCX0KIAogCWVyciA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQogZnJlZToKLQlp ZiAoZXJyIDwgMCkKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9t aWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTChkcm1f YXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbCk7CkBAIC0yNTM0LDcgKzI1MTcsNyBAQCByZXRyeToK IAogCWVyciA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfYWxsKGRldiwgJmN0eCk7CiAJaWYg KGVyciA8IDApIHsKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJZHJtX2F0b21p Y19zdGF0ZV9wdXQoc3RhdGUpOwogCQlzdGF0ZSA9IEVSUl9QVFIoZXJyKTsKIAkJZ290byB1bmxv Y2s7CiAJfQpAQCAtMjYyMywxOCArMjYwNiwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJ cmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBm YWlsOwotCi0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVs IGNvbW1pdC4gKi8KLQlyZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJ Z290byBiYWNrb2ZmOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9h dG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9h dG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3Rh dGUpOwpAQCAtMjY4MywxOCArMjY2MSwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWls OwotCi0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNv bW1pdC4gKi8KLQlyZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290 byBiYWNrb2ZmOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9t aWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9t aWNfc3RhdGVfY2xlYXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUp OwpAQCAtMjc0MywxOCArMjcxNiwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0g ZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwot Ci0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1p dC4gKi8KLQlyZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBi YWNrb2ZmOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNf c3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNf c3RhdGVfY2xlYXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpA QCAtMjgyNywxOCArMjc5NSwxMyBAQCByZXRyeToKIAl9CiAKIAlyZXQgPSBkcm1fYXRvbWljX25v bmJsb2NraW5nX2NvbW1pdChzdGF0ZSk7Ci0JaWYgKHJldCAhPSAwKQotCQlnb3RvIGZhaWw7Ci0K LQkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0 LiAqLwotCXJldHVybiAwOwogZmFpbDoKIAlpZiAocmV0ID09IC1FREVBRExLKQogCQlnb3RvIGJh Y2tvZmY7CiAKLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwotCisJZHJtX2F0b21pY19z dGF0ZV9wdXQoc3RhdGUpOwogCXJldHVybiByZXQ7CisKIGJhY2tvZmY6CiAJZHJtX2F0b21pY19z dGF0ZV9jbGVhcihzdGF0ZSk7CiAJZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7CkBA IC0yOTE0LDE5ICsyODc3LDE0IEBAIHJldHJ5OgogCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGFjdGl2 ZTsKIAogCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQlpZiAocmV0ICE9IDApCi0J CWdvdG8gZmFpbDsKLQotCS8qIERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3Vj Y2Vzc2Z1bCBjb21taXQuICovCi0JcmV0dXJuIDA7CiBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFE TEspCiAJCWdvdG8gYmFja29mZjsKIAogCWNvbm5lY3Rvci0+ZHBtcyA9IG9sZF9tb2RlOwotCWRy bV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Ci0KKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0 ZSk7CiAJcmV0dXJuIHJldDsKKwogYmFja29mZjoKIAlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0 YXRlKTsKIAlkcm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKQEAgLTMzMzMsNyArMzI5 MSw3IEBAIGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCiBmcmVlOgogCWlmIChlcnIgPCAwKSB7Ci0JCWRybV9hdG9taWNfc3RhdGVfZnJl ZShzdGF0ZSk7CisJCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAkJc3RhdGUgPSBFUlJf UFRSKGVycik7CiAJfQogCkBAIC0zNDQ4LDIyICszNDA2LDE0IEBAIHJldHJ5OgogCQlnb3RvIGZh aWw7CiAKIAlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJZ290 byBmYWlsOwotCi0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNz ZnVsIGNvbW1pdC4gKi8KLQotCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKGJsb2IpOwot Ci0JcmV0dXJuIDA7CiBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdvdG8gYmFja29m ZjsKIAotCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwogCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKGJsb2IpOwotCiAJcmV0 dXJuIHJldDsKKwogYmFja29mZjoKIAlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKIAlk cm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmlu ZGV4IDAzNDE0YmRlMWYxNS4uMjJkNGYwZTIyMTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMK QEAgLTM2Nyw5ICszNjcsNyBAQCBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdvdG8g YmFja29mZjsKIAotCWlmIChyZXQgIT0gMCkKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRl KTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OwogCiBiYWNr b2ZmOgpAQCAtMTM2MSwxNiArMTM1OSwxMyBAQCByZXRyeToKIAlpbmZvLT52YXIueG9mZnNldCA9 IHZhci0+eG9mZnNldDsKIAlpbmZvLT52YXIueW9mZnNldCA9IHZhci0+eW9mZnNldDsKIAotCiBm YWlsOgogCWRybV9hdG9taWNfY2xlYW5fb2xkX2ZiKGRldiwgcGxhbmVfbWFzaywgcmV0KTsKIAog CWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdvdG8gYmFja29mZjsKIAotCWlmIChyZXQgIT0gMCkK LQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0 KHN0YXRlKTsKIAlyZXR1cm4gcmV0OwogCiBiYWNrb2ZmOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2Rydi5jCmluZGV4IDQ4Njk0M2U3MGY3MC4uZjExYmEyMDc4MWNlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCkBAIC0xMTEsNyArMTExLDcgQEAgc3Rh dGljIHZvaWQgZXh5bm9zX2F0b21pY19jb21taXRfY29tcGxldGUoc3RydWN0IGV4eW5vc19hdG9t aWNfY29tbWl0ICpjb21taXQpCiAKIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhk ZXYsIHN0YXRlKTsKIAotCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21p Y19zdGF0ZV9wdXQoc3RhdGUpOwogCiAJc3Bpbl9sb2NrKCZwcml2LT5sb2NrKTsKIAlwcml2LT5w ZW5kaW5nICY9IH5jb21taXQtPmNydGNzOwpAQCAtMjk2LDYgKzI5Niw3IEBAIGludCBleHlub3Nf YXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVl KTsKIAorCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKIAlpZiAobm9uYmxvY2spCiAJCXNj aGVkdWxlX3dvcmsoJmNvbW1pdC0+d29yayk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwppbmRleCA3ZWNkZDVjYzI3ZGQuLjg2MTRiZjRlNDc5YSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTM5NTYsOCArMzk1Niw3IEBAIHN0YXRpYyB2b2lkIGhzd190 cmFuc19lZHBfcGlwZV9BX2NyY193YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiBvdXQ6CiAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwogCVdBUk4ocmV0LCAiVG9nZ2xp bmcgd29ya2Fyb3VuZCB0byAlaSByZXR1cm5zICVpXG4iLCBlbmFibGUsIHJldCk7Ci0JaWYgKHJl dCkKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1 dChzdGF0ZSk7CiB9CiAKIHN0YXRpYyBpbnQgaXZiX3BpcGVfY3JjX2N0bF9yZWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CmluZGV4IGVhNjk3MTYwNTkxYS4uYzRiMjhhMzBiMjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0zNTgxLDcgKzM1ODEsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybjsKIAogZXJyOgot CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3Rh dGUpOwogfQogCiB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCkBAIC0zNjQwLDYgKzM2NDAsOCBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX2hwZF9pbml0KGRl dl9wcml2KTsKIAl9CiAKKwlpZiAoc3RhdGUpCisJCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKGN0eCk7CiAJZHJtX21vZGVzZXRfYWNxdWlyZV9m aW5pKGN0eCk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKQEAgLTY4 NzksNyArNjg4MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUo Y3J0Y19zdGF0ZSwgc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlk cm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKIAlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDol c10gaHcgc3RhdGUgYWRqdXN0ZWQsIHdhcyBlbmFibGVkLCBub3cgZGlzYWJsZWRcbiIsCiAJCSAg ICAgIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwpAQCAtMTEyNDYsOCArMTEyNDgsOCBAQCBm b3VuZDoKIAlyZXR1cm4gdHJ1ZTsKIAogZmFpbDoKLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOwotCWRybV9hdG9taWNfc3RhdGVfZnJlZShyZXN0b3JlX3N0YXRlKTsKKwlkcm1fYXRvbWlj X3N0YXRlX3B1dChzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQocmVzdG9yZV9zdGF0ZSk7 CiAJcmVzdG9yZV9zdGF0ZSA9IHN0YXRlID0gTlVMTDsKIAogCWlmIChyZXQgPT0gLUVERUFETEsp IHsKQEAgLTExMjc2LDEwICsxMTI3OCw5IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVj dF9waXBlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCXJldHVybjsKIAogCXJl dCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQlpZiAocmV0KSB7CisJaWYgKHJldCkKIAkJ RFJNX0RFQlVHX0tNUygiQ291bGRuJ3QgcmVsZWFzZSBsb2FkIGRldGVjdCBwaXBlOiAlaVxuIiwg cmV0KTsKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQl9CisJZHJtX2F0b21pY19z dGF0ZV9wdXQoc3RhdGUpOwogfQogCiBzdGF0aWMgaW50IGk5eHhfcGxsX3JlZmNsayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LApAQCAtMTIzNDQsOCArMTIzNDUsNyBAQCByZXRyeToKIAkJCWdvdG8g cmV0cnk7CiAJCX0KIAotCQlpZiAocmV0KQotCQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRl KTsKKwkJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogCiAJCWlmIChyZXQgPT0gMCAmJiBl dmVudCkgewogCQkJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKQEAgLTE0MzkwLDcg KzE0MzkwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVh bnVwX2RvbmUoc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlkcm1f YXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKIAkvKiBBcyBvbmUgb2YgdGhlIHByaW1hcnkgbW1p byBhY2Nlc3NvcnMsIEtNUyBoYXMgYSBoaWdoIGxpa2VsaWhvb2QKIAkgKiBvZiB0cmlnZ2VyaW5n IGJ1Z3MgaW4gdW5jbGFpbWVkIGFjY2Vzcy4gQWZ0ZXIgd2UgZmluaXNoCkBAIC0xNDQ3Myw2ICsx NDQ3Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0ZSk7CiAJaW50ZWxfYXRvbWlj X3RyYWNrX2ZicyhzdGF0ZSk7CiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYg KG5vbmJsb2NrKQogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1p dF93b3JrKTsKIAllbHNlCkBAIC0xNDUxNCw5ICsxNDUxNSw4IEBAIHJldHJ5OgogCQlnb3RvIHJl dHJ5OwogCX0KIAotCWlmIChyZXQpCiBvdXQ6Ci0JCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogfQogCiAvKgpAQCAtMTYyNTQsOCAr MTYyNTQsOCBAQCByZXRyeToKIAkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJr cyhjcyk7CiAJfQogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKIGZhaWw6CisJZHJt X2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7 CiAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwogfQpAQCAtMTY4OTIsMTAgKzE2ODky LDkgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKIAltdXRleF91bmxvY2soJmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwogCi0JaWYgKHJldCkgeworCWlmIChyZXQpCiAJCURSTV9FUlJPUigi UmVzdG9yaW5nIG9sZCBzdGF0ZSBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKLQkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKLQl9CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwog fQogCiB2b2lkIGludGVsX21vZGVzZXRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggNzNhNTIxZmRmMWJkLi5iZTNlMDQ2 MjNlMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC05ODcsOSArOTg3LDcg QEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKIAl9CiAKLQlpZiAocmV0 KQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwotCisJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwogb3V0OgogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CiAJZHJtX21v ZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9k cnYuYwppbmRleCA3MmMxYWU0ZTAyZDQuLjVhYjYwMTc1NzVlYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZHJ2LmMKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgbXRrX2F0 b21pY19jb21wbGV0ZShzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2YXRlLAogCWRybV9hdG9t aWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZHJtLCBzdGF0ZSk7CiAKIAlkcm1fYXRvbWljX2hl bHBlcl9jbGVhbnVwX3BsYW5lcyhkcm0sIHN0YXRlKTsKLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUo c3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQg bXRrX2F0b21pY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTExMCw2ICsxMTAs NyBAQCBzdGF0aWMgaW50IG10a19hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0s CiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVlKTsKIAorCWRybV9h dG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKIAlpZiAoYXN5bmMpCiAJCW10a19hdG9taWNfc2NoZWR1 bGUocHJpdmF0ZSwgc3RhdGUpOwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKaW5kZXgg NzNiYWUzODJlYWMzLi5kYjE5M2Y4MzUyOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCkBA IC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21f Y29tbWl0ICpjLCBib29sIGFzeW5jKQogCiAJa21zLT5mdW5jcy0+Y29tcGxldGVfY29tbWl0KGtt cywgc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlkcm1fYXRvbWlj X3N0YXRlX3B1dChzdGF0ZSk7CiAKIAljb21taXRfZGVzdHJveShjKTsKIH0KQEAgLTI1Niw2ICsy NTYsNyBAQCBpbnQgbXNtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkg KiBjdXJyZW50IGxheW91dC4KIAkgKi8KIAorCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsK IAlpZiAobm9uYmxvY2spIHsKIAkJcXVldWVfd29yayhwcml2LT5hdG9taWNfd3EsICZjLT53b3Jr KTsKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFw X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuYwppbmRleCBlMWNmYmE1 MWNmZjYuLjE3MzVjN2FjY2Y3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v b21hcF9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jCkBAIC0x MDUsNyArMTA1LDcgQEAgc3RhdGljIHZvaWQgb21hcF9hdG9taWNfY29tcGxldGUoc3RydWN0IG9t YXBfYXRvbWljX3N0YXRlX2NvbW1pdCAqY29tbWl0KQogCiAJZGlzcGNfcnVudGltZV9wdXQoKTsK IAotCWRybV9hdG9taWNfc3RhdGVfZnJlZShvbGRfc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVf cHV0KG9sZF9zdGF0ZSk7CiAKIAkvKiBDb21wbGV0ZSB0aGUgY29tbWl0LCB3YWtlIHVwIGFueSB3 YWl0ZXIuICovCiAJc3Bpbl9sb2NrKCZwcml2LT5jb21taXQubG9jayk7CkBAIC0xNzYsNiArMTc2 LDcgQEAgc3RhdGljIGludCBvbWFwX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkvKiBTd2FwIHRoZSBzdGF0ZSwgdGhpcyBpcyB0aGUgcG9pbnQgb2Ygbm8gcmV0dXJuLiAq LwogCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRydWUpOwogCisJZHJtX2F0 b21pY19zdGF0ZV9nZXQoc3RhdGUpOwogCWlmIChub25ibG9jaykKIAkJc2NoZWR1bGVfd29yaygm Y29tbWl0LT53b3JrKTsKIAllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9rbXMuYwpp bmRleCBiZDljM2JiOTI1MmMuLmM3NmVkOWVlNmEwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvcmNhcl9kdV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X2ttcy5jCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHZvaWQgcmNhcl9kdV9hdG9t aWNfY29tcGxldGUoc3RydWN0IHJjYXJfZHVfY29tbWl0ICpjb21taXQpCiAKIAlkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7CiAKLQlkcm1fYXRvbWljX3N0 YXRlX2ZyZWUob2xkX3N0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChvbGRfc3RhdGUpOwog CiAJLyogQ29tcGxldGUgdGhlIGNvbW1pdCwgd2FrZSB1cCBhbnkgd2FpdGVyLiAqLwogCXNwaW5f bG9jaygmcmNkdS0+Y29tbWl0LndhaXQubG9jayk7CkBAIC0zMzAsNiArMzMwLDcgQEAgc3RhdGlj IGludCByY2FyX2R1X2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkvKiBT d2FwIHRoZSBzdGF0ZSwgdGhpcyBpcyB0aGUgcG9pbnQgb2Ygbm8gcmV0dXJuLiAqLwogCWRybV9h dG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRydWUpOwogCisJZHJtX2F0b21pY19zdGF0 ZV9nZXQoc3RhdGUpOwogCWlmIChub25ibG9jaykKIAkJc2NoZWR1bGVfd29yaygmY29tbWl0LT53 b3JrKTsKIAllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2Rydi5jCmluZGV4IDdjZDM4MDRjNmRlZS4uN2FkOGQ0 MmRiYTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyB2 b2lkIHN0aV9hdG9taWNfY29tcGxldGUoc3RydWN0IHN0aV9wcml2YXRlICpwcml2YXRlLAogCWRy bV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZHJtLCBzdGF0ZSk7CiAKIAlkcm1fYXRv bWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkcm0sIHN0YXRlKTsKLQlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIH0KIAogc3RhdGlj IHZvaWQgc3RpX2F0b21pY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIxNyw2 ICsyMTcsNyBAQCBzdGF0aWMgaW50IHN0aV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sCiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVlKTsKIAor CWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKIAlpZiAobm9uYmxvY2spCiAJCXN0aV9hdG9t aWNfc2NoZWR1bGUocHJpdmF0ZSwgc3RhdGUpOwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS90ZWdyYS9kcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwppbmRleCA0 YjlmMWM3OWNkN2IuLjRjYThmMmYzYzQ2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL2RybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwpAQCAtNjMsNyArNjMs NyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9hdG9taWNfY29tcGxldGUoc3RydWN0IHRlZ3JhX2RybSAq dGVncmEsCiAJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhkcm0sIHN0YXRlKTsK IAogCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRybSwgc3RhdGUpOwotCWRybV9h dG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwog fQogCiBzdGF0aWMgdm9pZCB0ZWdyYV9hdG9taWNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCkBAIC05Niw2ICs5Niw3IEBAIHN0YXRpYyBpbnQgdGVncmFfYXRvbWljX2NvbW1pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLAogCiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0 ZSwgdHJ1ZSk7CiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKG5vbmJsb2Nr KQogCQl0ZWdyYV9hdG9taWNfc2NoZWR1bGUodGVncmEsIHN0YXRlKTsKIAllbHNlCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS90aWxjZGMvdGlsY2RjX2Rydi5jCmluZGV4IGY4ODkyZTlhZDE2OS4uMTlhYmY2NWYwZmYzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYwpAQCAtMTQzLDggKzE0Myw2IEBAIHN0YXRp YyBpbnQgdGlsY2RjX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJZHJtX2F0b21p Y19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKLQlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOwotCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKaW5kZXgg YzFmNjVjNmM4ZTYwLi5mMzFmNzJhZjg1NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCkBAIC02MSw3 ICs2MSw3IEBAIHZjNF9hdG9taWNfY29tcGxldGVfY29tbWl0KHN0cnVjdCB2YzRfY29tbWl0ICpj KQogCiAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKLQlk cm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKIAogCXVwKCZ2YzQtPmFzeW5jX21vZGVzZXQpOwogCkBAIC0xNzMsNiArMTczLDcgQEAgc3Rh dGljIGludCB2YzRfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGN1 cnJlbnQgbGF5b3V0LgogCSAqLwogCisJZHJtX2F0b21pY19zdGF0ZV9nZXQoc3RhdGUpOwogCWlm IChub25ibG9jaykgewogCQl2YzRfcXVldWVfc2Vxbm9fY2IoZGV2LCAmYy0+Y2IsIHdhaXRfc2Vx bm8sCiAJCQkJICAgdmM0X2F0b21pY19jb21wbGV0ZV9jb21taXRfc2Vxbm9fY2IpOwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5o CmluZGV4IDg1NmE5Yzg1YTgzOC4uMWM2MjEwZTdhNzkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fYXRvbWljLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCkBAIC0zOSw3ICsz OSwzMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2NydGNfY29tbWl0X2dldChzdHJ1Y3QgZHJt X2NydGNfY29tbWl0ICpjb21taXQpCiBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqIF9fbXVzdF9j aGVjawogZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZv aWQgZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Owotdm9pZCBkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKTsKKworLyoqCisgKiBkcm1fYXRvbWljX3N0YXRlX2dldCAtIGFjcXVpcmUgYSByZWZlcmVu Y2UgdG8gdGhlIGF0b21pYyBzdGF0ZQorICogQHN0YXRlOiBUaGUgYXRvbWljIHN0YXRlCisgKgor ICogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIEBzdGF0ZQorICovCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICoKK2RybV9hdG9taWNfc3RhdGVfZ2V0KHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlrcmVmX2dldCgmc3RhdGUtPnJlZik7CisJ cmV0dXJuIHN0YXRlOworfQorCit2b2lkIF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0cnVjdCBr cmVmICpyZWYpOworCisvKioKKyAqIGRybV9hdG9taWNfc3RhdGVfcHV0IC0gcmVsZWFzZSBhIHJl ZmVyZW5jZSB0byB0aGUgYXRvbWljIHN0YXRlCisgKiBAc3RhdGU6IFRoZSBhdG9taWMgc3RhdGUK KyAqCisgKiBUaGlzIHJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIEBzdGF0ZSB3aGljaCBpcyBmcmVl ZCBhZnRlciByZW1vdmluZyB0aGUKKyAqIGZpbmFsIHJlZmVyZW5jZS4gTm8gbG9ja2luZyByZXF1 aXJlZCBhbmQgY2FsbGFibGUgZnJvbSBhbnkgY29udGV4dC4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkIGRybV9hdG9taWNfc3RhdGVfcHV0KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK K3sKKwlrcmVmX3B1dCgmc3RhdGUtPnJlZiwgX19kcm1fYXRvbWljX3N0YXRlX2ZyZWUpOworfQog CiBpbnQgIF9fbXVzdF9jaGVjawogZHJtX2F0b21pY19zdGF0ZV9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAppbmRleCAzNWIx M2ZjNmJiYzEuLjgyZWQ4MGU5N2U4YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBAIC0xMTQzLDYgKzExNDMsNyBAQCBzdHJ1 Y3QgX19kcm1fY29ubm5lY3RvcnNfc3RhdGUgewogCiAvKioKICAqIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlIC0gdGhlIGdsb2JhbCBzdGF0ZSBvYmplY3QgZm9yIGF0b21pYyB1cGRhdGVzCisgKiBA cmVmOiBjb3VudCBvZiBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIHN0YXRlCiAgKiBAZGV2OiBwYXJl bnQgRFJNIGRldmljZQogICogQGFsbG93X21vZGVzZXQ6IGFsbG93IGZ1bGwgbW9kZXNldAogICog QGxlZ2FjeV9jdXJzb3JfdXBkYXRlOiBoaW50IHRvIGVuZm9yY2UgbGVnYWN5IGN1cnNvciBJT0NU TCBzZW1hbnRpY3MKQEAgLTExNTQsNiArMTE1NSw4IEBAIHN0cnVjdCBfX2RybV9jb25ubmVjdG9y c19zdGF0ZSB7CiAgKiBAYWNxdWlyZV9jdHg6IGFjcXVpcmUgY29udGV4dCBmb3IgdGhpcyBhdG9t aWMgbW9kZXNldCBzdGF0ZSB1cGRhdGUKICAqLwogc3RydWN0IGRybV9hdG9taWNfc3RhdGUgewor CXN0cnVjdCBrcmVmIHJlZjsKKwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJYm9vbCBhbGxv d19tb2Rlc2V0IDogMTsKIAlib29sIGxlZ2FjeV9jdXJzb3JfdXBkYXRlIDogMTsKLS0gCjIuOS4z CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK