From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v6 1/8] mm: Place unscrubbed pages at the end of pagelist Date: Fri, 4 Aug 2017 13:05:39 -0400 Message-ID: <1501866346-9774-2-git-send-email-boris.ostrovsky@oracle.com> References: <1501866346-9774-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: <1501866346-9774-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 LiBzbyB0aGF0IGl0J3MgZWFzeSB0byBmaW5kIHBhZ2VzIHRoYXQgbmVlZCB0byBiZSBzY3J1YmJl ZCAodGhvc2UgcGFnZXMgYXJlCm5vdyBtYXJrZWQgd2l0aCBfUEdDX25lZWRfc2NydWIgYml0KS4K CldlIGtlZXAgdHJhY2sgb2YgdGhlIGZpcnN0IHVuc2NydWJiZWQgcGFnZSBpbiBhIHBhZ2UgYnVk ZHkgdXNpbmcgZmlyc3RfZGlydHkKZmllbGQuIEZvciBub3cgaXQgY2FuIGhhdmUgdHdvIHZhbHVl cywgMCAod2hvbGUgYnVkZHkgbmVlZHMgc2NydWJiaW5nKSBvcgpJTlZBTElEX0RJUlRZX0lEWCAo dGhlIGJ1ZGR5IGRvZXMgbm90IG5lZWQgdG8gYmUgc2NydWJiZWQpLiBTdWJzZXF1ZW50IHBhdGNo ZXMKd2lsbCBhbGxvdyBzY3J1YmJpbmcgdG8gYmUgaW50ZXJydXB0ZWQsIHJlc3VsdGluZyBpbiBm aXJzdF9kaXJ0eSB0YWtpbmcgYW55CnZhbHVlLgoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92 c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjY6CiogVHJh Y2sgaW5kZXhlcyBhbmQgbm90IHBvaW50ZXJzIGluIGFsbG9jX2hlYXBfcGFnZXMoKSBhbmQgcmVz ZXJ2ZV9vZmZsaW5lZF9wYWdlKCkKICB3aGVuIGJyZWFraW5nIGEgcG90ZW50aWFsbHkgZGlydHkg YnVkZHkgYW5kIG1lcmdpbmcgdGhlIGZyYWdtZW50cy4KKiBSZWR1Y2VkIChieSBvbmUgYml0KSB3 aWR0aCBvZiBJTlZBTElEX0RJUlRZX0lEWAoqIEFkZGVkIGEgY291cGUgb2YgQVNTRVJUKClzCgog eGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgIHwgMTk0ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggfCAgMTggKysr Ky0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCB8ICAxNyArKysrLQogMyBmaWxlcyBjaGFuZ2Vk LCAxOTMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9wYWdlX2FsbG9jLmMgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwppbmRleCA4YmNlZjZh Li45ZTc4N2UwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYworKysgYi94ZW4v Y29tbW9uL3BhZ2VfYWxsb2MuYwpAQCAtMzgzLDYgKzM4Myw4IEBAIHR5cGVkZWYgc3RydWN0IHBh Z2VfbGlzdF9oZWFkIGhlYXBfYnlfem9uZV9hbmRfb3JkZXJfdFtOUl9aT05FU11bTUFYX09SREVS KzFdOwogc3RhdGljIGhlYXBfYnlfem9uZV9hbmRfb3JkZXJfdCAqX2hlYXBbTUFYX05VTU5PREVT XTsKICNkZWZpbmUgaGVhcChub2RlLCB6b25lLCBvcmRlcikgKCgqX2hlYXBbbm9kZV0pW3pvbmVd W29yZGVyXSkKIAorc3RhdGljIHVuc2lnbmVkIGxvbmcgbm9kZV9uZWVkX3NjcnViW01BWF9OVU1O T0RFU107CisKIHN0YXRpYyB1bnNpZ25lZCBsb25nICphdmFpbFtNQVhfTlVNTk9ERVNdOwogc3Rh dGljIGxvbmcgdG90YWxfYXZhaWxfcGFnZXM7CiAKQEAgLTY3OCwxMyArNjgwLDMwIEBAIHN0YXRp YyB2b2lkIGNoZWNrX2xvd19tZW1fdmlycSh2b2lkKQogICAgIH0KIH0KIAorLyogUGFnZXMgdGhh dCBuZWVkIGEgc2NydWIgYXJlIGFkZGVkIHRvIHRhaWwsIG90aGVyd2lzZSB0byBoZWFkLiAqLwor c3RhdGljIHZvaWQgcGFnZV9saXN0X2FkZF9zY3J1YihzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5z aWduZWQgaW50IG5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB6b25lLCB1bnNpZ25lZCBpbnQgb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBmaXJzdF9kaXJ0eSkKK3sKKyAgICBQRk5fT1JERVIocGcpID0g b3JkZXI7CisgICAgcGctPnUuZnJlZS5maXJzdF9kaXJ0eSA9IGZpcnN0X2RpcnR5OworCisgICAg aWYgKCBmaXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgeworICAgICAgICBB U1NFUlQoZmlyc3RfZGlydHkgPCAoMVUgPDwgb3JkZXIpKTsKKyAgICAgICAgcGFnZV9saXN0X2Fk ZF90YWlsKHBnLCAmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOworICAgIH0KKyAgICBlbHNlCisg ICAgICAgIHBhZ2VfbGlzdF9hZGQocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7Cit9CisK IC8qIEFsbG9jYXRlIDJeQG9yZGVyIGNvbnRpZ3VvdXMgcGFnZXMuICovCiBzdGF0aWMgc3RydWN0 IHBhZ2VfaW5mbyAqYWxsb2NfaGVhcF9wYWdlcygKICAgICB1bnNpZ25lZCBpbnQgem9uZV9sbywg dW5zaWduZWQgaW50IHpvbmVfaGksCiAgICAgdW5zaWduZWQgaW50IG9yZGVyLCB1bnNpZ25lZCBp bnQgbWVtZmxhZ3MsCiAgICAgc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICB1bnNpZ25lZCBpbnQg aSwgaiwgem9uZSA9IDAsIG5vZGVtYXNrX3JldHJ5ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaSwg aiwgem9uZSA9IDAsIG5vZGVtYXNrX3JldHJ5ID0gMCwgZmlyc3RfZGlydHk7CiAgICAgbm9kZWlk X3QgZmlyc3Rfbm9kZSwgbm9kZSA9IE1FTUZfZ2V0X25vZGUobWVtZmxhZ3MpLCByZXFfbm9kZSA9 IG5vZGU7CiAgICAgdW5zaWduZWQgbG9uZyByZXF1ZXN0ID0gMVVMIDw8IG9yZGVyOwogICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBnOwpAQCAtNzk4LDEyICs4MTcsMjYgQEAgc3RhdGljIHN0cnVjdCBw YWdlX2luZm8gKmFsbG9jX2hlYXBfcGFnZXMoCiAgICAgcmV0dXJuIE5VTEw7CiAKICBmb3VuZDog CisKKyAgICBmaXJzdF9kaXJ0eSA9IHBnLT51LmZyZWUuZmlyc3RfZGlydHk7CisKICAgICAvKiBX ZSBtYXkgaGF2ZSB0byBoYWx2ZSB0aGUgY2h1bmsgYSBudW1iZXIgb2YgdGltZXMuICovCiAgICAg d2hpbGUgKCBqICE9IG9yZGVyICkKICAgICB7Ci0gICAgICAgIFBGTl9PUkRFUihwZykgPSAtLWo7 Ci0gICAgICAgIHBhZ2VfbGlzdF9hZGRfdGFpbChwZywgJmhlYXAobm9kZSwgem9uZSwgaikpOwot ICAgICAgICBwZyArPSAxIDw8IGo7CisgICAgICAgIGotLTsKKyAgICAgICAgcGFnZV9saXN0X2Fk ZF9zY3J1YihwZywgbm9kZSwgem9uZSwgaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo MVUgPDwgaikgPiBmaXJzdF9kaXJ0eSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmly c3RfZGlydHkgOiBJTlZBTElEX0RJUlRZX0lEWCk7CisgICAgICAgIHBnICs9IDFVIDw8IGo7CisK KyAgICAgICAgaWYgKCBmaXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qIEFkanVzdCBmaXJzdF9kaXJ0eSAqLworICAgICAgICAgICAgaWYg KCBmaXJzdF9kaXJ0eSA+PSAxVSA8PCBqICkKKyAgICAgICAgICAgICAgICBmaXJzdF9kaXJ0eSAt PSAxVSA8PCBqOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0X2RpcnR5 ID0gMDsgLyogV2UndmUgbW92ZWQgcGFzdCBvcmlnaW5hbCBmaXJzdF9kaXJ0eSAqLworICAgICAg ICB9CiAgICAgfQogCiAgICAgQVNTRVJUKGF2YWlsW25vZGVdW3pvbmVdID49IHJlcXVlc3QpOwpA QCAtODUwLDEyICs4ODMsMjAgQEAgc3RhdGljIGludCByZXNlcnZlX29mZmxpbmVkX3BhZ2Uoc3Ry dWN0IHBhZ2VfaW5mbyAqaGVhZCkKICAgICB1bnNpZ25lZCBpbnQgbm9kZSA9IHBoeXNfdG9fbmlk KHBhZ2VfdG9fbWFkZHIoaGVhZCkpOwogICAgIGludCB6b25lID0gcGFnZV90b196b25lKGhlYWQp LCBpLCBoZWFkX29yZGVyID0gUEZOX09SREVSKGhlYWQpLCBjb3VudCA9IDA7CiAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqY3VyX2hlYWQ7Ci0gICAgaW50IGN1cl9vcmRlcjsKKyAgICB1bnNpZ25lZCBp bnQgY3VyX29yZGVyLCBmaXJzdF9kaXJ0eTsKIAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgm aGVhcF9sb2NrKSk7CiAKICAgICBjdXJfaGVhZCA9IGhlYWQ7CiAKKyAgICAvKgorICAgICAqIFdl IG1heSBicmVhayB0aGUgYnVkZHkgc28gbGV0J3MgbWFyayB0aGUgaGVhZCBhcyBjbGVhbi4gVGhl biwgd2hlbgorICAgICAqIG1lcmdpbmcgY2h1bmtzIGJhY2sgaW50byB0aGUgaGVhcCwgd2Ugd2ls bCBzZWUgd2hldGhlciB0aGUgY2h1bmsgaGFzCisgICAgICogdW5zY3J1YmJlZCBwYWdlcyBhbmQg c2V0IGl0cyBmaXJzdF9kaXJ0eSBwcm9wZXJseS4KKyAgICAgKi8KKyAgICBmaXJzdF9kaXJ0eSA9 IGhlYWQtPnUuZnJlZS5maXJzdF9kaXJ0eTsKKyAgICBoZWFkLT51LmZyZWUuZmlyc3RfZGlydHkg PSBJTlZBTElEX0RJUlRZX0lEWDsKKwogICAgIHBhZ2VfbGlzdF9kZWwoaGVhZCwgJmhlYXAobm9k ZSwgem9uZSwgaGVhZF9vcmRlcikpOwogCiAgICAgd2hpbGUgKCBjdXJfaGVhZCA8IChoZWFkICsg KDEgPDwgaGVhZF9vcmRlcikpICkKQEAgLTg2Niw2ICs5MDcsOCBAQCBzdGF0aWMgaW50IHJlc2Vy dmVfb2ZmbGluZWRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpoZWFkKQogICAgICAgICBpZiAoIHBh Z2Vfc3RhdGVfaXMoY3VyX2hlYWQsIG9mZmxpbmVkKSApCiAgICAgICAgIHsKICAgICAgICAgICAg IGN1cl9oZWFkKys7CisgICAgICAgICAgICBpZiAoIGZpcnN0X2RpcnR5ICE9IElOVkFMSURfRElS VFlfSURYICYmIGZpcnN0X2RpcnR5ICkKKyAgICAgICAgICAgICAgICBmaXJzdF9kaXJ0eS0tOwog ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtODczLDYgKzkxNiw4IEBAIHN0 YXRpYyBpbnQgcmVzZXJ2ZV9vZmZsaW5lZF9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKmhlYWQpCiAK ICAgICAgICAgd2hpbGUgKCBjdXJfb3JkZXIgPCBoZWFkX29yZGVyICkKICAgICAgICAgeworICAg ICAgICAgICAgdW5zaWduZWQgaW50IGlkeCA9IElOVkFMSURfRElSVFlfSURYOworCiAgICAgICAg ICAgICBuZXh0X29yZGVyID0gY3VyX29yZGVyICsgMTsKIAogICAgICAgICAgICAgaWYgKCAoY3Vy X2hlYWQgKyAoMSA8PCBuZXh0X29yZGVyKSkgPj0gKGhlYWQgKyAoIDEgPDwgaGVhZF9vcmRlcikp ICkKQEAgLTg5Miw4ICs5MzcsMjggQEAgc3RhdGljIGludCByZXNlcnZlX29mZmxpbmVkX3BhZ2Uo c3RydWN0IHBhZ2VfaW5mbyAqaGVhZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIG1lcmdl OgogICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IGNvbnNpZGVyIG1lcmdpbmcgb3V0c2lkZSB0 aGUgaGVhZF9vcmRlci4gKi8KLSAgICAgICAgICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwoY3Vy X2hlYWQsICZoZWFwKG5vZGUsIHpvbmUsIGN1cl9vcmRlcikpOwotICAgICAgICAgICAgICAgIFBG Tl9PUkRFUihjdXJfaGVhZCkgPSBjdXJfb3JkZXI7CisKKyAgICAgICAgICAgICAgICAvKiBTZWUg aWYgYW55IG9mIHRoZSBwYWdlcyBpbmRlZWQgbmVlZCBzY3J1YmJpbmcuICovCisgICAgICAgICAg ICAgICAgaWYgKCBmaXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoICgxVSA8PCBjdXJfb3JkZXIpID4gZmly c3RfZGlydHkgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKCBpID0gZmlyc3RfZGlydHkgOyBpIDwgKDFVIDw8IGN1cl9vcmRlcik7IGkrKyApCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0ZXN0X2JpdChfUEdDX25lZWRfc2NydWIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyX2hlYWRbaV0u Y291bnRfaW5mbykgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgQVNTRVJUKGlkeCAhPSBJTlZBTElEX0RJUlRZX0lEWCk7CisgICAgICAgICAg ICAgICAgICAgICAgICBmaXJzdF9kaXJ0eSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfZGly dHkgLT0gMVUgPDwgY3VyX29yZGVyOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgIHBhZ2VfbGlzdF9hZGRfc2NydWIoY3VyX2hlYWQsIG5vZGUsIHpvbmUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfb3JkZXIsIGlkeCk7CiAgICAgICAgICAgICAg ICAgY3VyX2hlYWQgKz0gKDEgPDwgY3VyX29yZGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgIH0KQEAgLTkxOSw5ICs5ODQsNTMgQEAgc3RhdGljIGludCByZXNlcnZlX29m ZmxpbmVkX3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqaGVhZCkKICAgICByZXR1cm4gY291bnQ7CiB9 CiAKK3N0YXRpYyB2b2lkIHNjcnViX2ZyZWVfcGFnZXModW5zaWduZWQgaW50IG5vZGUpCit7Cisg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgdW5zaWduZWQgaW50IHpvbmU7CisKKyAgICBB U1NFUlQoc3Bpbl9pc19sb2NrZWQoJmhlYXBfbG9jaykpOworCisgICAgaWYgKCAhbm9kZV9uZWVk X3NjcnViW25vZGVdICkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICggem9uZSA9IDA7IHpv bmUgPCBOUl9aT05FUzsgem9uZSsrICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBvcmRl ciA9IE1BWF9PUkRFUjsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICB3aGlsZSAoICFwYWdl X2xpc3RfZW1wdHkoJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKSApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICAgICAgICAgICAgICAvKiBVbnNj cnViYmVkIHBhZ2VzIGFyZSBhbHdheXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4gKi8KKyAgICAg ICAgICAgICAgICBwZyA9IHBhZ2VfbGlzdF9sYXN0KCZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7 CisgICAgICAgICAgICAgICAgaWYgKCBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ID09IElOVkFMSURf RElSVFlfSURYICkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg ICBmb3IgKCBpID0gcGctPnUuZnJlZS5maXJzdF9kaXJ0eTsgaSA8ICgxVSA8PCBvcmRlcik7IGkr KykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICggdGVzdF9iaXQo X1BHQ19uZWVkX3NjcnViLCAmcGdbaV0uY291bnRfaW5mbykgKQorICAgICAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY3J1Yl9vbmVfcGFnZSgmcGdbaV0pOworICAg ICAgICAgICAgICAgICAgICAgICAgcGdbaV0uY291bnRfaW5mbyAmPSB+UEdDX25lZWRfc2NydWI7 CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlX25lZWRfc2NydWJbbm9kZV0tLTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBh Z2VfbGlzdF9kZWwocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgICAgICAgICAg ICAgcGFnZV9saXN0X2FkZF9zY3J1YihwZywgbm9kZSwgem9uZSwgb3JkZXIsIElOVkFMSURfRElS VFlfSURYKTsKKworICAgICAgICAgICAgICAgIGlmICggbm9kZV9uZWVkX3NjcnViW25vZGVdID09 IDAgKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg IH0gd2hpbGUgKCBvcmRlci0tICE9IDAgKTsKKyAgICB9Cit9CisKIC8qIEZyZWUgMl5Ab3JkZXIg c2V0IG9mIHBhZ2VzLiAqLwogc3RhdGljIHZvaWQgZnJlZV9oZWFwX3BhZ2VzKAotICAgIHN0cnVj dCBwYWdlX2luZm8gKnBnLCB1bnNpZ25lZCBpbnQgb3JkZXIpCisgICAgc3RydWN0IHBhZ2VfaW5m byAqcGcsIHVuc2lnbmVkIGludCBvcmRlciwgYm9vbCBuZWVkX3NjcnViKQogewogICAgIHVuc2ln bmVkIGxvbmcgbWFzaywgbWZuID0gcGFnZV90b19tZm4ocGcpOwogICAgIHVuc2lnbmVkIGludCBp LCBub2RlID0gcGh5c190b19uaWQocGFnZV90b19tYWRkcihwZykpLCB0YWludGVkID0gMDsKQEAg LTk2MSwxMCArMTA3MCwyMCBAQCBzdGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCiAgICAgICAg IC8qIFRoaXMgcGFnZSBpcyBub3QgYSBndWVzdCBmcmFtZSBhbnkgbW9yZS4gKi8KICAgICAgICAg cGFnZV9zZXRfb3duZXIoJnBnW2ldLCBOVUxMKTsgLyogc2V0X2dwZm5fZnJvbV9tZm4gc25vb3Bz IHBnIG93bmVyICovCiAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbiArIGksIElOVkFMSURf TTJQX0VOVFJZKTsKKworICAgICAgICBpZiAoIG5lZWRfc2NydWIgKQorICAgICAgICAgICAgcGdb aV0uY291bnRfaW5mbyB8PSBQR0NfbmVlZF9zY3J1YjsKICAgICB9CiAKICAgICBhdmFpbFtub2Rl XVt6b25lXSArPSAxIDw8IG9yZGVyOwogICAgIHRvdGFsX2F2YWlsX3BhZ2VzICs9IDEgPDwgb3Jk ZXI7CisgICAgaWYgKCBuZWVkX3NjcnViICkKKyAgICB7CisgICAgICAgIG5vZGVfbmVlZF9zY3J1 Yltub2RlXSArPSAxIDw8IG9yZGVyOworICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ID0g MDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ID0gSU5W QUxJRF9ESVJUWV9JRFg7CiAKICAgICBpZiAoIHRtZW1fZW5hYmxlZCgpICkKICAgICAgICAgbWlk c2l6ZV9hbGxvY196b25lX3BhZ2VzID0gbWF4KApAQCAtOTc3LDM1ICsxMDk2LDQ5IEBAIHN0YXRp YyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKIAogICAgICAgICBpZiAoIChwYWdlX3RvX21mbihwZykg JiBtYXNrKSApCiAgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnByZWRl Y2Vzc29yID0gcGcgLSBtYXNrOworCiAgICAgICAgICAgICAvKiBNZXJnZSB3aXRoIHByZWRlY2Vz c29yIGJsb2NrPyAqLwotICAgICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4ocGFnZV90b19t Zm4ocGctbWFzaykpKSB8fAotICAgICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhwZy1tYXNr LCBmcmVlKSB8fAotICAgICAgICAgICAgICAgICAoUEZOX09SREVSKHBnLW1hc2spICE9IG9yZGVy KSB8fAotICAgICAgICAgICAgICAgICAocGh5c190b19uaWQocGFnZV90b19tYWRkcihwZy1tYXNr KSkgIT0gbm9kZSkgKQorICAgICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4ocGFnZV90b19t Zm4ocHJlZGVjZXNzb3IpKSkgfHwKKyAgICAgICAgICAgICAgICAgIXBhZ2Vfc3RhdGVfaXMocHJl ZGVjZXNzb3IsIGZyZWUpIHx8CisgICAgICAgICAgICAgICAgIChQRk5fT1JERVIocHJlZGVjZXNz b3IpICE9IG9yZGVyKSB8fAorICAgICAgICAgICAgICAgICAocGh5c190b19uaWQocGFnZV90b19t YWRkcihwcmVkZWNlc3NvcikpICE9IG5vZGUpICkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgIHBnIC09IG1hc2s7Ci0gICAgICAgICAgICBwYWdlX2xpc3RfZGVsKHBnLCAmaGVh cChub2RlLCB6b25lLCBvcmRlcikpOworCisgICAgICAgICAgICBwYWdlX2xpc3RfZGVsKHByZWRl Y2Vzc29yLCAmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOworCisgICAgICAgICAgICAvKiBLZWVw IHByZWRlY2Vzc29yJ3MgZmlyc3RfZGlydHkgaWYgaXQgaXMgYWxyZWFkeSBzZXQuICovCisgICAg ICAgICAgICBpZiAoIHByZWRlY2Vzc29yLT51LmZyZWUuZmlyc3RfZGlydHkgPT0gSU5WQUxJRF9E SVJUWV9JRFggJiYKKyAgICAgICAgICAgICAgICAgcGctPnUuZnJlZS5maXJzdF9kaXJ0eSAhPSBJ TlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3ItPnUuZnJlZS5m aXJzdF9kaXJ0eSA9ICgxVSA8PCBvcmRlcikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5OworCisgICAgICAg ICAgICBwZyA9IHByZWRlY2Vzc29yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAg eworICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqc3VjY2Vzc29yID0gcGcgKyBtYXNrOwor CiAgICAgICAgICAgICAvKiBNZXJnZSB3aXRoIHN1Y2Nlc3NvciBibG9jaz8gKi8KLSAgICAgICAg ICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHBnK21hc2spKSkgfHwKLSAgICAg ICAgICAgICAgICAgIXBhZ2Vfc3RhdGVfaXMocGcrbWFzaywgZnJlZSkgfHwKLSAgICAgICAgICAg ICAgICAgKFBGTl9PUkRFUihwZyttYXNrKSAhPSBvcmRlcikgfHwKLSAgICAgICAgICAgICAgICAg KHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIocGcrbWFzaykpICE9IG5vZGUpICkKKyAgICAgICAg ICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHN1Y2Nlc3NvcikpKSB8fAorICAg ICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhzdWNjZXNzb3IsIGZyZWUpIHx8CisgICAgICAg ICAgICAgICAgIChQRk5fT1JERVIoc3VjY2Vzc29yKSAhPSBvcmRlcikgfHwKKyAgICAgICAgICAg ICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIoc3VjY2Vzc29yKSkgIT0gbm9kZSkgKQog ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGFnZV9saXN0X2RlbChwZyArIG1h c2ssICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgICAgICAgICBwYWdlX2xpc3RfZGVs KHN1Y2Nlc3NvciwgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKICAgICAgICAgfQogCiAgICAg ICAgIG9yZGVyKys7CiAgICAgfQogCi0gICAgUEZOX09SREVSKHBnKSA9IG9yZGVyOwotICAgIHBh Z2VfbGlzdF9hZGRfdGFpbChwZywgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKyAgICBwYWdl X2xpc3RfYWRkX3NjcnViKHBnLCBub2RlLCB6b25lLCBvcmRlciwgcGctPnUuZnJlZS5maXJzdF9k aXJ0eSk7CiAKICAgICBpZiAoIHRhaW50ZWQgKQogICAgICAgICByZXNlcnZlX29mZmxpbmVkX3Bh Z2UocGcpOwogCisgICAgaWYgKCBuZWVkX3NjcnViICkKKyAgICAgICAgc2NydWJfZnJlZV9wYWdl cyhub2RlKTsKKwogICAgIHNwaW5fdW5sb2NrKCZoZWFwX2xvY2spOwogfQogCkBAIC0xMjI2LDcg KzEzNTksNyBAQCB1bnNpZ25lZCBpbnQgb25saW5lX3BhZ2UodW5zaWduZWQgbG9uZyBtZm4sIHVp bnQzMl90ICpzdGF0dXMpCiAgICAgc3Bpbl91bmxvY2soJmhlYXBfbG9jayk7CiAKICAgICBpZiAo ICh5ICYgUEdDX3N0YXRlKSA9PSBQR0Nfc3RhdGVfb2ZmbGluZWQgKQotICAgICAgICBmcmVlX2hl YXBfcGFnZXMocGcsIDApOworICAgICAgICBmcmVlX2hlYXBfcGFnZXMocGcsIDAsIGZhbHNlKTsK IAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xMjk1LDcgKzE0MjgsNyBAQCBzdGF0aWMgdm9pZCBp bml0X2hlYXBfcGFnZXMoCiAgICAgICAgICAgICBucl9wYWdlcyAtPSBuOwogICAgICAgICB9CiAK LSAgICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBnK2ksIDApOworICAgICAgICBmcmVlX2hlYXBfcGFn ZXMocGcgKyBpLCAwLCBmYWxzZSk7CiAgICAgfQogfQogCkBAIC0xNjIyLDcgKzE3NTUsNyBAQCB2 b2lkIGZyZWVfeGVuaGVhcF9wYWdlcyh2b2lkICp2LCB1bnNpZ25lZCBpbnQgb3JkZXIpCiAKICAg ICBtZW1ndWFyZF9ndWFyZF9yYW5nZSh2LCAxIDw8IChvcmRlciArIFBBR0VfU0hJRlQpKTsKIAot ICAgIGZyZWVfaGVhcF9wYWdlcyh2aXJ0X3RvX3BhZ2UodiksIG9yZGVyKTsKKyAgICBmcmVlX2hl YXBfcGFnZXModmlydF90b19wYWdlKHYpLCBvcmRlciwgZmFsc2UpOwogfQogCiAjZWxzZQpAQCAt MTY3NiwxMiArMTgwOSw5IEBAIHZvaWQgZnJlZV94ZW5oZWFwX3BhZ2VzKHZvaWQgKnYsIHVuc2ln bmVkIGludCBvcmRlcikKICAgICBwZyA9IHZpcnRfdG9fcGFnZSh2KTsKIAogICAgIGZvciAoIGkg PSAwOyBpIDwgKDF1IDw8IG9yZGVyKTsgaSsrICkKLSAgICB7Ci0gICAgICAgIHNjcnViX29uZV9w YWdlKCZwZ1tpXSk7CiAgICAgICAgIHBnW2ldLmNvdW50X2luZm8gJj0gflBHQ194ZW5faGVhcDsK LSAgICB9CiAKLSAgICBmcmVlX2hlYXBfcGFnZXMocGcsIG9yZGVyKTsKKyAgICBmcmVlX2hlYXBf cGFnZXMocGcsIG9yZGVyLCB0cnVlKTsKIH0KIAogI2VuZGlmCkBAIC0xNzkwLDcgKzE5MjAsNyBA QCBzdHJ1Y3QgcGFnZV9pbmZvICphbGxvY19kb21oZWFwX3BhZ2VzKAogICAgIGlmICggZCAmJiAh KG1lbWZsYWdzICYgTUVNRl9ub19vd25lcikgJiYKICAgICAgICAgIGFzc2lnbl9wYWdlcyhkLCBw Zywgb3JkZXIsIG1lbWZsYWdzKSApCiAgICAgewotICAgICAgICBmcmVlX2hlYXBfcGFnZXMocGcs IG9yZGVyKTsKKyAgICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBnLCBvcmRlciwgZmFsc2UpOwogICAg ICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgCkBAIC0xODU4LDExICsxOTg4LDcgQEAgdm9p ZCBmcmVlX2RvbWhlYXBfcGFnZXMoc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVkIGludCBv cmRlcikKICAgICAgICAgICAgIHNjcnViID0gMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgg dW5saWtlbHkoc2NydWIpICkKLSAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgb3Jk ZXIpOyBpKysgKQotICAgICAgICAgICAgICAgIHNjcnViX29uZV9wYWdlKCZwZ1tpXSk7Ci0KLSAg ICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBnLCBvcmRlcik7CisgICAgICAgIGZyZWVfaGVhcF9wYWdl cyhwZywgb3JkZXIsIHNjcnViKTsKICAgICB9CiAKICAgICBpZiAoIGRyb3BfZG9tX3JlZiApCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggYi94ZW4vaW5jbHVkZS9hc20tYXJt L21tLmgKaW5kZXggZWY4NGI3Mi4uZDI2YjIzMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LWFybS9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaApAQCAtNDQsNyArNDQsMTYg QEAgc3RydWN0IHBhZ2VfaW5mbwogICAgICAgICAvKiBQYWdlIGlzIG9uIGEgZnJlZSBsaXN0OiAo KGNvdW50X2luZm8gJiBQR0NfY291bnRfbWFzaykgPT0gMCkuICovCiAgICAgICAgIHN0cnVjdCB7 CiAgICAgICAgICAgICAvKiBEbyBUTEJzIG5lZWQgZmx1c2hpbmcgZm9yIHNhZmV0eSBiZWZvcmUg bmV4dCBwYWdlIHVzZT8gKi8KLSAgICAgICAgICAgIGJvb2xfdCBuZWVkX3RsYmZsdXNoOworICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBuZWVkX3RsYmZsdXNoOjE7CisKKyAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgKiBJbmRleCBvZiB0aGUgZmlyc3QgKnBvc3NpYmx5KiB1bnNjcnViYmVk IHBhZ2UgaW4gdGhlIGJ1ZGR5LgorICAgICAgICAgICAgICogT25lIG1vcmUgdGhhbiBtYXhpbXVt IHBvc3NpYmxlIG9yZGVyIHRvIGFjY29tbW9kYXRlCisgICAgICAgICAgICAgKiBJTlZBTElEX0RJ UlRZX0lEWC4KKyAgICAgICAgICAgICAqLworI2RlZmluZSBJTlZBTElEX0RJUlRZX0lEWCAoKDFV TCA8PCAoTUFYX09SREVSICsgMSkpIC0gMSkKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmly c3RfZGlydHk6TUFYX09SREVSICsgMTsKKwogICAgICAgICB9IGZyZWU7CiAKICAgICB9IHU7CkBA IC0xMDcsNiArMTE2LDEzIEBAIHN0cnVjdCBwYWdlX2luZm8KICNkZWZpbmUgUEdDX2NvdW50X3dp ZHRoICAgUEdfc2hpZnQoOSkKICNkZWZpbmUgUEdDX2NvdW50X21hc2sgICAgKCgxVUw8PFBHQ19j b3VudF93aWR0aCktMSkKIAorLyoKKyAqIFBhZ2UgbmVlZHMgdG8gYmUgc2NydWJiZWQuIFNpbmNl IHRoaXMgYml0IGNhbiBvbmx5IGJlIHNldCBvbiBhIHBhZ2UgdGhhdCBpcworICogZnJlZSAoaS5l LiBpbiBQR0Nfc3RhdGVfZnJlZSkgd2UgY2FuIHJldXNlIFBHQ19hbGxvY2F0ZWQgYml0LgorICov CisjZGVmaW5lIF9QR0NfbmVlZF9zY3J1YiAgIF9QR0NfYWxsb2NhdGVkCisjZGVmaW5lIFBHQ19u ZWVkX3NjcnViICAgIFBHQ19hbGxvY2F0ZWQKKwogZXh0ZXJuIG1mbl90IHhlbmhlYXBfbWZuX3N0 YXJ0LCB4ZW5oZWFwX21mbl9lbmQ7CiBleHRlcm4gdmFkZHJfdCB4ZW5oZWFwX3ZpcnRfZW5kOwog I2lmZGVmIENPTkZJR19BUk1fNjQKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0u aCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCAyYmYzZjMzLi45YjdmZDA1IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9tbS5oCkBAIC04OCw3ICs4OCwxNSBAQCBzdHJ1Y3QgcGFnZV9pbmZvCiAgICAgICAgIC8qIFBh Z2UgaXMgb24gYSBmcmVlIGxpc3Q6ICgoY291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAw KS4gKi8KICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIC8qIERvIFRMQnMgbmVlZCBmbHVz aGluZyBmb3Igc2FmZXR5IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLwotICAgICAgICAgICAgYm9v bF90IG5lZWRfdGxiZmx1c2g7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5lZWRfdGxiZmx1 c2g6MTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEluZGV4IG9mIHRoZSBmaXJz dCAqcG9zc2libHkqIHVuc2NydWJiZWQgcGFnZSBpbiB0aGUgYnVkZHkuCisgICAgICAgICAgICAg KiBPbmUgbW9yZSB0aGFuIG1heGltdW0gcG9zc2libGUgb3JkZXIgdG8gYWNjb21tb2RhdGUKKyAg ICAgICAgICAgICAqIElOVkFMSURfRElSVFlfSURYLgorICAgICAgICAgICAgICovCisjZGVmaW5l IElOVkFMSURfRElSVFlfSURYICgoMVVMIDw8IChNQVhfT1JERVIgKyAxKSkgLSAxKQorICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBmaXJzdF9kaXJ0eTpNQVhfT1JERVIgKyAxOwogICAgICAgICB9 IGZyZWU7CiAKICAgICB9IHU7CkBAIC0yMzMsNiArMjQxLDEzIEBAIHN0cnVjdCBwYWdlX2luZm8K ICNkZWZpbmUgUEdDX2NvdW50X3dpZHRoICAgUEdfc2hpZnQoOSkKICNkZWZpbmUgUEdDX2NvdW50 X21hc2sgICAgKCgxVUw8PFBHQ19jb3VudF93aWR0aCktMSkKIAorLyoKKyAqIFBhZ2UgbmVlZHMg dG8gYmUgc2NydWJiZWQuIFNpbmNlIHRoaXMgYml0IGNhbiBvbmx5IGJlIHNldCBvbiBhIHBhZ2Ug dGhhdCBpcworICogZnJlZSAoaS5lLiBpbiBQR0Nfc3RhdGVfZnJlZSkgd2UgY2FuIHJldXNlIFBH Q19hbGxvY2F0ZWQgYml0LgorICovCisjZGVmaW5lIF9QR0NfbmVlZF9zY3J1YiAgIF9QR0NfYWxs b2NhdGVkCisjZGVmaW5lIFBHQ19uZWVkX3NjcnViICAgIFBHQ19hbGxvY2F0ZWQKKwogI2RlZmlu ZSBpc194ZW5faGVhcF9wYWdlKHBhZ2UpICgocGFnZSktPmNvdW50X2luZm8gJiBQR0NfeGVuX2hl YXApCiAjZGVmaW5lIGlzX3hlbl9oZWFwX21mbihtZm4pIFwKICAgICAoX19tZm5fdmFsaWQobWZu KSAmJiBpc194ZW5faGVhcF9wYWdlKF9fbWZuX3RvX3BhZ2UobWZuKSkpCi0tIAoxLjguMy4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==