From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v4 1/8] mm: Place unscrubbed pages at the end of pagelist Date: Fri, 19 May 2017 11:50:33 -0400 Message-ID: <1495209040-11101-2-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 LiBzbyB0aGF0IGl0J3MgZWFzeSB0byBmaW5kIHBhZ2VzIHRoYXQgbmVlZCB0byBiZSBzY3J1YmJl ZCAodGhvc2UgcGFnZXMgYXJlCm5vdyBtYXJrZWQgd2l0aCBfUEdDX25lZWRfc2NydWIgYml0KS4K CldlIGtlZXAgdHJhY2sgb2YgdGhlIGZpcnN0IHVuc2NydWJiZWQgcGFnZSBpbiBhIHBhZ2UgYnVk ZHkgdXNpbmcgZmlyc3RfZGlydHkKZmllbGQuIEZvciBub3cgaXQgY2FuIGhhdmUgdHdvIHZhbHVl cywgMCAod2hvbGUgYnVkZHkgbmVlZHMgc2NydWJiaW5nKSBvcgpJTlZBTElEX0RJUlRZX0lEWCAo dGhlIGJ1ZGR5IGRvZXMgbm90IG5lZWQgdG8gYmUgc2NydWJiZWQpLiBTdWJzZXF1ZW50IHBhdGNo ZXMKd2lsbCBhbGxvdyBzY3J1YmJpbmcgdG8gYmUgaW50ZXJydXB0ZWQsIHJlc3VsdGluZyBpbiBm aXJzdF9kaXJ0eSB0YWtpbmcgYW55CnZhbHVlLgoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92 c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjQ6CiogSW5z dGVhZCBvZiB1c2luZyBhIGJvb2wgZGlydHlfaGVhZCBpbiBwYWdlX2luZm8gdXNlIGludCBmaXJz dF9kaXJ0eS4KICAtIEtlZXAgdHJhY2sgb2YgZmlyc3RfZGlydHkgaW4gZnJlZV9oZWFwX3BhZ2Vz KCkKKiBBbGlhcyBQR0NfbmVlZF9zY3J1YiBmbGFnIHRvIFBHQ19hbGxvY2F0ZWQKCgogeGVuL2Nv bW1vbi9wYWdlX2FsbG9jLmMgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggfCAgMTAgKysrCiB4ZW4v aW5jbHVkZS9hc20teDg2L21tLmggfCAgMTAgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNl cnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3BhZ2Vf YWxsb2MuYyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCmluZGV4IDllNDFmYjQuLmM2NWQyMTQg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCisrKyBiL3hlbi9jb21tb24vcGFn ZV9hbGxvYy5jCkBAIC0zODMsNiArMzgzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgcGFnZV9saXN0X2hl YWQgaGVhcF9ieV96b25lX2FuZF9vcmRlcl90W05SX1pPTkVTXVtNQVhfT1JERVIrMV07CiBzdGF0 aWMgaGVhcF9ieV96b25lX2FuZF9vcmRlcl90ICpfaGVhcFtNQVhfTlVNTk9ERVNdOwogI2RlZmlu ZSBoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSAoKCpfaGVhcFtub2RlXSlbem9uZV1bb3JkZXJdKQog CitzdGF0aWMgdW5zaWduZWQgbG9uZyBub2RlX25lZWRfc2NydWJbTUFYX05VTU5PREVTXTsKKwog c3RhdGljIHVuc2lnbmVkIGxvbmcgKmF2YWlsW01BWF9OVU1OT0RFU107CiBzdGF0aWMgbG9uZyB0 b3RhbF9hdmFpbF9wYWdlczsKIApAQCAtNjc4LDYgKzY4MCwyMCBAQCBzdGF0aWMgdm9pZCBjaGVj a19sb3dfbWVtX3ZpcnEodm9pZCkKICAgICB9CiB9CiAKKy8qIFBhZ2VzIHRoYXQgbmVlZCBhIHNj cnViIGFyZSBhZGRlZCB0byB0YWlsLCBvdGhlcndpc2UgdG8gaGVhZC4gKi8KK3N0YXRpYyB2b2lk IHBhZ2VfbGlzdF9hZGRfc2NydWIoc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVkIGludCBu b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgem9uZSwg dW5zaWduZWQgaW50IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZmlyc3RfZGlydHkpCit7CisgICAgUEZOX09SREVSKHBnKSA9IG9yZGVyOworICAg IHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPSBmaXJzdF9kaXJ0eTsKKworICAgIGlmICggZmlyc3Rf ZGlydHkgIT0gSU5WQUxJRF9ESVJUWV9JRFggKQorICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwo cGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgZWxzZQorICAgICAgICBwYWdlX2xp c3RfYWRkKHBnLCAmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOworfQorCiAvKiBBbGxvY2F0ZSAy XkBvcmRlciBjb250aWd1b3VzIHBhZ2VzLiAqLwogc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFs bG9jX2hlYXBfcGFnZXMoCiAgICAgdW5zaWduZWQgaW50IHpvbmVfbG8sIHVuc2lnbmVkIGludCB6 b25lX2hpLApAQCAtNjg5LDcgKzcwNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICphbGxv Y19oZWFwX3BhZ2VzKAogICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVzdCA9IDFVTCA8PCBvcmRlcjsK ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKICAgICBub2RlbWFza190IG5vZGVtYXNrID0gKGQg IT0gTlVMTCApID8gZC0+bm9kZV9hZmZpbml0eSA6IG5vZGVfb25saW5lX21hcDsKLSAgICBib29s X3QgbmVlZF90bGJmbHVzaCA9IDA7CisgICAgYm9vbCBuZWVkX3NjcnViLCBuZWVkX3RsYmZsdXNo ID0gMDsKICAgICB1aW50MzJfdCB0bGJmbHVzaF90aW1lc3RhbXAgPSAwOwogCiAgICAgLyogTWFr ZSBzdXJlIHRoZXJlIGFyZSBlbm91Z2ggYml0cyBpbiBtZW1mbGFncyBmb3Igbm9kZUlELiAqLwpA QCAtNzk4LDExICs4MTQsMTggQEAgc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFsbG9jX2hlYXBf cGFnZXMoCiAgICAgcmV0dXJuIE5VTEw7CiAKICBmb3VuZDogCisgICAgbmVlZF9zY3J1YiA9IChw Zy0+dS5mcmVlLmZpcnN0X2RpcnR5ICE9IElOVkFMSURfRElSVFlfSURYKTsKKwogICAgIC8qIFdl IG1heSBoYXZlIHRvIGhhbHZlIHRoZSBjaHVuayBhIG51bWJlciBvZiB0aW1lcy4gKi8KICAgICB3 aGlsZSAoIGogIT0gb3JkZXIgKQogICAgIHsKLSAgICAgICAgUEZOX09SREVSKHBnKSA9IC0tajsK LSAgICAgICAgcGFnZV9saXN0X2FkZF90YWlsKHBnLCAmaGVhcChub2RlLCB6b25lLCBqKSk7Cisg ICAgICAgIC8qCisgICAgICAgICAqIFNvbWUgb2YgdGhlIHN1Yi1jaHVua3MgbWF5IGJlIGNsZWFu IGJ1dCB3ZSB3aWxsIG1hcmsgdGhlbQorICAgICAgICAgKiBhcyBkaXJ0eSAoaWYgbmVlZF9zY3J1 YiBpcyBzZXQpIHRvIGF2b2lkIHRyYXZlcnNpbmcgdGhlCisgICAgICAgICAqIGxpc3QgaGVyZS4K KyAgICAgICAgICovCisgICAgICAgIHBhZ2VfbGlzdF9hZGRfc2NydWIocGcsIG5vZGUsIHpvbmUs IC0taiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX3NjcnViID8gMCA6IElOVkFM SURfRElSVFlfSURYKTsKICAgICAgICAgcGcgKz0gMSA8PCBqOwogICAgIH0KIApAQCAtODUxLDEx ICs4NzQsMjAgQEAgc3RhdGljIGludCByZXNlcnZlX29mZmxpbmVkX3BhZ2Uoc3RydWN0IHBhZ2Vf aW5mbyAqaGVhZCkKICAgICBpbnQgem9uZSA9IHBhZ2VfdG9fem9uZShoZWFkKSwgaSwgaGVhZF9v cmRlciA9IFBGTl9PUkRFUihoZWFkKSwgY291bnQgPSAwOwogICAgIHN0cnVjdCBwYWdlX2luZm8g KmN1cl9oZWFkOwogICAgIGludCBjdXJfb3JkZXI7CisgICAgYm9vbCBuZWVkX3NjcnViOwogCiAg ICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZoZWFwX2xvY2spKTsKIAogICAgIGN1cl9oZWFkID0g aGVhZDsKIAorICAgIC8qCisgICAgICogV2UgbWF5IGJyZWFrIHRoZSBidWRkeSBzbyBsZXQncyBt YXJrIHRoZSBoZWFkIGFzIGNsZWFuLiBUaGVuLCB3aGVuCisgICAgICogbWVyZ2luZyBjaHVua3Mg YmFjayBpbnRvIHRoZSBoZWFwLCB3ZSB3aWxsIHNlZSB3aGV0aGVyIHRoZSBjaHVuayBoYXMKKyAg ICAgKiB1bnNjcnViYmVkIHBhZ2VzIGFuZCBzZXQgaXRzIGZpcnN0X2RpcnR5IHByb3Blcmx5Lgor ICAgICAqLworICAgIG5lZWRfc2NydWIgPSAoaGVhZC0+dS5mcmVlLmZpcnN0X2RpcnR5ICE9IElO VkFMSURfRElSVFlfSURYKTsKKyAgICBoZWFkLT51LmZyZWUuZmlyc3RfZGlydHkgPSBJTlZBTElE X0RJUlRZX0lEWDsKKwogICAgIHBhZ2VfbGlzdF9kZWwoaGVhZCwgJmhlYXAobm9kZSwgem9uZSwg aGVhZF9vcmRlcikpOwogCiAgICAgd2hpbGUgKCBjdXJfaGVhZCA8IChoZWFkICsgKDEgPDwgaGVh ZF9vcmRlcikpICkKQEAgLTg3Myw2ICs5MDUsOCBAQCBzdGF0aWMgaW50IHJlc2VydmVfb2ZmbGlu ZWRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpoZWFkKQogCiAgICAgICAgIHdoaWxlICggY3VyX29y ZGVyIDwgaGVhZF9vcmRlciApCiAgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBm aXJzdF9kaXJ0eSA9IElOVkFMSURfRElSVFlfSURYOworCiAgICAgICAgICAgICBuZXh0X29yZGVy ID0gY3VyX29yZGVyICsgMTsKIAogICAgICAgICAgICAgaWYgKCAoY3VyX2hlYWQgKyAoMSA8PCBu ZXh0X29yZGVyKSkgPj0gKGhlYWQgKyAoIDEgPDwgaGVhZF9vcmRlcikpICkKQEAgLTg5Miw4ICs5 MjYsMjAgQEAgc3RhdGljIGludCByZXNlcnZlX29mZmxpbmVkX3BhZ2Uoc3RydWN0IHBhZ2VfaW5m byAqaGVhZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIG1lcmdlOgogICAgICAgICAgICAg ICAgIC8qIFdlIGRvbid0IGNvbnNpZGVyIG1lcmdpbmcgb3V0c2lkZSB0aGUgaGVhZF9vcmRlci4g Ki8KLSAgICAgICAgICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwoY3VyX2hlYWQsICZoZWFwKG5v ZGUsIHpvbmUsIGN1cl9vcmRlcikpOwotICAgICAgICAgICAgICAgIFBGTl9PUkRFUihjdXJfaGVh ZCkgPSBjdXJfb3JkZXI7CisKKyAgICAgICAgICAgICAgICAvKiBTZWUgaWYgYW55IG9mIHRoZSBw YWdlcyBpbmRlZWQgbmVlZCBzY3J1YmJpbmcuICovCisgICAgICAgICAgICAgICAgaWYgKCBuZWVk X3NjcnViICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoIGkg PSAwOyBpIDwgKDEgPDwgY3VyX29yZGVyKTsgaSsrICkKKyAgICAgICAgICAgICAgICAgICAgICAg IGlmICggdGVzdF9iaXQoX1BHQ19uZWVkX3NjcnViLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY3VyX2hlYWRbaV0uY291bnRfaW5mbykgKQorICAgICAgICAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2RpcnR5ID0gaTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFnZV9saXN0X2FkZF9z Y3J1YihjdXJfaGVhZCwgbm9kZSwgem9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN1cl9vcmRlciwgZmlyc3RfZGlydHkpOwogICAgICAgICAgICAgICAgIGN1cl9oZWFk ICs9ICgxIDw8IGN1cl9vcmRlcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICB9CkBAIC05MTksOSArOTY1LDUyIEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZV9vZmZsaW5lZF9wYWdl KHN0cnVjdCBwYWdlX2luZm8gKmhlYWQpCiAgICAgcmV0dXJuIGNvdW50OwogfQogCitzdGF0aWMg dm9pZCBzY3J1Yl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGludCBub2RlKQoreworICAgIHN0cnVjdCBw YWdlX2luZm8gKnBnOworICAgIHVuc2lnbmVkIGludCB6b25lOworCisgICAgQVNTRVJUKHNwaW5f aXNfbG9ja2VkKCZoZWFwX2xvY2spKTsKKworICAgIGlmICggIW5vZGVfbmVlZF9zY3J1Yltub2Rl XSApCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoIHpvbmUgPSAwOyB6b25lIDwgTlJfWk9O RVM7IHpvbmUrKyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIgPSBNQVhfT1JE RVI7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHdoaWxlICggIXBhZ2VfbGlzdF9lbXB0eSgm aGVhcChub2RlLCB6b25lLCBvcmRlcikpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgaTsKKworICAgICAgICAgICAgICAgIC8qIFVuc2NydWJiZWQgcGFnZXMg YXJlIGFsd2F5cyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LiAqLworICAgICAgICAgICAgICAgIHBn ID0gcGFnZV9saXN0X2xhc3QoJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKyAgICAgICAgICAg ICAgICBpZiAoIHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPT0gSU5WQUxJRF9ESVJUWV9JRFggKQor ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGZvciAoIGkgPSBw Zy0+dS5mcmVlLmZpcnN0X2RpcnR5OyBpIDwgKDFVIDw8IG9yZGVyKTsgaSsrKQorICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB0ZXN0X2JpdChfUEdDX25lZWRfc2Ny dWIsICZwZ1tpXS5jb3VudF9pbmZvKSApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNjcnViX29uZV9wYWdlKCZwZ1tpXSk7CisgICAgICAgICAgICAgICAg ICAgICAgICBwZ1tpXS5jb3VudF9pbmZvICY9IH5QR0NfbmVlZF9zY3J1YjsKKyAgICAgICAgICAg ICAgICAgICAgICAgIG5vZGVfbmVlZF9zY3J1Yltub2RlXS0tOworICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcGFnZV9saXN0X2RlbChw ZywgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKyAgICAgICAgICAgICAgICBwYWdlX2xpc3Rf YWRkX3NjcnViKHBnLCBub2RlLCB6b25lLCBvcmRlciwgSU5WQUxJRF9ESVJUWV9JRFgpOworCisg ICAgICAgICAgICAgICAgaWYgKCBub2RlX25lZWRfc2NydWJbbm9kZV0gPT0gMCApCisgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoIG9y ZGVyLS0gIT0gMCApOworICAgIH0KK30KKwogLyogRnJlZSAyXkBvcmRlciBzZXQgb2YgcGFnZXMu ICovCiBzdGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCi0gICAgc3RydWN0IHBhZ2VfaW5mbyAq cGcsIHVuc2lnbmVkIGludCBvcmRlcikKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWdu ZWQgaW50IG9yZGVyLCBib29sIG5lZWRfc2NydWIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBtYXNr LCBtZm4gPSBwYWdlX3RvX21mbihwZyk7CiAgICAgdW5zaWduZWQgaW50IGksIG5vZGUgPSBwaHlz X3RvX25pZChwYWdlX3RvX21hZGRyKHBnKSksIHRhaW50ZWQgPSAwOwpAQCAtOTYxLDEwICsxMDUw LDIwIEBAIHN0YXRpYyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKICAgICAgICAgLyogVGhpcyBwYWdl IGlzIG5vdCBhIGd1ZXN0IGZyYW1lIGFueSBtb3JlLiAqLwogICAgICAgICBwYWdlX3NldF9vd25l cigmcGdbaV0sIE5VTEwpOyAvKiBzZXRfZ3Bmbl9mcm9tX21mbiBzbm9vcHMgcGcgb3duZXIgKi8K ICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuICsgaSwgSU5WQUxJRF9NMlBfRU5UUlkpOwor CisgICAgICAgIGlmICggbmVlZF9zY3J1YiApCisgICAgICAgICAgICBwZ1tpXS5jb3VudF9pbmZv IHw9IFBHQ19uZWVkX3NjcnViOwogICAgIH0KIAogICAgIGF2YWlsW25vZGVdW3pvbmVdICs9IDEg PDwgb3JkZXI7CiAgICAgdG90YWxfYXZhaWxfcGFnZXMgKz0gMSA8PCBvcmRlcjsKKyAgICBpZiAo IG5lZWRfc2NydWIgKQorICAgIHsKKyAgICAgICAgbm9kZV9uZWVkX3NjcnViW25vZGVdICs9IDEg PDwgb3JkZXI7CisgICAgICAgIHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPSAwOworICAgIH0KKyAg ICBlbHNlCisgICAgICAgIHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPSBJTlZBTElEX0RJUlRZX0lE WDsKIAogICAgIGlmICggdG1lbV9lbmFibGVkKCkgKQogICAgICAgICBtaWRzaXplX2FsbG9jX3pv bmVfcGFnZXMgPSBtYXgoCkBAIC05NzcsMzUgKzEwNzYsNTQgQEAgc3RhdGljIHZvaWQgZnJlZV9o ZWFwX3BhZ2VzKAogCiAgICAgICAgIGlmICggKHBhZ2VfdG9fbWZuKHBnKSAmIG1hc2spICkKICAg ICAgICAgeworICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcHJlZGVjZXNzb3IgPSBwZyAt IG1hc2s7CisKICAgICAgICAgICAgIC8qIE1lcmdlIHdpdGggcHJlZGVjZXNzb3IgYmxvY2s/ICov Ci0gICAgICAgICAgICBpZiAoICFtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihwZy1tYXNrKSkp IHx8Ci0gICAgICAgICAgICAgICAgICFwYWdlX3N0YXRlX2lzKHBnLW1hc2ssIGZyZWUpIHx8Ci0g ICAgICAgICAgICAgICAgIChQRk5fT1JERVIocGctbWFzaykgIT0gb3JkZXIpIHx8Ci0gICAgICAg ICAgICAgICAgIChwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHBnLW1hc2spKSAhPSBub2RlKSAp CisgICAgICAgICAgICBpZiAoICFtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihwcmVkZWNlc3Nv cikpKSB8fAorICAgICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhwcmVkZWNlc3NvciwgZnJl ZSkgfHwKKyAgICAgICAgICAgICAgICAgKFBGTl9PUkRFUihwcmVkZWNlc3NvcikgIT0gb3JkZXIp IHx8CisgICAgICAgICAgICAgICAgIChwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHByZWRlY2Vz c29yKSkgIT0gbm9kZSkgKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGcg LT0gbWFzazsKLSAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocGcsICZoZWFwKG5vZGUsIHpvbmUs IG9yZGVyKSk7CisKKyAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocHJlZGVjZXNzb3IsICZoZWFw KG5vZGUsIHpvbmUsIG9yZGVyKSk7CisKKyAgICAgICAgICAgIGlmICggcHJlZGVjZXNzb3ItPnUu ZnJlZS5maXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAg bmVlZF9zY3J1YiA9IHRydWU7CisgICAgICAgICAgICAgICAgLyogLi4uIGFuZCBrZWVwIHByZWRl Y2Vzc29yJ3MgZmlyc3RfZGlydHkuICovCisgICAgICAgICAgICBlbHNlIGlmICggcGctPnUuZnJl ZS5maXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAgcHJl ZGVjZXNzb3ItPnUuZnJlZS5maXJzdF9kaXJ0eSA9ICgxVSA8PCBvcmRlcikgKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZy0+dS5mcmVlLmZpcnN0 X2RpcnR5OworCisgICAgICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ID0gSU5WQUxJRF9E SVJUWV9JRFg7CisgICAgICAgICAgICBwZyA9IHByZWRlY2Vzc29yOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKICAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqc3VjY2Vz c29yID0gcGcgKyBtYXNrOworCiAgICAgICAgICAgICAvKiBNZXJnZSB3aXRoIHN1Y2Nlc3NvciBi bG9jaz8gKi8KLSAgICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHBn K21hc2spKSkgfHwKLSAgICAgICAgICAgICAgICAgIXBhZ2Vfc3RhdGVfaXMocGcrbWFzaywgZnJl ZSkgfHwKLSAgICAgICAgICAgICAgICAgKFBGTl9PUkRFUihwZyttYXNrKSAhPSBvcmRlcikgfHwK LSAgICAgICAgICAgICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIocGcrbWFzaykpICE9 IG5vZGUpICkKKyAgICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHN1 Y2Nlc3NvcikpKSB8fAorICAgICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhzdWNjZXNzb3Is IGZyZWUpIHx8CisgICAgICAgICAgICAgICAgIChQRk5fT1JERVIoc3VjY2Vzc29yKSAhPSBvcmRl cikgfHwKKyAgICAgICAgICAgICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIoc3VjY2Vz c29yKSkgIT0gbm9kZSkgKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGFn ZV9saXN0X2RlbChwZyArIG1hc2ssICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgICAg ICAgICBwYWdlX2xpc3RfZGVsKHN1Y2Nlc3NvciwgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsK KworICAgICAgICAgICAgbmVlZF9zY3J1YiB8PSAoc3VjY2Vzc29yLT51LmZyZWUuZmlyc3RfZGly dHkgIT0gSU5WQUxJRF9ESVJUWV9JRFgpOworICAgICAgICAgICAgc3VjY2Vzc29yLT51LmZyZWUu Zmlyc3RfZGlydHkgPSBJTlZBTElEX0RJUlRZX0lEWDsKICAgICAgICAgfQogCiAgICAgICAgIG9y ZGVyKys7CiAgICAgfQogCi0gICAgUEZOX09SREVSKHBnKSA9IG9yZGVyOwotICAgIHBhZ2VfbGlz dF9hZGRfdGFpbChwZywgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKyAgICBwYWdlX2xpc3Rf YWRkX3NjcnViKHBnLCBub2RlLCB6b25lLCBvcmRlciwgcGctPnUuZnJlZS5maXJzdF9kaXJ0eSk7 CiAKICAgICBpZiAoIHRhaW50ZWQgKQogICAgICAgICByZXNlcnZlX29mZmxpbmVkX3BhZ2UocGcp OwogCisgICAgaWYgKCBuZWVkX3NjcnViICkKKyAgICAgICAgc2NydWJfZnJlZV9wYWdlcyhub2Rl KTsKKwogICAgIHNwaW5fdW5sb2NrKCZoZWFwX2xvY2spOwogfQogCkBAIC0xMjI2LDcgKzEzNDQs NyBAQCB1bnNpZ25lZCBpbnQgb25saW5lX3BhZ2UodW5zaWduZWQgbG9uZyBtZm4sIHVpbnQzMl90 ICpzdGF0dXMpCiAgICAgc3Bpbl91bmxvY2soJmhlYXBfbG9jayk7CiAKICAgICBpZiAoICh5ICYg UEdDX3N0YXRlKSA9PSBQR0Nfc3RhdGVfb2ZmbGluZWQgKQotICAgICAgICBmcmVlX2hlYXBfcGFn ZXMocGcsIDApOworICAgICAgICBmcmVlX2hlYXBfcGFnZXMocGcsIDAsIGZhbHNlKTsKIAogICAg IHJldHVybiByZXQ7CiB9CkBAIC0xMjk1LDcgKzE0MTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2hl YXBfcGFnZXMoCiAgICAgICAgICAgICBucl9wYWdlcyAtPSBuOwogICAgICAgICB9CiAKLSAgICAg ICAgZnJlZV9oZWFwX3BhZ2VzKHBnK2ksIDApOworICAgICAgICBmcmVlX2hlYXBfcGFnZXMocGcg KyBpLCAwLCBmYWxzZSk7CiAgICAgfQogfQogCkBAIC0xNjIyLDcgKzE3NDAsNyBAQCB2b2lkIGZy ZWVfeGVuaGVhcF9wYWdlcyh2b2lkICp2LCB1bnNpZ25lZCBpbnQgb3JkZXIpCiAKICAgICBtZW1n dWFyZF9ndWFyZF9yYW5nZSh2LCAxIDw8IChvcmRlciArIFBBR0VfU0hJRlQpKTsKIAotICAgIGZy ZWVfaGVhcF9wYWdlcyh2aXJ0X3RvX3BhZ2UodiksIG9yZGVyKTsKKyAgICBmcmVlX2hlYXBfcGFn ZXModmlydF90b19wYWdlKHYpLCBvcmRlciwgZmFsc2UpOwogfQogCiAjZWxzZQpAQCAtMTY3Niwx MiArMTc5NCw5IEBAIHZvaWQgZnJlZV94ZW5oZWFwX3BhZ2VzKHZvaWQgKnYsIHVuc2lnbmVkIGlu dCBvcmRlcikKICAgICBwZyA9IHZpcnRfdG9fcGFnZSh2KTsKIAogICAgIGZvciAoIGkgPSAwOyBp IDwgKDF1IDw8IG9yZGVyKTsgaSsrICkKLSAgICB7Ci0gICAgICAgIHNjcnViX29uZV9wYWdlKCZw Z1tpXSk7CiAgICAgICAgIHBnW2ldLmNvdW50X2luZm8gJj0gflBHQ194ZW5faGVhcDsKLSAgICB9 CiAKLSAgICBmcmVlX2hlYXBfcGFnZXMocGcsIG9yZGVyKTsKKyAgICBmcmVlX2hlYXBfcGFnZXMo cGcsIG9yZGVyLCB0cnVlKTsKIH0KIAogI2VuZGlmCkBAIC0xNzkwLDcgKzE5MDUsNyBAQCBzdHJ1 Y3QgcGFnZV9pbmZvICphbGxvY19kb21oZWFwX3BhZ2VzKAogICAgIGlmICggZCAmJiAhKG1lbWZs YWdzICYgTUVNRl9ub19vd25lcikgJiYKICAgICAgICAgIGFzc2lnbl9wYWdlcyhkLCBwZywgb3Jk ZXIsIG1lbWZsYWdzKSApCiAgICAgewotICAgICAgICBmcmVlX2hlYXBfcGFnZXMocGcsIG9yZGVy KTsKKyAgICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBnLCBvcmRlciwgZmFsc2UpOwogICAgICAgICBy ZXR1cm4gTlVMTDsKICAgICB9CiAgICAgCkBAIC0xODU4LDExICsxOTczLDcgQEAgdm9pZCBmcmVl X2RvbWhlYXBfcGFnZXMoc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVkIGludCBvcmRlcikK ICAgICAgICAgICAgIHNjcnViID0gMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICggdW5saWtl bHkoc2NydWIpICkKLSAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDEgPDwgb3JkZXIpOyBp KysgKQotICAgICAgICAgICAgICAgIHNjcnViX29uZV9wYWdlKCZwZ1tpXSk7Ci0KLSAgICAgICAg ZnJlZV9oZWFwX3BhZ2VzKHBnLCBvcmRlcik7CisgICAgICAgIGZyZWVfaGVhcF9wYWdlcyhwZywg b3JkZXIsIHNjcnViKTsKICAgICB9CiAKICAgICBpZiAoIGRyb3BfZG9tX3JlZiApCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgK aW5kZXggZjY5MTVhZC4uMzhkNGZiYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9t bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaApAQCAtNDMsNiArNDMsOSBAQCBzdHJ1 Y3QgcGFnZV9pbmZvCiAgICAgICAgIH0gaW51c2U7CiAgICAgICAgIC8qIFBhZ2UgaXMgb24gYSBm cmVlIGxpc3Q6ICgoY291bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAwKS4gKi8KICAgICAg ICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIEluZGV4IG9mIHRoZSBmaXJzdCAqcG9zc2libHkq IHVuc2NydWJiZWQgcGFnZSBpbiB0aGUgYnVkZHkuICovCisjZGVmaW5lIElOVkFMSURfRElSVFlf SURYIC0xVQorICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0X2RpcnR5OwogICAgICAgICAg ICAgLyogRG8gVExCcyBuZWVkIGZsdXNoaW5nIGZvciBzYWZldHkgYmVmb3JlIG5leHQgcGFnZSB1 c2U/ICovCiAgICAgICAgICAgICBib29sX3QgbmVlZF90bGJmbHVzaDsKICAgICAgICAgfSBmcmVl OwpAQCAtMTE1LDYgKzExOCwxMyBAQCBzdHJ1Y3QgcGFnZV9pbmZvCiAjZGVmaW5lIFBHQ19jb3Vu dF93aWR0aCAgIFBHX3NoaWZ0KDkpCiAjZGVmaW5lIFBHQ19jb3VudF9tYXNrICAgICgoMVVMPDxQ R0NfY291bnRfd2lkdGgpLTEpCiAKKy8qCisgKiBQYWdlIG5lZWRzIHRvIGJlIHNjcnViYmVkLiBT aW5jZSB0aGlzIGJpdCBjYW4gb25seSBiZSBzZXQgb24gYSBwYWdlIHRoYXQgaXMKKyAqIGZyZWUg KGkuZS4gaW4gUEdDX3N0YXRlX2ZyZWUpIHdlIGNhbiByZXVzZSBQR0NfYWxsb2NhdGVkIGJpdC4K KyAqLworI2RlZmluZSBfUEdDX25lZWRfc2NydWIgICBfUEdDX2FsbG9jYXRlZAorI2RlZmluZSBQ R0NfbmVlZF9zY3J1YiAgICBQR0NfYWxsb2NhdGVkCisKIGV4dGVybiB1bnNpZ25lZCBsb25nIHhl bmhlYXBfbWZuX3N0YXJ0LCB4ZW5oZWFwX21mbl9lbmQ7CiBleHRlcm4gdmFkZHJfdCB4ZW5oZWFw X3ZpcnRfZW5kOwogI2lmZGVmIENPTkZJR19BUk1fNjQKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCAxMTlkN2RlLi5l MjBmMTYxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC04Nyw2ICs4Nyw5IEBAIHN0cnVjdCBwYWdlX2luZm8KIAog ICAgICAgICAvKiBQYWdlIGlzIG9uIGEgZnJlZSBsaXN0OiAoKGNvdW50X2luZm8gJiBQR0NfY291 bnRfbWFzaykgPT0gMCkuICovCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBJbmRl eCBvZiB0aGUgZmlyc3QgKnBvc3NpYmx5KiB1bnNjcnViYmVkIHBhZ2UgaW4gdGhlIGJ1ZGR5LiAq LworI2RlZmluZSBJTlZBTElEX0RJUlRZX0lEWCAtMVUKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBmaXJzdF9kaXJ0eTsKICAgICAgICAgICAgIC8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Ig c2FmZXR5IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLwogICAgICAgICAgICAgYm9vbF90IG5lZWRf dGxiZmx1c2g7CiAgICAgICAgIH0gZnJlZTsKQEAgLTIzMyw2ICsyMzYsMTMgQEAgc3RydWN0IHBh Z2VfaW5mbwogI2RlZmluZSBQR0NfY291bnRfd2lkdGggICBQR19zaGlmdCg5KQogI2RlZmluZSBQ R0NfY291bnRfbWFzayAgICAoKDFVTDw8UEdDX2NvdW50X3dpZHRoKS0xKQogCisvKgorICogUGFn ZSBuZWVkcyB0byBiZSBzY3J1YmJlZC4gU2luY2UgdGhpcyBiaXQgY2FuIG9ubHkgYmUgc2V0IG9u IGEgcGFnZSB0aGF0IGlzCisgKiBmcmVlIChpLmUuIGluIFBHQ19zdGF0ZV9mcmVlKSB3ZSBjYW4g cmV1c2UgUEdDX2FsbG9jYXRlZCBiaXQuCisgKi8KKyNkZWZpbmUgX1BHQ19uZWVkX3NjcnViICAg X1BHQ19hbGxvY2F0ZWQKKyNkZWZpbmUgUEdDX25lZWRfc2NydWIgICAgUEdDX2FsbG9jYXRlZAor CiBzdHJ1Y3Qgc3BhZ2VfaW5mbwogewogICAgICAgIHVuc2lnbmVkIGxvbmcgdHlwZV9pbmZvOwot LSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=