From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 11/15] drm/i915: Interrupt routing for GuC submission Date: Tue, 7 Jul 2015 11:06:42 +0200 Message-ID: <20150707090642.GV7568@phenom.ffwll.local> References: <1435926637-30892-1-git-send-email-david.s.gordon@intel.com> <1435926637-30892-12-git-send-email-david.s.gordon@intel.com> <20150706141404.GH2156@phenom.ffwll.local> <559AA7C3.8040409@intel.com> <20150706182108.GG7568@phenom.ffwll.local> <559B16B4.3030405@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF31F6E4B4 for ; Tue, 7 Jul 2015 02:03:56 -0700 (PDT) Received: by wiclp1 with SMTP id lp1so43903498wic.0 for ; Tue, 07 Jul 2015 02:03:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: <559B16B4.3030405@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Yu Dai Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMDU6MDA6NTJQTSAtMDcwMCwgWXUgRGFpIHdyb3RlOgo+ IAo+IAo+IE9uIDA3LzA2LzIwMTUgMTE6MjEgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPk9u IE1vbiwgSnVsIDA2LCAyMDE1IGF0IDA1OjA3OjMxUE0gKzAxMDAsIERhdmUgR29yZG9uIHdyb3Rl Ogo+ID4+IE9uIDA2LzA3LzE1IDE1OjE0LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+ID5PbiBG cmksIEp1bCAwMywgMjAxNSBhdCAwMTozMDozM1BNICswMTAwLCBEYXZlIEdvcmRvbiB3cm90ZToK PiA+PiA+PlR1cm4gb24gaW50ZXJydXB0IHN0ZWVyaW5nIHRvIHJvdXRlIG5lY2Vzc2FyeSBpbnRl cnJ1cHRzIHRvIEd1Qy4KPiA+PiA+Pgo+ID4+ID4+SXNzdWU6IFZJWi00ODg0Cj4gPj4gPj5TaWdu ZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiA+PiA+PlNpZ25lZC1vZmYt Ynk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4gPj4gPj4tLS0KPiA+ PiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgMTEgKysrKyst LQo+ID4+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCA1MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+PiA+PiAgMiBmaWxlcyBjaGFuZ2Vk LCA2MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4+ID4+Cj4gPj4gPj5kaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiA+PiA+PmluZGV4IGVlZmI4NDcuLjlmMzJjNmMgMTAwNjQ0Cj4gPj4g Pj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4gPj4rKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4gPj5AQCAtMTY1OSwxMiArMTY1OSwxOCBA QCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+PiA+PiAgI2RlZmluZSBHRlhfTU9ERV9H RU43CTB4MDIyOWMKPiA+PiA+PiAgI2RlZmluZSBSSU5HX01PREVfR0VONyhyaW5nKQkoKHJpbmcp LT5tbWlvX2Jhc2UrMHgyOWMpCj4gPj4gPj4gICNkZWZpbmUgICBHRlhfUlVOX0xJU1RfRU5BQkxF CQkoMTw8MTUpCj4gPj4gPj4rI2RlZmluZSAgIEdGWF9JTlRFUlJVUFRfU1RFRVJJTkcJKDE8PDE0 KQo+ID4+ID4+ICAjZGVmaW5lICAgR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUCSgxPDwxMykK PiA+PiA+PiAgI2RlZmluZSAgIEdGWF9TVVJGQUNFX0ZBVUxUX0VOQUJMRQkoMTw8MTIpCj4gPj4g Pj4gICNkZWZpbmUgICBHRlhfUkVQTEFZX01PREUJCSgxPDwxMSkKPiA+PiA+PiAgI2RlZmluZSAg IEdGWF9QU01JX0dSQU5VTEFSSVRZCQkoMTw8MTApCj4gPj4gPj4gICNkZWZpbmUgICBHRlhfUFBH VFRfRU5BQkxFCQkoMTw8OSkKPiA+PiA+Pgo+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9W QkxBTktfTUFTSwkoMzw8NSkKPiA+PiA+PisjZGVmaW5lICAgR0ZYX0ZPUldBUkRfVkJMQU5LX05F VkVSCSgwPDw1KQo+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxBTktfQUxXQVlTCSgx PDw1KQo+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxBTktfQ09ORAkoMjw8NSkKPiA+ PiA+PisKPiA+PiA+PiAgI2RlZmluZSBWTFZfRElTUExBWV9CQVNFIDB4MTgwMDAwCj4gPj4gPj4g ICNkZWZpbmUgVkxWX01JUElfQkFTRSBWTFZfRElTUExBWV9CQVNFCj4gPj4gPj4KPiA+PiA+PkBA IC01Njc3LDExICs1NjgzLDEyIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4+ID4+ ICAjZGVmaW5lIEdFTjhfR1RfSUlSKHdoaWNoKSAoMHg0NDMwOCArICgweDEwICogKHdoaWNoKSkp Cj4gPj4gPj4gICNkZWZpbmUgR0VOOF9HVF9JRVIod2hpY2gpICgweDQ0MzBjICsgKDB4MTAgKiAo d2hpY2gpKSkKPiA+PiA+Pgo+ID4+ID4+LSNkZWZpbmUgR0VOOF9CQ1NfSVJRX1NISUZUIDE2Cj4g Pj4gPj4gICNkZWZpbmUgR0VOOF9SQ1NfSVJRX1NISUZUIDAKPiA+PiA+Pi0jZGVmaW5lIEdFTjhf VkNTMl9JUlFfU0hJRlQgMTYKPiA+PiA+PisjZGVmaW5lIEdFTjhfQkNTX0lSUV9TSElGVCAxNgo+ ID4+ID4+ICAjZGVmaW5lIEdFTjhfVkNTMV9JUlFfU0hJRlQgMAo+ID4+ID4+KyNkZWZpbmUgR0VO OF9WQ1MyX0lSUV9TSElGVCAxNgo+ID4+ID4+ICAjZGVmaW5lIEdFTjhfVkVDU19JUlFfU0hJRlQg MAo+ID4+ID4+KyNkZWZpbmUgR0VOOF9XRF9JUlFfU0hJRlQgMTYKPiA+PiA+Pgo+ID4+ID4+ICAj ZGVmaW5lIEdFTjhfREVfUElQRV9JU1IocGlwZSkgKDB4NDQ0MDAgKyAoMHgxMCAqIChwaXBlKSkp Cj4gPj4gPj4gICNkZWZpbmUgR0VOOF9ERV9QSVBFX0lNUihwaXBlKSAoMHg0NDQwNCArICgweDEw ICogKHBpcGUpKSkKPiA+PiA+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMK PiA+PiA+PmluZGV4IGViNzZjMzQuLmVmNWYzZDUgMTAwNjQ0Cj4gPj4gPj4tLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+PiA+PisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+ID4+QEAgLTYyLDYgKzYyLDUzIEBACj4g Pj4gPj4gICNkZWZpbmUgSTkxNV9TS0xfR1VDX1VDT0RFICJpOTE1L3NrbF9ndWNfdmVyMy5iaW4i Cj4gPj4gPj4gIE1PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9HVUNfVUNPREUpOwo+ID4+ID4+Cj4g Pj4gPj4rc3RhdGljIHZvaWQgZGlyZWN0X2ludGVycnVwdHNfdG9faG9zdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gPj4rewo+ID4+ID4+KwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nOwo+ID4+ID4+KwlpbnQgaSwgaXJxczsKPiA+PiA+PisKPiA+PiA+PisJLyog dGVsbCBhbGwgY29tbWFuZCBzdHJlYW1lcnMgTk9UIHRvIGZvcndhcmQgaW50ZXJydXB0cyBhbmQg dmJsYW5rIHRvIEd1QyAqLwo+ID4+ID4+KwlpcnFzID0gX01BU0tFRF9GSUVMRChHRlhfRk9SV0FS RF9WQkxBTktfTUFTSywgR0ZYX0ZPUldBUkRfVkJMQU5LX05FVkVSKTsKPiA+PiA+PisJaXJxcyB8 PSBfTUFTS0VEX0JJVF9ESVNBQkxFKEdGWF9JTlRFUlJVUFRfU1RFRVJJTkcpOwo+ID4+ID4+Kwlm b3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKQo+ID4+ID4+KwkJSTkxNV9XUklURShSSU5H X01PREVfR0VONyhyaW5nKSwgaXJxcyk7Cj4gPj4gPj4rCj4gPj4gPj4rCS8qIHRlbGwgREUgdG8g c2VuZCBub3RoaW5nIHRvIEd1QyAqLwo+ID4+ID4+KwlJOTE1X1dSSVRFKERFX0dVQ1JNUiwgfjAp Owo+ID4+ID4+Kwo+ID4+ID4+KwkvKiByb3V0ZSBhbGwgR1QgaW50ZXJydXB0cyB0byB0aGUgaG9z dCAqLwo+ID4+ID4+KwlJOTE1X1dSSVRFKEdVQ19CQ1NfUkNTX0lFUiwgMCk7Cj4gPj4gPj4rCUk5 MTVfV1JJVEUoR1VDX1ZDUzJfVkNTMV9JRVIsIDApOwo+ID4+ID4+KwlJOTE1X1dSSVRFKEdVQ19X RF9WRUNTX0lFUiwgMCk7Cj4gPj4gPj4rfQo+ID4+ID4+Kwo+ID4+ID4+K3N0YXRpYyB2b2lkIGRp cmVjdF9pbnRlcnJ1cHRzX3RvX2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPj4gPj4rewo+ID4+ID4+KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOwo+ID4+ID4+ KwlpbnQgaSwgaXJxczsKPiA+PiA+PisKPiA+PiA+PisJLyogdGVsbCBhbGwgY29tbWFuZCBzdHJl YW1lcnMgdG8gZm9yd2FyZCBpbnRlcnJ1cHRzIGFuZCB2YmxhbmsgdG8gR3VDICovCj4gPj4gPj4r CWlycXMgPSBfTUFTS0VEX0ZJRUxEKEdGWF9GT1JXQVJEX1ZCTEFOS19NQVNLLCBHRlhfRk9SV0FS RF9WQkxBTktfQUxXQVlTKTsKPiA+PiA+PisJaXJxcyB8PSBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZY X0lOVEVSUlVQVF9TVEVFUklORyk7Cj4gPj4gPj4rCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3By aXYsIGkpCj4gPj4gPj4rCQlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KHJpbmcpLCBpcnFzKTsK PiA+PiA+PisKPiA+PiA+PisJLyogdGVsbCBERSB0byBzZW5kIChhbGwpIGZsaXBfZG9uZSB0byBH dUMgKi8KPiA+PiA+PisJaXJxcyA9IERFUlJNUl9QSVBFQV9QUklfRkxJUF9ET05FIHwgREVSUk1S X1BJUEVBX1NQUl9GTElQX0RPTkUgfAo+ID4+ID4+KwkgICAgICAgREVSUk1SX1BJUEVCX1BSSV9G TElQX0RPTkUgfCBERVJSTVJfUElQRUJfU1BSX0ZMSVBfRE9ORSB8Cj4gPj4gPj4rCSAgICAgICBE RVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSB8IERFUlJNUl9QSVBFQ19TUFJfRkxJUF9ET05FOwo+ ID4+ID4+KwkvKiBVbm1hc2tlZCBiaXRzIHdpbGwgY2F1c2UgR3VDIHJlc3BvbnNlIG1lc3NhZ2Ug dG8gYmUgc2VudCAqLwo+ID4+ID4+KwlJOTE1X1dSSVRFKERFX0dVQ1JNUiwgfmlycXMpOwo+ID4+ ID4+Kwo+ID4+ID4+KwkvKiByb3V0ZSBVU0VSX0lOVEVSUlVQVCB0byBIb3N0LCBhbGwgb3RoZXJz IGFyZSBzZW50IHRvIEd1Qy4gKi8KPiA+PiA+PisJaXJxcyA9IEdUX1JFTkRFUl9VU0VSX0lOVEVS UlVQVCA8PCBHRU44X1JDU19JUlFfU0hJRlQgfAo+ID4+ID4+KwkgICAgICAgR1RfUkVOREVSX1VT RVJfSU5URVJSVVBUIDw8IEdFTjhfQkNTX0lSUV9TSElGVDsKPiA+PiA+PisJLyogVGhlc2UgdGhy ZWUgcmVnaXN0ZXJzIGhhdmUgdGhlIHNhbWUgYml0IGRlZmluaXRpb25zICovCj4gPj4gPj4rCUk5 MTVfV1JJVEUoR1VDX0JDU19SQ1NfSUVSLCB+aXJxcyk7Cj4gPj4gPj4rCUk5MTVfV1JJVEUoR1VD X1ZDUzJfVkNTMV9JRVIsIH5pcnFzKTsKPiA+PiA+PisJSTkxNV9XUklURShHVUNfV0RfVkVDU19J RVIsIH5pcnFzKTsKPiA+PiA+Pit9Cj4gPj4gPj4rCj4gPj4gPj4gIHN0YXRpYyB1MzIgZ2V0X2d0 dHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gPj4gIHsKPiA+PiA+ PiAgCS8qIFhYWDogR1QgdHlwZSBiYXNlZCBvbiBQQ0kgZGV2aWNlIElEPyBmaWVsZCBzZWVtcyB1 bnVzZWQgYnkgZncgKi8KPiA+PiA+PkBAIC00MTcsNiArNDY0LDcgQEAgaW50IGludGVsX2d1Y191 Y29kZV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gPj4gIAkJaW50ZWxfdWNfZndf c3RhdHVzX3JlcHIoZ3VjX2Z3LT51Y19md19mZXRjaF9zdGF0dXMpLAo+ID4+ID4+ICAJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+dWNfZndfbG9hZF9zdGF0dXMpKTsKPiA+PiA+Pgo+ ID4+ID4+KwlkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KGRldl9wcml2KTsKPiA+PiA+PiAgCWk5 MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXYpOwo+ID4+ID4+Cj4gPj4gPj4gIAlpZiAoZ3Vj X2Z3LT51Y19md19mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfTk9ORSkKPiA+PiA+ PkBAIC00NTAsNiArNDk4LDcgQEAgaW50IGludGVsX2d1Y191Y29kZV9sb2FkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPj4gPj4gIAkJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUo ZGV2KTsKPiA+PiA+PiAgCQlpZiAoZXJyKQo+ID4+ID4+ICAJCQlnb3RvIGZhaWw7Cj4gPj4gPj4r CQlkaXJlY3RfaW50ZXJydXB0c190b19ndWMoZGV2X3ByaXYpOwo+ID4+ID4KPiA+PiA+VGhpcyBs b29rcyBsaWtlIHN0aWxsIHNvbWUgcmVtbmFudHMgZnJvbSB3aGVuIGd1YyBsb2FkaW5nIGNvdWxk IGZhaWwgYW5kCj4gPj4gPndlIG5lZWRlZCB0byBzd2l0Y2ggYmV0d2VlbiBjcHUgYW5kIGd1YyBz dWJtaXNzaW9uIGF0IHJ1bnRpbWUuIFByb2JsZW0gaXMKPiA+PiA+dGhhdCB5b3UgZG9uJ3Qgb3du IHRoZSBpbnRlcnJ1cHQgc3RhdGUgYXQgdGhpcyBwb2ludCAoc2luY2UgaW50ZXJydXB0cyBhcmUK PiA+PiA+YWxyZWFkeSBlbmFibGVkKSBhbmQgaGVuY2UgdGhlcmUgY291bGQgYmUgcHJvYmxlbXMg d2l0aCByYWNlcy4KPiA+PiA+Cj4gPj4gPlNpbXBsZXN0IHNvbHV0aW9uIHdvdWxkIGJlIHRvIGp1 c3Qgc2V0IHVwIHRoZSBpbnRlcnJ1cHQgcm91dGluZyB3ZSB3YW50Cj4gPj4gPnN0YXRpY2FsbHkg YXQgZHJpdmVyIGxvYWQgdGltZSBpbiB0aGUgcmVzcGVjdGl2ZSBpcnEgY2FsbGJhY2tzIChsb29r aW5nIGF0Cj4gPj4gPmd1Yy1vci1ub3QtZ3VjIG1vZHVsZSBvcHRpb24pLiBUaGF0IG1lYW5zIHdl IGJha2UgdGhlIGd1YyBzdWJtaXNzaW9uIHkvbgo+ID4+ID5kZWNpc2lvbiBpbnRvIHRoZSBkcml2 ZXIgbG9hZCBzZXF1ZW5jZSB2ZXJ5IGVhcmx5LCBidXQgaXQgZG9lcyBzaW1wbGlmeQo+ID4+ID50 aGluZ3MuIEFuZCB0aGF0J3Mgb25lIG9mIHRoZSByZWFzb25zIEkgZG9uJ3QgbGlrZSBydW50aW1l IGZhbGxiYWNrcy4KPiA+PiA+LURhbmllbAo+ID4+Cj4gPj4gV2UgY2FuJ3Qgc2VuZCBpbnRlcnJ1 cHRzIHRvIHRoZSBHdUMgYmVmb3JlIGl0cyBmaXJtd2FyZSBpcyByZWFkeSBmb3IgdGhlbSwKPiA+ PiBoZW5jZSB3ZSAvY2FuJ3QvIHNldCBpdCB1cCBzdGF0aWNhbGx5LiBXZSAvbXVzdC8gc3RhcnQg d2l0aCBhbGwgaW50ZXJydXB0cwo+ID4+IGRpcmVjdGVkIHRvIHRoZSBob3N0LCBhbmQgc3dpdGNo IHRoZW0gdG8gdGhlIEd1QyBvbmx5IG9uY2UgdGhlIGZpcm13YXJlIGlzCj4gPj4gbG9hZGVkIGFu ZCBydW5uaW5nLiAoSSBzdXBwb3NlIGl0IHdvdWxkIGJlIHNpbXBsZXIgaWYgdGhlIEd1QyBmaXJt d2FyZQo+ID4+ICp0b29rKiBjb250cm9sIG9mIHRoZSBpbnRlcnJ1cHRzIHdoZW4gaXQgc3RhcnRl ZCwgcmF0aGVyIHRoYW4gaGF2aW5nIGk5MTUKPiA+PiAqZ2l2ZSogdGhlIGludGVycnVwdHMgdG8g dGhlIEd1QywgYnV0IHRoYXQgd291bGQgbGVhdmUgZXZlbiBtb3JlCj4gPj4gb3Bwb3J0dW5pdGll cyBmb3IgY29uZnVzaW9uKS4KPiA+Pgo+ID4+IFRoaXMgaXNuJ3QgcmVhbGx5ICJydW50aW1lIiwg dGhpcyAqaXMqIHN0aWxsIGluIHRoZSBkcml2ZXIgbG9hZCBzdGFnZSwKPiA+PiBhbHRob3VnaCBy YXRoZXIgbGF0ZXIgdGhhbiBpcnEgc2V0dXAuCj4gPj4KPiA+PiBGb3IgdGhlIGltcG9ydGFudCBp bnRlcnJ1cHRzIHRoYXQgd2UncmUgc3dpdGNoaW5nIHRvIHRoZSBHdUMgKGkuZS4gY29udGV4dAo+ ID4+IHN3aXRjaCkgd2UgRE8ga25vdyB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgaW4gZmxpZ2h0IGFs cmVhZHksIGJlY2F1c2Ugd2UgY2FuJ3QKPiA+PiBzdWJtaXQgYW55dGhpbmcgdGhhdCB3b3VsZCBy ZXN1bHQgaW4gYSBjb250ZXh0IHN3aXRjaCB1bnRpbCB0aGUgR3VDIGlzIHVwICYKPiA+PiBydW5u aW5nLiBGb3Igb3RoZXJzIChlLmcuIFZCTEFOSywgRkxJUF9ET05FKSBpdCBkb2Vzbid0IG1hdHRl cjsgdGhlIEd1Qwo+ID4+IGRvZXNuJ3QgaW5pdGlhdGUgdGhlc2UgY2xhc3NlcyBvZiBpbnRlcnJ1 cHRzIGFueXdheSwgYW5kIGl0IGRvZXNuJ3Qga2VlcAo+ID4+IHRyYWNrIG9mIHNwZWNpZmljIG9j Y3VyZW5jZXMgb3IgdHJ5IHRvIHBhaXIgdXAgYWN0aW9ucyBhbmQgcmVzdWx0aW5nIGV2ZW50cy4K PiA+PiBBRkFJSywgaXQncyBqdXN0IGxpc3RlbmluZyBpbiB0byB0aG9zZSBpbnRlcnJ1cHRzIHRv IHNlZSB3aGF0J3MgZ29pbmcgb24sCj4gPj4gcHJlc3VtYWJseSBmb3IgcG93ZXItbWFuYWdlbWVu dCBwdXJwb3Nlcy4KPiA+Cj4gPlllYWggSSBtaXNyZWFkIHRoZSBwYXRjaCwgc29tZWhvdyBJIHRo b3VnaHQgdGhhdCB3ZSBhcmUgdG91Y2hpbmcgc29tZQo+ID5jcHUtc2lkZSBpcnEgY29udHJvbCBy ZWdpc3RlcnMgdG9vLiBUaGF0IHdhcyBteSBjb25jZXJuIHNpbmNlIFBhdWxvIHNwZW50Cj4gPmFu IGF3ZnVsIGxvdCBvZiB0aW1lIHVuaWZ5aW5nIHRoZSBzZXR1cCBmb3IgdGhvc2UgdG8gbWFrZSB0 aGVtIG1lc2ggd2VsbAo+ID53aXRoIHJ1bnRpbWUgcG0uIEJ1dCB0aGlzIGlzIGluZGVlZCBhbGwg anVzdCBndWMgcHJpdmF0ZSByZWdpc3RlciBzdGF0ZS4KPiA+T25lIGV4Y2VwdGlvbiBpcyB0aGUg UklOR19NT0RFIHJlZ2lzdGVycywgYnV0IHNpbmNlIHRoYXQncyBhIG1hc2tlZAo+ID5iaXRmaWVs ZCBhbmQgdGhpcyBjb2RlIGlzIHRoZSBvbmx5IGJpdCB0aGF0IHRvdWNoZXMgaXQgd2Ugc2hvdWxk IGJlIGZpbmUKPiA+dG9vLgo+ID4KPiA+T25lIHRoaW5nIGFzaWRlOiBXaWxsIHRoZSBndWMgcmVj ZWl2ZSBjb3BpZXMgb2YgdGhlc2UgKGkuZS4gd2lsbCB0aGUgY3B1Cj4gPnN0aWxsIGJlIGFibGUg dG8gbWFzay9yZWNlaXZlL2Fjay9jbGVhci93aGF0ZXZlciB0aGVtIG9uIGl0cyBvd24pIG9yIGlz Cj4gPnRoaXMgc29tZXdoYXQgZXhjbHVzaXZlIGFuZCBpdCdzIG9ubHkgZWl0aGVyIGd1YyBvciBj cHUgdGhhdCBnZXRzIGNlcnRhaW4KPiA+aW50ZXJydXB0cz8gSWYgaXQncyBqdXN0IGFuIGVuYWJs ZS9kaXNhYmxlIG5vdCBhZmZlY3RpbmcgdGhlIGNwdSBzaWRlCj4gPnJlYWxseSBJJ2Qgc3VnZ2Vz dCB3ZSBjYWxsIHRoZW0gZW5hYmxlL2Rpc2FibGUgKG1vcmUgaW4gbGluZSB3aXRoIG90aGVyCj4g PmlycSBoYW5kbGluZyBjb2RlKSBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RfaW50ZXJydXB0c190b18q LiBCdXQgdGhhdCdzCj4gPnJlYWxseSBqdXN0IGEgYmlrZXNoZWQgdG8gYXZvaWQgY29uZnVzaW9u IGhlcmUuCj4gPi1EYW5pZWwKPiBSaWdodCwgY29kZSBhbmQgY29tbWVudHMgYXJlIG5vdCBjbGVh ciBoZXJlLiBGb3IgRGlzcGxheSBpbnRlcnJ1cHRzIChWQkxBTkssCj4gRkxJUF9ET05FIGV0Yy4p LCBHdUMgcmVjZWl2ZXMgY29waWVzLCB3aGljaCBpcyAiZm9yd2FyZGluZyIuIEJ1dCBmb3IgdGhv c2UKPiBmcm9tIEdUIChDb250ZXh0IFN3aXRjaCwgVXNlciBJbnRlcnJ1cHQgZXRjLiksIHRoZSBj cHUgc2lkZSB3b24ndCByZWNlaXZlIGl0Cj4gaWYgd2UgInJvdXRlIiBvciAiZGlyZWN0IiB0aGVt IHRvIEd1Qy4KCkhtLCBJIGd1ZXNzIHRoZW4gaXQnZCBtYWtlIHNlbnNlIHRvIGp1c3QgbmV2ZXIg ZW5hYmxlIHRoZSBjcHUgc2lkZQppbnRlcnJ1cHRzIHdoZW4gaW4gZ3VjIG1vZGUuIExlc3MgY29u ZnVzaW5nIGF0IGxlYXN0IGZvciBzdXJlLiBUaGVuIGl0CndvdWxkIHJlYWxseSBqdXN0IGJlIGFu IGVuYWJsZS9kaXNhYmxlIHNpbmNlIGl0IHdpbGwgbm8gbG9uZ2VyIHN0ZWFsCmFueXRoaW5nIHdl IGNhcmUgYWJvdXQuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==