From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pan Xinhui Subject: Re: [PATCH v7 06/11] x86, paravirt: Add interface to support kvm/xen vcpu preempted check Date: Wed, 16 Nov 2016 12:19:09 +0800 Message-ID: References: <1478077718-37424-1-git-send-email-xinhui.pan@linux.vnet.ibm.com> <1478077718-37424-7-git-send-email-xinhui.pan@linux.vnet.ibm.com> <20161115154706.GF11311@worktop.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161115154706.GF11311@worktop.programming.kicks-ass.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Peter Zijlstra , Pan Xinhui Cc: kvm@vger.kernel.org, rkrcmar@redhat.com, benh@kernel.crashing.org, will.deacon@arm.com, virtualization@lists.linux-foundation.org, paulus@samba.org, kernellwp@gmail.com, linux-s390@vger.kernel.org, dave@stgolabs.net, xen-devel-request@lists.xenproject.org, x86@kernel.org, mingo@redhat.com, xen-devel@lists.xenproject.org, paulmck@linux.vnet.ibm.com, konrad.wilk@oracle.com, boqun.feng@gmail.com, jgross@suse.com, linux-kernel@vger.kernel.org, David.Laight@ACULAB.COM, mpe@ellerman.id.au, pbonzini@redhat.com, linuxppc-dev@lists.ozlabs.org List-Id: virtualization@lists.linuxfoundation.org CgrlnKggMjAxNi8xMS8xNSAyMzo0NywgUGV0ZXIgWmlqbHN0cmEg5YaZ6YGTOgo+IE9uIFdlZCwg Tm92IDAyLCAyMDE2IGF0IDA1OjA4OjMzQU0gLTA0MDAsIFBhbiBYaW5odWkgd3JvdGU6Cj4+IGRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaAo+PiBpbmRleCAwZjQwMGMwLi4zOGMzYmI3 IDEwMDY0NAo+PiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oCj4+ ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgKPj4gQEAgLTMxMCw2 ICszMTAsOCBAQCBzdHJ1Y3QgcHZfbG9ja19vcHMgewo+Pgo+PiAgCXZvaWQgKCp3YWl0KSh1OCAq cHRyLCB1OCB2YWwpOwo+PiAgCXZvaWQgKCpraWNrKShpbnQgY3B1KTsKPj4gKwo+PiArCWJvb2wg KCp2Y3B1X2lzX3ByZWVtcHRlZCkoaW50IGNwdSk7Cj4+ICB9Owo+Cj4gU28gdGhhdCBlbmRzIHVw IHdpdGggYSBmdWxsIGZ1bmN0aW9uIGNhbGwgaW4gdGhlIG5hdGl2ZSBjYXNlLiBJIGRpZAo+IHNv bWV0aGluZyBsaWtlIHRoZSBiZWxvdyBvbiB0b3AsIGNvbXBsZXRlbHkgdW50ZXN0ZWQsIG5vdCBi ZWVuIG5lYXIgYQo+IGNvbXBpbGVyIGV0Yy4uCj4KSGksIFBldGVyLgoJSSB0aGluayB3ZSBjYW4g YXZvaWQgYSBmdW5jdGlvbiBjYWxsIGluIGEgc2ltcGxlciB3YXkuIEhvdyBhYm91dCBiZWxvdwoK c3RhdGljIGlubGluZSBib29sIHZjcHVfaXNfcHJlZW1wdGVkKGludCBjcHUpCnsKCS8qIG9ubHkg c2V0IGluIHB2IGNhc2UqLwoJaWYgKHB2X2xvY2tfb3BzLnZjcHVfaXNfcHJlZW1wdGVkKQoJCXJl dHVybiBwdl9sb2NrX29wcy52Y3B1X2lzX3ByZWVtcHRlZChjcHUpOwoJcmV0dXJuIGZhbHNlOwp9 CgoKPiBJdCBkb2Vzbid0IGdldCByaWQgb2YgdGhlIGJyYW5jaCwgYnV0IGF0IGxlYXN0IGl0IGF2 b2lkcyB0aGUgZnVuY3Rpb24KPiBjYWxsLCBhbmQgaGFyZHdhcmUgc2hvdWxkIGhhdmUgbm8gdHJv dWJsZSBwcmVkaWN0aW5nIGEgY29uc3RhbnQKPiBjb25kaXRpb24uCj4KPiBBbHNvLCBpdCBsb29r cyBsaWtlIHlvdSBlbmQgdXAgbm90IHNldHRpbmcgdmNwdV9pc19wcmVlbXB0ZWQgd2hlbiBLVk0K PiBkb2Vzbid0IHN1cHBvcnQgc3RlYWwgY2xvY2ssIHdoaWNoIHdvdWxkIGVuZCB1cCBpbiBhbiBp bnN0YW50IE5VTEwKPiBkZXJlZi4gRml4ZWQgdGhhdCB0b28uCj4KbWF5YmUgbm90IHRydWUuIFRo ZXJlIGlzIC52Y3B1X2lzX3ByZWVtcHRlZCA9IG5hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCB3aGVu IHdlIGRlZmluZSBwdl9sb2NrX29wcy4KCnlvdXIgcGF0Y2ggaXMgYSBnb29kIGV4YW1wbGUgZm9y IGFueSBwZW9wbGUgd2hvIHdhbnQgdG8gYWRkIGFueSBuYXRpdmUvcHYgZnVuY3Rpb24uIDopCgp0 aGFua3MKeGluaHVpCgo+IC0tLQo+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0 LmgKPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydC5oCj4gQEAgLTY3Myw2ICs2 NzMsMTEgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHB2X2tpY2soaW50Cj4gIAlQVk9Q X1ZDQUxMMShwdl9sb2NrX29wcy5raWNrLCBjcHUpOwo+ICB9Cj4KPiArc3RhdGljIF9fYWx3YXlz X2lubGluZSB2b2lkIHB2X3ZjcHVfaXNfcHJlbXB0ZWQoaW50IGNwdSkKPiArewo+ICsJUFZPUF9W Q0FMTEVFMShwdl9sb2NrX29wcy52Y3B1X2lzX3ByZWVtcHRlZCwgY3B1KTsKPiArfQo+ICsKPiAg I2VuZGlmIC8qIFNNUCAmJiBQQVJBVklSVF9TUElOTE9DS1MgKi8KPgo+ICAjaWZkZWYgQ09ORklH X1g4Nl8zMgo+IC0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgKPiAr KysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oCj4gQEAgLTMwOSw3ICsz MDksNyBAQCBzdHJ1Y3QgcHZfbG9ja19vcHMgewo+ICAJdm9pZCAoKndhaXQpKHU4ICpwdHIsIHU4 IHZhbCk7Cj4gIAl2b2lkICgqa2ljaykoaW50IGNwdSk7Cj4KPiAtCWJvb2wgKCp2Y3B1X2lzX3By ZWVtcHRlZCkoaW50IGNwdSk7Cj4gKwlzdHJ1Y3QgcGFyYXZpcnRfY2FsbGVlX3NhdmUgdmNwdV9p c19wcmVlbXB0ZWQ7Cj4gIH07Cj4KPiAgLyogVGhpcyBjb250YWlucyBhbGwgdGhlIHBhcmF2aXJ0 IHN0cnVjdHVyZXM6IHdlIGdldCBhIGNvbnZlbmllbnQKPiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9xc3BpbmxvY2suaAo+ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5o Cj4gQEAgLTMyLDYgKzMyLDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZWRfc3Bpbl91bmxv Y2soc3QKPiAgewo+ICAJcHZfcXVldWVkX3NwaW5fdW5sb2NrKGxvY2spOwo+ICB9Cj4gKwo+ICsj ZGVmaW5lIHZjcHVfaXNfcHJlZW1wdGVkIHZjcHVfaXNfcHJlZW1wdGVkCj4gK3N0YXRpYyBpbmxp bmUgYm9vbCB2Y3B1X2lzX3ByZWVtcHRlZChpbnQgY3B1KQo+ICt7Cj4gKwlyZXR1cm4gcHZfdmNw dV9pc19wcmVlbXB0ZWQoY3B1KTsKPiArfQo+ICAjZWxzZQo+ICBzdGF0aWMgaW5saW5lIHZvaWQg cXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCj4gIHsKPiAtLS0gYS9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5oCj4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9h c20vc3BpbmxvY2suaAo+IEBAIC0yNiwxNCArMjYsNiBAQAo+ICBleHRlcm4gc3RydWN0IHN0YXRp Y19rZXkgcGFyYXZpcnRfdGlja2V0bG9ja3NfZW5hYmxlZDsKPiAgc3RhdGljIF9fYWx3YXlzX2lu bGluZSBib29sIHN0YXRpY19rZXlfZmFsc2Uoc3RydWN0IHN0YXRpY19rZXkgKmtleSk7Cj4KPiAt I2lmZGVmIENPTkZJR19QQVJBVklSVF9TUElOTE9DS1MKPiAtI2RlZmluZSB2Y3B1X2lzX3ByZWVt cHRlZCB2Y3B1X2lzX3ByZWVtcHRlZAo+IC1zdGF0aWMgaW5saW5lIGJvb2wgdmNwdV9pc19wcmVl bXB0ZWQoaW50IGNwdSkKPiAtewo+IC0JcmV0dXJuIHB2X2xvY2tfb3BzLnZjcHVfaXNfcHJlZW1w dGVkKGNwdSk7Cj4gLX0KPiAtI2VuZGlmCj4gLQo+ICAjaW5jbHVkZSA8YXNtL3FzcGlubG9jay5o Pgo+Cj4gIC8qCj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2t2bS5jCj4gKysrIGIvYXJjaC94ODYv a2VybmVsL2t2bS5jCj4gQEAgLTQxNSwxNSArNDE1LDYgQEAgdm9pZCBrdm1fZGlzYWJsZV9zdGVh bF90aW1lKHZvaWQpCj4gIAl3cm1zcihNU1JfS1ZNX1NURUFMX1RJTUUsIDAsIDApOwo+ICB9Cj4K PiAtc3RhdGljIGJvb2wga3ZtX3ZjcHVfaXNfcHJlZW1wdGVkKGludCBjcHUpCj4gLXsKPiAtCXN0 cnVjdCBrdm1fc3RlYWxfdGltZSAqc3JjOwo+IC0KPiAtCXNyYyA9ICZwZXJfY3B1KHN0ZWFsX3Rp bWUsIGNwdSk7Cj4gLQo+IC0JcmV0dXJuICEhc3JjLT5wcmVlbXB0ZWQ7Cj4gLX0KPiAtCj4gICNp ZmRlZiBDT05GSUdfU01QCj4gIHN0YXRpYyB2b2lkIF9faW5pdCBrdm1fc21wX3ByZXBhcmVfYm9v dF9jcHUodm9pZCkKPiAgewo+IEBAIC00ODAsOSArNDcxLDYgQEAgdm9pZCBfX2luaXQga3ZtX2d1 ZXN0X2luaXQodm9pZCkKPiAgCWlmIChrdm1fcGFyYV9oYXNfZmVhdHVyZShLVk1fRkVBVFVSRV9T VEVBTF9USU1FKSkgewo+ICAJCWhhc19zdGVhbF9jbG9jayA9IDE7Cj4gIAkJcHZfdGltZV9vcHMu c3RlYWxfY2xvY2sgPSBrdm1fc3RlYWxfY2xvY2s7Cj4gLSNpZmRlZiBDT05GSUdfUEFSQVZJUlRf U1BJTkxPQ0tTCj4gLQkJcHZfbG9ja19vcHMudmNwdV9pc19wcmVlbXB0ZWQgPSBrdm1fdmNwdV9p c19wcmVlbXB0ZWQ7Cj4gLSNlbmRpZgo+ICAJfQo+Cj4gIAlpZiAoa3ZtX3BhcmFfaGFzX2ZlYXR1 cmUoS1ZNX0ZFQVRVUkVfUFZfRU9JKSkKPiBAQCAtNjA0LDYgKzU5MiwxNCBAQCBzdGF0aWMgdm9p ZCBrdm1fd2FpdCh1OCAqcHRyLCB1OCB2YWwpCj4gIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7 Cj4gIH0KPgo+ICtzdGF0aWMgYm9vbCBfX2t2bV92Y3B1X2lzX3ByZWVtcHRlZChpbnQgY3B1KQo+ ICt7Cj4gKwlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnNyYyA9ICZwZXJfY3B1KHN0ZWFsX3RpbWUs IGNwdSk7Cj4gKwo+ICsJcmV0dXJuICEhc3JjLT5wcmVlbXB0ZWQ7Cj4gK30KPiArUFZfQ0FMTEVF X1NBVkVfUkVHU19USFVOSyhfX2t2bV92Y3B1X2lzX3ByZWVtcHRlZCk7Cj4gKwo+ICAvKgo+ICAg KiBTZXR1cCBwdl9sb2NrX29wcyB0byBleHBsb2l0IEtWTV9GRUFUVVJFX1BWX1VOSEFMVCBpZiBw cmVzZW50Lgo+ICAgKi8KPiBAQCAtNjIwLDYgKzYxNiwxMiBAQCB2b2lkIF9faW5pdCBrdm1fc3Bp bmxvY2tfaW5pdCh2b2lkKQo+ICAJcHZfbG9ja19vcHMucXVldWVkX3NwaW5fdW5sb2NrID0gUFZf Q0FMTEVFX1NBVkUoX19wdl9xdWV1ZWRfc3Bpbl91bmxvY2spOwo+ICAJcHZfbG9ja19vcHMud2Fp dCA9IGt2bV93YWl0Owo+ICAJcHZfbG9ja19vcHMua2ljayA9IGt2bV9raWNrX2NwdTsKPiArCXB2 X2xvY2tfb3BzLnZjcHVfaXNfcHJlZW1wdGVkID0gUFZfQ0FMTEVFX1NBVkUoX19uYXRpdmVfdmNw dV9pc19wcmVlbXB0ZWQpOwo+ICsKPiArCWlmIChrdm1fcGFyYV9oYXNfZmVhdHVyZShLVk1fRkVB VFVSRV9TVEVBTF9USU1FKSkgewo+ICsJCXB2X2xvY2tfb3BzLnZjcHVfaXNfcHJlZW1wdGVkID0K PiArCQkJUFZfQ0FMTEVFX1NBVkUoX19rdm1fdmNwdV9pc19wcmVlbXB0ZWQpOwo+ICsJfQo+ICB9 Cj4KPiAgc3RhdGljIF9faW5pdCBpbnQga3ZtX3NwaW5sb2NrX2luaXRfanVtcCh2b2lkKQo+IC0t LSBhL2FyY2gveDg2L2tlcm5lbC9wYXJhdmlydC1zcGlubG9ja3MuYwo+ICsrKyBiL2FyY2gveDg2 L2tlcm5lbC9wYXJhdmlydC1zcGlubG9ja3MuYwo+IEBAIC0xMiw3ICsxMiw2IEBAIF9fdmlzaWJs ZSB2b2lkIF9fbmF0aXZlX3F1ZXVlZF9zcGluX3VubG8KPiAgewo+ICAJbmF0aXZlX3F1ZXVlZF9z cGluX3VubG9jayhsb2NrKTsKPiAgfQo+IC0KPiAgUFZfQ0FMTEVFX1NBVkVfUkVHU19USFVOSyhf X25hdGl2ZV9xdWV1ZWRfc3Bpbl91bmxvY2spOwo+Cj4gIGJvb2wgcHZfaXNfbmF0aXZlX3NwaW5f dW5sb2NrKHZvaWQpCj4gQEAgLTIxLDkgKzIwLDE2IEBAIGJvb2wgcHZfaXNfbmF0aXZlX3NwaW5f dW5sb2NrKHZvaWQpCj4gIAkJX19yYXdfY2FsbGVlX3NhdmVfX19uYXRpdmVfcXVldWVkX3NwaW5f dW5sb2NrOwo+ICB9Cj4KPiAtc3RhdGljIGJvb2wgbmF0aXZlX3ZjcHVfaXNfcHJlZW1wdGVkKGlu dCBjcHUpCj4gK19fdmlzaWJsZSBib29sIF9fbmF0aXZlX3ZjcHVfaXNfcHJlZW1wdGVkKGludCBj cHUpCj4gIHsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gK1BWX0NBTExF RV9TQVZFX1JFR1NfVEhVTksoX19uYXRpdmVfdmNwdV9pc19wcmVlbXB0ZWQpOwo+ICsKPiArYm9v bCBwdl9pc19uYXRpdmVfdmNwdV9pc19wcmVlbXB0ZWQodm9pZCkKPiArewo+ICsJcmV0dXJuIHB2 X2xvY2tfb3BzLnF1ZXVlZF9zcGluX3VubG9jay5mdW5jID09Cj4gKwkJX19yYXdfY2FsbGVlX3Nh dmVfX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZDsKPiAgfQo+CmNvcHktcGFzdGUgaXNzdWUuLi4K Cj4gIHN0cnVjdCBwdl9sb2NrX29wcyBwdl9sb2NrX29wcyA9IHsKPiBAQCAtMzIsNyArMzgsNyBA QCBzdHJ1Y3QgcHZfbG9ja19vcHMgcHZfbG9ja19vcHMgPSB7Cj4gIAkucXVldWVkX3NwaW5fdW5s b2NrID0gUFZfQ0FMTEVFX1NBVkUoX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKSwKPiAgCS53 YWl0ID0gcGFyYXZpcnRfbm9wLAo+ICAJLmtpY2sgPSBwYXJhdmlydF9ub3AsCj4gLQkudmNwdV9p c19wcmVlbXB0ZWQgPSBuYXRpdmVfdmNwdV9pc19wcmVlbXB0ZWQsCj4gKwkudmNwdV9pc19wcmVl bXB0ZWQgPSBQVl9DQUxMRUVfU0FWRShfX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCksCj4gICNl bmRpZiAvKiBTTVAgKi8KPiAgfTsKPiAgRVhQT1JUX1NZTUJPTChwdl9sb2NrX29wcyk7Cj4gLS0t IGEvYXJjaC94ODYva2VybmVsL3BhcmF2aXJ0X3BhdGNoXzMyLmMKPiArKysgYi9hcmNoL3g4Ni9r ZXJuZWwvcGFyYXZpcnRfcGF0Y2hfMzIuYwo+IEBAIC0xMSw2ICsxMSw3IEBAIERFRl9OQVRJVkUo cHZfbW11X29wcywgcmVhZF9jcjMsICJtb3YgJWMKPgo+ICAjaWYgZGVmaW5lZChDT05GSUdfUEFS QVZJUlRfU1BJTkxPQ0tTKQo+ICBERUZfTkFUSVZFKHB2X2xvY2tfb3BzLCBxdWV1ZWRfc3Bpbl91 bmxvY2ssICJtb3ZiICQwLCAoJWVheCkiKTsKPiArREVGX05BVElWRShwdl9sb2NrX29wcywgdmNw dV9pc19wcmVlbXB0ZWQsICJtb3ZsICQwLCAlZWF4Iik7Cj4gICNlbmRpZgo+Cj4gIHVuc2lnbmVk IHBhcmF2aXJ0X3BhdGNoX2lkZW50XzMyKHZvaWQgKmluc25idWYsIHVuc2lnbmVkIGxlbikKPiBA QCAtMjYsNiArMjcsNyBAQCB1bnNpZ25lZCBwYXJhdmlydF9wYXRjaF9pZGVudF82NCh2b2lkICpp Cj4gIH0KPgo+ICBleHRlcm4gYm9vbCBwdl9pc19uYXRpdmVfc3Bpbl91bmxvY2sodm9pZCk7Cj4g K2V4dGVybiBib29sIHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCh2b2lkKTsKPgo+ICB1 bnNpZ25lZCBuYXRpdmVfcGF0Y2godTggdHlwZSwgdTE2IGNsb2JiZXJzLCB2b2lkICppYnVmLAo+ ICAJCSAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKQo+IEBAIC01NCw2ICs1 NiwxMiBAQCB1bnNpZ25lZCBuYXRpdmVfcGF0Y2godTggdHlwZSwgdTE2IGNsb2JiCj4gIAkJCQll bmQgICA9IGVuZF9wdl9sb2NrX29wc19xdWV1ZWRfc3Bpbl91bmxvY2s7Cj4gIAkJCQlnb3RvIHBh dGNoX3NpdGU7Cj4gIAkJCX0KPiArCQljYXNlIFBBUkFWSVJUX1BBVENIKHB2X2xvY2tfb3BzLnZj cHVfaXNfcHJlZW1wdGVkKToKPiArCQkJaWYgKHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRl ZCgpKSB7Cj4gKwkJCQlzdGFydCA9IHN0YXJ0X3B2X2xvY2tfb3BzX3ZjcHVfaXNfcHJlZW1wdGVk Owo+ICsJCQkJZW5kICAgPSBlbmRfcHZfbG9ja19vcHNfdmNwdV9pc19wcmVlbXB0ZWQ7Cj4gKwkJ CQlnb3RvIHBhdGNoX3NpdGU7Cj4gKwkJCX0KPiAgI2VuZGlmCj4KPiAgCWRlZmF1bHQ6Cj4gLS0t IGEvYXJjaC94ODYva2VybmVsL3BhcmF2aXJ0X3BhdGNoXzY0LmMKPiArKysgYi9hcmNoL3g4Ni9r ZXJuZWwvcGFyYXZpcnRfcGF0Y2hfNjQuYwo+IEBAIC0yMCw2ICsyMCw3IEBAIERFRl9OQVRJVkUo LCBtb3Y2NCwgIm1vdiAlcmRpLCAlcmF4Iik7Cj4KPiAgI2lmIGRlZmluZWQoQ09ORklHX1BBUkFW SVJUX1NQSU5MT0NLUykKPiAgREVGX05BVElWRShwdl9sb2NrX29wcywgcXVldWVkX3NwaW5fdW5s b2NrLCAibW92YiAkMCwgKCVyZGkpIik7Cj4gK0RFRl9OQVRJVkUocHZfbG9ja19vcHMsIHZjcHVf aXNfcHJlZW1wdGVkLCAibW92bCAkMCwgcmF4Iik7Cj4gICNlbmRpZgo+Cj4gIHVuc2lnbmVkIHBh cmF2aXJ0X3BhdGNoX2lkZW50XzMyKHZvaWQgKmluc25idWYsIHVuc2lnbmVkIGxlbikKPiBAQCAt MzUsNiArMzYsNyBAQCB1bnNpZ25lZCBwYXJhdmlydF9wYXRjaF9pZGVudF82NCh2b2lkICppCj4g IH0KPgo+ICBleHRlcm4gYm9vbCBwdl9pc19uYXRpdmVfc3Bpbl91bmxvY2sodm9pZCk7Cj4gK2V4 dGVybiBib29sIHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCh2b2lkKTsKPgo+ICB1bnNp Z25lZCBuYXRpdmVfcGF0Y2godTggdHlwZSwgdTE2IGNsb2JiZXJzLCB2b2lkICppYnVmLAo+ICAJ CSAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKQo+IEBAIC02Niw2ICs2OCwx MiBAQCB1bnNpZ25lZCBuYXRpdmVfcGF0Y2godTggdHlwZSwgdTE2IGNsb2JiCj4gIAkJCQllbmQg ICA9IGVuZF9wdl9sb2NrX29wc19xdWV1ZWRfc3Bpbl91bmxvY2s7Cj4gIAkJCQlnb3RvIHBhdGNo X3NpdGU7Cj4gIAkJCX0KPiArCQljYXNlIFBBUkFWSVJUX1BBVENIKHB2X2xvY2tfb3BzLnZjcHVf aXNfcHJlZW1wdGVkKToKPiArCQkJaWYgKHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCgp KSB7Cj4gKwkJCQlzdGFydCA9IHN0YXJ0X3B2X2xvY2tfb3BzX3ZjcHVfaXNfcHJlZW1wdGVkOwo+ ICsJCQkJZW5kICAgPSBlbmRfcHZfbG9ja19vcHNfdmNwdV9pc19wcmVlbXB0ZWQ7Cj4gKwkJCQln b3RvIHBhdGNoX3NpdGU7Cj4gKwkJCX0KPiAgI2VuZGlmCj4KPiAgCWRlZmF1bHQ6Cj4gLS0tIGEv YXJjaC94ODYveGVuL3NwaW5sb2NrLmMKPiArKysgYi9hcmNoL3g4Ni94ZW4vc3BpbmxvY2suYwo+ IEBAIC0xMTQsNiArMTE0LDggQEAgdm9pZCB4ZW5fdW5pbml0X2xvY2tfY3B1KGludCBjcHUpCj4g IAlwZXJfY3B1KGlycV9uYW1lLCBjcHUpID0gTlVMTDsKPiAgfQo+Cj4gK1BWX0NBTExFRV9TQVZF X1JFR1NfVEhVTksoeGVuX3ZjcHVfc3RvbGVuKTsKPiArCj4gIC8qCj4gICAqIE91ciBpbml0IG9m IFBWIHNwaW5sb2NrcyBpcyBzcGxpdCBpbiB0d28gaW5pdCBmdW5jdGlvbnMgZHVlIHRvIHVzCj4g ICAqIHVzaW5nIHBhcmF2aXJ0IHBhdGNoaW5nIGFuZCBqdW1wIGxhYmVscyBwYXRjaGluZyBhbmQg aGF2aW5nIHRvIGRvCj4gQEAgLTEzNiw4ICsxMzgsNyBAQCB2b2lkIF9faW5pdCB4ZW5faW5pdF9z cGlubG9ja3Modm9pZCkKPiAgCXB2X2xvY2tfb3BzLnF1ZXVlZF9zcGluX3VubG9jayA9IFBWX0NB TExFRV9TQVZFKF9fcHZfcXVldWVkX3NwaW5fdW5sb2NrKTsKPiAgCXB2X2xvY2tfb3BzLndhaXQg PSB4ZW5fcWxvY2tfd2FpdDsKPiAgCXB2X2xvY2tfb3BzLmtpY2sgPSB4ZW5fcWxvY2tfa2ljazsK PiAtCj4gLQlwdl9sb2NrX29wcy52Y3B1X2lzX3ByZWVtcHRlZCA9IHhlbl92Y3B1X3N0b2xlbjsK PiArCXB2X2xvY2tfb3BzLnZjcHVfaXNfcHJlZW1wdGVkID0gUFZfQ0FMTEVFX1NBVkUoeGVuX3Zj cHVfc3RvbGVuKTsKPiAgfQo+Cj4gIC8qCj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXph dGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRh dGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==