From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v5 1/8] mm: Place unscrubbed pages at the end of pagelist Date: Thu, 22 Jun 2017 14:57:03 -0400 Message-ID: <1498157830-21845-2-git-send-email-boris.ostrovsky@oracle.com> References: <1498157830-21845-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: <1498157830-21845-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 c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjU6CiogQmUg bW9yZSBjYXJlZnVsIHdoZW4gcmV0dXJuaW5nIHVudXNlZCBwb3J0aW9uIG9mIGEgYnVkZHkgdG8g dGhlIGhlYXAgaW4KICBhbGxvY19oZWFwX3BhZ2VzKCkgYW5kIGRvbid0IHNldCBmaXJzdF9kaXJ0 eSBpZiB3ZSBrbm93IHRoYXQgdGhlIHN1Yi1idWRkeQogIGlzIGNsZWFuCiogSW4gcmVzZXJ2ZV9v ZmZsaW5lZF9wYWdlKCksIGRvbid0IHRyeSB0byBmaW5kIGRpcnR5IHBhZ2VzIGluIHN1Yi1idWRk aWVzIGlmIHdlCiAgY2FuIGZpZ3VyZSBvdXQgdGhhdCB0aGVyZSBpcyBub25lLgoqIERyb3AgdW5u ZWNlc3Nhcnkgc2V0dGluZyBvZiBmaXJzdF9kaXJ0eSBpbiBmcmVlX2hlYXBfcGFnZXMoKQoqIFN3 aXRjaCB0byB1c2luZyBiaXRmaWVsZHMgaW4gcGFnZV9pbmZvLnUuZnJlZQoKSSBrZXB0IG5vZGVf bmVlZF9zY3J1YltdIGFzIGEgZ2xvYmFsIGFycmF5IGFuZCBub3QgYSAicGVyLW5vZGUiLiBJIHRo aW5rIHNwbGl0dGluZwppdCBzaG91bGQgYmUgcGFydCBvZiBtYWtpbmcgaGVhcF9sb2NrIGEgcGVy LW5vZGUgbG9jaywgdG9nZXRoZXIgd2l0aCBpbmNyZWFzaW5nCnNjcnViIGNvbmN1cnJlbmN5IGJ5 IGhhdmluZyBtb3JlIHRoYW4gb25lIENQVSBzY3J1YiBhIG5vZGUuCgoKCiB4ZW4vY29tbW9uL3Bh Z2VfYWxsb2MuYyAgfCAxOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCB8ICAxOCArKysrLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9tbS5oIHwgIDE3ICsrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRp b25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3BhZ2VfYWxs b2MuYyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCmluZGV4IDhiY2VmNmEuLjU3MGQxZjcgMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCisrKyBiL3hlbi9jb21tb24vcGFnZV9h bGxvYy5jCkBAIC0zODMsNiArMzgzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgcGFnZV9saXN0X2hlYWQg aGVhcF9ieV96b25lX2FuZF9vcmRlcl90W05SX1pPTkVTXVtNQVhfT1JERVIrMV07CiBzdGF0aWMg aGVhcF9ieV96b25lX2FuZF9vcmRlcl90ICpfaGVhcFtNQVhfTlVNTk9ERVNdOwogI2RlZmluZSBo ZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSAoKCpfaGVhcFtub2RlXSlbem9uZV1bb3JkZXJdKQogCitz dGF0aWMgdW5zaWduZWQgbG9uZyBub2RlX25lZWRfc2NydWJbTUFYX05VTU5PREVTXTsKKwogc3Rh dGljIHVuc2lnbmVkIGxvbmcgKmF2YWlsW01BWF9OVU1OT0RFU107CiBzdGF0aWMgbG9uZyB0b3Rh bF9hdmFpbF9wYWdlczsKIApAQCAtNjc4LDYgKzY4MCwyMCBAQCBzdGF0aWMgdm9pZCBjaGVja19s b3dfbWVtX3ZpcnEodm9pZCkKICAgICB9CiB9CiAKKy8qIFBhZ2VzIHRoYXQgbmVlZCBhIHNjcnVi IGFyZSBhZGRlZCB0byB0YWlsLCBvdGhlcndpc2UgdG8gaGVhZC4gKi8KK3N0YXRpYyB2b2lkIHBh Z2VfbGlzdF9hZGRfc2NydWIoc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVkIGludCBub2Rl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgem9uZSwgdW5z aWduZWQgaW50IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZmlyc3RfZGlydHkpCit7CisgICAgUEZOX09SREVSKHBnKSA9IG9yZGVyOworICAgIHBn LT51LmZyZWUuZmlyc3RfZGlydHkgPSBmaXJzdF9kaXJ0eTsKKworICAgIGlmICggZmlyc3RfZGly dHkgIT0gSU5WQUxJRF9ESVJUWV9JRFggKQorICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwocGcs ICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgZWxzZQorICAgICAgICBwYWdlX2xpc3Rf YWRkKHBnLCAmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOworfQorCiAvKiBBbGxvY2F0ZSAyXkBv cmRlciBjb250aWd1b3VzIHBhZ2VzLiAqLwogc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFsbG9j X2hlYXBfcGFnZXMoCiAgICAgdW5zaWduZWQgaW50IHpvbmVfbG8sIHVuc2lnbmVkIGludCB6b25l X2hpLApAQCAtNjg3LDcgKzcwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICphbGxvY19o ZWFwX3BhZ2VzKAogICAgIHVuc2lnbmVkIGludCBpLCBqLCB6b25lID0gMCwgbm9kZW1hc2tfcmV0 cnkgPSAwOwogICAgIG5vZGVpZF90IGZpcnN0X25vZGUsIG5vZGUgPSBNRU1GX2dldF9ub2RlKG1l bWZsYWdzKSwgcmVxX25vZGUgPSBub2RlOwogICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVzdCA9IDFV TCA8PCBvcmRlcjsKLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKKyAgICBzdHJ1Y3QgcGFnZV9p bmZvICpwZywgKmZpcnN0X2RpcnR5X3BnID0gTlVMTDsKICAgICBub2RlbWFza190IG5vZGVtYXNr ID0gKGQgIT0gTlVMTCApID8gZC0+bm9kZV9hZmZpbml0eSA6IG5vZGVfb25saW5lX21hcDsKICAg ICBib29sX3QgbmVlZF90bGJmbHVzaCA9IDA7CiAgICAgdWludDMyX3QgdGxiZmx1c2hfdGltZXN0 YW1wID0gMDsKQEAgLTc5OCwxMSArODE0LDI2IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICph bGxvY19oZWFwX3BhZ2VzKAogICAgIHJldHVybiBOVUxMOwogCiAgZm91bmQ6IAorCisgICAgaWYg KCBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ICE9IElOVkFMSURfRElSVFlfSURYICkKKyAgICAgICAg Zmlyc3RfZGlydHlfcGcgPSBwZyArIHBnLT51LmZyZWUuZmlyc3RfZGlydHk7CisKICAgICAvKiBX ZSBtYXkgaGF2ZSB0byBoYWx2ZSB0aGUgY2h1bmsgYSBudW1iZXIgb2YgdGltZXMuICovCiAgICAg d2hpbGUgKCBqICE9IG9yZGVyICkKICAgICB7Ci0gICAgICAgIFBGTl9PUkRFUihwZykgPSAtLWo7 Ci0gICAgICAgIHBhZ2VfbGlzdF9hZGRfdGFpbChwZywgJmhlYXAobm9kZSwgem9uZSwgaikpOwor ICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RfZGlydHk7CisKKyAgICAgICAgaWYgKCBmaXJzdF9k aXJ0eV9wZyAmJiAoKHBnICsgKDEgPDwgaikpID4gZmlyc3RfZGlydHlfcGcpICkKKyAgICAgICAg eworICAgICAgICAgICAgaWYgKCBwZyA8IGZpcnN0X2RpcnR5X3BnICkKKyAgICAgICAgICAgICAg ICBmaXJzdF9kaXJ0eSA9IChmaXJzdF9kaXJ0eV9wZyAtIHBnKSAvIHNpemVvZigqcGcpOworICAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0X2RpcnR5ID0gMDsKKyAgICAgICAg fQorICAgICAgICBlbHNlCisgICAgICAgICAgICBmaXJzdF9kaXJ0eSA9IElOVkFMSURfRElSVFlf SURYOworCisgICAgICAgIHBhZ2VfbGlzdF9hZGRfc2NydWIocGcsIG5vZGUsIHpvbmUsIC0taiwg Zmlyc3RfZGlydHkpOwogICAgICAgICBwZyArPSAxIDw8IGo7CiAgICAgfQogCkBAIC04NDksMTMg Kzg4MCwyMiBAQCBzdGF0aWMgaW50IHJlc2VydmVfb2ZmbGluZWRfcGFnZShzdHJ1Y3QgcGFnZV9p bmZvICpoZWFkKQogewogICAgIHVuc2lnbmVkIGludCBub2RlID0gcGh5c190b19uaWQocGFnZV90 b19tYWRkcihoZWFkKSk7CiAgICAgaW50IHpvbmUgPSBwYWdlX3RvX3pvbmUoaGVhZCksIGksIGhl YWRfb3JkZXIgPSBQRk5fT1JERVIoaGVhZCksIGNvdW50ID0gMDsKLSAgICBzdHJ1Y3QgcGFnZV9p bmZvICpjdXJfaGVhZDsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpjdXJfaGVhZCwgKmZpcnN0X2Rp cnR5X3BnID0gTlVMTDsKICAgICBpbnQgY3VyX29yZGVyOwogCiAgICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZoZWFwX2xvY2spKTsKIAogICAgIGN1cl9oZWFkID0gaGVhZDsKIAorICAgIC8qCisg ICAgICogV2UgbWF5IGJyZWFrIHRoZSBidWRkeSBzbyBsZXQncyBtYXJrIHRoZSBoZWFkIGFzIGNs ZWFuLiBUaGVuLCB3aGVuCisgICAgICogbWVyZ2luZyBjaHVua3MgYmFjayBpbnRvIHRoZSBoZWFw LCB3ZSB3aWxsIHNlZSB3aGV0aGVyIHRoZSBjaHVuayBoYXMKKyAgICAgKiB1bnNjcnViYmVkIHBh Z2VzIGFuZCBzZXQgaXRzIGZpcnN0X2RpcnR5IHByb3Blcmx5LgorICAgICAqLworICAgIGlmICho ZWFkLT51LmZyZWUuZmlyc3RfZGlydHkgIT0gSU5WQUxJRF9ESVJUWV9JRFgpCisgICAgICAgIGZp cnN0X2RpcnR5X3BnID0gaGVhZCArIGhlYWQtPnUuZnJlZS5maXJzdF9kaXJ0eTsKKyAgICBoZWFk LT51LmZyZWUuZmlyc3RfZGlydHkgPSBJTlZBTElEX0RJUlRZX0lEWDsKKwogICAgIHBhZ2VfbGlz dF9kZWwoaGVhZCwgJmhlYXAobm9kZSwgem9uZSwgaGVhZF9vcmRlcikpOwogCiAgICAgd2hpbGUg KCBjdXJfaGVhZCA8IChoZWFkICsgKDEgPDwgaGVhZF9vcmRlcikpICkKQEAgLTg3Myw2ICs5MTMs OCBAQCBzdGF0aWMgaW50IHJlc2VydmVfb2ZmbGluZWRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpo ZWFkKQogCiAgICAgICAgIHdoaWxlICggY3VyX29yZGVyIDwgaGVhZF9vcmRlciApCiAgICAgICAg IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdF9kaXJ0eSA9IElOVkFMSURfRElSVFlf SURYOworCiAgICAgICAgICAgICBuZXh0X29yZGVyID0gY3VyX29yZGVyICsgMTsKIAogICAgICAg ICAgICAgaWYgKCAoY3VyX2hlYWQgKyAoMSA8PCBuZXh0X29yZGVyKSkgPj0gKGhlYWQgKyAoIDEg PDwgaGVhZF9vcmRlcikpICkKQEAgLTg5Miw4ICs5MzQsMjUgQEAgc3RhdGljIGludCByZXNlcnZl X29mZmxpbmVkX3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqaGVhZCkKICAgICAgICAgICAgIHsKICAg ICAgICAgICAgIG1lcmdlOgogICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IGNvbnNpZGVyIG1l cmdpbmcgb3V0c2lkZSB0aGUgaGVhZF9vcmRlci4gKi8KLSAgICAgICAgICAgICAgICBwYWdlX2xp c3RfYWRkX3RhaWwoY3VyX2hlYWQsICZoZWFwKG5vZGUsIHpvbmUsIGN1cl9vcmRlcikpOwotICAg ICAgICAgICAgICAgIFBGTl9PUkRFUihjdXJfaGVhZCkgPSBjdXJfb3JkZXI7CisKKyAgICAgICAg ICAgICAgICAvKiBTZWUgaWYgYW55IG9mIHRoZSBwYWdlcyBpbmRlZWQgbmVlZCBzY3J1YmJpbmcu ICovCisgICAgICAgICAgICAgICAgaWYgKCBmaXJzdF9kaXJ0eV9wZyAmJiAoY3VyX2hlYWQgKyAo MSA8PCBjdXJfb3JkZXIpID4gZmlyc3RfZGlydHlfcGcpICkKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgIGlmICggY3VyX2hlYWQgPCBmaXJzdF9kaXJ0eV9wZyApCisgICAg ICAgICAgICAgICAgICAgICAgICBpID0gKGZpcnN0X2RpcnR5X3BnIC0gY3VyX2hlYWQpIC8gc2l6 ZW9mKCpjdXJfaGVhZCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICAgICAgICAgIGkgPSAwOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8ICgxIDw8 IGN1cl9vcmRlcik7IGkrKyApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRlc3RfYml0 KF9QR0NfbmVlZF9zY3J1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmN1cl9oZWFkW2ldLmNvdW50X2luZm8pICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9kaXJ0eSA9IGk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9hZGRfc2NydWIoY3VyX2hlYWQs IG5vZGUsIHpvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfb3Jk ZXIsIGZpcnN0X2RpcnR5KTsKICAgICAgICAgICAgICAgICBjdXJfaGVhZCArPSAoMSA8PCBjdXJf b3JkZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtOTE5LDkg Kzk3OCw1MyBAQCBzdGF0aWMgaW50IHJlc2VydmVfb2ZmbGluZWRfcGFnZShzdHJ1Y3QgcGFnZV9p bmZvICpoZWFkKQogICAgIHJldHVybiBjb3VudDsKIH0KIAorc3RhdGljIHZvaWQgc2NydWJfZnJl ZV9wYWdlcyh1bnNpZ25lZCBpbnQgbm9kZSkKK3sKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsK KyAgICB1bnNpZ25lZCBpbnQgem9uZTsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaGVh cF9sb2NrKSk7CisKKyAgICBpZiAoICFub2RlX25lZWRfc2NydWJbbm9kZV0gKQorICAgICAgICBy ZXR1cm47CisKKyAgICBmb3IgKCB6b25lID0gMDsgem9uZSA8IE5SX1pPTkVTOyB6b25lKysgKQor ICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyID0gTUFYX09SREVSOworCisgICAgICAg IGRvIHsKKyAgICAgICAgICAgIHdoaWxlICggIXBhZ2VfbGlzdF9lbXB0eSgmaGVhcChub2RlLCB6 b25lLCBvcmRlcikpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgICAgICAgICAgICAgIC8qIFVuc2NydWJiZWQgcGFnZXMgYXJlIGFsd2F5cyBh dCB0aGUgZW5kIG9mIHRoZSBsaXN0LiAqLworICAgICAgICAgICAgICAgIHBnID0gcGFnZV9saXN0 X2xhc3QoJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKyAgICAgICAgICAgICAgICBpZiAoIHBn LT51LmZyZWUuZmlyc3RfZGlydHkgPT0gSU5WQUxJRF9ESVJUWV9JRFggKQorICAgICAgICAgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGZvciAoIGkgPSBwZy0+dS5mcmVlLmZp cnN0X2RpcnR5OyBpIDwgKDFVIDw8IG9yZGVyKTsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgaWYgKCB0ZXN0X2JpdChfUEdDX25lZWRfc2NydWIsICZwZ1tpXS5j b3VudF9pbmZvKSApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHNjcnViX29uZV9wYWdlKCZwZ1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ1tp XS5jb3VudF9pbmZvICY9IH5QR0NfbmVlZF9zY3J1YjsKKyAgICAgICAgICAgICAgICAgICAgICAg IG5vZGVfbmVlZF9zY3J1Yltub2RlXS0tOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcGFnZV9saXN0X2RlbChwZywgJmhlYXAobm9k ZSwgem9uZSwgb3JkZXIpKTsKKyAgICAgICAgICAgICAgICBwYWdlX2xpc3RfYWRkX3NjcnViKHBn LCBub2RlLCB6b25lLCBvcmRlciwgSU5WQUxJRF9ESVJUWV9JRFgpOworCisgICAgICAgICAgICAg ICAgaWYgKCBub2RlX25lZWRfc2NydWJbbm9kZV0gPT0gMCApCisgICAgICAgICAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoIG9yZGVyLS0gIT0gMCAp OworICAgIH0KK30KKwogLyogRnJlZSAyXkBvcmRlciBzZXQgb2YgcGFnZXMuICovCiBzdGF0aWMg dm9pZCBmcmVlX2hlYXBfcGFnZXMoCi0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVk IGludCBvcmRlcikKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWduZWQgaW50IG9yZGVy LCBib29sIG5lZWRfc2NydWIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBtYXNrLCBtZm4gPSBwYWdl X3RvX21mbihwZyk7CiAgICAgdW5zaWduZWQgaW50IGksIG5vZGUgPSBwaHlzX3RvX25pZChwYWdl X3RvX21hZGRyKHBnKSksIHRhaW50ZWQgPSAwOwpAQCAtOTYxLDEwICsxMDY0LDIwIEBAIHN0YXRp YyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKICAgICAgICAgLyogVGhpcyBwYWdlIGlzIG5vdCBhIGd1 ZXN0IGZyYW1lIGFueSBtb3JlLiAqLwogICAgICAgICBwYWdlX3NldF9vd25lcigmcGdbaV0sIE5V TEwpOyAvKiBzZXRfZ3Bmbl9mcm9tX21mbiBzbm9vcHMgcGcgb3duZXIgKi8KICAgICAgICAgc2V0 X2dwZm5fZnJvbV9tZm4obWZuICsgaSwgSU5WQUxJRF9NMlBfRU5UUlkpOworCisgICAgICAgIGlm ICggbmVlZF9zY3J1YiApCisgICAgICAgICAgICBwZ1tpXS5jb3VudF9pbmZvIHw9IFBHQ19uZWVk X3NjcnViOwogICAgIH0KIAogICAgIGF2YWlsW25vZGVdW3pvbmVdICs9IDEgPDwgb3JkZXI7CiAg ICAgdG90YWxfYXZhaWxfcGFnZXMgKz0gMSA8PCBvcmRlcjsKKyAgICBpZiAoIG5lZWRfc2NydWIg KQorICAgIHsKKyAgICAgICAgbm9kZV9uZWVkX3NjcnViW25vZGVdICs9IDEgPDwgb3JkZXI7Cisg ICAgICAgIHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPSAwOworICAgIH0KKyAgICBlbHNlCisgICAg ICAgIHBnLT51LmZyZWUuZmlyc3RfZGlydHkgPSBJTlZBTElEX0RJUlRZX0lEWDsKIAogICAgIGlm ICggdG1lbV9lbmFibGVkKCkgKQogICAgICAgICBtaWRzaXplX2FsbG9jX3pvbmVfcGFnZXMgPSBt YXgoCkBAIC05NzcsMzUgKzEwOTAsNTMgQEAgc3RhdGljIHZvaWQgZnJlZV9oZWFwX3BhZ2VzKAog CiAgICAgICAgIGlmICggKHBhZ2VfdG9fbWZuKHBnKSAmIG1hc2spICkKICAgICAgICAgeworICAg ICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcHJlZGVjZXNzb3IgPSBwZyAtIG1hc2s7CisKICAg ICAgICAgICAgIC8qIE1lcmdlIHdpdGggcHJlZGVjZXNzb3IgYmxvY2s/ICovCi0gICAgICAgICAg ICBpZiAoICFtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihwZy1tYXNrKSkpIHx8Ci0gICAgICAg ICAgICAgICAgICFwYWdlX3N0YXRlX2lzKHBnLW1hc2ssIGZyZWUpIHx8Ci0gICAgICAgICAgICAg ICAgIChQRk5fT1JERVIocGctbWFzaykgIT0gb3JkZXIpIHx8Ci0gICAgICAgICAgICAgICAgIChw aHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHBnLW1hc2spKSAhPSBub2RlKSApCisgICAgICAgICAg ICBpZiAoICFtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihwcmVkZWNlc3NvcikpKSB8fAorICAg ICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhwcmVkZWNlc3NvciwgZnJlZSkgfHwKKyAgICAg ICAgICAgICAgICAgKFBGTl9PUkRFUihwcmVkZWNlc3NvcikgIT0gb3JkZXIpIHx8CisgICAgICAg ICAgICAgICAgIChwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHByZWRlY2Vzc29yKSkgIT0gbm9k ZSkgKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGcgLT0gbWFzazsKLSAg ICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisK KyAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocHJlZGVjZXNzb3IsICZoZWFwKG5vZGUsIHpvbmUs IG9yZGVyKSk7CisKKyAgICAgICAgICAgIGlmICggcHJlZGVjZXNzb3ItPnUuZnJlZS5maXJzdF9k aXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAgbmVlZF9zY3J1YiA9 IHRydWU7CisgICAgICAgICAgICAgICAgLyogLi4uIGFuZCBrZWVwIHByZWRlY2Vzc29yJ3MgZmly c3RfZGlydHkuICovCisgICAgICAgICAgICBlbHNlIGlmICggcGctPnUuZnJlZS5maXJzdF9kaXJ0 eSAhPSBJTlZBTElEX0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3ItPnUu ZnJlZS5maXJzdF9kaXJ0eSA9ICgxVSA8PCBvcmRlcikgKworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5OworCisg ICAgICAgICAgICBwZyA9IHByZWRlY2Vzc29yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg ICAgICAgeworICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqc3VjY2Vzc29yID0gcGcgKyBt YXNrOworCiAgICAgICAgICAgICAvKiBNZXJnZSB3aXRoIHN1Y2Nlc3NvciBibG9jaz8gKi8KLSAg ICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHBnK21hc2spKSkgfHwK LSAgICAgICAgICAgICAgICAgIXBhZ2Vfc3RhdGVfaXMocGcrbWFzaywgZnJlZSkgfHwKLSAgICAg ICAgICAgICAgICAgKFBGTl9PUkRFUihwZyttYXNrKSAhPSBvcmRlcikgfHwKLSAgICAgICAgICAg ICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIocGcrbWFzaykpICE9IG5vZGUpICkKKyAg ICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKHBhZ2VfdG9fbWZuKHN1Y2Nlc3NvcikpKSB8 fAorICAgICAgICAgICAgICAgICAhcGFnZV9zdGF0ZV9pcyhzdWNjZXNzb3IsIGZyZWUpIHx8Cisg ICAgICAgICAgICAgICAgIChQRk5fT1JERVIoc3VjY2Vzc29yKSAhPSBvcmRlcikgfHwKKyAgICAg ICAgICAgICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIoc3VjY2Vzc29yKSkgIT0gbm9k ZSkgKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGFnZV9saXN0X2RlbChw ZyArIG1hc2ssICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgICAgICAgICBwYWdlX2xp c3RfZGVsKHN1Y2Nlc3NvciwgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKKworICAgICAgICAg ICAgaWYgKCBzdWNjZXNzb3ItPnUuZnJlZS5maXJzdF9kaXJ0eSAhPSBJTlZBTElEX0RJUlRZX0lE WCApCisgICAgICAgICAgICAgICAgbmVlZF9zY3J1YiA9IHRydWU7CiAgICAgICAgIH0KIAogICAg ICAgICBvcmRlcisrOwogICAgIH0KIAotICAgIFBGTl9PUkRFUihwZykgPSBvcmRlcjsKLSAgICBw YWdlX2xpc3RfYWRkX3RhaWwocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CisgICAgcGFn ZV9saXN0X2FkZF9zY3J1YihwZywgbm9kZSwgem9uZSwgb3JkZXIsIHBnLT51LmZyZWUuZmlyc3Rf ZGlydHkpOwogCiAgICAgaWYgKCB0YWludGVkICkKICAgICAgICAgcmVzZXJ2ZV9vZmZsaW5lZF9w YWdlKHBnKTsKIAorICAgIGlmICggbmVlZF9zY3J1YiApCisgICAgICAgIHNjcnViX2ZyZWVfcGFn ZXMobm9kZSk7CisKICAgICBzcGluX3VubG9jaygmaGVhcF9sb2NrKTsKIH0KIApAQCAtMTIyNiw3 ICsxMzU3LDcgQEAgdW5zaWduZWQgaW50IG9ubGluZV9wYWdlKHVuc2lnbmVkIGxvbmcgbWZuLCB1 aW50MzJfdCAqc3RhdHVzKQogICAgIHNwaW5fdW5sb2NrKCZoZWFwX2xvY2spOwogCiAgICAgaWYg KCAoeSAmIFBHQ19zdGF0ZSkgPT0gUEdDX3N0YXRlX29mZmxpbmVkICkKLSAgICAgICAgZnJlZV9o ZWFwX3BhZ2VzKHBnLCAwKTsKKyAgICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBnLCAwLCBmYWxzZSk7 CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMTI5NSw3ICsxNDI2LDcgQEAgc3RhdGljIHZvaWQg aW5pdF9oZWFwX3BhZ2VzKAogICAgICAgICAgICAgbnJfcGFnZXMgLT0gbjsKICAgICAgICAgfQog Ci0gICAgICAgIGZyZWVfaGVhcF9wYWdlcyhwZytpLCAwKTsKKyAgICAgICAgZnJlZV9oZWFwX3Bh Z2VzKHBnICsgaSwgMCwgZmFsc2UpOwogICAgIH0KIH0KIApAQCAtMTYyMiw3ICsxNzUzLDcgQEAg dm9pZCBmcmVlX3hlbmhlYXBfcGFnZXModm9pZCAqdiwgdW5zaWduZWQgaW50IG9yZGVyKQogCiAg ICAgbWVtZ3VhcmRfZ3VhcmRfcmFuZ2UodiwgMSA8PCAob3JkZXIgKyBQQUdFX1NISUZUKSk7CiAK LSAgICBmcmVlX2hlYXBfcGFnZXModmlydF90b19wYWdlKHYpLCBvcmRlcik7CisgICAgZnJlZV9o ZWFwX3BhZ2VzKHZpcnRfdG9fcGFnZSh2KSwgb3JkZXIsIGZhbHNlKTsKIH0KIAogI2Vsc2UKQEAg LTE2NzYsMTIgKzE4MDcsOSBAQCB2b2lkIGZyZWVfeGVuaGVhcF9wYWdlcyh2b2lkICp2LCB1bnNp Z25lZCBpbnQgb3JkZXIpCiAgICAgcGcgPSB2aXJ0X3RvX3BhZ2Uodik7CiAKICAgICBmb3IgKCBp ID0gMDsgaSA8ICgxdSA8PCBvcmRlcik7IGkrKyApCi0gICAgewotICAgICAgICBzY3J1Yl9vbmVf cGFnZSgmcGdbaV0pOwogICAgICAgICBwZ1tpXS5jb3VudF9pbmZvICY9IH5QR0NfeGVuX2hlYXA7 Ci0gICAgfQogCi0gICAgZnJlZV9oZWFwX3BhZ2VzKHBnLCBvcmRlcik7CisgICAgZnJlZV9oZWFw X3BhZ2VzKHBnLCBvcmRlciwgdHJ1ZSk7CiB9CiAKICNlbmRpZgpAQCAtMTc5MCw3ICsxOTE4LDcg QEAgc3RydWN0IHBhZ2VfaW5mbyAqYWxsb2NfZG9taGVhcF9wYWdlcygKICAgICBpZiAoIGQgJiYg IShtZW1mbGFncyAmIE1FTUZfbm9fb3duZXIpICYmCiAgICAgICAgICBhc3NpZ25fcGFnZXMoZCwg cGcsIG9yZGVyLCBtZW1mbGFncykgKQogICAgIHsKLSAgICAgICAgZnJlZV9oZWFwX3BhZ2VzKHBn LCBvcmRlcik7CisgICAgICAgIGZyZWVfaGVhcF9wYWdlcyhwZywgb3JkZXIsIGZhbHNlKTsKICAg ICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIApAQCAtMTg1OCwxMSArMTk4Niw3IEBAIHZv aWQgZnJlZV9kb21oZWFwX3BhZ2VzKHN0cnVjdCBwYWdlX2luZm8gKnBnLCB1bnNpZ25lZCBpbnQg b3JkZXIpCiAgICAgICAgICAgICBzY3J1YiA9IDE7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo IHVubGlrZWx5KHNjcnViKSApCi0gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxIDw8IG9y ZGVyKTsgaSsrICkKLSAgICAgICAgICAgICAgICBzY3J1Yl9vbmVfcGFnZSgmcGdbaV0pOwotCi0g ICAgICAgIGZyZWVfaGVhcF9wYWdlcyhwZywgb3JkZXIpOworICAgICAgICBmcmVlX2hlYXBfcGFn ZXMocGcsIG9yZGVyLCBzY3J1Yik7CiAgICAgfQogCiAgICAgaWYgKCBkcm9wX2RvbV9yZWYgKQpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9tbS5oCmluZGV4IDEzYzY3M2EuLjg4OWE4NWUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vbW0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKQEAgLTQ0LDcgKzQ0LDE2 IEBAIHN0cnVjdCBwYWdlX2luZm8KICAgICAgICAgLyogUGFnZSBpcyBvbiBhIGZyZWUgbGlzdDog KChjb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spID09IDApLiAqLwogICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgLyogRG8gVExCcyBuZWVkIGZsdXNoaW5nIGZvciBzYWZldHkgYmVmb3Jl IG5leHQgcGFnZSB1c2U/ICovCi0gICAgICAgICAgICBib29sX3QgbmVlZF90bGJmbHVzaDsKKyAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmVlZF90bGJmbHVzaDoxOworCisgICAgICAgICAgICAv KgorICAgICAgICAgICAgICogSW5kZXggb2YgdGhlIGZpcnN0ICpwb3NzaWJseSogdW5zY3J1YmJl ZCBwYWdlIGluIHRoZSBidWRkeS4KKyAgICAgICAgICAgICAqIE9uZSBtb3JlIHRoYW4gbWF4aW11 bSBwb3NzaWJsZSBvcmRlciAoTUFYX09SREVSKzEpIHRvCisgICAgICAgICAgICAgKiBhY2NvbW1v ZGF0ZSBJTlZBTElEX0RJUlRZX0lEWC4KKyAgICAgICAgICAgICAqLworI2RlZmluZSBJTlZBTElE X0RJUlRZX0lEWCAoLTFVTCAmICgoKDFVTDw8TUFYX09SREVSKSArIDIpIC0gMSkpCisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGZpcnN0X2RpcnR5Ok1BWF9PUkRFUiArIDI7CisKICAgICAgICAg fSBmcmVlOwogCiAgICAgfSB1OwpAQCAtMTA3LDYgKzExNiwxMyBAQCBzdHJ1Y3QgcGFnZV9pbmZv CiAjZGVmaW5lIFBHQ19jb3VudF93aWR0aCAgIFBHX3NoaWZ0KDkpCiAjZGVmaW5lIFBHQ19jb3Vu dF9tYXNrICAgICgoMVVMPDxQR0NfY291bnRfd2lkdGgpLTEpCiAKKy8qCisgKiBQYWdlIG5lZWRz IHRvIGJlIHNjcnViYmVkLiBTaW5jZSB0aGlzIGJpdCBjYW4gb25seSBiZSBzZXQgb24gYSBwYWdl IHRoYXQgaXMKKyAqIGZyZWUgKGkuZS4gaW4gUEdDX3N0YXRlX2ZyZWUpIHdlIGNhbiByZXVzZSBQ R0NfYWxsb2NhdGVkIGJpdC4KKyAqLworI2RlZmluZSBfUEdDX25lZWRfc2NydWIgICBfUEdDX2Fs bG9jYXRlZAorI2RlZmluZSBQR0NfbmVlZF9zY3J1YiAgICBQR0NfYWxsb2NhdGVkCisKIGV4dGVy biB1bnNpZ25lZCBsb25nIHhlbmhlYXBfbWZuX3N0YXJ0LCB4ZW5oZWFwX21mbl9lbmQ7CiBleHRl cm4gdmFkZHJfdCB4ZW5oZWFwX3ZpcnRfZW5kOwogI2lmZGVmIENPTkZJR19BUk1fNjQKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0u aAppbmRleCBkMzM1OTlkLi5jZDAwYmVmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC04OCw3ICs4OCwxNSBAQCBz dHJ1Y3QgcGFnZV9pbmZvCiAgICAgICAgIC8qIFBhZ2UgaXMgb24gYSBmcmVlIGxpc3Q6ICgoY291 bnRfaW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAwKS4gKi8KICAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgIC8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5IGJlZm9yZSBuZXh0 IHBhZ2UgdXNlPyAqLwotICAgICAgICAgICAgYm9vbF90IG5lZWRfdGxiZmx1c2g7CisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG5lZWRfdGxiZmx1c2g6MTsKKworICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAqIEluZGV4IG9mIHRoZSBmaXJzdCAqcG9zc2libHkqIHVuc2NydWJiZWQgcGFn ZSBpbiB0aGUgYnVkZHkuCisgICAgICAgICAgICAgKiBPbmUgbW9yZSB0aGFuIG1heGltdW0gcG9z c2libGUgb3JkZXIgKE1BWF9PUkRFUisxKSB0bworICAgICAgICAgICAgICogYWNjb21tb2RhdGUg SU5WQUxJRF9ESVJUWV9JRFguCisgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSU5WQUxJRF9ESVJU WV9JRFggKC0xVUwgJiAoKCgxVUw8PE1BWF9PUkRFUikgKyAyKSAtIDEpKQorICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBmaXJzdF9kaXJ0eTpNQVhfT1JERVIgKyAyOwogICAgICAgICB9IGZyZWU7 CiAKICAgICB9IHU7CkBAIC0yMzMsNiArMjQxLDEzIEBAIHN0cnVjdCBwYWdlX2luZm8KICNkZWZp bmUgUEdDX2NvdW50X3dpZHRoICAgUEdfc2hpZnQoOSkKICNkZWZpbmUgUEdDX2NvdW50X21hc2sg ICAgKCgxVUw8PFBHQ19jb3VudF93aWR0aCktMSkKIAorLyoKKyAqIFBhZ2UgbmVlZHMgdG8gYmUg c2NydWJiZWQuIFNpbmNlIHRoaXMgYml0IGNhbiBvbmx5IGJlIHNldCBvbiBhIHBhZ2UgdGhhdCBp cworICogZnJlZSAoaS5lLiBpbiBQR0Nfc3RhdGVfZnJlZSkgd2UgY2FuIHJldXNlIFBHQ19hbGxv Y2F0ZWQgYml0LgorICovCisjZGVmaW5lIF9QR0NfbmVlZF9zY3J1YiAgIF9QR0NfYWxsb2NhdGVk CisjZGVmaW5lIFBHQ19uZWVkX3NjcnViICAgIFBHQ19hbGxvY2F0ZWQKKwogc3RydWN0IHNwYWdl X2luZm8KIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHR5cGVfaW5mbzsKLS0gCjEuOC4zLjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK