From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Wang, Zhi A" Subject: Re: [RFCv5 2/2] drm/i915: Introduce private PAT management Date: Tue, 29 Aug 2017 11:13:26 +0000 Message-ID: References: <1503993651-25665-1-git-send-email-zhi.a.wang@intel.com> <1503993651-25665-2-git-send-email-zhi.a.wang@intel.com> <150400112198.25384.3977519286300656395@mail.alporthouse.com> <150400319112.8572.378713713200582721@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <150400319112.8572.378713713200582721@mail.alporthouse.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , "intel-gfx@lists.freedesktop.org" , "intel-gvt-dev@lists.freedesktop.org" Cc: "Vivi, Rodrigo" , "Widawsky, Benjamin" List-Id: intel-gfx@lists.freedesktop.org SGkgQ2hyaXM6DQogICAgVGhlcmUgaXMgbWFwcGluZyBiZXR3ZWVuIGk5MTUgY2FjaGUgbGV2ZWwg LT4gUFBBVCBpbmRleC4gQ3VycmVudGx5IGl0J3M6DQoNCnN0YXRpYyBnZW44X3B0ZV90IGdlbjhf cHRlX2VuY29kZShkbWFfYWRkcl90IGFkZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGxldmVsKQ0Kew0KLi4uDQogICAgICAgIHN3aXRj aCAobGV2ZWwpIHsNCiAgICAgICAgY2FzZSBJOTE1X0NBQ0hFX05PTkU6DQogICAgICAgICAgICAg ICAgcHRlIHw9IFBQQVRfVU5DQUNIRURfSU5ERVg7DQogICAgICAgICAgICAgICAgYnJlYWs7DQog ICAgICAgIGNhc2UgSTkxNV9DQUNIRV9XVDoNCiAgICAgICAgICAgICAgICBwdGUgfD0gUFBBVF9E SVNQTEFZX0VMTENfSU5ERVg7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1 bHQ6DQogICAgICAgICAgICAgICAgcHRlIHw9IFBQQVRfQ0FDSEVEX0lOREVYOw0KICAgICAgICAg ICAgICAgIGJyZWFrOw0KICAgICAgICB9DQouLi4NCg0KQWNjb3JkaW5nIHRvIGJzcGVjLCB0aGUg UFBBVCBpbmRleCBmaWxsZWQgaW4gdGhlIHBhZ2UgdGFibGUgaXMgY2FsY3VsYXRlZCBhczoNCg0K UFBBVCBpbmRleCA9IDQgKiBQQVQgKyAyICogUENEICsgUFdUDQoNCkluIHRoZSBpOTE1X2dlbV9n dHQuYw0KDQojZGVmaW5lIFBQQVRfVU5DQUNIRURfSU5ERVggICAgICAgICAgICAgKF9QQUdFX1BX VCB8IF9QQUdFX1BDRCkgICAgIC8vIFBQQVQgSU5ERVggPSAgMSArIDIgKiAxID0gMw0KI2RlZmlu ZSBQUEFUX0NBQ0hFRF9QREVfSU5ERVggICAgICAgICAgIDAgLyogV0IgTExDICovCQkJLy8gIFBQ QVQgSU5ERVggPSAwDQojZGVmaW5lIFBQQVRfQ0FDSEVEX0lOREVYICAgICAgICAgICAgICAgX1BB R0VfUEFUIC8qIFdCIExMQ2VMTEMgKi8JLy8gUFBBVCBJTkRFWCA9IDQgKiAxID0gNA0KI2RlZmlu ZSBQUEFUX0RJU1BMQVlfRUxMQ19JTkRFWCAgICAgICAgIF9QQUdFX1BDRCAvKiBXVCBlTExDICov ICAgICAgICAgICAvLyBQUEFUIElOREVYID0gMiAqIDEgPSAyDQoNCkFjdHVhbGx5IHRoZSBQUEFU IGluZGV4IHVzZWQgYnkgaTkxNSBhcmU6IDAgMiAzIDQsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4g cmVzZXJ2ZWQgaW4gdGhlIFJGQyBwYXRjaGVzLg0KDQpUaGUgcmVhc29uIEkgd2FudCB0byByZXNl cnZlIHRoYXQgUFBBVCBlbnRyaWVzIGZvciBob3N0IGlzIHRvIGtlZXAgdGhlIG1hcHBpbmcgYmV0 d2VlbiBJOTE1X0NBQ0hFXyogYW5kIFBQQVRfKl9JTkRFWCB1bmNoYW5nZWQuDQoNClRoYW5rcywN ClpoaS4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IENocmlzIFdpbHNvbiBb bWFpbHRvOmNocmlzQGNocmlzLXdpbHNvbi5jby51a10gDQpTZW50OiBUdWVzZGF5LCBBdWd1c3Qg MjksIDIwMTcgMTo0MCBQTQ0KVG86IFdhbmcsIFpoaSBBIDx6aGkuYS53YW5nQGludGVsLmNvbT47 IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGludGVsLWd2dC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnDQpDYzogam9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbTsgemhlbnl1 d0BsaW51eC5pbnRlbC5jb207IFdhbmcsIFpoaSBBIDx6aGkuYS53YW5nQGludGVsLmNvbT47IFdp ZGF3c2t5LCBCZW5qYW1pbiA8YmVuamFtaW4ud2lkYXdza3lAaW50ZWwuY29tPjsgVml2aSwgUm9k cmlnbyA8cm9kcmlnby52aXZpQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbUkZDdjUgMi8yXSBk cm0vaTkxNTogSW50cm9kdWNlIHByaXZhdGUgUEFUIG1hbmFnZW1lbnQNCg0KUXVvdGluZyBDaHJp cyBXaWxzb24gKDIwMTctMDgtMjkgMTE6MDU6MjEpDQo+IFF1b3RpbmcgWmhpIFdhbmcgKDIwMTct MDgtMjkgMDk6MDA6NTEpDQo+ID4gK3N0YXRpYyB2b2lkIGNubF9zZXR1cF9wcml2YXRlX3BwYXQo c3RydWN0IGludGVsX3BwYXQgKnBwYXQpIHsNCj4gPiArICAgICAgIHBwYXQtPm1heF9lbnRyaWVz ID0gODsNCj4gPiArICAgICAgIHBwYXQtPnVwZGF0ZSA9IGNubF9wcml2YXRlX3BhdF91cGRhdGU7 DQo+ID4gKyAgICAgICBwcGF0LT5tYXRjaCA9IGJkd19wcml2YXRlX3BhdF9tYXRjaDsNCj4gPiAr ICAgICAgIHBwYXQtPmR1bW15X3ZhbHVlID0gR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRf QUdFKDMpOw0KPiA+ICsNCj4gPiAgICAgICAgIC8qIFhYWDogc3BlYyBpcyB1bmNsZWFyIGlmIHRo aXMgaXMgc3RpbGwgbmVlZGVkIGZvciBDTkwrICovDQo+ID4gLSAgICAgICBpZiAoIVVTRVNfUFBH VFQoZGV2X3ByaXYpKSB7DQo+ID4gLSAgICAgICAgICAgICAgIEk5MTVfV1JJVEUoR0VOMTBfUEFU X0lOREVYKDApLCBHRU44X1BQQVRfVUMpOw0KPiA+ICsgICAgICAgaWYgKCFVU0VTX1BQR1RUKHBw YXQtPmk5MTUpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGFsbG9jX3BwYXRfZW50cnkocHBhdCwg MCwgR0VOOF9QUEFUX1VDKTsNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICAgICAg ICAgfQ0KPiA+ICANCj4gPiAtICAgICAgIEk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDApLCBH RU44X1BQQVRfV0IgfCBHRU44X1BQQVRfTExDKTsNCj4gPiAtICAgICAgIEk5MTVfV1JJVEUoR0VO MTBfUEFUX0lOREVYKDEpLCBHRU44X1BQQVRfV0MgfCBHRU44X1BQQVRfTExDRUxMQyk7DQo+ID4g LSAgICAgICBJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCgyKSwgR0VOOF9QUEFUX1dUIHwgR0VO OF9QUEFUX0xMQ0VMTEMpOw0KPiA+IC0gICAgICAgSTkxNV9XUklURShHRU4xMF9QQVRfSU5ERVgo MyksIEdFTjhfUFBBVF9VQyk7DQo+ID4gLSAgICAgICBJOTE1X1dSSVRFKEdFTjEwX1BBVF9JTkRF WCg0KSwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDApKTsNCj4gPiAtICAgICAg IEk5MTVfV1JJVEUoR0VOMTBfUEFUX0lOREVYKDUpLCBHRU44X1BQQVRfTExDRUxMQyB8IEdFTjhf UFBBVF9BR0UoMSkpOw0KPiA+IC0gICAgICAgSTkxNV9XUklURShHRU4xMF9QQVRfSU5ERVgoNiks IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgyKSk7DQo+ID4gLSAgICAgICBJOTE1 X1dSSVRFKEdFTjEwX1BBVF9JTkRFWCg3KSwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRf QUdFKDMpKTsNCj4gPiArICAgICAgIGFsbG9jX3BwYXRfZW50cnkocHBhdCwgMCwgR0VOOF9QUEFU X1dCIHwgR0VOOF9QUEFUX0xMQyk7DQo+ID4gKyAgICAgICBhbGxvY19wcGF0X2VudHJ5KHBwYXQs IDIsIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKTsNCj4gPiArICAgICAgIGFsbG9j X3BwYXRfZW50cnkocHBhdCwgMywgR0VOOF9QUEFUX1VDKTsNCj4gPiArICAgICAgIGFsbG9jX3Bw YXRfZW50cnkocHBhdCwgNCwgR0VOOF9QUEFUX0xMQ0VMTEMgfCANCj4gPiArIEdFTjhfUFBBVF9B R0UoMCkpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICAvKiBUaGUgR0dUVCBhbmQgUFBHVFQgbmVlZCBh IHByaXZhdGUgUFBBVCBzZXR1cCBpbiBvcmRlciB0byBoYW5kbGUgY2FjaGVhYmlsaXR5DQo+ID4g ICAqIGJpdHMuIFdoZW4gdXNpbmcgYWR2YW5jZWQgY29udGV4dHMgZWFjaCBjb250ZXh0IHN0b3Jl cyBpdHMgb3duIFBBVCwgYnV0DQo+ID4gICAqIHdyaXRpbmcgdGhpcyBkYXRhIHNob3VsZG4ndCBi ZSBoYXJtZnVsIGV2ZW4gaW4gdGhvc2UgY2FzZXMuICovIA0KPiA+IC1zdGF0aWMgdm9pZCBiZHdf c2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIA0KPiA+ICpkZXZfcHJp dikNCj4gPiArc3RhdGljIHZvaWQgYmR3X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgaW50ZWxf cHBhdCAqcHBhdCkNCj4gPiAgew0KPiA+IC0gICAgICAgdTY0IHBhdDsNCj4gPiAtDQo+ID4gLSAg ICAgICBwYXQgPSBHRU44X1BQQVQoMCwgR0VOOF9QUEFUX1dCIHwgR0VOOF9QUEFUX0xMQykgICAg IHwgLyogZm9yIG5vcm1hbCBvYmplY3RzLCBubyBlTExDICovDQo+ID4gLSAgICAgICAgICAgICBH RU44X1BQQVQoMSwgR0VOOF9QUEFUX1dDIHwgR0VOOF9QUEFUX0xMQ0VMTEMpIHwgLyogZm9yIHNv bWV0aGluZyBwb2ludGluZyB0byBwdGVzPyAqLw0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFU KDIsIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKSB8IC8qIGZvciBzY2Fub3V0IHdp dGggZUxMQyAqLw0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDMsIEdFTjhfUFBBVF9VQykg ICAgICAgICAgICAgICAgICAgICB8IC8qIFVuY2FjaGVkIG9iamVjdHMsIG1vc3RseSBmb3Igc2Nh bm91dCAqLw0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDQsIEdFTjhfUFBBVF9XQiB8IEdF TjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgwKSkgfA0KPiA+IC0gICAgICAgICAgICAg R0VOOF9QUEFUKDUsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFU X0FHRSgxKSkgfA0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDYsIEdFTjhfUFBBVF9XQiB8 IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgyKSkgfA0KPiA+IC0gICAgICAgICAg ICAgR0VOOF9QUEFUKDcsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9Q UEFUX0FHRSgzKSk7DQo+ID4gKyAgICAgICBwcGF0LT5tYXhfZW50cmllcyA9IDg7DQo+ID4gKyAg ICAgICBwcGF0LT51cGRhdGUgPSBiZHdfcHJpdmF0ZV9wYXRfdXBkYXRlOw0KPiA+ICsgICAgICAg cHBhdC0+bWF0Y2ggPSBiZHdfcHJpdmF0ZV9wYXRfbWF0Y2g7DQo+ID4gKyAgICAgICBwcGF0LT5k dW1teV92YWx1ZSA9IEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgDQo+ID4gKyBH RU44X1BQQVRfQUdFKDMpOw0KPiA+ICANCj4gPiAtICAgICAgIGlmICghVVNFU19QUEdUVChkZXZf cHJpdikpDQo+ID4gKyAgICAgICBpZiAoIVVTRVNfUFBHVFQoZGV2X3ByaXYpKSB7DQo+ID4gICAg ICAgICAgICAgICAgIC8qIFNwZWM6ICJGb3IgR0dUVCwgdGhlcmUgaXMgTk8gcGF0X3NlbFsyOjBd IGZyb20gdGhlIGVudHJ5LA0KPiA+ICAgICAgICAgICAgICAgICAgKiBzbyBSVEwgd2lsbCBhbHdh eXMgdXNlIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvDQo+ID4gICAgICAgICAgICAgICAgICAq IHBhdF9zZWwgPSAwMDAiLg0KPiA+IEBAIC0yODY0LDE3ICszMDM4LDIyIEBAIHN0YXRpYyB2b2lk IGJkd19zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQ0KPiA+ICAgICAgICAgICAgICAgICAgKiBTbyB3ZSBjYW4gc3RpbGwgaG9sZCBvbnRvIGFsbCBv dXIgYXNzdW1wdGlvbnMgd3J0IGNwdQ0KPiA+ICAgICAgICAgICAgICAgICAgKiBjbGZsdXNoaW5n IG9uIExMQyBtYWNoaW5lcy4NCj4gPiAgICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAgICAg ICAgICAgIHBhdCA9IEdFTjhfUFBBVCgwLCBHRU44X1BQQVRfVUMpOw0KPiA+ICsgICAgICAgICAg ICAgICBhbGxvY19wcGF0X2VudHJ5KHBwYXQsIDAsIEdFTjhfUFBBVF9VQyk7DQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybjsNCj4gPiArICAgICAgIH0NCj4gPiAgDQo+ID4gLSAgICAgICAvKiBY WFg6IHNwZWMgZGVmaW5lcyB0aGlzIGFzIDIgZGlzdGluY3QgcmVnaXN0ZXJzLiBJdCdzIHVuY2xl YXIgaWYgYSA2NGINCj4gPiAtICAgICAgICAqIHdyaXRlIHdvdWxkIHdvcmsuICovDQo+ID4gLSAg ICAgICBJOTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfTE8sIHBhdCk7DQo+ID4gLSAgICAgICBJ OTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfSEksIHBhdCA+PiAzMik7DQo+ID4gKyAgICAgICBh bGxvY19wcGF0X2VudHJ5KHBwYXQsIDAsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTEMpOyAg ICAgLyogZm9yIG5vcm1hbCBvYmplY3RzLCBubyBlTExDICovDQo+ID4gKyAgICAgICBhbGxvY19w cGF0X2VudHJ5KHBwYXQsIDIsIEdFTjhfUFBBVF9XVCB8IEdFTjhfUFBBVF9MTENFTExDKTsgLyog Zm9yIHNjYW5vdXQgd2l0aCBlTExDICovDQo+ID4gKyAgICAgICBhbGxvY19wcGF0X2VudHJ5KHBw YXQsIDMsIEdFTjhfUFBBVF9VQyk7ICAgICAgICAgICAgICAgICAgICAgLyogVW5jYWNoZWQgb2Jq ZWN0cywgbW9zdGx5IGZvciBzY2Fub3V0ICovDQo+ID4gKyAgICAgICBhbGxvY19wcGF0X2VudHJ5 KHBwYXQsIDQsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgDQo+ID4gKyBHRU44 X1BQQVRfQUdFKDApKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtc3RhdGljIHZvaWQgY2h2X3NldHVw X3ByaXZhdGVfcHBhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSANCj4gPiAqZGV2X3ByaXYpDQo+ ID4gK3N0YXRpYyB2b2lkIGNodl9zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGludGVsX3BwYXQg KnBwYXQpDQo+ID4gIHsNCj4gPiAtICAgICAgIHU2NCBwYXQ7DQo+ID4gKyAgICAgICBwcGF0LT5t YXhfZW50cmllcyA9IDg7DQo+ID4gKyAgICAgICBwcGF0LT51cGRhdGUgPSBiZHdfcHJpdmF0ZV9w YXRfdXBkYXRlOw0KPiA+ICsgICAgICAgcHBhdC0+bWF0Y2ggPSBjaHZfcHJpdmF0ZV9wYXRfbWF0 Y2g7DQo+ID4gKyAgICAgICBwcGF0LT5kdW1teV92YWx1ZSA9IENIVl9QUEFUX1NOT09QOw0KPiA+ ICANCj4gPiAgICAgICAgIC8qDQo+ID4gICAgICAgICAgKiBNYXAgV0Igb24gQkRXIHRvIHNub29w ZWQgb24gQ0hWLg0KPiA+IEBAIC0yODk0LDE3ICszMDczLDExIEBAIHN0YXRpYyB2b2lkIGNodl9z ZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ ICAgICAgICAgICogV2hpY2ggbWVhbnMgd2UgbXVzdCBzZXQgdGhlIHNub29wIGJpdCBpbiBQQVQg ZW50cnkgMA0KPiA+ICAgICAgICAgICogaW4gb3JkZXIgdG8ga2VlcCB0aGUgZ2xvYmFsIHN0YXR1 cyBwYWdlIHdvcmtpbmcuDQo+ID4gICAgICAgICAgKi8NCj4gPiAtICAgICAgIHBhdCA9IEdFTjhf UFBBVCgwLCBDSFZfUFBBVF9TTk9PUCkgfA0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDEs IDApIHwNCj4gPiAtICAgICAgICAgICAgIEdFTjhfUFBBVCgyLCAwKSB8DQo+ID4gLSAgICAgICAg ICAgICBHRU44X1BQQVQoMywgMCkgfA0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDQsIENI Vl9QUEFUX1NOT09QKSB8DQo+ID4gLSAgICAgICAgICAgICBHRU44X1BQQVQoNSwgQ0hWX1BQQVRf U05PT1ApIHwNCj4gPiAtICAgICAgICAgICAgIEdFTjhfUFBBVCg2LCBDSFZfUFBBVF9TTk9PUCkg fA0KPiA+IC0gICAgICAgICAgICAgR0VOOF9QUEFUKDcsIENIVl9QUEFUX1NOT09QKTsNCj4gPiAg DQo+ID4gLSAgICAgICBJOTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfTE8sIHBhdCk7DQo+ID4g LSAgICAgICBJOTE1X1dSSVRFKEdFTjhfUFJJVkFURV9QQVRfSEksIHBhdCA+PiAzMik7DQo+ID4g KyAgICAgICBhbGxvY19wcGF0X2VudHJ5KHBwYXQsIDAsIENIVl9QUEFUX1NOT09QKTsNCj4gPiAr ICAgICAgIGFsbG9jX3BwYXRfZW50cnkocHBhdCwgMiwgMCk7DQo+ID4gKyAgICAgICBhbGxvY19w cGF0X2VudHJ5KHBwYXQsIDMsIDApOw0KPiA+ICsgICAgICAgYWxsb2NfcHBhdF9lbnRyeShwcGF0 LCA0LCBDSFZfUFBBVF9TTk9PUCk7DQo+ID4gIH0NCj4gDQo+IDEgaXMgZHJvcHBlZCBpbiBhbGwg Y2FzZXM/DQo+IA0KPiBUaGUgY3VycmVudCBBQkkgaXMgdGhhdCB3ZSByZXNlcnZlICgwLCAxLCAy KSBmb3IgdXNlcnNwYWNlLiAxIG1lYW5zIA0KPiBmb2xsb3ctUFRFIGFuZCBpcyBlc3BlY2lhbGx5 IGltcG9ydGFudC4NCg0KSWdub3JlIHRoZSBBQkkgY29uY2VybiwgZ2V0dGluZyBteSB0YWJsZXMg Y29uZnVzZWQuIEJ1dCB0aGUgcXVlc3Rpb24gc3RpbGwgcmVtYWlucyB3aHkgZG8gd2UgbmVlZCB0 byByZXNlcnZlIHRoZXNlIGluIHBhcnRpY3VsYXI/DQotQ2hyaXMNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=