From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH 1/2] drm/i915: implemented dynamic WOPCM partition. Date: Fri, 3 Nov 2017 17:01:09 -0700 Message-ID: <1509753670-27369-1-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id B85C76EB41 for ; Sat, 4 Nov 2017 00:03:15 +0000 (UTC) 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 Cc: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org U3RhdGljIFdPUENNIHBhcnRpdGlvbmluZyB3b3VsZCBsZWFkIHRvIEd1QyBsb2FkaW5nIGZhaWx1 cmUKaWYgdGhlIEd1Qy9IdUMgZmlybXdhcmUgc2l6ZSBleGNlZWRlZCBjdXJyZW50IHN0YXRpYyA1 MTJLQgpwYXJ0aXRpb24gYm91bmRhcnkuCgpUaGlzIHBhdGNoIGVuYWJsZWQgdGhlIGR5bmFtaWNh bCBjYWxjdWxhdGlvbiBvZiB0aGUgV09QQ00gYXBlcnR1cmUKdXNlZCBieSBHdUMvSHVDIGZpcm13 YXJlLiBHdUMgV09QQ00gb2Zmc2V0IHdhcyBzZXQgdG8KSHVDIHNpemUgKyByZXNlcnZlZCBXT1BD TSBzaXplLiBHdUMgV09QQ00gc2l6ZSB3YXMgc2V0IHRvCnRvdGFsIFdPUENNIHNpemUgLSBHdUMg V09QQ00gb2Zmc2V0IC0gUkM2Q1RYIHNpemUuCgpTaWduZWQtb2ZmLWJ5OiBKYWNraWUgTGkgPHlh b2RvbmcubGlAaW50ZWwuY29tPgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3pr b0BpbnRlbC5jb20+CkNjOiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwu Y29tPgpDYzogU3VqYXJpdGhhIFN1bmRhcmVzYW4gPHN1amFyaXRoYS5zdW5kYXJlc2FuQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9s b3NwdXJpb0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKb2huIFNwb3Rzd29vZCA8am9obi5hLnNw b3Rzd29vZEBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9A aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8 ICAxNSArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTMg KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgICA0ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAgICAgfCAgMTggKysrKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jICAgICAgICB8ICA0NiArKysrKysrKysrLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICB8ICAxOCArLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5jICAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgICAgICB8ICAxMiAr Ky0KIDkgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IGU3ZTllMDYuLjE5NTA5ZmQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwpAQCAtNjIzLDYgKzYyMywxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlXQVJOX09OKCFsaXN0X2Vt cHR5KCZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCkpOwogfQogCitzdGF0aWMgdm9pZCBpOTE1X3dv cGNtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBp bnRlbF93b3BjbV9pbmZvICp3b3BjbSA9ICZkZXZfcHJpdi0+d29wY207CisKKwl3b3BjbS0+c2l6 ZSA9IFdPUENNX0RFRkFVTFRfU0laRTsKKworCURSTV9ERUJVR19EUklWRVIoIldPUENNIHNpemU6 ICVkS0JcbiIsIHdvcGNtLT5zaXplID4+IDEwKTsKK30KKwogc3RhdGljIGludCBpOTE1X2xvYWRf bW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwpAQCAtNjcwLDYgKzY3OSwxMiBAQCBz dGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlpZiAocmV0KQogCQlnb3RvIGNsZWFudXBfaXJxOwogCisJLyoKKwkgKiBHZXQgdGhlIHdvcGNt IG1lbW9yeSBpbmZvLgorCSAqIE5PVEU6IHRoaXMgbmVlZCB0byBiZSBjYWxsZWQgYmVmb3JlIGlu aXQgRlcuCisJICovCisJaTkxNV93b3BjbV9pbml0KGRldl9wcml2KTsKKwogCWludGVsX3VjX2lu aXRfZncoZGV2X3ByaXYpOwogCiAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXZfcHJpdik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCA3MmJiNWI1Li42MWNkMjkwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTIyMzUsNiArMjIzNSwxNiBAQCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUg ewogCXU4IHZvbHRhZ2VfbGV2ZWw7CiB9OwogCitzdHJ1Y3QgaW50ZWxfd29wY21faW5mbyB7CisJ dTMyIHNpemU7Cit9OworCitzdHJ1Y3QgaW50ZWxfd29wY21fcGFydGl0aW9uIHsKKwl1MzIgZ3Vj X3dvcGNtX29mZnNldDsKKwl1MzIgZ3VjX3dvcGNtX3NpemU7CisJdTMyIGd1Y193b3BjbV90b3A7 Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGRybV9kZXZpY2UgZHJt OwogCkBAIC0yMjU4LDYgKzIyNjgsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3Ry dWN0IGludGVsX2h1YyBodWM7CiAJc3RydWN0IGludGVsX2d1YyBndWM7CiAKKwlzdHJ1Y3QgaW50 ZWxfd29wY21faW5mbyB3b3BjbTsKKwlzdHJ1Y3QgaW50ZWxfd29wY21fcGFydGl0aW9uIHdvcGNt X3BhcnRpdGlvbjsKKwogCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwogCiAJc3RydWN0IGludGVsX2dt YnVzIGdtYnVzW0dNQlVTX05VTV9QSU5TXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwppbmRleCAxMGFmZmIzLi43MzQ3ZmQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCkBAIC0zMTIsMTIgKzMxMiwxMiBAQCBfX2NyZWF0ZV9od19jb250ZXh0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljdHgtPmRlc2NfdGVtcGxhdGUg PQogCQlkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYsIGRldl9wcml2LT5tbS5hbGlhc2lu Z19wcGd0dCk7CiAKLQkvKiBHdUMgcmVxdWlyZXMgdGhlIHJpbmcgdG8gYmUgcGxhY2VkIGFib3Zl IEdVQ19XT1BDTV9UT1AuIElmIEd1QyBpcyBub3QKKwkvKiBHdUMgcmVxdWlyZXMgdGhlIHJpbmcg dG8gYmUgcGxhY2VkIGFib3ZlIGd1YyB3b3BjbSB0b3AuIElmIEd1QyBpcyBub3QKIAkgKiBwcmVz ZW50IG9yIG5vdCBpbiB1c2Ugd2Ugc3RpbGwgbmVlZCBhIHNtYWxsIGJpYXMgYXMgcmluZyB3cmFw YXJvdW5kCiAJICogYXQgb2Zmc2V0IDAgc29tZXRpbWVzIGhhbmdzLiBObyBpZGVhIHdoeS4KIAkg Ki8KIAlpZiAoSEFTX0dVQyhkZXZfcHJpdikgJiYgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19s b2FkaW5nKQotCQljdHgtPmdndHRfb2Zmc2V0X2JpYXMgPSBHVUNfV09QQ01fVE9QOworCQljdHgt PmdndHRfb2Zmc2V0X2JpYXMgPSBpbnRlbF9ndWNfd29wY21fdG9wKGRldl9wcml2KTsKIAllbHNl CiAJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IEk5MTVfR1RUX1BBR0VfU0laRTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCAzNWNmOTkxLi5kMzA5ODg0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNjcsMTcgKzY3LDI3IEBACiAjZGVmaW5lIERNQV9H VUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCiAjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdF TlRfVkNSCQkgICgwPDwxKQogI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX0dVQwkJICAoMTw8 MSkKLSNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAq LwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkKIAogI2RlZmluZSBI VUNfU1RBVFVTMiAgICAgICAgICAgICBfTU1JTygweEQzQjApCiAjZGVmaW5lICAgSFVDX0ZXX1ZF UklGSUVEICAgICAgICgxPDw3KQogCiAvKiBEZWZpbmVzIFdPUENNIHNwYWNlIGF2YWlsYWJsZSB0 byBHdUMgZmlybXdhcmUgKi8KKy8qIGRlZmF1bHQgV09QQ00gc2l6ZSAxTUIgKi8KKyNkZWZpbmUg V09QQ01fREVGQVVMVF9TSVpFCQkoMHgxIDw8IDIwKQorLyogcmVzZXJ2ZWQgV09QQ00gc2l6ZSAx NktCICovCisjZGVmaW5lIFdPUENNX1JFU0VSVkVEX1NJWkUJCSgweDQwMDApCisvKiBHVUMgV09Q Q00gT2Zmc2V0IG5lZWQgdG8gYmUgMTZLQiBhbGlnbmVkICovCisjZGVmaW5lIFdPUENNX09GRlNF VF9BTElHTk1FTlQJCSgweDQwMDApCisvKiA4S0Igc3RhY2sgcmVzZXJ2ZWQgZm9yIEd1QyBGVyov CisjZGVmaW5lIEdVQ19XT1BDTV9TVEFDS19SRVNFUlZFRAkoMHgyMDAwKQorLyogMjRLQiBXT1BD TSByZXNlcnZlZCBmb3IgUkM2IENUWCBvbiBCWFQgKi8KKyNkZWZpbmUgQlhUX1dPUENNX1JDNl9S RVNFUlZFRAkJKDB4NjAwMCkKKworI2RlZmluZSBHRU45X0dVQ19XT1BDTV9ERUxUQQkJNAorI2Rl ZmluZSBHRU45X0dVQ19XT1BDTV9PRkZTRVQJCSgweDI0MDAwKQorCiAjZGVmaW5lIEdVQ19XT1BD TV9TSVpFCQkJX01NSU8oMHhjMDUwKQotLyogR3VDIGFkZHJlc3NlcyBiZWxvdyBHVUNfV09QQ01f VE9QIGRvbid0IG1hcCB0aHJvdWdoIHRoZSBHVFQgKi8KLSNkZWZpbmUgICBHVUNfV09QQ01fVE9Q CQkJICAoMHg4MCA8PCAxMikJLyogNTEyS0IgKi8KLSNkZWZpbmUgICBCWFRfR1VDX1dPUENNX1JD Nl9SRVNFUlZFRAkgICgweDEwIDw8IDEyKQkvKiA2NEtCICAqLwogCiAvKiBHdUMgYWRkcmVzc2Vz IGFib3ZlIEdVQ19HR1RUX1RPUCBhbHNvIGRvbid0IG1hcCB0aHJvdWdoIHRoZSBHVFQgKi8KICNk ZWZpbmUgR1VDX0dHVFRfVE9QCQkJMHhGRUUwMDAwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwpp bmRleCA5Njc4NjMwLi4wZWZjZmI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwpAQCAtMzM3 LDcgKzMzNyw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKICAqIFRoaXMgaXMgYSB3cmFwcGVyIHRvIGNyZWF0ZSBhbiBvYmplY3QgZm9y IHVzZSB3aXRoIHRoZSBHdUMuIEluIG9yZGVyIHRvCiAgKiB1c2UgaXQgaW5zaWRlIHRoZSBHdUMs IGFuIG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQgbGlmZXRpbWUsIHNvIHdlIGFsbG9jYXRlCiAg KiBib3RoIHNvbWUgYmFja2luZyBzdG9yYWdlIGFuZCBhIHJhbmdlIGluc2lkZSB0aGUgR2xvYmFs IEdUVC4gV2UgbXVzdCBwaW4KLSAqIGl0IGluIHRoZSBHR1RUIHNvbWV3aGVyZSBvdGhlciB0aGFu IHRoYW4gWzAsIEdVQ19XT1BDTV9UT1ApIGJlY2F1c2UgdGhhdAorICogaXQgaW4gdGhlIEdHVFQg c29tZXdoZXJlIG90aGVyIHRoYW4gdGhhbiBbMCwgZ3VjIHdvcGNtX3RvcCkgYmVjYXVzZSB0aGF0 CiAgKiByYW5nZSBpcyByZXNlcnZlZCBpbnNpZGUgR3VDLgogICoKICAqIFJldHVybjoJQSBpOTE1 X3ZtYSBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgYW4gRVJSX1BUUi4KQEAgLTM1OCw3ICszNTgs OCBAQCBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVs X2d1YyAqZ3VjLCB1MzIgc2l6ZSkKIAkJZ290byBlcnI7CiAKIAlyZXQgPSBpOTE1X3ZtYV9waW4o dm1hLCAwLCBQQUdFX1NJWkUsCi0JCQkgICBQSU5fR0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwg R1VDX1dPUENNX1RPUCk7CisJCQkgICBQSU5fR0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwKKwkJ CSAgIGludGVsX2d1Y193b3BjbV90b3AoZGV2X3ByaXYpKTsKIAlpZiAocmV0KSB7CiAJCXZtYSA9 IEVSUl9QVFIocmV0KTsKIAkJZ290byBlcnI7CkBAIC0zNzMsMTEgKzM3NCw0MiBAQCBzdHJ1Y3Qg aTkxNV92bWEgKmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1 MzIgc2l6ZSkKIAogdTMyIGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQl1MzIgd29wY21fc2l6ZSA9IEdVQ19XT1BDTV9UT1A7CisJc3Ry dWN0IGludGVsX3dvcGNtX3BhcnRpdGlvbiAqd3AgPSAmZGV2X3ByaXYtPndvcGNtX3BhcnRpdGlv bjsKIAotCS8qIE9uIEJYVCwgdGhlIHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNv bnRleHQgKi8KLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCi0JCXdvcGNtX3NpemUgLT0gQlhU X0dVQ19XT1BDTV9SQzZfUkVTRVJWRUQ7CisJR0VNX0JVR19PTighd3AtPmd1Y193b3BjbV9zaXpl KTsKIAotCXJldHVybiB3b3BjbV9zaXplOworCXJldHVybiB3cC0+Z3VjX3dvcGNtX3NpemU7Cit9 CisKK3UzMiBpbnRlbF9ndWNfd29wY21fdG9wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfd29wY21fcGFydGl0aW9uICp3cCA9ICZkZXZfcHJpdi0+ d29wY21fcGFydGl0aW9uOworCisJR0VNX0JVR19PTighZGV2X3ByaXYtPndvcGNtLnNpemUpOwor CisJcmV0dXJuIHdwLT5ndWNfd29wY21fdG9wID8gd3AtPmd1Y193b3BjbV90b3AgOiBkZXZfcHJp di0+d29wY20uc2l6ZTsKK30KKwordTMyIGludGVsX2d1Y193b3BjbV9vZmZzZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF93b3BjbV9wYXJ0aXRp b24gKndwID0gJmRldl9wcml2LT53b3BjbV9wYXJ0aXRpb247CisKKwlHRU1fQlVHX09OKCF3cC0+ Z3VjX3dvcGNtX3NpemUpOworCisJcmV0dXJuIHdwLT5ndWNfd29wY21fb2Zmc2V0OworfQorCisv KgorICogR3VDIGRvZXMgbm90IGFsbG93IGFueSBnZnggR0dUVCBhZGRyZXNzIHRoYXQgZmFsbHMg aW50byByYW5nZSBbMCwgV09QQ01fVE9QKSwKKyAqIHdoaWNoIGlzIHJlc2VydmVkIGZvciBCb290 IFJPTSwgU1JBTSBhbmQgV09QQ00uIEFsbCBnZnggb2JqZWN0cworICogdXNlZCBieSBHdUMgaXMg cGlubmVkIHdpdGggUElOX09GRlNFVF9CSUFTIGFsb25nIHdpdGggdG9wIG9mIFdPUENNLgorICov Cit1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHZtYS0+dm0tPmk5MTU7CisJdTMyIG9mZnNldCA9 IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKKworCUdFTV9CVUdfT04ob2Zmc2V0IDwgaW50ZWxfZ3Vj X3dvcGNtX3RvcChkZXZfcHJpdikpOworCUdFTV9CVUdfT04ocmFuZ2Vfb3ZlcmZsb3dzX3QodTY0 LCBvZmZzZXQsIHZtYS0+c2l6ZSwgR1VDX0dHVFRfVE9QKSk7CisJcmV0dXJuIG9mZnNldDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5kZXggNjA3ZTAyNS4uMTQ5M2RlMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTEwMCwyMSArMTAwLDYgQEAgc3RhdGljIGlubGluZSB2b2lk IGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWd1Yy0+bm90aWZ5KGd1 Yyk7CiB9CiAKLS8qCi0gKiBHdUMgZG9lcyBub3QgYWxsb3cgYW55IGdmeCBHR1RUIGFkZHJlc3Mg dGhhdCBmYWxscyBpbnRvIHJhbmdlIFswLCBXT1BDTV9UT1ApLAotICogd2hpY2ggaXMgcmVzZXJ2 ZWQgZm9yIEJvb3QgUk9NLCBTUkFNIGFuZCBXT1BDTS4gQ3VycmVudGx5IHRoaXMgdG9wIGFkZHJl c3MgaXMKLSAqIDUxMksuIEluIG9yZGVyIHRvIGV4Y2x1ZGUgMC01MTJLIGFkZHJlc3Mgc3BhY2Ug ZnJvbSBHR1RULCBhbGwgZ2Z4IG9iamVjdHMKLSAqIHVzZWQgYnkgR3VDIGlzIHBpbm5lZCB3aXRo IFBJTl9PRkZTRVRfQklBUyBhbG9uZyB3aXRoIHNpemUgb2YgV09QQ00uCi0gKi8KLXN0YXRpYyBp bmxpbmUgdTMyIGd1Y19nZ3R0X29mZnNldChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKLXsKLQl1MzIg b2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwotCi0JR0VNX0JVR19PTihvZmZzZXQgPCBH VUNfV09QQ01fVE9QKTsKLQlHRU1fQlVHX09OKHJhbmdlX292ZXJmbG93c190KHU2NCwgb2Zmc2V0 LCB2bWEtPnNpemUsIEdVQ19HR1RUX1RPUCkpOwotCi0JcmV0dXJuIG9mZnNldDsKLX0KIAogdm9p ZCBpbnRlbF9ndWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogdm9pZCBpbnRl bF9ndWNfaW5pdF9zZW5kX3JlZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKQEAgLTEyNyw1ICsx MTIsOCBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0 IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSk7CiB1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3UzMiBpbnRlbF9ndWNfd29wY21fdG9w KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit1MzIgaW50ZWxfZ3VjX3dvcGNt X29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordTMyIGd1Y19nZ3R0 X29mZnNldChzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9odWMuYwppbmRleCA5OGQxNzI1Li5hOTg1YWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9odWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMu YwpAQCAtMjAyLDcgKzIwMiw4IEBAIHZvaWQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1 YyAqaHVjKQogCQlyZXR1cm47CiAKIAl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVj LT5mdy5vYmosIE5VTEwsIDAsIDAsCi0JCQkJUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RP UCk7CisJCQkJUElOX09GRlNFVF9CSUFTIHwKKwkJCQlpbnRlbF9ndWNfd29wY21fdG9wKGk5MTUp KTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIGh1YyBm dyBvYmplY3QgJWRcbiIsCiAJCQkJKGludClQVFJfRVJSKHZtYSkpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmMKaW5kZXggYWVjMjk1NC4uODNiMjUxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCkBA IC04Niw2ICs4NiwxMjUgQEAgdm9pZCBpbnRlbF91Y19pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAlpbnRlbF9ndWNfaW5pdF9lYXJseSgmZGV2X3ByaXYtPmd1 Yyk7CiB9CiAKK3N0YXRpYyB1MzIgcmM2X2NvbnRleHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJLyogT24gQlhULCB0aGUgdG9wIG9mIFdPUENNIGlzIHJlc2Vy dmVkIGZvciBSQzYgY29udGV4dCAqLworCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKKwkJcmV0 dXJuIEJYVF9XT1BDTV9SQzZfUkVTRVJWRUQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBkb193b3BjbV9wYXJ0aXRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CXUzMiBvZmZzZXQsIHUzMiByZXNlcnZlZF9zaXplKQoreworCXN0cnVjdCBpbnRlbF93b3BjbV9w YXJ0aXRpb24gKndwID0gJmRldl9wcml2LT53b3BjbV9wYXJ0aXRpb247CisJdTMyIGFsaWduZWRf b2Zmc2V0ID0gQUxJR04ob2Zmc2V0LCBXT1BDTV9PRkZTRVRfQUxJR05NRU5UKTsKKworCWlmIChv ZmZzZXQgPj0gZGV2X3ByaXYtPndvcGNtLnNpemUpCisJCXJldHVybiAtRTJCSUc7CisKKwlpZiAo cmVzZXJ2ZWRfc2l6ZSA+PSBkZXZfcHJpdi0+d29wY20uc2l6ZSkKKwkJcmV0dXJuIC1FMkJJRzsK KworCWlmICgoYWxpZ25lZF9vZmZzZXQgKyByZXNlcnZlZF9zaXplKSA+PSBkZXZfcHJpdi0+d29w Y20uc2l6ZSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCXdwLT5ndWNfd29wY21fb2Zmc2V0ID0gYWxp Z25lZF9vZmZzZXQ7CisJd3AtPmd1Y193b3BjbV90b3AgPSBkZXZfcHJpdi0+d29wY20uc2l6ZSAt IHdwLT5ndWNfd29wY21fb2Zmc2V0OworCXdwLT5ndWNfd29wY21fc2l6ZSA9IHdwLT5ndWNfd29w Y21fdG9wIC0gcmVzZXJ2ZWRfc2l6ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlu dGVsX3VjX2luaXRfd29wY21fcGFydGl0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfd29wY21fcGFydGl0aW9uICp3cCA9ICZkZXZfcHJpdi0+ d29wY21fcGFydGl0aW9uOworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5m dzsKKwlzaXplX3QgaHVjX3NpemUsIGd1Y19zaXplOworCXUzMiBvZmZzZXQ7CisJdTMyIHJlc2Vy dmVkOworCXUzMiB3b3BjbV9iYXNlOworCXUzMiBkZWx0YTsKKwlpbnQgZXJyOworCisJLypSZXR1 cm4gaWYgV09QQ00gcGFydGl0aW9uIGhhcyBiZWVuIGluaXRpYWxpemVkKi8KKwlpZiAod3AtPmd1 Y193b3BjbV9zaXplKQorCQlyZXR1cm4gMDsKKworCUdFTV9CVUdfT04oIWRldl9wcml2LT53b3Bj bS5zaXplKTsKKworCS8qTm8gbmVlZCB0byBkbyBwYXJ0aXRpb24gaWYgZmFpbGVkIHRvIGZldGNo IGJvdGggR3VDIGFuZCBIdUMgRlcqLworCWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRF TF9VQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVM X1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJCXJldHVybiAtRUlPOworCisJaHVjX3NpemUgPSAwOwor CWd1Y19zaXplID0gMDsKKwlvZmZzZXQgPSBXT1BDTV9SRVNFUlZFRF9TSVpFOworCXJlc2VydmVk ID0gcmM2X2NvbnRleHRfc2l6ZShkZXZfcHJpdik7CisKKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0 dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKKwkJaHVjX3NpemUgPSBodWNfZnctPmhl YWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOworCisJZXJyID0gZG9fd29wY21fcGFydGl0 aW9uKGRldl9wcml2LCBvZmZzZXQgKyBodWNfc2l6ZSwgcmVzZXJ2ZWQpOworCWlmIChlcnIpIHsK KwkJaWYgKCFodWNfc2l6ZSkKKwkJCWdvdG8gcHRfZG9uZTsKKworCQkvKnBhcnRpdGlvbiBmYWls ZWQgd2l0aCBIdUMgRlcsIGJsb2NrIEh1QyBsb2FkaW5nKi8KKwkJaHVjX3NpemUgPSAwOworCisJ CS8qcGFydGl0aW9uIHdpdGhvdXQgbG9hZGluZyBIdUMgRlcqLworCQllcnIgPSBkb193b3BjbV9w YXJ0aXRpb24oZGV2X3ByaXYsIG9mZnNldCwgcmVzZXJ2ZWQpOworCQlpZiAoZXJyKQorCQkJZ290 byBwdF9kb25lOworCX0KKworCS8qCisJICogQ2hlY2sgaGFyZHdhcmUgcmVzdHJpY3Rpb24gb24g R2VuOQorCSAqIEd1QyBXT1BDTSBzaXplIGlzIGF0IGxlYXN0IDQgYnl0ZXMgbGFyZ2VyIHRoYW4g R3VDIFdPUENNIGJhc2UgZHVlCisJICogdG8gaGFyZHdhcmUgbGltaXRhdGlvbiBvbiBHZW45Lgor CSAqLworCWlmIChJU19HRU45KGRldl9wcml2KSkgeworCQl3b3BjbV9iYXNlID0gd3AtPmd1Y193 b3BjbV9vZmZzZXQgKyBHRU45X0dVQ19XT1BDTV9PRkZTRVQ7CisJCWlmICh1bmxpa2VseSh3b3Bj bV9iYXNlID4gd3AtPmd1Y193b3BjbV9zaXplKSkKKwkJCWdvdG8gcHRfZG9uZTsKKworCQlkZWx0 YSA9IHdwLT5ndWNfd29wY21fc2l6ZSAtIHdvcGNtX2Jhc2U7CisJCWlmICh1bmxpa2VseShkZWx0 YSA8IEdFTjlfR1VDX1dPUENNX0RFTFRBKSkKKwkJCWdvdG8gcHRfZG9uZTsKKwl9CisKKwlpZiAo Z3VjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykgeworCQln dWNfc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJCS8q bmVlZCA4SyBzdGFjayBmb3IgR3VDKi8KKwkJZ3VjX3NpemUgKz0gR1VDX1dPUENNX1NUQUNLX1JF U0VSVkVEOworCX0KKworCWlmIChndWNfc2l6ZSA+IHdwLT5ndWNfd29wY21fc2l6ZSkKKwkJZ3Vj X3NpemUgPSAwOworCitwdF9kb25lOgorCWlmICghaHVjX3NpemUpIHsKKwkJRFJNX0VSUk9SKCJI dUMgZmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7CisJCWludGVsX3Vj X2Z3X2ZpbmkoaHVjX2Z3KTsKKwl9CisKKwlpZiAoIWd1Y19zaXplKSB7CisJCURSTV9FUlJPUigi R3VDIGZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOworCQlpbnRlbF91 Y19md19maW5pKGd1Y19mdyk7CisJfQorCisJRFJNX0RFQlVHX0RSSVZFUigiR3VDIFdPUENNIG9m ZnNldCAlZEtCLCBzaXplICVkS0IsIHRvcCAlZEtCXG4iLAorCQl3cC0+Z3VjX3dvcGNtX29mZnNl dCA+PiAxMCwKKwkJd3AtPmd1Y193b3BjbV9zaXplID4+IDEwLAorCQl3cC0+Z3VjX3dvcGNtX3Rv cCA+PiAxMCk7CisKKwlyZXR1cm4gZXJyOworfQorCiB2b2lkIGludGVsX3VjX2luaXRfZncoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWludGVsX3VjX2Z3X2ZldGNoKGRl dl9wcml2LCAmZGV2X3ByaXYtPmh1Yy5mdyk7CkBAIC0xNTcsNiArMjc2LDExIEBAIGludCBpbnRl bF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIWk5 MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9hZGluZykKIAkJcmV0dXJuIDA7CiAKKwkvKmluaXQg V09QQ00gcGFydGl0aW9uKi8KKwlyZXQgPSBpbnRlbF91Y19pbml0X3dvcGNtX3BhcnRpdGlvbihk ZXZfcHJpdik7CisJaWYgKHJldCkKKwkJZ290byBlcnJfd29wY207CisKIAlndWNfZGlzYWJsZV9j b21tdW5pY2F0aW9uKGd1Yyk7CiAJZ2VuOV9yZXNldF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7 CiAKQEAgLTE3Niw3ICszMDAsNyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogaW5pdCBXT1BDTSAqLwogCUk5MTVfV1JJVEUoR1VD X1dPUENNX1NJWkUsIGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CiAJSTkxNV9XUklU RShETUFfR1VDX1dPUENNX09GRlNFVCwKLQkJICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8IEhV Q19MT0FESU5HX0FHRU5UX0dVQyk7CisJCWludGVsX2d1Y193b3BjbV9vZmZzZXQoZGV2X3ByaXYp IHwgSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKIAogCS8qIFdhRW5hYmxldUtlcm5lbEhlYWRlclZh bGlkRml4OnNrbCAqLwogCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0 LGtibCAqLwpAQCAtMjQ5LDcgKzM3Myw3IEBAIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRl dl9wcml2KTsKIGVycl9ndWM6CiAJaTkxNV9nZ3R0X2Rpc2FibGVfZ3VjKGRldl9wcml2KTsKLQor ZXJyX3dvcGNtOgogCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcgPiAxIHx8 CiAJICAgIGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbiA+IDEpIHsKIAkJRFJN X0VSUk9SKCJHdUMgaW5pdCBmYWlsZWQuIEZpcm13YXJlIGxvYWRpbmcgZGlzYWJsZWQuXG4iKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCmluZGV4IDk3Mzg4OGUuLmFlZmJhMTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwpAQCAtOTUsOSArOTUsMTMgQEAgdm9pZCBpbnRlbF91 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJdWNfZnctPnVj b2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnctPmhlYWRlcl9zaXplOwog CXVjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcp ICogc2l6ZW9mKHUzMik7CiAKLQkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRv IFdPUENNICovCisJLyoKKwkgKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdP UENNCisJICogT25seSBjaGVjayB0aGUgc2l6ZSBhZ2FpbnN0IHRoZSBvdmVyYWxsIGF2YWlsYWJs ZSBXT1BDTSBoZXJlLiBXaWxsCisJICogY29udGludWUgdG8gY2hlY2sgdGhlIHNpemUgZHVyaW5n IFdPUENNIHBhcnRpdGlvbiBjYWxjdWxhdGlvbi4KKwkgKi8KIAlzaXplID0gdWNfZnctPmhlYWRl cl9zaXplICsgdWNfZnctPnVjb2RlX3NpemU7Ci0JaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21f c2l6ZShkZXZfcHJpdikpIHsKKwlpZiAoc2l6ZSA+IGRldl9wcml2LT53b3BjbS5zaXplKSB7CiAJ CURSTV9XQVJOKCIlczogRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIiwK IAkJCSBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpKTsKIAkJZXJyID0gLUUyQklH OwpAQCAtMjA3LDYgKzIxMSw3IEBAIGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVs X3VjX2Z3ICp1Y19mdywKIAkJICAgICAgIGludCAoKnhmZXIpKHN0cnVjdCBpbnRlbF91Y19mdyAq dWNfZncsCiAJCQkJICAgc3RydWN0IGk5MTVfdm1hICp2bWEpKQogeworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh1Y19mdy0+b2JqLT5iYXNlLmRldik7CiAJc3RydWN0 IGk5MTVfdm1hICp2bWE7CiAJaW50IGVycjsKIApAQCAtMjMwLDcgKzIzNSw4IEBAIGludCBpbnRl bF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAl9CiAKIAl2bWEgPSBp OTE1X2dlbV9vYmplY3RfZ2d0dF9waW4odWNfZnctPm9iaiwgTlVMTCwgMCwgMCwKLQkJCQkgICAg ICAgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7CisJCQkJICAgICAgIFBJTl9PRkZT RVRfQklBUyB8CisJCQkJICAgICAgIGludGVsX2d1Y193b3BjbV90b3AoaTkxNSkpOwogCWlmIChJ U19FUlIodm1hKSkgewogCQllcnIgPSBQVFJfRVJSKHZtYSk7CiAJCURSTV9ERUJVR19EUklWRVIo IiVzIGZ3IGdndHQtcGluIGVycj0lZFxuIiwKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK