From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH 09/16] xen: sched: close potential races when switching scheduler to CPUs Date: Fri, 18 Mar 2016 20:05:05 +0100 Message-ID: <20160318190505.8117.89778.stgit@Solace.station> References: <20160318185524.8117.74837.stgit@Solace.station> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agzht-0000NQ-Ss for xen-devel@lists.xenproject.org; Fri, 18 Mar 2016 19:05:09 +0000 Received: by mail-wm0-f65.google.com with SMTP id p65so8547548wmp.1 for ; Fri, 18 Mar 2016 12:05:08 -0700 (PDT) In-Reply-To: <20160318185524.8117.74837.stgit@Solace.station> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: George Dunlap , Tianyang Chen , Meng Xu List-Id: xen-devel@lists.xenproject.org YnkgdXNpbmcgdGhlIHNjaGVkX3N3aXRjaCBob29rIHRoYXQgd2UgaGF2ZSBpbnRyb2R1Y2VkIGlu CnRoZSB2YXJpb3VzIHNjaGVkdWxlcnMuCgpUaGUga2V5IGlzIHRvIGxldCB0aGUgYWN0dWFsIHN3 aXRjaCBvZiBzY2hlZHVsZXIgYW5kIHRoZQpyZW1hcHBpbmcgb2YgdGhlIHNjaGVkdWxlciBsb2Nr IGZvciB0aGUgQ1BVIChpZiBuZWNlc3NhcnkpCmhhcHBlbiB0b2dldGhlciAoaW4gdGhlIHNhbWUg Y3JpdGljYWwgc2VjdGlvbikgcHJvdGVjdGVkCihhdCBsZWFzdCkgYnkgdGhlIG9sZCBzY2hlZHVs ZXIgbG9jayBmb3IgdGhlIENQVS4KClRoaXMgYWxzbyBtZWFucyB0aGF0LCBpbiBDcmVkaXQyIGFu ZCBSVERTLCB3ZSBjYW4gZ2V0IHJpZApvZiB0aGUgY29kZSB0aGF0IHdhcyBkb2luZyB0aGUgc2No ZWR1bGVyIGxvY2sgcmVtYXBwaW5nCmluIGNzY2hlZDJfZnJlZV9wZGF0YSgpIGFuZCBydF9mcmVl X3BkYXRhKCksIGFuZCBvZiB0aGVpcgp0cmlnZ2VyaW5nIEFTU0VSVC1zLgoKU2lnbmVkLW9mZi1i eTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+Ci0tLQpDYzogR2Vv cmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogTWVuZyBYdSA8bWVu Z3h1QGNpcy51cGVubi5lZHU+CkNjOiBUaWFueWFuZyBDaGVuIDx0aWNoZUBzZWFzLnVwZW5uLmVk dT4KLS0tCiB4ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jICB8ICAgIDkgKysrKysrKysrCiB4ZW4v Y29tbW9uL3NjaGVkX2NyZWRpdDIuYyB8ICAgMjggKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LQogeGVuL2NvbW1vbi9zY2hlZF9ydC5jICAgICAgfCAgIDEzIC0tLS0tLS0tLS0tLS0KIHhlbi9j b21tb24vc2NoZWR1bGUuYyAgICAgIHwgICAzMCArKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYyBiL3hlbi9jb21tb24vc2NoZWRf Y3JlZGl0LmMKaW5kZXggOTI5YmE5Yy4uOTAzYTcwNCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9z Y2hlZF9jcmVkaXQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jCkBAIC01NzcsNiAr NTc3LDE1IEBAIGNzY2hlZF9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg dm9pZCAqcGRhdGEsIGludCBjcHUpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBz dHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiA9IENTQ0hFRF9QUklWKG9wcyk7CisgICAgc3RydWN0 IHNjaGVkdWxlX2RhdGEgKnNkID0gJnBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KTsKKworICAg IC8qCisgICAgICogVGhpcyBpcyBjYWxsZWQgZWl0aGVyIGR1cmluZyBkdXJpbmcgYm9vdCwgcmVz dW1lIG9yIGhvdHBsdWcsIGluCisgICAgICogY2FzZSBDcmVkaXQxIGlzIHRoZSBzY2hlZHVsZXIg Y2hvc2VuIGF0IGJvb3QuIEluIHN1Y2ggY2FzZXMsIHRoZQorICAgICAqIHNjaGVkdWxlciBsb2Nr IGZvciBjcHUgaXMgYWxyZWFkeSBwb2ludGluZyB0byB0aGUgZGVmYXVsdCBwZXItY3B1CisgICAg ICogc3BpbmxvY2ssIGFzIENyZWRpdDEgbmVlZHMgaXQsIHNvIHRoZXJlIGlzIG5vIHJlbWFwcGlu ZyB0byBiZSBkb25lLgorICAgICAqLworICAgIEFTU0VSVChzZC0+c2NoZWR1bGVfbG9jayA9PSAm c2QtPl9sb2NrICYmICFzcGluX2lzX2xvY2tlZCgmc2QtPl9sb2NrKSk7CiAKICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFncyk7CiAgICAgaW5pdF9wZGF0YShwcnYsIHBkYXRh LCBjcHUpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29t bW9uL3NjaGVkX2NyZWRpdDIuYwppbmRleCAyNWQ4ZTg1Li42NGZiMDI4IDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIu YwpAQCAtMTk3NCw3ICsxOTc0LDYgQEAgaW5pdF9wZGF0YShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRl ICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiB7CiAgICAgdW5zaWduZWQgcnFpOwogICAgIHN0cnVj dCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKLSAgICBzcGlubG9ja190ICpvbGRfbG9jazsK IAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcHJ2LT5sb2NrKSk7CiAgICAgQVNTRVJUKCFj cHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6ZWQpKTsKQEAgLTIwMDUsMjEgKzIw MDQsMTEgQEAgaW5pdF9wZGF0YShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHVuc2lnbmVk IGludCBjcHUpCiAgICAgICAgIGFjdGl2YXRlX3J1bnF1ZXVlKHBydiwgcnFpKTsKICAgICB9CiAg ICAgCi0gICAgLyogSVJRcyBhbHJlYWR5IGRpc2FibGVkICovCi0gICAgb2xkX2xvY2sgPSBwY3B1 X3NjaGVkdWxlX2xvY2soY3B1KTsKLQotICAgIC8qIE1vdmUgc3BpbmxvY2sgdG8gbmV3IHJ1bnEg bG9jay4gICovCi0gICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sg PSAmcnFkLT5sb2NrOwotCiAgICAgLyogU2V0IHRoZSBydW5xdWV1ZSBtYXAgKi8KICAgICBwcnYt PnJ1bnFfbWFwW2NwdV0gPSBycWk7CiAgICAgCiAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnJx ZC0+aWRsZSk7CiAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnJxZC0+YWN0aXZlKTsKLQotICAg IC8qIF9Ob3RfIHBjcHVfc2NoZWR1bGVfdW5sb2NrKCk6IHBlcl9jcHUoKS5zY2hlZHVsZV9sb2Nr IGNoYW5nZWQhICovCi0gICAgc3Bpbl91bmxvY2sob2xkX2xvY2spOwotCiAgICAgY3B1bWFza19z ZXRfY3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6ZWQpOwogCiAgICAgcmV0dXJuIHJxaTsKQEAgLTIw MjksMTAgKzIwMTgsMTkgQEAgc3RhdGljIHZvaWQKIGNzY2hlZDJfaW5pdF9wZGF0YShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBkYXRhLCBpbnQgY3B1KQogewogICAgIHN0cnVj dCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJVihvcHMpOworICAgIHNwaW5sb2Nr X3QgKm9sZF9sb2NrOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgdW5zaWduZWQgcnFp OwogCiAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwotICAgIGluaXRf cGRhdGEocHJ2LCBjcHUpOworICAgIG9sZF9sb2NrID0gcGNwdV9zY2hlZHVsZV9sb2NrKGNwdSk7 CisKKyAgICBycWkgPSBpbml0X3BkYXRhKHBydiwgY3B1KTsKKyAgICAvKiBNb3ZlIHRoZSBzY2hl ZHVsZXIgbG9jayB0byB0aGUgbmV3IHJ1bnEgbG9jay4gKi8KKyAgICBwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayA9ICZwcnYtPnJxZFtycWldLmxvY2s7CisKKyAgICAv KiBfTm90XyBwY3B1X3NjaGVkdWxlX3VubG9jaygpOiBzY2hlZHVsZV9sb2NrIG1heSBoYXZlIGNo YW5nZWQhICovCisgICAgc3Bpbl91bmxvY2sob2xkX2xvY2spOwogICAgIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwogfQogCkBAIC0yMDc5LDcgKzIwNzcsNiBAQCBj c2NoZWQyX2ZyZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1 LCBpbnQgY3B1KQogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGNzY2hlZDJf cHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CiAgICAgc3RydWN0IGNzY2hlZDJfcnVu cXVldWVfZGF0YSAqcnFkOwotICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1 KHNjaGVkdWxlX2RhdGEsIGNwdSk7CiAgICAgaW50IHJxaTsKIAogICAgIHNwaW5fbG9ja19pcnFz YXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKQEAgLTIxMDcsMTEgKzIxMDQsNiBAQCBjc2NoZWQyX2Zy ZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1LCBpbnQgY3B1 KQogICAgICAgICBkZWFjdGl2YXRlX3J1bnF1ZXVlKHBydiwgcnFpKTsKICAgICB9CiAKLSAgICAv KiBNb3ZlIHNwaW5sb2NrIHRvIHRoZSBvcmlnaW5hbCBsb2NrLiAgKi8KLSAgICBBU1NFUlQoc2Qt PnNjaGVkdWxlX2xvY2sgPT0gJnJxZC0+bG9jayk7Ci0gICAgQVNTRVJUKCFzcGluX2lzX2xvY2tl ZCgmc2QtPl9sb2NrKSk7Ci0gICAgc2QtPnNjaGVkdWxlX2xvY2sgPSAmc2QtPl9sb2NrOwotCiAg ICAgc3Bpbl91bmxvY2soJnJxZC0+bG9jayk7CiAKICAgICBjcHVtYXNrX2NsZWFyX2NwdShjcHUs ICZwcnYtPmluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfcnQuYyBi L3hlbi9jb21tb24vc2NoZWRfcnQuYwppbmRleCA5MmJlMjQ4Li4wNTY0YjFkIDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3NjaGVkX3J0LmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9ydC5jCkBAIC03 MTgsMTkgKzcxOCw2IEBAIHJ0X2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgaW50IGNwdSkKIHN0YXRpYyB2b2lkCiBydF9mcmVlX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkKIHsKLSAgICBzdHJ1Y3QgcnRfcHJpdmF0 ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwotICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZw ZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLQot ICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKLQotICAgIC8qIE1vdmUg c3BpbmxvY2sgYmFjayB0byB0aGUgZGVmYXVsdCBsb2NrICovCi0gICAgQVNTRVJUKHNkLT5zY2hl ZHVsZV9sb2NrID09ICZwcnYtPmxvY2spOwotICAgIEFTU0VSVCghc3Bpbl9pc19sb2NrZWQoJnNk LT5fbG9jaykpOwotICAgIHNkLT5zY2hlZHVsZV9sb2NrID0gJnNkLT5fbG9jazsKLQotICAgIHNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwotCiAgICAgZnJlZV9jcHVt YXNrX3ZhcihfY3B1bWFza19zY3JhdGNoW2NwdV0pOwogfQogCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL3NjaGVkdWxlLmMgYi94ZW4vY29tbW9uL3NjaGVkdWxlLmMKaW5kZXggMWFkYzBlMi4uMjk1 ODJhNiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZHVsZS5jCisrKyBiL3hlbi9jb21tb24v c2NoZWR1bGUuYwpAQCAtMTYxNyw3ICsxNjE3LDYgQEAgdm9pZCBfX2luaXQgc2NoZWR1bGVyX2lu aXQodm9pZCkKIGludCBzY2hlZHVsZV9jcHVfc3dpdGNoKHVuc2lnbmVkIGludCBjcHUsIHN0cnVj dCBjcHVwb29sICpjKQogewogICAgIHN0cnVjdCB2Y3B1ICppZGxlOwotICAgIHNwaW5sb2NrX3Qg KmxvY2s7CiAgICAgdm9pZCAqcHByaXYsICpwcHJpdl9vbGQsICp2cHJpdiwgKnZwcml2X29sZDsK ICAgICBzdHJ1Y3Qgc2NoZWR1bGVyICpvbGRfb3BzID0gcGVyX2NwdShzY2hlZHVsZXIsIGNwdSk7 CiAgICAgc3RydWN0IHNjaGVkdWxlciAqbmV3X29wcyA9IChjID09IE5VTEwpID8gJm9wcyA6IGMt PnNjaGVkOwpAQCAtMTY0MCwxMSArMTYzOSwyMSBAQCBpbnQgc2NoZWR1bGVfY3B1X3N3aXRjaCh1 bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAgICBpZiAoIG9sZF9vcHMgPT0g bmV3X29wcyApCiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgLyoKKyAgICAgKiBUbyBzZXR1cCB0 aGUgY3B1IGZvciB0aGUgbmV3IHNjaGVkdWxlciB3ZSBuZWVkOgorICAgICAqICAtIGEgdmFsaWQg aW5zdGFuY2Ugb2YgcGVyLUNQVSBzY2hlZHVsZXIgc3BlY2lmaWMgZGF0YSwgYXMgaXQgaXMKKyAg ICAgKiAgICBhbGxvY2F0ZWQgYnkgU0NIRURfT1AoYWxsb2NfcGRhdGEpLiBOb3RlIHRoYXQgd2Ug ZG8gbm90IHdhbnQgdG8KKyAgICAgKiAgICBpbml0aWFsaXplIGl0IHlldCAoaS5lLiwgd2UgYXJl IG5vdCBjYWxsaW5nIFNDSEVEX09QKGluaXRfcGRhdGEpKS4KKyAgICAgKiAgICBUaGF0IHdpbGwg YmUgZG9uZSBieSB0aGUgdGFyZ2V0IHNjaGVkdWxlciwgaW4gU0NIRURfT1Aoc3dpdGNoX3NjaGVk KSwKKyAgICAgKiAgICBpbiBwcm9wZXIgb3JkZXJpbmcgYW5kIHdpdGggbG9ja2luZy4KKyAgICAg KiAgLSBhIHZhbGlkIGluc3RhbmNlIG9mIHBlci12Q1BVIHNjaGVkdWxlciBzcGVjaWZpYyBkYXRh LCBmb3IgdGhlIGlkbGUKKyAgICAgKiAgICB2Q1BVIG9mIGNwdS4gVGhhdCBpcyB3aGF0IHRoZSB0 YXJnZXQgc2NoZWR1bGVyIHdpbGwgdXNlIGZvciB0aGUKKyAgICAgKiAgICBzY2hlZF9wcml2IGZp ZWxkIG9mIHRoZSBwZXItdkNQVSBpbmZvIG9mIHRoZSBpZGxlIGRvbWFpbi4KKyAgICAgKi8KICAg ICBpZGxlID0gaWRsZV92Y3B1W2NwdV07CiAgICAgcHByaXYgPSBTQ0hFRF9PUChuZXdfb3BzLCBh bGxvY19wZGF0YSwgY3B1KTsKICAgICBpZiAoIElTX0VSUihwcHJpdikgKQogICAgICAgICByZXR1 cm4gUFRSX0VSUihwcHJpdik7Ci0gICAgU0NIRURfT1AobmV3X29wcywgaW5pdF9wZGF0YSwgcHBy aXYsIGNwdSk7CiAgICAgdnByaXYgPSBTQ0hFRF9PUChuZXdfb3BzLCBhbGxvY192ZGF0YSwgaWRs ZSwgaWRsZS0+ZG9tYWluLT5zY2hlZF9wcml2KTsKICAgICBpZiAoIHZwcml2ID09IE5VTEwgKQog ICAgIHsKQEAgLTE2NTIsMTcgKzE2NjEsMjAgQEAgaW50IHNjaGVkdWxlX2NwdV9zd2l0Y2godW5z aWduZWQgaW50IGNwdSwgc3RydWN0IGNwdXBvb2wgKmMpCiAgICAgICAgIHJldHVybiAtRU5PTUVN OwogICAgIH0KIAotICAgIGxvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2tfaXJxKGNwdSk7Ci0KICAg ICBTQ0hFRF9PUChvbGRfb3BzLCB0aWNrX3N1c3BlbmQsIGNwdSk7CisKKyAgICAvKgorICAgICAq IFRoZSBhY3R1YWwgc3dpdGNoLCBpbmNsdWRpbmcgKGlmIG5lY2Vzc2FyeSkgdGhlIHJlcm91dGlu ZyBvZiB0aGUKKyAgICAgKiBzY2hlZHVsZXIgbG9jayB0byB3aGF0ZXZlciBuZXdfb3BzIHByZWZl cnMsICBuZWVkcyB0byBoYXBwZW4gaW4gb25lCisgICAgICogY3JpdGljYWwgc2VjdGlvbiwgcHJv dGVjdGVkIGJ5IG9sZF9vcHMnIGxvY2ssIG9yIHJhY2VzIGFyZSBwb3NzaWJsZS4KKyAgICAgKiBT aW5jZSBlYWNoIHNjaGVkdWxlciBoYXMgaXRzIG93biBjb250cmFpbnRzIGFuZCBsb2NraW5nIHNj aGVtZSwgZG8KKyAgICAgKiB0aGF0IGluc2lkZSBzcGVjaWZpYyBzY2hlZHVsZXIgY29kZSwgcmF0 aGVyIHRoYW4gaGVyZS4KKyAgICAgKi8KICAgICB2cHJpdl9vbGQgPSBpZGxlLT5zY2hlZF9wcml2 OwotICAgIGlkbGUtPnNjaGVkX3ByaXYgPSB2cHJpdjsKLSAgICBwZXJfY3B1KHNjaGVkdWxlciwg Y3B1KSA9IG5ld19vcHM7CiAgICAgcHByaXZfb2xkID0gcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBj cHUpLnNjaGVkX3ByaXY7Ci0gICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkX3By aXYgPSBwcHJpdjsKLSAgICBTQ0hFRF9PUChuZXdfb3BzLCB0aWNrX3Jlc3VtZSwgY3B1KTsKKyAg ICBTQ0hFRF9PUChuZXdfb3BzLCBzd2l0Y2hfc2NoZWQsIGNwdSwgcHByaXYsIHZwcml2KTsKIAot ICAgIHBjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCBjcHUpOworICAgIFNDSEVEX09QKG5l d19vcHMsIHRpY2tfcmVzdW1lLCBjcHUpOwogCiAgICAgU0NIRURfT1Aob2xkX29wcywgZnJlZV92 ZGF0YSwgdnByaXZfb2xkKTsKICAgICBTQ0hFRF9PUChvbGRfb3BzLCBmcmVlX3BkYXRhLCBwcHJp dl9vbGQsIGNwdSk7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK