From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Dai Subject: Re: [PATCH 11/15] drm/i915: Interrupt routing for GuC submission Date: Tue, 07 Jul 2015 09:19:49 -0700 Message-ID: <559BFC25.6060500@intel.com> 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> <20150707090642.GV7568@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 93C006E5BB for ; Tue, 7 Jul 2015 09:21:06 -0700 (PDT) In-Reply-To: <20150707090642.GV7568@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAwNy8wNy8yMDE1IDAyOjA2IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIE1vbiwg SnVsIDA2LCAyMDE1IGF0IDA1OjAwOjUyUE0gLTA3MDAsIFl1IERhaSB3cm90ZToKPiA+Cj4gPgo+ ID4gT24gMDcvMDYvMjAxNSAxMToyMSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID5PbiBN b24sIEp1bCAwNiwgMjAxNSBhdCAwNTowNzozMVBNICswMTAwLCBEYXZlIEdvcmRvbiB3cm90ZToK PiA+ID4+IE9uIDA2LzA3LzE1IDE1OjE0LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPj4gPk9u IEZyaSwgSnVsIDAzLCAyMDE1IGF0IDAxOjMwOjMzUE0gKzAxMDAsIERhdmUgR29yZG9uIHdyb3Rl Ogo+ID4gPj4gPj5UdXJuIG9uIGludGVycnVwdCBzdGVlcmluZyB0byByb3V0ZSBuZWNlc3Nhcnkg aW50ZXJydXB0cyB0byBHdUMuCj4gPiA+PiA+Pgo+ID4gPj4gPj5Jc3N1ZTogVklaLTQ4ODQKPiA+ ID4+ID4+U2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4gPiA+PiA+ PlNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4g PiA+PiA+Pi0tLQo+ID4gPj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAg ICAgICB8IDExICsrKysrLS0KPiA+ID4+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4+ ID4+ICAyIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4g PiA+PiA+Pgo+ID4gPj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4+ID4+aW5kZXggZWVm Yjg0Ny4uOWYzMmM2YyAxMDA2NDQKPiA+ID4+ID4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+ID4gPj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gPiA+PiA+PkBAIC0xNjU5LDEyICsxNjU5LDE4IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2Vs bHMgewo+ID4gPj4gPj4gICNkZWZpbmUgR0ZYX01PREVfR0VONwkweDAyMjljCj4gPiA+PiA+PiAg I2RlZmluZSBSSU5HX01PREVfR0VONyhyaW5nKQkoKHJpbmcpLT5tbWlvX2Jhc2UrMHgyOWMpCj4g PiA+PiA+PiAgI2RlZmluZSAgIEdGWF9SVU5fTElTVF9FTkFCTEUJCSgxPDwxNSkKPiA+ID4+ID4+ KyNkZWZpbmUgICBHRlhfSU5URVJSVVBUX1NURUVSSU5HCSgxPDwxNCkKPiA+ID4+ID4+ICAjZGVm aW5lICAgR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUCSgxPDwxMykKPiA+ID4+ID4+ICAjZGVm aW5lICAgR0ZYX1NVUkZBQ0VfRkFVTFRfRU5BQkxFCSgxPDwxMikKPiA+ID4+ID4+ICAjZGVmaW5l ICAgR0ZYX1JFUExBWV9NT0RFCQkoMTw8MTEpCj4gPiA+PiA+PiAgI2RlZmluZSAgIEdGWF9QU01J X0dSQU5VTEFSSVRZCQkoMTw8MTApCj4gPiA+PiA+PiAgI2RlZmluZSAgIEdGWF9QUEdUVF9FTkFC TEUJCSgxPDw5KQo+ID4gPj4gPj4KPiA+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxB TktfTUFTSwkoMzw8NSkKPiA+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxBTktfTkVW RVIJKDA8PDUpCj4gPiA+PiA+PisjZGVmaW5lICAgR0ZYX0ZPUldBUkRfVkJMQU5LX0FMV0FZUwko MTw8NSkKPiA+ID4+ID4+KyNkZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxBTktfQ09ORAkoMjw8NSkK PiA+ID4+ID4+Kwo+ID4gPj4gPj4gICNkZWZpbmUgVkxWX0RJU1BMQVlfQkFTRSAweDE4MDAwMAo+ ID4gPj4gPj4gICNkZWZpbmUgVkxWX01JUElfQkFTRSBWTFZfRElTUExBWV9CQVNFCj4gPiA+PiA+ Pgo+ID4gPj4gPj5AQCAtNTY3NywxMSArNTY4MywxMiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dl bGxzIHsKPiA+ID4+ID4+ICAjZGVmaW5lIEdFTjhfR1RfSUlSKHdoaWNoKSAoMHg0NDMwOCArICgw eDEwICogKHdoaWNoKSkpCj4gPiA+PiA+PiAgI2RlZmluZSBHRU44X0dUX0lFUih3aGljaCkgKDB4 NDQzMGMgKyAoMHgxMCAqICh3aGljaCkpKQo+ID4gPj4gPj4KPiA+ID4+ID4+LSNkZWZpbmUgR0VO OF9CQ1NfSVJRX1NISUZUIDE2Cj4gPiA+PiA+PiAgI2RlZmluZSBHRU44X1JDU19JUlFfU0hJRlQg MAo+ID4gPj4gPj4tI2RlZmluZSBHRU44X1ZDUzJfSVJRX1NISUZUIDE2Cj4gPiA+PiA+PisjZGVm aW5lIEdFTjhfQkNTX0lSUV9TSElGVCAxNgo+ID4gPj4gPj4gICNkZWZpbmUgR0VOOF9WQ1MxX0lS UV9TSElGVCAwCj4gPiA+PiA+PisjZGVmaW5lIEdFTjhfVkNTMl9JUlFfU0hJRlQgMTYKPiA+ID4+ ID4+ICAjZGVmaW5lIEdFTjhfVkVDU19JUlFfU0hJRlQgMAo+ID4gPj4gPj4rI2RlZmluZSBHRU44 X1dEX0lSUV9TSElGVCAxNgo+ID4gPj4gPj4KPiA+ID4+ID4+ICAjZGVmaW5lIEdFTjhfREVfUElQ RV9JU1IocGlwZSkgKDB4NDQ0MDAgKyAoMHgxMCAqIChwaXBlKSkpCj4gPiA+PiA+PiAgI2RlZmlu ZSBHRU44X0RFX1BJUEVfSU1SKHBpcGUpICgweDQ0NDA0ICsgKDB4MTAgKiAocGlwZSkpKQo+ID4g Pj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPiA+PiA+PmluZGV4 IGViNzZjMzQuLmVmNWYzZDUgMTAwNjQ0Cj4gPiA+PiA+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gPj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+ID4+ID4+QEAgLTYyLDYgKzYyLDUzIEBACj4gPiA+PiA+ PiAgI2RlZmluZSBJOTE1X1NLTF9HVUNfVUNPREUgImk5MTUvc2tsX2d1Y192ZXIzLmJpbiIKPiA+ ID4+ID4+ICBNT0RVTEVfRklSTVdBUkUoSTkxNV9TS0xfR1VDX1VDT0RFKTsKPiA+ID4+ID4+Cj4g PiA+PiA+PitzdGF0aWMgdm9pZCBkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4+ID4+K3sKPiA+ID4+ID4+KwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nOwo+ID4gPj4gPj4rCWludCBpLCBpcnFzOwo+ID4gPj4gPj4rCj4g PiA+PiA+PisJLyogdGVsbCBhbGwgY29tbWFuZCBzdHJlYW1lcnMgTk9UIHRvIGZvcndhcmQgaW50 ZXJydXB0cyBhbmQgdmJsYW5rIHRvIEd1QyAqLwo+ID4gPj4gPj4rCWlycXMgPSBfTUFTS0VEX0ZJ RUxEKEdGWF9GT1JXQVJEX1ZCTEFOS19NQVNLLCBHRlhfRk9SV0FSRF9WQkxBTktfTkVWRVIpOwo+ ID4gPj4gPj4rCWlycXMgfD0gX01BU0tFRF9CSVRfRElTQUJMRShHRlhfSU5URVJSVVBUX1NURUVS SU5HKTsKPiA+ID4+ID4+Kwlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKQo+ID4gPj4g Pj4rCQlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KHJpbmcpLCBpcnFzKTsKPiA+ID4+ID4+Kwo+ ID4gPj4gPj4rCS8qIHRlbGwgREUgdG8gc2VuZCBub3RoaW5nIHRvIEd1QyAqLwo+ID4gPj4gPj4r CUk5MTVfV1JJVEUoREVfR1VDUk1SLCB+MCk7Cj4gPiA+PiA+PisKPiA+ID4+ID4+KwkvKiByb3V0 ZSBhbGwgR1QgaW50ZXJydXB0cyB0byB0aGUgaG9zdCAqLwo+ID4gPj4gPj4rCUk5MTVfV1JJVEUo R1VDX0JDU19SQ1NfSUVSLCAwKTsKPiA+ID4+ID4+KwlJOTE1X1dSSVRFKEdVQ19WQ1MyX1ZDUzFf SUVSLCAwKTsKPiA+ID4+ID4+KwlJOTE1X1dSSVRFKEdVQ19XRF9WRUNTX0lFUiwgMCk7Cj4gPiA+ PiA+Pit9Cj4gPiA+PiA+PisKPiA+ID4+ID4+K3N0YXRpYyB2b2lkIGRpcmVjdF9pbnRlcnJ1cHRz X3RvX2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+PiA+Pit7Cj4g PiA+PiA+PisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKPiA+ID4+ID4+KwlpbnQgaSwg aXJxczsKPiA+ID4+ID4+Kwo+ID4gPj4gPj4rCS8qIHRlbGwgYWxsIGNvbW1hbmQgc3RyZWFtZXJz IHRvIGZvcndhcmQgaW50ZXJydXB0cyBhbmQgdmJsYW5rIHRvIEd1QyAqLwo+ID4gPj4gPj4rCWly cXMgPSBfTUFTS0VEX0ZJRUxEKEdGWF9GT1JXQVJEX1ZCTEFOS19NQVNLLCBHRlhfRk9SV0FSRF9W QkxBTktfQUxXQVlTKTsKPiA+ID4+ID4+KwlpcnFzIHw9IF9NQVNLRURfQklUX0VOQUJMRShHRlhf SU5URVJSVVBUX1NURUVSSU5HKTsKPiA+ID4+ID4+Kwlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9w cml2LCBpKQo+ID4gPj4gPj4rCQlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KHJpbmcpLCBpcnFz KTsKPiA+ID4+ID4+Kwo+ID4gPj4gPj4rCS8qIHRlbGwgREUgdG8gc2VuZCAoYWxsKSBmbGlwX2Rv bmUgdG8gR3VDICovCj4gPiA+PiA+PisJaXJxcyA9IERFUlJNUl9QSVBFQV9QUklfRkxJUF9ET05F IHwgREVSUk1SX1BJUEVBX1NQUl9GTElQX0RPTkUgfAo+ID4gPj4gPj4rCSAgICAgICBERVJSTVJf UElQRUJfUFJJX0ZMSVBfRE9ORSB8IERFUlJNUl9QSVBFQl9TUFJfRkxJUF9ET05FIHwKPiA+ID4+ ID4+KwkgICAgICAgREVSUk1SX1BJUEVDX1BSSV9GTElQX0RPTkUgfCBERVJSTVJfUElQRUNfU1BS X0ZMSVBfRE9ORTsKPiA+ID4+ID4+KwkvKiBVbm1hc2tlZCBiaXRzIHdpbGwgY2F1c2UgR3VDIHJl c3BvbnNlIG1lc3NhZ2UgdG8gYmUgc2VudCAqLwo+ID4gPj4gPj4rCUk5MTVfV1JJVEUoREVfR1VD Uk1SLCB+aXJxcyk7Cj4gPiA+PiA+PisKPiA+ID4+ID4+KwkvKiByb3V0ZSBVU0VSX0lOVEVSUlVQ VCB0byBIb3N0LCBhbGwgb3RoZXJzIGFyZSBzZW50IHRvIEd1Qy4gKi8KPiA+ID4+ID4+KwlpcnFz ID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9TSElGVCB8Cj4gPiA+ PiA+PisJICAgICAgIEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJ RlQ7Cj4gPiA+PiA+PisJLyogVGhlc2UgdGhyZWUgcmVnaXN0ZXJzIGhhdmUgdGhlIHNhbWUgYml0 IGRlZmluaXRpb25zICovCj4gPiA+PiA+PisJSTkxNV9XUklURShHVUNfQkNTX1JDU19JRVIsIH5p cnFzKTsKPiA+ID4+ID4+KwlJOTE1X1dSSVRFKEdVQ19WQ1MyX1ZDUzFfSUVSLCB+aXJxcyk7Cj4g PiA+PiA+PisJSTkxNV9XUklURShHVUNfV0RfVkVDU19JRVIsIH5pcnFzKTsKPiA+ID4+ID4+K30K PiA+ID4+ID4+Kwo+ID4gPj4gPj4gIHN0YXRpYyB1MzIgZ2V0X2d0dHlwZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+PiA+PiAgewo+ID4gPj4gPj4gIAkvKiBYWFg6IEdU IHR5cGUgYmFzZWQgb24gUENJIGRldmljZSBJRD8gZmllbGQgc2VlbXMgdW51c2VkIGJ5IGZ3ICov Cj4gPiA+PiA+PkBAIC00MTcsNiArNDY0LDcgQEAgaW50IGludGVsX2d1Y191Y29kZV9sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+PiA+PiAgCQlpbnRlbF91Y19md19zdGF0dXNfcmVw cihndWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyksCj4gPiA+PiA+PiAgCQlpbnRlbF91Y19md19z dGF0dXNfcmVwcihndWNfZnctPnVjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gPiA+PiA+Pgo+ID4gPj4g Pj4rCWRpcmVjdF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwo+ID4gPj4gPj4gIAlpOTE1 X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2KTsKPiA+ID4+ID4+Cj4gPiA+PiA+PiAgCWlmIChn dWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQo+ID4g Pj4gPj5AQCAtNDUwLDYgKzQ5OCw3IEBAIGludCBpbnRlbF9ndWNfdWNvZGVfbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gPj4gIAkJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9l bmFibGUoZGV2KTsKPiA+ID4+ID4+ICAJCWlmIChlcnIpCj4gPiA+PiA+PiAgCQkJZ290byBmYWls Owo+ID4gPj4gPj4rCQlkaXJlY3RfaW50ZXJydXB0c190b19ndWMoZGV2X3ByaXYpOwo+ID4gPj4g Pgo+ID4gPj4gPlRoaXMgbG9va3MgbGlrZSBzdGlsbCBzb21lIHJlbW5hbnRzIGZyb20gd2hlbiBn dWMgbG9hZGluZyBjb3VsZCBmYWlsIGFuZAo+ID4gPj4gPndlIG5lZWRlZCB0byBzd2l0Y2ggYmV0 d2VlbiBjcHUgYW5kIGd1YyBzdWJtaXNzaW9uIGF0IHJ1bnRpbWUuIFByb2JsZW0gaXMKPiA+ID4+ ID50aGF0IHlvdSBkb24ndCBvd24gdGhlIGludGVycnVwdCBzdGF0ZSBhdCB0aGlzIHBvaW50IChz aW5jZSBpbnRlcnJ1cHRzIGFyZQo+ID4gPj4gPmFscmVhZHkgZW5hYmxlZCkgYW5kIGhlbmNlIHRo ZXJlIGNvdWxkIGJlIHByb2JsZW1zIHdpdGggcmFjZXMuCj4gPiA+PiA+Cj4gPiA+PiA+U2ltcGxl c3Qgc29sdXRpb24gd291bGQgYmUgdG8ganVzdCBzZXQgdXAgdGhlIGludGVycnVwdCByb3V0aW5n IHdlIHdhbnQKPiA+ID4+ID5zdGF0aWNhbGx5IGF0IGRyaXZlciBsb2FkIHRpbWUgaW4gdGhlIHJl c3BlY3RpdmUgaXJxIGNhbGxiYWNrcyAobG9va2luZyBhdAo+ID4gPj4gPmd1Yy1vci1ub3QtZ3Vj IG1vZHVsZSBvcHRpb24pLiBUaGF0IG1lYW5zIHdlIGJha2UgdGhlIGd1YyBzdWJtaXNzaW9uIHkv bgo+ID4gPj4gPmRlY2lzaW9uIGludG8gdGhlIGRyaXZlciBsb2FkIHNlcXVlbmNlIHZlcnkgZWFy bHksIGJ1dCBpdCBkb2VzIHNpbXBsaWZ5Cj4gPiA+PiA+dGhpbmdzLiBBbmQgdGhhdCdzIG9uZSBv ZiB0aGUgcmVhc29ucyBJIGRvbid0IGxpa2UgcnVudGltZSBmYWxsYmFja3MuCj4gPiA+PiA+LURh bmllbAo+ID4gPj4KPiA+ID4+IFdlIGNhbid0IHNlbmQgaW50ZXJydXB0cyB0byB0aGUgR3VDIGJl Zm9yZSBpdHMgZmlybXdhcmUgaXMgcmVhZHkgZm9yIHRoZW0sCj4gPiA+PiBoZW5jZSB3ZSAvY2Fu J3QvIHNldCBpdCB1cCBzdGF0aWNhbGx5LiBXZSAvbXVzdC8gc3RhcnQgd2l0aCBhbGwgaW50ZXJy dXB0cwo+ID4gPj4gZGlyZWN0ZWQgdG8gdGhlIGhvc3QsIGFuZCBzd2l0Y2ggdGhlbSB0byB0aGUg R3VDIG9ubHkgb25jZSB0aGUgZmlybXdhcmUgaXMKPiA+ID4+IGxvYWRlZCBhbmQgcnVubmluZy4g KEkgc3VwcG9zZSBpdCB3b3VsZCBiZSBzaW1wbGVyIGlmIHRoZSBHdUMgZmlybXdhcmUKPiA+ID4+ ICp0b29rKiBjb250cm9sIG9mIHRoZSBpbnRlcnJ1cHRzIHdoZW4gaXQgc3RhcnRlZCwgcmF0aGVy IHRoYW4gaGF2aW5nIGk5MTUKPiA+ID4+ICpnaXZlKiB0aGUgaW50ZXJydXB0cyB0byB0aGUgR3VD LCBidXQgdGhhdCB3b3VsZCBsZWF2ZSBldmVuIG1vcmUKPiA+ID4+IG9wcG9ydHVuaXRpZXMgZm9y IGNvbmZ1c2lvbikuCj4gPiA+Pgo+ID4gPj4gVGhpcyBpc24ndCByZWFsbHkgInJ1bnRpbWUiLCB0 aGlzICppcyogc3RpbGwgaW4gdGhlIGRyaXZlciBsb2FkIHN0YWdlLAo+ID4gPj4gYWx0aG91Z2gg cmF0aGVyIGxhdGVyIHRoYW4gaXJxIHNldHVwLgo+ID4gPj4KPiA+ID4+IEZvciB0aGUgaW1wb3J0 YW50IGludGVycnVwdHMgdGhhdCB3ZSdyZSBzd2l0Y2hpbmcgdG8gdGhlIEd1QyAoaS5lLiBjb250 ZXh0Cj4gPiA+PiBzd2l0Y2gpIHdlIERPIGtub3cgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IGluIGZs aWdodCBhbHJlYWR5LCBiZWNhdXNlIHdlIGNhbid0Cj4gPiA+PiBzdWJtaXQgYW55dGhpbmcgdGhh dCB3b3VsZCByZXN1bHQgaW4gYSBjb250ZXh0IHN3aXRjaCB1bnRpbCB0aGUgR3VDIGlzIHVwICYK PiA+ID4+IHJ1bm5pbmcuIEZvciBvdGhlcnMgKGUuZy4gVkJMQU5LLCBGTElQX0RPTkUpIGl0IGRv ZXNuJ3QgbWF0dGVyOyB0aGUgR3VDCj4gPiA+PiBkb2Vzbid0IGluaXRpYXRlIHRoZXNlIGNsYXNz ZXMgb2YgaW50ZXJydXB0cyBhbnl3YXksIGFuZCBpdCBkb2Vzbid0IGtlZXAKPiA+ID4+IHRyYWNr IG9mIHNwZWNpZmljIG9jY3VyZW5jZXMgb3IgdHJ5IHRvIHBhaXIgdXAgYWN0aW9ucyBhbmQgcmVz dWx0aW5nIGV2ZW50cy4KPiA+ID4+IEFGQUlLLCBpdCdzIGp1c3QgbGlzdGVuaW5nIGluIHRvIHRo b3NlIGludGVycnVwdHMgdG8gc2VlIHdoYXQncyBnb2luZyBvbiwKPiA+ID4+IHByZXN1bWFibHkg Zm9yIHBvd2VyLW1hbmFnZW1lbnQgcHVycG9zZXMuCj4gPiA+Cj4gPiA+WWVhaCBJIG1pc3JlYWQg dGhlIHBhdGNoLCBzb21laG93IEkgdGhvdWdodCB0aGF0IHdlIGFyZSB0b3VjaGluZyBzb21lCj4g PiA+Y3B1LXNpZGUgaXJxIGNvbnRyb2wgcmVnaXN0ZXJzIHRvby4gVGhhdCB3YXMgbXkgY29uY2Vy biBzaW5jZSBQYXVsbyBzcGVudAo+ID4gPmFuIGF3ZnVsIGxvdCBvZiB0aW1lIHVuaWZ5aW5nIHRo ZSBzZXR1cCBmb3IgdGhvc2UgdG8gbWFrZSB0aGVtIG1lc2ggd2VsbAo+ID4gPndpdGggcnVudGlt ZSBwbS4gQnV0IHRoaXMgaXMgaW5kZWVkIGFsbCBqdXN0IGd1YyBwcml2YXRlIHJlZ2lzdGVyIHN0 YXRlLgo+ID4gPk9uZSBleGNlcHRpb24gaXMgdGhlIFJJTkdfTU9ERSByZWdpc3RlcnMsIGJ1dCBz aW5jZSB0aGF0J3MgYSBtYXNrZWQKPiA+ID5iaXRmaWVsZCBhbmQgdGhpcyBjb2RlIGlzIHRoZSBv bmx5IGJpdCB0aGF0IHRvdWNoZXMgaXQgd2Ugc2hvdWxkIGJlIGZpbmUKPiA+ID50b28uCj4gPiA+ Cj4gPiA+T25lIHRoaW5nIGFzaWRlOiBXaWxsIHRoZSBndWMgcmVjZWl2ZSBjb3BpZXMgb2YgdGhl c2UgKGkuZS4gd2lsbCB0aGUgY3B1Cj4gPiA+c3RpbGwgYmUgYWJsZSB0byBtYXNrL3JlY2VpdmUv YWNrL2NsZWFyL3doYXRldmVyIHRoZW0gb24gaXRzIG93bikgb3IgaXMKPiA+ID50aGlzIHNvbWV3 aGF0IGV4Y2x1c2l2ZSBhbmQgaXQncyBvbmx5IGVpdGhlciBndWMgb3IgY3B1IHRoYXQgZ2V0cyBj ZXJ0YWluCj4gPiA+aW50ZXJydXB0cz8gSWYgaXQncyBqdXN0IGFuIGVuYWJsZS9kaXNhYmxlIG5v dCBhZmZlY3RpbmcgdGhlIGNwdSBzaWRlCj4gPiA+cmVhbGx5IEknZCBzdWdnZXN0IHdlIGNhbGwg dGhlbSBlbmFibGUvZGlzYWJsZSAobW9yZSBpbiBsaW5lIHdpdGggb3RoZXIKPiA+ID5pcnEgaGFu ZGxpbmcgY29kZSkgaW5zdGVhZCBvZiB0aGUgZGlyZWN0X2ludGVycnVwdHNfdG9fKi4gQnV0IHRo YXQncwo+ID4gPnJlYWxseSBqdXN0IGEgYmlrZXNoZWQgdG8gYXZvaWQgY29uZnVzaW9uIGhlcmUu Cj4gPiA+LURhbmllbAo+ID4gUmlnaHQsIGNvZGUgYW5kIGNvbW1lbnRzIGFyZSBub3QgY2xlYXIg aGVyZS4gRm9yIERpc3BsYXkgaW50ZXJydXB0cyAoVkJMQU5LLAo+ID4gRkxJUF9ET05FIGV0Yy4p LCBHdUMgcmVjZWl2ZXMgY29waWVzLCB3aGljaCBpcyAiZm9yd2FyZGluZyIuIEJ1dCBmb3IgdGhv c2UKPiA+IGZyb20gR1QgKENvbnRleHQgU3dpdGNoLCBVc2VyIEludGVycnVwdCBldGMuKSwgdGhl IGNwdSBzaWRlIHdvbid0IHJlY2VpdmUgaXQKPiA+IGlmIHdlICJyb3V0ZSIgb3IgImRpcmVjdCIg dGhlbSB0byBHdUMuCj4KPiBIbSwgSSBndWVzcyB0aGVuIGl0J2QgbWFrZSBzZW5zZSB0byBqdXN0 IG5ldmVyIGVuYWJsZSB0aGUgY3B1IHNpZGUKPiBpbnRlcnJ1cHRzIHdoZW4gaW4gZ3VjIG1vZGUu IExlc3MgY29uZnVzaW5nIGF0IGxlYXN0IGZvciBzdXJlLiBUaGVuIGl0Cj4gd291bGQgcmVhbGx5 IGp1c3QgYmUgYW4gZW5hYmxlL2Rpc2FibGUgc2luY2UgaXQgd2lsbCBubyBsb25nZXIgc3RlYWwK PiBhbnl0aGluZyB3ZSBjYXJlIGFib3V0LgpBZ3JlZS4gRm9yIG5vdyBvbmx5IHRoZSB1c2VyIGlu dGVycnVwdCBpcyBrZXB0IGZvciBkcml2ZXIgdG8gd2FrZSB1cCBhbnkgCndhaXRpbmcgaW4gcXVl dWUuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIHF1ZXVlIAoocmluZy0+aXJxX3F1 ZXVlKSBuZWF0bHkgZm9yIEd1Qy4gU28gd2UgY2FuIGNvbXBsZXRlbHkgZWxpbWluYXRlIENQVSAK d2FrZSB1cCBpbiBoYW5kbGluZyBpbnRlcnJ1cHRzIGZyb20gR1QuIEJ1dCBJIGRvbid0IGhhdmUg YSBjbGVhciBwaWN0dXJlIAp5ZXQuIEFueSBpZGVhcyBhcmUgd2VsY29tZS4KClRoYW5rcywKQWxl eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=