From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v2 1/5] tasklet: Introduce per-cpu tasklet for softirq. Date: Thu, 25 Aug 2016 15:23:57 -0400 Message-ID: <1472153041-14220-2-git-send-email-konrad.wilk@oracle.com> References: <1472153041-14220-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bd0GB-00086H-J0 for xen-devel@lists.xenproject.org; Thu, 25 Aug 2016 19:24:19 +0000 In-Reply-To: <1472153041-14220-1-git-send-email-konrad.wilk@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.xenproject.org, konrad@kernel.org Cc: "Lan, Tianyu" , Kevin Tian , Jan Beulich , Konrad Rzeszutek Wilk , Andrew Cooper , Jun Nakajima List-Id: xen-devel@lists.xenproject.org VGhpcyBpbXBsZW1lbnRzIGEgbG9ja2xlc3MgcGVyLWNwdSB0YXNrbGV0IG1lY2hhbmlzbS4KClRo ZSBleGlzdGluZyB0YXNrbGV0IG1lY2hhbmlzbSBoYXMgYSBzaW5nbGUgZ2xvYmFsCnNwaW5sb2Nr IHRoYXQgaXMgdGFrZW4gZXZlcnktdGltZSB0aGUgZ2xvYmFsIGxpc3QKaXMgdG91Y2hlZC4gQW5k IHdlIHVzZSB0aGlzIGxvY2sgcXVpdGUgYSBsb3QgLSB3aGVuCndlIGNhbGwgZG9fdGFza2xldF93 b3JrIHdoaWNoIGlzIGNhbGxlZCB2aWEgYW4gc29mdGlycQphbmQgZnJvbSB0aGUgaWRsZSBsb29w LiBXZSB0YWtlIHRoZSBsb2NrIG9uIGFueQpvcGVyYXRpb24gb24gdGhlIHRhc2tsZXRfbGlzdC4K ClRoZSBwcm9ibGVtIHdlIGFyZSBmYWNpbmcgaXMgdGhhdCB0aGVyZSBhcmUgcXVpdGUgYSBsb3Qg b2YKdGFza2xldHMgc2NoZWR1bGVkLiBUaGUgbW9zdCBjb21tb24gb25lIHRoYXQgaXMgaW52b2tl ZCBpcwp0aGUgb25lIGluamVjdGluZyB0aGUgVklSUV9USU1FUiBpbiB0aGUgZ3Vlc3QuIEd1ZXN0 cwphcmUgbm90IGluc2FuZSBhbmQgZG9uJ3Qgc2V0IHRoZSBvbmUtc2hvdCBvciBwZXJpb2RpYwpj bG9ja3MgdG8gYmUgaW4gc3ViIDFtcyBpbnRlcnZhbHMgKGNhdXNpbmcgc2FpZCB0YXNrbGV0CnRv IGJlIHNjaGVkdWxlZCBmb3Igc3VjaCBzbWFsbCBpbnRlcnZhbGxzKS4KClRoaXMgaXMgZXNwZWNp YWxseSBhbiBwcm9ibGVtIHdpdGggZ3Vlc3RzIHRoYXQgaGF2ZSBhCmxhcmdlIGFtb3VudCBvZiBW Q1BVcy4KCldpdGggdGhpcyBwYXRjaCB0aGUgcHJvYmxlbSBkaXNhcHBlYXJzLgoKQXMgc3VjaCB0 aGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGNvZGUgdG8gc2V0dXAKc29mdGlycSBwZXItY3B1IHRh c2tsZXRzIGFuZCBvbmx5IG1vZGlmaWVzIHRoZSBQQ0kKcGFzc3Rocm91Z2ggY2FzZXMgaW5zdGVh ZCBvZiBkb2luZyBpdCB3aG9sZXNhbGUuIFRoaXMKaXMgZG9uZSBiZWNhdXNlOgogLSBXZSB3YW50 IHRvIGVhc2lseSBiaXNlY3QgaXQgaWYgdGhpbmdzIGJyZWFrLgogLSBXZSBtb2RpZnkgdGhlIGNv ZGUgb25lIHNlY3Rpb24gYXQgYSB0aW1lIHRvCiAgIG1ha2UgaXQgZWFzaWVyIHRvIHJldmlldyB0 aGlzIGNvcmUgY29kZS4KCk5vdyBvbiB0aGUgY29kZSBpdHNlbGYuIFRoZSBMaW51eCBjb2RlIChz b2Z0aXJxLmMpCmhhcyBhbiBwZXItY3B1IGltcGxlbWVudGF0aW9uIG9mIHRhc2tsZXRzIG9uIHdo aWNoCnRoaXMgd2FzIGJhc2VkIG9uLiBIb3dldmVyIHRoZXJlIGFyZSBkaWZmZXJlbmNlczoKIC0g VGhpcyBwYXRjaCBleGVjdXRlcyBvbmUgdGFza2xldCBhdCBhIHRpbWUgLSBzaW1pbGFyCiAgIHRv IGhvdyB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gZG9lcyBpdC4KIC0gV2UgdXNlIGEgZG91 YmxlLWxpbmtlZCBsaXN0IGluc3RlYWQgb2YgYSBzaW5nbGUgbGlua2VkCiAgIGxpc3QuIFdlIGNv dWxkIHVzZSBhIHNpbmdsZS1saW5rZWQgbGlzdCBidXQgZm9sa3MgYXJlCiAgIG1vcmUgZmFtaWxp YXIgd2l0aCAnbGlzdF8qJyB0eXBlIG1hY3Jvcy4KIC0gVGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZl IHRoZSBjcm9zcy1DUFUgZmVlZGVycwogICBpbXBsZW1lbnRlZC4gVGhhdCBjb2RlIGlzIGluIHRo ZSBwYXRjaAogICB0aXRsZWQ6IHRhc2tsZXQ6IEFkZCBjcm9zcyBDUFUgZmVlZGluZyBvZiBwZXIt Y3B1CiAgIHRhc2tsZXRzLiBUaGlzIGlzIGRvbmUgdG8gc3VwcG9ydDoKICAgInRhc2tsZXRfc2No ZWR1bGVfb25fY3B1IgogLSBXZSBhZGQgYW4gdGVtcG9yYXJ5ICdUQVNLTEVUX1NPRlRJUlFfUEVS Q1BVJyB3aGljaAogICBpcyBjYW4gY28tZXhpc3Qgd2l0aCB0aGUgVEFTS0xFVF9TT0ZUSVJRLiBJ dCB3aWxsIGJlCiAgIHJlcGxhY2VkIGluICd0YXNrbGV0OiBSZW1vdmUgdGhlIG9sZC1zb2Z0aXJx CiAgIGltcGxlbWVudGF0aW9uLiIKClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2ls ayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tClJGQzogRmlyc3QgdmVyc2lvbgp2MTogUG9z dGVkLCBmb2xrcyBhc2tlZCBpZiB0aWNrZXRsb2NrcyBmaXhlZCBpdC4KdjI6IEludGVsIGNvbmZp cm1lZCBhdCBYUERTIDIwMTYgdGhhdCB0aGUgcHJvYmxlbSBpcyBzdGlsbCBwcmVzZW50CiAgICB3 aXRoIGxhcmdlIGd1ZXN0cy4KCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNj OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogIkxhbiwgVGlh bnl1IiA8dGlhbnl1LmxhbkBpbnRlbC5jb20+CkNjOiAgS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBp bnRlbC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+Ci0tLQog eGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICB8ICAgMiArLQogeGVuL2NvbW1vbi90YXNrbGV0LmMg ICAgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t CiB4ZW4vaW5jbHVkZS94ZW4vc29mdGlycS5oIHwgICAxICsKIHhlbi9pbmNsdWRlL3hlbi90YXNr bGV0LmggfCAgNjEgKysrKysrKysrKysrKysrKysrKystLQogNCBmaWxlcyBjaGFuZ2VkLCAxODMg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggMDE4MGYyNi4uZDkzM2Rk ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYv aHZtL2h2bS5jCkBAIC0xNTExLDcgKzE1MTEsNyBAQCBpbnQgaHZtX3ZjcHVfaW5pdGlhbGlzZShz dHJ1Y3QgdmNwdSAqdikKICAgICBpZiAoIChyYyA9IGh2bV9mdW5jcy52Y3B1X2luaXRpYWxpc2Uo dikpICE9IDAgKSAvKiB0ZWFyZG93bjogaHZtX2Z1bmNzLnZjcHVfZGVzdHJveSAqLwogICAgICAg ICBnb3RvIGZhaWwzOwogCi0gICAgc29mdGlycV90YXNrbGV0X2luaXQoCisgICAgcGVyY3B1X3Rh c2tsZXRfaW5pdCgKICAgICAgICAgJnYtPmFyY2guaHZtX3ZjcHUuYXNzZXJ0X2V2dGNobl9pcnFf dGFza2xldCwKICAgICAgICAgKHZvaWQoKikodW5zaWduZWQgbG9uZykpaHZtX2Fzc2VydF9ldnRj aG5faXJxLAogICAgICAgICAodW5zaWduZWQgbG9uZyl2KTsKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vdGFza2xldC5jIGIveGVuL2NvbW1vbi90YXNrbGV0LmMKaW5kZXggNGU0MmZhNy4uMzE5ODY2 ZiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi90YXNrbGV0LmMKKysrIGIveGVuL2NvbW1vbi90YXNr bGV0LmMKQEAgLTMxLDEwICszMSwzMCBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGxp c3RfaGVhZCwgc29mdGlycV90YXNrbGV0X2xpc3QpOwogLyogUHJvdGVjdHMgYWxsIGxpc3RzIGFu ZCB0YXNrbGV0IHN0cnVjdHVyZXMuICovCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHRhc2tsZXRf bG9jayk7CiAKK3N0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgbGlzdF9oZWFkLCBzb2Z0aXJx X2xpc3QpOworCiBzdGF0aWMgdm9pZCB0YXNrbGV0X2VucXVldWUoc3RydWN0IHRhc2tsZXQgKnQp CiB7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHQtPnNjaGVkdWxlZF9vbjsKIAorICAgIGlmICgg dC0+aXNfcGVyY3B1ICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7CisKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnQt Pmxpc3QpOworICAgICAgICBCVUdfT04oICF0LT5pc19zb2Z0aXJxICk7CisgICAgICAgIEJVR19P TiggY3B1ICE9IHNtcF9wcm9jZXNzb3JfaWQoKSApOyAvKiBOb3QgaW1wbGVtZW50ZWQgeWV0LiAq LworCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKworICAgICAgICBsaXN0ID0gJl9f Z2V0X2NwdV92YXIoc29mdGlycV9saXN0KTsKKyAgICAgICAgbGlzdF9hZGRfdGFpbCgmdC0+bGlz dCwgbGlzdCk7CisgICAgICAgIHJhaXNlX3NvZnRpcnEoVEFTS0xFVF9TT0ZUSVJRX1BFUkNQVSk7 CisKKyAgICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworICAgICAgICByZXR1cm47Cisg ICAgfQogICAgIGlmICggdC0+aXNfc29mdGlycSApCiAgICAgewogICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICpsaXN0ID0gJnBlcl9jcHUoc29mdGlycV90YXNrbGV0X2xpc3QsIGNwdSk7CkBAIC01 NiwxNiArNzYsMjUgQEAgdm9pZCB0YXNrbGV0X3NjaGVkdWxlX29uX2NwdShzdHJ1Y3QgdGFza2xl dCAqdCwgdW5zaWduZWQgaW50IGNwdSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0g ICAgc3Bpbl9sb2NrX2lycXNhdmUoJnRhc2tsZXRfbG9jaywgZmxhZ3MpOworICAgIGlmICggIXRh c2tsZXRzX2luaXRpYWxpc2VkIHx8IHQtPmlzX2RlYWQgKQorICAgICAgICByZXR1cm47CiAKLSAg ICBpZiAoIHRhc2tsZXRzX2luaXRpYWxpc2VkICYmICF0LT5pc19kZWFkICkKKyAgICBpZiAoIHQt PmlzX3BlcmNwdSApCiAgICAgewotICAgICAgICB0LT5zY2hlZHVsZWRfb24gPSBjcHU7Ci0gICAg ICAgIGlmICggIXQtPmlzX3J1bm5pbmcgKQorICAgICAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0 KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkgKQogICAgICAgICB7Ci0gICAgICAgICAg ICBsaXN0X2RlbCgmdC0+bGlzdCk7CisgICAgICAgICAgICB0LT5zY2hlZHVsZWRfb24gPSBjcHU7 CiAgICAgICAgICAgICB0YXNrbGV0X2VucXVldWUodCk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0 dXJuOworICAgIH0KKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdGFza2xldF9sb2NrLCBmbGFncyk7 CisKKyAgICB0LT5zY2hlZHVsZWRfb24gPSBjcHU7CisgICAgaWYgKCAhdC0+aXNfcnVubmluZyAp CisgICAgeworICAgICAgICBsaXN0X2RlbCgmdC0+bGlzdCk7CisgICAgICAgIHRhc2tsZXRfZW5x dWV1ZSh0KTsKICAgICB9CiAKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0YXNrbGV0X2xv Y2ssIGZsYWdzKTsKQEAgLTEwNCw2ICsxMzMsNjYgQEAgc3RhdGljIHZvaWQgZG9fdGFza2xldF93 b3JrKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiAgICAgfQogfQog Cit2b2lkIGRvX3Rhc2tsZXRfd29ya19wZXJjcHUodm9pZCkKK3sKKyAgICBzdHJ1Y3QgdGFza2xl dCAqdCA9IE5VTEw7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKKyAgICBib29sX3QgcG9r ZSA9IDA7CisKKyAgICBsb2NhbF9pcnFfZGlzYWJsZSgpOworICAgIGhlYWQgPSAmX19nZXRfY3B1 X3Zhcihzb2Z0aXJxX2xpc3QpOworCisgICAgaWYgKCAhbGlzdF9lbXB0eShoZWFkKSApCisgICAg eworICAgICAgICB0ID0gbGlzdF9lbnRyeShoZWFkLT5uZXh0LCBzdHJ1Y3QgdGFza2xldCwgbGlz dCk7CisKKyAgICAgICAgaWYgKCBoZWFkLT5uZXh0ID09IGhlYWQtPnByZXYgKSAvKiBPbmUgc2lu Z3VsYXIgaXRlbS4gUmUtaW5pdCBoZWFkLiAqLworICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQo Jl9fZ2V0X2NwdV92YXIoc29mdGlycV9saXN0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgewor ICAgICAgICAgICAgLyogTXVsdGlwbGUgaXRlbXMsIHVwZGF0ZSBoZWFkIHRvIHNraXAgJ3QnLiAq LworICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKKworICAgICAgICAgICAgLyog T25lIGl0ZW0gcGFzdCAndCcuICovCisgICAgICAgICAgICBsaXN0ID0gaGVhZC0+bmV4dC0+bmV4 dDsKKworICAgICAgICAgICAgQlVHX09OKGxpc3QgPT0gTlVMTCk7CisKKyAgICAgICAgICAgIC8q IEFuZCB1cGRhdGUgaGVhZCB0byBza2lwICd0Jy4gTm90ZSB0aGF0IHQtPmxpc3QucHJldiBzdGls bAorICAgICAgICAgICAgICogcG9pbnRzIHRvIGhlYWQsIGJ1dCB3ZSBkb24ndCBjYXJlIGFzIHdl IG9ubHkgcHJvY2VzcyBvbmUgdGFza2xldAorICAgICAgICAgICAgICogYW5kIG9uY2UgZG9uZSB0 aGUgdGFza2xldCBsaXN0IGlzIHJlLWluaXQgb25lIHdheSBvciBhbm90aGVyLgorICAgICAgICAg ICAgICovCisgICAgICAgICAgICBoZWFkLT5uZXh0ID0gbGlzdDsKKyAgICAgICAgICAgIHBva2Ug PSAxOworICAgICAgICB9CisgICAgfQorICAgIGxvY2FsX2lycV9lbmFibGUoKTsKKworICAgIGlm ICggIXQgKQorICAgICAgICByZXR1cm47IC8qIE5ldmVyIHNhdyBpdCBoYXBwZW5kLCBidXQgd2Ug bWlnaHQgaGF2ZSBhIHNwdXJpb3VzIGNhc2U/ICovCisKKyAgICBpZiAoIHRhc2tsZXRfdHJ5bG9j ayh0KSApCisgICAgeworICAgICAgICBpZiAoICF0ZXN0X2FuZF9jbGVhcl9iaXQoVEFTS0xFVF9T VEFURV9TQ0hFRCwgJnQtPnN0YXRlKSApCisgICAgICAgICAgICAgICAgQlVHKCk7CisgICAgICAg IHN5bmNfbG9jYWxfZXhlY3N0YXRlKCk7CisgICAgICAgIHQtPmZ1bmModC0+ZGF0YSk7CisgICAg ICAgIHRhc2tsZXRfdW5sb2NrKHQpOworICAgICAgICBpZiAoIHBva2UgKQorICAgICAgICAgICAg cmFpc2Vfc29mdGlycShUQVNLTEVUX1NPRlRJUlFfUEVSQ1BVKTsKKyAgICAgICAgLyogV2UgY291 bGQgcmVpbml0IHRoZSB0LT5saXN0IGJ1dCB0YXNrbGV0X2VucXVldWUgZG9lcyBpdCBmb3IgdXMu ICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsb2NhbF9pcnFfZGlzYWJsZSgpOwor CisgICAgSU5JVF9MSVNUX0hFQUQoJnQtPmxpc3QpOworICAgIGxpc3RfYWRkX3RhaWwoJnQtPmxp c3QsICZfX2dldF9jcHVfdmFyKHNvZnRpcnFfbGlzdCkpOworICAgIHNtcF93bWIoKTsKKyAgICBy YWlzZV9zb2Z0aXJxKFRBU0tMRVRfU09GVElSUV9QRVJDUFUpOworICAgIGxvY2FsX2lycV9lbmFi bGUoKTsKK30KKwogLyogVkNQVSBjb250ZXh0IHdvcmsgKi8KIHZvaWQgZG9fdGFza2xldCh2b2lk KQogewpAQCAtMTQ3LDEwICsyMzYsMjkgQEAgc3RhdGljIHZvaWQgdGFza2xldF9zb2Z0aXJxX2Fj dGlvbih2b2lkKQogICAgIHNwaW5fdW5sb2NrX2lycSgmdGFza2xldF9sb2NrKTsKIH0KIAorLyog UGVyIENQVSBzb2Z0aXJxIGNvbnRleHQgd29yay4gKi8KK3N0YXRpYyB2b2lkIHRhc2tsZXRfc29m dGlycV9wZXJjcHVfYWN0aW9uKHZvaWQpCit7CisgICAgZG9fdGFza2xldF93b3JrX3BlcmNwdSgp OworfQorCiB2b2lkIHRhc2tsZXRfa2lsbChzdHJ1Y3QgdGFza2xldCAqdCkKIHsKICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOwogCisgICAgaWYgKCB0LT5pc19wZXJjcHUgKQorICAgIHsKKyAgICAg ICAgd2hpbGUgKCB0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0 ZSkgKQorICAgICAgICB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgcHJvY2Vz c19wZW5kaW5nX3NvZnRpcnFzKCk7CisgICAgICAgICAgICB9IHdoaWxlICggdGVzdF9iaXQoVEFT S0xFVF9TVEFURV9TQ0hFRCwgJnQtPnN0YXRlKSApOworICAgICAgICB9CisgICAgICAgIHRhc2ts ZXRfdW5sb2NrX3dhaXQodCk7CisgICAgICAgIGNsZWFyX2JpdChUQVNLTEVUX1NUQVRFX1NDSEVE LCAmdC0+c3RhdGUpOworICAgICAgICB0LT5pc19kZWFkID0gMTsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdGFza2xldF9sb2NrLCBmbGFncyk7CiAKICAg ICBpZiAoICFsaXN0X2VtcHR5KCZ0LT5saXN0KSApCkBAIC0yMDgsNiArMzE2LDE0IEBAIHZvaWQg c29mdGlycV90YXNrbGV0X2luaXQoCiAgICAgdC0+aXNfc29mdGlycSA9IDE7CiB9CiAKK3ZvaWQg cGVyY3B1X3Rhc2tsZXRfaW5pdCgKKyAgICBzdHJ1Y3QgdGFza2xldCAqdCwgdm9pZCAoKmZ1bmMp KHVuc2lnbmVkIGxvbmcpLCB1bnNpZ25lZCBsb25nIGRhdGEpCit7CisgICAgdGFza2xldF9pbml0 KHQsIGZ1bmMsIGRhdGEpOworICAgIHQtPmlzX3NvZnRpcnEgPSAxOworICAgIHQtPmlzX3BlcmNw dSA9IDE7Cit9CisKIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKAogICAgIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmZiLCB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqaGNwdSkKIHsKQEAgLTIx OCwxMSArMzM0LDEzIEBAIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKAogICAgIGNhc2UgQ1BVX1VQ X1BSRVBBUkU6CiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZwZXJfY3B1KHRhc2tsZXRfbGlzdCwg Y3B1KSk7CiAgICAgICAgIElOSVRfTElTVF9IRUFEKCZwZXJfY3B1KHNvZnRpcnFfdGFza2xldF9s aXN0LCBjcHUpKTsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnBlcl9jcHUoc29mdGlycV9saXN0 LCBjcHUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDUFVfVVBfQ0FOQ0VMRUQ6CiAgICAg Y2FzZSBDUFVfREVBRDoKICAgICAgICAgbWlncmF0ZV90YXNrbGV0c19mcm9tX2NwdShjcHUsICZw ZXJfY3B1KHRhc2tsZXRfbGlzdCwgY3B1KSk7CiAgICAgICAgIG1pZ3JhdGVfdGFza2xldHNfZnJv bV9jcHUoY3B1LCAmcGVyX2NwdShzb2Z0aXJxX3Rhc2tsZXRfbGlzdCwgY3B1KSk7CisgICAgICAg IG1pZ3JhdGVfdGFza2xldHNfZnJvbV9jcHUoY3B1LCAmcGVyX2NwdShzb2Z0aXJxX2xpc3QsIGNw dSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTI0 Miw2ICszNjAsNyBAQCB2b2lkIF9faW5pdCB0YXNrbGV0X3N1YnN5c19pbml0KHZvaWQpCiAgICAg Y3B1X2NhbGxiYWNrKCZjcHVfbmZiLCBDUFVfVVBfUFJFUEFSRSwgaGNwdSk7CiAgICAgcmVnaXN0 ZXJfY3B1X25vdGlmaWVyKCZjcHVfbmZiKTsKICAgICBvcGVuX3NvZnRpcnEoVEFTS0xFVF9TT0ZU SVJRLCB0YXNrbGV0X3NvZnRpcnFfYWN0aW9uKTsKKyAgICBvcGVuX3NvZnRpcnEoVEFTS0xFVF9T T0ZUSVJRX1BFUkNQVSwgdGFza2xldF9zb2Z0aXJxX3BlcmNwdV9hY3Rpb24pOwogICAgIHRhc2ts ZXRzX2luaXRpYWxpc2VkID0gMTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3Nv ZnRpcnEuaCBiL3hlbi9pbmNsdWRlL3hlbi9zb2Z0aXJxLmgKaW5kZXggMDg5NWExNi4uNmRkYTFi YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NvZnRpcnEuaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4vc29mdGlycS5oCkBAIC03LDYgKzcsNyBAQCBlbnVtIHsKICAgICBTQ0hFRFVMRV9TT0ZU SVJRLAogICAgIE5FV19UTEJGTFVTSF9DTE9DS19QRVJJT0RfU09GVElSUSwKICAgICBSQ1VfU09G VElSUSwKKyAgICBUQVNLTEVUX1NPRlRJUlFfUEVSQ1BVLAogICAgIFRBU0tMRVRfU09GVElSUSwK ICAgICBOUl9DT01NT05fU09GVElSUVMKIH07CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v dGFza2xldC5oIGIveGVuL2luY2x1ZGUveGVuL3Rhc2tsZXQuaAppbmRleCA4YzNkZTdlLi45NDk3 YzQ3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdGFza2xldC5oCisrKyBiL3hlbi9pbmNs dWRlL3hlbi90YXNrbGV0LmgKQEAgLTE3LDIxICsxNywyNCBAQAogc3RydWN0IHRhc2tsZXQKIHsK ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAg ICBpbnQgc2NoZWR1bGVkX29uOwogICAgIGJvb2xfdCBpc19zb2Z0aXJxOwogICAgIGJvb2xfdCBp c19ydW5uaW5nOwogICAgIGJvb2xfdCBpc19kZWFkOworICAgIGJvb2xfdCBpc19wZXJjcHU7CiAg ICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcpOwogICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsK IH07CiAKLSNkZWZpbmUgX0RFQ0xBUkVfVEFTS0xFVChuYW1lLCBmdW5jLCBkYXRhLCBzb2Z0aXJx KSAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgX0RFQ0xBUkVfVEFTS0xFVChuYW1lLCBm dW5jLCBkYXRhLCBzb2Z0aXJxLCBwZXJjcHUpICAgICAgICAgICAgIFwKICAgICBzdHJ1Y3QgdGFz a2xldCBuYW1lID0geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgTElTVF9IRUFEX0lOSVQobmFtZS5saXN0KSwgLTEsIHNvZnRpcnEsIDAsIDAs IGZ1bmMsIGRhdGEgfQorICAgICAgICBMSVNUX0hFQURfSU5JVChuYW1lLmxpc3QpLCAwLCAtMSwg c29mdGlycSwgMCwgMCwgcGVyY3B1LCAgICAgICAgXAorICAgICAgICBmdW5jLCBkYXRhIH0KICNk ZWZpbmUgREVDTEFSRV9UQVNLTEVUKG5hbWUsIGZ1bmMsIGRhdGEpICAgICAgICAgICAgICAgXAot ICAgIF9ERUNMQVJFX1RBU0tMRVQobmFtZSwgZnVuYywgZGF0YSwgMCkKKyAgICBfREVDTEFSRV9U QVNLTEVUKG5hbWUsIGZ1bmMsIGRhdGEsIDAsIDApCiAjZGVmaW5lIERFQ0xBUkVfU09GVElSUV9U QVNLTEVUKG5hbWUsIGZ1bmMsIGRhdGEpICAgICAgIFwKLSAgICBfREVDTEFSRV9UQVNLTEVUKG5h bWUsIGZ1bmMsIGRhdGEsIDEpCisgICAgX0RFQ0xBUkVfVEFTS0xFVChuYW1lLCBmdW5jLCBkYXRh LCAxLCAwKQogCiAvKiBJbmRpY2F0ZXMgc3RhdHVzIG9mIHRhc2tsZXQgd29yayBvbiBlYWNoIENQ VS4gKi8KIERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25lZCBsb25nLCB0YXNrbGV0X3dvcmtfdG9fZG8p OwpAQCAtNDAsNiArNDMsNTQgQEAgREVDTEFSRV9QRVJfQ1BVKHVuc2lnbmVkIGxvbmcsIHRhc2ts ZXRfd29ya190b19kbyk7CiAjZGVmaW5lIFRBU0tMRVRfZW5xdWV1ZWQgICAoMXVsIDw8IF9UQVNL TEVUX2VucXVldWVkKQogI2RlZmluZSBUQVNLTEVUX3NjaGVkdWxlZCAgKDF1bCA8PCBfVEFTS0xF VF9zY2hlZHVsZWQpCiAKKy8qIFRoZXNlIGZhbmN5IGJpdCBtYW5pcHVsYXRpb25zIChiaXQgMCBh bmQgYml0IDEpIGFsb25nIHdpdGggdXNpbmcgYSBsb2NrCisgKiBvcGVyYXRpb24gYWxsb3cgdXMg dG8gaGF2ZSBmb3VyIHN0YWdlcyBpbiB0YXNrbGV0IGxpZmUtdGltZS4KKyAqICBhKSAweDA6IENv bXBsZXRlbHkgZW1wdHkgKG5vdCBzY2hlZHVsZWQgbm9yIHJ1bm5pbmcpLgorICogIGIpIDB4MTog U2NoZWR1bGVkIGJ1dCBub3QgcnVubmluZy4gVXNlZCB0byBndWFyZCBpbiAndGFza2xldF9zY2hl ZHVsZScKKyAqICAgICBzdWNoIHRoYXQgd2Ugd2lsbCBvbmx5IHNjaGVkdWxlIG9uZS4gSWYgaXQg aXMgc2NoZWR1bGVkIGFuZCBoYWQgbmV2ZXIKKyAqICAgICBydW4gKGhlbmNlIG5ldmVyIGNsZWFy aW5nIFNUQVRFX1NDSEVEIGJpdCksIHRhc2tsZXRfa2lsbCB3aWxsIHNwaW4KKyAqICAgICBmb3Jl dmVyIG9uIHNhaWQgdGFza2xldC4gSG93ZXZlciAndGFza2xldF9zY2hlZHVsZScgcmFpc2VzIHRo ZQorICogICAgIHNvZnRpcnEgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXItY3B1IC0gc28gaXQgd2ls bCBydW4sIGFsYmVpdCB0aGVyZSBtaWdodAorICogICAgIGJlIGEgcmFjZSAodGFza2xldF9raWxs IHNwaW5uaW5nIHVudGlsIHRoZSBzb2Z0aXJxIGhhbmRsZXIgcnVucykuCisgKiAgYykgMHgyOiBp dCBpcyBydW5uaW5nIChvbmx5IG9uIG9uZSBDUFUpIGFuZCBjYW4gYmUgc2NoZWR1bGVkIG9uIGFu eQorICogICAgIENQVS4gVGhlIGJpdCAwIC0gc2NoZWR1bGVkIGlzIGNsZWFyZWQgYXQgdGhpcyBz dGFnZSBhbGxvd2luZworICogICAgICd0YXNrbGV0X3NjaGVkdWxlJyB0byBzdWNjZXNmdWxseSBz Y2hlZHVsZS4KKyAqICBkKSAweDM6IHNjaGVkdWxlZCBhbmQgcnVubmluZyAtIG9ubHkgcG9zc2li bGUgaWYgdGhlIHJ1bm5pbmcgdGFza2xldCBjYWxscworICogICAgIHRhc2tsZXRfc2NoZWR1bGUg KG9uIHNhbWUgQ1BVKSBvciB0aGUgdGFza2xldCBpcyBzY2hlZHVsZWQgZnJvbSBhbm90aGVyCisg KiAgICAgQ1BVIHdoaWxlIHRoZSB0YXNrbGV0IGlzIHJ1bm5pbmcgb24gYW5vdGhlciBDUFUuCisg KgorICogVGhlIHR3byBiaXRzIHBsYXkgYSB2aXRhbCByb2xlIGluIGFzc3VyaW5nIHRoYXQgdGhl IHRhc2tsZXQgaXMgc2NoZWR1bGVkCisgKiBvbmNlIGFuZCBydW5zIG9ubHkgb25jZS4gVGhlIHN0 ZXBzIGFyZToKKyAqCisgKiAgMSkgdGFza2xldF9zY2hlZHVsZTogU1RBVEVfU0NIRUQgYml0IHNl dCAoMHgxKSwgYWRkZWQgb24gdGhlIHBlciBjcHUgbGlzdC4KKyAqICAyKSB0YXNrbGV0X3NvZnRp cnFfcGVyY3B1X2FjdGlvbiBwaWNrcyBvbmUgdGFza2xldCBmcm9tIHRoZSBsaXN0LiBTY2hlZHVs ZXMKKyAqICBpdHNlbGYgbGF0ZXIgaWYgdGhlcmUgYXJlIG1vcmUgdGFza2xldHMgb24gaXQuIFRy aWVzIHRvIHNldCBTVEFURV9SVU4gYml0CisgKiAgKDB4MykgLSBpZiBpdCBmYWlscyBhZGRzIHRh c2tsZXQgYmFjayB0byB0aGUgcGVyLWNwdSBsaXN0LiBJZiBpdCBzdWNjZWVkcworICogIGNsZWFy cyB0aGUgU1RBVEVfU0NIRUQgYml0ICgweDIpLiBPbmNlIHRhc2tsZXQgY29tcGxldGVkLCB1bnNl dHMgU1RBVEVfUlVOCisgKiAgKDB4MCBvciAweDEgaWYgdGFza2xldCBjYWxsZWQgdGFza2xldF9z Y2hlZHVsZSkuCisgKi8KK2VudW0geworICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsIC8qIEJpdCAw ICovCisgICAgVEFTS0xFVF9TVEFURV9SVU4KK307CisKK3N0YXRpYyBpbmxpbmUgaW50IHRhc2ts ZXRfdHJ5bG9jayhzdHJ1Y3QgdGFza2xldCAqdCkKK3sKKyAgICByZXR1cm4gIXRlc3RfYW5kX3Nl dF9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICYodCktPnN0YXRlKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIHRhc2tsZXRfdW5sb2NrKHN0cnVjdCB0YXNrbGV0ICp0KQoreworICAgIGJhcnJpZXIo KTsKKyAgICBjbGVhcl9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICYodCktPnN0YXRlKTsKK30KK3N0 YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X3VubG9ja193YWl0KHN0cnVjdCB0YXNrbGV0ICp0KQor eworICAgIHdoaWxlICh0ZXN0X2JpdChUQVNLTEVUX1NUQVRFX1JVTiwgJih0KS0+c3RhdGUpKQor ICAgIHsKKyAgICAgICAgYmFycmllcigpOworICAgIH0KK30KIHZvaWQgdGFza2xldF9zY2hlZHVs ZV9vbl9jcHUoc3RydWN0IHRhc2tsZXQgKnQsIHVuc2lnbmVkIGludCBjcHUpOwogdm9pZCB0YXNr bGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0ICp0KTsKIHZvaWQgZG9fdGFza2xldCh2b2lkKTsK QEAgLTQ4LDYgKzk5LDggQEAgdm9pZCB0YXNrbGV0X2luaXQoCiAgICAgc3RydWN0IHRhc2tsZXQg KnQsIHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQgbG9uZyBkYXRhKTsKIHZv aWQgc29mdGlycV90YXNrbGV0X2luaXQoCiAgICAgc3RydWN0IHRhc2tsZXQgKnQsIHZvaWQgKCpm dW5jKSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQgbG9uZyBkYXRhKTsKK3ZvaWQgcGVyY3B1X3Rh c2tsZXRfaW5pdCgKKyAgICBzdHJ1Y3QgdGFza2xldCAqdCwgdm9pZCAoKmZ1bmMpKHVuc2lnbmVk IGxvbmcpLCB1bnNpZ25lZCBsb25nIGRhdGEpOwogdm9pZCB0YXNrbGV0X3N1YnN5c19pbml0KHZv aWQpOwogCiAjZW5kaWYgLyogX19YRU5fVEFTS0xFVF9IX18gKi8KLS0gCjIuNC4xMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=