From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: Re: [PATCH v5 5/8] microcode: split out apply_microcode() from cpu_request_microcode() Date: Tue, 29 Jan 2019 20:47:07 +0800 Message-ID: <20190129124705.GA8249@gao-cwp> References: <1548659210-16870-1-git-send-email-chao.gao@intel.com> <1548659210-16870-6-git-send-email-chao.gao@intel.com> <20190129095811.j3q5fudvobsrhjca@mac> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1goSjL-0005jK-NV for xen-devel@lists.xenproject.org; Tue, 29 Jan 2019 12:43:07 +0000 Content-Disposition: inline In-Reply-To: <20190129095811.j3q5fudvobsrhjca@mac> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau =?iso-8859-1?Q?Monn=E9?= Cc: xen-devel@lists.xenproject.org, Wei Liu , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBKYW4gMjksIDIwMTkgYXQgMTA6NTg6MTFBTSArMDEwMCwgUm9nZXIgUGF1IE1vbm7D qSB3cm90ZToKPk9uIE1vbiwgSmFuIDI4LCAyMDE5IGF0IDAzOjA2OjQ3UE0gKzA4MDAsIENoYW8g R2FvIHdyb3RlOgo+PiBEdXJpbmcgbGF0ZSBtaWNyb2NvZGUgdXBkYXRlLCBhcHBseV9taWNyb2Nv ZGUoKSBpcyBpbnZva2VkIGluCj4+IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLiBUbyBtYWtlIGxh dGUgbWljcm9jb2RlIHVwZGF0ZSBtb3JlIHJlbGlhYmxlLAo+PiB3ZSB3YW50IHRvIHB1dCB0aGUg YXBwbHlfbWljcm9jb2RlKCkgaW50byBzdG9wX21hY2hpbmUgY29udGV4dC4gU28KPj4gd2Ugc3Bs aXQgb3V0IGl0IGZyb20gY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkuIEFzIGEgY29uc2VxdWVuY2Us Cj4+IGFwcGx5X21pY3JvY29kZSgpIHNob3VsZCBiZSBpbnZva2VkIGV4cGxpY2l0bHkgaW4gdGhl IGNvbW1vbiBjb2RlLgo+PiAKPj4gQWxzbyB3aXRoIHRoZSBnbG9iYWwgdWNvZGUgY2FjaGUsIG1p Y3JvY29kZSBwYXJzaW5nIG9ubHkgbmVlZHMKPj4gdG8gYmUgZG9uZSBvbmNlOyBjcHVfcmVxdWVz dF9taWNyb2NvZGUoKSBpcyBhbHNvIG1vdmVkIG91dCBvZgo+PiBtaWNyb2NvZGVfdXBkYXRlX2Nw dSgpLgo+PiAKPj4gT24gQU1EIHNpZGUsIHN2bV9ob3N0X29zdndfaW5pdCgpIGlzIHN1cHBvc2Vk IHRvIGJlIGNhbGxlZCBhZnRlcgo+PiBtaWNyb2NvZGUgdXBkYXRlLiBBcyBhcHBseV9taWNyY29k ZSgpIHdvbid0IGJlIGNhbGxlZCBieQo+PiBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSBub3csIHN2 bV9ob3N0X29zdndfaW5pdCgpIGlzIGFsc28gbW92ZWQgdG8gdGhlCj4+IGVuZCBvZiBhcHBseV9t aWNyb2NvZGUoKS4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRl bC5jb20+Cj4+IC0tLQo+PiAgeGVuL2FyY2gveDg2L21pY3JvY29kZS5jICAgICAgIHwgODAgKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4+ICB4ZW4vYXJjaC94ODYv bWljcm9jb2RlX2FtZC5jICAgfCAyMyArKysrKysrLS0tLS0KPj4gIHhlbi9hcmNoL3g4Ni9taWNy b2NvZGVfaW50ZWwuYyB8IDIwICsrLS0tLS0tLS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDY0IGlu c2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwo+PiBpbmRleCAwYzc3 ZTkwLi45MzZmMGI4IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKPj4g KysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCj4+IEBAIC0yNTQsNDcgKzI1NCw0MiBAQCBz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpmaW5kX3BhdGNoKHVuc2lnbmVkIGludCBjcHUpCj4+ICAg ICAgcmV0dXJuIE5VTEw7Cj4+ICB9Cj4+ICAKPj4gLWludCBtaWNyb2NvZGVfcmVzdW1lX2NwdSh1 bnNpZ25lZCBpbnQgY3B1KQo+PiArLyoKPj4gKyAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHVjb2Rl IHBhdGNoIGluc2VydGVkIHRvIHRoZSBnbG9iYWwgY2FjaGUuCj4+ICsgKiBSZXR1cm4gbmVndGl2 ZSB2YWx1ZSBvbiBlcnJvci4KPj4gKyAqLwo+PiArc3RhdGljIGludCBwYXJzZV9taWNyb2NvZGVf YmxvYihjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW4pCj4+ICB7Cj4+IC0gICAgaW50IGVy cjsKPj4gKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwo+PiAgICAg IHN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNpID0gJnBlcl9jcHUodWNvZGVfY3B1X2luZm8sIGNw dSk7Cj4+IC0KPj4gLSAgICBpZiAoICFtaWNyb2NvZGVfb3BzICkKPj4gLSAgICAgICAgcmV0dXJu IDA7Cj4+ICsgICAgaW50IHJldDsKPj4gIAo+PiAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211 dGV4KTsKPj4gLQo+PiAtICAgIGVyciA9IG1pY3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8o Y3B1LCAmdWNpLT5jcHVfc2lnKTsKPj4gLSAgICBpZiAoIGVyciApCj4+IC0gICAgewo+PiArICAg IHJldCA9IG1pY3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oY3B1LCAmdWNpLT5jcHVfc2ln KTsKPj4gKyAgICBpZiAoIGxpa2VseSghcmV0KSApCj4+ICsgICAgICAgIHJldCA9IG1pY3JvY29k ZV9vcHMtPmNwdV9yZXF1ZXN0X21pY3JvY29kZShjcHUsIGJ1ZmZlciwgbGVuKTsKPj4gKyAgICBl bHNlCj4+ICAgICAgICAgIG1pY3JvY29kZV9maW5pX2NwdShjcHUpOwo+PiAtICAgICAgICBzcGlu X3VubG9jaygmbWljcm9jb2RlX211dGV4KTsKPj4gLSAgICAgICAgcmV0dXJuIGVycjsKPj4gLSAg ICB9Cj4+IC0KPj4gLSAgICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5hcHBseV9taWNyb2NvZGUoY3B1 KTsKPj4gICAgICBzcGluX3VubG9jaygmbWljcm9jb2RlX211dGV4KTsKPj4gIAo+PiAtICAgIHJl dHVybiBlcnI7Cj4+ICsgICAgcmV0dXJuIHJldDsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIGludCBt aWNyb2NvZGVfdXBkYXRlX2NwdShjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXplKQo+PiArc3Rh dGljIGludCBtaWNyb2NvZGVfdXBkYXRlX2NwdSh2b2lkKQo+PiAgewo+PiAtICAgIGludCBlcnI7 Cj4+IC0gICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPj4gLSAgICBz dHJ1Y3QgdWNvZGVfY3B1X2luZm8gKnVjaSA9ICZwZXJfY3B1KHVjb2RlX2NwdV9pbmZvLCBjcHUp Owo+PiArICAgIGludCByZXQ7Cj4+ICAKPj4gICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9tdXRl eCk7Cj4+IC0KPj4gLSAgICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKGNw dSwgJnVjaS0+Y3B1X3NpZyk7Cj4+IC0gICAgaWYgKCBsaWtlbHkoIWVycikgKQo+PiAtICAgICAg ICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5jcHVfcmVxdWVzdF9taWNyb2NvZGUoY3B1LCBidWYsIHNp emUpOwo+PiAtICAgIGVsc2UKPj4gLSAgICAgICAgbWljcm9jb2RlX2ZpbmlfY3B1KGNwdSk7Cj4+ IC0KPj4gKyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5hcHBseV9taWNyb2NvZGUoc21wX3Byb2Nl c3Nvcl9pZCgpKTsKPgo+SSd2ZSByZWFsaXplZCB0aGF0IG1vc3Qgb2YgdGhpcyBoZWxwZXJzIHRh a2UgYSBjcHUgaWQgcGFyYW1ldGVyCj4oYXBwbHlfbWljcm9jb2RlLCBjb2xsZWN0X2NwdV9pbmZv IGFuZCBjcHVfcmVxdWVzdF9taWNyb2NvZGUpLCBidXQKPnRoYXQgYXQgbGVhc3Qgb24gSW50ZWwg dGhleSBhcmUgcmVxdWlyZWQgdG8gYmUgY2FsbGVkIG9uIHRoZSBjdXJyZW50Cj5DUFUsIGF0IHdo aWNoIHBvaW50IEkgd29uZGVyIGFib3V0IHRoZWlyIHB1cnBvc2UuIElNTyB0aGV5IGp1c3QgbWFr ZQo+dGhlIGludGVyZmFjZSBtb3JlIG1lc3N5LCB3aXRob3V0IGFkZGluZyBhbnkgZnVuY3Rpb25h bGl0eS4KCkkgYWdyZWUgd2l0aCB5b3UgYW5kIHdpbGwgcmVtb3ZlIHRoZSAnY3B1JyBwYXJhbWV0 ZXIgZnJvbSB0aGUgaW50ZXJmYWNlcwp5b3UgbWVudGlvbmVkIGFib3ZlLgoKPgo+PiAgICAgIHNw aW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwo+PiAgCj4+IC0gICAgcmV0dXJuIGVycjsKPj4g KyAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtpbnQgbWljcm9jb2RlX3Jlc3VtZV9jcHUo dW5zaWduZWQgaW50IGNwdSkKPj4gK3sKPj4gKyAgICBCVUdfT04oY3B1ICE9IHNtcF9wcm9jZXNz b3JfaWQoKSk7Cj4KPlNhbWUgaGVyZSwgd2hhdCdzIHRoZSBwb2ludCBvZiBwYXNzaW5nIGEgY3B1 IGlkIGFzIHBhcmFtZXRlciB3aGVuCj50aGVyZSdzIG9ubHkgb25lIHZhbGlkIHZhbHVlPwo+Cj4+ ICsgICAgcmV0dXJuIG1pY3JvY29kZV9vcHMgPyBtaWNyb2NvZGVfdXBkYXRlX2NwdSgpIDogMDsK Pj4gIH0KPj4gIAo+PiAgc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpfaW5m bykKPj4gQEAgLTMwNCw3ICsyOTksNyBAQCBzdGF0aWMgbG9uZyBkb19taWNyb2NvZGVfdXBkYXRl KHZvaWQgKl9pbmZvKQo+PiAgCj4+ICAgICAgQlVHX09OKGluZm8tPmNwdSAhPSBzbXBfcHJvY2Vz c29yX2lkKCkpOwo+PiAgCj4+IC0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShpbmZv LT5idWZmZXIsIGluZm8tPmJ1ZmZlcl9zaXplKTsKPj4gKyAgICBlcnJvciA9IG1pY3JvY29kZV91 cGRhdGVfY3B1KCk7Cj4+ICAgICAgaWYgKCBlcnJvciApCj4+ICAgICAgICAgIGluZm8tPmVycm9y ID0gZXJyb3I7Cj4+ICAKPj4gQEAgLTMzOSwxMCArMzM0LDYgQEAgaW50IG1pY3JvY29kZV91cGRh dGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcg bGVuKQo+PiAgICAgICAgICByZXR1cm4gcmV0Owo+PiAgICAgIH0KPj4gIAo+PiAtICAgIGluZm8t PmJ1ZmZlcl9zaXplID0gbGVuOwo+PiAtICAgIGluZm8tPmVycm9yID0gMDsKPj4gLSAgICBpbmZv LT5jcHUgPSBjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCk7Cj4+IC0KPj4gICAgICBpZiAo IG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCj4+ICAgICAgewo+PiAgICAgICAgICByZXQg PSBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUoKTsKPj4gQEAgLTM1Myw2ICszNDQsMTggQEAg aW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBi dWYsIHVuc2lnbmVkIGxvbmcgbGVuKQo+PiAgICAgICAgICB9Cj4+ICAgICAgfQo+PiAgCj4+ICsg ICAgcmV0ID0gcGFyc2VfbWljcm9jb2RlX2Jsb2IoaW5mby0+YnVmZmVyLCBsZW4pOwo+PiArICAg IGlmICggcmV0IDw9IDAgKQo+PiArICAgIHsKPj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIg Ik5vIHZhbGlkIG9yIG5ld2VyIHVjb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnQhXG4iKTsKPj4gKyAg ICAgICAgeGZyZWUoaW5mbyk7Cj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgIH0K Pj4gKwo+PiArICAgIGluZm8tPmJ1ZmZlcl9zaXplID0gbGVuOwo+PiArICAgIGluZm8tPmVycm9y ID0gMDsKPj4gKyAgICBpbmZvLT5jcHUgPSBjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCk7 Cj4KPkl0IGxvb2tzIGxpa2UgeW91IGNhbiBhbHNvIGdldCByaWQgb2YgdGhlIGNwdSBmaWVsZCBp biBtaWNyb2NvZGVfaW5mbywKPnNpbmNlIGl0J3MgYWx3YXlzIHNtcF9wcm9jZXNzb3JfaWQ/CgpZ ZXMuIFdpbGwgcmVtb3ZlIHRoZSAnY3B1JyBmaWVsZC4KCj4KPj4gKwo+PiAgICAgIHJldHVybiBj b250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8tPmNwdSwgZG9fbWljcm9jb2RlX3VwZGF0ZSwg aW5mbyk7Cj4+ICB9Cj4+ICAKPj4gQEAgLTM5NiwxMyArMzk5LDI0IEBAIGludCBfX2luaXQgZWFy bHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoYm9vbCBzdGFydF91cGRhdGUpCj4+ICAgICAgfQo+PiAg ICAgIGlmICggZGF0YSApCj4+ICAgICAgewo+PiArICAgICAgICBzdGF0aWMgYm9vbCBwYXJzZWQg PSBmYWxzZTsKPj4gKwo+PiAgICAgICAgICBpZiAoIHN0YXJ0X3VwZGF0ZSAmJiBtaWNyb2NvZGVf b3BzLT5zdGFydF91cGRhdGUgKQo+PiAgICAgICAgICAgICAgcmMgPSBtaWNyb2NvZGVfb3BzLT5z dGFydF91cGRhdGUoKTsKPj4gIAo+PiAgICAgICAgICBpZiAoIHJjICkKPj4gICAgICAgICAgICAg IHJldHVybiByYzsKPj4gIAo+PiAtICAgICAgICByZXR1cm4gbWljcm9jb2RlX3VwZGF0ZV9jcHUo ZGF0YSwgbGVuKTsKPj4gKyAgICAgICAgaWYgKCAhcGFyc2VkICkKPj4gKyAgICAgICAgewo+PiAr ICAgICAgICAgICAgcmMgPSBwYXJzZV9taWNyb2NvZGVfYmxvYihkYXRhLCBsZW4pOwo+PiArICAg ICAgICAgICAgcGFyc2VkID0gdHJ1ZTsKPj4gKwo+PiArICAgICAgICAgICAgaWYgKCByYyA8PSAw ICkKPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKyAgICAgICAgfQo+PiAr Cj4+ICsgICAgICAgIHJldHVybiBtaWNyb2NvZGVfdXBkYXRlX2NwdSgpOwo+Cj5IbSwgdGhlIHVz YWdlIG9mIHBhcnNlZCBoZXJlIGlzIGtpbmQgb2YgZGFuZ2Vyb3VzLiBJIGFzc3VtZSB0aGlzIHdv cmtzCj5maW5lIGJlY2F1c2UgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUgaXMgY2FsbGVkIGZy b20gdGhlIEJTUCBpbgo+ZWFybHlfbWljcm9jb2RlX2luaXQsIGFuZCB0aGVuIGNvbmN1cnJlbnQg Y2FsbHMgZG9uZSBieSB0aGUgQVBzIGFsd2F5cwo+c2VlIHBhcnNlZCBhcyB0cnVlLgoKSSB0aGlu ayBBUHMgYXJlIHdva2VuIHVwIG9uZS1ieS1vbmUuIFNlZSB0aGUgY2FsbCBzaXRlIG9mIGNwdV91 cCBpbgpfX3N0YXJ0X3hlbi4KCj4KPkkgd291bGQgaG93ZXZlciByZWNvbW1lbmQgdGhhdCB5b3Ug bW92ZSB0aGUgcGFyc2luZyB0bwo+ZWFybHlfbWljcm9jb2RlX2luaXQsIGFuZCB0aGF0IGVhcmx5 X21pY3JvY29kZV91cGRhdGVfY3B1IGFsd2F5cwo+YXNzdW1lIHRoZSBibG9iIGhhcyBiZWVuIHBh cnNlZC4KPgo+SWYgdGhhdCBkb2Vzbid0IHdvcmsgZm9yIHNvbWUgcmVhc29uLCBJIHdvdWxkIHRo ZW4gcmVjb21tZW5kIHRoYXQgeW91Cj5nYXRlIHRoZSBwYXJzaW5nIGJhc2VkIG9uIGNwdV9pZCwg c28gInNtcF9wcm9jZXNzb3JfaWQoKSA9PSAwIgoKRG8geW91IHRoaW5rIGl0IGlzIGJldHRlcjoK cmVtb3ZlIHRoZSBwYXJzZWQgZmxhZyBhbmQgY2hlY2sgd2hldGhlciBjdXJyZW50IGNwdSBpcyBi c3AgaW4KZWFybHlfbWljcm9jb2RlX2luaXQoKTsgYnNwIGNhbGxzIHRoZSBlYXJseV9taWNyb2Nv ZGVfdXBkYXRlX2NwdSgpLiBBUHMKanVzdCBjYWxsIG1pY3JvY29kZV91cGRhdGVfY3B1KCkuCgo+ Cj4+ICAgICAgfQo+PiAgICAgIGVsc2UKPj4gICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jIGIveGVuL2FyY2gveDg2L21p Y3JvY29kZV9hbWQuYwo+PiBpbmRleCBkODZhNTk2Li44MGUyNzRlIDEwMDY0NAo+PiAtLS0gYS94 ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jCj4+ICsrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2Nv ZGVfYW1kLmMKPj4gQEAgLTI5Nyw2ICsyOTcsMTAgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2Nv ZGUodW5zaWduZWQgaW50IGNwdSkKPj4gIAo+PiAgICAgIHVjaS0+Y3B1X3NpZy5yZXYgPSByZXY7 Cj4+ICAKPj4gKyNpZiBDT05GSUdfSFZNCj4+ICsgICAgc3ZtX2hvc3Rfb3N2d19pbml0KCk7Cj4+ ICsjZW5kaWYKPj4gKwo+PiAgICAgIHJldHVybiAwOwo+PiAgfQo+PiAgCj4+IEBAIC00NjMsNiAr NDY3LDcgQEAgc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUodW5zaWduZWQgaW50IGNw dSwgY29uc3Qgdm9pZCAqYnVmLAo+PiAgICAgIHN0cnVjdCB1Y29kZV9jcHVfaW5mbyAqdWNpID0g JnBlcl9jcHUodWNvZGVfY3B1X2luZm8sIGNwdSk7Cj4+ICAgICAgdW5zaWduZWQgaW50IGN1cnJl bnRfY3B1X2lkOwo+PiAgICAgIHVuc2lnbmVkIGludCBlcXVpdl9jcHVfaWQ7Cj4+ICsgICAgdW5z aWduZWQgaW50IG1hdGNoZWRfY250ID0gMDsKPj4gIAo+PiAgICAgIC8qIFdlIHNob3VsZCBiaW5k IHRoZSB0YXNrIHRvIHRoZSBDUFUgKi8KPj4gICAgICBCVUdfT04oY3B1ICE9IHJhd19zbXBfcHJv Y2Vzc29yX2lkKCkpOwo+PiBAQCAtNTY0LDExICs1NjksMTUgQEAgc3RhdGljIGludCBjcHVfcmVx dWVzdF9taWNyb2NvZGUodW5zaWduZWQgaW50IGNwdSwgY29uc3Qgdm9pZCAqYnVmLAo+PiAgICAg ICAgICAgKiB0aGlzIHVjb2RlIHBhdGNoIGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIGl0IG1hdGNo ZXMgd2l0aAo+PiAgICAgICAgICAgKiBjdXJyZW50IENQVS4KPj4gICAgICAgICAgICovCj4+IC0g ICAgICAgIGlmICggc2F2ZV9wYXRjaChtaWNyb2NvZGVfcGF0Y2gpICYmIG1pY3JvY29kZV9maXRz KG1jX2FtZCwgY3B1KSApCj4+ICsgICAgICAgIGlmICggc2F2ZV9wYXRjaChtaWNyb2NvZGVfcGF0 Y2gpICkKPj4gICAgICAgICAgewo+PiAtICAgICAgICAgICAgZXJyb3IgPSBhcHBseV9taWNyb2Nv ZGUoY3B1KTsKPj4gLSAgICAgICAgICAgIGlmICggZXJyb3IgKQo+PiAtICAgICAgICAgICAgICAg IGJyZWFrOwo+PiArICAgICAgICAgICAgbWF0Y2hlZF9jbnQrKzsKPj4gKyAgICAgICAgICAgIGlm ICggbWljcm9jb2RlX2ZpdHMobWNfYW1kLCBjcHUpICkKPj4gKyAgICAgICAgICAgIHsKPj4gKyAg ICAgICAgICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZShjcHUpOwo+PiArICAgICAgICAg ICAgICAgIGlmICggZXJyb3IgKQo+PiArICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAg ICAgICAgICAgIH0KPgo+SW4gdGhlIGNvbW1pdCBtZXNzYWdlIHlvdSBtZW50aW9uIHRoYXQgYXBw bHlfbWljcm9jb2RlIHdvbid0IGJlIGNhbGxlZAo+YnkgY3B1X3JlcXVlc3RfbWljcm9jb2RlLCB5 ZXQgaXQgc2VlbXMgaXQncyBjYWxsZWQ/CgpsaW5lcyBiZWxvdyAibWF0Y2hlZF9jbnQrKyIgc2hv dWxkIGJlIHJlbW92ZWQuIFRoZXkgc2xpcHBlZCBpbiB3aGVuIEkKZGlkIGEgcmViYXNpbmcuCgpU aGFua3MKQ2hhbwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==