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 1iBEIT-0004ii-KU for ath10k@lists.infradead.org; Fri, 20 Sep 2019 08:29:47 +0000 MIME-Version: 1.0 Date: Fri, 20 Sep 2019 16:29:44 +0800 From: Yibo Zhao Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <87tv98fu6l.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> <87sgothmpy.fsf@toke.dk> <8cdece5c030fd95817fb099021c38613@codeaurora.org> <87tv98fu6l.fsf@toke.dk> Message-ID: <1b4ab006d9b5c88035845aaac193ef48@codeaurora.org> 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-owner@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org T24gMjAxOS0wOS0xOSAxODozNywgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+IFlp Ym8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+IHdyaXRlczoKPiAKPj4gT24gMjAxOS0wOS0x OCAxOToyMywgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+Pj4gWWlibyBaaGFvIDx5 aWJvekBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgo+Pj4gCj4+Pj4gT24gMjAxOS0wOS0xOCAwNTox MCwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+Pj4+PiBZaWJvIFpoYW8gPHlpYm96 QGNvZGVhdXJvcmEub3JnPiB3cml0ZXM6Cj4+Pj4+IAo+Pj4+Pj4gSW4gYSBsb29wIHR4cXMgZGVx dWV1ZSBzY2VuYXJpbywgaWYgdGhlIGZpcnN0IHR4cSBpbiB0aGUgcmJ0cmVlIAo+Pj4+Pj4gZ2V0 cwo+Pj4+Pj4gcmVtb3ZlZCBmcm9tIHJidHJlZSBpbW1lZGlhdGVseSBpbiB0aGUgaWVlZTgwMjEx X3JldHVybl90eHEoKSwgdGhlCj4+Pj4+PiBsb29wIHdpbGwgYnJlYWsgc29vbiBpbiB0aGUgaWVl ZTgwMjExX25leHRfdHhxKCkgZHVlIHRvIAo+Pj4+Pj4gc2NoZWR1bGVfcG9zCj4+Pj4+PiBub3Qg bGVhZGluZyB0byB0aGUgc2Vjb25kIHR4cSBpbiB0aGUgcmJ0cmVlLiBUaHVzLCBkZWZlcmluZyB0 aGUKPj4+Pj4+IHJlbW92YWwgcmlnaHQgYmVmb3JlIHRoZSBlbmQgb2YgdGhpcyBzY2hlZHVsZSBy b3VuZC4KPj4+Pj4+IAo+Pj4+Pj4gQ28tZGV2ZWxvcGVkLWJ5OiBZaWJvIFpoYW8gPHlpYm96QGNv ZGVhdXJvcmEub3JnPgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogWWlibyBaaGFvIDx5aWJvekBjb2Rl YXVyb3JhLm9yZz4KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFRva2UgSMO4aWxhbmQtSsO4cmdlbnNl biA8dG9rZUB0b2tlLmRrPgo+Pj4+PiAKPj4+Pj4gSSBkaWRuJ3Qgd3JpdGUgdGhpcyBwYXRjaCwg c28gcGxlYXNlIGRvbid0IHVzZSBteSBzaWduLW9mZi4gSSdsbCAKPj4+Pj4gYWRkCj4+Pj4+IGFj ayBvciByZXZpZXcgdGFncyBhcyBhcHByb3ByaWF0ZSBpbiByZXBseTsgYnV0IGEgZmV3IGNvbW1l bnRzIAo+Pj4+PiBmaXJzdDoKPj4+Pj4gCj4+Pj4+PiAtLS0KPj4+Pj4+ICBpbmNsdWRlL25ldC9t YWM4MDIxMS5oICAgICB8IDE2ICsrKysrKysrKystLQo+Pj4+Pj4gIG5ldC9tYWM4MDIxMS9pZWVl ODAyMTFfaS5oIHwgIDMgKysrCj4+Pj4+PiAgbmV0L21hYzgwMjExL21haW4uYyAgICAgICAgfCAg NiArKysrKwo+Pj4+Pj4gIG5ldC9tYWM4MDIxMS90eC5jICAgICAgICAgIHwgNjMKPj4+Pj4+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4+Pj4+ICA0IGZp bGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4+Pj4+PiAKPj4+ Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFj ODAyMTEuaAo+Pj4+Pj4gaW5kZXggYWMyZWQ4ZS4uYmE1YTM0NSAxMDA2NDQKPj4+Pj4+IC0tLSBh L2luY2x1ZGUvbmV0L21hYzgwMjExLmgKPj4+Pj4+ICsrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjEx LmgKPj4+Pj4+IEBAIC05MjUsNiArOTI1LDggQEAgc3RydWN0IGllZWU4MDIxMV90eF9yYXRlIHsK Pj4+Pj4+IAo+Pj4+Pj4gICNkZWZpbmUgSUVFRTgwMjExX01BWF9UWF9SRVRSWQkJMzEKPj4+Pj4+ IAo+Pj4+Pj4gKyNkZWZpbmUgSUVFRTgwMjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01T IDEwMAo+Pj4+Pj4gKwo+Pj4+Pj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcmF0ZV9z ZXRfdmh0KHN0cnVjdCAKPj4+Pj4+IGllZWU4MDIxMV90eF9yYXRlCj4+Pj4+PiAqcmF0ZSwKPj4+ Pj4+ICAJCQkJCSAgdTggbWNzLCB1OCBuc3MpCj4+Pj4+PiAgewo+Pj4+Pj4gQEAgLTYyMzIsNyAr NjIzNCw4IEBAIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QKPj4+ Pj4+IGllZWU4MDIxMV9odyAqaHcsCj4+Pj4+PiAgICogQGFjOiBBQyBudW1iZXIgdG8gcmV0dXJu IHBhY2tldHMgZnJvbS4KPj4+Pj4+ICAgKgo+Pj4+Pj4gICAqIFNob3VsZCBvbmx5IGJlIGNhbGxl ZCBiZXR3ZWVuIGNhbGxzIHRvCj4+Pj4+PiBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KCkK Pj4+Pj4+IC0gKiBhbmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4KPj4+Pj4+ICsgKiBh bmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4gSWYgdGhlIHR4cSBpcyBlbXB0eSwgaXQg d2lsbAo+Pj4+Pj4gYmUKPj4+Pj4+IGFkZGVkCj4+Pj4+PiArICogdG8gYSByZW1vdmUgbGlzdCBh bmQgZ2V0IHJlbW92ZWQgbGF0ZXIuCj4+Pj4+PiAgICogUmV0dXJucyB0aGUgbmV4dCB0eHEgaWYg c3VjY2Vzc2Z1bCwgJU5VTEwgaWYgbm8gcXVldWUgaXMKPj4+Pj4+IGVsaWdpYmxlLgo+Pj4+Pj4g SWYgYSB0eHEKPj4+Pj4+ICAgKiBpcyByZXR1cm5lZCwgaXQgc2hvdWxkIGJlIHJldHVybmVkIHdp dGggaWVlZTgwMjExX3JldHVybl90eHEoKQo+Pj4+Pj4gYWZ0ZXIgdGhlCj4+Pj4+PiAgICogZHJp dmVyIGhhcyBmaW5pc2hlZCBzY2hlZHVsaW5nIGl0Lgo+Pj4+Pj4gQEAgLTYyNjgsNyArNjI3MSw4 IEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QKPj4+Pj4+IGllZWU4 MDIxMV9odyAqaHcsIHU4IGFjKQo+Pj4+Pj4gICAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBm cm9tIGllZWU4MDIxMV9hbGxvY19odygpCj4+Pj4+PiAgICogQGFjOiBBQyBudW1iZXIgdG8gYWNx dWlyZSBsb2NrcyBmb3IKPj4+Pj4+ICAgKgo+Pj4+Pj4gLSAqIFJlbGVhc2UgbG9ja3MgcHJldmlv dXNseSBhY3F1aXJlZCBieQo+Pj4+Pj4gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4KPj4+ Pj4+ICsgKiBSZWxlYXNlIGxvY2tzIHByZXZpb3VzbHkgYWNxdWlyZWQgYnkKPj4+Pj4+IGllZWU4 MDIxMV90eHFfc2NoZWR1bGVfZW5kKCkuCj4+Pj4+PiBDaGVjawo+Pj4+Pj4gKyAqIGFuZCByZW1v dmUgdGhlIGVtcHR5IHR4cSBmcm9tIHJiLXRyZWUuCj4+Pj4+PiAgICovCj4+Pj4+PiAgdm9pZCBp ZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMp Cj4+Pj4+PiAgCV9fcmVsZWFzZXModHhxX2xvY2spOwo+Pj4+Pj4gQEAgLTYyODcsNiArNjI5MSwx NCBAQCB2b2lkIGllZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0Cj4+Pj4+PiBpZWVlODAyMTFf aHcKPj4+Pj4+ICpodywgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKPj4+Pj4+ICAJX19hY3F1 aXJlcyh0eHFfbG9jaykgX19yZWxlYXNlcyh0eHFfbG9jayk7Cj4+Pj4+PiAKPj4+Pj4+ICAvKioK Pj4+Pj4+ICsgKiBpZWVlODAyMTFfdHhxc19jaGVjayAtIENoZWNrIHR4cXMgd2FpdGluZyBmb3Ig cmVtb3ZhbAo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogQHRtcjogcG9pbnRlciBhcyBvYnRhaW5lZCBm cm9tIGxvY2FsCj4+Pj4+PiArICoKPj4+Pj4+ICsgKi8KPj4+Pj4+ICt2b2lkIGllZWU4MDIxMV90 eHFzX2NoZWNrKHN0cnVjdCB0aW1lcl9saXN0ICp0bXIpOwo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qKgo+ Pj4+Pj4gICAqIGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0IC0gY2hlY2sgd2hldGhlciBUWFEg aXMgYWxsb3dlZCB0bwo+Pj4+Pj4gdHJhbnNtaXQKPj4+Pj4+ICAgKgo+Pj4+Pj4gICAqIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGdpdmVuIHR4cSBpcyBhbGxvd2VkIHRv Cj4+Pj4+PiB0cmFuc21pdCBieQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVl ODAyMTFfaS5oIAo+Pj4+Pj4gYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAo+Pj4+Pj4gaW5k ZXggYTQ1NTZmOS4uNDlhYTE0M2UgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9uZXQvbWFjODAyMTEvaWVl ZTgwMjExX2kuaAo+Pj4+Pj4gKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKPj4+Pj4+ IEBAIC04NDcsNiArODQ3LDcgQEAgc3RydWN0IHR4cV9pbmZvIHsKPj4+Pj4+ICAJc3RydWN0IGNv ZGVsX3N0YXRzIGNzdGF0czsKPj4+Pj4+ICAJc3RydWN0IHNrX2J1ZmZfaGVhZCBmcmFnczsKPj4+ Pj4+ICAJc3RydWN0IHJiX25vZGUgc2NoZWR1bGVfb3JkZXI7Cj4+Pj4+PiArCXN0cnVjdCBsaXN0 X2hlYWQgY2FuZGlkYXRlOwo+Pj4+Pj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Pj4+Pj4gCj4+ Pj4+PiAgCS8qIGtlZXAgbGFzdCEgKi8KPj4+Pj4+IEBAIC0xMTQ1LDYgKzExNDYsOCBAQCBzdHJ1 Y3QgaWVlZTgwMjExX2xvY2FsIHsKPj4+Pj4+ICAJdTY0IGFpcnRpbWVfdl90W0lFRUU4MDIxMV9O VU1fQUNTXTsKPj4+Pj4+ICAJdTY0IGFpcnRpbWVfd2VpZ2h0X3N1bVtJRUVFODAyMTFfTlVNX0FD U107Cj4+Pj4+PiAKPj4+Pj4+ICsJc3RydWN0IGxpc3RfaGVhZCByZW1vdmVfbGlzdFtJRUVFODAy MTFfTlVNX0FDU107Cj4+Pj4+PiArCXN0cnVjdCB0aW1lcl9saXN0IHJlbW92ZV90aW1lcjsKPj4+ Pj4+ICAJdTE2IGFpcnRpbWVfZmxhZ3M7Cj4+Pj4+PiAKPj4+Pj4+ICAJY29uc3Qgc3RydWN0IGll ZWU4MDIxMV9vcHMgKm9wczsKPj4+Pj4+IGRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWFpbi5j IGIvbmV0L21hYzgwMjExL21haW4uYwo+Pj4+Pj4gaW5kZXggZTlmZmE4ZS4uNzhmZTI0YSAxMDA2 NDQKPj4+Pj4+IC0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKPj4+Pj4+ICsrKyBiL25ldC9tYWM4 MDIxMS9tYWluLmMKPj4+Pj4+IEBAIC02NjcsMTAgKzY2NywxNSBAQCBzdHJ1Y3QgaWVlZTgwMjEx X2h3Cj4+Pj4+PiAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLAo+ Pj4+Pj4gCj4+Pj4+PiAgCWZvciAoaSA9IDA7IGkgPCBJRUVFODAyMTFfTlVNX0FDUzsgaSsrKSB7 Cj4+Pj4+PiAgCQlsb2NhbC0+YWN0aXZlX3R4cXNbaV0gPSBSQl9ST09UX0NBQ0hFRDsKPj4+Pj4+ ICsJCUlOSVRfTElTVF9IRUFEKCZsb2NhbC0+cmVtb3ZlX2xpc3RbaV0pOwo+Pj4+Pj4gIAkJc3Bp bl9sb2NrX2luaXQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbaV0pOwo+Pj4+Pj4gIAl9Cj4+Pj4+ PiAgCWxvY2FsLT5haXJ0aW1lX2ZsYWdzID0gQUlSVElNRV9VU0VfVFggfCBBSVJUSU1FX1VTRV9S WDsKPj4+Pj4+IAo+Pj4+Pj4gKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90aW1lciwgaWVl ZTgwMjExX3R4cXNfY2hlY2ssIDApOwo+Pj4+Pj4gKwltb2RfdGltZXIoJmxvY2FsLT5yZW1vdmVf dGltZXIsCj4+Pj4+PiArCQkgIGppZmZpZXMgKwo+Pj4+Pj4gbXNlY3NfdG9famlmZmllcyhJRUVF ODAyMTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMpKTsKPj4+Pj4+ICsKPj4+Pj4+ICAJ SU5JVF9MSVNUX0hFQUQoJmxvY2FsLT5jaGFuY3R4X2xpc3QpOwo+Pj4+Pj4gIAltdXRleF9pbml0 KCZsb2NhbC0+Y2hhbmN0eF9tdHgpOwo+Pj4+Pj4gCj4+Pj4+PiBAQCAtMTMwNSw2ICsxMzEwLDcg QEAgdm9pZCBpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QKPj4+Pj4+IGllZWU4MDIxMV9o dwo+Pj4+Pj4gKmh3KQo+Pj4+Pj4gIAl0YXNrbGV0X2tpbGwoJmxvY2FsLT50eF9wZW5kaW5nX3Rh c2tsZXQpOwo+Pj4+Pj4gIAl0YXNrbGV0X2tpbGwoJmxvY2FsLT50YXNrbGV0KTsKPj4+Pj4+IAo+ Pj4+Pj4gKwlkZWxfdGltZXJfc3luYygmbG9jYWwtPnJlbW92ZV90aW1lcik7Cj4+Pj4+PiAgI2lm ZGVmIENPTkZJR19JTkVUCj4+Pj4+PiAgCXVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmxv Y2FsLT5pZmFfbm90aWZpZXIpOwo+Pj4+Pj4gICNlbmRpZgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL25l dC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKPj4+Pj4+IGluZGV4IGQwMGJhYWEu LjQyY2EwMTAgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9uZXQvbWFjODAyMTEvdHguYwo+Pj4+Pj4gKysr IGIvbmV0L21hYzgwMjExL3R4LmMKPj4+Pj4+IEBAIC0xNDUwLDYgKzE0NTAsNyBAQCB2b2lkIGll ZWU4MDIxMV90eHFfaW5pdChzdHJ1Y3QKPj4+Pj4+IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2Rh dGEsCj4+Pj4+PiAgCWNvZGVsX3N0YXRzX2luaXQoJnR4cWktPmNzdGF0cyk7Cj4+Pj4+PiAgCV9f c2tiX3F1ZXVlX2hlYWRfaW5pdCgmdHhxaS0+ZnJhZ3MpOwo+Pj4+Pj4gIAlSQl9DTEVBUl9OT0RF KCZ0eHFpLT5zY2hlZHVsZV9vcmRlcik7Cj4+Pj4+PiArCUlOSVRfTElTVF9IRUFEKCZ0eHFpLT5j YW5kaWRhdGUpOwo+Pj4+Pj4gCj4+Pj4+PiAgCXR4cWktPnR4cS52aWYgPSAmc2RhdGEtPnZpZjsK Pj4+Pj4+IAo+Pj4+Pj4gQEAgLTM3MjQsNiArMzcyNSw5IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVk dWxlX3R4cShzdHJ1Y3QKPj4+Pj4+IGllZWU4MDIxMV9odwo+Pj4+Pj4gKmh3LAo+Pj4+Pj4gCj4+ Pj4+PiAgCXNwaW5fbG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10pOwo+Pj4+Pj4g Cj4+Pj4+PiArCWlmICghbGlzdF9lbXB0eSgmdHhxaS0+Y2FuZGlkYXRlKSkKPj4+Pj4+ICsJCWxp c3RfZGVsX2luaXQoJnR4cWktPmNhbmRpZGF0ZSk7Cj4+Pj4+PiArCj4+Pj4+PiAgCWlmICghUkJf RU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpKQo+Pj4+Pj4gIAkJZ290byBvdXQ7Cj4+ Pj4+PiAKPj4+Pj4+IEBAIC0zNzgzLDYgKzM3ODcsMjAgQEAgc3RhdGljIHZvaWQgCj4+Pj4+PiBf X2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QKPj4+Pj4+IGllZWU4MDIxMV9odyAqaHcs Cj4+Pj4+PiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKTsKPj4+Pj4+ICB9 Cj4+Pj4+PiAKPj4+Pj4+ICt2b2lkIGllZWU4MDIxMV9yZW1vdmVfdHhxKHN0cnVjdCBpZWVlODAy MTFfaHcgKmh3LAo+Pj4+Pj4gKwkJCSAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKPj4+Pj4+ ICt7Cj4+Pj4+PiArCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwo aHcpOwo+Pj4+Pj4gKwlzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSB0b190eHFfaW5mbyh0eHEpOwo+ Pj4+Pj4gKwo+Pj4+Pj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZlX3R4cV9s b2NrW3R4cS0+YWNdKTsKPj4+Pj4+ICsKPj4+Pj4+ICsJaWYgKCFSQl9FTVBUWV9OT0RFKCZ0eHFp LT5zY2hlZHVsZV9vcmRlcikpIHsKPj4+Pj4+ICsJCV9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhx KGh3LCB0eHEpOwo+Pj4+Pj4gKwkJbGlzdF9kZWxfaW5pdCgmdHhxaS0+Y2FuZGlkYXRlKTsKPj4+ Pj4+ICsJfQo+Pj4+Pj4gK30KPj4+Pj4+ICsKPj4+Pj4+ICB2b2lkIGllZWU4MDIxMV91bnNjaGVk dWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPj4+Pj4+ICAJCQkgICAgICBzdHJ1Y3Qg aWVlZTgwMjExX3R4cSAqdHhxKQo+Pj4+Pj4gIAlfX2FjcXVpcmVzKHR4cV9sb2NrKSBfX3JlbGVh c2VzKHR4cV9sb2NrKQo+Pj4+Pj4gQEAgLTM3OTAsNyArMzgwOCw3IEBAIHZvaWQgaWVlZTgwMjEx X3Vuc2NoZWR1bGVfdHhxKHN0cnVjdAo+Pj4+Pj4gaWVlZTgwMjExX2h3ICpodywKPj4+Pj4+ICAJ c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7Cj4+Pj4+PiAK Pj4+Pj4+ICAJc3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW3R4cS0+YWNdKTsK Pj4+Pj4+IC0JX19pZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoaHcsIHR4cSk7Cj4+Pj4+PiArCWll ZWU4MDIxMV9yZW1vdmVfdHhxKGh3LCB0eHEpOwo+Pj4+Pj4gIAlzcGluX3VubG9ja19iaCgmbG9j YWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4+Pj4+PiAgfQo+Pj4+Pj4gCj4+Pj4+PiBA QCAtMzgwMywxMSArMzgyMSw0OCBAQCB2b2lkIGllZWU4MDIxMV9yZXR1cm5fdHhxKHN0cnVjdAo+ Pj4+Pj4gaWVlZTgwMjExX2h3Cj4+Pj4+PiAqaHcsCj4+Pj4+PiAgCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbdHhxLT5hY10pOwo+Pj4+Pj4gCj4+Pj4+PiAgCWlm ICghUkJfRU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpICYmCj4+Pj4+PiAtCSAgICAo c2tiX3F1ZXVlX2VtcHR5KCZ0eHFpLT5mcmFncykgJiYgCj4+Pj4+PiAhdHhxaS0+dGluLmJhY2ts b2dfcGFja2V0cykpCj4+Pj4+PiAtCQlfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywgdHhx KTsKPj4+Pj4+ICsJCSF0eHFfaGFzX3F1ZXVlKCZ0eHFpLT50eHEpICYmCj4+Pj4+PiArCQlsaXN0 X2VtcHR5KCZ0eHFpLT5jYW5kaWRhdGUpKQo+Pj4+Pj4gKwkJbGlzdF9hZGRfdGFpbCgmdHhxaS0+ Y2FuZGlkYXRlLCAmbG9jYWwtPnJlbW92ZV9saXN0W3R4cS0+YWNdKTsKPj4+Pj4+ICsKPj4+Pj4+ ICB9Cj4+Pj4+PiAgRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmV0dXJuX3R4cSk7Cj4+Pj4+PiAK Pj4+Pj4+ICt2b2lkIF9faWVlZTgwMjExX2NoZWNrX3R4cXMoc3RydWN0IGllZWU4MDIxMV9sb2Nh bCAqbG9jYWwsIGludCAKPj4+Pj4+IGFjKQo+Pj4+Pj4gK3sKPj4+Pj4+ICsJc3RydWN0IHR4cV9p bmZvICppdGVyLCAqdG1wOwo+Pj4+Pj4gKwlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKPj4+Pj4+ICsK Pj4+Pj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10p Owo+Pj4+Pj4gKwo+Pj4+Pj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXRlciwgdG1wLCAm bG9jYWwtPnJlbW92ZV9saXN0W2FjXSwKPj4+Pj4+ICsJCQkJIGNhbmRpZGF0ZSkgewo+Pj4+Pj4g KwkJc3RhID0gY29udGFpbmVyX29mKGl0ZXItPnR4cS5zdGEsIHN0cnVjdCBzdGFfaW5mbywgc3Rh KTsKPj4+Pj4+ICsKPj4+Pj4+ICsJCWlmICh0eHFfaGFzX3F1ZXVlKCZpdGVyLT50eHEpKQo+Pj4+ Pj4gKwkJCWxpc3RfZGVsX2luaXQoJml0ZXItPmNhbmRpZGF0ZSk7Cj4+Pj4+PiArCQllbHNlCj4+ Pj4+PiArCQkJaWVlZTgwMjExX3JlbW92ZV90eHEoJmxvY2FsLT5odywgJml0ZXItPnR4cSk7Cj4+ Pj4+PiArCX0KPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiArdm9pZCBpZWVlODAyMTFfdHhxc19j aGVjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKPj4+Pj4+ICt7Cj4+Pj4+PiArCXN0cnVjdCBpZWVl ODAyMTFfbG9jYWwgKmxvY2FsID0gZnJvbV90aW1lcihsb2NhbCwgdCwKPj4+Pj4+IHJlbW92ZV90 aW1lcik7Cj4+Pj4+PiArCXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKPj4+Pj4+ICsJc3Ry dWN0IHN0YV9pbmZvICpzdGE7Cj4+Pj4+PiArCWludCBhYzsKPj4+Pj4+ICsKPj4+Pj4+ICsJZm9y IChhYyA9IDA7IGFjIDwgSUVFRTgwMjExX05VTV9BQ1M7IGFjKyspIHsKPj4+Pj4+ICsJCXNwaW5f bG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10pOwo+Pj4+Pj4gKwkJX19pZWVlODAy MTFfY2hlY2tfdHhxcyhsb2NhbCwgYWMpOwo+Pj4+Pj4gKwkJc3Bpbl91bmxvY2tfYmgoJmxvY2Fs LT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKPj4+Pj4+ICsJfQo+Pj4+Pj4gKwo+Pj4+Pj4gKwltb2Rf dGltZXIoJmxvY2FsLT5yZW1vdmVfdGltZXIsCj4+Pj4+PiArCQkgIGppZmZpZXMgKwo+Pj4+Pj4g bXNlY3NfdG9famlmZmllcyhJRUVFODAyMTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMp KTsKPj4+Pj4+ICt9Cj4+Pj4+IAo+Pj4+PiBJJ2xsIGFzayB0aGUgc2FtZSBhcyBJIGRpZCBsYXN0 IHRpbWUgKHdoZXJlIHlvdSB0b2xkIG1lIHRvIGhvbGQgb2ZmCj4+Pj4+IHVudGlsIHRoaXMgcm91 bmQpOgo+Pj4+PiAKPj4+Pj4gV2h5IGRvIHlvdSBuZWVkIHRoZSB0aW1lciBhbmQgdGhlIHBlcmlv ZGljIGNoZWNrPyBJZiBUWFFzIGFyZSBhZGRlZAo+Pj4+PiB0bwo+Pj4+PiB0aGUgcmVtb3ZlIGxp c3QgZHVyaW5nIHRoZSBzY2hlZHVsaW5nIHJ1biwgYW5kCj4+Pj4+IF9faWVlZTgwMjExX2NoZWNr X3R4cXMoKQo+Pj4+PiBpcyBydW4gZnJvbSBzY2hlZHVsZV9lbmQoKSwgaXNuJ3QgdGhhdCBzdWZm aWNpZW50IHRvIGNsZWFyIHRoZSAKPj4+Pj4gbGlzdD8KPj4+PiBJcyBpdCBwb3NzaWJsZSB0aGF0 IGEgdHhxIGlzIG5vdCBhZGRlZCB0byB0aGUgcmVtb3ZlIGxpc3QgYnV0IHRoZW4KPj4+PiBwYWNr ZXRzIGluIGl0IGFyZSBkcm9wcGVkIGJ5IGZxX2NvZGVsIGFsZ28/IExpa2UgdGhlIHN0YXRpb24K Pj4+PiBkaXNjb25uZWN0cwo+Pj4+IHdpdGhvdXQgYW55IG5vdGlmaWNhdGlvbi4KPj4+IAo+Pj4g V2VsbCBhcyBsb25nIGFzIGFsbCB0aGUgb3RoZXIgY2xlYW51cCBwYXRocyBjYWxsIGRpcmVjdGx5 IGludG8KPj4+IF9fdW5zY2hlZHVsZV90eHEoKSwgdGhhdCBzaG91bGQgcmVtb3ZlIHN0YXRpb25z IGZyb20gdGhlIHNjaGVkdWxlciAKPj4+IHdoZW4KPj4+IHRoZXkgZGlzY29ubmVjdCBldGMuCj4+ IFllcywgdGhlIGRpc2Nvbm5lY3Qgc2NlbmFyaW8gaXMgYSBiYWQgZXhhbXBsZS4gTXkgY29uY2Vy biBpcywgc2F5LCB3ZQo+PiBoYXZlIDEwIHN0YXRpb25zIGFuZCBvbmx5IG9uZSBvZiB0aGVtIGlz IGFzc2lnbmVkIGEgdmVyeSBzbWFsbCB3ZWlnaHQKPj4gY29tcGFyZWQgd2l0aCB0aGF0IG9mIG90 aGVycy4gU3VwcG9zZSwgYWZ0ZXIgaXRzIGNoYW5jZSBvZiBUeCwgaXQgaXMKPj4gbW9zdCBsaWtl bHkgdG8gYmUgcGxhY2VkIGluIHRoZSByaWdodG1vc3Qoc3RpbGwgaGFzIHNvbWUgcGFja2V0cyBp biAKPj4gdGhlCj4+IHR4cSkgYW5kIG5vIG1vcmUgaW5jb21pbmcgZGF0YSBmb3IgaXQuIFRoZSBy ZW1haW5pbmcgcGFja2V0cyBpbiB0eHEgCj4+IHdpbGwKPj4gYmUgZHJvcHBlZCBkdWUgdG8gdGlt ZW91dCBhbGdvIGluIGNvZGVsKGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZykgYnV0Cj4+IHRoaXMg ZW1wdHkgdHhxIHdpbGwgc3RheSBvbiB0aGUgcmJ0cmVlIHVudGlsIG90aGVyIHR4cXMgZ2V0IGRy YWluZWQgb3IKPj4gZ2xvYmFsIHZ0IGNhdGNoIHVwIHdpdGggaXRzIHZ0LiBUaGUgc3RheWluZyB0 aW1lIGNvdWxkIGJlIGxvbmcgaWYgCj4+IHdlaWdodAo+PiBpcyBleHRyZW1lbHkgc21hbGwuIFRo ZW4gZG8gd2UgbmVlZCB0aW1lciB0byBjaGVjayBvciBhbnkgb3RoZXIgYmV0dGVyCj4+IHNvbHV0 aW9uPwo+IAo+IEFoLCBJIHNlZSB3aGF0IHlvdSBtZWFuLiBObywgSSBkb24ndCB0aGluayB0aGlz IHdpbGwgYmUgYSBwcm9ibGVtOyB0aGUKPiBzY2VuYXJpbyB5b3UncmUgZGVzY3JpYmluZyB3b3Vs ZCBwbGF5IG91dCBsaWtlIHRoaXM6Cj4gCj4gMS4gU3RhdGlvbiBlbmRzIHRyYW5zbWl0dGluZywg c3RpbGwgaGFzIGEgc2luZ2xlIHBhY2tldCBxdWV1ZWQsIGdldHMKPiAgICBtb3ZlZCB0byB0aGUg ZW5kIG9mIHRoZSByYnRyZWUgKGFuZCBzdGF5cyB0aGVyZSBmb3IgYSB3aGlsZSkuCj4gCj4gMi4g V2hlbiB3ZSBmaW5hbGx5IGdldCB0byB0aGUgcG9pbnQgd2hlcmUgdGhpcyBzdGF0aW9uIGdldHMg YW5vdGhlcgo+ICAgIGNoYW5jZSB0byB0cmFuc21pdCwgdGhlIENvRGVsIGRyb3AgdGltZXIgdHJp Z2dlcnMgYW5kIHRoZSBsYXN0IAo+IHBhY2tldAo+ICAgIGlzIGRyb3BwZWRbMF0uIFRoaXMgbWVh bnMgdGhhdCB0aGUgcXVldWUgd2lsbCBqdXN0IGJlIGVtcHR5Cj4gICAgKGFuZCBpZWVlODAyMTFf dHhfZGVxdWV1ZSgpIHdpbGwgcmV0dXJuIE5VTEwpLgo+IAo+IDMuIEJlY2F1c2UgdGhlIHF1ZXVl IGlzIGVtcHR5LCBpZWVlODAyMTFfcmV0dXJuX3R4cSgpIHdpbGwgbm90IHB1dCBpdAo+ICAgIGJh Y2sgb24gdGhlIHJidHJlZS4KPiAKPiBDcnVjaWFsbHksIGluIDIuIHRoZSBDb0RlbCBhbGdvcml0 aG0gZG9lc24ndCBraWNrIGluIHVudGlsIHRoZSBwb2ludCBvZgo+IHBhY2tldCBkZXF1ZXVlLiBC dXQgZXZlbiBpZiBhbiBlbXB0eSBxdWV1ZSBzdGF5cyBvbiB0aGUgcmJ0cmVlIGZvciBhCj4gd2hp bGUsIHRoZXJlIGlzIG5vIGhhcm0gaW4gdGhhdDogZXZlbnR1YWxseSBpdCB3aWxsIGdldCBpdHMg dHVybiwgaXQKPiB3aWxsIHR1cm4gb3V0IHRvIGJlIGVtcHR5LCBhbmQganVzdCBiZSBza2lwcGVk IG92ZXIuClRoZW4gdGhhdCB3aWxsIGJlIGZpbmUuIFRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9u IG9mIHRoZSBkcm9wcGluZyBwYXJ0IAppbiBDb0RlbCBhbGdvcml0aG0uCj4gCj4gVGhlIGlzc3Vl IHdlIG5lZWQgdG8gYmUgY29uY2VybmVkIGFib3V0IGlzIHRoZSBvcHBvc2l0ZTogSWYgd2UgaGF2 ZSBhCj4gcXVldWUgdGhhdCAqZG9lcyogaGF2ZSBwYWNrZXRzIHF1ZXVlZCwgYnV0IHdoaWNoIGlz ICpub3QqIHNjaGVkdWxlZCBmb3IKPiB0cmFuc21pc3Npb24sIHRoYXQgd2lsbCBzdGFsbCBUWC4K SXMgaXQgYnkgZGVzaWduIHNpbmNlIGl0cyB2dCBpcyBtb3JlIHRoYW4gZ2xvYmFsIHZ0LCByaWdo dD8gVGhlIGxhdHRlbmN5IAptYXkgc29tZWhvdyBnZXQgaW1wYWN0ZWQgdGhvdWdoLgo+IAo+IFsw XSBDb0RlbCBpbiBtb3N0IGNhc2VzIG9ubHkgZHJvcHMgYSBzaW5nbGUgcGFja2V0IGF0IGEgdGlt ZSwgc28gaXQgCj4gd2lsbAo+IG5vdCBjbGVhciBvdXQgYW4gZW50aXJlIHF1ZXVlIHdpdGggbXVs dGlwbGUgcGFja2V0cyBpbiBvbmUgZ28uIEJ1dCB5b3UKPiBhcmUgcmlnaHQgdGhhdCBpdCBjb3Vs ZCBjb25jZWl2YWJseSBkcm9wIHRoZSBsYXN0IHBhY2tldCBpbiBhIHF1ZXVlLgo+IAo+Pj4gV2Ug b25seSBuZWVkIHRvIGRlZmVyIHJlbW92YWwgaW5zaWRlIGEgc2luZ2xlICJzY2hlZHVsaW5nIHJv dW5kIiAKPj4+IChpLmUuLAo+Pj4gYmV0d2VlbiBhIHBhaXIgb2YgaWVlZTgwMjExX3R4cV9zY2hl ZHVsZV9zdGFydC9lbmQuIFNvIGlmIHdlIGp1c3QgCj4+PiB3YWxrCj4+PiB0aGUgcmVtb3ZlIGxp c3QgaW4gc2NoZWR1bGVfZW5kKCkgd2Ugc2hvdWxkIGJlIGVub3VnaCwgbm8/Cj4+PiAKPj4+IEht bSwgb3IgbWF5YmUgYSBzaW1wbGVyIHdheSB0byBmaXggdGhlIG9yaWdpbmFsIGlzc3VlIGlzIGp1 c3QgdG8gaGF2ZQo+Pj4gdW5zY2hlZHVsZV90eHEoKSB1cGRhdGUgdGhlIHNjaGVkdWxlX3Bvcygp IHBvaW50ZXI/Cj4+PiAKPj4+IEkuZS4sIHVuc2NoZWR1bGVfdHhxIGNoZWNrcyBpZiB0aGUgdHhx IGJlaW5nIHJlbW92ZWQgaXMgY3VycmVudGx5IAo+Pj4gYmVpbmcKPj4+IHBvaW50ZWQgdG8gYnkg c2NoZWR1bGVfcG9zW2FjXSwgYW5kIGlmIGl0IGlzLCBpdCB1cGRhdGVzIHNjaGVkdWxlX3Bvcwo+ Pj4gdG8KPj4+IGJlIHRoZSByYl9uZXh0IG9mIHRoZSBjdXJyZW50IHZhbHVlPwo+PiBBY3R1YWxs eSwgaWYgc2NoZWR1bGVfcG9zIGlzIHVwZGF0ZWQgdG8gcmJfbmV4dCBvZiB0aGUgY3VycmVudCB2 YWx1ZSwKPj4gdGhlbiBpbiB0aGUgbmV4dF90eHEoKSB3aGVyZSB3ZSBhcmUgZ29pbmcgdG8gdXNl IHJiX25leHQgYWdhaW4gYW5kCj4+IGZpbmFsbHkgcGljayB0aGUgbmV4dCBub2RlIG9mIHRoZSBu b2RlIHdlIHJlYWxseSB3YW50LiBJcyBpdCBmaW5lIHRvCj4+IHVwZGF0ZSBzY2hlZHVsZV9wb3Mg dG8gTlVMTD8KPiAKPiBIbW0sIHllYWgsIGdvb2QgcG9pbnQuCj4gCj4gSWYgd2UgZG8gZW5kIHVw IHNldHRpbmcgc2NoZWR1bGVfcG9zIHRvIE5VTEwgaW4gdGhlIG1pZGRsZSBvZiBhCj4gc2NoZWR1 bGluZyByb3VuZCwgdGhhdCB3aWxsIG1ha2UgbmV4dF90eHEoKSAic3RhcnQgb3ZlciIsIGFuZCBk byAKPiBhbm90aGVyCj4gbG9vcCB0aHJvdWdoIHRoZSB3aG9sZSB0aGluZy4gSSBndWVzcyB3ZSBt YXkgYmUgYWJsZSBoaXQgYSBjYXNlIHdoZXJlCj4gdGhpbmdzIGNhbiBvc2NpbGxhdGUgYmFjayBh bmQgZm9ydGggYmV0d2VlbiBhZGRpdGlvbiBhbmQgcmVtb3ZhbAo+IHJlc3VsdGluZyBpbiBhbiBp bmZpbml0ZSBsb29wPyBOb3Qgc3VyZSwgYnV0IGF0IGxlYXN0IEkgY2FuJ3Qgc2VlbSB0bwo+IGNv bnZpbmNlIG15c2VsZiB0aGF0IHRoaXMgY2FuJ3QgaGFwcGVuLgoKQXMgdGhlIGxvb3Agb2YgbmV4 dF90eHEgdW5kZXIgbG9jayBwcm90ZWN0aW9uIGFzIGJlbG93LAoKdHhxX3NjaGVkdWxlX3N0YXJ0 KCk7CndoaWxlKHR4cT1uZXh0X3R4cSgpKXsKLi4uCnJldHVybl90eHEodHhxKTsKfQp0eHFfc2No ZWR1bGVfZW5kKCk7CgpJIGRvIG5vdCBzZWUgYW55IGNoYW5jZSBvZiBhZGRpdGlvbiwgbm8/Cklu IGF0aDEwaywgd2Ugd2lsbCB1c3VhbGx5IHB1c2ggcGFja2V0cyBvZiBmaXJzdCB0eHEgYXMgbWFu eSBhcyB3ZSBjYW4gCnVudGlsIGl0IGlzIGRyYWluZWQgYW5kIHRoZW4gbW92ZSB0byB0aGUgbmV4 dCBvbmUuIFNvIGlmIGEgdHhxIGdldHMgCnJlbW92ZWQgaW4gdGhlIHJldHVybl90eHEsIGl0IHNo b3VsZCBhbHdheXMgYmUgdGhlIGxlZnRtb3N0LiBBbmQgZHVyaW5nIAp0aGlzIHBlcmlvZCwgbmVp dGhlciB2dCBvZiBhbnkgc3RhdGlvbiBvciBnbG9iYWwgdnQgY2FuIGJlIHVwZGF0ZWQgZHVlIAp0 byBsb2NrIHByb3RlY3Rpb24uCgo+IAo+IEJ1dCBpbiB0aGF0IGNhc2UsIHdlIGNvdWxkIGZpeCBp dCBieSBqdXN0IGNvbmRpdGlvbmFsbHkgYXNzaWduaW5nIAo+IGVpdGhlcgo+IHJiX25leHQgb3Ig cmJfcHJldiB0byB0aGUgc2NoZWR1bGVfcG9zIGluIHVuc2NoZWR1bGVfdHhxKCk/IEkuZS4sCj4g c29tZXRoaW5nIGxpa2U6Cj4gCj4gbG9jYWwtPnNjaGVkdWxlX3Bvc1thY10gPSByYl9uZXh0KG5v ZGUpID86IHJiX3ByZXYobm9kZSk7CkkgYW0gbm90IHN1cmUgSSBhbSBnZXR0aW5nIHlvdXIgcG9p bnQuIFN0aWxsIGluIG5leHRfdHhxLCAKc2NoZWR1bGVfcG9zW2FjXSB3aWxsIGxlYWQgdXMgdG8g dGhlIG5leHQgbm9kZSBvZiB0aGUgb25lIHdlIHdhbnQuCj4gCj4gLVRva2UKCi0tIApZaWJvCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphdGgxMGsgbWFp bGluZyBsaXN0CmF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vYXRoMTBrCg==