From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Louis Bossart Subject: Re: [PATCH] ALSA: usb: improve delay reporting Date: Thu, 5 Apr 2018 09:13:11 -0500 Message-ID: <34e8eb4b-c3d2-eae7-2e23-e69b14c04244@linux.intel.com> References: <20180404135744.3921-1-georg@chini.tk> <26158b71-cc76-b2b7-e30f-c0040a5cb7e0@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by alsa0.perex.cz (Postfix) with ESMTP id 31C782675CF for ; Thu, 5 Apr 2018 16:13:47 +0200 (CEST) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Georg Chini , alsa-devel@alsa-project.org, Takashi Iwai List-Id: alsa-devel@alsa-project.org T24gNC81LzE4IDY6NDkgQU0sIEdlb3JnIENoaW5pIHdyb3RlOgo+IE9uIDA0LjA0LjIwMTggMjE6 MjQsIFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IHdyb3RlOgo+PiBPbiAwNC8wNC8yMDE4IDA4OjU3IEFN LCBHZW9yZyBDaGluaSB3cm90ZToKPj4KPj4+IEN1cnJlbnRseSwgdGhlIGtlcm5lbCB1c2VzIG9u bHkgdGhlIG51bWJlciBvZiBVU0IgZnJhbWVzIHRvIAo+Pj4gaW50ZXJwb2xhdGUgdGhlIGRlbGF5 Cj4+PiBiZXR3ZWVuIHNlbmRpbmcgb3IgcmVjZWl2aW5nIFVSQidzLiBUaGlzIGxpbWl0cyB0aGUg Z3JhbnVhcml0eSBvZiB0aGUgCj4+PiBkZWxheSByZXBvcnRzCj4+PiB0byBvbmUgbWlsbGlzZWNv bmQgYmVjYXVzZSB0aGUgZnJhbWUgY291bnRlciBpcyB1cGRhdGVkIGluIGEgCj4+PiBtaWxsaXNl Y29uZCBpbnRlcnZhbC4KPj4+Cj4+PiBUaGlzIHBhdGNoIGFkZGl0aW9uYWxseSB1c2VzIHRpbWUg c3RhbXBzIHRvIGFjaGlldmUgaGlnaGVyIHByZWNpc2lvbiAKPj4+IG9mIHRoZSByZXBvcnRlZAo+ Pj4gZGVsYXkuIElmIHRoZSB0aW1lIGRpZmZlcmVuY2UgY29tcHV0ZWQgdXNpbmcgdGltZSBzdGFt cHMgZG9lcyBub3QgCj4+PiBkZXZpYXRlIG1vcmUgdGhhbgo+Pj4gb25lIG1pbGxpc2Vjb25kIGZy b20gdGhlIGRpZmZlcmVuY2UgY29tcHV0ZWQgdXNpbmcgZnJhbWVzLCBpdCBpcyAKPj4+IGFzc3Vt ZWQgdGhhdCB0aGUKPj4+IHN5c3RlbSB0aW1lIGRpZmZlcmVuY2UgZGVsaXZlcnMgdGhlIG1vcmUg cHJlY2lzZSBkZWxheSBlc3RpbWF0ZS4KPj4+Cj4+PiBUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSBp bmNyZWFzZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSByZXBvcnRlZCBkZWxheSAKPj4+IGluIHRoZSBt YWpvcml0eQo+Pj4gb2YgY2FzZXMgd2hlcmUgc291bmQgY2FyZCBjbG9jayBhbmQgc3lzdGVtIGNs b2NrIGFyZSBhbG1vc3QgaW4gc3luYyAKPj4+IHdoaWxlIGZhbGxpbmcgYmFjawo+Pj4gdG8gdGhl IG9sZCBtZXRob2QgZm9yIHRoZSByYXJlIGNhc2VzIHdoZXJlIHRoZSB0d28gdGltZXMgZGlmZmVy IHRvbyAKPj4+IG11Y2guCj4+IEkgYW0gYWxsIGZvciBiZXR0ZXIgZGVsYXkgZXN0aW1hdGVzIGJ1 dCBJIGhhdmUgbWl4ZWQgZmVlbGluZ3MgYWJvdXQgCj4+IHRoaXMgLSBhbmQgc29tZSBoYXJkd2Fy ZS1yZWxhdGVkIHBhcnRzIGFyZSBicm9rZW4uCj4gCj4gV2VsbCwgSSBvbmx5IHN0dW1ibGVkIGlu dG8gdGhpcyBiZWNhdXNlIG9mIHRoZSByZWNlbnQgZGVsYXkgZXN0aW1hdGlvbiAKPiBpc3N1ZXMg aW4gcHVsc2VhdWRpbywKPiBzbyBmb3JnaXZlIG15IGlnbm9yYW5jZSBhYm91dCBBTFNBLiBJZiB0 aGUgZ2VuZXJhbCBpZGVhIG9mIHRoZSBwYXRjaCBpcyAKPiBub3QgcmlnaHQsIGp1c3QgaWdub3Jl Cj4gbXkgb3RoZXIgY29tbWVudHMgYW5kIGRyb3AgdGhlIHBhdGNoLgoKSXQncyBjb21wbGljYXRl ZCB0byBjaGFuZ2UgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLiBXaGVuIEkgYWRkZWQgdGhlIHVzZSAK b2YgdGhlIGZyYW1lIGNvdW50ZXIgc29tZSA1IHllYXJzIGJhY2ssIGl0IGNyZWF0ZWQgYWxsIHNv cnRzIG9mIGlzc3VlcyAKb24gdmFyaW91cyBwbGF0Zm9ybXMgdGhhdCBJIHdhcyBub3QgZXZlbiBh d2FyZSBvZi4KCllvdXIgaW1wbGVtZW50YXRpb24gcmFpc2VzIG9idmlvdXMgcXVlc3Rpb25zIGFu ZCB3b3VsZCBuZWVkIHF1aXRlIGEgYml0IApvZiByZXZhbGlkYXRpb24uIEluIGl0cyBjdXJyZW50 IHN0YXRlIGl0J3Mgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLgoKPiAKPj4KPj4gVGhlIGZyYW1l IGNvdW50ZXIgaXMgYWxyZWFkeSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBhY3R1YWwgZGVsYXkg Cj4+IHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGFjY291bnQgZm9yIHRoZSB0eXBlIG9mIFVTQiBpbnRl cmZhY2UgKElzb2MsIAo+PiBBc3luYykgdXNlZCBvbiB0aGUgZGV2aWNlIHNpZGUuIFlvdSdkIGJl IGFkZGluZyBhIGxvdCBvZiBwcmVjaXNpb24gCj4+IHdpdGhvdXQgcmVhbGx5IHNvbHZpbmcgdGhl IGZhY3QgdGhhdCB5b3UgZG9uJ3Qga25vdyB3aGF0IHRoZSBhY3R1YWwgCj4+IHBsYXliYWNrIHJh dGUgaXMuIFlvdSdkIHJlYWxseSBuZWVkIGEgdGltZSBzbW9vdGhlciB0aGF0IG1vZGVscyAKPj4g cGxheWJhY2sgcmF0ZSB2LiBzeXN0ZW0gdGltZSBpZiB5b3Ugd2FudCB0byBiZSBmdWxseSBhY2N1 cmF0ZSBiZWxvdyAKPj4gdGhlIG1zIGxldmVsIGZvciBhbGwgdHlwZXMgb2YgVVNCIGF1ZGlvIGRl dmljZXMuCj4gCj4gVGhlIGdvYWwgaXMgbm90IHRvIGJlIGZ1bGx5IGFjY3VyYXRlLCBvbmx5IHRv IGJlIHNvbWV3aGF0IGJldHRlciB0aGFuIAo+IHRoZSBjdXJyZW50IGVzdGltYXRlLgoKRGVmaW5l ICdiZXR0ZXInLiBXaGF0IGlzIHRoZSBnb2FsIGFuZCB0aGUgZXhwZWN0ZWQgYmVuZWZpdCBmb3Ig YXBwbGljYXRpb25zPwoKPiBJJ2xsIGNvcHkgaGVyZSB3aGF0IEkgYWxyZWFkeSBzYWlkIHRvIFRh a2FzaGkgaW4gcHJpdmF0ZSBjb21tdW5pY2F0aW9uOgo+IAo+IFRoZSBtaXNtYXRjaCBiZXR3ZWVu IHNvdW5kIGNhcmQgdGltZSBhbmQgc3lzdGVtIHRpbWUgc2hvdWxkIG5vdCBtYXR0ZXIgCj4gb24g dGhlCj4gdGltZXNjYWxlIHdlIGFyZSB0YWxraW5nIGFib3V0LiBMZXQncyBzYXkgd2UgYXJlIHVz aW5nIDEwIFVTQiBmcmFtZXMgCj4gKHdoaWNoIGlzCj4gbW9yZSB0aGFuIEkgaGF2ZSBzZWVuIHdo aWxlIGRlYnVnZ2luZyksIHNvIGh3X3B0ciBpcyB1cGRhdGVkIGV2ZXJ5IDEwIAo+IG1zLiBBc3N1 bWUKPiB0aGF0IHRoZSBkZXZpYXRpb24gYmV0d2VlbiBzb3VuZCBjYXJkIGFuZCBzeXN0ZW0gdGlt ZSBpcyAxJSAod2hpY2ggYWdhaW4gCj4gc2hvdWxkCj4gYmUgbW9yZSB0aGFuIHlvdSB3aWxsIGV2 ZXIgc2VlKS4gVGhlbiB1c2luZyBzeXN0ZW0gdGltZSwgdGhlIGNvbXB1dGVkIAo+IGRlbGF5IGNh bgo+IGJlIG9mZiBieSAxMDAgbWljcm9zZWNvbmRzIGF0IG1heGltdW0sIHdoaWxlIHRoZSBkZWxh eSBjb21wdXRlZCB1c2luZyAKPiBVU0IgZnJhbWVzCj4gY2FuIGJlIG9mZiBieSAybXMuIFRoZXJl Zm9yZSB1c2luZyBzeXN0ZW0gdGltZSBzaG91bGQgYmUgYWNjZXB0YWJsZSBpbiB0aGF0Cj4gc2l0 dWF0aW9uIGJlY2F1c2UgaXQgZGVsaXZlcnMgaGlnaGVyIHByZWNpc2lvbiByZXN1bHRzIGFzIGNh biBiZSAKPiBhY2hpZXZlZCB1c2luZwo+IFVTQiBmcmFtZXMuCj4gCj4gRm9yIHRoZSByYXJlIGNh c2VzIHdoZXJlIHN5c3RlbSB0aW1lIGFuZCBzb3VuZCBjYXJkIHRpbWUgYXJlIGNvbXBsZXRlbHkg Cj4gZGlmZmVyZW50LAo+IHRoZSBwYXRjaCBmYWxscyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtZXRo b2QuCj4gCj4+Cj4+IEluIGFkZGl0aW9uIEkndmUgb25seSBzZWVuIGRyaXZlcnMgcmVwb3J0IHRo ZSBkZWxheSBiYXNlZCBvbiBoYXJkd2FyZSAKPj4gY291bnRlcnMuIElmIHdlIHN0YXJ0IGRvaW5n IGludGVycG9sYXRpb25zIGJhc2VkIG9uIHN5c3RlbSB0aW1lLCB0aGVuIAo+PiB3aHkgbm90IGRv IGl0IGZvciBvdGhlciBkZXZpY2VzIGFzIHdlbGwgd2l0aCBhIGZpeCBhdCB0aGUgY29yZSBsZXZl bAo+IAo+IEkgY291bGQgbm90IGRvIHRoYXQsIEkgZG9uJ3QgaGF2ZSBlbm91Z2ggQUxTQSBrbm93 bGVkZ2UuIEEgbW90aXZhdGlvbiB0byAKPiBpbXByb3ZlCj4gdGhlIGRlbGF5IHJlcG9ydHMgZm9y IFVTQiBkZXZpY2VzIG9ubHkgY291bGQgYmUgdGhhdCB0aGV5IGFyZSBwcm9iYWJseSAKPiB0aGUg bW9zdAo+IGNvbW1vbiBkZXZpY2VzIGFwYXJ0IGZyb20gSERBLgoKRXhhY3RseSwgd2h5IG5vdCBk byB0aGlzIGZvciBIREF1ZGlvIHRoZW4uLi4KCj4gCj4+Cj4+IEFuZCBsYXN0LCBJIHRoaW5rIHlv dSBoYXZlIGFuIGlzc3VlIGZvciB0aGUgcGF1c2UgY2FzZSBhbmQgeW91IGNhbm5vdCAKPj4gcmVt b3ZlIHRoZSBjb2RlIHRoYXQgbGltaXRzIHRoZSBmcmFtZSBjb3VudGVyIHRvIDggYml0cywgdGhp cyB3aWxsIG5vdCAKPj4gd29yayBhY3Jvc3MgbXVsdGlwbGUgdmVyc2lvbnMgb2YgW2V8eF1IQ0kg Y29udHJvbGxlcnMsIHNlZSBiZWxvdy4KPj4KPj4+Cj4+PiBBcyBhIGRvd25zaWRlLCB0aGUgcG9z c2libGUgd29yc3QgY2FzZSBlcnJvciBpbmNyZWFzZXMgZnJvbSAybXMgdG8gM21zLgo+Pj4gLS0t Cj4+PiDCoCBzb3VuZC91c2IvY2FyZC5oIHzCoCAxICsKPj4+IMKgIHNvdW5kL3VzYi9wY20uY8Kg IHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPj4+ IMKgIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+ Pgo+Pj4gZGlmZiAtLWdpdCBhL3NvdW5kL3VzYi9jYXJkLmggYi9zb3VuZC91c2IvY2FyZC5oCj4+ PiBpbmRleCBlZDg3Y2M4M2ViNDcuLjg4MzVkOTYyOGNhYyAxMDA2NDQKPj4+IC0tLSBhL3NvdW5k L3VzYi9jYXJkLmgKPj4+ICsrKyBiL3NvdW5kL3VzYi9jYXJkLmgKPj4+IEBAIC0xNDksNiArMTQ5 LDcgQEAgc3RydWN0IHNuZF91c2Jfc3Vic3RyZWFtIHsKPj4+IMKgIMKgwqDCoMKgwqAgaW50IGxh c3RfZnJhbWVfbnVtYmVyO8KgwqDCoMKgwqDCoMKgwqDCoCAvKiBzdG9yZWQgZnJhbWUgbnVtYmVy ICovCj4+PiDCoMKgwqDCoMKgIGludCBsYXN0X2RlbGF5O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIHN0b3JlZCBkZWxheSAqLwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgdGltZXNwZWMg bGFzdF91cGRhdGVfdGltZTvCoMKgwqAgLyogdGltZSB3aGVuIGxhc3RfZGVsYXkgd2FzIAo+Pj4g dXBkYXRlZCAqLwo+Pj4gwqAgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIGludCBtYXJrZXI7Cj4+PiBkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3BjbS5jIGIvc291bmQv dXNiL3BjbS5jCj4+PiBpbmRleCAzY2JmYWU2NjA0ZjkuLjZkNDBjYjBiODc3NyAxMDA2NDQKPj4+ IC0tLSBhL3NvdW5kL3VzYi9wY20uYwo+Pj4gKysrIGIvc291bmQvdXNiL3BjbS5jCj4+PiBAQCAt NDYsOSArNDYsOCBAQCBzbmRfcGNtX3VmcmFtZXNfdCBzbmRfdXNiX3BjbV9kZWxheShzdHJ1Y3Qg Cj4+PiBzbmRfdXNiX3N1YnN0cmVhbSAqc3VicywKPj4+IMKgwqDCoMKgwqAgaW50IGN1cnJlbnRf ZnJhbWVfbnVtYmVyOwo+Pj4gwqDCoMKgwqDCoCBpbnQgZnJhbWVfZGlmZjsKPj4+IMKgwqDCoMKg wqAgaW50IGVzdF9kZWxheTsKPj4+IC0KPj4+IC3CoMKgwqAgaWYgKCFzdWJzLT5sYXN0X2RlbGF5 KQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAwOyAvKiBzaG9ydCBwYXRoICovCj4+Cj4+IE5B Sy4gVGhpcyB3YXMgYWRkZWQgb24gcHVycG9zZSBieSA0ODc3OWEwYjhmZmMgKCdBTFNBOiB1c2It YXVkaW86IGZpeCAKPj4gZGVsYXkgYWNjb3VudCBkdXJpbmcgcGF1c2UnKQo+PiBBbmQgc2luY2Ug eW91IGtlcHQgdGhlIGNvZGUgdGhhdCBzZXRzIGxhc3RfZGVsYXkgdGhlcmUgaXMgbm8gcmVhc29u IHRvIAo+PiB0YWtlIHRoaXMgb3V0Lgo+IAo+IE9LLCBJIGRpZCBub3Qga25vdyB0aGF0IHRoaXMg aXMgbmVlZGVkLiBJIHRvb2sgaXQgb3V0IGJlY2F1c2Ugb3RoZXJ3aXNlIAo+IHRoZSBkZWxheQo+ IHJlcG9ydGVkIGZvciBjYXB0dXJlIHdpbGwgYWx3YXlzIGJlIDAuIHJldGlyZV9jYXB0dXJlX3Vy YigpIHNldHMgCj4gbGFzdF9kZWxheSB0byAwLgo+IERvZXMgdGhlIHByb2JsZW0gdGhhdCB3YXMg Zml4ZWQgaW4gdGhlIGNvbW1pdMKgIG9ubHkgYXBwbHkgdG8gcGxheWJhY2sgCj4gc3RyZWFtcz8K PiBUaGVuIEkgY291bGQgY2hhbmdlIHRoZSBpZiBjb25kaXRpb24gYWNjb3JkaW5nbHkuCgpUaGF0 J3MgcHJlY2lzZWx5IHRoZSBpc3N1ZTogdGhlIGNvZGUgd2FzIGNvbnRyaWJ1dGVkIGJ5IG11bHRp cGxlIHBlb3BsZSAKdG8gd29yayBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMuIFdoYXQgcGFydHMgZG8g d2hhdCBleGFjdGx5IGlzIGNvbXBsaWNhdGVkIAp0byByZXZlcnNlLWVuZ2luZWVyLgoKPiAKPiAK Pj4+ICvCoMKgwqAgaW50IHRpbWVfZGlmZjsKPj4+ICvCoMKgwqAgc3RydWN0IHRpbWVzcGVjIG5v dzsKPj4+IMKgIMKgwqDCoMKgwqAgY3VycmVudF9mcmFtZV9udW1iZXIgPSB1c2JfZ2V0X2N1cnJl bnRfZnJhbWVfbnVtYmVyKHN1YnMtPmRldik7Cj4+PiDCoMKgwqDCoMKgIC8qCj4+PiBAQCAtNTgs OSArNTcsMjEgQEAgc25kX3BjbV91ZnJhbWVzX3Qgc25kX3VzYl9wY21fZGVsYXkoc3RydWN0IAo+ Pj4gc25kX3VzYl9zdWJzdHJlYW0gKnN1YnMsCj4+PiDCoMKgwqDCoMKgwqAgKi8KPj4+IMKgwqDC oMKgwqAgZnJhbWVfZGlmZiA9IChjdXJyZW50X2ZyYW1lX251bWJlciAtIHN1YnMtPmxhc3RfZnJh bWVfbnVtYmVyKSAmIAo+Pj4gMHhmZjsKPj4+IMKgIC3CoMKgwqAgLyogQXBwcm94aW1hdGlvbiBi YXNlZCBvbiBudW1iZXIgb2Ygc2FtcGxlcyBwZXIgVVNCIGZyYW1lIChtcyksCj4+PiAtwqDCoMKg wqDCoMKgIHNvbWUgdHJ1bmNhdGlvbiBmb3IgNDQuMSBidXQgdGhlIGVzdGltYXRlIGlzIGdvb2Qg ZW5vdWdoICovCj4+PiAtwqDCoMKgIGVzdF9kZWxheSA9wqAgZnJhbWVfZGlmZiAqIHJhdGUgLyAx MDAwOwo+Pj4gK8KgwqDCoCAvKiBFc3RpbWF0ZSB0aW1lIHNpbmNlIGxhc3QgdXBkYXRlIG9mIGxh c3RfZGVsYXkgKi8KPj4+ICvCoMKgwqAgc25kX3BjbV9nZXR0aW1lKHN1YnMtPnBjbV9zdWJzdHJl YW0tPnJ1bnRpbWUsICZub3cpOwo+Pj4gK8KgwqDCoCB0aW1lX2RpZmYgPSAobm93LnR2X3NlYyAt IHN1YnMtPmxhc3RfdXBkYXRlX3RpbWUudHZfc2VjKSAqIAo+Pj4gMTAwMDAwMDAwMDsKPj4+ICvC oMKgwqAgdGltZV9kaWZmICs9IChpbnQpbm93LnR2X25zZWMgLSBzdWJzLT5sYXN0X3VwZGF0ZV90 aW1lLnR2X25zZWM7Cj4+PiArwqDCoMKgIHRpbWVfZGlmZiAvPSAxMDAwOwo+Pj4gKwo+Pj4gK8Kg wqDCoCBpZiAoYWJzKHRpbWVfZGlmZiAtIGZyYW1lX2RpZmYgKiAxMDAwKSA8IDEwMDApIHsKPj4g dGhhdCdzIGEgMW1zIGVycm9yLCB0aGlzIGlzIHF1aXRlIGhpZ2ggSU1PIHRvIGFzc2VzcyBhIGRp dmVyZ2VuY2UgCj4+IGJldHdlZW4gc3lzdGVtIGFuZCBmcmFtZSBkZWx0YXMKPiAKPiBCZWNhdXNl IHRpbWVfZGlmZiBpcyB1c2VkIHRvIGludGVycG9sYXRlIGJldHdlZW4gZnJhbWVzIGFuZCBmcmFt ZXMgYXJlIAo+IHVwZGF0ZWQgZXZlcnkgbWlsbGlzZWNvbmQsCj4gaXQgaXMgcGVyZmVjdGx5IG5v cm1hbCBpZiB0aW1lX2RpZmYgaXMgZm9yIGV4YW1wbGUgOTAwIG1pY3Jvc2Vjb25kcyAKPiBsYXJn ZXIgdGhhbiBmcmFtZV9kaWZmICogMTAwMC4KPiBPbmx5IHdoZW4gdGhlIGRpZmZlcmVuY2UgaXMg bGFyZ2VyIHRoYW4gMSBtcyB3ZSBjYW4gY29uY2x1ZGUgdGhhdCAKPiBzb21ldGhpbmcgaXMgd3Jv bmcuCj4gVGhhdCBpcyB0aGUgcmVhc29uIHdoeSB0aGUgcGF0Y2ggaW5jcmVhc2VzIHRoZSB3b3Jz dCBjYXNlIGVycm9yIGZyb20gMiAKPiBtcyB0byAzIG1zLgoKWWVhaCwgd2VsbCwgZ2l2ZW4gdGhh dCB0aGUgYWN0dWFsIHBsYXliYWNrIHJhdGUgaXMgbm90IGFsaWduZWQgd2l0aCB0aGUgCmZyYW1l IGNvdW50ZXIgZm9yIGFzeW5jIGludGVyZmFjZXMsIHRoaXMgdGVzdCBpcyBxdWVzdGlvbmFibGUu Cgo+IAo+Pgo+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIFN5c3RlbSB0aW1lIGFuZCBzb3VuZCBjYXJk IHRpbWUgZG8gbm90IGRpZmZlcgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiB0b28gbXVjaC4gVXNl IHN5c3RlbSB0aW1lIHRvIGNhbGN1bGF0ZSBkZWxheSAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVz dF9kZWxheSA9wqAgdGltZV9kaWZmICogcmF0ZSAvIDEwMDAwMDA7Cj4+PiArwqDCoMKgIH0gZWxz ZSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgLyogQXBwcm94aW1hdGlvbiBiYXNlZCBvbiBudW1iZXIg b2Ygc2FtcGxlcyBwZXIgVVNCIGZyYW1lIChtcyksCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg c29tZSB0cnVuY2F0aW9uIGZvciA0NC4xIGJ1dCB0aGUgZXN0aW1hdGUgaXMgZ29vZCBlbm91Z2gg Ki8KPj4+ICvCoMKgwqDCoMKgwqDCoCBlc3RfZGVsYXkgPcKgIGZyYW1lX2RpZmYgKiByYXRlIC8g MTAwMDsKPj4+ICvCoMKgwqAgfQo+Pj4gwqDCoMKgwqDCoCBpZiAoc3Vicy0+ZGlyZWN0aW9uID09 IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZXN0X2Rl bGF5ID0gc3Vicy0+bGFzdF9kZWxheSAtIGVzdF9kZWxheTsKPj4+IMKgwqDCoMKgwqAgZWxzZQo+ Pj4gQEAgLTg1Myw2ICs4NjQsOCBAQCBzdGF0aWMgaW50IHNuZF91c2JfcGNtX3ByZXBhcmUoc3Ry dWN0IAo+Pj4gc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKPj4+IMKgwqDCoMKgwqAgc3Vi cy0+aHdwdHJfZG9uZSA9IDA7Cj4+PiDCoMKgwqDCoMKgIHN1YnMtPnRyYW5zZmVyX2RvbmUgPSAw Owo+Pj4gwqDCoMKgwqDCoCBzdWJzLT5sYXN0X2RlbGF5ID0gMDsKPj4+ICvCoMKgwqAgc3Vicy0+ bGFzdF91cGRhdGVfdGltZS50dl9zZWMgPSAwOwo+Pj4gK8KgwqDCoCBzdWJzLT5sYXN0X3VwZGF0 ZV90aW1lLnR2X25zZWMgPSAwOwo+Pj4gwqDCoMKgwqDCoCBzdWJzLT5sYXN0X2ZyYW1lX251bWJl ciA9IDA7Cj4+PiDCoMKgwqDCoMKgIHJ1bnRpbWUtPmRlbGF5ID0gMDsKPj4+IMKgIEBAIC0xMzM0 LDcgKzEzNDcsOSBAQCBzdGF0aWMgdm9pZCByZXRpcmVfY2FwdHVyZV91cmIoc3RydWN0IAo+Pj4g c25kX3VzYl9zdWJzdHJlYW0gKnN1YnMsCj4+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgLyogcmVh bGlnbiBsYXN0X2ZyYW1lX251bWJlciAqLwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN1YnMtPmxh c3RfZnJhbWVfbnVtYmVyID0gY3VycmVudF9mcmFtZV9udW1iZXI7Cj4+PiAtwqDCoMKgwqDCoMKg wqAgc3Vicy0+bGFzdF9mcmFtZV9udW1iZXIgJj0gMHhGRjsgLyoga2VlcCA4IExTQnMgKi8KPj4K Pj4gWW91IGNhbid0IHJlbW92ZSB0aGlzLCB0aGlzIG1vZGVscyB0aGUgZmFjdCB0aGF0IG9ubHkg OCBiaXRzIGFyZSB2YWxpZCAKPj4gaW4gdGhlIGZyYW1lIGNvdW50ZXIuCj4gCj4gSWYgdGhlIGhp Z2ggb3JkZXIgYml0cyBhcmUgbm90IGFyYml0cmFyeSwgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGJl Y2F1c2UgCj4gdGhlIHZhbHVlIGlzCj4gb25seSB1c2VkIGluIHNuZF91c2JfcGNtX2RlbGF5KCkg YW5kIChhIC0gYikgJiAweGZmID0gKGEgLSBiICYgMHhmZikgJiAKPiAweGZmLiBZb3UgY2FuCj4g cHJvdmUgdGhpcyBieSB3cml0aW5nIGEgYW5kIGIgYXMgYSA9IDI1NiAqIGExICsgYTIgYW5kIGIg PSAyNTYgKiBiMSArIGIyIAo+IHdpdGggYTIKPiBhbmQgYjIgc21hbGxlciB0aGFuIDI1Ni4KCnRo ZSBudW1iZXIgb2YgdmFsaWQgYml0cyB2YXJpZXMgaW4gZGlmZmVyZW50IGNvbnRyb2xsZXJzIHNv IHRoZSBnb2FsIHdhcyAKdG8gYWxpZ24gb24gdGhlIGNvbW1vbiBkZW5vbWluYXRvciAtIDggYml0 cyBvbmx5LgoKPiAKPj4KPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBUYWtlIHRpbWUgc3Rh bXAgZm9yIGRlbGF5IGFjY291bnRpbmcgKi8KPj4+ICvCoMKgwqDCoMKgwqDCoCBzbmRfcGNtX2dl dHRpbWUocnVudGltZSwgJnN1YnMtPmxhc3RfdXBkYXRlX3RpbWUpOwo+Pj4gwqAgwqDCoMKgwqDC oMKgwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN1YnMtPmxvY2ssIGZsYWdzKTsKPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBjb3B5IGEgZGF0YSBjaHVuayAqLwo+Pj4gQEAgLTE1NTAs NyArMTU2NSw5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfcGxheWJhY2tfdXJiKHN0cnVjdCAKPj4+ IHNuZF91c2Jfc3Vic3RyZWFtICpzdWJzLAo+Pj4gwqAgwqDCoMKgwqDCoCAvKiByZWFsaWduIGxh c3RfZnJhbWVfbnVtYmVyICovCj4+PiDCoMKgwqDCoMKgIHN1YnMtPmxhc3RfZnJhbWVfbnVtYmVy ID0gdXNiX2dldF9jdXJyZW50X2ZyYW1lX251bWJlcihzdWJzLT5kZXYpOwo+Pj4gLcKgwqDCoCBz dWJzLT5sYXN0X2ZyYW1lX251bWJlciAmPSAweEZGOyAvKiBrZWVwIDggTFNCcyAqLwo+PiBzYW1l IGhlcmUsIGNhbid0IGRvIHRoaXMKPj4KPj4+ICsKPj4+ICvCoMKgwqAgLyogVGFrZSB0aW1lIHN0 YW1wIGZvciBkZWxheSBhY2NvdW50aW5nICovCj4+PiArwqDCoMKgIHNuZF9wY21fZ2V0dGltZShy dW50aW1lLCAmc3Vicy0+bGFzdF91cGRhdGVfdGltZSk7Cj4+PiDCoCDCoMKgwqDCoMKgIGlmIChz dWJzLT50cmlnZ2VyX3RzdGFtcF9wZW5kaW5nX3VwZGF0ZSkgewo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIC8qIHRoaXMgaXMgdGhlIGZpcnN0IGFjdHVhbCBVUkIgc3VibWl0dGVkLAo+Pj4gQEAgLTE1 OTcsNiArMTYxNCwxMiBAQCBzdGF0aWMgdm9pZCByZXRpcmVfcGxheWJhY2tfdXJiKHN0cnVjdCAK Pj4+IHNuZF91c2Jfc3Vic3RyZWFtICpzdWJzLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN1YnMt Pmxhc3RfZGVsYXkgLT0gcHJvY2Vzc2VkOwo+Pj4gwqDCoMKgwqDCoCBydW50aW1lLT5kZWxheSA9 IHN1YnMtPmxhc3RfZGVsYXk7Cj4+PiDCoCArwqDCoMKgIC8qIHJlYWxpZ24gbGFzdF9mcmFtZV9u dW1iZXIgKi8KPj4+ICvCoMKgwqAgc3Vicy0+bGFzdF9mcmFtZV9udW1iZXIgPSB1c2JfZ2V0X2N1 cnJlbnRfZnJhbWVfbnVtYmVyKHN1YnMtPmRldik7Cj4+Cj4+IG5lZWQgdG8gZmlsdGVyIG9uIDgg Yml0cy4uCj4+PiArCj4+PiArwqDCoMKgIC8qIFRha2UgdGltZSBzdGFtcCBmb3IgZGVsYXkgYWNj b3VudGluZyAqLwo+Pj4gK8KgwqDCoCBzbmRfcGNtX2dldHRpbWUocnVudGltZSwgJnN1YnMtPmxh c3RfdXBkYXRlX3RpbWUpOwo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCAvKgo+Pj4gwqDCoMKgwqDCoMKg ICogUmVwb3J0IHdoZW4gZGVsYXkgZXN0aW1hdGUgaXMgb2ZmIGJ5IG1vcmUgdGhhbiAybXMuCj4+ PiDCoMKgwqDCoMKgwqAgKiBUaGUgZXJyb3Igc2hvdWxkIGJlIGxvd2VyIHRoYW4gMm1zIHNpbmNl IHRoZSBlc3RpbWF0ZSByZWxpZXMKPj4+IEBAIC0xNjA3LDE0ICsxNjMwLDYgQEAgc3RhdGljIHZv aWQgcmV0aXJlX3BsYXliYWNrX3VyYihzdHJ1Y3QgCj4+PiBzbmRfdXNiX3N1YnN0cmVhbSAqc3Vi cywKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJkZWxheTogZXN0aW1hdGVkICVkLCBh Y3R1YWwgJWRcbiIsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlc3RfZGVsYXksIHN1 YnMtPmxhc3RfZGVsYXkpOwo+Pj4gwqAgLcKgwqDCoCBpZiAoIXN1YnMtPnJ1bm5pbmcpIHsKPj4+ IC3CoMKgwqDCoMKgwqDCoCAvKiB1cGRhdGUgbGFzdF9mcmFtZV9udW1iZXIgZm9yIGRlbGF5IGNv dW50aW5nIGhlcmUgc2luY2UKPj4+IC3CoMKgwqDCoMKgwqDCoMKgICogcHJlcGFyZV9wbGF5YmFj a191cmIgd29uJ3QgYmUgY2FsbGVkIGR1cmluZyBwYXVzZQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqAg Ki8KPj4+IC3CoMKgwqDCoMKgwqDCoCBzdWJzLT5sYXN0X2ZyYW1lX251bWJlciA9Cj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1c2JfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyKHN1YnMtPmRl dikgJiAweGZmOwo+Pj4gLcKgwqDCoCB9Cj4+PiAtCj4+IGFuZCB3aHkgaXMgdGhpcyByZW1vdmVk Lgo+IAo+IFRoaXMgaXMgcmVtb3ZlZCBiZWNhdXNlIHRoZSBsYXN0X2ZyYW1lX251bWJlciBpcyBu b3cgYWx3YXlzIHVwZGF0ZWQsCj4gc28gaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCm1ha2Vz IG5vIHNlbnNlIHRvIG1lLgoKPiAKPj4+IMKgwqAgb3V0Ogo+Pj4gwqDCoMKgwqDCoCBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZzdWJzLT5sb2NrLCBmbGFncyk7Cj4+PiDCoCB9Cj4gCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBBbHNhLWRldmVs IG1haWxpbmcgbGlzdAo+IEFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwo+IGh0dHA6Ly9tYWls bWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNhLWRldmVsIG1haWxp bmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fsc2EtZGV2ZWwK