From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tianyang Chen Subject: [PATCH v11]xen: sched: convert RTDS from time to event driven model Date: Thu, 17 Mar 2016 12:06:53 -0400 Message-ID: <1458230814-4317-1-git-send-email-tiche@seas.upenn.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agaT6-0003Q5-VQ for xen-devel@lists.xenproject.org; Thu, 17 Mar 2016 16:08:13 +0000 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: dario.faggioli@citrix.com, Tianyang Chen , george.dunlap@citrix.com, Dagaen Golomb , Meng Xu List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgUlREUyBjb2RlIGhhcyBzZXZlcmFsIHByb2JsZW1zOgogLSB0aGUgc2NoZWR1 bGVyLCBhbHRob3VnaCB0aGUgYWxnb3JpdGhtIGlzIGV2ZW50IGRyaXZlbiBieQogICBuYXR1cmUs IGZvbGxvd3MgYSB0aW1lIGRyaXZlbiBtb2RlbCAoaXMgaW52b2tlZCBwZXJpb2RpY2FsbHkhKSwK ICAgbWFraW5nIHRoZSBjb2RlIGxvb2sgdW5uYXR1cmFsOwogLSBidWRnZXQgcmVwbGVuaXNobWVu dCBsb2dpYywgYnVkZ2V0IGVuZm9yY2VtZW50IGxvZ2ljIGFuZCBzY2hlZHVsaW5nCiAgIGRlY2lz aW9ucyBhcmUgbWl4ZWQgYW5kIGVudGFuZ2xlZCwgbWFraW5nIHRoZSBjb2RlIGhhcmQgdG8gdW5k ZXJzdGFuZDsKIC0gdGhlIHZhcmlvdXMgcXVldWVzIG9mIHZjcHVzIGFyZSBzY2FubmVkIHZhcmlv dXMgdGltZXMsIG1ha2luZyB0aGUKICAgY29kZSBpbmVmZmljaWVudDsKClRoaXMgcGF0Y2ggc2Vw YXJhdGVzIGJ1ZGdldCByZXBsZW5pc2htZW50IGFuZCBlbmZvcmNlbWVudC4gSXQgZG9lcyB0aGF0 CmJ5IGhhbmRsaW5nIHRoZSBmb3JtZXIgd2l0aCBhIGRlZGljYXRlZCB0aW1lciwgYW5kIGEgcXVl dWUgb2YgcGVuZGluZwpyZXBsZW5pc2htZW50IGV2ZW50cy4KCkEgcmVwbGVuaXNobWVudCBxdWV1 ZSBoYXMgYmVlbiBhZGRlZCB0byBrZWVwIHRyYWNrIG9mIGFsbCB2Y3B1cyB0aGF0CmFyZSBydW5u YWJsZS4KCldlIGFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIG1haW4gc2NoZWR1bGluZyBmdW5jdGlv biBpcyBjYWxsZWQgd2hlbiBhCnNjaGVkdWxpbmcgZGVjaXNpb24gaXMgbmVjZXNzYXJ5LCBzdWNo IGFzIHdoZW4gdGhlIGN1cnJlbnRseSBydW5uaW5nCnZjcHUgcnVucyBvdXQgb2YgYnVkZ2V0LgoK RmluYWxseSwgd2hlbiB3YWtpbmcgdXAgYSB2Y3B1LCBpdCBpcyBub3cgZW5vdWdoIHRvIHRpY2ts ZSB0aGUgdmFyaW91cwpDUFVzIGFwcHJvcHJpYXRlbHksIGxpa2UgYWxsIG90aGVyIHNjaGVkdWxl cnMgYWxzbyBkby4KClNpZ25lZC1vZmYtYnk6IFRpYW55YW5nIENoZW4gPHRpY2hlQHNlYXMudXBl bm4uZWR1PgpTaWduZWQtb2ZmLWJ5OiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5uLmVkdT4KU2ln bmVkLW9mZi1ieTogRGFnYWVuIEdvbG9tYiA8ZGdvbG9tYkBzZWFzLnVwZW5uLmVkdT4KLS0tCmNo YW5nZXMgc2luY2UgdjEwOgogICAgUmUtd29yZGVkIGNvbW1pdCBtZXNzYWdlcy4KICAgIE1vdmVk IGhlbHBlciBtYWNyb3MgdG8gd2hlcmUgdGhleSBiZWxvbmcuCgpjaGFuZ2VzIHNpbmNlIHY5Ogog ICAgUmUtd29yZGVkIHNvbWUgb2YgdGhlIGNvbW1lbnRzCiAgICBGaXhlZCB0aGUgd3JvbmcgcmV0 dXJuZWQgdmFsdWUgZnJvbSBydF9zY2hlZHVsZSgpLgoKY2hhbmdlcyBzaW5jZSB2ODoKICAgIFJl cGxhY2VkIHNwaW5fbG9ja19pcnFzYXZlIHdpdGggc3Bpbl9sb2NrX2lycS4KICAgIEJ1ZyBmaXgg aW4gYnVybl9idWRnZXQoKSB3aGVyZSBidWRnZXQgPT0gMC4KICAgIFJlbW92ZWQgdW5uZWNlc3Nh cnkgdGlja2xpbmcgaW4gdGhlIHRpbWVyIGhhbmRsZXIgd2hlbgogICAgdmNwdXMgaGF2ZSB0aGUg c2FtZSBkZWFkbGluZS4KCmNoYW5nZXMgc2luY2Ugdjc6CiAgICBDb2Rpbmcgc3l0bGUuCiAgICBB ZGRlZCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIHZjcHUgd2FzIGRlcGxldGVkLgogICAgQWRk ZWQgYSBsb2NhbCBsaXN0IGluY2x1ZGluZyB1cGRhdGVkIHZjcHVzIGluIHRoZQogICAgdGltZXIg aGFuZGxlci4gSXQgaXMgdXNlZCB0byBkZWNpZGUgd2hpY2ggdmNwdSBzaG91bGQKICAgIHRpY2ts ZS4KCmNoYW5nZXMgc2luY2UgdjY6CiAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IHZjcHVfb25fcSgp IGNoZWNrcyBmb3IgcnVucV9pbnNlcnQoKQogICAgUmVuYW1lZCByZXBsZW5pc2htZW50IHF1ZXVl IHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhvdXQKICAgIHVuZGVyc2NvcmVzCiAgICBOZXcgcmVwbHFf cmVpbnNlcnQoKSBmdW5jdGlvbiBmb3IgcnRfdmNwdV93YWtlKCkKCmNoYW5nZXMgc2luY2UgdjU6 CiAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IHZjcHVfb25fcmVwbHEoKSBjaGVja3MKICAgIGRlYWRs aW5lX3F1ZXVlX2luc2VydCgpIHJldHVybnMgYSBmbGFnIHRvIGluZGljYXRlIGlmIGl0J3MKICAg IG5lZWRlZCB0byByZS1wcm9ncmFtIHRoZSB0aW1lcgogICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSB0 aW1lciBjaGVja3MKICAgIEFkZGVkIGhlbHBlciBmdW5jdGlvbnMgdG8gcmVtb3ZlIHZjcHVzIGZy b20gcXVldWVzCiAgICBjb2Rpbmcgc3R5bGUKCkNoYW5nZXMgc2luY2UgdjQ6CiAgICByZW1vdmVk IHVubmVjZXNzYXJ5IHJlcGxlbmlzaG1lbnQgcXVldWUgY2hlY2tzIGluIHZjcHVfd2FrZSgpCiAg ICBleHRlbmRlZCByZXBscV9yZW1vdmUoKSB0byBhbGwgY2FzZXMgaW4gdmNwdV9zbGVlcCgpCiAg ICB1c2VkIF9kZWFkbGluZV9xdWV1ZV9pbnNlcnQoKSBoZWxwZXIgZnVuY3Rpb24gZm9yIGJvdGgg cXVldWVzCiAgICBfcmVwbHFfaW5zZXJ0KCkgYW5kIF9yZXBscV9yZW1vdmUoKSBwcm9ncmFtIHRp bWVyIGludGVybmFsbHkKCkNoYW5nZXMgc2luY2UgdjM6CiAgICByZW1vdmVkIHJ1bm5pbmcgcXVl dWUuCiAgICBhZGRlZCByZXBsIHF1ZXVlIHRvIGtlZXAgdHJhY2sgb2YgcmVwbCBldmVudHMuCiAg ICB0aW1lciBpcyBub3cgcGVyIHNjaGVkdWxlci4KICAgIHRpbWVyIGlzIGluaXQgb24gYSB2YWxp ZCBjcHUgaW4gYSBjcHVwb29sLgotLS0KIHhlbi9jb21tb24vc2NoZWRfcnQuYyB8ICA0MjkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDMzMyBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vY29tbW9uL3NjaGVkX3J0LmMgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMKaW5kZXggYmZlZDJl Mi4uZmMzODYzZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jCisrKyBiL3hlbi9j b21tb24vc2NoZWRfcnQuYwpAQCAtMyw3ICszLDEwIEBACiAgKiBFREYgc2NoZWR1bGluZyBpcyBh IHJlYWwtdGltZSBzY2hlZHVsaW5nIGFsZ29yaXRobSB1c2VkIGluIGVtYmVkZGVkIGZpZWxkLgog ICoKICAqIGJ5IFNpc3UgWGksIDIwMTMsIFdhc2hpbmd0b24gVW5pdmVyc2l0eSBpbiBTYWludCBM b3VpcwotICogYW5kIE1lbmcgWHUsIDIwMTQsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCisg KiBNZW5nIFh1LCAyMDE0LTIwMTYsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCisgKgorICog Q29udmVyc2lvbiB0b3dhcmQgZXZlbnQgZHJpdmVuIG1vZGVsIGJ5IFRpYW55YW5nIENoZW4KKyAq IGFuZCBEYWdhZW4gR29sb21iLCAyMDE2LCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYQogICoK ICAqIGJhc2VkIG9uIHRoZSBjb2RlIG9mIGNyZWRpdCBTY2hlZHVsZXIKICAqLwpAQCAtMTYsNiAr MTksNyBAQAogI2luY2x1ZGUgPHhlbi9kZWxheS5oPgogI2luY2x1ZGUgPHhlbi9ldmVudC5oPgog I2luY2x1ZGUgPHhlbi90aW1lLmg+CisjaW5jbHVkZSA8eGVuL3RpbWVyLmg+CiAjaW5jbHVkZSA8 eGVuL3BlcmZjLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLWlmLmg+CiAjaW5jbHVkZSA8eGVuL3Nv ZnRpcnEuaD4KQEAgLTg3LDcgKzkxLDcgQEAKICNkZWZpbmUgUlREU19ERUZBVUxUX0JVREdFVCAg ICAgKE1JQ1JPU0VDUyg0MDAwKSkKIAogI2RlZmluZSBVUERBVEVfTElNSVRfU0hJRlQgICAgICAx MAotI2RlZmluZSBNQVhfU0NIRURVTEUgICAgICAgICAgICAoTUlMTElTRUNTKDEpKQorCiAvKgog ICogRmxhZ3MKICAqLwpAQCAtMTE1LDYgKzExOSwxNiBAQAogI2RlZmluZSBSVERTX2RlbGF5ZWRf cnVucV9hZGQgKDE8PF9fUlREU19kZWxheWVkX3J1bnFfYWRkKQogCiAvKgorICogUlREU19kZXBs ZXRlZDogRG9lcyB0aGlzIHZjcCBydW4gb3V0IG9mIGJ1ZGdldD8KKyAqIFRoaXMgZmxhZyBpcwor ICogKyBzZXQgaW4gYnVybl9idWRnZXQoKSBpZiBhIHZjcHUgaGFzIHplcm8gYnVkZ2V0IGxlZnQ7 CisgKiArIGNsZWFyZWQgYW5kIGNoZWNrZWQgaW4gdGhlIHJlcGVuaXNobWVudCBoYW5kbGVyLAor ICogICBmb3IgdGhlIHZjcHVzIHRoYXQgYXJlIGJlaW5nIHJlcGxlbmlzaGVkLgorICovCisjZGVm aW5lIF9fUlREU19kZXBsZXRlZCAgICAgMworI2RlZmluZSBSVERTX2RlcGxldGVkICgxPDxfX1JU RFNfZGVwbGV0ZWQpCisKKy8qCiAgKiBydCB0cmFjaW5nIGV2ZW50cyAoIm9ubHkiIDUxMiBhdmFp bGFibGUhKS4gQ2hlY2sKICAqIGluY2x1ZGUvcHVibGljL3RyYWNlLmggZm9yIG1vcmUgZGV0YWls cy4KICAqLwpAQCAtMTQyLDYgKzE1Niw4IEBAIHN0YXRpYyBjcHVtYXNrX3Zhcl90ICpfY3B1bWFz a19zY3JhdGNoOwogICovCiBzdGF0aWMgdW5zaWduZWQgaW50IG5yX3J0X29wczsKIAorc3RhdGlj IHZvaWQgcmVwbF90aW1lcl9oYW5kbGVyKHZvaWQgKmRhdGEpOworCiAvKgogICogU3lzdG1lLXdp ZGUgcHJpdmF0ZSBkYXRhLCBpbmNsdWRlIGdsb2JhbCBSdW5RdWV1ZS9EZXBsZXRlZFEKICAqIEds b2JhbCBsb2NrIGlzIHJlZmVyZW5jZWQgYnkgc2NoZWR1bGVfZGF0YS5zY2hlZHVsZV9sb2NrIGZy b20gYWxsCkBAIC0xNTIsNyArMTY4LDkgQEAgc3RydWN0IHJ0X3ByaXZhdGUgewogICAgIHN0cnVj dCBsaXN0X2hlYWQgc2RvbTsgICAgICAvKiBsaXN0IG9mIGF2YWlsYWxiZSBkb21haW5zLCB1c2Vk IGZvciBkdW1wICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBydW5xOyAgICAgIC8qIG9yZGVyZWQg bGlzdCBvZiBydW5uYWJsZSB2Y3B1cyAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgZGVwbGV0ZWRx OyAvKiB1bm9yZGVyZWQgbGlzdCBvZiBkZXBsZXRlZCB2Y3B1cyAqLworICAgIHN0cnVjdCBsaXN0 X2hlYWQgcmVwbHE7ICAgICAvKiBvcmRlcmVkIGxpc3Qgb2YgdmNwdXMgdGhhdCBuZWVkIHJlcGxl bmlzaG1lbnQgKi8KICAgICBjcHVtYXNrX3QgdGlja2xlZDsgICAgICAgICAgLyogY3B1cyBiZWVu IHRpY2tsZWQgKi8KKyAgICBzdHJ1Y3QgdGltZXIgKnJlcGxfdGltZXI7ICAgLyogcmVwbGVuaXNo bWVudCB0aW1lciAqLwogfTsKIAogLyoKQEAgLTE2MCw2ICsxNzgsNyBAQCBzdHJ1Y3QgcnRfcHJp dmF0ZSB7CiAgKi8KIHN0cnVjdCBydF92Y3B1IHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHFfZWxl bTsgICAgLyogb24gdGhlIHJ1bnEvZGVwbGV0ZWRxIGxpc3QgKi8KKyAgICBzdHJ1Y3QgbGlzdF9o ZWFkIHJlcGxxX2VsZW07IC8qIG9uIHRoZSByZXBsZW5pc2htZW50IGV2ZW50cyBsaXN0ICovCiAK ICAgICAvKiBVcC1wb2ludGVycyAqLwogICAgIHN0cnVjdCBydF9kb20gKnNkb207CkBAIC0yMTMs OCArMjMyLDE0IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVhZCAqcnRfZGVwbGV0ZWRx KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAgICByZXR1cm4gJnJ0X3ByaXYob3BzKS0+ ZGVwbGV0ZWRxOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnJ0X3JlcGxx KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKK3sKKyAgICByZXR1cm4gJnJ0X3ByaXYob3Bz KS0+cmVwbHE7Cit9CisKIC8qCi0gKiBRdWV1ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBydW5xIGFu ZCBkZXBsZXRlZHEKKyAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyB0aGUgcnVu cXVldWUsIHRoZSBkZXBsZXRlZCBxdWV1ZSwKKyAqIGFuZCB0aGUgcmVwbGVuaXNobWVudCBldmVu dHMgcXVldWUuCiAgKi8KIHN0YXRpYyBpbnQKIF9fdmNwdV9vbl9xKGNvbnN0IHN0cnVjdCBydF92 Y3B1ICpzdmMpCkBAIC0yMjgsNiArMjUzLDE4IEBAIF9fcV9lbGVtKHN0cnVjdCBsaXN0X2hlYWQg KmVsZW0pCiAgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0IHJ0X3ZjcHUsIHFfZWxl bSk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgcnRfdmNwdSAqCityZXBscV9lbGVtKHN0cnVjdCBsaXN0 X2hlYWQgKmVsZW0pCit7CisgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0IHJ0X3Zj cHUsIHJlcGxxX2VsZW0pOworfQorCitzdGF0aWMgaW50Cit2Y3B1X29uX3JlcGxxKGNvbnN0IHN0 cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZzdmMtPnJlcGxx X2VsZW0pOworfQorCiAvKgogICogRGVidWcgcmVsYXRlZCBjb2RlLCBkdW1wIHZjcHUvY3B1IGlu Zm9ybWF0aW9uCiAgKi8KQEAgLTI4OCw3ICszMjUsNyBAQCBydF9kdW1wX3BjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogc3RhdGljIHZvaWQKIHJ0X2R1bXAoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzKQogewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEsICpk ZXBsZXRlZHEsICppdGVyOworICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEsICpkZXBsZXRlZHEs ICpyZXBscSwgKml0ZXI7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3Bz KTsKICAgICBzdHJ1Y3QgcnRfdmNwdSAqc3ZjOwogICAgIHN0cnVjdCBydF9kb20gKnNkb207CkBA IC0zMDEsNiArMzM4LDcgQEAgcnRfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAK ICAgICBydW5xID0gcnRfcnVucShvcHMpOwogICAgIGRlcGxldGVkcSA9IHJ0X2RlcGxldGVkcShv cHMpOworICAgIHJlcGxxID0gcnRfcmVwbHEob3BzKTsKIAogICAgIHByaW50aygiR2xvYmFsIFJ1 blF1ZXVlIGluZm86XG4iKTsKICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyLCBydW5xICkKQEAgLTMx Niw2ICszNTQsMTMgQEAgcnRfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAg ICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CiAgICAgfQogCisgICAgcHJpbnRrKCJHbG9iYWwg UmVwbGVuaXNobWVudCBFdmVudHMgaW5mbzpcbiIpOworICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIs IHJlcGxxICkKKyAgICB7CisgICAgICAgIHN2YyA9IHJlcGxxX2VsZW0oaXRlcik7CisgICAgICAg IHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAgfQorCiAgICAgcHJpbnRrKCJEb21haW4gaW5m bzpcbiIpOwogICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsICZwcnYtPnNkb20gKQogICAgIHsKQEAg LTM4MCwxMSArNDI1LDg0IEBAIHJ0X3VwZGF0ZV9kZWFkbGluZShzX3RpbWVfdCBub3csIHN0cnVj dCBydF92Y3B1ICpzdmMpCiAgICAgcmV0dXJuOwogfQogCisvKgorICogSGVscGVycyBmb3IgcmVt b3ZpbmcgYW5kIGluc2VydGluZyBhIHZjcHUgaW4gYSBxdWV1ZQorICogdGhhdCBpcyBiZWluZyBr ZXB0IG9yZGVyZWQgYnkgdGhlIHZjcHVzJyBkZWFkbGluZXMgKGFzIEVERgorICogbWFuZGF0ZXMp LgorICoKKyAqIEZvciBjYWxsZXJzJyBjb252ZW5pZW5jZSwgdGhlIHZjcHUgcmVtb3ZpbmcgaGVs cGVyIHJldHVybnMKKyAqIHRydWUgaWYgdGhlIHZjcHUgcmVtb3ZlZCB3YXMgdGhlIG9uZSBhdCB0 aGUgZnJvbnQgb2YgdGhlCisgKiBxdWV1ZTsgc2ltaWxhcmx5LCB0aGUgaW5zZXJ0aW5nIGhlbHBl ciByZXR1cm5zIHRydWUgaWYgdGhlCisgKiBpbnNlcnRlZCBlbmRlZCBhdCB0aGUgZnJvbnQgb2Yg dGhlIHF1ZXVlIChpLmUuLCBpbiBib3RoCisgKiBjYXNlcywgaWYgdGhlIHZjcHUgd2l0aCB0aGUg ZWFybGllc3QgZGVhZGxpbmUgaXMgd2hhdCB3ZQorICogYXJlIGRlYWxpbmcgd2l0aCkuCisgKi8K K3N0YXRpYyBpbmxpbmUgYm9vbF90CitkZWFkbGluZV9xdWV1ZV9yZW1vdmUoc3RydWN0IGxpc3Rf aGVhZCAqcXVldWUsIHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0pCit7CisgICAgaW50IHBvcyA9IDA7 CisKKyAgICBpZiAoIHF1ZXVlLT5uZXh0ICE9IGVsZW0gKQorICAgICAgICBwb3MgPSAxOworCisg ICAgbGlzdF9kZWxfaW5pdChlbGVtKTsKKyAgICByZXR1cm4gIXBvczsKK30KKworc3RhdGljIGlu bGluZSBib29sX3QKK2RlYWRsaW5lX3F1ZXVlX2luc2VydChzdHJ1Y3QgcnRfdmNwdSAqICgqcWVs ZW0pKHN0cnVjdCBsaXN0X2hlYWQgKiksCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0 X3ZjcHUgKnN2Yywgc3RydWN0IGxpc3RfaGVhZCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpxdWV1ZSkKK3sKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVy OworICAgIGludCBwb3MgPSAwOworCisgICAgbGlzdF9mb3JfZWFjaCAoIGl0ZXIsIHF1ZXVlICkK KyAgICB7CisgICAgICAgIHN0cnVjdCBydF92Y3B1ICogaXRlcl9zdmMgPSAoKnFlbGVtKShpdGVy KTsKKyAgICAgICAgaWYgKCBzdmMtPmN1cl9kZWFkbGluZSA8PSBpdGVyX3N2Yy0+Y3VyX2RlYWRs aW5lICkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBwb3MrKzsKKyAgICB9CisgICAgbGlz dF9hZGRfdGFpbChlbGVtLCBpdGVyKTsKKyAgICByZXR1cm4gIXBvczsKK30KKyNkZWZpbmUgZGVh ZGxpbmVfcnVucV9pbnNlcnQoLi4uKSBcCisgIGRlYWRsaW5lX3F1ZXVlX2luc2VydCgmX19xX2Vs ZW0sICMjX19WQV9BUkdTX18pCisjZGVmaW5lIGRlYWRsaW5lX3JlcGxxX2luc2VydCguLi4pIFwK KyAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KCZyZXBscV9lbGVtLCAjI19fVkFfQVJHU19fKQorCiBz dGF0aWMgaW5saW5lIHZvaWQKIF9fcV9yZW1vdmUoc3RydWN0IHJ0X3ZjcHUgKnN2YykKIHsKLSAg ICBpZiAoIF9fdmNwdV9vbl9xKHN2YykgKQotICAgICAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnFf ZWxlbSk7CisgICAgQVNTRVJUKCBfX3ZjcHVfb25fcShzdmMpICk7CisgICAgbGlzdF9kZWxfaW5p dCgmc3ZjLT5xX2VsZW0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3JlcGxxX3JlbW92ZShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICAg c3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3BzKTsKKyAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpyZXBscSA9IHJ0X3JlcGxxKG9wcyk7CisKKyAgICBBU1NFUlQoIHZjcHVfb25fcmVwbHEo c3ZjKSApOworCisgICAgaWYgKCBkZWFkbGluZV9xdWV1ZV9yZW1vdmUocmVwbHEsICZzdmMtPnJl cGxxX2VsZW0pICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSByZXBsZW5pc2ht ZW50IHRpbWVyIG5lZWRzIHRvIGJlIHNldCB0byBmaXJlIHdoZW4gYQorICAgICAgICAgKiByZXBs ZW5pc2htZW50IGZvciB0aGUgdmNwdSBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlcGxlbmlzaG1lbnQK KyAgICAgICAgICogcXVldWUgaXMgZHVlLiBJZiBpdCBpcyBzdWNoIHZjcHUgdGhhdCB3ZSBqdXN0 IHJlbW92ZWQsIHdlIG1heQorICAgICAgICAgKiBuZWVkIHRvIHJlcHJvZ3JhbSB0aGUgdGltZXIu CisgICAgICAgICAqLworICAgICAgICBpZiAoICFsaXN0X2VtcHR5KHJlcGxxKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHN0cnVjdCBydF92Y3B1ICpzdmNfbmV4dCA9IHJlcGxxX2VsZW0ocmVw bHEtPm5leHQpOworICAgICAgICAgICAgc2V0X3RpbWVyKHBydi0+cmVwbF90aW1lciwgc3ZjX25l eHQtPmN1cl9kZWFkbGluZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg c3RvcF90aW1lcihwcnYtPnJlcGxfdGltZXIpOworICAgIH0KIH0KIAogLyoKQEAgLTM5NywyNyAr NTE1LDY5IEBAIF9fcnVucV9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3QgcnRfdmNwdSAqc3ZjKQogewogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2 KG9wcyk7CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnVucSA9IHJ0X3J1bnEob3BzKTsKLSAgICBz dHJ1Y3QgbGlzdF9oZWFkICppdGVyOwogCiAgICAgQVNTRVJUKCBzcGluX2lzX2xvY2tlZCgmcHJ2 LT5sb2NrKSApOwotCiAgICAgQVNTRVJUKCAhX192Y3B1X29uX3Eoc3ZjKSApOworICAgIEFTU0VS VCggdmNwdV9vbl9yZXBscShzdmMpICk7CiAKICAgICAvKiBhZGQgc3ZjIHRvIHJ1bnEgaWYgc3Zj IHN0aWxsIGhhcyBidWRnZXQgKi8KICAgICBpZiAoIHN2Yy0+Y3VyX2J1ZGdldCA+IDAgKQotICAg IHsKLSAgICAgICAgbGlzdF9mb3JfZWFjaChpdGVyLCBydW5xKQotICAgICAgICB7Ci0gICAgICAg ICAgICBzdHJ1Y3QgcnRfdmNwdSAqIGl0ZXJfc3ZjID0gX19xX2VsZW0oaXRlcik7Ci0gICAgICAg ICAgICBpZiAoIHN2Yy0+Y3VyX2RlYWRsaW5lIDw9IGl0ZXJfc3ZjLT5jdXJfZGVhZGxpbmUgKQot ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgbGlzdF9hZGRf dGFpbCgmc3ZjLT5xX2VsZW0sIGl0ZXIpOwotICAgIH0KKyAgICAgICAgZGVhZGxpbmVfcnVucV9p bnNlcnQoc3ZjLCAmc3ZjLT5xX2VsZW0sIHJ1bnEpOwogICAgIGVsc2UKLSAgICB7CiAgICAgICAg IGxpc3RfYWRkKCZzdmMtPnFfZWxlbSwgJnBydi0+ZGVwbGV0ZWRxKTsKK30KKworc3RhdGljIHZv aWQKK3JlcGxxX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92 Y3B1ICpzdmMpCit7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMp OworICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CisKKyAgICBBU1NF UlQoICF2Y3B1X29uX3JlcGxxKHN2YykgKTsKKworICAgIC8qCisgICAgICogVGhlIHRpbWVyIG1h eSBiZSByZS1wcm9ncmFtbWVkIGlmIHN2YyBpcyBpbnNlcnRlZAorICAgICAqIGF0IHRoZSBmcm9u dCBvZiB0aGUgZXZlbnQgbGlzdC4KKyAgICAgKi8KKyAgICBpZiAoIGRlYWRsaW5lX3JlcGxxX2lu c2VydChzdmMsICZzdmMtPnJlcGxxX2VsZW0sIHJlcGxxKSApCisgICAgICAgIHNldF90aW1lcihw cnYtPnJlcGxfdGltZXIsIHN2Yy0+Y3VyX2RlYWRsaW5lKTsKK30KKworLyoKKyAqIFJlbW92ZXMg YW5kIHJlLWluc2VydHMgYW4gZXZlbnQgdG8gdGhlIHJlcGxlbmlzaG1lbnQgcXVldWUuCisgKiBU aGUgYWltIGlzIHRvIHVwZGF0ZSBpdHMgcG9zaXRpb24gaW5zaWRlIHRoZSBxdWV1ZSwgYXMgaXRz CisgKiBkZWFkbGluZSAoYW5kIGhlbmNlIGl0cyByZXBsZW5pc2htZW50IHRpbWUpIGNvdWxkIGhh dmUKKyAqIGNoYW5nZWQuCisgKi8KK3N0YXRpYyB2b2lkCityZXBscV9yZWluc2VydChjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpzdmMpCit7CisgICAgc3RydWN0 IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOworICAgIHN0cnVjdCBydF92Y3B1ICpy ZWFybV9zdmMgPSBzdmM7CisgICAgYm9vbF90IHJlYXJtID0gMDsKKworICAgIEFTU0VSVCggdmNw dV9vbl9yZXBscShzdmMpICk7CisKKyAgICAvKgorICAgICAqIElmIHN2YyB3YXMgYXQgdGhlIGZy b250IG9mIHRoZSByZXBsZW5pc2htZW50IHF1ZXVlLCB3ZSBjZXJ0YWlubHkKKyAgICAgKiBuZWVk IHRvIHJlLXByb2dyYW0gdGhlIHRpbWVyLCBhbmQgd2Ugd2FudCB0byB1c2UgdGhlIGRlYWRsaW5l IG9mCisgICAgICogdGhlIHZjcHUgd2hpY2ggaXMgbm93IGF0IHRoZSBmcm9udCBvZiB0aGUgcXVl dWUgKHdoaWNoIG1heSBzdGlsbAorICAgICAqIGJlIHN2YyBvciBub3QpLgorICAgICAqCisgICAg ICogV2UgbWF5IGFsc28gbmVlZCB0byByZS1wcm9ncmFtLCBpZiBzdmMgaGFzIGJlZW4gcHV0IGF0 IHRoZSBmcm9udAorICAgICAqIG9mIHRoZSByZXBsZW5pc2htZW50IHF1ZXVlIHdoZW4gYmVpbmcg cmUtaW5zZXJ0ZWQuCisgICAgICovCisgICAgaWYgKCBkZWFkbGluZV9xdWV1ZV9yZW1vdmUocmVw bHEsICZzdmMtPnJlcGxxX2VsZW0pICkKKyAgICB7CisgICAgICAgIGRlYWRsaW5lX3JlcGxxX2lu c2VydChzdmMsICZzdmMtPnJlcGxxX2VsZW0sIHJlcGxxKTsKKyAgICAgICAgcmVhcm1fc3ZjID0g cmVwbHFfZWxlbShyZXBscS0+bmV4dCk7CisgICAgICAgIHJlYXJtID0gMTsKICAgICB9CisgICAg ZWxzZQorICAgICAgICByZWFybSA9IGRlYWRsaW5lX3JlcGxxX2luc2VydChzdmMsICZzdmMtPnJl cGxxX2VsZW0sIHJlcGxxKTsKKworICAgIGlmICggcmVhcm0gKQorICAgICAgICBzZXRfdGltZXIo cnRfcHJpdihvcHMpLT5yZXBsX3RpbWVyLCByZWFybV9zdmMtPmN1cl9kZWFkbGluZSk7CiB9CiAK IC8qCkBAIC00NDksMTEgKzYwOSwxOCBAQCBydF9pbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykK ICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5zZG9tKTsKICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2 LT5ydW5xKTsKICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5kZXBsZXRlZHEpOworICAgIElOSVRf TElTVF9IRUFEKCZwcnYtPnJlcGxxKTsKIAogICAgIGNwdW1hc2tfY2xlYXIoJnBydi0+dGlja2xl ZCk7CiAKICAgICBvcHMtPnNjaGVkX2RhdGEgPSBwcnY7CiAKKyAgICAvKgorICAgICAqIFRoZSB0 aW1lciBpbml0aWFsaXphdGlvbiB3aWxsIGhhcHBlbiBsYXRlciB3aGVuCisgICAgICogdGhlIGZp cnN0IHBjcHUgaXMgYWRkZWQgdG8gdGhpcyBwb29sIGluIGFsbG9jX3BkYXRhLgorICAgICAqLwor ICAgIHBydi0+cmVwbF90aW1lciA9IE5VTEw7CisKICAgICByZXR1cm4gMDsKIAogIG5vX21lbToK QEAgLTQ3Myw2ICs2NDAsMTAgQEAgcnRfZGVpbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKICAg ICAgICAgeGZyZWUoX2NwdW1hc2tfc2NyYXRjaCk7CiAgICAgICAgIF9jcHVtYXNrX3NjcmF0Y2gg PSBOVUxMOwogICAgIH0KKworICAgIGtpbGxfdGltZXIocHJ2LT5yZXBsX3RpbWVyKTsKKyAgICB4 ZnJlZShwcnYtPnJlcGxfdGltZXIpOworCiAgICAgb3BzLT5zY2hlZF9kYXRhID0gTlVMTDsKICAg ICB4ZnJlZShwcnYpOwogfQpAQCAtNDk0LDYgKzY2NSwxNyBAQCBydF9hbGxvY19wZGF0YShjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiAgICAgaWYgKCAhYWxsb2NfY3B1bWFz a192YXIoJl9jcHVtYXNrX3NjcmF0Y2hbY3B1XSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKIAor ICAgIGlmICggcHJ2LT5yZXBsX3RpbWVyID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgLyogQWxs b2NhdGUgdGhlIHRpbWVyIG9uIHRoZSBmaXJzdCBjcHUgb2YgdGhpcyBwb29sLiAqLworICAgICAg ICBwcnYtPnJlcGxfdGltZXIgPSB4emFsbG9jKHN0cnVjdCB0aW1lcik7CisKKyAgICAgICAgaWYg KCBwcnYtPnJlcGxfdGltZXIgPT0gTlVMTCApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKwor ICAgICAgICBpbml0X3RpbWVyKHBydi0+cmVwbF90aW1lciwgcmVwbF90aW1lcl9oYW5kbGVyLCAo dm9pZCAqKW9wcywgY3B1KTsKKyAgICB9CisKICAgICAvKiAxIGluZGljYXRlcyBhbGxvYy4gc3Vj Y2VlZCBpbiBzY2hlZHVsZS5jICovCiAgICAgcmV0dXJuICh2b2lkICopMTsKIH0KQEAgLTU4Nyw2 ICs3NjksNyBAQCBydF9hbGxvY192ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0 cnVjdCB2Y3B1ICp2Yywgdm9pZCAqZGQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgSU5J VF9MSVNUX0hFQUQoJnN2Yy0+cV9lbGVtKTsKKyAgICBJTklUX0xJU1RfSEVBRCgmc3ZjLT5yZXBs cV9lbGVtKTsKICAgICBzdmMtPmZsYWdzID0gMFU7CiAgICAgc3ZjLT5zZG9tID0gZGQ7CiAgICAg c3ZjLT52Y3B1ID0gdmM7CkBAIC02MTAsNyArNzkzLDggQEAgcnRfZnJlZV92ZGF0YShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnByaXYpCiB9CiAKIC8qCi0gKiBUaGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZCBpbiBzY2hlZF9tb3ZlX2RvbWFpbigpIGluIHNjaGVkdWxlLmMKKyAqIEl0 IGlzIGNhbGxlZCBpbiBzY2hlZF9tb3ZlX2RvbWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKKyAq IGluIHNjaGVkdWxlLmMuCiAgKiBXaGVuIG1vdmUgYSBkb21haW4gdG8gYSBuZXcgY3B1cG9vbC4K ICAqIEl0IGluc2VydHMgdmNwdXMgb2YgbW92aW5nIGRvbWFpbiB0byB0aGUgc2NoZWR1bGVyJ3Mg UnVuUSBpbgogICogZGVzdC4gY3B1cG9vbC4KQEAgLTYyOCw4ICs4MTIsMTMgQEAgcnRfdmNwdV9p bnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiAgICAg aWYgKCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUgKQogICAgICAgICBydF91cGRhdGVfZGVhZGxp bmUobm93LCBzdmMpOwogCi0gICAgaWYgKCAhX192Y3B1X29uX3Eoc3ZjKSAmJiB2Y3B1X3J1bm5h YmxlKHZjKSAmJiAhdmMtPmlzX3J1bm5pbmcgKQotICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywg c3ZjKTsKKyAgICBpZiAoICFfX3ZjcHVfb25fcShzdmMpICYmIHZjcHVfcnVubmFibGUodmMpICkK KyAgICB7CisgICAgICAgIHJlcGxxX2luc2VydChvcHMsIHN2Yyk7CisKKyAgICAgICAgaWYgKCAh dmMtPmlzX3J1bm5pbmcgKQorICAgICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7Cisg ICAgfQogICAgIHZjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCB2Yyk7CiAKICAgICBTQ0hF RF9TVEFUX0NSQU5LKHZjcHVfaW5zZXJ0KTsKQEAgLTY1Miw2ICs4NDEsMTAgQEAgcnRfdmNwdV9y ZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiAgICAg bG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19pcnEodmMpOwogICAgIGlmICggX192Y3B1X29uX3Eo c3ZjKSApCiAgICAgICAgIF9fcV9yZW1vdmUoc3ZjKTsKKworICAgIGlmICggdmNwdV9vbl9yZXBs cShzdmMpICkKKyAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcyxzdmMpOworCiAgICAgdmNwdV9zY2hl ZHVsZV91bmxvY2tfaXJxKGxvY2ssIHZjKTsKIH0KIApAQCAtNzA2LDggKzg5OSwxMSBAQCBidXJu X2J1ZGdldChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF92Y3B1ICpzdmMs IHNfdGltZV90IG5vdykKIAogICAgIHN2Yy0+Y3VyX2J1ZGdldCAtPSBkZWx0YTsKIAotICAgIGlm ICggc3ZjLT5jdXJfYnVkZ2V0IDwgMCApCisgICAgaWYgKCBzdmMtPmN1cl9idWRnZXQgPD0gMCAp CisgICAgewogICAgICAgICBzdmMtPmN1cl9idWRnZXQgPSAwOworICAgICAgICBzZXRfYml0KF9f UlREU19kZXBsZXRlZCwgJnN2Yy0+ZmxhZ3MpOworICAgIH0KIAogICAgIC8qIFRSQUNFICovCiAg ICAgewpAQCAtNzg0LDQ0ICs5ODAsNiBAQCBfX3J1bnFfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKIH0KIAogLyoKLSAqIFVwZGF0ZSB2Y3B1 J3MgYnVkZ2V0IGFuZAotICogc29ydCBydW5xIGJ5IGluc2VydCB0aGUgbW9kaWZlZCB2Y3B1IGJh Y2sgdG8gcnVucQotICogbG9jayBpcyBncmFiYmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rp b24KLSAqLwotc3RhdGljIHZvaWQKLV9fcmVwbF91cGRhdGUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzX3RpbWVfdCBub3cpCi17Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqcnVucSA9IHJ0 X3J1bnEob3BzKTsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpkZXBsZXRlZHEgPSBydF9kZXBsZXRl ZHEob3BzKTsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwotICAgIHN0cnVjdCBsaXN0X2hl YWQgKnRtcDsKLSAgICBzdHJ1Y3QgcnRfdmNwdSAqc3ZjID0gTlVMTDsKLQotICAgIGxpc3RfZm9y X2VhY2hfc2FmZShpdGVyLCB0bXAsIHJ1bnEpCi0gICAgewotICAgICAgICBzdmMgPSBfX3FfZWxl bShpdGVyKTsKLSAgICAgICAgaWYgKCBub3cgPCBzdmMtPmN1cl9kZWFkbGluZSApCi0gICAgICAg ICAgICBicmVhazsKLQotICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwotICAg ICAgICAvKiByZWluc2VydCB0aGUgdmNwdSBpZiBpdHMgZGVhZGxpbmUgaXMgdXBkYXRlZCAqLwot ICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7Ci0gICAgICAgIF9fcnVucV9pbnNlcnQob3BzLCBzdmMp OwotICAgIH0KLQotICAgIGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsIGRlcGxldGVkcSkK LSAgICB7Ci0gICAgICAgIHN2YyA9IF9fcV9lbGVtKGl0ZXIpOwotICAgICAgICBpZiAoIG5vdyA+ PSBzdmMtPmN1cl9kZWFkbGluZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJ0X3VwZGF0ZV9k ZWFkbGluZShub3csIHN2Yyk7Ci0gICAgICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7IC8qIHJlbW92 ZSBmcm9tIGRlcGxldGVkIHF1ZXVlICovCi0gICAgICAgICAgICBfX3J1bnFfaW5zZXJ0KG9wcywg c3ZjKTsgLyogYWRkIHRvIHJ1bnEgKi8KLSAgICAgICAgfQotICAgIH0KLX0KLQotLyoKICAqIHNj aGVkdWxlIGZ1bmN0aW9uIGZvciBydCBzY2hlZHVsZXIuCiAgKiBUaGUgbG9jayBpcyBhbHJlYWR5 IGdyYWJiZWQgaW4gc2NoZWR1bGUuYywgbm8gbmVlZCB0byBsb2NrIGhlcmUKICAqLwpAQCAtODQw LDggKzk5OCw2IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190 aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgLyogYnVybl9idWRnZXQg d291bGQgcmV0dXJuIGZvciBJRExFIFZDUFUgKi8KICAgICBidXJuX2J1ZGdldChvcHMsIHNjdXJy LCBub3cpOwogCi0gICAgX19yZXBsX3VwZGF0ZShvcHMsIG5vdyk7Ci0KICAgICBpZiAoIHRhc2ts ZXRfd29ya19zY2hlZHVsZWQgKQogICAgIHsKICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1ND SEVEX1RBU0tMRVQsIDEsIDAsICBOVUxMKTsKQEAgLTg2OCw2ICsxMDI0LDcgQEAgcnRfc2NoZWR1 bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNr bGV0X3dvcmtfc2NoZWQKICAgICAgICAgc2V0X2JpdChfX1JURFNfZGVsYXllZF9ydW5xX2FkZCwg JnNjdXJyLT5mbGFncyk7CiAKICAgICBzbmV4dC0+bGFzdF9zdGFydCA9IG5vdzsKKyAgICByZXQu dGltZSA9ICAtMTsgLyogaWYgYW4gaWRsZSB2Y3B1IGlzIHBpY2tlZCAqLwogICAgIGlmICggIWlz X2lkbGVfdmNwdShzbmV4dC0+dmNwdSkgKQogICAgIHsKICAgICAgICAgaWYgKCBzbmV4dCAhPSBz Y3VyciApCkBAIC04ODAsOSArMTAzNyw4IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAg ICAgICAgICBzbmV4dC0+dmNwdS0+cHJvY2Vzc29yID0gY3B1OwogICAgICAgICAgICAgcmV0Lm1p Z3JhdGVkID0gMTsKICAgICAgICAgfQorICAgICAgICByZXQudGltZSA9IHNuZXh0LT5jdXJfYnVk Z2V0OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KICAgICB9Ci0KLSAgICBy ZXQudGltZSA9IE1JTihzbmV4dC0+YnVkZ2V0LCBNQVhfU0NIRURVTEUpOyAvKiBzY2hlZCBxdWFu dHVtICovCiAgICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdTsKIAogICAgIHJldHVybiByZXQ7CkBA IC05MDMsNyArMTA1OSwxMCBAQCBydF92Y3B1X3NsZWVwKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc3RydWN0IHZjcHUgKnZjKQogICAgIGlmICggY3Vycl9vbl9jcHUodmMtPnByb2Nlc3Nv cikgPT0gdmMgKQogICAgICAgICBjcHVfcmFpc2Vfc29mdGlycSh2Yy0+cHJvY2Vzc29yLCBTQ0hF RFVMRV9TT0ZUSVJRKTsKICAgICBlbHNlIGlmICggX192Y3B1X29uX3Eoc3ZjKSApCisgICAgewog ICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7CisgICAgICAgIHJlcGxxX3JlbW92ZShvcHMsIHN2Yyk7 CisgICAgfQogICAgIGVsc2UgaWYgKCBzdmMtPmZsYWdzICYgUlREU19kZWxheWVkX3J1bnFfYWRk ICkKICAgICAgICAgY2xlYXJfYml0KF9fUlREU19kZWxheWVkX3J1bnFfYWRkLCAmc3ZjLT5mbGFn cyk7CiB9CkBAIC0xMDA4LDEwICsxMTY3LDcgQEAgcnRfdmNwdV93YWtlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogewogICAgIHN0cnVjdCBydF92Y3B1ICog Y29uc3Qgc3ZjID0gcnRfdmNwdSh2Yyk7CiAgICAgc190aW1lX3Qgbm93ID0gTk9XKCk7Ci0gICAg c3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3BzKTsKLSAgICBzdHJ1Y3QgcnRfdmNw dSAqc25leHQgPSBOVUxMOyAvKiBoaWdoZXN0IHByaW9yaXR5IG9uIFJ1blEgKi8KLSAgICBzdHJ1 Y3QgcnRfZG9tICpzZG9tID0gTlVMTDsKLSAgICBjcHVtYXNrX3QgKm9ubGluZTsKKyAgICBib29s X3QgbWlzc2VkOwogCiAgICAgQlVHX09OKCBpc19pZGxlX3ZjcHUodmMpICk7CiAKQEAgLTEwMzMs MzIgKzExODksNDIgQEAgcnRfdmNwdV93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg c3RydWN0IHZjcHUgKnZjKQogICAgIGVsc2UKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh2Y3B1 X3dha2Vfbm90X3J1bm5hYmxlKTsKIAotICAgIC8qIElmIGNvbnRleHQgaGFzbid0IGJlZW4gc2F2 ZWQgZm9yIHRoaXMgdmNwdSB5ZXQsIHdlIGNhbid0IHB1dCBpdCBvbgotICAgICAqIHRoZSBSdW5x dWV1ZS9EZXBsZXRlZFEuIEluc3RlYWQsIHdlIHNldCBhIGZsYWcgc28gdGhhdCBpdCB3aWxsIGJl Ci0gICAgICogcHV0IG9uIHRoZSBSdW5xdWV1ZS9EZXBsZXRlZFEgYWZ0ZXIgdGhlIGNvbnRleHQg aGFzIGJlZW4gc2F2ZWQuCisgICAgLyoKKyAgICAgKiBJZiBhIGRlYWRsaW5lIHBhc3NlZCB3aGls ZSBzdmMgd2FzIGFzbGVlcC9ibG9ja2VkLCB3ZSBuZWVkIG5ldworICAgICAqIHNjaGVkdWxpbmcg cGFyYW1ldGVycyAoYSBuZXcgZGVhZGxpbmUgYW5kIGZ1bGwgYnVkZ2V0KS4KKyAgICAgKi8KKwor ICAgIG1pc3NlZCA9ICggbm93ID49IHN2Yy0+Y3VyX2RlYWRsaW5lICk7CisgICAgaWYgKCBtaXNz ZWQgKQorICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOworCisgICAgLyoKKyAg ICAgKiBJZiBjb250ZXh0IGhhc24ndCBiZWVuIHNhdmVkIGZvciB0aGlzIHZjcHUgeWV0LCB3ZSBj YW4ndCBwdXQgaXQgb24KKyAgICAgKiB0aGUgcnVuLXF1ZXVlL2RlcGxldGVkLXF1ZXVlLiBJbnN0 ZWFkLCB3ZSBzZXQgdGhlIGFwcHJvcHJpYXRlIGZsYWcsCisgICAgICogdGhlIHZjcHUgd2lsbCBi ZSBwdXQgYmFjayBvbiBxdWV1ZSBhZnRlciB0aGUgY29udGV4dCBoYXMgYmVlbiBzYXZlZAorICAg ICAqIChpbiBydF9jb250ZXh0X3NhdmUoKSkuCiAgICAgICovCiAgICAgaWYgKCB1bmxpa2VseShz dmMtPmZsYWdzICYgUlREU19zY2hlZHVsZWQpICkKICAgICB7CiAgICAgICAgIHNldF9iaXQoX19S VERTX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKTsKKyAgICAgICAgLyoKKyAgICAgICAg ICogVGhlIHZjcHUgaXMgd2FraW5nIHVwIGFscmVhZHksIGFuZCB3ZSBkaWRuJ3QgZXZlbiBoYWQg dGhlIHRpbWUgdG8KKyAgICAgICAgICogcmVtb3ZlIGl0cyBuZXh0IHJlcGxlbmlzaG1lbnQgZXZl bnQgZnJvbSB0aGUgcmVwbGVuaXNobWVudCBxdWV1ZQorICAgICAgICAgKiB3aGVuIGl0IGJsb2Nr ZWQhIE5vIGJpZyBkZWFsLiBJZiB3ZSBkaWQgbm90IG1pc3MgdGhlIGRlYWRsaW5lIGluCisgICAg ICAgICAqIHRoZSBtZWFudGltZSwgbGV0J3MganVzdCBsZWF2ZSBpdCB0aGVyZS4gSWYgd2UgZGlk LCBsZXQncyByZW1vdmUgaXQKKyAgICAgICAgICogYW5kIHF1ZXVlIGEgbmV3IG9uZSAodG8gb2Nj dXIgYXQgb3VyIG5ldyBkZWFkbGluZSkuCisgICAgICAgICAqLworICAgICAgICBpZiAoIG1pc3Nl ZCApCisgICAgICAgICAgIHJlcGxxX3JlaW5zZXJ0KG9wcywgc3ZjKTsKICAgICAgICAgcmV0dXJu OwogICAgIH0KIAotICAgIGlmICggbm93ID49IHN2Yy0+Y3VyX2RlYWRsaW5lKQotICAgICAgICBy dF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwotCisgICAgLyogUmVwbGVuaXNobWVudCBldmVu dCBnb3QgY2FuY2VsbGVkIHdoZW4gd2UgYmxvY2tlZC4gQWRkIGl0IGJhY2suICovCisgICAgcmVw bHFfaW5zZXJ0KG9wcywgc3ZjKTsKICAgICAvKiBpbnNlcnQgc3ZjIHRvIHJ1bnEvZGVwbGV0ZWRx IGJlY2F1c2Ugc3ZjIGlzIG5vdCBpbiBxdWV1ZSBub3cgKi8KICAgICBfX3J1bnFfaW5zZXJ0KG9w cywgc3ZjKTsKIAotICAgIF9fcmVwbF91cGRhdGUob3BzLCBub3cpOwotCi0gICAgQVNTRVJUKCFs aXN0X2VtcHR5KCZwcnYtPnNkb20pKTsKLSAgICBzZG9tID0gbGlzdF9lbnRyeShwcnYtPnNkb20u bmV4dCwgc3RydWN0IHJ0X2RvbSwgc2RvbV9lbGVtKTsKLSAgICBvbmxpbmUgPSBjcHVwb29sX2Rv bWFpbl9jcHVtYXNrKHNkb20tPmRvbSk7Ci0gICAgc25leHQgPSBfX3J1bnFfcGljayhvcHMsIG9u bGluZSk7IC8qIHBpY2sgc25leHQgZnJvbSBBTEwgdmFsaWQgY3B1cyAqLwotCi0gICAgcnVucV90 aWNrbGUob3BzLCBzbmV4dCk7Ci0KLSAgICByZXR1cm47CisgICAgcnVucV90aWNrbGUob3BzLCBz dmMpOwogfQogCiAvKgpAQCAtMTA2OSwxMCArMTIzNSw2IEBAIHN0YXRpYyB2b2lkCiBydF9jb250 ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQog ewogICAgIHN0cnVjdCBydF92Y3B1ICpzdmMgPSBydF92Y3B1KHZjKTsKLSAgICBzdHJ1Y3QgcnRf dmNwdSAqc25leHQgPSBOVUxMOwotICAgIHN0cnVjdCBydF9kb20gKnNkb20gPSBOVUxMOwotICAg IHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7Ci0gICAgY3B1bWFza190ICpv bmxpbmU7CiAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19pcnEodmMp OwogCiAgICAgY2xlYXJfYml0KF9fUlREU19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKQEAgLTEw ODQsMTUgKzEyNDYsMTEgQEAgcnRfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICAgICAgIGxpa2VseSh2Y3B1X3J1bm5hYmxlKHZj KSkgKQogICAgIHsKICAgICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7Ci0gICAgICAgIF9f cmVwbF91cGRhdGUob3BzLCBOT1coKSk7Ci0KLSAgICAgICAgQVNTRVJUKCFsaXN0X2VtcHR5KCZw cnYtPnNkb20pKTsKLSAgICAgICAgc2RvbSA9IGxpc3RfZW50cnkocHJ2LT5zZG9tLm5leHQsIHN0 cnVjdCBydF9kb20sIHNkb21fZWxlbSk7Ci0gICAgICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWlu X2NwdW1hc2soc2RvbS0+ZG9tKTsKLSAgICAgICAgc25leHQgPSBfX3J1bnFfcGljayhvcHMsIG9u bGluZSk7IC8qIHBpY2sgc25leHQgZnJvbSBBTEwgY3B1cyAqLwotCi0gICAgICAgIHJ1bnFfdGlj a2xlKG9wcywgc25leHQpOworICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yyk7CiAgICAgfQor ICAgIGVsc2UKKyAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcywgc3ZjKTsKKwogb3V0OgogICAgIHZj cHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCB2Yyk7CiB9CkBAIC0xMTUwLDYgKzEzMDgsODUg QEAgcnRfZG9tX2NudGwoCiAgICAgcmV0dXJuIHJjOwogfQogCisvKgorICogVGhlIHJlcGxlbmlz aG1lbnQgdGltZXIgaGFuZGxlciBwaWNrcyB2Y3B1cworICogZnJvbSB0aGUgcmVwbHEgYW5kIGRv ZXMgdGhlIGFjdHVhbCByZXBsZW5pc2htZW50LgorICovCitzdGF0aWMgdm9pZCByZXBsX3RpbWVy X2hhbmRsZXIodm9pZCAqZGF0YSl7CisgICAgc190aW1lX3Qgbm93ID0gTk9XKCk7CisgICAgc3Ry dWN0IHNjaGVkdWxlciAqb3BzID0gZGF0YTsKKyAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0g cnRfcHJpdihvcHMpOworICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJlcGxxID0gcnRfcmVwbHEob3Bz KTsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xID0gcnRfcnVucShvcHMpOworICAgIHN0cnVj dCB0aW1lciAqcmVwbF90aW1lciA9IHBydi0+cmVwbF90aW1lcjsKKyAgICBzdHJ1Y3QgbGlzdF9o ZWFkICppdGVyLCAqdG1wOworICAgIHN0cnVjdCBydF92Y3B1ICpzdmM7CisgICAgTElTVF9IRUFE KHRtcF9yZXBscSk7CisKKyAgICBzcGluX2xvY2tfaXJxKCZwcnYtPmxvY2spOworCisgICAgLyoK KyAgICAgKiBEbyB0aGUgcmVwbGVuaXNobWVudCBhbmQgbW92ZSByZXBsZW5pc2hlZCB2Y3B1cwor ICAgICAqIHRvIHRoZSB0ZW1wb3JhcnkgbGlzdCB0byB0aWNrbGUuCisgICAgICogSWYgc3ZjIGlz IG9uIHJ1biBxdWV1ZSwgd2UgbmVlZCB0byBwdXQgaXQgYXQKKyAgICAgKiB0aGUgY29ycmVjdCBw bGFjZSBzaW5jZSBpdHMgZGVhZGxpbmUgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBsaXN0X2Zvcl9l YWNoX3NhZmUgKCBpdGVyLCB0bXAsIHJlcGxxICkKKyAgICB7CisgICAgICAgIHN2YyA9IHJlcGxx X2VsZW0oaXRlcik7CisKKyAgICAgICAgaWYgKCBub3cgPCBzdmMtPmN1cl9kZWFkbGluZSApCisg ICAgICAgICAgICBicmVhazsKKworICAgICAgICBsaXN0X2RlbCgmc3ZjLT5yZXBscV9lbGVtKTsK KyAgICAgICAgcnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKKyAgICAgICAgbGlzdF9hZGQo JnN2Yy0+cmVwbHFfZWxlbSwgJnRtcF9yZXBscSk7CisKKyAgICAgICAgaWYgKCBfX3ZjcHVfb25f cShzdmMpICkKKyAgICAgICAgeworICAgICAgICAgICAgX19xX3JlbW92ZShzdmMpOworICAgICAg ICAgICAgX19ydW5xX2luc2VydChvcHMsIHN2Yyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv KgorICAgICAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBvZiB1cGRhdGVkIHZjcHVzLgorICAg ICAqIElmIGFuIHVwZGF0ZWQgdmNwdSBpcyBydW5uaW5nLCB0aWNrbGUgdGhlIGhlYWQgb2YgdGhl CisgICAgICogcnVucXVldWUgaWYgaXQgaGFzIGEgaGlnaGVyIHByaW9yaXR5LgorICAgICAqIElm IGFuIHVwZGF0ZWQgdmNwdSB3YXMgZGVwbGV0ZWQgYW5kIG9uIHRoZSBydW5xdWV1ZSwgdGlja2xl IGl0LgorICAgICAqIEZpbmFsbHksIHJlaW5zZXJ0IHRoZSB2Y3B1cyBiYWNrIHRvIHJlcGxlbmlz aGVtZW50IGV2ZW50cyBsaXN0LgorICAgICAqLworICAgIGxpc3RfZm9yX2VhY2hfc2FmZSAoIGl0 ZXIsIHRtcCwgJnRtcF9yZXBscSApCisgICAgeworICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0 ZXIpOworCisgICAgICAgIGlmICggY3Vycl9vbl9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IpID09 IHN2Yy0+dmNwdSAmJgorICAgICAgICAgICAgICFsaXN0X2VtcHR5KHJ1bnEpICkKKyAgICAgICAg eworICAgICAgICAgICAgc3RydWN0IHJ0X3ZjcHUgKm5leHRfb25fcnVucSA9IF9fcV9lbGVtKHJ1 bnEtPm5leHQpOworCisgICAgICAgICAgICBpZiAoIHN2Yy0+Y3VyX2RlYWRsaW5lID4gbmV4dF9v bl9ydW5xLT5jdXJfZGVhZGxpbmUgKQorICAgICAgICAgICAgICAgIHJ1bnFfdGlja2xlKG9wcywg bmV4dF9vbl9ydW5xKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICggX192Y3B1X29uX3Eo c3ZjKSAmJgorICAgICAgICAgICAgICAgICAgdGVzdF9hbmRfY2xlYXJfYml0KF9fUlREU19kZXBs ZXRlZCwgJnN2Yy0+ZmxhZ3MpICkKKyAgICAgICAgICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjKTsK KworICAgICAgICBsaXN0X2RlbCgmc3ZjLT5yZXBscV9lbGVtKTsKKyAgICAgICAgZGVhZGxpbmVf cmVwbHFfaW5zZXJ0KHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwgcmVwbHEpOworICAgIH0KKworICAg IC8qCisgICAgICogSWYgdGhlcmUgYXJlIHZjcHVzIGxlZnQgaW4gdGhlIHJlcGxlbmlzaG1lbnQg ZXZlbnQgbGlzdCwKKyAgICAgKiBzZXQgdGhlIG5leHQgcmVwbGVuaXNobWVudCB0byBoYXBwZW4g YXQgdGhlIGRlYWRsaW5lIG9mCisgICAgICogdGhlIG9uZSBpbiB0aGUgZnJvbnQuCisgICAgICov CisgICAgaWYgKCAhbGlzdF9lbXB0eShyZXBscSkgKQorICAgICAgICBzZXRfdGltZXIocmVwbF90 aW1lciwgcmVwbHFfZWxlbShyZXBscS0+bmV4dCktPmN1cl9kZWFkbGluZSk7CisKKyAgICBzcGlu X3VubG9ja19pcnEoJnBydi0+bG9jayk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyIHNjaGVkX3J0ZHNfZGVmID0gewogICAgIC5uYW1lICAgICAgICAgICA9ICJTTVAgUlREUyBT Y2hlZHVsZXIiLAogICAgIC5vcHRfbmFtZSAgICAgICA9ICJydGRzIiwKLS0gCjEuNy45LjUKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=