From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: Re: [PATCH v9 05/25] x86: refactor psr: L3 CAT: implement CPU init and free flow. Date: Mon, 27 Mar 2017 12:41:50 +0800 Message-ID: <20170327044150.GY17458@yi.y.sun> References: <1489662495-5375-1-git-send-email-yi.y.sun@linux.intel.com> <1489662495-5375-6-git-send-email-yi.y.sun@linux.intel.com> <58D55CE2020000780014793E@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csMT8-0001bZ-Hz for xen-devel@lists.xenproject.org; Mon, 27 Mar 2017 04:41:26 +0000 Content-Disposition: inline In-Reply-To: <58D55CE2020000780014793E@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: kevin.tian@intel.com, wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, mengxu@cis.upenn.edu, xen-devel@lists.xenproject.org, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org T24gMTctMDMtMjQgMTA6NTI6MzQsIEphbiBCZXVsaWNoIHdyb3RlOgo+ID4+PiBPbiAxNi4wMy4x NyBhdCAxMjowNywgPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiAtLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwo+ID4gQEAgLTE4 LDYgKzE4LDcgQEAKPiA+ICAjaW5jbHVkZSA8eGVuL2luaXQuaD4KPiA+ICAjaW5jbHVkZSA8eGVu L3NjaGVkLmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS9wc3IuaD4KPiA+ICsjaW5jbHVkZSA8YXNtL3g4 Nl9lbXVsYXRlLmg+Cj4gCj4gSSdtIHByZXR0eSBzdXJlIHlvdSBkb24ndCBuZWVkIHRoaXMuIElm IGFueXRoaW5nIHlvdSBuZWVkCj4gcHJvY2Vzc29yLmggKGFzIHRoYXQncyB3aGVyZSB0aGUgcHJl dmlvdXMgcGF0Y2ggcHV0Cj4gY3B1aWRfY291bnRfbGVhZigpKSwgYnV0IEknbSByYXRoZXIgY29u dmluY2VkIHRoYXQgdGhlIGhlYWRlciB3YXMKPiBhbHJlYWR5IGluY2x1ZGVkIGluZGlyZWN0bHkg YXQgdGhpcyBwb2ludC4KPiAKWWVzLCB5b3UgYXJlIHJpZ2h0LiBJdCBpcyBpbmRpcmVjdGx5IGlu Y2x1ZGVkIHRocm91Z2ggJ3NjaGVkLmgnLgoKPiA+IEBAIC00Niw2ICs1MCw5IEBACj4gPiAgICov Cj4gPiAgI2RlZmluZSBNQVhfQ09TX1JFR19DTlQgIDEyOAo+ID4gIAo+ID4gKy8qIENBVCBmZWF0 dXJlcyB1c2UgMSBDT1MgcmVnaXN0ZXIgaW4gb25lIGFjY2Vzcy4gKi8KPiA+ICsjZGVmaW5lIENB VF9DT1NfTlVNICAgICAgMQo+IAo+IFdpdGggaXQgYmVpbmcgc3RvcmVkIGludG8gdGhlIGZlYXR1 cmUgbm9kZSBub3cgSSBkb24ndCBzZWUgd2h5IHlvdQo+IG5lZWQgdGhpcyBjb25zdGFudCBhbnlt b3JlLiBBbmQgaW5kZWVkIGl0J3MgYmVpbmcgdXNlZCBleGFjdGx5Cj4gb25jZS4KPiAKSSByZW1l bWJlciBzb21lYm9keSBzdWdnZXN0ZWQgbWUgbm90IHRvIHVzZSBjb25zdGFudCBidXQgc2hvdWxk IGRlZmluZSBhCm1hY3JvLiBBcyBpdCBpcyBvbmx5IHVzZWQgb25jZSwgSSB3aWxsIHJlbW92ZSB0 aGlzIGFuZCAnQ0RQX0NPU19OVU0nIGluCmxhdGVyIHBhdGNoLgoKPiA+ICsvKgo+ID4gKyAqIERl Y2xhcmUgZ2xvYmFsIGZlYXR1cmUgbm9kZSBmb3IgZXZlcnkgZmVhdHVyZSB0byBmYWNpbGl0YXRl IHRoZSBmZWF0dXJlCj4gPiArICogYXJyYXkgY3JlYXRpb24uIEl0IGlzIHVzZWQgdG8gdHJhbnNp ZW50bHkgc3RvcmUgYSBzcGFyZSBub2RlLgo+ID4gKyAqLwo+ID4gK3N0YXRpYyBzdHJ1Y3QgZmVh dF9ub2RlICpmZWF0X2wzX2NhdDsKPiA+ICsKPiA+ICsvKiBDb21tb24gZnVuY3Rpb25zICovCj4g PiArI2RlZmluZSBjYXRfZGVmYXVsdF92YWwobGVuKSAgICAgICAgICAgICAgICAgXAo+ID4gKyAg ICAgICAgICAgICggKHVpbnQzMl90KSgoMXVsIDw8IGxlbikgLSAxKSApCj4gCj4gUHJldHR5IG9k ZCBjb25zdHJ1Y3QsIHdoaWNoIEkgZ3Vlc3MgeW91IHVzZSB0byBhdm9pZCB0aGUKPiB1bmRlZmlu ZWQtbmVzcyB3aGVuIGxlbiA9PSAzMi4gQnV0IHRoaXMgY2FuIGJlIGhhZCB3aXRob3V0Cj4gZXh0 cmEgY2FzdCwgYXNzdW1pbmcgbGVuIGlzIGluIFsxLDMyXToKPiAKPiAjZGVmaW5lIGNhdF9kZWZh dWx0X3ZhbChsZW4pICgweGZmZmZmZmZmID4+ICgzMiAtIChsZW4pKSkKPiAKPiBBbHNvIC0gc3Ry YXkgYmxhbmtzIGFuZCBtaXNzaW5nIHBhcmVudGhlc2VzIGFyb3VuZCB0aGUgdXNlIG9mIG1hY3Jv Cj4gcGFyYW1ldGVyLgo+IApUaGFua3MgZm9yIHRoZSBzdWdnZXN0aW9uISBXaWxsIGNoYW5nZSBp dC4KCj4gPiArLyoKPiA+ICsgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBjaGVjayBpZiBhbnkgYWxs b2NhdGlvbiBmZWF0dXJlIGhhcyBiZWVuIGVuYWJsZWQKPiA+ICsgKiBpbiBjbWRsaW5lLgo+ID4g KyAqLwo+ID4gK3N0YXRpYyBib29sIHBzcl9hbGxvY19mZWF0X2VuYWJsZWQodm9pZCkKPiA+ICt7 Cj4gPiArICAgIHJldHVybiAoKCFzb2NrZXRfaW5mbykgPyBmYWxzZSA6IHRydWUgKTsKPiAKPiBT dHJheSBwYXJlbnRoZXNlcyAoYWxsIG9mIHRoZW0gYWN0dWFsbHkpIGFuZCBibGFuay4gRXZlbiBt b3JlLCB3aHkKPiBub3Qgc2ltcGx5Cj4gCj4gICAgIHJldHVybiBzb2NrZXRfaW5mbzsKPiAKPiA/ Cj4gCkhvdyBhYm91dCAncmV0dXJuICEhc29ja2V0X2luZm8nPwoKPiA+ICtzdGF0aWMgdm9pZCBm cmVlX2ZlYXR1cmUoc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKPiA+ICt7Cj4gPiArICAg IHVuc2lnbmVkIGludCBpOwo+ID4gKwo+ID4gKyAgICBpZiAoICFpbmZvICkKPiA+ICsgICAgICAg IHJldHVybjsKPiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAgICogRnJlZSByZXNvdXJjZXMgb2Yg ZmVhdHVyZXMuIFRoZSBnbG9iYWwgZmVhdHVyZSBvYmplY3QsIGUuZy4gZmVhdF9sM19jYXQsCj4g PiArICAgICAqIG1heSBub3QgYmUgZnJlZWQgaGVyZSBpZiBpdCBpcyBub3QgYWRkZWQgaW50byBh cnJheS4gSXQgaXMgc2ltcGx5IGJlaW5nCj4gPiArICAgICAqIGtlcHQgdW50aWwgdGhlIG5leHQg Q1BVIG9ubGluZSBhdHRlbXB0Lgo+ID4gKyAgICAgKi8KPiA+ICsgICAgZm9yICggaSA9IDA7IGkg PCBQU1JfU09DS0VUX01BWF9GRUFUOyBpKysgKQo+ID4gKyAgICB7Cj4gPiArICAgICAgICBpZiAo ICFpbmZvLT5mZWF0dXJlc1tpXSApCj4gPiArICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4g PiArICAgICAgICB4ZnJlZShpbmZvLT5mZWF0dXJlc1tpXSk7Cj4gPiArICAgICAgICBpbmZvLT5m ZWF0dXJlc1tpXSA9IE5VTEw7Cj4gPiArICAgICAgICBfX2NsZWFyX2JpdChpLCAmaW5mby0+ZmVh dF9tYXNrKTsKPiA+ICsgICAgfQo+ID4gK30KPiAKPiBXaGF0IHRoZSBmdW5jdGlvbiBkb2VzIHN1 Z2dlc3RzIGl0cyBuYW1lIG91Z2h0IHRvIGJlCj4gZnJlZV9mZWF0dXJlcygpLgo+IApPaywgd2ls bCBtb2RpZnkgaXQuCgo+ID4gK3N0YXRpYyB2b2lkIGNhdF9pbml0X2ZlYXR1cmUoc3RydWN0IGNw dWlkX2xlYWYgcmVncywKPiAKPiBJJ20gc3VyZSBJJ3ZlIGFza2VkIGJlZm9yZSB0byBub3QgcGFz cyBzdHJ1Y3R1cmVzIGJ5IHZhbHVlLiBBbmQKPiBvbmNlIHlvdSBzd2l0Y2ggdG8gYSBwb2ludGVy LCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHRvIGNvbnN0aWZ5IGl0Lgo+IApXaWxsIGNvcnJlY3QgdGhp cywgdGhhbmtzIQoKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0 X25vZGUgKmZlYXQsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvICppbmZvLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51 bSBwc3JfZmVhdF90eXBlIHR5cGUpCj4gPiArewo+ID4gKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0 LCBpOwo+ID4gKyAgICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZvIGNhdCA9IHsgfTsKPiA+ICsgICAg dWludDY0X3QgdmFsOwo+ID4gKwo+ID4gKyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBub3Qg ZW5hYmxlIGZlYXR1cmUuICovCj4gPiArICAgIGlmICggIXJlZ3MuYSB8fCAhcmVncy5kICkKPiA+ ICsgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgY2F0LmNibV9sZW4gPSAocmVncy5hICYg Q0FUX0NCTV9MRU5fTUFTSykgKyAxOwo+ID4gKyAgICBjYXQuY29zX21heCA9IG1pbihvcHRfY29z X21heCwgcmVncy5kICYgQ0FUX0NPU19NQVhfTUFTSyk7Cj4gPiArCj4gPiArICAgIC8qIGNvcz0w IGlzIHJlc2VydmVkIGFzIGRlZmF1bHQgY2JtKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAx KS4gKi8KPiA+ICsgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoY2F0 LmNibV9sZW4pOwo+ID4gKyAgICAvKgo+ID4gKyAgICAgKiBUbyBoYW5kbGUgY3B1IG9mZmxpbmUg YW5kIHRoZW4gb25saW5lIGNhc2UsIHdlIG5lZWQgcmVhZCBNU1JzIGJhY2sgdG8KPiA+ICsgICAg ICogc2F2ZSB2YWx1ZXMgaW50byBjb3NfcmVnX3ZhbCBhcnJheS4KPiA+ICsgICAgICovCj4gPiAr ICAgIGZvciAoIGkgPSAxOyBpIDw9IGNhdC5jb3NfbWF4OyBpKysgKQo+ID4gKyAgICB7Cj4gPiAr ICAgICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soaSksIHZhbCk7Cj4gPiArICAgICAg ICBmZWF0LT5jb3NfcmVnX3ZhbFtpXSA9ICh1aW50MzJfdCl2YWw7Cj4gPiArICAgIH0KPiAKPiBZ b3UgbWVudGlvbiB0aGlzIGluIHRoZSBjaGFuZ2VzIGRvbmUsIGJ1dCBJIGRvbid0IHVuZGVyc3Rh bmQgd2h5Cj4geW91IGRvIHRoaXMuIFdoYXQgbWVhbmluZyB0byB0aGVzZSB2YWx1ZXMgaGF2ZSB0 byB5b3U/IElmIHlvdQo+IHdhbnQgaGFyZHdhcmUgYW5kIGNhY2hlZCB2YWx1ZXMgdG8gbWF0Y2gg dXAsIHRoZSBtdWNoIG1vcmUKPiBjb252ZW50aW9uYWwgd2F5IG9mIGVuZm9yY2luZyB0aGlzIHdv dWxkIGJlIHRvIHdyaXRlIHRoZSB2YWx1ZXMKPiB5b3UgYWN0dWFsbHkgd2FudCAobm9ybWFsbHkg YWxsIHplcm8pLgo+IApXaGVuIGFsbCBjcHVzIG9uIGEgc29ja2V0IGFyZSBvZmZsaW5lLCB0aGUg ZnJlZV9mZWF0dXJlKCkgaXMgY2FsbGVkIHRvIGZyZWUKZmVhdHVyZXMgcmVzb3VyY2VzIHNvIHRo YXQgdGhlIHZhbHVlcyBzYXZlZCBpbiBjb3NfcmVnX3ZhbFtdIGFyZSBsb3N0LiBXaGVuIHRoZQpz b2NrZXQgaXMgb25saW5lIGFnYWluLCBmZWF0dXJlcyBhcmUgYWxsb2NhdGVkIGFnYWluIHNvIHRo YXQgY29zX3JlZ192YWxbXQptZW1iZXJzIGFyZSBhbGwgaW5pdGlhbGl6ZWQgdG8gMC4gT25seSBp cyBjb3NfcmVnX3ZhbFswXSBpbml0aWFsaXplZCB0byBkZWZhdWx0CnZhbHVlIGluIHRoaXMgZnVu Y3Rpb24gaW4gb2xkIGNvZGVzLgoKQnV0IGRvbWFpbiBpcyBzdGlsbCBhbGl2ZSBzbyB0aGF0IGl0 cyBjb3MgaWQgb24gdGhlIHNvY2tldCBpcyBrZXB0LiBUaGUKY29ycmVzcG9uZGluZyBNU1IgdmFs dWUgaXMga2VwdCB0b28gcGVyIHRlc3QuIFRvIG1ha2UgY29zX3JlZ192YWxbXSB2YWx1ZXMgYmUK c2FtZSBhcyBIVyB0byBub3QgdG8gbWlzbGVhZCB1c2VyLCB3ZSBzaG91bGQgcmVhZCBiYWNrIHRo ZSB2YWxpZCB2YWx1ZXMgb24gSFcKaW50byBjb3NfcmVnX3ZhbFtdLgoKPiA+ICsgICAgZmVhdC0+ aW5mby5jYXRfaW5mbyA9IGNhdDsKPiA+ICsgICAgZmVhdC0+Y29zX251bSA9IENBVF9DT1NfTlVN Owo+ID4gKwo+ID4gKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gYXJyYXkuICovCj4gPiAr ICAgIGluZm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsKPiA+ICsKPiA+ICsgICAgQVNTRVJUKCF0 ZXN0X2JpdCh0eXBlLCAmaW5mby0+ZmVhdF9tYXNrKSk7Cj4gPiArICAgIF9fc2V0X2JpdCh0eXBl LCAmaW5mby0+ZmVhdF9tYXNrKTsKPiAKPiAgICAgaWYgKCBfX3Rlc3RfYW5kX3NldF9iaXQodHlw ZSwgJmluZm8tPmZlYXRfbWFzaykgKQo+ICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7Cj4g ClRoYW5rcyEKCj4gPiArICAgIHNvY2tldCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9p ZCgpKTsKPiA+ICsgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKPiA+ICsgICAgICAgIHJldHVybjsK PiA+ICsKPiA+ICsgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlcyBDQVQ6IGVuYWJsZWQgb24gc29j a2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAo+ID4gKyAgICAgICAgICAgKCh0eXBl ID09IFBTUl9TT0NLRVRfTDNfQ0FUKSA/ICJMMyIgOiAiTDIiKSwKPiA+ICsgICAgICAgICAgIHNv Y2tldCwgZmVhdC0+aW5mby5jYXRfaW5mby5jb3NfbWF4LAo+ID4gKyAgICAgICAgICAgZmVhdC0+ aW5mby5jYXRfaW5mby5jYm1fbGVuKTsKPiA+ICsKPiA+ICsgICAgcmV0dXJuOwo+IAo+IFBvaW50 bGVzcyBzdGF0ZW1lbnQgYXQgZW5kIG9mIGZ1bmN0aW9uLgo+IApXaWxsIHJlbW92ZSBpdC4KCj4g PiArLyogTDMgQ0FUIG9wcyAqLwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNf Y2F0X29wcyA9IHsKPiA+ICt9Owo+IAo+IExlYXZpbmcgYW4gYWxyZWFkeSBkZWNsYXJlZCBmdW5j dGlvbiBwb2ludGVyIGFzIE5VTEw/IFBsZWFzZSBkb24ndC4KPiAKT2ssIHdpbGwgY29uc2lkZXIg dG8gbW92ZSBpdCBhbmQgYmVsb3cgY29kZSBpbnRvIGxhdGVyIHBhdGNoLgogICAgZmVhdC0+b3Bz ID0gbDNfY2F0X29wczsKCj4gPiAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCj4gPiAg ewo+ID4gKyAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvOwo+ID4gKyAgICB1bnNpZ25l ZCBpbnQgc29ja2V0LCBpOwo+ID4gKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nv cl9pZCgpOwo+ID4gKyAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0Owo+ID4gKyAgICBzdHJ1Y3Qg Y3B1aWRfbGVhZiByZWdzOwo+ID4gKwo+ID4gKyAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9lbmFi bGVkKCkgfHwgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9QUUUpICkKPiA+ICsgICAgICAgIGdv dG8gYXNzb2NfaW5pdDsKPiA+ICsKPiA+ICsgICAgaWYgKCBib290X2NwdV9kYXRhLmNwdWlkX2xl dmVsIDwgUFNSX0NQVUlEX0xFVkVMX0NBVCApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIHNldHVw X2NsZWFyX2NwdV9jYXAoWDg2X0ZFQVRVUkVfUFFFKTsKPiA+ICsgICAgICAgIGdvdG8gYXNzb2Nf aW5pdDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KGNw dSk7Cj4gPiArICAgIGluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKPiA+ICsgICAgaWYgKCBp bmZvLT5mZWF0X21hc2sgKQo+ID4gKyAgICAgICAgZ290byBhc3NvY19pbml0Owo+ID4gKwo+ID4g KyAgICBmb3IgKCBpID0gMDsgaSA8IFBTUl9TT0NLRVRfTUFYX0ZFQVQ7IGkrKyApCj4gPiArICAg ICAgICBpbmZvLT5mZWF0dXJlc1tpXSA9IE5VTEw7Cj4gCj4gWW91J3ZlIHh6YWxsb2MoKWVkIHRo aXMgbWVtb3J5IC0gd2h5IGRvIHlvdSBuZWVkIHRoaXMgbG9vcD8KPiAKSG1tLCBubyBuZWVkIGlu ZGVlZC4gV2lsbCByZW1vdmUgdGhpcy4KCj4gPiArICAgIHNwaW5fbG9ja19pbml0KCZpbmZvLT5y ZWZfbG9jayk7Cj4gPiArCj4gPiArICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVM X0NBVCwgMCwgJnJlZ3MpOwo+ID4gKyAgICBpZiAoIHJlZ3MuYiAmIFBTUl9SRVNPVVJDRV9UWVBF X0wzICkKPiA+ICsgICAgewo+ID4gKyAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURf TEVWRUxfQ0FULCAxLCAmcmVncyk7Cj4gPiArCj4gPiArICAgICAgICBmZWF0ID0gZmVhdF9sM19j YXQ7Cj4gPiArICAgICAgICBmZWF0X2wzX2NhdCA9IE5VTEw7Cj4gPiArICAgICAgICBmZWF0LT5v cHMgPSBsM19jYXRfb3BzOwo+ID4gKwo+ID4gKyAgICAgICAgY2F0X2luaXRfZmVhdHVyZShyZWdz LCBmZWF0LCBpbmZvLCBQU1JfU09DS0VUX0wzX0NBVCk7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICth c3NvY19pbml0Ogo+IAo+IExhYmVscyBpbmRlbnRlZCBieSBhdCBsZWFzdCBvbiBzcGFjZSBwbGVh c2UuCj4gCkdvdCBpdCwgdGhhbmtzIQoKPiBKYW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=