From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v3 7/9] mm: Keep pages available for allocation while scrubbing Date: Fri, 14 Apr 2017 11:37:36 -0400 Message-ID: <1492184258-3277-8-git-send-email-boris.ostrovsky@oracle.com> References: <1492184258-3277-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: <1492184258-3277-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 SW5zdGVhZCBvZiBzY3J1YmJpbmcgcGFnZXMgd2hpbGUgaG9sZGluZyBoZWFwIGxvY2sgd2UgY2Fu IG1hcmsKYnVkZHkncyBoZWFkIGFzIGJlaW5nIHNjcnViYmVkIGFuZCBkcm9wIHRoZSBsb2NrIHRl bXBvcmFyaWx5LgpJZiBzb21lb25lIChtb3N0IGxpa2VseSBhbGxvY19oZWFwX3BhZ2VzKCkpIHRy aWVzIHRvIGFjY2Vzcwp0aGlzIGNodW5rIGl0IHdpbGwgc2lnbmFsIHRoZSBzY3J1YmJlciB0byBh Ym9ydCBzY3J1YiBieSBzZXR0aW5nCmhlYWQncyBQQUdFX1NDUlVCX0FCT1JUIGJpdC4gVGhlIHNj cnViYmVyIGNoZWNrcyB0aGlzIGJpdCBhZnRlcgpwcm9jZXNzaW5nIGVhY2ggcGFnZSBhbmQgc3Rv cHMgaXRzIHdvcmsgYXMgc29vbiBhcyBpdCBzZWVzIGl0LgoKU2lnbmVkLW9mZi1ieTogQm9yaXMg T3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjM6 CiogQWRqdXN0ZWQgcGFnZV9pbmZvJ3Mgc2NydWJfc3RhdGUgZGVmaW5pdGlvbnMgYnV0IGtlcHQg dGhlbSBhcyBiaW5hcnkKICBmbGFncyBzaW5jZSBJIHRoaW5rIGhhdmluZyBib3RoIFBBR0VfU0NS VUJCSU5HIGFuZCBQQUdFX1NDUlVCX0FCT1JUCiAgYml0cyBzZXQgbWFrZSBzZW5zZS4KCiB4ZW4v Y29tbW9uL3BhZ2VfYWxsb2MuYyAgfCAgIDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oIHwgICAgNCArKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oIHwgICAgNCArKwogMyBmaWxlcyBjaGFuZ2VkLCA5MyBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vcGFnZV9h bGxvYy5jIGIveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMKaW5kZXggMGIyZGZmMS4uNTE0YTRhMSAx MDA2NDQKLS0tIGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMKKysrIGIveGVuL2NvbW1vbi9wYWdl X2FsbG9jLmMKQEAgLTY5NCw2ICs2OTQsMTcgQEAgc3RhdGljIHZvaWQgcGFnZV9saXN0X2FkZF9z Y3J1YihzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWduZWQgaW50IG5vZGUsCiAgICAgICAgIHBh Z2VfbGlzdF9hZGQocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CiB9CiAKK3N0YXRpYyB2 b2lkIGNoZWNrX2FuZF9zdG9wX3NjcnViKHN0cnVjdCBwYWdlX2luZm8gKmhlYWQpCit7CisgICAg aWYgKCBoZWFkLT51LmZyZWUuc2NydWJfc3RhdGUgJiBQQUdFX1NDUlVCQklORyApCisgICAgewor ICAgICAgICBoZWFkLT51LmZyZWUuc2NydWJfc3RhdGUgfD0gUEFHRV9TQ1JVQl9BQk9SVDsKKyAg ICAgICAgc3Bpbl9sb2NrX2tpY2soKTsKKyAgICAgICAgd2hpbGUgKCBBQ0NFU1NfT05DRShoZWFk LT51LmZyZWUuc2NydWJfc3RhdGUpICYgUEFHRV9TQ1JVQl9BQk9SVCApCisgICAgICAgICAgICBj cHVfcmVsYXgoKTsKKyAgICB9Cit9CisKIC8qIEFsbG9jYXRlIDJeQG9yZGVyIGNvbnRpZ3VvdXMg cGFnZXMuICovCiBzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqYWxsb2NfaGVhcF9wYWdlcygKICAg ICB1bnNpZ25lZCBpbnQgem9uZV9sbywgdW5zaWduZWQgaW50IHpvbmVfaGksCkBAIC03ODAsMTAg Kzc5MSwxNSBAQCBzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqYWxsb2NfaGVhcF9wYWdlcygKICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIChwZyA9IHBhZ2VfbGlzdF9yZW1vdmVf aGVhZCgmaGVhcChub2RlLCB6b25lLCBqKSkpICkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgICAgIGlmICggKG9yZGVyID09IDApIHx8IHVzZV91bnNjcnViYmVkIHx8Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgIXBnLT51LmZyZWUuZGlydHlfaGVhZCApCisgICAgICAgICAg ICAgICAgICAgIGlmICggIXBnLT51LmZyZWUuZGlydHlfaGVhZCApCiAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGZvdW5kOwogCisgICAgICAgICAgICAgICAgICAgIGlmICggKG9yZGVyID09 IDApIHx8IHVzZV91bnNjcnViYmVkICkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgICAgY2hlY2tfYW5kX3N0b3Bfc2NydWIocGcpOworICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBmb3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAg ICAgICAgICAgIHBhZ2VfbGlzdF9hZGRfdGFpbChwZywgJmhlYXAobm9kZSwgem9uZSwgaikpOwog ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTkyMSw2ICs5MzcsOCBAQCBzdGF0 aWMgaW50IHJlc2VydmVfb2ZmbGluZWRfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpoZWFkKQogCiAg ICAgaGVhZC0+dS5mcmVlLmRpcnR5X2hlYWQgPSBmYWxzZTsKIAorICAgIGNoZWNrX2FuZF9zdG9w X3NjcnViKGhlYWQpOworCiAgICAgcGFnZV9saXN0X2RlbChoZWFkLCAmaGVhcChub2RlLCB6b25l LCBoZWFkX29yZGVyKSk7CiAKICAgICB3aGlsZSAoIGN1cl9oZWFkIDwgKGhlYWQgKyAoMSA8PCBo ZWFkX29yZGVyKSkgKQpAQCAtMTAyNyw2ICsxMDQ1LDkgQEAgbWVyZ2VfYW5kX2ZyZWVfYnVkZHko c3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2lnbmVkIGludCBub2RlLAogICAgICAgICAgICAgIChw aHlzX3RvX25pZChwYWdlX3RvX21hZGRyKGJ1ZGR5KSkgIT0gbm9kZSkgKQogICAgICAgICAgICAg YnJlYWs7CiAKKyAgICAgICAgaWYgKCBidWRkeS0+dS5mcmVlLnNjcnViX3N0YXRlICYgUEFHRV9T Q1JVQkJJTkcgKQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgcGFnZV9saXN0X2RlbChi dWRkeSwgJmhlYXAobm9kZSwgem9uZSwgb3JkZXIpKTsKICAgICAgICAgbmVlZF9zY3J1YiB8PSBi dWRkeS0+dS5mcmVlLmRpcnR5X2hlYWQ7CiAgICAgICAgIGJ1ZGR5LT51LmZyZWUuZGlydHlfaGVh ZCA9IGZhbHNlOwpAQCAtMTA5OCwxNCArMTExOSwzNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5v ZGVfdG9fc2NydWIoYm9vbCBnZXRfbm9kZSkKICAgICByZXR1cm4gY2xvc2VzdDsKIH0KIAorc3Ry dWN0IHNjcnViX3dhaXRfc3RhdGUgeworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOworICAgIGJv b2wgZHJvcDsKK307CisKK3N0YXRpYyB2b2lkIHNjcnViX2NvbnRpbnVlKHZvaWQgKmRhdGEpCit7 CisgICAgc3RydWN0IHNjcnViX3dhaXRfc3RhdGUgKnN0ID0gZGF0YTsKKworICAgIGlmICggc3Qt PmRyb3AgKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIHN0LT5wZy0+dS5mcmVlLnNjcnVi X3N0YXRlICYgUEFHRV9TQ1JVQl9BQk9SVCApCisgICAgeworICAgICAgICAvKiBUaGVyZSBpcyBh IHdhaXRlciBmb3IgdGhpcyBidWRkeS4gUmVsZWFzZSBpdC4gKi8KKyAgICAgICAgc3QtPmRyb3Ag PSB0cnVlOworICAgICAgICBzdC0+cGctPnUuZnJlZS5zY3J1Yl9zdGF0ZSA9IDA7CisgICAgfQor fQorCiBib29sIHNjcnViX2ZyZWVfcGFnZXModm9pZCkKIHsKICAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpwZzsKICAgICB1bnNpZ25lZCBpbnQgem9uZSwgb3JkZXIsIHNjcnViX29yZGVyOwotICAgIHVu c2lnbmVkIGxvbmcgaSwgbnVtX3Byb2Nlc3NlZCwgc3RhcnQsIGVuZDsKKyAgICB1bnNpZ25lZCBs b25nIGksIG51bV9wcm9jZXNzZWQsIHN0YXJ0LCBlbmQsIGRpcnR5X2NudDsKICAgICB1bnNpZ25l ZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIGJvb2wgcHJlZW1wdCA9IGZhbHNl LCBpc19mcmFnOwogICAgIG5vZGVpZF90IG5vZGU7CisgICAgc3RydWN0IHNjcnViX3dhaXRfc3Rh dGUgc3Q7CiAKICAgICAvKiBTY3J1YmJpbmcgZ3JhbnVsYXJpdHkuICovCiAjZGVmaW5lIFNDUlVC X0NIVU5LX09SREVSICA4CkBAIC0xMTM0LDggKzExNzYsMTMgQEAgYm9vbCBzY3J1Yl9mcmVlX3Bh Z2VzKHZvaWQpCiAgICAgICAgICAgICAgICAgaWYgKCAhcGctPnUuZnJlZS5kaXJ0eV9oZWFkICkK ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXBn LT51LmZyZWUuc2NydWJfc3RhdGUpOworICAgICAgICAgICAgICAgIHBnLT51LmZyZWUuc2NydWJf c3RhdGUgPSBQQUdFX1NDUlVCQklORzsKKworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZo ZWFwX2xvY2spOworCiAgICAgICAgICAgICAgICAgc2NydWJfb3JkZXIgPSBNSU4ob3JkZXIsIFND UlVCX0NIVU5LX09SREVSKTsKLSAgICAgICAgICAgICAgICBudW1fcHJvY2Vzc2VkID0gMDsKKyAg ICAgICAgICAgICAgICBudW1fcHJvY2Vzc2VkID0gZGlydHlfY250ID0gMDsKICAgICAgICAgICAg ICAgICBpc19mcmFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgd2hpbGUgKCBudW1fcHJvY2Vz c2VkIDwgKDFVTCA8PCBvcmRlcikgKQogICAgICAgICAgICAgICAgIHsKQEAgLTExNDUsOCArMTE5 MiwyNCBAQCBib29sIHNjcnViX2ZyZWVfcGFnZXModm9pZCkKICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICggdGVzdF9iaXQoX1BHQ19uZWVkX3NjcnViLCAmcGdbaV0uY291bnRfaW5mbykgKQog ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj cnViX29uZV9wYWdlKCZwZ1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBXZSBjYW4gbW9kaWZ5IGNvdW50X2luZm8gd2l0 aG91dCBob2xkaW5nIGhlYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsb2NrIHNp bmNlIHdlIGVmZmVjdGl2ZWx5IGxvY2tlZCB0aGlzIGJ1ZGR5IGJ5CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICogc2V0dGluZyBpdHMgc2NydWJfc3RhdGUuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdbaV0uY291bnRf aW5mbyAmPSB+UEdDX25lZWRfc2NydWI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZV9uZWVkX3NjcnViW25vZGVdLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlf Y250Kys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICggQUNDRVNTX09OQ0UocGctPnUuZnJlZS5zY3J1Yl9zdGF0ZSkgJgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQQUdFX1NDUlVCX0FCT1JUICkKKyAgICAgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTb21lb25lIHdhbnRzIHRo aXMgY2h1bmsuIERyb3AgZXZlcnl0aGluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZy0+dS5mcmVlLnNjcnViX3N0YXRlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGluX2xvY2soJmhlYXBfbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZV9uZWVkX3NjcnViW25vZGVdIC09IGRpcnR5X2NudDsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGluX3VubG9jaygmaGVhcF9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIG91dF9ub2xvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgIH0KIApAQCAtMTE1OSwxMSArMTIyMiwyMCBAQCBib29sIHNjcnViX2ZyZWVfcGFn ZXModm9pZCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAg ICAgICAgICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICBlbmQgPSBudW1fcHJvY2Vz c2VkOworICAgICAgICAgICAgICAgIHN0LnBnID0gcGc7CisgICAgICAgICAgICAgICAgc3QuZHJv cCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNwaW5fbG9ja19jYigmaGVhcF9sb2NrLCBzY3J1 Yl9jb250aW51ZSwgJnN0KTsKKworICAgICAgICAgICAgICAgIG5vZGVfbmVlZF9zY3J1Yltub2Rl XSAtPSBkaXJ0eV9jbnQ7CisKKyAgICAgICAgICAgICAgICBpZiAoIHN0LmRyb3AgKQorICAgICAg ICAgICAgICAgICAgICBnb3RvIG91dDsKIAogICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwo cGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CiAKKyAgICAgICAgICAgICAgICBzdGFydCA9 IDA7CisgICAgICAgICAgICAgICAgZW5kID0gbnVtX3Byb2Nlc3NlZDsKKwogICAgICAgICAgICAg ICAgIC8qIE1lcmdlIGNsZWFuIHBhZ2VzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKCBzdGFy dCA8IGVuZCApCiAgICAgICAgICAgICAgICAgewpAQCAtMTE5NCw2ICsxMjY2LDggQEAgYm9vbCBz Y3J1Yl9mcmVlX3BhZ2VzKHZvaWQpCiAgICAgICAgICAgICAgICAgICAgIGVuZCArPSAoMVVMIDw8 IGNodW5rX29yZGVyKTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBwZy0+ dS5mcmVlLnNjcnViX3N0YXRlID0gMDsKKwogICAgICAgICAgICAgICAgIGlmICggcHJlZW1wdCB8 fCAobm9kZV9uZWVkX3NjcnViW25vZGVdID09IDApICkKICAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7CiAgICAgICAgICAgICB9CkBAIC0xMjAyLDYgKzEyNzYsOCBAQCBib29sIHNjcnViX2Zy ZWVfcGFnZXModm9pZCkKIAogIG91dDoKICAgICBzcGluX3VubG9jaygmaGVhcF9sb2NrKTsKKwor IG91dF9ub2xvY2s6CiAgICAgbm9kZV9jbGVhcihub2RlLCBub2RlX3NjcnViYmluZyk7CiAgICAg cmV0dXJuIHNvZnRpcnFfcGVuZGluZyhjcHUpIHx8IChub2RlX3RvX3NjcnViKGZhbHNlKSAhPSBO VU1BX05PX05PREUpOwogfQpAQCAtMTI0MCw2ICsxMzE2LDggQEAgc3RhdGljIHZvaWQgZnJlZV9o ZWFwX3BhZ2VzKAogICAgICAgICBpZiAoIHBhZ2Vfc3RhdGVfaXMoJnBnW2ldLCBvZmZsaW5lZCkg KQogICAgICAgICAgICAgdGFpbnRlZCA9IDE7CiAKKyAgICAgICAgcGdbaV0udS5mcmVlLnNjcnVi X3N0YXRlID0gMDsKKwogICAgICAgICAvKiBJZiBhIHBhZ2UgaGFzIG5vIG93bmVyIGl0IHdpbGwg bmVlZCBubyBzYWZldHkgVExCIGZsdXNoLiAqLwogICAgICAgICBwZ1tpXS51LmZyZWUubmVlZF90 bGJmbHVzaCA9IChwYWdlX2dldF9vd25lcigmcGdbaV0pICE9IE5VTEwpOwogICAgICAgICBpZiAo IHBnW2ldLnUuZnJlZS5uZWVkX3RsYmZsdXNoICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vbW0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAppbmRleCBhYmMzZjZiLi5iMzMz YjE2IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9tbS5oCkBAIC00Myw2ICs0MywxMCBAQCBzdHJ1Y3QgcGFnZV9pbmZvCiAgICAg ICAgIH0gaW51c2U7CiAgICAgICAgIC8qIFBhZ2UgaXMgb24gYSBmcmVlIGxpc3Q6ICgoY291bnRf aW5mbyAmIFBHQ19jb3VudF9tYXNrKSA9PSAwKS4gKi8KICAgICAgICAgc3RydWN0IHsKKyNkZWZp bmUgUEFHRV9TQ1JVQkJJTkcgICAgICAoMTw8MCkKKyNkZWZpbmUgUEFHRV9TQ1JVQl9BQk9SVCAg ICAoMTw8MSkKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2NydWJfc3RhdGU7CisKICAgICAg ICAgICAgIC8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5IGJlZm9yZSBuZXh0IHBh Z2UgdXNlPyAqLwogICAgICAgICAgICAgYm9vbF90IG5lZWRfdGxiZmx1c2g7CiAgICAgICAgICAg ICAvKiBTZXQgb24gYSBidWRkeSBoZWFkIGlmIHRoZSBidWRkeSBoYXMgdW5zY3J1YmJlZCBwYWdl cy4gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaAppbmRleCA1Y2Y1MjhhLi5kMDBjNGExIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCkBAIC04Nyw2 ICs4NywxMCBAQCBzdHJ1Y3QgcGFnZV9pbmZvCiAKICAgICAgICAgLyogUGFnZSBpcyBvbiBhIGZy ZWUgbGlzdDogKChjb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spID09IDApLiAqLwogICAgICAg ICBzdHJ1Y3QgeworI2RlZmluZSBQQUdFX1NDUlVCQklORyAgICAgICgxPDwwKQorI2RlZmluZSBQ QUdFX1NDUlVCX0FCT1JUICAgICgxPDwxKQorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBzY3J1 Yl9zdGF0ZTsKKwogICAgICAgICAgICAgLyogRG8gVExCcyBuZWVkIGZsdXNoaW5nIGZvciBzYWZl dHkgYmVmb3JlIG5leHQgcGFnZSB1c2U/ICovCiAgICAgICAgICAgICBib29sX3QgbmVlZF90bGJm bHVzaDsKICAgICAgICAgICAgIC8qIFNldCBvbiBhIGJ1ZGR5IGhlYWQgaWYgdGhlIGJ1ZGR5IGhh cyB1bnNjcnViYmVkIHBhZ2VzLiAqLwotLSAKMS43LjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK