From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH] [RFC] kernel/cpu: Use lockref for online CPU reference counting Date: Mon, 15 Feb 2016 18:06:18 +0100 Message-ID: <20160215170618.GL6375@twins.programming.kicks-ass.net> References: <1455539803-13913-1-git-send-email-joonas.lahtinen@linux.intel.com> <20160215141755.GG6357@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CB7A6E6A2 for ; Mon, 15 Feb 2016 17:06:23 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160215141755.GG6357@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: Joonas Lahtinen 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 T24gTW9uLCBGZWIgMTUsIDIwMTYgYXQgMDM6MTc6NTVQTSArMDEwMCwgUGV0ZXIgWmlqbHN0cmEg d3JvdGU6Cj4gT24gTW9uLCBGZWIgMTUsIDIwMTYgYXQgMDI6MzY6NDNQTSArMDIwMCwgSm9vbmFz IExhaHRpbmVuIHdyb3RlOgo+ID4gSW5zdGVhZCBvZiBpbXBsZW1lbnRpbmcgYSBjdXN0b20gbG9j a2VkIHJlZmVyZW5jZSBjb3VudGluZywgdXNlIGxvY2tyZWYuCj4gPiAKPiA+IEN1cnJlbnQgaW1w bGVtZW50YXRpb24gbGVhZHMgdG8gYSBkZWFkbG9jayBzcGxhdCBvbiBJbnRlbCBTS0wgcGxhdGZv cm1zCj4gPiB3aGVuIGxvY2tkZXAgZGVidWdnaW5nIGlzIGVuYWJsZWQuCj4gPiAKPiA+IFRoaXMg aXMgZHVlIHRvIGZldyBvZiBDUFVmcmVxIGRyaXZlcnMgKGluY2x1ZGluZyBJbnRlbCBQLXN0YXRl KSBoYXZpbmcgdGhpczsKPiA+IHBvbGljeS0+cndzZW0gaXMgbG9ja2VkIGR1cmluZyBkcml2ZXIg aW5pdGlhbGl6YXRpb24gYW5kIHRoZSBmdW5jdGlvbnMgY2FsbGVkCj4gPiBkdXJpbmcgaW5pdCB0 aGF0IGFjdHVhbGx5IGFwcGx5IENQVSBsaW1pdHMgdXNlIGdldF9vbmxpbmVfY3B1cyAoYmVjYXVz ZSB0aGV5Cj4gPiBoYXZlIG90aGVyIGNhbGxpbmcgcGF0aHMgdG9vKSwgd2hpY2ggd2lsbCBicmll Zmx5IGxvY2sgY3B1X2hvdHBsdWcubG9jayB0bwo+ID4gaW5jcmVhc2UgY3B1X2hvdHBsdWcucmVm Y291bnQuCj4gPiAKPiA+IE9uIGxhdGVyIGNhbGxpbmcgcGF0aCwgd2hlbiBkb2luZyBhIHN1c3Bl bmQsIHdoZW4gY3B1X2hvdHBsdWdfYmVnaW4oKSBpcyBjYWxsZWQKPiA+IGluIGRpc2FibGVfbm9u Ym9vdF9jcHVzKCksIGNhbGxiYWNrcyB0byBDUFVmcmVxIGZ1bmN0aW9ucyBnZXQgY2FsbGVkIGFm dGVyLAo+ID4gd2hpY2ggd2lsbCBsb2NrIHBvbGljeS0+cndzZW0gYW5kIGNwdV9ob3RwbHVnLmxv Y2sgaXMgYWxyZWFkeSBoZWxkIGJ5Cj4gPiBjcHVfaG90cGx1Z19iZWdpbigpIGFuZCB3ZSBkbyBo YXZlIGEgcG90ZW50aWFsIGRlYWRsb2NrIHNjZW5hcmlvIHJlcG9ydGVkIGJ5Cj4gPiBvdXIgQ0kg c3lzdGVtICh0aG91Z2ggaXQgaXMgYSB2ZXJ5IHVubGlrZWx5IG9uZSkuIFNlZSB0aGUgQnVnemls bGEgbGluayBmb3IgbW9yZQo+ID4gZGV0YWlscy4KPiAKPiBJJ3ZlIGJlZW4gbWVhbmluZyB0byBj aGFuZ2UgdGhlIHRoaW5nIGludG8gYSBwZXJjcHUtcndzZW0sIEkganVzdAo+IGhhdmVuJ3QgaGFk IHRpbWUgdG8gbG9vayBpbnRvIHRoZSBsb2NrZGVwIHNwbGF0IHRoYXQgZ2VuZXJhdGVkLgoKClRo ZSBiZWxvdyBoYXMgcGxlbnR5IGxvY2tkZXAgaXNzdWVzIGJlY2F1c2UgcGVyY3B1LXJ3c2VtIGlz CnJlYWRlci13cml0ZXIgZmFpciAobGlrZSB0aGUgcmVndWxhciByd3NlbSksIHNvIGl0IGRvZXMg dGhyb3cgdXAgYSBmYWlyCm51bWJlciBvZiB2ZXJ5IGlja3kgaXNzdWVzLgoKSWYgYXQgYWxsIHBv c3NpYmxlLCBJJ2QgcmVhbGx5IHJhdGhlciBmaXggdGhvc2UgYW5kIGhhdmUgYSAnc2FuZXInCmhv dHBsdWcgbG9jaywgcmF0aGVyIHRoYW4gbXVkZGxlIG9uIHdpdGggb3Blbi1jb2RlZCBob3Jyb3Ig bG9jayB3ZSBoYXZlCm5vdy4KCgotLS0gYS9pbmNsdWRlL2xpbnV4L2NwdS5oCisrKyBiL2luY2x1 ZGUvbGludXgvY3B1LmgKQEAgLTIyNSw2ICsyMjUsOCBAQCBleHRlcm4gc3RydWN0IGJ1c190eXBl IGNwdV9zdWJzeXM7CiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCiAvKiBTdG9wIENQVXMgZ29p bmcgdXAgYW5kIGRvd24uICovCiAKK2V4dGVybiB2b2lkIGNwdV9ob3RwbHVnX2luaXRfdGFzayhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApOworCiBleHRlcm4gdm9pZCBjcHVfaG90cGx1Z19iZWdpbih2 b2lkKTsKIGV4dGVybiB2b2lkIGNwdV9ob3RwbHVnX2RvbmUodm9pZCk7CiBleHRlcm4gdm9pZCBn ZXRfb25saW5lX2NwdXModm9pZCk7CkBAIC0yNDIsNiArMjQ0LDggQEAgaW50IGNwdV9kb3duKHVu c2lnbmVkIGludCBjcHUpOwogCiAjZWxzZQkJLyogQ09ORklHX0hPVFBMVUdfQ1BVICovCiAKK3N0 YXRpYyBpbmxpbmUgdm9pZCBjcHVfaG90cGx1Z19pbml0X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0 ICpwKSB7fQorCiBzdGF0aWMgaW5saW5lIHZvaWQgY3B1X2hvdHBsdWdfYmVnaW4odm9pZCkge30K IHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfaG90cGx1Z19kb25lKHZvaWQpIHt9CiAjZGVmaW5lIGdl dF9vbmxpbmVfY3B1cygpCWRvIHsgfSB3aGlsZSAoMCkKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJj cHUtcndzZW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yd3NlbS5oCkBAIC0xNiw2ICsx NiwxNSBAQCBzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSB7CiAJd2FpdF9xdWV1ZV9oZWFkX3QJ d3JpdGVfd2FpdHE7CiB9OwogCisjZGVmaW5lIERFRklORV9TVEFUSUNfUEVSQ1BVX1JXU0VNKG5h bWUpCQkJCVwKK3N0YXRpYyBERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCBpbnQsIF9fcGVyY3B1X3J3 c2VtX2ZyY18jI25hbWUpOwlcCitzdGF0aWMgc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgbmFt ZSA9IHsJCQkJXAorCS5yc3MgPSBfX1JDVV9TWU5DX0lOSVRJQUxJWkVSKG5hbWUucnNzLCBSQ1Vf U0NIRURfU1lOQyksCVwKKwkuZmFzdF9yZWFkX2N0ciA9ICZfX3BlcmNwdV9yd3NlbV9mcmNfIyNu YW1lLAkJCVwKKwkucndfc2VtID0gX19SV1NFTV9JTklUSUFMSVpFUihuYW1lLnJ3X3NlbSksCQkJ XAorCS53cml0ZV93YWl0cSA9IF9fV0FJVF9RVUVVRV9IRUFEX0lOSVRJQUxJWkVSKG5hbWUud3Jp dGVfd2FpdHEpLAlcCit9CisKIGV4dGVybiB2b2lkIHBlcmNwdV9kb3duX3JlYWQoc3RydWN0IHBl cmNwdV9yd19zZW1hcGhvcmUgKik7CiBleHRlcm4gaW50ICBwZXJjcHVfZG93bl9yZWFkX3RyeWxv Y2soc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CiBleHRlcm4gdm9pZCBwZXJjcHVfdXBf cmVhZChzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqKTsKQEAgLTMzLDkgKzQyLDExIEBAIGV4 dGVybiB2b2lkIHBlcmNwdV9mcmVlX3J3c2VtKHN0cnVjdCBwZXIKIAlfX3BlcmNwdV9pbml0X3J3 c2VtKGJydywgI2JydywgJnJ3c2VtX2tleSk7CQlcCiB9KQogCi0KICNkZWZpbmUgcGVyY3B1X3J3 c2VtX2lzX2hlbGQoc2VtKSBsb2NrZGVwX2lzX2hlbGQoJihzZW0pLT5yd19zZW0pCiAKKyNkZWZp bmUgcGVyY3B1X3J3c2VtX2Fzc2VydF9oZWxkKHNlbSkgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCYoc2VtKS0+cndfc2VtKQorCiBzdGF0aWMgaW5saW5l IHZvaWQgcGVyY3B1X3J3c2VtX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNl bSwKIAkJCQkJYm9vbCByZWFkLCB1bnNpZ25lZCBsb25nIGlwKQogewotLS0gYS9pbmNsdWRlL2xp bnV4L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC0xNDAzLDYgKzE0MDMs OSBAQCBzdHJ1Y3QgdGFza19zdHJ1Y3QgewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqbGFzdF93YWtl ZTsKIAogCWludCB3YWtlX2NwdTsKKyNpZmRlZiBDT05GSUdfSE9UUExVR19DUFUKKwlpbnQgY3B1 aHBfcmVmOworI2VuZGlmCiAjZW5kaWYKIAlpbnQgb25fcnE7CiAKLS0tIGEva2VybmVsL2NwdS5j CisrKyBiL2tlcm5lbC9jcHUuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3Rp Y2suaD4KICNpbmNsdWRlIDxsaW51eC9pcnEuaD4KICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvcG93 ZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9wZXJjcHUtcndzZW0uaD4KIAogI2luY2x1ZGUgInNtcGJv b3QuaCIKIApAQCAtNTEsMTIxICs1Miw1MiBAQCBFWFBPUlRfU1lNQk9MKGNwdV9ub3RpZmllcl9y ZWdpc3Rlcl9kb25lCiAKIHN0YXRpYyBSQVdfTk9USUZJRVJfSEVBRChjcHVfY2hhaW4pOwogCi0v KiBJZiBzZXQsIGNwdV91cCBhbmQgY3B1X2Rvd24gd2lsbCByZXR1cm4gLUVCVVNZIGFuZCBkbyBu b3RoaW5nLgorLyoKKyAqIElmIHNldCwgY3B1X3VwIGFuZCBjcHVfZG93biB3aWxsIHJldHVybiAt RUJVU1kgYW5kIGRvIG5vdGhpbmcuCiAgKiBTaG91bGQgYWx3YXlzIGJlIG1hbmlwdWxhdGVkIHVu ZGVyIGNwdV9hZGRfcmVtb3ZlX2xvY2sKICAqLwogc3RhdGljIGludCBjcHVfaG90cGx1Z19kaXNh YmxlZDsKIAogI2lmZGVmIENPTkZJR19IT1RQTFVHX0NQVQogCi1zdGF0aWMgc3RydWN0IHsKLQlz dHJ1Y3QgdGFza19zdHJ1Y3QgKmFjdGl2ZV93cml0ZXI7Ci0JLyogd2FpdCBxdWV1ZSB0byB3YWtl IHVwIHRoZSBhY3RpdmVfd3JpdGVyICovCi0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Ci0JLyogdmVy aWZpZXMgdGhhdCBubyB3cml0ZXIgd2lsbCBnZXQgYWN0aXZlIHdoaWxlIHJlYWRlcnMgYXJlIGFj dGl2ZSAqLwotCXN0cnVjdCBtdXRleCBsb2NrOwotCS8qCi0JICogQWxzbyBibG9ja3MgdGhlIG5l dyByZWFkZXJzIGR1cmluZwotCSAqIGFuIG9uZ29pbmcgY3B1IGhvdHBsdWcgb3BlcmF0aW9uLgot CSAqLwotCWF0b21pY190IHJlZmNvdW50OwotCi0jaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxM T0MKLQlzdHJ1Y3QgbG9ja2RlcF9tYXAgZGVwX21hcDsKLSNlbmRpZgotfSBjcHVfaG90cGx1ZyA9 IHsKLQkuYWN0aXZlX3dyaXRlciA9IE5VTEwsCi0JLndxID0gX19XQUlUX1FVRVVFX0hFQURfSU5J VElBTElaRVIoY3B1X2hvdHBsdWcud3EpLAotCS5sb2NrID0gX19NVVRFWF9JTklUSUFMSVpFUihj cHVfaG90cGx1Zy5sb2NrKSwKLSNpZmRlZiBDT05GSUdfREVCVUdfTE9DS19BTExPQwotCS5kZXBf bWFwID0gey5uYW1lID0gImNwdV9ob3RwbHVnLmxvY2siIH0sCi0jZW5kaWYKLX07Ci0KLS8qIExv Y2tkZXAgYW5ub3RhdGlvbnMgZm9yIGdldC9wdXRfb25saW5lX2NwdXMoKSBhbmQgY3B1X2hvdHBs dWdfYmVnaW4vZW5kKCkgKi8KLSNkZWZpbmUgY3B1aHBfbG9ja19hY3F1aXJlX3JlYWQoKSBsb2Nr X21hcF9hY3F1aXJlX3JlYWQoJmNwdV9ob3RwbHVnLmRlcF9tYXApCi0jZGVmaW5lIGNwdWhwX2xv Y2tfYWNxdWlyZV90cnlyZWFkKCkgXAotCQkJCSAgbG9ja19tYXBfYWNxdWlyZV90cnlyZWFkKCZj cHVfaG90cGx1Zy5kZXBfbWFwKQotI2RlZmluZSBjcHVocF9sb2NrX2FjcXVpcmUoKSAgICAgIGxv Y2tfbWFwX2FjcXVpcmUoJmNwdV9ob3RwbHVnLmRlcF9tYXApCi0jZGVmaW5lIGNwdWhwX2xvY2tf cmVsZWFzZSgpICAgICAgbG9ja19tYXBfcmVsZWFzZSgmY3B1X2hvdHBsdWcuZGVwX21hcCkKK0RF RklORV9TVEFUSUNfUEVSQ1BVX1JXU0VNKGhvdHBsdWcpOwogCit2b2lkIGNwdV9ob3RwbHVnX2lu aXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCit7CisJaWYgKFdBUk5fT05fT05DRShwLT5j cHVocF9yZWYpKQorCQlwLT5jcHVocF9yZWYgPSAwOworfQogCiB2b2lkIGdldF9vbmxpbmVfY3B1 cyh2b2lkKQogewogCW1pZ2h0X3NsZWVwKCk7Ci0JaWYgKGNwdV9ob3RwbHVnLmFjdGl2ZV93cml0 ZXIgPT0gY3VycmVudCkKKworCWlmIChjdXJyZW50LT5jcHVocF9yZWYrKykgLyogcmVhZCByZWN1 cnNpb24gKi8KIAkJcmV0dXJuOwotCWNwdWhwX2xvY2tfYWNxdWlyZV9yZWFkKCk7Ci0JbXV0ZXhf bG9jaygmY3B1X2hvdHBsdWcubG9jayk7Ci0JYXRvbWljX2luYygmY3B1X2hvdHBsdWcucmVmY291 bnQpOwotCW11dGV4X3VubG9jaygmY3B1X2hvdHBsdWcubG9jayk7CisKKwlwZXJjcHVfZG93bl9y ZWFkKCZob3RwbHVnKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGdldF9vbmxpbmVfY3B1cyk7CiAK IHZvaWQgcHV0X29ubGluZV9jcHVzKHZvaWQpCiB7Ci0JaW50IHJlZmNvdW50OwotCi0JaWYgKGNw dV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIgPT0gY3VycmVudCkKKwlpZiAoLS1jdXJyZW50LT5jcHVo cF9yZWYpCiAJCXJldHVybjsKIAotCXJlZmNvdW50ID0gYXRvbWljX2RlY19yZXR1cm4oJmNwdV9o b3RwbHVnLnJlZmNvdW50KTsKLQlpZiAoV0FSTl9PTihyZWZjb3VudCA8IDApKSAvKiB0cnkgdG8g Zml4IHRoaW5ncyB1cCAqLwotCQlhdG9taWNfaW5jKCZjcHVfaG90cGx1Zy5yZWZjb3VudCk7Ci0K LQlpZiAocmVmY291bnQgPD0gMCAmJiB3YWl0cXVldWVfYWN0aXZlKCZjcHVfaG90cGx1Zy53cSkp Ci0JCXdha2VfdXAoJmNwdV9ob3RwbHVnLndxKTsKLQotCWNwdWhwX2xvY2tfcmVsZWFzZSgpOwot CisJcGVyY3B1X3VwX3JlYWQoJmhvdHBsdWcpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwocHV0X29u bGluZV9jcHVzKTsKIAotLyoKLSAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBob3RwbHVnIG9wZXJh dGlvbiBjYW4gYmVnaW4gb25seSB3aGVuIHRoZQotICogcmVmY291bnQgZ29lcyB0byB6ZXJvLgot ICoKLSAqIE5vdGUgdGhhdCBkdXJpbmcgYSBjcHUtaG90cGx1ZyBvcGVyYXRpb24sIHRoZSBuZXcg cmVhZGVycywgaWYgYW55LAotICogd2lsbCBiZSBibG9ja2VkIGJ5IHRoZSBjcHVfaG90cGx1Zy5s b2NrCi0gKgotICogU2luY2UgY3B1X2hvdHBsdWdfYmVnaW4oKSBpcyBhbHdheXMgY2FsbGVkIGFm dGVyIGludm9raW5nCi0gKiBjcHVfbWFwc191cGRhdGVfYmVnaW4oKSwgd2UgY2FuIGJlIHN1cmUg dGhhdCBvbmx5IG9uZSB3cml0ZXIgaXMgYWN0aXZlLgotICoKLSAqIE5vdGUgdGhhdCB0aGVvcmV0 aWNhbGx5LCB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IG9mIGEgbGl2ZWxvY2s6Ci0gKiAtIFJlZmNv dW50IGdvZXMgdG8gemVybywgbGFzdCByZWFkZXIgd2FrZXMgdXAgdGhlIHNsZWVwaW5nCi0gKiAg IHdyaXRlci4KLSAqIC0gTGFzdCByZWFkZXIgdW5sb2NrcyB0aGUgY3B1X2hvdHBsdWcubG9jay4K LSAqIC0gQSBuZXcgcmVhZGVyIGFycml2ZXMgYXQgdGhpcyBtb21lbnQsIGJ1bXBzIHVwIHRoZSBy ZWZjb3VudC4KLSAqIC0gVGhlIHdyaXRlciBhY3F1aXJlcyB0aGUgY3B1X2hvdHBsdWcubG9jayBm aW5kcyB0aGUgcmVmY291bnQKLSAqICAgbm9uIHplcm8gYW5kIGdvZXMgdG8gc2xlZXAgYWdhaW4u Ci0gKgotICogSG93ZXZlciwgdGhpcyBpcyB2ZXJ5IGRpZmZpY3VsdCB0byBhY2hpZXZlIGluIHBy YWN0aWNlIHNpbmNlCi0gKiBnZXRfb25saW5lX2NwdXMoKSBub3QgYW4gYXBpIHdoaWNoIGlzIGNh bGxlZCBhbGwgdGhhdCBvZnRlbi4KLSAqCi0gKi8KIHZvaWQgY3B1X2hvdHBsdWdfYmVnaW4odm9p ZCkKIHsKLQlERUZJTkVfV0FJVCh3YWl0KTsKLQotCWNwdV9ob3RwbHVnLmFjdGl2ZV93cml0ZXIg PSBjdXJyZW50OwotCWNwdWhwX2xvY2tfYWNxdWlyZSgpOwotCi0JZm9yICg7OykgewotCQltdXRl eF9sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKLQkJcHJlcGFyZV90b193YWl0KCZjcHVfaG90cGx1 Zy53cSwgJndhaXQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKLQkJaWYgKGxpa2VseSghYXRvbWlj X3JlYWQoJmNwdV9ob3RwbHVnLnJlZmNvdW50KSkpCi0JCQkJYnJlYWs7Ci0JCW11dGV4X3VubG9j aygmY3B1X2hvdHBsdWcubG9jayk7Ci0JCXNjaGVkdWxlKCk7Ci0JfQotCWZpbmlzaF93YWl0KCZj cHVfaG90cGx1Zy53cSwgJndhaXQpOworCXBlcmNwdV9kb3duX3dyaXRlKCZob3RwbHVnKTsKKwlj dXJyZW50LT5jcHVocF9yZWYrKzsgLyogYWxsb3cgcmVhZC1pbi13cml0ZSByZWN1cnNpb24gKi8K IH0KIAogdm9pZCBjcHVfaG90cGx1Z19kb25lKHZvaWQpCiB7Ci0JY3B1X2hvdHBsdWcuYWN0aXZl X3dyaXRlciA9IE5VTEw7Ci0JbXV0ZXhfdW5sb2NrKCZjcHVfaG90cGx1Zy5sb2NrKTsKLQljcHVo cF9sb2NrX3JlbGVhc2UoKTsKKwljdXJyZW50LT5jcHVocF9yZWYtLTsKKwlwZXJjcHVfdXBfd3Jp dGUoJmhvdHBsdWcpOwogfQogCiAvKgotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9m b3JrLmMKQEAgLTE0MTQsNiArMTQxNCw4IEBAIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNv cHlfcHJvY2VzcygKIAlwLT5zZXF1ZW50aWFsX2lvX2F2Zwk9IDA7CiAjZW5kaWYKIAorCWNwdV9o b3RwbHVnX2luaXRfdGFzayhwKTsKKwogCS8qIFBlcmZvcm0gc2NoZWR1bGVyIHJlbGF0ZWQgc2V0 dXAuIEFzc2lnbiB0aGlzIHRhc2sgdG8gYSBDUFUuICovCiAJcmV0dmFsID0gc2NoZWRfZm9yayhj bG9uZV9mbGFncywgcCk7CiAJaWYgKHJldHZhbCkKLS0tIGEvbGliL0tjb25maWcKKysrIGIvbGli L0tjb25maWcKQEAgLTUzLDYgKzUzLDExIEBAIGNvbmZpZyBHRU5FUklDX0lPCiBjb25maWcgU1RN UF9ERVZJQ0UKIAlib29sCiAKK2NvbmZpZyBQRVJDUFVfUldTRU1fSE9UUExVRworCWRlZl9ib29s IHkKKwlkZXBlbmRzIG9uIEhPVFBMVUdfQ1BVCisJc2VsZWN0IFBFUkNQVV9SV1NFTQorCiBjb25m aWcgQVJDSF9VU0VfQ01QWENIR19MT0NLUkVGCiAJYm9vbAogCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=