From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Xu Subject: Re: [PATCH v9]xen: sched: convert RTDS from time to event driven model Date: Tue, 15 Mar 2016 23:11:10 -0400 Message-ID: References: <1458000275-4237-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ag1rj-000863-Fs for xen-devel@lists.xenproject.org; Wed, 16 Mar 2016 03:11:19 +0000 Received: from mail-vk0-f43.google.com (mail-vk0-f43.google.com [209.85.213.43]) (authenticated bits=0) by fox.seas.upenn.edu (8.14.9/8.14.5) with ESMTP id u2G3BF4I008130 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Tue, 15 Mar 2016 23:11:16 -0400 Received: by mail-vk0-f43.google.com with SMTP id e185so46116907vkb.1 for ; Tue, 15 Mar 2016 20:11:16 -0700 (PDT) In-Reply-To: <1458000275-4237-1-git-send-email-tiche@seas.upenn.edu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Tianyang Chen Cc: "xen-devel@lists.xenproject.org" , Dario Faggioli , George Dunlap , Dagaen Golomb List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBNYXIgMTQsIDIwMTYgYXQgODowNCBQTSwgVGlhbnlhbmcgQ2hlbiA8dGljaGVAc2Vh cy51cGVubi5lZHU+IHdyb3RlOgo+IEJ1ZGdldCByZXBsZW5pc2htZW50IGFuZCBlbmZvcmNlbWVu dCBhcmUgc2VwYXJhdGVkIGJ5IGFkZGluZwo+IGEgcmVwbGVuaXNobWVudCB0aW1lciwgd2hpY2gg ZmlyZXMgYXQgdGhlIG5leHQgbW9zdCBpbW1pbmVudAo+IHJlbGVhc2UgdGltZSBvZiBhbGwgcnVu bmFibGUgdmNwdXMuCj4KPiBBIHJlcGxlbmlzaG1lbnQgcXVldWUgaGFzIGJlZW4gYWRkZWQgdG8g a2VlcCB0cmFjayBvZiBhbGwgdmNwdXMgdGhhdAo+IGFyZSBydW5uYWJsZS4KPgo+IFRoZSBmb2xs b3dpbmcgZnVuY3Rpb25zIGhhdmUgbWFqb3IgY2hhbmdlcyB0byBtYW5hZ2UgdGhlIHJlcGxlbmlz aG1lbnQKPiBldmVudHMgYW5kIHRpbWVyLgo+Cj4gcmVwbF9oYW5kbGVyKCk6IEl0IGlzIGEgdGlt ZXIgaGFuZGxlciB3aGljaCBpcyByZS1wcm9ncmFtbWVkCj4gdG8gZmlyZSBhdCB0aGUgbmVhcmVz dCB2Y3B1IGRlYWRsaW5lIHRvIHJlcGxlbmlzaCB2Y3B1cy4KPgo+IHJ0X3NjaGVkdWxlKCk6IHBp Y2tzIHRoZSBoaWdoZXN0IHJ1bm5hYmxlIHZjcHUgYmFzZWQgb24gY3B1Cj4gYWZmaW5pdHkgYW5k IHJldC50aW1lIHdpbGwgYmUgcGFzc2VkIHRvIHNjaGVkdWxlKCkuIElmIGFuIGlkbGUKPiB2Y3B1 IGlzIHBpY2tlZCwgLTEgaXMgcmV0dXJuZWQgdG8gYXZvaWQgYnVzeS13YWl0aW5nLiByZXBsX3Vw ZGF0ZSgpCj4gaGFzIGJlZW4gcmVtb3ZlZC4KPgo+IHJ0X3ZjcHVfd2FrZSgpOiB3aGVuIGEgdmNw dSB3YWtlcyB1cCwgaXQgdGlja2xlcyBpbnN0ZWFkIG9mCj4gcGlja2luZyBvbmUgZnJvbSB0aGUg cnVuIHF1ZXVlLgo+Cj4gcnRfY29udGV4dF9zYXZlZCgpOiB3aGVuIGNvbnRleHQgc3dpdGNoaW5n IGlzIGZpbmlzaGVkLCB0aGUKPiBwcmVlbXB0ZWQgdmNwdSB3aWxsIGJlIHB1dCBiYWNrIGludG8g dGhlIHJ1bnEuCj4KPiBTaW1wbGlmaWVkIGZ1bnRpb25hbCBncmFwaDoKPgo+IHNjaGVkdWxlLmMg U0NIRURVTEVfU09GVElSUToKPiAgICAgcnRfc2NoZWR1bGUoKToKPiAgICAgICAgIFtzcGluX2xv Y2tdCj4gICAgICAgICBidXJuX2J1ZGdldChzY3VycikKPiAgICAgICAgIHNuZXh0ID0gcnVucV9w aWNrKCkKPiAgICAgICAgIFtzcGluX3VubG9ja10KPgo+IHNjaGVkX3J0LmMgVElNRVJfU09GVElS UQo+ICAgICByZXBsZW5pc2htZW50X3RpbWVyX2hhbmRsZXIoKQo+ICAgICAgICAgW3NwaW5fbG9j a10KPiAgICAgICAgIDxmb3JfZWFjaF92Y3B1X29uX3EoaSk+IHsKPiAgICAgICAgICAgICByZXBs ZW5pc2goaSkKPiAgICAgICAgICAgICBydW5xX3RpY2tsZShpKQo+ICAgICAgICAgfT4KPiAgICAg ICAgIHByb2dyYW1fdGltZXIoKQo+ICAgICAgICAgW3NwaW5fbG9ja10KPgo+IFNpZ25lZC1vZmYt Ynk6IFRpYW55YW5nIENoZW4gPHRpY2hlQHNlYXMudXBlbm4uZWR1Pgo+IFNpZ25lZC1vZmYtYnk6 IE1lbmcgWHUgPG1lbmd4dUBjaXMudXBlbm4uZWR1Pgo+IFNpZ25lZC1vZmYtYnk6IERhZ2FlbiBH b2xvbWIgPGRnb2xvbWJAc2Vhcy51cGVubi5lZHU+Cj4gLS0tCj4gY2hhbmdlcyBzaW5jZSB2ODoK PiAgICAgUmVwbGFjZWQgc3Bpbl9sb2NrX2lycXNhdmUgd2l0aCBzcGluX2xvY2tfaXJxLgo+ICAg ICBCdWcgZml4IGluIGJ1cm5fYnVkZ2V0KCkgd2hlcmUgYnVkZ2V0ID09IDAuCj4gICAgIFJlbW92 ZWQgdW5uZWNlc3NhcnkgdGlja2xpbmcgaW4gdGhlIHRpbWVyIGhhbmRsZXIgd2hlbgo+ICAgICB2 Y3B1cyBoYXZlIHRoZSBzYW1lIGRlYWRsaW5lLgo+Cj4gY2hhbmdlcyBzaW5jZSB2NzoKPiAgICAg Q29kaW5nIHN5dGxlLgo+ICAgICBBZGRlZCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIHZjcHUg d2FzIGRlcGxldGVkLgo+ICAgICBBZGRlZCBhIGxvY2FsIGxpc3QgaW5jbHVkaW5nIHVwZGF0ZWQg dmNwdXMgaW4gdGhlCj4gICAgIHRpbWVyIGhhbmRsZXIuIEl0IGlzIHVzZWQgdG8gZGVjaWRlIHdo aWNoIHZjcHUgc2hvdWxkCj4gICAgIHRpY2tsZS4KPgo+IGNoYW5nZXMgc2luY2UgdjY6Cj4gICAg IFJlbW92ZWQgdW5uZWNlc3NhcnkgdmNwdV9vbl9xKCkgY2hlY2tzIGZvciBydW5xX2luc2VydCgp Cj4gICAgIFJlbmFtZWQgcmVwbGVuaXNobWVudCBxdWV1ZSByZWxhdGVkIGZ1bmN0aW9ucyB3aXRo b3V0Cj4gICAgIHVuZGVyc2NvcmVzCj4gICAgIE5ldyByZXBscV9yZWluc2VydCgpIGZ1bmN0aW9u IGZvciBydF92Y3B1X3dha2UoKQo+Cj4gY2hhbmdlcyBzaW5jZSB2NToKPiAgICAgUmVtb3ZlZCB1 bm5lY2Vzc2FyeSB2Y3B1X29uX3JlcGxxKCkgY2hlY2tzCj4gICAgIGRlYWRsaW5lX3F1ZXVlX2lu c2VydCgpIHJldHVybnMgYSBmbGFnIHRvIGluZGljYXRlIGlmIGl0J3MKPiAgICAgbmVlZGVkIHRv IHJlLXByb2dyYW0gdGhlIHRpbWVyCj4gICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgdGltZXIgY2hl Y2tzCj4gICAgIEFkZGVkIGhlbHBlciBmdW5jdGlvbnMgdG8gcmVtb3ZlIHZjcHVzIGZyb20gcXVl dWVzCj4gICAgIGNvZGluZyBzdHlsZQo+Cj4gQ2hhbmdlcyBzaW5jZSB2NDoKPiAgICAgcmVtb3Zl ZCB1bm5lY2Vzc2FyeSByZXBsZW5pc2htZW50IHF1ZXVlIGNoZWNrcyBpbiB2Y3B1X3dha2UoKQo+ ICAgICBleHRlbmRlZCByZXBscV9yZW1vdmUoKSB0byBhbGwgY2FzZXMgaW4gdmNwdV9zbGVlcCgp Cj4gICAgIHVzZWQgX2RlYWRsaW5lX3F1ZXVlX2luc2VydCgpIGhlbHBlciBmdW5jdGlvbiBmb3Ig Ym90aCBxdWV1ZXMKPiAgICAgX3JlcGxxX2luc2VydCgpIGFuZCBfcmVwbHFfcmVtb3ZlKCkgcHJv Z3JhbSB0aW1lciBpbnRlcm5hbGx5Cj4KPiBDaGFuZ2VzIHNpbmNlIHYzOgo+ICAgICByZW1vdmVk IHJ1bm5pbmcgcXVldWUuCj4gICAgIGFkZGVkIHJlcGwgcXVldWUgdG8ga2VlcCB0cmFjayBvZiBy ZXBsIGV2ZW50cy4KPiAgICAgdGltZXIgaXMgbm93IHBlciBzY2hlZHVsZXIuCj4gICAgIHRpbWVy IGlzIGluaXQgb24gYSB2YWxpZCBjcHUgaW4gYSBjcHVwb29sLgo+IC0tLQo+ICB4ZW4vY29tbW9u L3NjaGVkX3J0LmMgfCAgNDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDM0MSBpbnNlcnRpb25zKCspLCA5NiBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX3J0LmMgYi94ZW4vY29t bW9uL3NjaGVkX3J0LmMKPiBpbmRleCBiZmVkMmUyLi5iNDkxOTE1IDEwMDY0NAo+IC0tLSBhL3hl bi9jb21tb24vc2NoZWRfcnQuYwo+ICsrKyBiL3hlbi9jb21tb24vc2NoZWRfcnQuYwo+IEBAIC0z LDcgKzMsOSBAQAo+ICAgKiBFREYgc2NoZWR1bGluZyBpcyBhIHJlYWwtdGltZSBzY2hlZHVsaW5n IGFsZ29yaXRobSB1c2VkIGluIGVtYmVkZGVkIGZpZWxkLgo+ICAgKgo+ICAgKiBieSBTaXN1IFhp LCAyMDEzLCBXYXNoaW5ndG9uIFVuaXZlcnNpdHkgaW4gU2FpbnQgTG91aXMKPiAtICogYW5kIE1l bmcgWHUsIDIwMTQsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhCj4gKyAqIE1lbmcgWHUsIDIw MTQtMjAxNiwgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEKPiArICogVGlhbnlhbmcgQ2hlbiwg MjAxNiwgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEKPiArICogRGFnYWVuIEdvbG9tYiwgMjAx NiwgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEKPiAgICoKPiAgICogYmFzZWQgb24gdGhlIGNv ZGUgb2YgY3JlZGl0IFNjaGVkdWxlcgo+ICAgKi8KPiBAQCAtMTYsNiArMTgsNyBAQAo+ICAjaW5j bHVkZSA8eGVuL2RlbGF5Lmg+Cj4gICNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KPiAgI2luY2x1ZGUg PHhlbi90aW1lLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdGltZXIuaD4KPiAgI2luY2x1ZGUgPHhlbi9w ZXJmYy5oPgo+ICAjaW5jbHVkZSA8eGVuL3NjaGVkLWlmLmg+Cj4gICNpbmNsdWRlIDx4ZW4vc29m dGlycS5oPgo+IEBAIC04Nyw3ICs5MCw3IEBACj4gICNkZWZpbmUgUlREU19ERUZBVUxUX0JVREdF VCAgICAgKE1JQ1JPU0VDUyg0MDAwKSkKPgo+ICAjZGVmaW5lIFVQREFURV9MSU1JVF9TSElGVCAg ICAgIDEwCj4gLSNkZWZpbmUgTUFYX1NDSEVEVUxFICAgICAgICAgICAgKE1JTExJU0VDUygxKSkK PiArCj4gIC8qCj4gICAqIEZsYWdzCj4gICAqLwo+IEBAIC0xMTUsNiArMTE4LDE4IEBACj4gICNk ZWZpbmUgUlREU19kZWxheWVkX3J1bnFfYWRkICgxPDxfX1JURFNfZGVsYXllZF9ydW5xX2FkZCkK Pgo+ICAvKgo+ICsgKiBUaGUgcmVwbGVuaXNobWVudCB0aW1lciBoYW5kbGVyIG5lZWRzIHRvIGNo ZWNrIHRoaXMgYml0Cj4gKyAqIHRvIGtub3cgd2hlcmUgYSByZXBsZW5pc2hlZCB2Y3B1IHdhcywg d2hlbiBkZWNpZGluZyB3aGljaAo+ICsgKiB2Y3B1IHNob3VsZCB0aWNrbGUuCj4gKyAqIEEgcmVw bGVuaXNoZWQgdmNwdSBzaG91bGQgdGlja2xlIGlmIGl0IHdhcyBtb3ZlZCBmcm9tIHRoZQo+ICsg KiBkZXBsZXRlZCBxdWV1ZSB0byB0aGUgcnVuIHF1ZXVlLgo+ICsgKiArIFNldCBpbiBidXJuX2J1 ZGdldCgpIGlmIGEgdmNwdSBoYXMgemVybyBidWRnZXQgbGVmdC4KPiArICogKyBDbGVhcmVkIGFu ZCBjaGVja2VkIGluIHRoZSByZXBlbmlzaG1lbnQgaGFuZGxlci4KCkl0IHNlZW1zIHlvdSBoYXZl IGFuIGV4dHJhICsgaGVyZS4uLgpOZWVkIHRvIGJlIHJlbW92ZWQuCgpNeSBiYWQsIEkgZGlkbid0 IHNwb3QgaXQgb3V0IGluIGxhc3QgcGF0Y2guLi4gOi0oCgo+ICsgKi8KPiArI2RlZmluZSBfX1JU RFNfd2FzX2RlcGxldGVkICAgICAzCj4gKyNkZWZpbmUgUlREU193YXNfZGVwbGV0ZWQgKDE8PF9f UlREU193YXNfZGVwbGV0ZWQpCj4gKwo+ICsvKgo+ICAgKiBydCB0cmFjaW5nIGV2ZW50cyAoIm9u bHkiIDUxMiBhdmFpbGFibGUhKS4gQ2hlY2sKPiAgICogaW5jbHVkZS9wdWJsaWMvdHJhY2UuaCBm b3IgbW9yZSBkZXRhaWxzLgo+ICAgKi8KPiBAQCAtMTQyLDYgKzE1Nyw5IEBAIHN0YXRpYyBjcHVt YXNrX3Zhcl90ICpfY3B1bWFza19zY3JhdGNoOwo+ICAgKi8KPiAgc3RhdGljIHVuc2lnbmVkIGlu dCBucl9ydF9vcHM7Cj4KPiArLyogaGFuZGxlciBmb3IgdGhlIHJlcGxlbmlzaG1lbnQgdGltZXIg Ki8KPiArc3RhdGljIHZvaWQgcmVwbF9oYW5kbGVyKHZvaWQgKmRhdGEpOwo+ICsKPiAgLyoKPiAg ICogU3lzdG1lLXdpZGUgcHJpdmF0ZSBkYXRhLCBpbmNsdWRlIGdsb2JhbCBSdW5RdWV1ZS9EZXBs ZXRlZFEKPiAgICogR2xvYmFsIGxvY2sgaXMgcmVmZXJlbmNlZCBieSBzY2hlZHVsZV9kYXRhLnNj aGVkdWxlX2xvY2sgZnJvbSBhbGwKPiBAQCAtMTUyLDcgKzE3MCw5IEBAIHN0cnVjdCBydF9wcml2 YXRlIHsKPiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2RvbTsgICAgICAvKiBsaXN0IG9mIGF2YWls YWxiZSBkb21haW5zLCB1c2VkIGZvciBkdW1wICovCj4gICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJ1 bnE7ICAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHZjcHVzICovCj4gICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGRlcGxldGVkcTsgLyogdW5vcmRlcmVkIGxpc3Qgb2YgZGVwbGV0ZWQgdmNw dXMgKi8KPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHE7ICAgICAvKiBvcmRlcmVkIGxpc3Qg b2YgdmNwdXMgdGhhdCBuZWVkIHJlcGxlbmlzaG1lbnQgKi8KPiAgICAgIGNwdW1hc2tfdCB0aWNr bGVkOyAgICAgICAgICAvKiBjcHVzIGJlZW4gdGlja2xlZCAqLwo+ICsgICAgc3RydWN0IHRpbWVy ICpyZXBsX3RpbWVyOyAgIC8qIHJlcGxlbmlzaG1lbnQgdGltZXIgKi8KPiAgfTsKPgo+ICAvKgo+ IEBAIC0xNjAsNiArMTgwLDcgQEAgc3RydWN0IHJ0X3ByaXZhdGUgewo+ICAgKi8KPiAgc3RydWN0 IHJ0X3ZjcHUgewo+ICAgICAgc3RydWN0IGxpc3RfaGVhZCBxX2VsZW07ICAgIC8qIG9uIHRoZSBy dW5xL2RlcGxldGVkcSBsaXN0ICovCj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJlcGxxX2VsZW07 IC8qIG9uIHRoZSByZXBsIGV2ZW50IGxpc3QgKi8KPgo+ICAgICAgLyogVXAtcG9pbnRlcnMgKi8K PiAgICAgIHN0cnVjdCBydF9kb20gKnNkb207Cj4gQEAgLTIxMyw4ICsyMzQsMTQgQEAgc3RhdGlj IGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpydF9kZXBsZXRlZHEoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzKQo+ICAgICAgcmV0dXJuICZydF9wcml2KG9wcyktPmRlcGxldGVkcTsKPiAgfQo+ Cj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVhZCAqcnRfcmVwbHEoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzKQo+ICt7Cj4gKyAgICByZXR1cm4gJnJ0X3ByaXYob3BzKS0+cmVwbHE7 Cj4gK30KPiArCj4gIC8qCj4gLSAqIFF1ZXVlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHJ1bnEgYW5k IGRlcGxldGVkcQo+ICsgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGhlIHJ1 bnF1ZXVlLCB0aGUgZGVwbGV0ZWQgcXVldWUsCj4gKyAqIGFuZCB0aGUgcmVwbGVuaXNobWVudCBl dmVudHMgcXVldWUuCj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gIF9fdmNwdV9vbl9xKGNvbnN0IHN0 cnVjdCBydF92Y3B1ICpzdmMpCj4gQEAgLTIyOCw2ICsyNTUsMTggQEAgX19xX2VsZW0oc3RydWN0 IGxpc3RfaGVhZCAqZWxlbSkKPiAgICAgIHJldHVybiBsaXN0X2VudHJ5KGVsZW0sIHN0cnVjdCBy dF92Y3B1LCBxX2VsZW0pOwo+ICB9Cj4KPiArc3RhdGljIHN0cnVjdCBydF92Y3B1ICoKPiArcmVw bHFfZWxlbShzdHJ1Y3QgbGlzdF9oZWFkICplbGVtKQo+ICt7Cj4gKyAgICByZXR1cm4gbGlzdF9l bnRyeShlbGVtLCBzdHJ1Y3QgcnRfdmNwdSwgcmVwbHFfZWxlbSk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQKPiArdmNwdV9vbl9yZXBscShjb25zdCBzdHJ1Y3QgcnRfdmNwdSAqc3ZjKQo+ICt7Cj4g KyAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnN2Yy0+cmVwbHFfZWxlbSk7Cj4gK30KPiArCj4gIC8q Cj4gICAqIERlYnVnIHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1hdGlvbgo+ICAg Ki8KPiBAQCAtMjg4LDcgKzMyNyw3IEBAIHJ0X2R1bXBfcGNwdShjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIGludCBjcHUpCj4gIHN0YXRpYyB2b2lkCj4gIHJ0X2R1bXAoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzKQo+ICB7Cj4gLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xLCAqZGVw bGV0ZWRxLCAqaXRlcjsKPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEsICpkZXBsZXRlZHEs ICpyZXBscSwgKml0ZXI7Cj4gICAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihv cHMpOwo+ICAgICAgc3RydWN0IHJ0X3ZjcHUgKnN2YzsKPiAgICAgIHN0cnVjdCBydF9kb20gKnNk b207Cj4gQEAgLTMwMSw2ICszNDAsNyBAQCBydF9kdW1wKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcykKPgo+ICAgICAgcnVucSA9IHJ0X3J1bnEob3BzKTsKPiAgICAgIGRlcGxldGVkcSA9IHJ0 X2RlcGxldGVkcShvcHMpOwo+ICsgICAgcmVwbHEgPSBydF9yZXBscShvcHMpOwo+Cj4gICAgICBw cmludGsoIkdsb2JhbCBSdW5RdWV1ZSBpbmZvOlxuIik7Cj4gICAgICBsaXN0X2Zvcl9lYWNoKCBp dGVyLCBydW5xICkKPiBAQCAtMzE2LDYgKzM1NiwxMyBAQCBydF9kdW1wKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcykKPiAgICAgICAgICBydF9kdW1wX3ZjcHUob3BzLCBzdmMpOwo+ICAgICAg fQo+Cj4gKyAgICBwcmludGsoIkdsb2JhbCBSZXBsZW5pc2htZW50IEV2ZW50IGluZm86XG4iKTsK PiArICAgIGxpc3RfZm9yX2VhY2ggKCBpdGVyLCByZXBscSApCj4gKyAgICB7Cj4gKyAgICAgICAg c3ZjID0gcmVwbHFfZWxlbShpdGVyKTsKPiArICAgICAgICBydF9kdW1wX3ZjcHUob3BzLCBzdmMp Owo+ICsgICAgfQo+ICsKPiAgICAgIHByaW50aygiRG9tYWluIGluZm86XG4iKTsKPiAgICAgIGxp c3RfZm9yX2VhY2goIGl0ZXIsICZwcnYtPnNkb20gKQo+ICAgICAgewo+IEBAIC0zODAsMTEgKzQy Nyw3OCBAQCBydF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93LCBzdHJ1Y3QgcnRfdmNwdSAq c3ZjKQo+ICAgICAgcmV0dXJuOwo+ICB9Cj4KPiArLyoKPiArICogQSBoZWxwZXIgZnVuY3Rpb24g dGhhdCBvbmx5IHJlbW92ZXMgYSB2Y3B1IGZyb20gYSBxdWV1ZQo+ICsgKiBhbmQgaXQgcmV0dXJu cyAxIGlmIHRoZSB2Y3B1IHdhcyBpbiBmcm9udCBvZiB0aGUgbGlzdC4KPiArICovCj4gK3N0YXRp YyBpbmxpbmUgaW50Cj4gK2RlYWRsaW5lX3F1ZXVlX3JlbW92ZShzdHJ1Y3QgbGlzdF9oZWFkICpx dWV1ZSwgc3RydWN0IGxpc3RfaGVhZCAqZWxlbSkKPiArewo+ICsgICAgaW50IHBvcyA9IDA7Cj4g Kwo+ICsgICAgaWYgKCBxdWV1ZS0+bmV4dCAhPSBlbGVtICkKPiArICAgICAgICBwb3MgPSAxOwo+ ICsKPiArICAgIGxpc3RfZGVsX2luaXQoZWxlbSk7Cj4gKyAgICByZXR1cm4gIXBvczsKPiArfQo+ ICsKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gIF9fcV9yZW1vdmUoc3RydWN0IHJ0X3ZjcHUgKnN2 YykKPiAgewo+IC0gICAgaWYgKCBfX3ZjcHVfb25fcShzdmMpICkKPiAtICAgICAgICBsaXN0X2Rl bF9pbml0KCZzdmMtPnFfZWxlbSk7Cj4gKyAgICBBU1NFUlQoIF9fdmNwdV9vbl9xKHN2YykgKTsK PiArICAgIGxpc3RfZGVsX2luaXQoJnN2Yy0+cV9lbGVtKTsKPiArfQo+ICsKPiArLyoKPiArICog UmVtb3ZpbmcgYSB2Y3B1IGZyb20gdGhlIHJlcGxlbmlzaG1lbnQgcXVldWUgY291bGQKPiArICog cmUtcHJvZ3JhbSB0aGUgdGltZXIgZm9yIHRoZSBuZXh0IHJlcGxlbmlzaG1lbnQgZXZlbnQKPiAr ICogaWYgaXQgd2FzIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdC4KPiArICovCj4gK3N0YXRpYyBp bmxpbmUgdm9pZAo+ICtfX3JlcGxxX3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IHN0cnVjdCBydF92Y3B1ICpzdmMpCj4gK3sKPiArICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYg PSBydF9wcml2KG9wcyk7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyZXBscSA9IHJ0X3JlcGxx KG9wcyk7Cj4gKyAgICBzdHJ1Y3QgdGltZXIqIHJlcGxfdGltZXIgPSBwcnYtPnJlcGxfdGltZXI7 Cj4gKwo+ICsgICAgQVNTRVJUKCB2Y3B1X29uX3JlcGxxKHN2YykgKTsKPiArCj4gKyAgICBpZiAo IGRlYWRsaW5lX3F1ZXVlX3JlbW92ZShyZXBscSwgJnN2Yy0+cmVwbHFfZWxlbSkgKQo+ICsgICAg ewo+ICsgICAgICAgIC8qIHJlLWFybSB0aGUgdGltZXIgZm9yIHRoZSBuZXh0IHJlcGxlbmlzaG1l bnQgZXZlbnQgKi8KPiArICAgICAgICBpZiAoICFsaXN0X2VtcHR5KHJlcGxxKSApCj4gKyAgICAg ICAgewo+ICsgICAgICAgICAgICBzdHJ1Y3QgcnRfdmNwdSAqc3ZjX25leHQgPSByZXBscV9lbGVt KHJlcGxxLT5uZXh0KTsKPiArICAgICAgICAgICAgc2V0X3RpbWVyKHJlcGxfdGltZXIsIHN2Y19u ZXh0LT5jdXJfZGVhZGxpbmUpOwo+ICsgICAgICAgIH0KPiArICAgICAgICBlbHNlCj4gKyAgICAg ICAgICAgIHN0b3BfdGltZXIocmVwbF90aW1lcik7Cj4gKyAgICB9Cj4gK30KPiArCj4gKy8qCj4g KyAqIEFuIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBpbnNlcnRzIGEgdmNwdSB0byBhCj4gKyAqIHF1 ZXVlIGJhc2VkIG9uIGNlcnRhaW4gb3JkZXIgKEVERikuIFRoZSByZXR1cm5lZAo+ICsgKiB2YWx1 ZSBpcyAxIGlmIGEgdmNwdSBoYXMgYmVlbiBpbnNlcnRlZCB0byB0aGUKPiArICogZnJvbnQgb2Yg YSBsaXN0Lgo+ICsgKi8KPiArc3RhdGljIGludAo+ICtkZWFkbGluZV9xdWV1ZV9pbnNlcnQoc3Ry dWN0IHJ0X3ZjcHUgKiAoKl9nZXRfcV9lbGVtKShzdHJ1Y3QgbGlzdF9oZWFkICplbGVtKSwKPiAr ICAgIHN0cnVjdCBydF92Y3B1ICpzdmMsIHN0cnVjdCBsaXN0X2hlYWQgKmVsZW0sIHN0cnVjdCBs aXN0X2hlYWQgKnF1ZXVlKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwo+ICsg ICAgaW50IHBvcyA9IDA7Cj4gKwo+ICsgICAgbGlzdF9mb3JfZWFjaCAoIGl0ZXIsIHF1ZXVlICkK PiArICAgIHsKPiArICAgICAgICBzdHJ1Y3QgcnRfdmNwdSAqIGl0ZXJfc3ZjID0gKCpfZ2V0X3Ff ZWxlbSkoaXRlcik7Cj4gKyAgICAgICAgaWYgKCBzdmMtPmN1cl9kZWFkbGluZSA8PSBpdGVyX3N2 Yy0+Y3VyX2RlYWRsaW5lICkKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgcG9zKys7 Cj4gKyAgICB9Cj4gKyAgICBsaXN0X2FkZF90YWlsKGVsZW0sIGl0ZXIpOwo+ICsgICAgcmV0dXJu ICFwb3M7Cj4gIH0KPgo+ICAvKgo+IEBAIC0zOTcsMjcgKzUxMSw2MiBAQCBfX3J1bnFfaW5zZXJ0 KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3ZjcHUgKnN2YykKPiAgewo+ ICAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYob3BzKTsKPiAgICAgIHN0cnVj dCBsaXN0X2hlYWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7Cj4gLSAgICBzdHJ1Y3QgbGlzdF9oZWFk ICppdGVyOwo+Cj4gICAgICBBU1NFUlQoIHNwaW5faXNfbG9ja2VkKCZwcnYtPmxvY2spICk7Cj4g LQo+ICAgICAgQVNTRVJUKCAhX192Y3B1X29uX3Eoc3ZjKSApOwo+ICsgICAgQVNTRVJUKCB2Y3B1 X29uX3JlcGxxKHN2YykgKTsKPgo+ICAgICAgLyogYWRkIHN2YyB0byBydW5xIGlmIHN2YyBzdGls bCBoYXMgYnVkZ2V0ICovCj4gICAgICBpZiAoIHN2Yy0+Y3VyX2J1ZGdldCA+IDAgKQo+IC0gICAg ewo+IC0gICAgICAgIGxpc3RfZm9yX2VhY2goaXRlciwgcnVucSkKPiAtICAgICAgICB7Cj4gLSAg ICAgICAgICAgIHN0cnVjdCBydF92Y3B1ICogaXRlcl9zdmMgPSBfX3FfZWxlbShpdGVyKTsKPiAt ICAgICAgICAgICAgaWYgKCBzdmMtPmN1cl9kZWFkbGluZSA8PSBpdGVyX3N2Yy0+Y3VyX2RlYWRs aW5lICkKPiAtICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgfQo+IC0gICAg ICAgIGxpc3RfYWRkX3RhaWwoJnN2Yy0+cV9lbGVtLCBpdGVyKTsKPiAtICAgIH0KPiArICAgICAg ICBkZWFkbGluZV9xdWV1ZV9pbnNlcnQoJl9fcV9lbGVtLCBzdmMsICZzdmMtPnFfZWxlbSwgcnVu cSk7Cj4gICAgICBlbHNlCj4gLSAgICB7Cj4gICAgICAgICAgbGlzdF9hZGQoJnN2Yy0+cV9lbGVt LCAmcHJ2LT5kZXBsZXRlZHEpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBJbnNlcnQgc3ZjIGludG8g dGhlIHJlcGxlbmlzaG1lbnQgZXZlbnQgbGlzdAo+ICsgKiBpbiByZXBsZW5pc2htZW50IHRpbWUg b3JkZXIuCj4gKyAqIHZjcHVzIHRoYXQgbmVlZCB0byBiZSByZXBsaXNoZWQgZWFybGllciBnbyBm aXJzdC4KPiArICogVGhlIHRpbWVyIG1heSBiZSByZS1wcm9ncmFtbWVkIGlmIHN2YyBpcyBpbnNl cnRlZAo+ICsgKiBhdCB0aGUgZnJvbnQgb2YgdGhlIGV2ZW50IGxpc3QuCj4gKyAqLwo+ICtzdGF0 aWMgdm9pZAo+ICtfX3JlcGxxX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0 cnVjdCBydF92Y3B1ICpzdmMpCj4gK3sKPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJlcGxxID0g cnRfcmVwbHEob3BzKTsKPiArICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9w cyk7Cj4gKyAgICBzdHJ1Y3QgdGltZXIgKnJlcGxfdGltZXIgPSBwcnYtPnJlcGxfdGltZXI7Cj4g Kwo+ICsgICAgQVNTRVJUKCAhdmNwdV9vbl9yZXBscShzdmMpICk7Cj4gKwo+ICsgICAgaWYgKCBk ZWFkbGluZV9xdWV1ZV9pbnNlcnQoJnJlcGxxX2VsZW0sIHN2YywgJnN2Yy0+cmVwbHFfZWxlbSwg cmVwbHEpICkKPiArICAgICAgICBzZXRfdGltZXIocmVwbF90aW1lciwgc3ZjLT5jdXJfZGVhZGxp bmUpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBSZW1vdmVzIGFuZCByZS1pbnNlcnRzIGFuIGV2ZW50 IHRvIHRoZSByZXBsZW5pc2htZW50IHF1ZXVlLgo+ICsgKi8KPiArc3RhdGljIHZvaWQKPiArcmVw bHFfcmVpbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdmNwdSAq c3ZjKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyZXBscSA9IHJ0X3JlcGxxKG9wcyk7 Cj4gKyAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwo+ICsgICAgc3Ry dWN0IHRpbWVyICpyZXBsX3RpbWVyID0gcHJ2LT5yZXBsX3RpbWVyOwo+ICsKPiArICAgIEFTU0VS VCggdmNwdV9vbl9yZXBscShzdmMpICk7Cj4gKwo+ICsgICAgaWYgKCBkZWFkbGluZV9xdWV1ZV9y ZW1vdmUocmVwbHEsICZzdmMtPnJlcGxxX2VsZW0pICkKPiArICAgIHsKPiArICAgICAgICBpZiAo IGRlYWRsaW5lX3F1ZXVlX2luc2VydCgmcmVwbHFfZWxlbSwgc3ZjLCAmc3ZjLT5yZXBscV9lbGVt LCByZXBscSkgKQo+ICsgICAgICAgICAgICBzZXRfdGltZXIocmVwbF90aW1lciwgc3ZjLT5jdXJf ZGVhZGxpbmUpOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHN0 cnVjdCBydF92Y3B1ICpzdmNfbmV4dCA9IHJlcGxxX2VsZW0ocmVwbHEtPm5leHQpOwo+ICsgICAg ICAgICAgICBzZXRfdGltZXIocmVwbF90aW1lciwgc3ZjX25leHQtPmN1cl9kZWFkbGluZSk7Cj4g KyAgICAgICAgfQo+ICAgICAgfQo+ICsgICAgZWxzZSBpZiAoIGRlYWRsaW5lX3F1ZXVlX2luc2Vy dCgmcmVwbHFfZWxlbSwgc3ZjLCAmc3ZjLT5yZXBscV9lbGVtLCByZXBscSkgKQo+ICsgICAgICAg IHNldF90aW1lcihyZXBsX3RpbWVyLCBzdmMtPmN1cl9kZWFkbGluZSk7Cj4gIH0KPgo+ICAvKgo+ IEBAIC00NDksMTEgKzU5OCwxOCBAQCBydF9pbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKPiAg ICAgIElOSVRfTElTVF9IRUFEKCZwcnYtPnNkb20pOwo+ICAgICAgSU5JVF9MSVNUX0hFQUQoJnBy di0+cnVucSk7Cj4gICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5kZXBsZXRlZHEpOwo+ICsgICAg SU5JVF9MSVNUX0hFQUQoJnBydi0+cmVwbHEpOwo+Cj4gICAgICBjcHVtYXNrX2NsZWFyKCZwcnYt PnRpY2tsZWQpOwo+Cj4gICAgICBvcHMtPnNjaGVkX2RhdGEgPSBwcnY7Cj4KPiArICAgIC8qCj4g KyAgICAgKiBUaGUgdGltZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBoYXBwZW4gbGF0ZXIgd2hlbgo+ ICsgICAgICogdGhlIGZpcnN0IHBjcHUgaXMgYWRkZWQgdG8gdGhpcyBwb29sIGluIGFsbG9jX3Bk YXRhLgo+ICsgICAgICovCj4gKyAgICBwcnYtPnJlcGxfdGltZXIgPSBOVUxMOwo+ICsKPiAgICAg IHJldHVybiAwOwo+Cj4gICBub19tZW06Cj4gQEAgLTQ3Myw2ICs2MjksMTAgQEAgcnRfZGVpbml0 KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKPiAgICAgICAgICB4ZnJlZShfY3B1bWFza19zY3JhdGNo KTsKPiAgICAgICAgICBfY3B1bWFza19zY3JhdGNoID0gTlVMTDsKPiAgICAgIH0KPiArCj4gKyAg ICBraWxsX3RpbWVyKHBydi0+cmVwbF90aW1lcik7Cj4gKyAgICB4ZnJlZShwcnYtPnJlcGxfdGlt ZXIpOwo+ICsKPiAgICAgIG9wcy0+c2NoZWRfZGF0YSA9IE5VTEw7Cj4gICAgICB4ZnJlZShwcnYp Owo+ICB9Cj4gQEAgLTQ5NCw2ICs2NTQsMTcgQEAgcnRfYWxsb2NfcGRhdGEoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQo+ICAgICAgaWYgKCAhYWxsb2NfY3B1bWFza192YXIo Jl9jcHVtYXNrX3NjcmF0Y2hbY3B1XSkgKQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+Cj4gKyAg ICBpZiAoIHBydi0+cmVwbF90aW1lciA9PSBOVUxMICkKPiArICAgIHsKPiArICAgICAgICAvKiBB bGxvY2F0ZSB0aGUgdGltZXIgb24gdGhlIGZpcnN0IGNwdSBvZiB0aGlzIHBvb2wuICovCj4gKyAg ICAgICAgcHJ2LT5yZXBsX3RpbWVyID0geHphbGxvYyhzdHJ1Y3QgdGltZXIpOwo+ICsKPiArICAg ICAgICBpZiAoIHBydi0+cmVwbF90aW1lciA9PSBOVUxMICkKPiArICAgICAgICAgICAgcmV0dXJu IE5VTEw7Cj4gKwo+ICsgICAgICAgIGluaXRfdGltZXIocHJ2LT5yZXBsX3RpbWVyLCByZXBsX2hh bmRsZXIsICh2b2lkICopb3BzLCBjcHUpOwo+ICsgICAgfQo+ICsKPiAgICAgIC8qIDEgaW5kaWNh dGVzIGFsbG9jLiBzdWNjZWVkIGluIHNjaGVkdWxlLmMgKi8KPiAgICAgIHJldHVybiAodm9pZCAq KTE7Cj4gIH0KPiBAQCAtNTg3LDYgKzc1OCw3IEBAIHJ0X2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCB2b2lkICpkZCkKPiAgICAgICAgICBy ZXR1cm4gTlVMTDsKPgo+ICAgICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cV9lbGVtKTsKPiArICAg IElOSVRfTElTVF9IRUFEKCZzdmMtPnJlcGxxX2VsZW0pOwo+ICAgICAgc3ZjLT5mbGFncyA9IDBV Owo+ICAgICAgc3ZjLT5zZG9tID0gZGQ7Cj4gICAgICBzdmMtPnZjcHUgPSB2YzsKPiBAQCAtNjEw LDcgKzc4Miw4IEBAIHJ0X2ZyZWVfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2 b2lkICpwcml2KQo+ICB9Cj4KPiAgLyoKPiAtICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4g c2NoZWRfbW92ZV9kb21haW4oKSBpbiBzY2hlZHVsZS5jCj4gKyAqIEl0IGlzIGNhbGxlZCBpbiBz Y2hlZF9tb3ZlX2RvbWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKPiArICogaW4gc2NoZWR1bGUu Yy4KPiAgICogV2hlbiBtb3ZlIGEgZG9tYWluIHRvIGEgbmV3IGNwdXBvb2wuCj4gICAqIEl0IGlu c2VydHMgdmNwdXMgb2YgbW92aW5nIGRvbWFpbiB0byB0aGUgc2NoZWR1bGVyJ3MgUnVuUSBpbgo+ ICAgKiBkZXN0LiBjcHVwb29sLgo+IEBAIC02MjgsOCArODAxLDEzIEBAIHJ0X3ZjcHVfaW5zZXJ0 KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQo+ICAgICAgaWYg KCBub3cgPj0gc3ZjLT5jdXJfZGVhZGxpbmUgKQo+ICAgICAgICAgIHJ0X3VwZGF0ZV9kZWFkbGlu ZShub3csIHN2Yyk7Cj4KPiAtICAgIGlmICggIV9fdmNwdV9vbl9xKHN2YykgJiYgdmNwdV9ydW5u YWJsZSh2YykgJiYgIXZjLT5pc19ydW5uaW5nICkKPiAtICAgICAgICBfX3J1bnFfaW5zZXJ0KG9w cywgc3ZjKTsKPiArICAgIGlmICggIV9fdmNwdV9vbl9xKHN2YykgJiYgdmNwdV9ydW5uYWJsZSh2 YykgKQo+ICsgICAgewo+ICsgICAgICAgIF9fcmVwbHFfaW5zZXJ0KG9wcywgc3ZjKTsKPiArCj4g KyAgICAgICAgaWYgKCAhdmMtPmlzX3J1bm5pbmcgKQo+ICsgICAgICAgICAgICBfX3J1bnFfaW5z ZXJ0KG9wcywgc3ZjKTsKPiArICAgIH0KPiAgICAgIHZjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShs b2NrLCB2Yyk7Cj4KPiAgICAgIFNDSEVEX1NUQVRfQ1JBTksodmNwdV9pbnNlcnQpOwo+IEBAIC02 NTIsNiArODMwLDEwIEBAIHJ0X3ZjcHVfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHZjcHUgKnZjKQo+ICAgICAgbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19pcnEo dmMpOwo+ICAgICAgaWYgKCBfX3ZjcHVfb25fcShzdmMpICkKPiAgICAgICAgICBfX3FfcmVtb3Zl KHN2Yyk7Cj4gKwo+ICsgICAgaWYgKCB2Y3B1X29uX3JlcGxxKHN2YykgKQo+ICsgICAgICAgIF9f cmVwbHFfcmVtb3ZlKG9wcyxzdmMpOwo+ICsKPiAgICAgIHZjcHVfc2NoZWR1bGVfdW5sb2NrX2ly cShsb2NrLCB2Yyk7Cj4gIH0KPgo+IEBAIC03MDYsOCArODg4LDE1IEBAIGJ1cm5fYnVkZ2V0KGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3ZjcHUgKnN2Yywgc190aW1lX3Qg bm93KQo+Cj4gICAgICBzdmMtPmN1cl9idWRnZXQgLT0gZGVsdGE7Cj4KPiAtICAgIGlmICggc3Zj LT5jdXJfYnVkZ2V0IDwgMCApCj4gKyAgICBpZiAoIHN2Yy0+Y3VyX2J1ZGdldCA8PSAwICkKPiAr ICAgIHsKPiAgICAgICAgICBzdmMtPmN1cl9idWRnZXQgPSAwOwo+ICsgICAgICAgIC8qCj4gKyAg ICAgICAgICogU2V0IF9fUlREU193YXNfZGVwbGV0ZWQgc28gdGhlIHJlcGxlbmlzaG1lbnQKPiAr ICAgICAgICAgKiBoYW5kbGVyIGNhbiBsZXQgdGhpcyB2Y3B1IHRpY2tsZSBpZiBpdCB3YXMgcmVm aWxsZWQuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgc2V0X2JpdChfX1JURFNfd2FzX2RlcGxl dGVkLCAmc3ZjLT5mbGFncyk7Cj4gKyAgICB9Cj4KPiAgICAgIC8qIFRSQUNFICovCj4gICAgICB7 Cj4gQEAgLTc4NCw0NCArOTczLDYgQEAgX19ydW5xX3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCj4gIH0KPgo+ICAvKgo+IC0gKiBVcGRhdGUg dmNwdSdzIGJ1ZGdldCBhbmQKPiAtICogc29ydCBydW5xIGJ5IGluc2VydCB0aGUgbW9kaWZlZCB2 Y3B1IGJhY2sgdG8gcnVucQo+IC0gKiBsb2NrIGlzIGdyYWJiZWQgYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbgo+IC0gKi8KPiAtc3RhdGljIHZvaWQKPiAtX19yZXBsX3VwZGF0ZShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGltZV90IG5vdykKPiAtewo+IC0gICAgc3RydWN0IGxp c3RfaGVhZCAqcnVucSA9IHJ0X3J1bnEob3BzKTsKPiAtICAgIHN0cnVjdCBsaXN0X2hlYWQgKmRl cGxldGVkcSA9IHJ0X2RlcGxldGVkcShvcHMpOwo+IC0gICAgc3RydWN0IGxpc3RfaGVhZCAqaXRl cjsKPiAtICAgIHN0cnVjdCBsaXN0X2hlYWQgKnRtcDsKPiAtICAgIHN0cnVjdCBydF92Y3B1ICpz dmMgPSBOVUxMOwo+IC0KPiAtICAgIGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsIHJ1bnEp Cj4gLSAgICB7Cj4gLSAgICAgICAgc3ZjID0gX19xX2VsZW0oaXRlcik7Cj4gLSAgICAgICAgaWYg KCBub3cgPCBzdmMtPmN1cl9kZWFkbGluZSApCj4gLSAgICAgICAgICAgIGJyZWFrOwo+IC0KPiAt ICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwo+IC0gICAgICAgIC8qIHJlaW5z ZXJ0IHRoZSB2Y3B1IGlmIGl0cyBkZWFkbGluZSBpcyB1cGRhdGVkICovCj4gLSAgICAgICAgX19x X3JlbW92ZShzdmMpOwo+IC0gICAgICAgIF9fcnVucV9pbnNlcnQob3BzLCBzdmMpOwo+IC0gICAg fQo+IC0KPiAtICAgIGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsIGRlcGxldGVkcSkKPiAt ICAgIHsKPiAtICAgICAgICBzdmMgPSBfX3FfZWxlbShpdGVyKTsKPiAtICAgICAgICBpZiAoIG5v dyA+PSBzdmMtPmN1cl9kZWFkbGluZSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICBydF91 cGRhdGVfZGVhZGxpbmUobm93LCBzdmMpOwo+IC0gICAgICAgICAgICBfX3FfcmVtb3ZlKHN2Yyk7 IC8qIHJlbW92ZSBmcm9tIGRlcGxldGVkIHF1ZXVlICovCj4gLSAgICAgICAgICAgIF9fcnVucV9p bnNlcnQob3BzLCBzdmMpOyAvKiBhZGQgdG8gcnVucSAqLwo+IC0gICAgICAgIH0KPiAtICAgIH0K PiAtfQo+IC0KPiAtLyoKPiAgICogc2NoZWR1bGUgZnVuY3Rpb24gZm9yIHJ0IHNjaGVkdWxlci4K PiAgICogVGhlIGxvY2sgaXMgYWxyZWFkeSBncmFiYmVkIGluIHNjaGVkdWxlLmMsIG5vIG5lZWQg dG8gbG9jayBoZXJlCj4gICAqLwo+IEBAIC04NDAsOCArOTkxLDYgQEAgcnRfc2NoZWR1bGUoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNrbGV0X3dv cmtfc2NoZWQKPiAgICAgIC8qIGJ1cm5fYnVkZ2V0IHdvdWxkIHJldHVybiBmb3IgSURMRSBWQ1BV ICovCj4gICAgICBidXJuX2J1ZGdldChvcHMsIHNjdXJyLCBub3cpOwo+Cj4gLSAgICBfX3JlcGxf dXBkYXRlKG9wcywgbm93KTsKPiAtCj4gICAgICBpZiAoIHRhc2tsZXRfd29ya19zY2hlZHVsZWQg KQo+ICAgICAgewo+ICAgICAgICAgIHRyYWNlX3ZhcihUUkNfUlREU19TQ0hFRF9UQVNLTEVULCAx LCAwLCAgTlVMTCk7Cj4gQEAgLTg2OCw2ICsxMDE3LDcgQEAgcnRfc2NoZWR1bGUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNrbGV0X3dvcmtfc2No ZWQKPiAgICAgICAgICBzZXRfYml0KF9fUlREU19kZWxheWVkX3J1bnFfYWRkLCAmc2N1cnItPmZs YWdzKTsKPgo+ICAgICAgc25leHQtPmxhc3Rfc3RhcnQgPSBub3c7Cj4gKyAgICByZXQudGltZSA9 ICAtMTsgLyogaWYgYW4gaWRsZSB2Y3B1IGlzIHBpY2tlZCAqLwo+ICAgICAgaWYgKCAhaXNfaWRs ZV92Y3B1KHNuZXh0LT52Y3B1KSApCj4gICAgICB7Cj4gICAgICAgICAgaWYgKCBzbmV4dCAhPSBz Y3VyciApCj4gQEAgLTg4MCw5ICsxMDMwLDggQEAgcnRfc2NoZWR1bGUoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csIGJvb2xfdCB0YXNrbGV0X3dvcmtfc2NoZWQKPiAg ICAgICAgICAgICAgc25leHQtPnZjcHUtPnByb2Nlc3NvciA9IGNwdTsKPiAgICAgICAgICAgICAg cmV0Lm1pZ3JhdGVkID0gMTsKPiAgICAgICAgICB9Cj4gKyAgICAgICAgcmV0LnRpbWUgPSBzbmV4 dC0+YnVkZ2V0OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KCkFoLCB0aGlz IGlzIGluY29ycmVjdCwgYWx0aG91Z2ggdGhpcyBpcyBlYXN5IHRvIGZpeC4KClRoZSByZXQudGlt ZSBpcyB0aGUgcmVsYXRpdmUgdGltZSB3aGVuIHRoZSAqYnVkZ2V0IGVuZm9yY2VtZW50KiB0aW1l cgpzaG91bGQgYmUgaW52b2tlZC4KU2luY2Ugc25leHQgaXMgbm90IGFsd2F5cyBmdWxsIGJ1ZGdl dCwgaXQgbWF5IGhhdmUgYWxyZWFkeSBjb25zdW1lZCBzb21lIGJ1ZGdldC4KCkl0IHNob3VsZCBi ZQpyZXQudGltZSA9IHNuZXh0LT5jdXJfYnVkZ2V0CgpJc24ndCBpdD8gOi0pCgpUaGUgb3RoZXIg cGFydHMgb2YgdGhlIHNjaGVkdWxlciBsb29rcyBmaW5lIHRvIG1lLCBhcyBsb25nIGFzIHRoZQph Ym92ZSBjb21tZW50cyBhcmUgc29sdmVkLgoKSGkgVGlhbnlhbmcsCkdyZWF0IGFuZCBleHBlZGl0 ZSB3b3JrISA6LUQKCkhpIERhcmlvLApDb3VsZCB5b3UgaGF2ZSBhbm90aGVyIGxvb2sgYXQgdGhp cyBwYXRjaCBhbmQgc2VlIGlmIGl0J3Mgb2sgYWZ0ZXIgdGhlCmFib3ZlIGNvbW1lbnRzIGFyZSBz b2x2ZWQ/CgpUaGFuayB5b3UgdmVyeSBtdWNoIQoKTWVuZwoKLS0gCk1lbmcgWHUKUGhEIFN0dWRl bnQgaW4gQ29tcHV0ZXIgYW5kIEluZm9ybWF0aW9uIFNjaWVuY2UKVW5pdmVyc2l0eSBvZiBQZW5u c3lsdmFuaWEKaHR0cDovL3d3dy5jaXMudXBlbm4uZWR1L35tZW5neHUvCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=