From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v4 4/8] mm: Scrub memory from idle loop Date: Fri, 19 May 2017 11:50:36 -0400 Message-ID: <1495209040-11101-5-git-send-email-boris.ostrovsky@oracle.com> References: <1495209040-11101-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1495209040-11101-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiBzY3J1YmJpbmcgcGFnZXMgZHVyaW5nIGd1ZXN0IGRlc3RydWN0aW9uIChmcm9t CmZyZWVfaGVhcF9wYWdlcygpKSBkbyB0aGlzIG9wcG9ydHVuaXN0aWNhbGx5LCBmcm9tIHRoZSBp ZGxlIGxvb3AuCgpTaWduZWQtb2ZmLWJ5OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNr eUBvcmFjbGUuY29tPgotLS0KQ2hhbmdlcyBpbiB2NDoKKiBCZSBjYXJlZnVsIHdpdGggdGFza2xl dHMgaW4gaWRsZV9sb29wKCkKKiBVc2UgcGVyLWNwdSBtYXBjYWNoZSBvdmVycmlkZQoqIFVwZGF0 ZSBub2RlX3RvX3NjcnViKCkgYWxnb3JpdGhtIHRvIHNlbGVjdCBjbG9zZXN0IG5vZGUgKGFuZCBh ZGQgY29tbWVudAogICBleHBsYWluaW5nIHdoYXQgaXQgZG9lcykKKiBQdXQgYnVkZHkgYmFjayBp biB0aGUgaGVhcCBkaXJlY3RseSAoYXMgb3Bwb3NlZCB0byB1c2luZyBtZXJnZV9hbmRfZnJlZV9i dWRkeSgpCiAgd2hpY2ggaXMgZHJvcHBlZCBhbnl3YXkpCiogRG9uJ3Qgc3RvcCBzY3J1YmJpbmcg aW1tZWRpYXRlbHkgd2hlbiBzb2Z0aXJxIGlzIHBlbmRpbmcsIHRyeSB0byBzY3J1YiBhdCBsZWFz dAogIGEgZmV3ICg4KSBwYWdlcy4KCiB4ZW4vYXJjaC9hcm0vZG9tYWluLmMgICAgICB8ICAxNiAr KysrLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICB8ICAgMyArLQogeGVuL2FyY2gveDg2 L2RvbWFpbl9wYWdlLmMgfCAgIDggKystLQogeGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgICAgfCAx MTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiB4ZW4vaW5j bHVkZS94ZW4vbW0uaCAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRp b25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWlu LmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMKaW5kZXggNzYzMTBlZC4uOTkzMWNhMiAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwpA QCAtNDYsMTUgKzQ2LDE5IEBAIHZvaWQgaWRsZV9sb29wKHZvaWQpCiAgICAgICAgIGlmICggY3B1 X2lzX29mZmxpbmUoc21wX3Byb2Nlc3Nvcl9pZCgpKSApCiAgICAgICAgICAgICBzdG9wX2NwdSgp OwogCi0gICAgICAgIGxvY2FsX2lycV9kaXNhYmxlKCk7Ci0gICAgICAgIGlmICggY3B1X2lzX2hh bHRhYmxlKHNtcF9wcm9jZXNzb3JfaWQoKSkgKQorICAgICAgICBkb190YXNrbGV0KCk7CisKKyAg ICAgICAgaWYgKCBjcHVfaXNfaGFsdGFibGUoc21wX3Byb2Nlc3Nvcl9pZCgpKSAmJiAhc2NydWJf ZnJlZV9wYWdlcygpICkKICAgICAgICAgewotICAgICAgICAgICAgZHNiKHN5KTsKLSAgICAgICAg ICAgIHdmaSgpOworICAgICAgICAgICAgbG9jYWxfaXJxX2Rpc2FibGUoKTsKKyAgICAgICAgICAg IGlmICggY3B1X2lzX2hhbHRhYmxlKHNtcF9wcm9jZXNzb3JfaWQoKSkgKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIGRzYihzeSk7CisgICAgICAgICAgICAgICAgd2ZpKCk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBsb2NhbF9pcnFfZW5hYmxlKCk7CiAgICAgICAgIH0KLSAg ICAgICAgbG9jYWxfaXJxX2VuYWJsZSgpOwogCi0gICAgICAgIGRvX3Rhc2tsZXQoKTsKICAgICAg ICAgZG9fc29mdGlycSgpOwogICAgICAgICAvKgogICAgICAgICAgKiBXZSBNVVNUIGJlIGxhc3Qg KG9yIGJlZm9yZSBkc2IsIHdmaSkuIE90aGVyd2lzZSBhZnRlciB3ZSBnZXQgdGhlCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXgg MTNjZGM1MC4uMjI5NzExZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBi L3hlbi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtMTE4LDggKzExOCw5IEBAIHN0YXRpYyB2b2lkIGlk bGVfbG9vcCh2b2lkKQogICAgIHsKICAgICAgICAgaWYgKCBjcHVfaXNfb2ZmbGluZShzbXBfcHJv Y2Vzc29yX2lkKCkpICkKICAgICAgICAgICAgIHBsYXlfZGVhZCgpOwotICAgICAgICAoKnBtX2lk bGUpKCk7CiAgICAgICAgIGRvX3Rhc2tsZXQoKTsKKyAgICAgICAgaWYgKCBjcHVfaXNfaGFsdGFi bGUoc21wX3Byb2Nlc3Nvcl9pZCgpKSAmJiAhc2NydWJfZnJlZV9wYWdlcygpICkKKyAgICAgICAg ICAgICgqcG1faWRsZSkoKTsKICAgICAgICAgZG9fc29mdGlycSgpOwogICAgICAgICAvKgogICAg ICAgICAgKiBXZSBNVVNUIGJlIGxhc3QgKG9yIGJlZm9yZSBwbV9pZGxlKS4gT3RoZXJ3aXNlIGFm dGVyIHdlIGdldCB0aGUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jIGIv eGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKaW5kZXggNzFiYWVkZS4uY2ZlN2NjMSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFp bl9wYWdlLmMKQEAgLTE4LDEyICsxOCwxNCBAQAogI2luY2x1ZGUgPGFzbS9oYXJkaXJxLmg+CiAj aW5jbHVkZSA8YXNtL3NldHVwLmg+CiAKLXN0YXRpYyBzdHJ1Y3QgdmNwdSAqX19yZWFkX21vc3Rs eSBvdmVycmlkZTsKK3N0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgdmNwdSAqLCBvdmVycmlk ZSk7CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjcHUgKm1hcGNhY2hlX2N1cnJlbnRfdmNwdSh2 b2lkKQogeworICAgIHN0cnVjdCB2Y3B1ICp2LCAqdGhpc192Y3B1ID0gdGhpc19jcHUob3ZlcnJp ZGUpOworCiAgICAgLyogSW4gdGhlIGNvbW1vbiBjYXNlIHdlIHVzZSB0aGUgbWFwY2FjaGUgb2Yg dGhlIHJ1bm5pbmcgVkNQVS4gKi8KLSAgICBzdHJ1Y3QgdmNwdSAqdiA9IG92ZXJyaWRlID86IGN1 cnJlbnQ7CisgICAgdiA9IHRoaXNfdmNwdSA/OiBjdXJyZW50OwogCiAgICAgLyoKICAgICAgKiBX aGVuIGN1cnJlbnQgaXNuJ3QgcHJvcGVybHkgc2V0IHVwIHlldCwgdGhpcyBpcyBlcXVpdmFsZW50 IHRvCkBAIC01OSw3ICs2MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjcHUgKm1hcGNhY2hl X2N1cnJlbnRfdmNwdSh2b2lkKQogCiB2b2lkIF9faW5pdCBtYXBjYWNoZV9vdmVycmlkZV9jdXJy ZW50KHN0cnVjdCB2Y3B1ICp2KQogewotICAgIG92ZXJyaWRlID0gdjsKKyAgICB0aGlzX2NwdShv dmVycmlkZSkgPSB2OwogfQogCiAjZGVmaW5lIG1hcGNhY2hlX2wyX2VudHJ5KGUpICgoZSkgPj4g UEFHRVRBQkxFX09SREVSKQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgYi94 ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwppbmRleCBiN2M3NDI2Li42ZTUwNWIxIDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYworKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwpA QCAtMTAxMCwxNSArMTAxMCw3OSBAQCBzdGF0aWMgaW50IHJlc2VydmVfb2ZmbGluZWRfcGFnZShz dHJ1Y3QgcGFnZV9pbmZvICpoZWFkKQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIHZv aWQgc2NydWJfZnJlZV9wYWdlcyh1bnNpZ25lZCBpbnQgbm9kZSkKK3N0YXRpYyBub2RlbWFza190 IG5vZGVfc2NydWJiaW5nOworCisvKgorICogSWYgZ2V0X25vZGUgaXMgdHJ1ZSB0aGlzIHdpbGwg cmV0dXJuIGNsb3Nlc3Qgbm9kZSB0aGF0IG5lZWRzIHRvIGJlIHNjcnViYmVkLAorICogd2l0aCBh cHByb3ByaWF0ZSBiaXQgaW4gbm9kZV9zY3J1YmJpbmcgc2V0LgorICogSWYgZ2V0X25vZGUgaXMg bm90IHNldCwgdGhpcyB3aWxsIHJldHVybiAqYSogbm9kZSB0aGF0IG5lZWRzIHRvIGJlIHNjcnVi YmVkLgorICogbm9kZV9zY3J1YmJpbmcgYml0bWFzayB3aWxsIG5vIGJlIHVwZGF0ZWQuCisgKiBJ ZiBubyBub2RlIG5lZWRzIHNjcnViYmluZyB0aGVuIE5VTUFfTk9fTk9ERSBpcyByZXR1cm5lZC4K KyAqLworc3RhdGljIHVuc2lnbmVkIGludCBub2RlX3RvX3NjcnViKGJvb2wgZ2V0X25vZGUpCiB7 Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7Ci0gICAgdW5zaWduZWQgaW50IHpvbmU7CisgICAg bm9kZWlkX3Qgbm9kZSA9IGNwdV90b19ub2RlKHNtcF9wcm9jZXNzb3JfaWQoKSksIGxvY2FsX25v ZGU7CisgICAgbm9kZWlkX3QgY2xvc2VzdCA9IE5VTUFfTk9fTk9ERTsKKyAgICB1OCBkaXN0LCBz aG9ydGVzdCA9IDB4ZmY7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmhlYXBfbG9jaykp OworICAgIGlmICggbm9kZSA9PSBOVU1BX05PX05PREUgKQorICAgICAgICBub2RlID0gMDsKIAot ICAgIGlmICggIW5vZGVfbmVlZF9zY3J1Yltub2RlXSApCi0gICAgICAgIHJldHVybjsKKyAgICBp ZiAoIG5vZGVfbmVlZF9zY3J1Yltub2RlXSAmJgorICAgICAgICAgKCFnZXRfbm9kZSB8fCAhbm9k ZV90ZXN0X2FuZF9zZXQobm9kZSwgbm9kZV9zY3J1YmJpbmcpKSApCisgICAgICAgIHJldHVybiBu b2RlOworCisgICAgLyoKKyAgICAgKiBTZWUgaWYgdGhlcmUgYXJlIG1lbW9yeS1vbmx5IG5vZGVz IHRoYXQgbmVlZCBzY3J1YmJpbmcgYW5kIGNob29zZQorICAgICAqIHRoZSBjbG9zZXN0IG9uZS4K KyAgICAgKi8KKyAgICBsb2NhbF9ub2RlID0gbm9kZTsKKyAgICB3aGlsZSAoIDEgKQorICAgIHsK KyAgICAgICAgZG8geworICAgICAgICAgICAgbm9kZSA9IGN5Y2xlX25vZGUobm9kZSwgbm9kZV9v bmxpbmVfbWFwKTsKKyAgICAgICAgfSB3aGlsZSAoICFjcHVtYXNrX2VtcHR5KCZub2RlX3RvX2Nw dW1hc2sobm9kZSkpICYmCisgICAgICAgICAgICAgICAgICAobm9kZSAhPSBsb2NhbF9ub2RlKSAp OworCisgICAgICAgIGlmICggbm9kZSA9PSBsb2NhbF9ub2RlICkKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGlmICggbm9kZV9uZWVkX3NjcnViW25vZGVdICkKKyAgICAgICAgeworICAg ICAgICAgICAgaWYgKCAhZ2V0X25vZGUgKQorICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwor CisgICAgICAgICAgICBkaXN0ID0gX19ub2RlX2Rpc3RhbmNlKGxvY2FsX25vZGUsIG5vZGUpOwor ICAgICAgICAgICAgaWYgKCBkaXN0IDwgc2hvcnRlc3QgfHwgY2xvc2VzdCA9PSBOVU1BX05PX05P REUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggIW5vZGVfdGVzdF9hbmRf c2V0KG5vZGUsIG5vZGVfc2NydWJiaW5nKSApCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICBpZiAoIGNsb3Nlc3QgIT0gTlVNQV9OT19OT0RFICkKKyAgICAgICAgICAgICAg ICAgICAgICAgIG5vZGVfY2xlYXIoY2xvc2VzdCwgbm9kZV9zY3J1YmJpbmcpOworICAgICAgICAg ICAgICAgICAgICBzaG9ydGVzdCA9IGRpc3Q7CisgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3Qg PSBub2RlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg IH0KKworICAgIHJldHVybiBjbG9zZXN0OworfQorCitib29sIHNjcnViX2ZyZWVfcGFnZXModm9p ZCkKK3sKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKKyAgICB1bnNpZ25lZCBpbnQgem9uZTsK KyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIGJvb2wgcHJl ZW1wdCA9IGZhbHNlOworICAgIG5vZGVpZF90IG5vZGU7CisgICAgdW5zaWduZWQgaW50IGNudCA9 IDA7CisgIAorICAgIG5vZGUgPSBub2RlX3RvX3NjcnViKHRydWUpOworICAgIGlmICggbm9kZSA9 PSBOVU1BX05PX05PREUgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgc3Bpbl9sb2Nr KCZoZWFwX2xvY2spOwogCiAgICAgZm9yICggem9uZSA9IDA7IHpvbmUgPCBOUl9aT05FUzsgem9u ZSsrICkKICAgICB7CkBAIC0xMDM1LDIyICsxMDk5LDQ2IEBAIHN0YXRpYyB2b2lkIHNjcnViX2Zy ZWVfcGFnZXModW5zaWduZWQgaW50IG5vZGUpCiAKICAgICAgICAgICAgICAgICBmb3IgKCBpID0g cGctPnUuZnJlZS5maXJzdF9kaXJ0eTsgaSA8ICgxVSA8PCBvcmRlcik7IGkrKykKICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgICAgICAgICAgICAg ICBpZiAoIHRlc3RfYml0KF9QR0NfbmVlZF9zY3J1YiwgJnBnW2ldLmNvdW50X2luZm8pICkKICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgc2NydWJfb25lX3Bh Z2UoJnBnW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHBnW2ldLmNvdW50X2luZm8gJj0g flBHQ19uZWVkX3NjcnViOwogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV9uZWVkX3NjcnVi W25vZGVdLS07CisgICAgICAgICAgICAgICAgICAgICAgICBjbnQgKz0gMTAwOyAvKiBzY3J1YmJl ZCBwYWdlcyBhZGQgaGVhdmllciB3ZWlnaHQuICovCiAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwYWdlX2xpc3RfZGVsKHBnLCAmaGVh cChub2RlLCB6b25lLCBvcmRlcikpOwotICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9hZGRfc2Ny dWIocGcsIG5vZGUsIHpvbmUsIG9yZGVyLCBJTlZBTElEX0RJUlRZX0lEWCk7CisgICAgICAgICAg ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFNjcnViIGEgZmV3ICg4KSBwYWdl cyBiZWZvcmUgYmVjb21pbmcgZWxpZ2libGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAqIHBy ZWVtdGlvbi4gQnV0IGFsc28gY291bnQgbm9uLXNjcnViYmluZyBsb29wIGl0ZXJhdGlvbgorICAg ICAgICAgICAgICAgICAgICAgKiBzbyB0aGF0IHdlIGRvbid0IGdldCBzdHVjayBoZXJlIHdpdGgg YW4gYWxtb3N0IGNsZWFuCisgICAgICAgICAgICAgICAgICAgICAqIGhlYXAuCisgICAgICAgICAg ICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBpZiAoIHNvZnRpcnFfcGVuZGluZyhj cHUpICYmIGNudCA+IDgwMCApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHByZWVtcHQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg ICAgICBpZiAoIG5vZGVfbmVlZF9zY3J1Yltub2RlXSA9PSAwICkKLSAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGlmICggaSA9PSAoMVUgPDwgb3JkZXIpICkKKyAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocGcsICZo ZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9h ZGRfc2NydWIocGcsIG5vZGUsIHpvbmUsIG9yZGVyLCBJTlZBTElEX0RJUlRZX0lEWCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg cGctPnUuZnJlZS5maXJzdF9kaXJ0eSA9IGkgKyAxOworIAorICAgICAgICAgICAgICAgIGlmICgg cHJlZW1wdCB8fCAobm9kZV9uZWVkX3NjcnViW25vZGVdID09IDApICkKKyAgICAgICAgICAgICAg ICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKCBvcmRlci0t ICE9IDAgKTsKICAgICB9CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJmhlYXBfbG9jayk7Cisg ICAgbm9kZV9jbGVhcihub2RlLCBub2RlX3NjcnViYmluZyk7CisgICAgcmV0dXJuIHNvZnRpcnFf cGVuZGluZyhjcHUpIHx8IChub2RlX3RvX3NjcnViKGZhbHNlKSAhPSBOVU1BX05PX05PREUpOwog fQogCiAvKiBGcmVlIDJeQG9yZGVyIHNldCBvZiBwYWdlcy4gKi8KQEAgLTExNjYsOSArMTI1NCw2 IEBAIHN0YXRpYyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKICAgICBpZiAoIHRhaW50ZWQgKQogICAg ICAgICByZXNlcnZlX29mZmxpbmVkX3BhZ2UocGcpOwogCi0gICAgaWYgKCBuZWVkX3NjcnViICkK LSAgICAgICAgc2NydWJfZnJlZV9wYWdlcyhub2RlKTsKLQogICAgIHNwaW5fdW5sb2NrKCZoZWFw X2xvY2spOwogfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbW0uaCBiL3hlbi9pbmNs dWRlL3hlbi9tbS5oCmluZGV4IDBkNGI3YzIuLmVkOTBhNjEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL3hlbi9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCkBAIC0xMzgsNiArMTM4LDcg QEAgdm9pZCBpbml0X3hlbmhlYXBfcGFnZXMocGFkZHJfdCBwcywgcGFkZHJfdCBwZSk7CiB2b2lk IHhlbmhlYXBfbWF4X21mbih1bnNpZ25lZCBsb25nIG1mbik7CiB2b2lkICphbGxvY194ZW5oZWFw X3BhZ2VzKHVuc2lnbmVkIGludCBvcmRlciwgdW5zaWduZWQgaW50IG1lbWZsYWdzKTsKIHZvaWQg ZnJlZV94ZW5oZWFwX3BhZ2VzKHZvaWQgKnYsIHVuc2lnbmVkIGludCBvcmRlcik7Citib29sIHNj cnViX2ZyZWVfcGFnZXModm9pZCk7CiAjZGVmaW5lIGFsbG9jX3hlbmhlYXBfcGFnZSgpIChhbGxv Y194ZW5oZWFwX3BhZ2VzKDAsMCkpCiAjZGVmaW5lIGZyZWVfeGVuaGVhcF9wYWdlKHYpIChmcmVl X3hlbmhlYXBfcGFnZXModiwwKSkKIC8qIE1hcCBtYWNoaW5lIHBhZ2UgcmFuZ2UgaW4gWGVuIHZp cnR1YWwgYWRkcmVzcyBzcGFjZS4gKi8KLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK