From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-2.mimecast.com ([205.139.110.61] helo=us-smtp-delivery-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAKkF-0007gB-8j for ath10k@lists.infradead.org; Tue, 17 Sep 2019 21:10:45 +0000 Received: by mail-ed1-f71.google.com with SMTP id ca13so2973513edb.10 for ; Tue, 17 Sep 2019 14:10:38 -0700 (PDT) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> Date: Tue, 17 Sep 2019 23:10:35 +0200 Message-ID: <87pnjyiq7o.fsf@toke.dk> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Yibo Zhao , ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org WWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgoKPiBJbiBhIGxvb3AgdHhx cyBkZXF1ZXVlIHNjZW5hcmlvLCBpZiB0aGUgZmlyc3QgdHhxIGluIHRoZSByYnRyZWUgZ2V0cwo+ IHJlbW92ZWQgZnJvbSByYnRyZWUgaW1tZWRpYXRlbHkgaW4gdGhlIGllZWU4MDIxMV9yZXR1cm5f dHhxKCksIHRoZQo+IGxvb3Agd2lsbCBicmVhayBzb29uIGluIHRoZSBpZWVlODAyMTFfbmV4dF90 eHEoKSBkdWUgdG8gc2NoZWR1bGVfcG9zCj4gbm90IGxlYWRpbmcgdG8gdGhlIHNlY29uZCB0eHEg aW4gdGhlIHJidHJlZS4gVGh1cywgZGVmZXJpbmcgdGhlCj4gcmVtb3ZhbCByaWdodCBiZWZvcmUg dGhlIGVuZCBvZiB0aGlzIHNjaGVkdWxlIHJvdW5kLgo+Cj4gQ28tZGV2ZWxvcGVkLWJ5OiBZaWJv IFpoYW8gPHlpYm96QGNvZGVhdXJvcmEub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFlpYm8gWmhhbyA8 eWlib3pAY29kZWF1cm9yYS5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogVG9rZSBIw7hpbGFuZC1Kw7hy Z2Vuc2VuIDx0b2tlQHRva2UuZGs+CgpJIGRpZG4ndCB3cml0ZSB0aGlzIHBhdGNoLCBzbyBwbGVh c2UgZG9uJ3QgdXNlIG15IHNpZ24tb2ZmLiBJJ2xsIGFkZAphY2sgb3IgcmV2aWV3IHRhZ3MgYXMg YXBwcm9wcmlhdGUgaW4gcmVwbHk7IGJ1dCBhIGZldyBjb21tZW50cyBmaXJzdDoKCj4gLS0tCj4g IGluY2x1ZGUvbmV0L21hYzgwMjExLmggICAgIHwgMTYgKysrKysrKysrKy0tCj4gIG5ldC9tYWM4 MDIxMS9pZWVlODAyMTFfaS5oIHwgIDMgKysrCj4gIG5ldC9tYWM4MDIxMS9tYWluLmMgICAgICAg IHwgIDYgKysrKysKPiAgbmV0L21hYzgwMjExL3R4LmMgICAgICAgICAgfCA2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwg ODMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+IGluZGV4IGFjMmVkOGUu LmJhNWEzNDUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+ICsrKyBiL2lu Y2x1ZGUvbmV0L21hYzgwMjExLmgKPiBAQCAtOTI1LDYgKzkyNSw4IEBAIHN0cnVjdCBpZWVlODAy MTFfdHhfcmF0ZSB7Cj4gIAo+ICAjZGVmaW5lIElFRUU4MDIxMV9NQVhfVFhfUkVUUlkJCTMxCj4g IAo+ICsjZGVmaW5lIElFRUU4MDIxMV9BSVJUSU1FX1RYUV9STV9DSEtfSU5UVl9JTl9NUyAxMDAK PiArCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcmF0ZV9zZXRfdmh0KHN0cnVjdCBp ZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSwKPiAgCQkJCQkgIHU4IG1jcywgdTggbnNzKQo+ICB7Cj4g QEAgLTYyMzIsNyArNjIzNCw4IEBAIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1 ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAgICogQGFjOiBBQyBudW1iZXIgdG8gcmV0dXJu IHBhY2tldHMgZnJvbS4KPiAgICoKPiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJldHdlZW4g Y2FsbHMgdG8gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCgpCj4gLSAqIGFuZCBpZWVlODAy MTFfdHhxX3NjaGVkdWxlX2VuZCgpLgo+ICsgKiBhbmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9l bmQoKS4gSWYgdGhlIHR4cSBpcyBlbXB0eSwgaXQgd2lsbCBiZSBhZGRlZAo+ICsgKiB0byBhIHJl bW92ZSBsaXN0IGFuZCBnZXQgcmVtb3ZlZCBsYXRlci4KPiAgICogUmV0dXJucyB0aGUgbmV4dCB0 eHEgaWYgc3VjY2Vzc2Z1bCwgJU5VTEwgaWYgbm8gcXVldWUgaXMgZWxpZ2libGUuIElmIGEgdHhx Cj4gICAqIGlzIHJldHVybmVkLCBpdCBzaG91bGQgYmUgcmV0dXJuZWQgd2l0aCBpZWVlODAyMTFf cmV0dXJuX3R4cSgpIGFmdGVyIHRoZQo+ICAgKiBkcml2ZXIgaGFzIGZpbmlzaGVkIHNjaGVkdWxp bmcgaXQuCj4gQEAgLTYyNjgsNyArNjI3MSw4IEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVs ZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpCj4gICAqIEBodzogcG9pbnRl ciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpCj4gICAqIEBhYzogQUMgbnVt YmVyIHRvIGFjcXVpcmUgbG9ja3MgZm9yCj4gICAqCj4gLSAqIFJlbGVhc2UgbG9ja3MgcHJldmlv dXNseSBhY3F1aXJlZCBieSBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZCgpLgo+ICsgKiBSZWxl YXNlIGxvY2tzIHByZXZpb3VzbHkgYWNxdWlyZWQgYnkgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9l bmQoKS4gQ2hlY2sKPiArICogYW5kIHJlbW92ZSB0aGUgZW1wdHkgdHhxIGZyb20gcmItdHJlZS4K PiAgICovCj4gIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoc3RydWN0IGllZWU4MDIx MV9odyAqaHcsIHU4IGFjKQo+ICAJX19yZWxlYXNlcyh0eHFfbG9jayk7Cj4gQEAgLTYyODcsNiAr NjI5MSwxNCBAQCB2b2lkIGllZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCj4gIAlfX2FjcXVpcmVzKHR4cV9sb2Nr KSBfX3JlbGVhc2VzKHR4cV9sb2NrKTsKPiAgCj4gIC8qKgo+ICsgKiBpZWVlODAyMTFfdHhxc19j aGVjayAtIENoZWNrIHR4cXMgd2FpdGluZyBmb3IgcmVtb3ZhbAo+ICsgKgo+ICsgKiBAdG1yOiBw b2ludGVyIGFzIG9idGFpbmVkIGZyb20gbG9jYWwKPiArICoKPiArICovCj4gK3ZvaWQgaWVlZTgw MjExX3R4cXNfY2hlY2soc3RydWN0IHRpbWVyX2xpc3QgKnRtcik7Cj4gKwo+ICsvKioKPiAgICog aWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQgLSBjaGVjayB3aGV0aGVyIFRYUSBpcyBhbGxvd2Vk IHRvIHRyYW5zbWl0Cj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB3 aGV0aGVyIGdpdmVuIHR4cSBpcyBhbGxvd2VkIHRvIHRyYW5zbWl0IGJ5Cj4gZGlmZiAtLWdpdCBh L25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgK PiBpbmRleCBhNDU1NmY5Li40OWFhMTQzZSAxMDA2NDQKPiAtLS0gYS9uZXQvbWFjODAyMTEvaWVl ZTgwMjExX2kuaAo+ICsrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCj4gQEAgLTg0Nyw2 ICs4NDcsNyBAQCBzdHJ1Y3QgdHhxX2luZm8gewo+ICAJc3RydWN0IGNvZGVsX3N0YXRzIGNzdGF0 czsKPiAgCXN0cnVjdCBza19idWZmX2hlYWQgZnJhZ3M7Cj4gIAlzdHJ1Y3QgcmJfbm9kZSBzY2hl ZHVsZV9vcmRlcjsKPiArCXN0cnVjdCBsaXN0X2hlYWQgY2FuZGlkYXRlOwo+ICAJdW5zaWduZWQg bG9uZyBmbGFnczsKPiAgCj4gIAkvKiBrZWVwIGxhc3QhICovCj4gQEAgLTExNDUsNiArMTE0Niw4 IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgewo+ICAJdTY0IGFpcnRpbWVfdl90W0lFRUU4MDIx MV9OVU1fQUNTXTsKPiAgCXU2NCBhaXJ0aW1lX3dlaWdodF9zdW1bSUVFRTgwMjExX05VTV9BQ1Nd Owo+ICAKPiArCXN0cnVjdCBsaXN0X2hlYWQgcmVtb3ZlX2xpc3RbSUVFRTgwMjExX05VTV9BQ1Nd Owo+ICsJc3RydWN0IHRpbWVyX2xpc3QgcmVtb3ZlX3RpbWVyOwo+ICAJdTE2IGFpcnRpbWVfZmxh Z3M7Cj4gIAo+ICAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wczsKPiBkaWZmIC0tZ2l0 IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmMKPiBpbmRleCBlOWZm YThlLi43OGZlMjRhIDEwMDY0NAo+IC0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKPiArKysgYi9u ZXQvbWFjODAyMTEvbWFpbi5jCj4gQEAgLTY2NywxMCArNjY3LDE1IEBAIHN0cnVjdCBpZWVlODAy MTFfaHcgKmllZWU4MDIxMV9hbGxvY19od19ubShzaXplX3QgcHJpdl9kYXRhX2xlbiwKPiAgCj4g IAlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjExX05VTV9BQ1M7IGkrKykgewo+ICAJCWxvY2FsLT5h Y3RpdmVfdHhxc1tpXSA9IFJCX1JPT1RfQ0FDSEVEOwo+ICsJCUlOSVRfTElTVF9IRUFEKCZsb2Nh bC0+cmVtb3ZlX2xpc3RbaV0pOwo+ICAJCXNwaW5fbG9ja19pbml0KCZsb2NhbC0+YWN0aXZlX3R4 cV9sb2NrW2ldKTsKPiAgCX0KPiAgCWxvY2FsLT5haXJ0aW1lX2ZsYWdzID0gQUlSVElNRV9VU0Vf VFggfCBBSVJUSU1FX1VTRV9SWDsKPiAgCj4gKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90 aW1lciwgaWVlZTgwMjExX3R4cXNfY2hlY2ssIDApOwo+ICsJbW9kX3RpbWVyKCZsb2NhbC0+cmVt b3ZlX3RpbWVyLAo+ICsJCSAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSUVFRTgwMjExX0FJ UlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4gKwo+ICAJSU5JVF9MSVNUX0hFQUQoJmxv Y2FsLT5jaGFuY3R4X2xpc3QpOwo+ICAJbXV0ZXhfaW5pdCgmbG9jYWwtPmNoYW5jdHhfbXR4KTsK PiAgCj4gQEAgLTEzMDUsNiArMTMxMCw3IEBAIHZvaWQgaWVlZTgwMjExX3VucmVnaXN0ZXJfaHco c3RydWN0IGllZWU4MDIxMV9odyAqaHcpCj4gIAl0YXNrbGV0X2tpbGwoJmxvY2FsLT50eF9wZW5k aW5nX3Rhc2tsZXQpOwo+ICAJdGFza2xldF9raWxsKCZsb2NhbC0+dGFza2xldCk7Cj4gIAo+ICsJ ZGVsX3RpbWVyX3N5bmMoJmxvY2FsLT5yZW1vdmVfdGltZXIpOwo+ICAjaWZkZWYgQ09ORklHX0lO RVQKPiAgCXVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmxvY2FsLT5pZmFfbm90aWZpZXIp Owo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAy MTEvdHguYwo+IGluZGV4IGQwMGJhYWEuLjQyY2EwMTAgMTAwNjQ0Cj4gLS0tIGEvbmV0L21hYzgw MjExL3R4LmMKPiArKysgYi9uZXQvbWFjODAyMTEvdHguYwo+IEBAIC0xNDUwLDYgKzE0NTAsNyBA QCB2b2lkIGllZWU4MDIxMV90eHFfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpz ZGF0YSwKPiAgCWNvZGVsX3N0YXRzX2luaXQoJnR4cWktPmNzdGF0cyk7Cj4gIAlfX3NrYl9xdWV1 ZV9oZWFkX2luaXQoJnR4cWktPmZyYWdzKTsKPiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVk dWxlX29yZGVyKTsKPiArCUlOSVRfTElTVF9IRUFEKCZ0eHFpLT5jYW5kaWRhdGUpOwo+ICAKPiAg CXR4cWktPnR4cS52aWYgPSAmc2RhdGEtPnZpZjsKPiAgCj4gQEAgLTM3MjQsNiArMzcyNSw5IEBA IHZvaWQgaWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAg Cj4gIAlzcGluX2xvY2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKPiAgCj4gKwlp ZiAoIWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4gKwkJbGlzdF9kZWxfaW5pdCgmdHhx aS0+Y2FuZGlkYXRlKTsKPiArCj4gIAlpZiAoIVJCX0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxl X29yZGVyKSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gQEAgLTM3ODMsNiArMzc4NywyMCBAQCBzdGF0 aWMgdm9pZCBfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywKPiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKTsKPiAgfQo+ICAKPiAr dm9pZCBpZWVlODAyMTFfcmVtb3ZlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiArCQkJ ICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQo+ICt7Cj4gKwlzdHJ1Y3QgaWVlZTgwMjExX2xv Y2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKPiArCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9 IHRvX3R4cV9pbmZvKHR4cSk7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFj dGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4gKwo+ICsJaWYgKCFSQl9FTVBUWV9OT0RFKCZ0eHFp LT5zY2hlZHVsZV9vcmRlcikpIHsKPiArCQlfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywg dHhxKTsKPiArCQlsaXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOwo+ICsJfQo+ICt9Cj4g Kwo+ICB2b2lkIGllZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywKPiAgCQkJICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKPiAgCV9fYWNxdWlyZXMo dHhxX2xvY2spIF9fcmVsZWFzZXModHhxX2xvY2spCj4gQEAgLTM3OTAsNyArMzgwOCw3IEBAIHZv aWQgaWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAo+ICAJ c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7Cj4gIAo+ICAJ c3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW3R4cS0+YWNdKTsKPiAtCV9faWVl ZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3LCB0eHEpOwo+ICsJaWVlZTgwMjExX3JlbW92ZV90eHEo aHcsIHR4cSk7Cj4gIAlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEt PmFjXSk7Cj4gIH0KPiAgCj4gQEAgLTM4MDMsMTEgKzM4MjEsNDggQEAgdm9pZCBpZWVlODAyMTFf cmV0dXJuX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPiAgCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbdHhxLT5hY10pOwo+ICAKPiAgCWlmICghUkJfRU1Q VFlfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpICYmCj4gLQkgICAgKHNrYl9xdWV1ZV9lbXB0 eSgmdHhxaS0+ZnJhZ3MpICYmICF0eHFpLT50aW4uYmFja2xvZ19wYWNrZXRzKSkKPiAtCQlfX2ll ZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywgdHhxKTsKPiArCQkhdHhxX2hhc19xdWV1ZSgmdHhx aS0+dHhxKSAmJgo+ICsJCWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4gKwkJbGlzdF9h ZGRfdGFpbCgmdHhxaS0+Y2FuZGlkYXRlLCAmbG9jYWwtPnJlbW92ZV9saXN0W3R4cS0+YWNdKTsK PiArCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmV0dXJuX3R4cSk7Cj4gIAo+ICt2 b2lkIF9faWVlZTgwMjExX2NoZWNrX3R4cXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWws IGludCBhYykKPiArewo+ICsJc3RydWN0IHR4cV9pbmZvICppdGVyLCAqdG1wOwo+ICsJc3RydWN0 IHN0YV9pbmZvICpzdGE7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2 ZV90eHFfbG9ja1thY10pOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVyLCB0 bXAsICZsb2NhbC0+cmVtb3ZlX2xpc3RbYWNdLAo+ICsJCQkJIGNhbmRpZGF0ZSkgewo+ICsJCXN0 YSA9IGNvbnRhaW5lcl9vZihpdGVyLT50eHEuc3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7Cj4g Kwo+ICsJCWlmICh0eHFfaGFzX3F1ZXVlKCZpdGVyLT50eHEpKQo+ICsJCQlsaXN0X2RlbF9pbml0 KCZpdGVyLT5jYW5kaWRhdGUpOwo+ICsJCWVsc2UKPiArCQkJaWVlZTgwMjExX3JlbW92ZV90eHEo JmxvY2FsLT5odywgJml0ZXItPnR4cSk7Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgaWVlZTgwMjEx X3R4cXNfY2hlY2soc3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gK3sKPiArCXN0cnVjdCBpZWVlODAy MTFfbG9jYWwgKmxvY2FsID0gZnJvbV90aW1lcihsb2NhbCwgdCwgcmVtb3ZlX3RpbWVyKTsKPiAr CXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKPiArCXN0cnVjdCBzdGFfaW5mbyAqc3RhOwo+ ICsJaW50IGFjOwo+ICsKPiArCWZvciAoYWMgPSAwOyBhYyA8IElFRUU4MDIxMV9OVU1fQUNTOyBh YysrKSB7Cj4gKwkJc3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4g KwkJX19pZWVlODAyMTFfY2hlY2tfdHhxcyhsb2NhbCwgYWMpOwo+ICsJCXNwaW5fdW5sb2NrX2Jo KCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4gKwl9Cj4gKwo+ICsJbW9kX3RpbWVyKCZs b2NhbC0+cmVtb3ZlX3RpbWVyLAo+ICsJCSAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSUVF RTgwMjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4gK30KCkknbGwgYXNrIHRo ZSBzYW1lIGFzIEkgZGlkIGxhc3QgdGltZSAod2hlcmUgeW91IHRvbGQgbWUgdG8gaG9sZCBvZmYK dW50aWwgdGhpcyByb3VuZCk6CgpXaHkgZG8geW91IG5lZWQgdGhlIHRpbWVyIGFuZCB0aGUgcGVy aW9kaWMgY2hlY2s/IElmIFRYUXMgYXJlIGFkZGVkIHRvCnRoZSByZW1vdmUgbGlzdCBkdXJpbmcg dGhlIHNjaGVkdWxpbmcgcnVuLCBhbmQgX19pZWVlODAyMTFfY2hlY2tfdHhxcygpCmlzIHJ1biBm cm9tIHNjaGVkdWxlX2VuZCgpLCBpc24ndCB0aGF0IHN1ZmZpY2llbnQgdG8gY2xlYXIgdGhlIGxp c3Q/CgotVG9rZQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmF0aDEwayBtYWlsaW5nIGxpc3QKYXRoMTBrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9hdGgxMGsK