From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH] [RFC] kernel/cpu: Use lockref for online CPU reference counting Date: Thu, 18 Feb 2016 12:54:11 +0200 Message-ID: <1455792851.9851.36.camel@linux.intel.com> References: <1455539803-13913-1-git-send-email-joonas.lahtinen@linux.intel.com> <20160215141755.GG6357@twins.programming.kicks-ass.net> <20160215170618.GL6375@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id B85E46E1F0 for ; Thu, 18 Feb 2016 10:54:11 +0000 (UTC) In-Reply-To: <20160215170618.GL6375@twins.programming.kicks-ass.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter Zijlstra , Oleg Nesterov Cc: "Gautham R. Shenoy" , Intel graphics driver community testing & development , Linux kernel development , David Hildenbrand , "Paul E. McKenney" , Ingo Molnar List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiBtYSwgMjAxNi0wMi0xNSBhdCAxODowNiArMDEwMCwgUGV0ZXIgWmlqbHN0cmEgd3Jv dGU6Cj4gT24gTW9uLCBGZWIgMTUsIDIwMTYgYXQgMDM6MTc6NTVQTSArMDEwMCwgUGV0ZXIgWmlq bHN0cmEgd3JvdGU6Cj4gPiBPbiBNb24sIEZlYiAxNSwgMjAxNiBhdCAwMjozNjo0M1BNICswMjAw LCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gPiA+IEluc3RlYWQgb2YgaW1wbGVtZW50aW5nIGEg Y3VzdG9tIGxvY2tlZCByZWZlcmVuY2UgY291bnRpbmcsIHVzZSBsb2NrcmVmLgo+ID4gPiAKPiA+ ID4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBsZWFkcyB0byBhIGRlYWRsb2NrIHNwbGF0IG9uIElu dGVsIFNLTCBwbGF0Zm9ybXMKPiA+ID4gd2hlbiBsb2NrZGVwIGRlYnVnZ2luZyBpcyBlbmFibGVk Lgo+ID4gPiAKPiA+ID4gVGhpcyBpcyBkdWUgdG8gZmV3IG9mIENQVWZyZXEgZHJpdmVycyAoaW5j bHVkaW5nIEludGVsIFAtc3RhdGUpIGhhdmluZyB0aGlzOwo+ID4gPiBwb2xpY3ktPnJ3c2VtIGlz IGxvY2tlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgZnVuY3Rpb25zIGNh bGxlZAo+ID4gPiBkdXJpbmcgaW5pdCB0aGF0IGFjdHVhbGx5IGFwcGx5IENQVSBsaW1pdHMgdXNl IGdldF9vbmxpbmVfY3B1cyAoYmVjYXVzZSB0aGV5Cj4gPiA+IGhhdmUgb3RoZXIgY2FsbGluZyBw YXRocyB0b28pLCB3aGljaCB3aWxsIGJyaWVmbHkgbG9jayBjcHVfaG90cGx1Zy5sb2NrIHRvCj4g PiA+IGluY3JlYXNlIGNwdV9ob3RwbHVnLnJlZmNvdW50Lgo+ID4gPiAKPiA+ID4gT24gbGF0ZXIg Y2FsbGluZyBwYXRoLCB3aGVuIGRvaW5nIGEgc3VzcGVuZCwgd2hlbiBjcHVfaG90cGx1Z19iZWdp bigpIGlzIGNhbGxlZAo+ID4gPiBpbiBkaXNhYmxlX25vbmJvb3RfY3B1cygpLCBjYWxsYmFja3Mg dG8gQ1BVZnJlcSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCBhZnRlciwKPiA+ID4gd2hpY2ggd2lsbCBs b2NrIHBvbGljeS0+cndzZW0gYW5kIGNwdV9ob3RwbHVnLmxvY2sgaXMgYWxyZWFkeSBoZWxkIGJ5 Cj4gPiA+IGNwdV9ob3RwbHVnX2JlZ2luKCkgYW5kIHdlIGRvIGhhdmUgYSBwb3RlbnRpYWwgZGVh ZGxvY2sgc2NlbmFyaW8gcmVwb3J0ZWQgYnkKPiA+ID4gb3VyIENJIHN5c3RlbSAodGhvdWdoIGl0 IGlzIGEgdmVyeSB1bmxpa2VseSBvbmUpLiBTZWUgdGhlIEJ1Z3ppbGxhIGxpbmsgZm9yIG1vcmUK PiA+ID4gZGV0YWlscy4KPiA+IAo+ID4gSSd2ZSBiZWVuIG1lYW5pbmcgdG8gY2hhbmdlIHRoZSB0 aGluZyBpbnRvIGEgcGVyY3B1LXJ3c2VtLCBJIGp1c3QKPiA+IGhhdmVuJ3QgaGFkIHRpbWUgdG8g bG9vayBpbnRvIHRoZSBsb2NrZGVwIHNwbGF0IHRoYXQgZ2VuZXJhdGVkLgo+IAo+IAo+IFRoZSBi ZWxvdyBoYXMgcGxlbnR5IGxvY2tkZXAgaXNzdWVzIGJlY2F1c2UgcGVyY3B1LXJ3c2VtIGlzCj4g cmVhZGVyLXdyaXRlciBmYWlyIChsaWtlIHRoZSByZWd1bGFyIHJ3c2VtKSwgc28gaXQgZG9lcyB0 aHJvdyB1cCBhIGZhaXIKPiBudW1iZXIgb2YgdmVyeSBpY2t5IGlzc3Vlcy4KPiAKPiBJZiBhdCBh bGwgcG9zc2libGUsIEknZCByZWFsbHkgcmF0aGVyIGZpeCB0aG9zZSBhbmQgaGF2ZSBhICdzYW5l cicKPiBob3RwbHVnIGxvY2ssIHJhdGhlciB0aGFuIG11ZGRsZSBvbiB3aXRoIG9wZW4tY29kZWQg aG9ycm9yIGxvY2sgd2UgaGF2ZQo+IG5vdy4KPiAKCkkgZG8gc3RpbGwgYWdyZWUgdGhlIGJlbG93 IHdvdWxkIGJlIGEgd29ydGh5IGNoYW5nZSB0byBwcm9jZWVkIHdpdGguCgpDQydkIE9sZWcgaGVy ZSB0b28gdG8gZ2l2ZSBhIGNvbW1lbnQuCgpSZWdhcmRzLCBKb29uYXMKCj4gCj4gLS0tIGEvaW5j bHVkZS9saW51eC9jcHUuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvY3B1LmgKPiBAQCAtMjI1LDYg KzIyNSw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgY3B1X3N1YnN5czsKPiDCoCNpZmRlZiBD T05GSUdfSE9UUExVR19DUFUKPiDCoC8qIFN0b3AgQ1BVcyBnb2luZyB1cCBhbmQgZG93bi4gKi8K PiDCoAo+ICtleHRlcm4gdm9pZCBjcHVfaG90cGx1Z19pbml0X3Rhc2soc3RydWN0IHRhc2tfc3Ry dWN0ICpwKTsKPiArCj4gwqBleHRlcm4gdm9pZCBjcHVfaG90cGx1Z19iZWdpbih2b2lkKTsKPiDC oGV4dGVybiB2b2lkIGNwdV9ob3RwbHVnX2RvbmUodm9pZCk7Cj4gwqBleHRlcm4gdm9pZCBnZXRf b25saW5lX2NwdXModm9pZCk7Cj4gQEAgLTI0Miw2ICsyNDQsOCBAQCBpbnQgY3B1X2Rvd24odW5z aWduZWQgaW50IGNwdSk7Cj4gwqAKPiDCoCNlbHNlCQkvKiBDT05GSUdfSE9UUExVR19DUFUgKi8K PiDCoAo+ICtzdGF0aWMgaW5saW5lIHZvaWQgY3B1X2hvdHBsdWdfaW5pdF90YXNrKHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCkge30KPiArCj4gwqBzdGF0aWMgaW5saW5lIHZvaWQgY3B1X2hvdHBsdWdf YmVnaW4odm9pZCkge30KPiDCoHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaG90cGx1Z19kb25lKHZv aWQpIHt9Cj4gwqAjZGVmaW5lIGdldF9vbmxpbmVfY3B1cygpCWRvIHsgfSB3aGlsZSAoMCkKPiAt LS0gYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yd3NlbS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9w ZXJjcHUtcndzZW0uaAo+IEBAIC0xNiw2ICsxNiwxNSBAQCBzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSB7Cj4gwqAJd2FpdF9xdWV1ZV9oZWFkX3QJd3JpdGVfd2FpdHE7Cj4gwqB9Owo+IMKgCj4g KyNkZWZpbmUgREVGSU5FX1NUQVRJQ19QRVJDUFVfUldTRU0obmFtZSkJCQkJXAo+ICtzdGF0aWMg REVGSU5FX1BFUl9DUFUodW5zaWduZWQgaW50LCBfX3BlcmNwdV9yd3NlbV9mcmNfIyNuYW1lKTsJ XAo+ICtzdGF0aWMgc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgbmFtZSA9IHsJCQkJXAo+ICsJ LnJzcyA9IF9fUkNVX1NZTkNfSU5JVElBTElaRVIobmFtZS5yc3MsIFJDVV9TQ0hFRF9TWU5DKSwJ XAo+ICsJLmZhc3RfcmVhZF9jdHIgPSAmX19wZXJjcHVfcndzZW1fZnJjXyMjbmFtZSwJCQlcCj4g Kwkucndfc2VtID0gX19SV1NFTV9JTklUSUFMSVpFUihuYW1lLnJ3X3NlbSksCQkJXAo+ICsJLndy aXRlX3dhaXRxID0gX19XQUlUX1FVRVVFX0hFQURfSU5JVElBTElaRVIobmFtZS53cml0ZV93YWl0 cSksCVwKPiArfQo+ICsKPiDCoGV4dGVybiB2b2lkIHBlcmNwdV9kb3duX3JlYWQoc3RydWN0IHBl cmNwdV9yd19zZW1hcGhvcmUgKik7Cj4gwqBleHRlcm4gaW50wqDCoHBlcmNwdV9kb3duX3JlYWRf dHJ5bG9jayhzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqKTsKPiDCoGV4dGVybiB2b2lkIHBl cmNwdV91cF9yZWFkKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICopOwo+IEBAIC0zMyw5ICs0 MiwxMSBAQCBleHRlcm4gdm9pZCBwZXJjcHVfZnJlZV9yd3NlbShzdHJ1Y3QgcGVyCj4gwqAJX19w ZXJjcHVfaW5pdF9yd3NlbShicncsICNicncsICZyd3NlbV9rZXkpOwkJXAo+IMKgfSkKPiDCoAo+ IC0KPiDCoCNkZWZpbmUgcGVyY3B1X3J3c2VtX2lzX2hlbGQoc2VtKSBsb2NrZGVwX2lzX2hlbGQo JihzZW0pLT5yd19zZW0pCj4gwqAKPiArI2RlZmluZSBwZXJjcHVfcndzZW1fYXNzZXJ0X2hlbGQo c2VtKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBc Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCYoc2VtKS0+cndfc2VtKQo+ICsKPiDCoHN0YXRpYyBp bmxpbmUgdm9pZCBwZXJjcHVfcndzZW1fcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9y ZSAqc2VtLAo+IMKgCQkJCQlib29sIHJlYWQsIHVuc2lnbmVkIGxvbmcgaXApCj4gwqB7Cj4gLS0t IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCj4g QEAgLTE0MDMsNiArMTQwMyw5IEBAIHN0cnVjdCB0YXNrX3N0cnVjdCB7Cj4gwqAJc3RydWN0IHRh c2tfc3RydWN0ICpsYXN0X3dha2VlOwo+IMKgCj4gwqAJaW50IHdha2VfY3B1Owo+ICsjaWZkZWYg Q09ORklHX0hPVFBMVUdfQ1BVCj4gKwlpbnQgY3B1aHBfcmVmOwo+ICsjZW5kaWYKPiDCoCNlbmRp Zgo+IMKgCWludCBvbl9ycTsKPiDCoAo+IC0tLSBhL2tlcm5lbC9jcHUuYwo+ICsrKyBiL2tlcm5l bC9jcHUuYwo+IEBAIC0yMyw2ICsyMyw3IEBACj4gwqAjaW5jbHVkZSAKPiDCoCNpbmNsdWRlIAo+ IMKgI2luY2x1ZGUgCj4gKyNpbmNsdWRlIAo+IMKgCj4gwqAjaW5jbHVkZSAic21wYm9vdC5oIgo+ IMKgCj4gQEAgLTUxLDEyMSArNTIsNTIgQEAgRVhQT1JUX1NZTUJPTChjcHVfbm90aWZpZXJfcmVn aXN0ZXJfZG9uZQo+IMKgCj4gwqBzdGF0aWMgUkFXX05PVElGSUVSX0hFQUQoY3B1X2NoYWluKTsK PiDCoAo+IC0vKiBJZiBzZXQsIGNwdV91cCBhbmQgY3B1X2Rvd24gd2lsbCByZXR1cm4gLUVCVVNZ IGFuZCBkbyBub3RoaW5nLgo+ICsvKgo+ICsgKiBJZiBzZXQsIGNwdV91cCBhbmQgY3B1X2Rvd24g d2lsbCByZXR1cm4gLUVCVVNZIGFuZCBkbyBub3RoaW5nLgo+IMKgICogU2hvdWxkIGFsd2F5cyBi ZSBtYW5pcHVsYXRlZCB1bmRlciBjcHVfYWRkX3JlbW92ZV9sb2NrCj4gwqAgKi8KPiDCoHN0YXRp YyBpbnQgY3B1X2hvdHBsdWdfZGlzYWJsZWQ7Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfSE9UUExV R19DUFUKPiDCoAo+IC1zdGF0aWMgc3RydWN0IHsKPiAtCXN0cnVjdCB0YXNrX3N0cnVjdCAqYWN0 aXZlX3dyaXRlcjsKPiAtCS8qIHdhaXQgcXVldWUgdG8gd2FrZSB1cCB0aGUgYWN0aXZlX3dyaXRl ciAqLwo+IC0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Cj4gLQkvKiB2ZXJpZmllcyB0aGF0IG5vIHdy aXRlciB3aWxsIGdldCBhY3RpdmUgd2hpbGUgcmVhZGVycyBhcmUgYWN0aXZlICovCj4gLQlzdHJ1 Y3QgbXV0ZXggbG9jazsKPiAtCS8qCj4gLQnCoCogQWxzbyBibG9ja3MgdGhlIG5ldyByZWFkZXJz IGR1cmluZwo+IC0JwqAqIGFuIG9uZ29pbmcgY3B1IGhvdHBsdWcgb3BlcmF0aW9uLgo+IC0JwqAq Lwo+IC0JYXRvbWljX3QgcmVmY291bnQ7Cj4gLQo+IC0jaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tf QUxMT0MKPiAtCXN0cnVjdCBsb2NrZGVwX21hcCBkZXBfbWFwOwo+IC0jZW5kaWYKPiAtfSBjcHVf aG90cGx1ZyA9IHsKPiAtCS5hY3RpdmVfd3JpdGVyID0gTlVMTCwKPiAtCS53cSA9IF9fV0FJVF9R VUVVRV9IRUFEX0lOSVRJQUxJWkVSKGNwdV9ob3RwbHVnLndxKSwKPiAtCS5sb2NrID0gX19NVVRF WF9JTklUSUFMSVpFUihjcHVfaG90cGx1Zy5sb2NrKSwKPiAtI2lmZGVmIENPTkZJR19ERUJVR19M T0NLX0FMTE9DCj4gLQkuZGVwX21hcCA9IHsubmFtZSA9ICJjcHVfaG90cGx1Zy5sb2NrIiB9LAo+ IC0jZW5kaWYKPiAtfTsKPiAtCj4gLS8qIExvY2tkZXAgYW5ub3RhdGlvbnMgZm9yIGdldC9wdXRf b25saW5lX2NwdXMoKSBhbmQgY3B1X2hvdHBsdWdfYmVnaW4vZW5kKCkgKi8KPiAtI2RlZmluZSBj cHVocF9sb2NrX2FjcXVpcmVfcmVhZCgpIGxvY2tfbWFwX2FjcXVpcmVfcmVhZCgmY3B1X2hvdHBs dWcuZGVwX21hcCkKPiAtI2RlZmluZSBjcHVocF9sb2NrX2FjcXVpcmVfdHJ5cmVhZCgpIFwKPiAt CQkJCcKgwqBsb2NrX21hcF9hY3F1aXJlX3RyeXJlYWQoJmNwdV9ob3RwbHVnLmRlcF9tYXApCj4g LSNkZWZpbmUgY3B1aHBfbG9ja19hY3F1aXJlKCnCoMKgwqDCoMKgwqBsb2NrX21hcF9hY3F1aXJl KCZjcHVfaG90cGx1Zy5kZXBfbWFwKQo+IC0jZGVmaW5lIGNwdWhwX2xvY2tfcmVsZWFzZSgpwqDC oMKgwqDCoMKgbG9ja19tYXBfcmVsZWFzZSgmY3B1X2hvdHBsdWcuZGVwX21hcCkKPiArREVGSU5F X1NUQVRJQ19QRVJDUFVfUldTRU0oaG90cGx1Zyk7Cj4gwqAKPiArdm9pZCBjcHVfaG90cGx1Z19p bml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQo+ICt7Cj4gKwlpZiAoV0FSTl9PTl9PTkNF KHAtPmNwdWhwX3JlZikpCj4gKwkJcC0+Y3B1aHBfcmVmID0gMDsKPiArfQo+IMKgCj4gwqB2b2lk IGdldF9vbmxpbmVfY3B1cyh2b2lkKQo+IMKgewo+IMKgCW1pZ2h0X3NsZWVwKCk7Cj4gLQlpZiAo Y3B1X2hvdHBsdWcuYWN0aXZlX3dyaXRlciA9PSBjdXJyZW50KQo+ICsKPiArCWlmIChjdXJyZW50 LT5jcHVocF9yZWYrKykgLyogcmVhZCByZWN1cnNpb24gKi8KPiDCoAkJcmV0dXJuOwo+IC0JY3B1 aHBfbG9ja19hY3F1aXJlX3JlYWQoKTsKPiAtCW11dGV4X2xvY2soJmNwdV9ob3RwbHVnLmxvY2sp Owo+IC0JYXRvbWljX2luYygmY3B1X2hvdHBsdWcucmVmY291bnQpOwo+IC0JbXV0ZXhfdW5sb2Nr KCZjcHVfaG90cGx1Zy5sb2NrKTsKPiArCj4gKwlwZXJjcHVfZG93bl9yZWFkKCZob3RwbHVnKTsK PiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKGdldF9vbmxpbmVfY3B1cyk7Cj4gwqAKPiDCoHZv aWQgcHV0X29ubGluZV9jcHVzKHZvaWQpCj4gwqB7Cj4gLQlpbnQgcmVmY291bnQ7Cj4gLQo+IC0J aWYgKGNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPT0gY3VycmVudCkKPiArCWlmICgtLWN1cnJl bnQtPmNwdWhwX3JlZikKPiDCoAkJcmV0dXJuOwo+IMKgCj4gLQlyZWZjb3VudCA9IGF0b21pY19k ZWNfcmV0dXJuKCZjcHVfaG90cGx1Zy5yZWZjb3VudCk7Cj4gLQlpZiAoV0FSTl9PTihyZWZjb3Vu dCA8IDApKSAvKiB0cnkgdG8gZml4IHRoaW5ncyB1cCAqLwo+IC0JCWF0b21pY19pbmMoJmNwdV9o b3RwbHVnLnJlZmNvdW50KTsKPiAtCj4gLQlpZiAocmVmY291bnQgPD0gMCAmJiB3YWl0cXVldWVf YWN0aXZlKCZjcHVfaG90cGx1Zy53cSkpCj4gLQkJd2FrZV91cCgmY3B1X2hvdHBsdWcud3EpOwo+ IC0KPiAtCWNwdWhwX2xvY2tfcmVsZWFzZSgpOwo+IC0KPiArCXBlcmNwdV91cF9yZWFkKCZob3Rw bHVnKTsKPiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKHB1dF9vbmxpbmVfY3B1cyk7Cj4gwqAK PiAtLyoKPiAtICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGhvdHBsdWcgb3BlcmF0aW9uIGNhbiBi ZWdpbiBvbmx5IHdoZW4gdGhlCj4gLSAqIHJlZmNvdW50IGdvZXMgdG8gemVyby4KPiAtICoKPiAt ICogTm90ZSB0aGF0IGR1cmluZyBhIGNwdS1ob3RwbHVnIG9wZXJhdGlvbiwgdGhlIG5ldyByZWFk ZXJzLCBpZiBhbnksCj4gLSAqIHdpbGwgYmUgYmxvY2tlZCBieSB0aGUgY3B1X2hvdHBsdWcubG9j awo+IC0gKgo+IC0gKiBTaW5jZSBjcHVfaG90cGx1Z19iZWdpbigpIGlzIGFsd2F5cyBjYWxsZWQg YWZ0ZXIgaW52b2tpbmcKPiAtICogY3B1X21hcHNfdXBkYXRlX2JlZ2luKCksIHdlIGNhbiBiZSBz dXJlIHRoYXQgb25seSBvbmUgd3JpdGVyIGlzIGFjdGl2ZS4KPiAtICoKPiAtICogTm90ZSB0aGF0 IHRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgYSBsaXZlbG9jazoKPiAt ICogLSBSZWZjb3VudCBnb2VzIHRvIHplcm8sIGxhc3QgcmVhZGVyIHdha2VzIHVwIHRoZSBzbGVl cGluZwo+IC0gKsKgwqDCoHdyaXRlci4KPiAtICogLSBMYXN0IHJlYWRlciB1bmxvY2tzIHRoZSBj cHVfaG90cGx1Zy5sb2NrLgo+IC0gKiAtIEEgbmV3IHJlYWRlciBhcnJpdmVzIGF0IHRoaXMgbW9t ZW50LCBidW1wcyB1cCB0aGUgcmVmY291bnQuCj4gLSAqIC0gVGhlIHdyaXRlciBhY3F1aXJlcyB0 aGUgY3B1X2hvdHBsdWcubG9jayBmaW5kcyB0aGUgcmVmY291bnQKPiAtICrCoMKgwqBub24gemVy byBhbmQgZ29lcyB0byBzbGVlcCBhZ2Fpbi4KPiAtICoKPiAtICogSG93ZXZlciwgdGhpcyBpcyB2 ZXJ5IGRpZmZpY3VsdCB0byBhY2hpZXZlIGluIHByYWN0aWNlIHNpbmNlCj4gLSAqIGdldF9vbmxp bmVfY3B1cygpIG5vdCBhbiBhcGkgd2hpY2ggaXMgY2FsbGVkIGFsbCB0aGF0IG9mdGVuLgo+IC0g Kgo+IC0gKi8KPiDCoHZvaWQgY3B1X2hvdHBsdWdfYmVnaW4odm9pZCkKPiDCoHsKPiAtCURFRklO RV9XQUlUKHdhaXQpOwo+IC0KPiAtCWNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPSBjdXJyZW50 Owo+IC0JY3B1aHBfbG9ja19hY3F1aXJlKCk7Cj4gLQo+IC0JZm9yICg7Oykgewo+IC0JCW11dGV4 X2xvY2soJmNwdV9ob3RwbHVnLmxvY2spOwo+IC0JCXByZXBhcmVfdG9fd2FpdCgmY3B1X2hvdHBs dWcud3EsICZ3YWl0LCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7Cj4gLQkJaWYgKGxpa2VseSghYXRv bWljX3JlYWQoJmNwdV9ob3RwbHVnLnJlZmNvdW50KSkpCj4gLQkJCQlicmVhazsKPiAtCQltdXRl eF91bmxvY2soJmNwdV9ob3RwbHVnLmxvY2spOwo+IC0JCXNjaGVkdWxlKCk7Cj4gLQl9Cj4gLQlm aW5pc2hfd2FpdCgmY3B1X2hvdHBsdWcud3EsICZ3YWl0KTsKPiArCXBlcmNwdV9kb3duX3dyaXRl KCZob3RwbHVnKTsKPiArCWN1cnJlbnQtPmNwdWhwX3JlZisrOyAvKiBhbGxvdyByZWFkLWluLXdy aXRlIHJlY3Vyc2lvbiAqLwo+IMKgfQo+IMKgCj4gwqB2b2lkIGNwdV9ob3RwbHVnX2RvbmUodm9p ZCkKPiDCoHsKPiAtCWNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPSBOVUxMOwo+IC0JbXV0ZXhf dW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKPiAtCWNwdWhwX2xvY2tfcmVsZWFzZSgpOwo+ICsJ Y3VycmVudC0+Y3B1aHBfcmVmLS07Cj4gKwlwZXJjcHVfdXBfd3JpdGUoJmhvdHBsdWcpOwo+IMKg fQo+IMKgCj4gwqAvKgo+IC0tLSBhL2tlcm5lbC9mb3JrLmMKPiArKysgYi9rZXJuZWwvZm9yay5j Cj4gQEAgLTE0MTQsNiArMTQxNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNvcHlf cHJvY2VzcygKPiDCoAlwLT5zZXF1ZW50aWFsX2lvX2F2Zwk9IDA7Cj4gwqAjZW5kaWYKPiDCoAo+ ICsJY3B1X2hvdHBsdWdfaW5pdF90YXNrKHApOwo+ICsKPiDCoAkvKiBQZXJmb3JtIHNjaGVkdWxl ciByZWxhdGVkIHNldHVwLiBBc3NpZ24gdGhpcyB0YXNrIHRvIGEgQ1BVLiAqLwo+IMKgCXJldHZh bCA9IHNjaGVkX2ZvcmsoY2xvbmVfZmxhZ3MsIHApOwo+IMKgCWlmIChyZXR2YWwpCj4gLS0tIGEv bGliL0tjb25maWcKPiArKysgYi9saWIvS2NvbmZpZwo+IEBAIC01Myw2ICs1MywxMSBAQCBjb25m aWcgR0VORVJJQ19JTwo+IMKgY29uZmlnIFNUTVBfREVWSUNFCj4gwqAJYm9vbAo+IMKgCj4gK2Nv bmZpZyBQRVJDUFVfUldTRU1fSE9UUExVRwo+ICsJZGVmX2Jvb2wgeQo+ICsJZGVwZW5kcyBvbiBI T1RQTFVHX0NQVQo+ICsJc2VsZWN0IFBFUkNQVV9SV1NFTQo+ICsKPiDCoGNvbmZpZyBBUkNIX1VT RV9DTVBYQ0hHX0xPQ0tSRUYKPiDCoAlib29sCj4gwqAKLS0gCkpvb25hcyBMYWh0aW5lbgpPcGVu IFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpJbnRlbCBDb3Jwb3JhdGlvbgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK