From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 26/41] drm: Add reference counting to drm_atomic_state Date: Fri, 14 Oct 2016 13:18:18 +0100 Message-ID: <20161014121833.439-27-chris@chris-wilson.co.uk> References: <20161014121833.439-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: <20161014121833.439-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 , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org ZHJtX2F0b21pY19zdGF0ZSBoYXMgYSBjb21wbGljYXRlZCBzaW5nbGUgb3duZXIgbW9kZWwgdGhh dCB0cmFja3MgdGhlCnNpbmdsZSByZWZlcmVuY2UgZnJvbSBhbGxvY2F0aW9uIHRocm91Z2ggdG8g ZGVzdHJ1Y3Rpb24gb24gYW5vdGhlcgp0aHJlYWQgLSBvciBwZXJoYXBzIG9uIGEgbG9jYWwgZXJy b3IgcGF0aC4gV2UgY2FuIHNpbXBsaWZ5IHRoaXMgdHJhY2tpbmcKYnkgdXNpbmcgcmVmZXJlbmNl IGNvdW50aW5nIChhdCBhIGNvc3Qgb2YgYSBmZXcgbW9yZSBhdG9taWNzKS4gVGhpcyBpcwpldmVu IG1vcmUgYmVuZWZpY2lhbCB3aGVuIHRoZSBsaWZldGltZSBvZiB0aGUgc3RhdGUgYmVjb21lcyBt b3JlCmNvbnZvbHV0ZWQgdGhhbiBiZWluZyBwYXNzZWQgdG8gYSBzaW5nbGUgd29ya2VyIHRocmVh ZCBmb3IgdGhlIGNvbW1pdC4KCnYyOiBEb3VibGUgY2hlY2sgIWludGVsIGF0b21pY19jb21taXQg ZnVuY3Rpb25zIGZvciBtaXNzaW5nIGdldHMKdjM6IFVwZGF0ZSBrZXJuZWxkb2NzCgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnClJldmlld2VkLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpYy5lbmdlc3Ryb21A aW1ndGVjLmNvbT4KUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19kYy5jIHwgIDMg Ky0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgICAgICAgICAgIHwgMjUgKysr LS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgfCA5OCAr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBl ci5jICAgICAgICAgICAgICB8ICA5ICstLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2Rydi5jICAgICAgfCAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgICAgICAgfCAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j ICAgICAgICAgfCAzMSArKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5jICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jICAgICAg ICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmMgICAgICAg ICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfa21zLmMgICAgICAg IHwgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2Rydi5jICAgICAgICAgICAgICAgIHwg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYyAgICAgICAgICAgICAgICAgIHwgIDMg Ky0KIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX2Rydi5jICAgICAgICAgIHwgIDIgLQog ZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMgICAgICAgICAgICAgICAgfCAgMyArLQogaW5j bHVkZS9kcm0vZHJtX2F0b21pYy5oICAgICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKy0K IGluY2x1ZGUvZHJtL2RybV9wbGFuZS5oICAgICAgICAgICAgICAgICAgICAgIHwgIDEgLQogMTgg ZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfZGMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19kYy5jCmluZGV4IDVmNDg0MzEw YmVlOS4uOWY2MjIyODk1MjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxj ZGMvYXRtZWxfaGxjZGNfZGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRt ZWxfaGxjZGNfZGMuYwpAQCAtNDY0LDcgKzQ2NCw3IEBAIGF0bWVsX2hsY2RjX2RjX2F0b21pY19j b21wbGV0ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfZGNfY29tbWl0ICpjb21taXQpCiAKIAlkcm1fYXRv bWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7CiAKLQlkcm1fYXRvbWlj X3N0YXRlX2ZyZWUob2xkX3N0YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChvbGRfc3RhdGUp OwogCiAJLyogQ29tcGxldGUgdGhlIGNvbW1pdCwgd2FrZSB1cCBhbnkgd2FpdGVyLiAqLwogCXNw aW5fbG9jaygmZGMtPmNvbW1pdC53YWl0LmxvY2spOwpAQCAtNTIxLDYgKzUyMSw3IEBAIHN0YXRp YyBpbnQgYXRtZWxfaGxjZGNfZGNfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCS8qIFN3YXAgdGhlIHN0YXRlLCB0aGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4uICov CiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgdHJ1ZSk7CiAKKwlkcm1fYXRv bWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKGFzeW5jKQogCQlxdWV1ZV93b3JrKGRjLT53cSwg JmNvbW1pdC0+d29yayk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKaW5kZXggMjM3Mzk2MDk0Mjdk Li41ZGQ3MDU0MDIxOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwpAQCAtNzQsNiArNzQsOCBAQCBFWFBP UlRfU1lNQk9MKGRybV9hdG9taWNfc3RhdGVfZGVmYXVsdF9yZWxlYXNlKTsKIGludAogZHJtX2F0 b21pY19zdGF0ZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIHsKKwlrcmVmX2luaXQoJnN0YXRlLT5yZWYpOworCiAJLyogVE9ETyBs ZWdhY3kgcGF0aHMgc2hvdWxkIG1heWJlIGRvIGEgYmV0dGVyIGpvYiBhYm91dAogCSAqIHNldHRp bmcgdGhpcyBhcHByb3ByaWF0ZWx5PwogCSAqLwpAQCAtMjE1LDIyICsyMTcsMTYgQEAgdm9pZCBk cm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIEVY UE9SVF9TWU1CT0woZHJtX2F0b21pY19zdGF0ZV9jbGVhcik7CiAKIC8qKgotICogZHJtX2F0b21p Y19zdGF0ZV9mcmVlIC0gZnJlZSBhbGwgbWVtb3J5IGZvciBhbiBhdG9taWMgc3RhdGUKLSAqIEBz dGF0ZTogYXRvbWljIHN0YXRlIHRvIGRlYWxsb2NhdGUKKyAqIF9fZHJtX2F0b21pY19zdGF0ZV9m cmVlIC0gZnJlZSBhbGwgbWVtb3J5IGZvciBhbiBhdG9taWMgc3RhdGUKKyAqIEByZWY6IFRoaXMg YXRvbWljIHN0YXRlIHRvIGRlYWxsb2NhdGUKICAqCiAgKiBUaGlzIGZyZWVzIGFsbCBtZW1vcnkg YXNzb2NpYXRlZCB3aXRoIGFuIGF0b21pYyBzdGF0ZSwgaW5jbHVkaW5nIGFsbCB0aGUKICAqIHBl ci1vYmplY3Qgc3RhdGUgZm9yIHBsYW5lcywgY3J0Y3MgYW5kIGNvbm5lY3RvcnMuCiAgKi8KLXZv aWQgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK K3ZvaWQgX19kcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RydWN0IGtyZWYgKnJlZikKIHsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2OwotCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZzsKLQot CWlmICghc3RhdGUpCi0JCXJldHVybjsKLQotCWRldiA9IHN0YXRlLT5kZXY7Ci0JY29uZmlnID0g JmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY29u dGFpbmVyX29mKHJlZiwgdHlwZW9mKCpzdGF0ZSksIHJlZik7CisJc3RydWN0IGRybV9tb2RlX2Nv bmZpZyAqY29uZmlnID0gJnN0YXRlLT5kZXYtPm1vZGVfY29uZmlnOwogCiAJZHJtX2F0b21pY19z dGF0ZV9jbGVhcihzdGF0ZSk7CiAKQEAgLTI0Myw3ICsyMzksNyBAQCB2b2lkIGRybV9hdG9taWNf c3RhdGVfZnJlZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWtmcmVlKHN0YXRl KTsKIAl9CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfc3RhdGVfZnJlZSk7CitFWFBPUlRf U1lNQk9MKF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlKTsKIAogLyoqCiAgKiBkcm1fYXRvbWljX2dl dF9jcnRjX3N0YXRlIC0gZ2V0IGNydGMgc3RhdGUKQEAgLTE3NDIsNyArMTczOCw3IEBAIHJldHJ5 OgogCWlmIChhcmctPmZsYWdzICYgRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSkgewogCQkvKgog CQkgKiBVbmxpa2UgY29tbWl0LCBjaGVja19vbmx5IGRvZXMgbm90IGNsZWFuIHVwIHN0YXRlLgot CQkgKiBCZWxvdyB3ZSBjYWxsIGRybV9hdG9taWNfc3RhdGVfZnJlZSBmb3IgaXQuCisJCSAqIEJl bG93IHdlIGNhbGwgZHJtX2F0b21pY19zdGF0ZV9wdXQgZm9yIGl0LgogCQkgKi8KIAkJcmV0ID0g ZHJtX2F0b21pY19jaGVja19vbmx5KHN0YXRlKTsKIAl9IGVsc2UgaWYgKGFyZy0+ZmxhZ3MgJiBE Uk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0spIHsKQEAgLTE3NzUsOCArMTc3MSw3IEBAIG91dDoKIAkJ Z290byByZXRyeTsKIAl9CiAKLQlpZiAocmV0IHx8IGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9BVE9N SUNfVEVTVF9PTkxZKQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCWRybV9hdG9t aWNfc3RhdGVfcHV0KHN0YXRlKTsKIAogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CiAJ ZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYwppbmRleCBjM2Y4MzQ3NmY5OTYuLmRmNmU5YjdjMzc3YyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHN0YXRpYyB2b2lkIGNvbW1pdF90 YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9jbGVhbnVwX2RvbmUoc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0 YXRlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNv bW1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTEyODksNiArMTI4OSw3IEBA IGludCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkg KiBtYWtlIHN1cmUgd29yayBpdGVtcyBkb24ndCBhcnRpZmljYWxseSBzdGFsbCBvbiBlYWNoIGFu b3RoZXIuCiAJICovCiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKG5vbmJs b2NrKQogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1pdF93b3Jr KTsKIAllbHNlCkBAIC0xNTkwLDcgKzE1OTEsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9od19kb25lKTsKICAqCiAgKiBUaGlzIHNpZ25hbHMgY29tcGxldGlvbiBv ZiB0aGUgYXRvbWljIHVwZGF0ZSBAc3RhdGUsIGluY2x1ZGluZyBhbnkgY2xlYW51cAogICogd29y ay4gSWYgdXNlZCwgaXQgbXVzdCBiZSBjYWxsZWQgcmlnaHQgYmVmb3JlIGNhbGxpbmcKLSAqIGRy bV9hdG9taWNfc3RhdGVfZnJlZSgpLgorICogZHJtX2F0b21pY19zdGF0ZV9wdXQoKS4KICAqCiAg KiBUaGlzIGlzIHBhcnQgb2YgdGhlIGF0b21pYyBoZWxwZXIgc3VwcG9ydCBmb3Igbm9uYmxvY2tp bmcgY29tbWl0cywgc2VlCiAgKiBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoKSBmb3Ig YW4gb3ZlcnZpZXcuCkBAIC0yMTEzLDE4ICsyMTE0LDEzIEBAIHJldHJ5OgogCQlzdGF0ZS0+bGVn YWN5X2N1cnNvcl91cGRhdGUgPSB0cnVlOwogCiAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3Rh dGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVyIHRha2VzIG93 bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1cm4gMDsKIGZh aWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0JZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAly ZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwog CWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjE4NiwxOCArMjE4MiwxMyBA QCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUp OwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVyIHRha2VzIG93bmVy c2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1cm4gMDsKIGZhaWw6 CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0JZHJtX2F0b21pY19z dGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1 cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwogCWRy bV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjMyNiwxOCArMjMxNywxMyBAQCBy ZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwot CWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hp cCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQlyZXR1cm4gMDsKIGZhaWw6CiAJ aWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwogCi0JZHJtX2F0b21pY19zdGF0 ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4g cmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwogCWRybV9h dG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjQ3OSwxMSArMjQ2NSw4IEBAIGludCBk cm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0K IAogCWVyciA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQogZnJlZToKLQlpZiAoZXJyIDwg MCkKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVf cHV0KHN0YXRlKTsKIAlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hl bHBlcl9kaXNhYmxlX2FsbCk7CkBAIC0yNTM0LDcgKzI1MTcsNyBAQCByZXRyeToKIAogCWVyciA9 IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfYWxsKGRldiwgJmN0eCk7CiAJaWYgKGVyciA8IDAp IHsKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwogCQlzdGF0ZSA9IEVSUl9QVFIoZXJyKTsKIAkJZ290byB1bmxvY2s7CiAJfQpA QCAtMjYyMywxOCArMjYwNiwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJt X2F0b21pY19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0J LyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4g Ki8KLQlyZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNr b2ZmOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3Rh dGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3Rh dGVfY2xlYXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAt MjY4MywxOCArMjY2MSwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0 b21pY19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyog RHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8K LQlyZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2Zm OwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVf cHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVf Y2xlYXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjc0 MywxOCArMjcxNiwxMyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCiAJcmV0ID0gZHJtX2F0b21p Y19jb21taXQoc3RhdGUpOwotCWlmIChyZXQgIT0gMCkKLQkJZ290byBmYWlsOwotCi0JLyogRHJp dmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KLQly ZXR1cm4gMDsKIGZhaWw6CiAJaWYgKHJldCA9PSAtRURFQURMSykKIAkJZ290byBiYWNrb2ZmOwog Ci0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0 KHN0YXRlKTsKIAlyZXR1cm4gcmV0OworCiBiYWNrb2ZmOgogCWRybV9hdG9taWNfc3RhdGVfY2xl YXIoc3RhdGUpOwogCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwpAQCAtMjgyNywx OCArMjc5NSwxMyBAQCByZXRyeToKIAl9CiAKIAlyZXQgPSBkcm1fYXRvbWljX25vbmJsb2NraW5n X2NvbW1pdChzdGF0ZSk7Ci0JaWYgKHJldCAhPSAwKQotCQlnb3RvIGZhaWw7Ci0KLQkvKiBEcml2 ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwotCXJl dHVybiAwOwogZmFpbDoKIAlpZiAocmV0ID09IC1FREVBRExLKQogCQlnb3RvIGJhY2tvZmY7CiAK LQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwotCisJZHJtX2F0b21pY19zdGF0ZV9wdXQo c3RhdGUpOwogCXJldHVybiByZXQ7CisKIGJhY2tvZmY6CiAJZHJtX2F0b21pY19zdGF0ZV9jbGVh cihzdGF0ZSk7CiAJZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7CkBAIC0yOTE0LDE5 ICsyODc3LDE0IEBAIHJldHJ5OgogCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGFjdGl2ZTsKIAogCXJl dCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQlpZiAocmV0ICE9IDApCi0JCWdvdG8gZmFp bDsKLQotCS8qIERyaXZlciB0YWtlcyBvd25lcnNoaXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBj b21taXQuICovCi0JcmV0dXJuIDA7CiBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdv dG8gYmFja29mZjsKIAogCWNvbm5lY3Rvci0+ZHBtcyA9IG9sZF9tb2RlOwotCWRybV9hdG9taWNf c3RhdGVfZnJlZShzdGF0ZSk7Ci0KKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAJcmV0 dXJuIHJldDsKKwogYmFja29mZjoKIAlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKIAlk cm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKQEAgLTMzMzMsNyArMzI5MSw3IEBAIGRy bV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CiBmcmVlOgogCWlmIChlcnIgPCAwKSB7Ci0JCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7 CisJCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAkJc3RhdGUgPSBFUlJfUFRSKGVycik7 CiAJfQogCkBAIC0zNDQ4LDIyICszNDA2LDE0IEBAIHJldHJ5OgogCQlnb3RvIGZhaWw7CiAKIAly ZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Ci0JaWYgKHJldCkKLQkJZ290byBmYWlsOwot Ci0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1p dC4gKi8KLQotCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKGJsb2IpOwotCi0JcmV0dXJu IDA7CiBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdvdG8gYmFja29mZjsKIAotCWRy bV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUp OwogCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5jZV9ibG9iKGJsb2IpOwotCiAJcmV0dXJuIHJldDsK KwogYmFja29mZjoKIAlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKIAlkcm1fYXRvbWlj X2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IDAzNDE0 YmRlMWYxNS4uMjJkNGYwZTIyMTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKQEAgLTM2Nyw5 ICszNjcsNyBAQCBmYWlsOgogCWlmIChyZXQgPT0gLUVERUFETEspCiAJCWdvdG8gYmFja29mZjsK IAotCWlmIChyZXQgIT0gMCkKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRy bV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIAlyZXR1cm4gcmV0OwogCiBiYWNrb2ZmOgpAQCAt MTM2MSwxNiArMTM1OSwxMyBAQCByZXRyeToKIAlpbmZvLT52YXIueG9mZnNldCA9IHZhci0+eG9m ZnNldDsKIAlpbmZvLT52YXIueW9mZnNldCA9IHZhci0+eW9mZnNldDsKIAotCiBmYWlsOgogCWRy bV9hdG9taWNfY2xlYW5fb2xkX2ZiKGRldiwgcGxhbmVfbWFzaywgcmV0KTsKIAogCWlmIChyZXQg PT0gLUVERUFETEspCiAJCWdvdG8gYmFja29mZjsKIAotCWlmIChyZXQgIT0gMCkKLQkJZHJtX2F0 b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQorCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsK IAlyZXR1cm4gcmV0OwogCiBiYWNrb2ZmOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2Rydi5jCmluZGV4IGRlZjc4YzhjMTc4MC4uNGEyMWE3NDVjMzczIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGV4 eW5vc19hdG9taWNfY29tbWl0X2NvbXBsZXRlKHN0cnVjdCBleHlub3NfYXRvbWljX2NvbW1pdCAq Y29tbWl0KQogCiAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7 CiAKLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0 KHN0YXRlKTsKIAogCXNwaW5fbG9jaygmcHJpdi0+bG9jayk7CiAJcHJpdi0+cGVuZGluZyAmPSB+ Y29tbWl0LT5jcnRjczsKQEAgLTI1NCw2ICsyNTQsNyBAQCBpbnQgZXh5bm9zX2F0b21pY19jb21t aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAogCiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgdHJ1ZSk7CiAKKwlkcm1f YXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKG5vbmJsb2NrKQogCQlzY2hlZHVsZV93b3Jr KCZjb21taXQtPndvcmspOwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5k ZXggM2ZjZGZmZjI3M2U0Li4wOTI2ZWJiMjM0MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCkBAIC00MDMxLDEwICs0MDMxLDkgQEAgc3RhdGljIHZvaWQgaHN3X3RyYW5zX2VkcF9w aXBlX0FfY3JjX3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXJldCA9 IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKIG91dDoKLQlkcm1fbW9kZXNldF91bmxvY2tfYWxs KGRldik7CiAJV0FSTihyZXQsICJUb2dnbGluZyB3b3JrYXJvdW5kIHRvICVpIHJldHVybnMgJWlc biIsIGVuYWJsZSwgcmV0KTsKLQlpZiAocmV0KQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOworCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1 dChzdGF0ZSk7CiB9CiAKIHN0YXRpYyBpbnQgaXZiX3BpcGVfY3JjX2N0bF9yZWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CmluZGV4IDFmMWY3OTJjNTE5MS4uMjE4MjAwNzJkZWEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0zNTgzLDcgKzM1ODMsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybjsKIAogZXJyOgot CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3Rh dGUpOwogfQogCiB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCkBAIC0zNjQzLDYgKzM2NDMsOCBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNl dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX2hwZF9pbml0KGRl dl9wcml2KTsKIAl9CiAKKwlpZiAoc3RhdGUpCisJCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKGN0eCk7CiAJZHJtX21vZGVzZXRfYWNxdWlyZV9m aW5pKGN0eCk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKQEAgLTY4 ODMsNyArNjg4NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAKIAlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUo Y3J0Y19zdGF0ZSwgc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlk cm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKIAlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDol c10gaHcgc3RhdGUgYWRqdXN0ZWQsIHdhcyBlbmFibGVkLCBub3cgZGlzYWJsZWRcbiIsCiAJCSAg ICAgIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwpAQCAtMTEyNzMsOCArMTEyNzUsOCBAQCBm b3VuZDoKIAlyZXR1cm4gdHJ1ZTsKIAogZmFpbDoKLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOwotCWRybV9hdG9taWNfc3RhdGVfZnJlZShyZXN0b3JlX3N0YXRlKTsKKwlkcm1fYXRvbWlj X3N0YXRlX3B1dChzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQocmVzdG9yZV9zdGF0ZSk7 CiAJcmVzdG9yZV9zdGF0ZSA9IHN0YXRlID0gTlVMTDsKIAogCWlmIChyZXQgPT0gLUVERUFETEsp IHsKQEAgLTExMzAzLDEwICsxMTMwNSw5IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVj dF9waXBlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCXJldHVybjsKIAogCXJl dCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKLQlpZiAocmV0KSB7CisJaWYgKHJldCkKIAkJ RFJNX0RFQlVHX0tNUygiQ291bGRuJ3QgcmVsZWFzZSBsb2FkIGRldGVjdCBwaXBlOiAlaVxuIiwg cmV0KTsKLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKLQl9CisJZHJtX2F0b21pY19z dGF0ZV9wdXQoc3RhdGUpOwogfQogCiBzdGF0aWMgaW50IGk5eHhfcGxsX3JlZmNsayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LApAQCAtMTIzNTUsOCArMTIzNTYsNyBAQCByZXRyeToKIAkJCWdvdG8g cmV0cnk7CiAJCX0KIAotCQlpZiAocmV0KQotCQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRl KTsKKwkJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogCiAJCWlmIChyZXQgPT0gMCAmJiBl dmVudCkgewogCQkJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKQEAgLTE0NDAzLDcg KzE0NDAzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVh bnVwX2RvbmUoc3RhdGUpOwogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwlkcm1f YXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKIAkvKiBBcyBvbmUgb2YgdGhlIHByaW1hcnkgbW1p byBhY2Nlc3NvcnMsIEtNUyBoYXMgYSBoaWdoIGxpa2VsaWhvb2QKIAkgKiBvZiB0cmlnZ2VyaW5n IGJ1Z3MgaW4gdW5jbGFpbWVkIGFjY2Vzcy4gQWZ0ZXIgd2UgZmluaXNoCkBAIC0xNDQ4Niw2ICsx NDQ4Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0ZSk7CiAJaW50ZWxfYXRvbWlj X3RyYWNrX2ZicyhzdGF0ZSk7CiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYg KG5vbmJsb2NrKQogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1p dF93b3JrKTsKIAllbHNlCkBAIC0xNDUyNyw5ICsxNDUyOCw4IEBAIHJldHJ5OgogCQlnb3RvIHJl dHJ5OwogCX0KIAotCWlmIChyZXQpCiBvdXQ6Ci0JCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogfQogCiAvKgpAQCAtMTYyNjQsOCAr MTYyNjQsOCBAQCByZXRyeToKIAkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJr cyhjcyk7CiAJfQogCi0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKIGZhaWw6CisJZHJt X2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7 CiAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwogfQpAQCAtMTY5MDIsMTAgKzE2OTAy LDkgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKIAltdXRleF91bmxvY2soJmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwogCi0JaWYgKHJldCkgeworCWlmIChyZXQpCiAJCURSTV9FUlJPUigi UmVzdG9yaW5nIG9sZCBzdGF0ZSBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKLQkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKLQl9CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwog fQogCiB2b2lkIGludGVsX21vZGVzZXRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggYzdkOWEyMGUzNzBkLi4xZWExOWI2 ZDcyOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC05ODgsOSArOTg4LDcg QEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKIAl9CiAKLQlpZiAocmV0 KQotCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwotCisJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwogb3V0OgogCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CiAJZHJtX21v ZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9k cnYuYwppbmRleCBjZjgzZjY1MDdlYzguLmRiNjFhYTVmMzJlZiAxMDA2NDQKLS0tIGEvZHJpdmVy 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 L2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2Rydi5jCmluZGV4IDI3ODQ5MTlhNzM2Ni4uNzA4NzQ5 OTk2OWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyB2 b2lkIHN0aV9hdG9taWNfY29tcGxldGUoc3RydWN0IHN0aV9wcml2YXRlICpwcml2YXRlLAogCWRy bV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZHJtLCBzdGF0ZSk7CiAKIAlkcm1fYXRv bWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkcm0sIHN0YXRlKTsKLQlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKIH0KIAogc3RhdGlj IHZvaWQgc3RpX2F0b21pY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIxNyw2 ICsyMTcsNyBAQCBzdGF0aWMgaW50IHN0aV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sCiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVlKTsKIAor CWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKIAlpZiAobm9uYmxvY2spCiAJCXN0aV9hdG9t aWNfc2NoZWR1bGUocHJpdmF0ZSwgc3RhdGUpOwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS90ZWdyYS9kcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwppbmRleCA4 YWI0N2I1MDJkODMuLmE5NjMwYzJkNmNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL2RybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwpAQCAtNjMsNyArNjMs NyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9hdG9taWNfY29tcGxldGUoc3RydWN0IHRlZ3JhX2RybSAq dGVncmEsCiAJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhkcm0sIHN0YXRlKTsK IAogCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRybSwgc3RhdGUpOwotCWRybV9h dG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwog fQogCiBzdGF0aWMgdm9pZCB0ZWdyYV9hdG9taWNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCkBAIC05Niw2ICs5Niw3IEBAIHN0YXRpYyBpbnQgdGVncmFfYXRvbWljX2NvbW1pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLAogCiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0 ZSwgdHJ1ZSk7CiAKKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7CiAJaWYgKG5vbmJsb2Nr KQogCQl0ZWdyYV9hdG9taWNfc2NoZWR1bGUodGVncmEsIHN0YXRlKTsKIAllbHNlCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS90aWxjZGMvdGlsY2RjX2Rydi5jCmluZGV4IGE2OTQ5NzdjMzJmNC4uMTQ3ZmIyODI4N2FlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYwpAQCAtMTQzLDggKzE0Myw2IEBAIHN0YXRp YyBpbnQgdGlsY2RjX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJZHJtX2F0b21p Y19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKLQlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOwotCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKaW5kZXgg YzFmNjVjNmM4ZTYwLi5mMzFmNzJhZjg1NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCkBAIC02MSw3 ICs2MSw3IEBAIHZjNF9hdG9taWNfY29tcGxldGVfY29tbWl0KHN0cnVjdCB2YzRfY29tbWl0ICpj KQogCiAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAKLQlk cm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKIAogCXVwKCZ2YzQtPmFzeW5jX21vZGVzZXQpOwogCkBAIC0xNzMsNiArMTczLDcgQEAgc3Rh dGljIGludCB2YzRfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGN1 cnJlbnQgbGF5b3V0LgogCSAqLwogCisJZHJtX2F0b21pY19zdGF0ZV9nZXQoc3RhdGUpOwogCWlm IChub25ibG9jaykgewogCQl2YzRfcXVldWVfc2Vxbm9fY2IoZGV2LCAmYy0+Y2IsIHdhaXRfc2Vx bm8sCiAJCQkJICAgdmM0X2F0b21pY19jb21wbGV0ZV9jb21taXRfc2Vxbm9fY2IpOwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5o CmluZGV4IDk3MDFmMmRmYjc4NC4uMDFlMTExNmYwMDg0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fYXRvbWljLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCkBAIC0xNTMsNiAr MTUzLDcgQEAgc3RydWN0IF9fZHJtX2Nvbm5uZWN0b3JzX3N0YXRlIHsKIAogLyoqCiAgKiBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAtIHRoZSBnbG9iYWwgc3RhdGUgb2JqZWN0IGZvciBhdG9taWMg dXBkYXRlcworICogQHJlZjogY291bnQgb2YgYWxsIHJlZmVyZW5jZXMgdG8gdGhpcyBzdGF0ZSAo d2lsbCBub3QgYmUgZnJlZWQgdW50aWwgemVybykKICAqIEBkZXY6IHBhcmVudCBEUk0gZGV2aWNl CiAgKiBAYWxsb3dfbW9kZXNldDogYWxsb3cgZnVsbCBtb2Rlc2V0CiAgKiBAbGVnYWN5X2N1cnNv cl91cGRhdGU6IGhpbnQgdG8gZW5mb3JjZSBsZWdhY3kgY3Vyc29yIElPQ1RMIHNlbWFudGljcwpA QCAtMTY0LDYgKzE2NSw4IEBAIHN0cnVjdCBfX2RybV9jb25ubmVjdG9yc19zdGF0ZSB7CiAgKiBA YWNxdWlyZV9jdHg6IGFjcXVpcmUgY29udGV4dCBmb3IgdGhpcyBhdG9taWMgbW9kZXNldCBzdGF0 ZSB1cGRhdGUKICAqLwogc3RydWN0IGRybV9hdG9taWNfc3RhdGUgeworCXN0cnVjdCBrcmVmIHJl ZjsKKwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJYm9vbCBhbGxvd19tb2Rlc2V0IDogMTsK IAlib29sIGxlZ2FjeV9jdXJzb3JfdXBkYXRlIDogMTsKQEAgLTE5Myw3ICsxOTYsMzMgQEAgc3Rh dGljIGlubGluZSB2b2lkIGRybV9jcnRjX2NvbW1pdF9nZXQoc3RydWN0IGRybV9jcnRjX2NvbW1p dCAqY29tbWl0KQogc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKiBfX211c3RfY2hlY2sKIGRybV9h dG9taWNfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGRybV9hdG9t aWNfc3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKLXZvaWQgZHJt X2F0b21pY19zdGF0ZV9mcmVlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CisKKy8q KgorICogZHJtX2F0b21pY19zdGF0ZV9nZXQgLSBhY3F1aXJlIGEgcmVmZXJlbmNlIHRvIHRoZSBh dG9taWMgc3RhdGUKKyAqIEBzdGF0ZTogVGhlIGF0b21pYyBzdGF0ZQorICoKKyAqIFJldHVybnMg YSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBAc3RhdGUKKyAqLworc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqCitkcm1fYXRvbWljX3N0YXRlX2dldChzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCit7CisJa3JlZl9nZXQoJnN0YXRlLT5yZWYpOworCXJldHVybiBzdGF0 ZTsKK30KKwordm9pZCBfX2RybV9hdG9taWNfc3RhdGVfZnJlZShzdHJ1Y3Qga3JlZiAqcmVmKTsK KworLyoqCisgKiBkcm1fYXRvbWljX3N0YXRlX3B1dCAtIHJlbGVhc2UgYSByZWZlcmVuY2UgdG8g dGhlIGF0b21pYyBzdGF0ZQorICogQHN0YXRlOiBUaGUgYXRvbWljIHN0YXRlCisgKgorICogVGhp cyByZWxlYXNlcyBhIHJlZmVyZW5jZSB0byBAc3RhdGUgd2hpY2ggaXMgZnJlZWQgYWZ0ZXIgcmVt b3ZpbmcgdGhlCisgKiBmaW5hbCByZWZlcmVuY2UuIE5vIGxvY2tpbmcgcmVxdWlyZWQgYW5kIGNh bGxhYmxlIGZyb20gYW55IGNvbnRleHQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fYXRv bWljX3N0YXRlX3B1dChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJa3JlZl9w dXQoJnN0YXRlLT5yZWYsIF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlKTsKK30KIAogaW50ICBfX211 c3RfY2hlY2sKIGRybV9hdG9taWNfc3RhdGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAppbmRleCA0M2NmMTkzZTU0ZDYu LjAyMzUzOTA0Y2RiYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKKysrIGIv aW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKQEAgLTg4LDcgKzg4LDYgQEAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSB7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwogfTsKIAotCiAvKioK ICAqIHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgLSBkcml2ZXIgcGxhbmUgY29udHJvbCBmdW5jdGlv bnMKICAqLwotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=