From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAXB9-0002BK-I3 for ath10k@lists.infradead.org; Wed, 18 Sep 2019 10:27:21 +0000 MIME-Version: 1.0 Date: Wed, 18 Sep 2019 18:27:17 +0800 From: Yibo Zhao Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <87pnjyiq7o.fsf@toke.dk> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> <87pnjyiq7o.fsf@toke.dk> Message-ID: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: =?UTF-8?Q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org T24gMjAxOS0wOS0xOCAwNToxMCwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+IFlp Ym8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+IHdyaXRlczoKPiAKPj4gSW4gYSBsb29wIHR4 cXMgZGVxdWV1ZSBzY2VuYXJpbywgaWYgdGhlIGZpcnN0IHR4cSBpbiB0aGUgcmJ0cmVlIGdldHMK Pj4gcmVtb3ZlZCBmcm9tIHJidHJlZSBpbW1lZGlhdGVseSBpbiB0aGUgaWVlZTgwMjExX3JldHVy bl90eHEoKSwgdGhlCj4+IGxvb3Agd2lsbCBicmVhayBzb29uIGluIHRoZSBpZWVlODAyMTFfbmV4 dF90eHEoKSBkdWUgdG8gc2NoZWR1bGVfcG9zCj4+IG5vdCBsZWFkaW5nIHRvIHRoZSBzZWNvbmQg dHhxIGluIHRoZSByYnRyZWUuIFRodXMsIGRlZmVyaW5nIHRoZQo+PiByZW1vdmFsIHJpZ2h0IGJl Zm9yZSB0aGUgZW5kIG9mIHRoaXMgc2NoZWR1bGUgcm91bmQuCj4+IAo+PiBDby1kZXZlbG9wZWQt Ynk6IFlpYm8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+Cj4+IFNpZ25lZC1vZmYtYnk6IFlp Ym8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+Cj4+IFNpZ25lZC1vZmYtYnk6IFRva2UgSMO4 aWxhbmQtSsO4cmdlbnNlbiA8dG9rZUB0b2tlLmRrPgo+IAo+IEkgZGlkbid0IHdyaXRlIHRoaXMg cGF0Y2gsIHNvIHBsZWFzZSBkb24ndCB1c2UgbXkgc2lnbi1vZmYuIEknbGwgYWRkCj4gYWNrIG9y IHJldmlldyB0YWdzIGFzIGFwcHJvcHJpYXRlIGluIHJlcGx5OyBidXQgYSBmZXcgY29tbWVudHMg Zmlyc3Q6Cj4gCj4+IC0tLQo+PiAgaW5jbHVkZS9uZXQvbWFjODAyMTEuaCAgICAgfCAxNiArKysr KysrKysrLS0KPj4gIG5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIHwgIDMgKysrCj4+ICBuZXQv bWFjODAyMTEvbWFpbi5jICAgICAgICB8ICA2ICsrKysrCj4+ICBuZXQvbWFjODAyMTEvdHguYyAg ICAgICAgICB8IDYzIAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tCj4+ICA0IGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUv bmV0L21hYzgwMjExLmgKPj4gaW5kZXggYWMyZWQ4ZS4uYmE1YTM0NSAxMDA2NDQKPj4gLS0tIGEv aW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+PiArKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCj4+ IEBAIC05MjUsNiArOTI1LDggQEAgc3RydWN0IGllZWU4MDIxMV90eF9yYXRlIHsKPj4gCj4+ICAj ZGVmaW5lIElFRUU4MDIxMV9NQVhfVFhfUkVUUlkJCTMxCj4+IAo+PiArI2RlZmluZSBJRUVFODAy MTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMgMTAwCj4+ICsKPj4gIHN0YXRpYyBpbmxp bmUgdm9pZCBpZWVlODAyMTFfcmF0ZV9zZXRfdmh0KHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAK Pj4gKnJhdGUsCj4+ICAJCQkJCSAgdTggbWNzLCB1OCBuc3MpCj4+ICB7Cj4+IEBAIC02MjMyLDcg KzYyMzQsOCBAQCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IAo+ PiBpZWVlODAyMTFfaHcgKmh3LAo+PiAgICogQGFjOiBBQyBudW1iZXIgdG8gcmV0dXJuIHBhY2tl dHMgZnJvbS4KPj4gICAqCj4+ICAgKiBTaG91bGQgb25seSBiZSBjYWxsZWQgYmV0d2VlbiBjYWxs cyB0byAKPj4gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCgpCj4+IC0gKiBhbmQgaWVlZTgw MjExX3R4cV9zY2hlZHVsZV9lbmQoKS4KPj4gKyAqIGFuZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxl X2VuZCgpLiBJZiB0aGUgdHhxIGlzIGVtcHR5LCBpdCB3aWxsIGJlIAo+PiBhZGRlZAo+PiArICog dG8gYSByZW1vdmUgbGlzdCBhbmQgZ2V0IHJlbW92ZWQgbGF0ZXIuCj4+ICAgKiBSZXR1cm5zIHRo ZSBuZXh0IHR4cSBpZiBzdWNjZXNzZnVsLCAlTlVMTCBpZiBubyBxdWV1ZSBpcyBlbGlnaWJsZS4g Cj4+IElmIGEgdHhxCj4+ICAgKiBpcyByZXR1cm5lZCwgaXQgc2hvdWxkIGJlIHJldHVybmVkIHdp dGggaWVlZTgwMjExX3JldHVybl90eHEoKSAKPj4gYWZ0ZXIgdGhlCj4+ICAgKiBkcml2ZXIgaGFz IGZpbmlzaGVkIHNjaGVkdWxpbmcgaXQuCj4+IEBAIC02MjY4LDcgKzYyNzEsOCBAQCB2b2lkIGll ZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IAo+PiBpZWVlODAyMTFfaHcgKmh3LCB1 OCBhYykKPj4gICAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxv Y19odygpCj4+ICAgKiBAYWM6IEFDIG51bWJlciB0byBhY3F1aXJlIGxvY2tzIGZvcgo+PiAgICoK Pj4gLSAqIFJlbGVhc2UgbG9ja3MgcHJldmlvdXNseSBhY3F1aXJlZCBieSBpZWVlODAyMTFfdHhx X3NjaGVkdWxlX2VuZCgpLgo+PiArICogUmVsZWFzZSBsb2NrcyBwcmV2aW91c2x5IGFjcXVpcmVk IGJ5IGllZWU4MDIxMV90eHFfc2NoZWR1bGVfZW5kKCkuIAo+PiBDaGVjawo+PiArICogYW5kIHJl bW92ZSB0aGUgZW1wdHkgdHhxIGZyb20gcmItdHJlZS4KPj4gICAqLwo+PiAgdm9pZCBpZWVlODAy MTFfdHhxX3NjaGVkdWxlX2VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpCj4+ICAJ X19yZWxlYXNlcyh0eHFfbG9jayk7Cj4+IEBAIC02Mjg3LDYgKzYyOTEsMTQgQEAgdm9pZCBpZWVl ODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgCj4+ICpodywgc3RydWN0IGll ZWU4MDIxMV90eHEgKnR4cSkKPj4gIAlfX2FjcXVpcmVzKHR4cV9sb2NrKSBfX3JlbGVhc2VzKHR4 cV9sb2NrKTsKPj4gCj4+ICAvKioKPj4gKyAqIGllZWU4MDIxMV90eHFzX2NoZWNrIC0gQ2hlY2sg dHhxcyB3YWl0aW5nIGZvciByZW1vdmFsCj4+ICsgKgo+PiArICogQHRtcjogcG9pbnRlciBhcyBv YnRhaW5lZCBmcm9tIGxvY2FsCj4+ICsgKgo+PiArICovCj4+ICt2b2lkIGllZWU4MDIxMV90eHFz X2NoZWNrKHN0cnVjdCB0aW1lcl9saXN0ICp0bXIpOwo+PiArCj4+ICsvKioKPj4gICAqIGllZWU4 MDIxMV90eHFfbWF5X3RyYW5zbWl0IC0gY2hlY2sgd2hldGhlciBUWFEgaXMgYWxsb3dlZCB0byAK Pj4gdHJhbnNtaXQKPj4gICAqCj4+ICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sg d2hldGhlciBnaXZlbiB0eHEgaXMgYWxsb3dlZCB0byAKPj4gdHJhbnNtaXQgYnkKPj4gZGlmZiAt LWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIx MV9pLmgKPj4gaW5kZXggYTQ1NTZmOS4uNDlhYTE0M2UgMTAwNjQ0Cj4+IC0tLSBhL25ldC9tYWM4 MDIxMS9pZWVlODAyMTFfaS5oCj4+ICsrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCj4+ IEBAIC04NDcsNiArODQ3LDcgQEAgc3RydWN0IHR4cV9pbmZvIHsKPj4gIAlzdHJ1Y3QgY29kZWxf c3RhdHMgY3N0YXRzOwo+PiAgCXN0cnVjdCBza19idWZmX2hlYWQgZnJhZ3M7Cj4+ICAJc3RydWN0 IHJiX25vZGUgc2NoZWR1bGVfb3JkZXI7Cj4+ICsJc3RydWN0IGxpc3RfaGVhZCBjYW5kaWRhdGU7 Cj4+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gCj4+ICAJLyoga2VlcCBsYXN0ISAqLwo+PiBA QCAtMTE0NSw2ICsxMTQ2LDggQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7Cj4+ICAJdTY0IGFp cnRpbWVfdl90W0lFRUU4MDIxMV9OVU1fQUNTXTsKPj4gIAl1NjQgYWlydGltZV93ZWlnaHRfc3Vt W0lFRUU4MDIxMV9OVU1fQUNTXTsKPj4gCj4+ICsJc3RydWN0IGxpc3RfaGVhZCByZW1vdmVfbGlz dFtJRUVFODAyMTFfTlVNX0FDU107Cj4+ICsJc3RydWN0IHRpbWVyX2xpc3QgcmVtb3ZlX3RpbWVy Owo+PiAgCXUxNiBhaXJ0aW1lX2ZsYWdzOwo+PiAKPj4gIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjEx X29wcyAqb3BzOwo+PiBkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4 MDIxMS9tYWluLmMKPj4gaW5kZXggZTlmZmE4ZS4uNzhmZTI0YSAxMDA2NDQKPj4gLS0tIGEvbmV0 L21hYzgwMjExL21haW4uYwo+PiArKysgYi9uZXQvbWFjODAyMTEvbWFpbi5jCj4+IEBAIC02Njcs MTAgKzY2NywxNSBAQCBzdHJ1Y3QgaWVlZTgwMjExX2h3IAo+PiAqaWVlZTgwMjExX2FsbG9jX2h3 X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLAo+PiAKPj4gIAlmb3IgKGkgPSAwOyBpIDwgSUVFRTgw MjExX05VTV9BQ1M7IGkrKykgewo+PiAgCQlsb2NhbC0+YWN0aXZlX3R4cXNbaV0gPSBSQl9ST09U X0NBQ0hFRDsKPj4gKwkJSU5JVF9MSVNUX0hFQUQoJmxvY2FsLT5yZW1vdmVfbGlzdFtpXSk7Cj4+ ICAJCXNwaW5fbG9ja19pbml0KCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2ldKTsKPj4gIAl9Cj4+ ICAJbG9jYWwtPmFpcnRpbWVfZmxhZ3MgPSBBSVJUSU1FX1VTRV9UWCB8IEFJUlRJTUVfVVNFX1JY Owo+PiAKPj4gKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90aW1lciwgaWVlZTgwMjExX3R4 cXNfY2hlY2ssIDApOwo+PiArCW1vZF90aW1lcigmbG9jYWwtPnJlbW92ZV90aW1lciwKPj4gKwkJ ICBqaWZmaWVzICsgCj4+IG1zZWNzX3RvX2ppZmZpZXMoSUVFRTgwMjExX0FJUlRJTUVfVFhRX1JN X0NIS19JTlRWX0lOX01TKSk7Cj4+ICsKPj4gIAlJTklUX0xJU1RfSEVBRCgmbG9jYWwtPmNoYW5j dHhfbGlzdCk7Cj4+ICAJbXV0ZXhfaW5pdCgmbG9jYWwtPmNoYW5jdHhfbXR4KTsKPj4gCj4+IEBA IC0xMzA1LDYgKzEzMTAsNyBAQCB2b2lkIGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KHN0cnVjdCBp ZWVlODAyMTFfaHcgCj4+ICpodykKPj4gIAl0YXNrbGV0X2tpbGwoJmxvY2FsLT50eF9wZW5kaW5n X3Rhc2tsZXQpOwo+PiAgCXRhc2tsZXRfa2lsbCgmbG9jYWwtPnRhc2tsZXQpOwo+PiAKPj4gKwlk ZWxfdGltZXJfc3luYygmbG9jYWwtPnJlbW92ZV90aW1lcik7Cj4+ICAjaWZkZWYgQ09ORklHX0lO RVQKPj4gIAl1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKCZsb2NhbC0+aWZhX25vdGlmaWVy KTsKPj4gICNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFj ODAyMTEvdHguYwo+PiBpbmRleCBkMDBiYWFhLi40MmNhMDEwIDEwMDY0NAo+PiAtLS0gYS9uZXQv bWFjODAyMTEvdHguYwo+PiArKysgYi9uZXQvbWFjODAyMTEvdHguYwo+PiBAQCAtMTQ1MCw2ICsx NDUwLDcgQEAgdm9pZCBpZWVlODAyMTFfdHhxX2luaXQoc3RydWN0IAo+PiBpZWVlODAyMTFfc3Vi X2lmX2RhdGEgKnNkYXRhLAo+PiAgCWNvZGVsX3N0YXRzX2luaXQoJnR4cWktPmNzdGF0cyk7Cj4+ ICAJX19za2JfcXVldWVfaGVhZF9pbml0KCZ0eHFpLT5mcmFncyk7Cj4+ICAJUkJfQ0xFQVJfTk9E RSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpOwo+PiArCUlOSVRfTElTVF9IRUFEKCZ0eHFpLT5jYW5k aWRhdGUpOwo+PiAKPj4gIAl0eHFpLT50eHEudmlmID0gJnNkYXRhLT52aWY7Cj4+IAo+PiBAQCAt MzcyNCw2ICszNzI1LDkgQEAgdm9pZCBpZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVl ODAyMTFfaHcgCj4+ICpodywKPj4gCj4+ICAJc3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4 cV9sb2NrW2FjXSk7Cj4+IAo+PiArCWlmICghbGlzdF9lbXB0eSgmdHhxaS0+Y2FuZGlkYXRlKSkK Pj4gKwkJbGlzdF9kZWxfaW5pdCgmdHhxaS0+Y2FuZGlkYXRlKTsKPj4gKwo+PiAgCWlmICghUkJf RU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpKQo+PiAgCQlnb3RvIG91dDsKPj4gCj4+ IEBAIC0zNzgzLDYgKzM3ODcsMjAgQEAgc3RhdGljIHZvaWQgX19pZWVlODAyMTFfdW5zY2hlZHVs ZV90eHEoc3RydWN0IAo+PiBpZWVlODAyMTFfaHcgKmh3LAo+PiAgCVJCX0NMRUFSX05PREUoJnR4 cWktPnNjaGVkdWxlX29yZGVyKTsKPj4gIH0KPj4gCj4+ICt2b2lkIGllZWU4MDIxMV9yZW1vdmVf dHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAo+PiArCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4 cSAqdHhxKQo+PiArewo+PiArCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9f bG9jYWwoaHcpOwo+PiArCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IHRvX3R4cV9pbmZvKHR4cSk7 Cj4+ICsKPj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW3R4 cS0+YWNdKTsKPj4gKwo+PiArCWlmICghUkJfRU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3Jk ZXIpKSB7Cj4+ICsJCV9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3LCB0eHEpOwo+PiArCQls aXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOwo+PiArCX0KPj4gK30KPj4gKwo+PiAgdm9p ZCBpZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCj4+ICAJ CQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQo+PiAgCV9fYWNxdWlyZXModHhxX2xv Y2spIF9fcmVsZWFzZXModHhxX2xvY2spCj4+IEBAIC0zNzkwLDcgKzM4MDgsNyBAQCB2b2lkIGll ZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QgCj4+IGllZWU4MDIxMV9odyAqaHcsCj4+ICAJ c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7Cj4+IAo+PiAg CXNwaW5fbG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4+IC0JX19p ZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoaHcsIHR4cSk7Cj4+ICsJaWVlZTgwMjExX3JlbW92ZV90 eHEoaHcsIHR4cSk7Cj4+ICAJc3Bpbl91bmxvY2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tb dHhxLT5hY10pOwo+PiAgfQo+PiAKPj4gQEAgLTM4MDMsMTEgKzM4MjEsNDggQEAgdm9pZCBpZWVl ODAyMTFfcmV0dXJuX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3IAo+PiAqaHcsCj4+ICAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4+IAo+PiAg CWlmICghUkJfRU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpICYmCj4+IC0JICAgIChz a2JfcXVldWVfZW1wdHkoJnR4cWktPmZyYWdzKSAmJiAhdHhxaS0+dGluLmJhY2tsb2dfcGFja2V0 cykpCj4+IC0JCV9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3LCB0eHEpOwo+PiArCQkhdHhx X2hhc19xdWV1ZSgmdHhxaS0+dHhxKSAmJgo+PiArCQlsaXN0X2VtcHR5KCZ0eHFpLT5jYW5kaWRh dGUpKQo+PiArCQlsaXN0X2FkZF90YWlsKCZ0eHFpLT5jYW5kaWRhdGUsICZsb2NhbC0+cmVtb3Zl X2xpc3RbdHhxLT5hY10pOwo+PiArCj4+ICB9Cj4+ICBFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9y ZXR1cm5fdHhxKTsKPj4gCj4+ICt2b2lkIF9faWVlZTgwMjExX2NoZWNrX3R4cXMoc3RydWN0IGll ZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCBhYykKPj4gK3sKPj4gKwlzdHJ1Y3QgdHhxX2luZm8g Kml0ZXIsICp0bXA7Cj4+ICsJc3RydWN0IHN0YV9pbmZvICpzdGE7Cj4+ICsKPj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4+ICsKPj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXRlciwgdG1wLCAmbG9jYWwtPnJlbW92ZV9saXN0W2FjXSwK Pj4gKwkJCQkgY2FuZGlkYXRlKSB7Cj4+ICsJCXN0YSA9IGNvbnRhaW5lcl9vZihpdGVyLT50eHEu c3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7Cj4+ICsKPj4gKwkJaWYgKHR4cV9oYXNfcXVldWUo Jml0ZXItPnR4cSkpCj4+ICsJCQlsaXN0X2RlbF9pbml0KCZpdGVyLT5jYW5kaWRhdGUpOwo+PiAr CQllbHNlCj4+ICsJCQlpZWVlODAyMTFfcmVtb3ZlX3R4cSgmbG9jYWwtPmh3LCAmaXRlci0+dHhx KTsKPj4gKwl9Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaWVlZTgwMjExX3R4cXNfY2hlY2soc3RydWN0 IHRpbWVyX2xpc3QgKnQpCj4+ICt7Cj4+ICsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwg PSBmcm9tX3RpbWVyKGxvY2FsLCB0LCByZW1vdmVfdGltZXIpOwo+PiArCXN0cnVjdCB0eHFfaW5m byAqaXRlciwgKnRtcDsKPj4gKwlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKPj4gKwlpbnQgYWM7Cj4+ ICsKPj4gKwlmb3IgKGFjID0gMDsgYWMgPCBJRUVFODAyMTFfTlVNX0FDUzsgYWMrKykgewo+PiAr CQlzcGluX2xvY2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKPj4gKwkJX19pZWVl ODAyMTFfY2hlY2tfdHhxcyhsb2NhbCwgYWMpOwo+PiArCQlzcGluX3VubG9ja19iaCgmbG9jYWwt PmFjdGl2ZV90eHFfbG9ja1thY10pOwo+PiArCX0KPj4gKwo+PiArCW1vZF90aW1lcigmbG9jYWwt PnJlbW92ZV90aW1lciwKPj4gKwkJICBqaWZmaWVzICsgCj4+IG1zZWNzX3RvX2ppZmZpZXMoSUVF RTgwMjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4+ICt9Cj4gCj4gSSdsbCBh c2sgdGhlIHNhbWUgYXMgSSBkaWQgbGFzdCB0aW1lICh3aGVyZSB5b3UgdG9sZCBtZSB0byBob2xk IG9mZgo+IHVudGlsIHRoaXMgcm91bmQpOgo+IAo+IFdoeSBkbyB5b3UgbmVlZCB0aGUgdGltZXIg YW5kIHRoZSBwZXJpb2RpYyBjaGVjaz8gSWYgVFhRcyBhcmUgYWRkZWQgdG8KPiB0aGUgcmVtb3Zl IGxpc3QgZHVyaW5nIHRoZSBzY2hlZHVsaW5nIHJ1biwgYW5kIF9faWVlZTgwMjExX2NoZWNrX3R4 cXMoKQo+IGlzIHJ1biBmcm9tIHNjaGVkdWxlX2VuZCgpLCBpc24ndCB0aGF0IHN1ZmZpY2llbnQg dG8gY2xlYXIgdGhlIGxpc3Q/CklzIGl0IHBvc3NpYmxlIHRoYXQgYSB0eHEgaXMgbm90IGFkZGVk IHRvIHRoZSByZW1vdmUgbGlzdCBidXQgdGhlbiAKcGFja2V0cyBpbiBpdCBhcmUgZHJvcHBlZCBi eSBmcV9jb2RlbCBhbGdvPyBMaWtlIHRoZSBzdGF0aW9uIGRpc2Nvbm5lY3RzIAp3aXRob3V0IGFu eSBub3RpZmljYXRpb24uCgo+IAo+IC1Ub2tlCgotLSAKWWlibwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYXRoMTBrIG1haWxpbmcgbGlzdAphdGgxMGtA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2F0aDEwawo=