From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v7 4/4] xen: rework paging_log_dirty_op to work with hvm guests Date: Thu, 14 May 2015 17:06:17 +0200 Message-ID: <1431615977-38284-5-git-send-email-roger.pau@citrix.com> References: <1431615977-38284-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YsulU-0000QI-Jb for xen-devel@lists.xenproject.org; Thu, 14 May 2015 15:09:36 +0000 In-Reply-To: <1431615977-38284-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Tim Deegan , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org V2hlbiB0aGUgY2FsbGVyIG9mIHBhZ2luZ19sb2dfZGlydHlfb3AgaXMgYSBodm0gZ3Vlc3QgWGVu IHdvdWxkIGNob2tlIHdoZW4KdHJ5aW5nIHRvIGNvcHkgdGhlIGRpcnR5IGJpdG1hcCB0byB0aGUg Z3Vlc3QgYmVjYXVzZSB0aGUgcGFnaW5nIGxvY2sgaXMKYWxyZWFkeSBoZWxkLgoKRml4IHRoaXMg YnkgaW5kZXBlbmRlbnRseSBtYXBwaW5nIGVhY2ggcGFnZSBvZiB0aGUgZ3Vlc3QgYml0bWFwIGFz IG5lZWRlZAp3aXRob3V0IHRoZSBwYWdpbmcgbG9jayBoZWxkLgoKU2lnbmVkLW9mZi1ieTogUm9n ZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNjOiBUaW0gRGVlZ2FuIDx0aW1A eGVuLm9yZz4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHY2Ogog LSBNb3ZlIHRoZSBhZ2FpbiBsYWJlbCB0byB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLgogLSBT ZXQgYWxsIHRoZSBwcmVlbXB0IGZpZWxkcyBpZiB3ZSBuZWVkIHRvIG1hcCBhIG5ldyBwYWdlIChq dXN0IGxpa2Ugb24gdGhlCiAgIHByZWVtcHQgY2FzZSkuCgpDaGFuZ2VzIHNpbmNlIHY0OgogLSBJ bmRlbnQgYWdhaW4gbGFiZWwuCiAtIFJlcGxhY2UgYm9ndXMgcGFkZHJfdCBjYXN0IHdpdGggcHJv cGVyIHR5cGUuCiAtIFVwZGF0ZSBwcmVlbXB0LmxvZ19kaXJ0eSBiZWZvcmUgZHJvcHBpbmcgdGhl IHBhZ2luZyBsb2NrLgoKQ2hhbmdlcyBzaW5jZSB2MzoKIC0gRHJvcCBsYXN0IHBhcmFtZXRlciBm cm9tIG1hcF9kaXJ0eV9iaXRtYXAuCiAtIERyb3AgcG9pbnRsZXNzIGluaXRpYWxpemVycyBpbiBw YWdpbmdfbG9nX2RpcnR5X29wLgogLSBBZGQgYSBuZXcgZmllbGQgdG8gcGFnaW5nX2RvbWFpbiBp biBvcmRlciB0byBjb3B5IGkyIHBvc2l0aW9uLgogLSBNb3ZlIHRoZSBhZ2FpbiBjYXNlIHVwIHRv IG1ha2Ugc3VyZSB3ZSBkb24ndCBob2xkIGNhY2hlZCB2YWx1ZXMgb2YgdGhlCiAgIGNvbnRlbnRz IG9mIGxvZ19kaXJ0eS4KIC0gUmVwbGFjZSB0aGUgQlVHX09OIGluIHBhZ2luZ19sb2dfZGlydHlf b3Agd2l0aCBhbiBBU1NFUlQuCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBBZGQgY2hlY2tzIGZvciBw Mm1faXNfcmFtIGFuZCBwMm1faXNfZGlzY2FyZF93cml0ZSB3aGVuIG1hcHBpbmcgYSBndWVzdAog ICBwYWdlLgogLSBSZW1vdmUgZXJyb3IgY2hlY2tpbmcgZnJvbSBtZW1zZXQvbWVtY3B5LCB0aGV5 IHVuY29uZGl0aW9uYWxseSByZXR1cm4KICAgZHN0LgotLS0KIHhlbi9hcmNoL3g4Ni9tbS9wYWdp bmcuYyAgICAgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwg ODcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCmluZGV4IDU5ZDQ3MjAu LjVlZWU4OGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYworKysgYi94ZW4v YXJjaC94ODYvbW0vcGFnaW5nLmMKQEAgLTQwOCw2ICs0MDgsNTEgQEAgaW50IHBhZ2luZ19tZm5f aXNfZGlydHkoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKICAgICByZXR1cm4gcnY7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCAqbWFwX2RpcnR5X2JpdG1hcChYRU5fR1VFU1RfSEFORExF XzY0KHVpbnQ4KSBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBwYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICoqcGFnZSkKK3sKKyAgICB1aW50MzJfdCBwZmVjID0g UEZFQ19wYWdlX3ByZXNlbnQgfCBQRkVDX3dyaXRlX2FjY2VzczsKKyAgICB1bnNpZ25lZCBsb25n IGdmbjsKKyAgICBwMm1fdHlwZV90IHAybXQ7CisKKyAgICBnZm4gPSBwYWdpbmdfZ3ZhX3RvX2dm bihjdXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShk aXJ0eV9iaXRtYXAucCArIChwYWdlcyA+PiAzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnBmZWMpOworICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKKyAgICAgICAgcmV0dXJu IE5VTEw7CisKKyAgICAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGN1cnJlbnQtPmRvbWFpbiwg Z2ZuLCAmcDJtdCwgUDJNX1VOU0hBUkUpOworCisgICAgaWYgKCAhcDJtX2lzX3JhbShwMm10KSAp CisgICAgeworICAgICAgICBwdXRfcGFnZSgqcGFnZSk7CisgICAgICAgIHJldHVybiBOVUxMOwor ICAgIH0KKyAgICBpZiAoIHAybV9pc19wYWdpbmcocDJtdCkgKQorICAgIHsKKyAgICAgICAgcHV0 X3BhZ2UoKnBhZ2UpOworICAgICAgICBwMm1fbWVtX3BhZ2luZ19wb3B1bGF0ZShjdXJyZW50LT5k b21haW4sIGdmbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIHAybV9p c19zaGFyZWQocDJtdCkgfHwgcDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkgKQorICAgIHsKKyAg ICAgICAgcHV0X3BhZ2UoKnBhZ2UpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAg ICByZXR1cm4gX19tYXBfZG9tYWluX3BhZ2UoKnBhZ2UpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgdW5tYXBfZGlydHlfYml0bWFwKHZvaWQgKmFkZHIsIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Up Cit7CisgICAgaWYgKCBhZGRyICE9IE5VTEwgKQorICAgIHsKKyAgICAgICAgdW5tYXBfZG9tYWlu X3BhZ2UoYWRkcik7CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgIH0KK30KKwogCiAvKiBS ZWFkIGEgZG9tYWluJ3MgbG9nLWRpcnR5IGJpdG1hcCBhbmQgc3RhdHMuICBJZiB0aGUgb3BlcmF0 aW9uIGlzIGEgQ0xFQU4sCiAgKiBjbGVhciB0aGUgYml0bWFwIGFuZCBzdGF0cyBhcyB3ZWxsLiAq LwpAQCAtNDIwLDcgKzQ2NSwxMSBAQCBzdGF0aWMgaW50IHBhZ2luZ19sb2dfZGlydHlfb3Aoc3Ry dWN0IGRvbWFpbiAqZCwKICAgICBtZm5fdCAqbDQgPSBOVUxMLCAqbDMgPSBOVUxMLCAqbDIgPSBO VUxMOwogICAgIHVuc2lnbmVkIGxvbmcgKmwxID0gTlVMTDsKICAgICBpbnQgaTQsIGkzLCBpMjsK KyAgICB1aW50OF90ICpkaXJ0eV9iaXRtYXA7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsK KyAgICB1bnNpZ25lZCBsb25nIGluZGV4X21hcHBlZDsKIAorIGFnYWluOgogICAgIGlmICggIXJl c3VtaW5nICkKICAgICB7CiAgICAgICAgIGRvbWFpbl9wYXVzZShkKTsKQEAgLTQzMyw2ICs0ODIs MTQgQEAgc3RhdGljIGludCBwYWdpbmdfbG9nX2RpcnR5X29wKHN0cnVjdCBkb21haW4gKmQsCiAg ICAgICAgIHAybV9mbHVzaF9oYXJkd2FyZV9jYWNoZWRfZGlydHkoZCk7CiAgICAgfQogCisgICAg aW5kZXhfbWFwcGVkID0gcmVzdW1pbmcgPyBkLT5hcmNoLnBhZ2luZy5wcmVlbXB0LmxvZ19kaXJ0 eS5kb25lIDogMDsKKyAgICBkaXJ0eV9iaXRtYXAgPSBtYXBfZGlydHlfYml0bWFwKHNjLT5kaXJ0 eV9iaXRtYXAsIGluZGV4X21hcHBlZCwgJnBhZ2UpOworICAgIGlmICggZGlydHlfYml0bWFwID09 IE5VTEwgKQorICAgIHsKKyAgICAgICAgZG9tYWluX3VucGF1c2UoZCk7CisgICAgICAgIHJldHVy biAtRUZBVUxUOworICAgIH0KKwogICAgIHBhZ2luZ19sb2NrKGQpOwogCiAgICAgaWYgKCAhZC0+ YXJjaC5wYWdpbmcucHJlZW1wdC5kb20gKQpAQCAtNDcyLDE4ICs1MjksMTggQEAgc3RhdGljIGlu dCBwYWdpbmdfbG9nX2RpcnR5X29wKHN0cnVjdCBkb21haW4gKmQsCiAgICAgbDQgPSBwYWdpbmdf bWFwX2xvZ19kaXJ0eV9iaXRtYXAoZCk7CiAgICAgaTQgPSBkLT5hcmNoLnBhZ2luZy5wcmVlbXB0 LmxvZ19kaXJ0eS5pNDsKICAgICBpMyA9IGQtPmFyY2gucGFnaW5nLnByZWVtcHQubG9nX2RpcnR5 LmkzOworICAgIGkyID0gZC0+YXJjaC5wYWdpbmcucHJlZW1wdC5sb2dfZGlydHkuaTI7CiAgICAg cGFnZXMgPSBkLT5hcmNoLnBhZ2luZy5wcmVlbXB0LmxvZ19kaXJ0eS5kb25lOwogCiAgICAgZm9y ICggOyAocGFnZXMgPCBzYy0+cGFnZXMpICYmIChpNCA8IExPR0RJUlRZX05PREVfRU5UUklFUyk7 IGk0KyssIGkzID0gMCApCiAgICAgewogICAgICAgICBsMyA9IChsNCAmJiBtZm5fdmFsaWQobDRb aTRdKSkgPyBtYXBfZG9tYWluX3BhZ2UobWZuX3gobDRbaTRdKSkgOiBOVUxMOwotICAgICAgICBm b3IgKCA7IChwYWdlcyA8IHNjLT5wYWdlcykgJiYgKGkzIDwgTE9HRElSVFlfTk9ERV9FTlRSSUVT KTsgaTMrKyApCisgICAgICAgIGZvciAoIDsgKHBhZ2VzIDwgc2MtPnBhZ2VzKSAmJiAoaTMgPCBM T0dESVJUWV9OT0RFX0VOVFJJRVMpOworICAgICAgICAgICAgIGkzKyssIGkyID0gMCApCiAgICAg ICAgIHsKICAgICAgICAgICAgIGwyID0gKChsMyAmJiBtZm5fdmFsaWQobDNbaTNdKSkgPwogICAg ICAgICAgICAgICAgICAgbWFwX2RvbWFpbl9wYWdlKG1mbl94KGwzW2kzXSkpIDogTlVMTCk7Ci0g ICAgICAgICAgICBmb3IgKCBpMiA9IDA7Ci0gICAgICAgICAgICAgICAgICAocGFnZXMgPCBzYy0+ cGFnZXMpICYmIChpMiA8IExPR0RJUlRZX05PREVfRU5UUklFUyk7Ci0gICAgICAgICAgICAgICAg ICBpMisrICkKKyAgICAgICAgICAgIGZvciAoIDsgKHBhZ2VzIDwgc2MtPnBhZ2VzKSAmJiAoaTIg PCBMT0dESVJUWV9OT0RFX0VOVFJJRVMpOyBpMisrICkKICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXMgPSBQQUdFX1NJWkU7CiAgICAgICAgICAgICAgICAg bDEgPSAoKGwyICYmIG1mbl92YWxpZChsMltpMl0pKSA/CkBAIC00OTIsMTUgKzU0OSwyOCBAQCBz dGF0aWMgaW50IHBhZ2luZ19sb2dfZGlydHlfb3Aoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAg ICAgICAgICAgICAgYnl0ZXMgPSAodW5zaWduZWQgaW50KSgoc2MtPnBhZ2VzIC0gcGFnZXMgKyA3 KSA+PiAzKTsKICAgICAgICAgICAgICAgICBpZiAoIGxpa2VseShwZWVrKSApCiAgICAgICAgICAg ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChsMSA/IGNvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KHNjLT5kaXJ0eV9iaXRtYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFnZXMgPj4gMywgKHVpbnQ4X3QgKilsMSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcykKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiBjbGVhcl9ndWVzdF9vZmZzZXQoc2MtPmRpcnR5X2JpdG1h cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFn ZXMgPj4gMywgYnl0ZXMpKSAhPSAwICkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlcyA+ PiAoMyArIFBBR0VfU0hJRlQpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfbWFw cGVkID4+ICgzICsgUEFHRV9TSElGVCkgKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICBydiA9IC1FRkFVTFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIG5lZWQgdG8gbWFwIG5leHQg cGFnZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wYWdpbmcucHJlZW1wdC5s b2dfZGlydHkuaTQgPSBpNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucGFnaW5n LnByZWVtcHQubG9nX2RpcnR5LmkzID0gaTM7CisgICAgICAgICAgICAgICAgICAgICAgICBkLT5h cmNoLnBhZ2luZy5wcmVlbXB0LmxvZ19kaXJ0eS5pMiA9IGkyOworICAgICAgICAgICAgICAgICAg ICAgICAgZC0+YXJjaC5wYWdpbmcucHJlZW1wdC5sb2dfZGlydHkuZG9uZSA9IHBhZ2VzOworICAg ICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wYWdpbmcucHJlZW1wdC5kb20gPSBjdXJyZW50 LT5kb21haW47CisgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnBhZ2luZy5wcmVlbXB0 Lm9wID0gc2MtPm9wOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1pbmcgPSAxOworICAg ICAgICAgICAgICAgICAgICAgICAgcGFnaW5nX3VubG9jayhkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHVubWFwX2RpcnR5X2JpdG1hcChkaXJ0eV9iaXRtYXAsIHBhZ2UpOworICAgICAgICAg ICAgICAgICAgICAgICAgZ290byBhZ2FpbjsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICBBU1NFUlQoKChwYWdlcyA+PiAzKSAlIFBBR0VfU0laRSkgKyBieXRlcyA8 PSBQQUdFX1NJWkUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIGwxICkKKyAgICAgICAgICAg ICAgICAgICAgICAgIG1lbWNweShkaXJ0eV9iaXRtYXAgKyAoKHBhZ2VzID4+IDMpICUgUEFHRV9T SVpFKSwgbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMpOworICAgICAg ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQoZGlydHlf Yml0bWFwICsgKChwYWdlcyA+PiAzKSAlIFBBR0VfU0laRSksIDAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnl0ZXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICBwYWdlcyArPSBieXRlcyA8PCAzOwogICAgICAgICAgICAgICAgIGlmICggbDEgKQpAQCAtNTE3 LDYgKzU4Nyw3IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2xvZ19kaXJ0eV9vcChzdHJ1Y3QgZG9tYWlu ICpkLAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGQtPmFyY2gucGFnaW5nLnByZWVt cHQubG9nX2RpcnR5Lmk0ID0gaTQ7CiAgICAgICAgICAgICAgICAgZC0+YXJjaC5wYWdpbmcucHJl ZW1wdC5sb2dfZGlydHkuaTMgPSBpMyArIDE7CisgICAgICAgICAgICAgICAgZC0+YXJjaC5wYWdp bmcucHJlZW1wdC5sb2dfZGlydHkuaTIgPSAwOwogICAgICAgICAgICAgICAgIHJ2ID0gLUVSRVNU QVJUOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTI5LDYgKzYw MCw3IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2xvZ19kaXJ0eV9vcChzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICB7CiAgICAgICAgICAgICBkLT5hcmNoLnBhZ2luZy5wcmVlbXB0LmxvZ19kaXJ0eS5p NCA9IGk0ICsgMTsKICAgICAgICAgICAgIGQtPmFyY2gucGFnaW5nLnByZWVtcHQubG9nX2RpcnR5 LmkzID0gMDsKKyAgICAgICAgICAgIGQtPmFyY2gucGFnaW5nLnByZWVtcHQubG9nX2RpcnR5Lmky ID0gMDsKICAgICAgICAgICAgIHJ2ID0gLUVSRVNUQVJUOwogICAgICAgICB9CiAgICAgICAgIGlm ICggcnYgKQpAQCAtNTU4LDYgKzYzMCw3IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2xvZ19kaXJ0eV9v cChzdHJ1Y3QgZG9tYWluICpkLAogICAgIGlmICggcnYgKQogICAgIHsKICAgICAgICAgLyogTmV2 ZXIgbGVhdmUgdGhlIGRvbWFpbiBwYXVzZWQgb24gcmVhbCBlcnJvcnMuICovCisgICAgICAgIHVu bWFwX2RpcnR5X2JpdG1hcChkaXJ0eV9iaXRtYXAsIHBhZ2UpOwogICAgICAgICBBU1NFUlQocnYg PT0gLUVSRVNUQVJUKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KQEAgLTU3MCwxMiArNjQz LDE0IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2xvZ19kaXJ0eV9vcChzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICAgKiBwYWdpbmcgbW9kZXMgKHNoYWRvdyBvciBoYXApLiAgU2FmZSBiZWNhdXNlIHRo ZSBkb21haW4gaXMgcGF1c2VkLiAqLwogICAgICAgICBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHku Y2xlYW5fZGlydHlfYml0bWFwKGQpOwogICAgIH0KKyAgICB1bm1hcF9kaXJ0eV9iaXRtYXAoZGly dHlfYml0bWFwLCBwYWdlKTsKICAgICBkb21haW5fdW5wYXVzZShkKTsKICAgICByZXR1cm4gcnY7 CiAKICBvdXQ6CiAgICAgZC0+YXJjaC5wYWdpbmcucHJlZW1wdC5kb20gPSBOVUxMOwogICAgIHBh Z2luZ191bmxvY2soZCk7CisgICAgdW5tYXBfZGlydHlfYml0bWFwKGRpcnR5X2JpdG1hcCwgcGFn ZSk7CiAgICAgZG9tYWluX3VucGF1c2UoZCk7CiAKICAgICBpZiAoIGwxICkKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFp bi5oCmluZGV4IDNmODNlOGIuLmUzNjRhMmMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaApAQCAtMjAyLDYg KzIwMiw3IEBAIHN0cnVjdCBwYWdpbmdfZG9tYWluIHsKICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGRvbmU6UEFERFJfQklUUyAtIFBBR0VfU0hJRlQ7CiAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBpNDpQQUdFVEFCTEVfT1JERVI7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBpMzpQQUdFVEFCTEVfT1JERVI7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBp MjpQQUdFVEFCTEVfT1JERVI7CiAgICAgICAgICAgICB9IGxvZ19kaXJ0eTsKICAgICAgICAgfTsK ICAgICB9IHByZWVtcHQ7Ci0tIAoxLjkuNSAoQXBwbGUgR2l0LTUwLjMpCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK