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: Mon, 6 Jul 2015 20:21:09 +0200 Message-ID: <20150706182108.GG7568@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f49.google.com (mail-wg0-f49.google.com [74.125.82.49]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1CD3C6E318 for ; Mon, 6 Jul 2015 11:18:23 -0700 (PDT) Received: by wgqq4 with SMTP id q4so147734031wgq.1 for ; Mon, 06 Jul 2015 11:18:21 -0700 (PDT) Content-Disposition: inline In-Reply-To: <559AA7C3.8040409@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdWwgMDYsIDIwMTUgYXQgMDU6MDc6MzFQTSArMDEwMCwgRGF2ZSBHb3Jkb24gd3Jv dGU6Cj4gT24gMDYvMDcvMTUgMTU6MTQsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPk9uIEZyaSwg SnVsIDAzLCAyMDE1IGF0IDAxOjMwOjMzUE0gKzAxMDAsIERhdmUgR29yZG9uIHdyb3RlOgo+ID4+ VHVybiBvbiBpbnRlcnJ1cHQgc3RlZXJpbmcgdG8gcm91dGUgbmVjZXNzYXJ5IGludGVycnVwdHMg dG8gR3VDLgo+ID4+Cj4gPj5Jc3N1ZTogVklaLTQ4ODQKPiA+PlNpZ25lZC1vZmYtYnk6IEFsZXgg RGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ID4+U2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRh dmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPiA+Pi0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oICAgICAgICAgfCAxMSArKysrKy0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ID4+ICAyIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4gPj4KPiA+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+aW5kZXggZWVmYjg0Ny4uOWYz MmM2YyAxMDA2NDQKPiA+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+PkBAIC0xNjU5LDEyICsx NjU5LDE4IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4+ICAjZGVmaW5lIEdGWF9N T0RFX0dFTjcJMHgwMjI5Ywo+ID4+ICAjZGVmaW5lIFJJTkdfTU9ERV9HRU43KHJpbmcpCSgocmlu ZyktPm1taW9fYmFzZSsweDI5YykKPiA+PiAgI2RlZmluZSAgIEdGWF9SVU5fTElTVF9FTkFCTEUJ CSgxPDwxNSkKPiA+PisjZGVmaW5lICAgR0ZYX0lOVEVSUlVQVF9TVEVFUklORwkoMTw8MTQpCj4g Pj4gICNkZWZpbmUgICBHRlhfVExCX0lOVkFMSURBVEVfRVhQTElDSVQJKDE8PDEzKQo+ID4+ICAj ZGVmaW5lICAgR0ZYX1NVUkZBQ0VfRkFVTFRfRU5BQkxFCSgxPDwxMikKPiA+PiAgI2RlZmluZSAg IEdGWF9SRVBMQVlfTU9ERQkJKDE8PDExKQo+ID4+ICAjZGVmaW5lICAgR0ZYX1BTTUlfR1JBTlVM QVJJVFkJCSgxPDwxMCkKPiA+PiAgI2RlZmluZSAgIEdGWF9QUEdUVF9FTkFCTEUJCSgxPDw5KQo+ ID4+Cj4gPj4rI2RlZmluZSAgIEdGWF9GT1JXQVJEX1ZCTEFOS19NQVNLCSgzPDw1KQo+ID4+KyNk ZWZpbmUgICBHRlhfRk9SV0FSRF9WQkxBTktfTkVWRVIJKDA8PDUpCj4gPj4rI2RlZmluZSAgIEdG WF9GT1JXQVJEX1ZCTEFOS19BTFdBWVMJKDE8PDUpCj4gPj4rI2RlZmluZSAgIEdGWF9GT1JXQVJE X1ZCTEFOS19DT05ECSgyPDw1KQo+ID4+Kwo+ID4+ICAjZGVmaW5lIFZMVl9ESVNQTEFZX0JBU0Ug MHgxODAwMDAKPiA+PiAgI2RlZmluZSBWTFZfTUlQSV9CQVNFIFZMVl9ESVNQTEFZX0JBU0UKPiA+ Pgo+ID4+QEAgLTU2NzcsMTEgKzU2ODMsMTIgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7 Cj4gPj4gICNkZWZpbmUgR0VOOF9HVF9JSVIod2hpY2gpICgweDQ0MzA4ICsgKDB4MTAgKiAod2hp Y2gpKSkKPiA+PiAgI2RlZmluZSBHRU44X0dUX0lFUih3aGljaCkgKDB4NDQzMGMgKyAoMHgxMCAq ICh3aGljaCkpKQo+ID4+Cj4gPj4tI2RlZmluZSBHRU44X0JDU19JUlFfU0hJRlQgMTYKPiA+PiAg I2RlZmluZSBHRU44X1JDU19JUlFfU0hJRlQgMAo+ID4+LSNkZWZpbmUgR0VOOF9WQ1MyX0lSUV9T SElGVCAxNgo+ID4+KyNkZWZpbmUgR0VOOF9CQ1NfSVJRX1NISUZUIDE2Cj4gPj4gICNkZWZpbmUg R0VOOF9WQ1MxX0lSUV9TSElGVCAwCj4gPj4rI2RlZmluZSBHRU44X1ZDUzJfSVJRX1NISUZUIDE2 Cj4gPj4gICNkZWZpbmUgR0VOOF9WRUNTX0lSUV9TSElGVCAwCj4gPj4rI2RlZmluZSBHRU44X1dE X0lSUV9TSElGVCAxNgo+ID4+Cj4gPj4gICNkZWZpbmUgR0VOOF9ERV9QSVBFX0lTUihwaXBlKSAo MHg0NDQwMCArICgweDEwICogKHBpcGUpKSkKPiA+PiAgI2RlZmluZSBHRU44X0RFX1BJUEVfSU1S KHBpcGUpICgweDQ0NDA0ICsgKDB4MTAgKiAocGlwZSkpKQo+ID4+ZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+aW5kZXggZWI3NmMzNC4uZWY1ZjNkNSAxMDA2NDQKPiA+ Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+KysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPj5AQCAtNjIsNiArNjIs NTMgQEAKPiA+PiAgI2RlZmluZSBJOTE1X1NLTF9HVUNfVUNPREUgImk5MTUvc2tsX2d1Y192ZXIz LmJpbiIKPiA+PiAgTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0dVQ19VQ09ERSk7Cj4gPj4KPiA+ PitzdGF0aWMgdm9pZCBkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiA+Pit7Cj4gPj4rCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmc7Cj4gPj4rCWludCBpLCBpcnFzOwo+ID4+Kwo+ID4+KwkvKiB0ZWxsIGFsbCBjb21tYW5kIHN0 cmVhbWVycyBOT1QgdG8gZm9yd2FyZCBpbnRlcnJ1cHRzIGFuZCB2YmxhbmsgdG8gR3VDICovCj4g Pj4rCWlycXMgPSBfTUFTS0VEX0ZJRUxEKEdGWF9GT1JXQVJEX1ZCTEFOS19NQVNLLCBHRlhfRk9S V0FSRF9WQkxBTktfTkVWRVIpOwo+ID4+KwlpcnFzIHw9IF9NQVNLRURfQklUX0RJU0FCTEUoR0ZY X0lOVEVSUlVQVF9TVEVFUklORyk7Cj4gPj4rCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYs IGkpCj4gPj4rCQlJOTE1X1dSSVRFKFJJTkdfTU9ERV9HRU43KHJpbmcpLCBpcnFzKTsKPiA+PisK PiA+PisJLyogdGVsbCBERSB0byBzZW5kIG5vdGhpbmcgdG8gR3VDICovCj4gPj4rCUk5MTVfV1JJ VEUoREVfR1VDUk1SLCB+MCk7Cj4gPj4rCj4gPj4rCS8qIHJvdXRlIGFsbCBHVCBpbnRlcnJ1cHRz IHRvIHRoZSBob3N0ICovCj4gPj4rCUk5MTVfV1JJVEUoR1VDX0JDU19SQ1NfSUVSLCAwKTsKPiA+ PisJSTkxNV9XUklURShHVUNfVkNTMl9WQ1MxX0lFUiwgMCk7Cj4gPj4rCUk5MTVfV1JJVEUoR1VD X1dEX1ZFQ1NfSUVSLCAwKTsKPiA+Pit9Cj4gPj4rCj4gPj4rc3RhdGljIHZvaWQgZGlyZWN0X2lu dGVycnVwdHNfdG9fZ3VjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+Pit7 Cj4gPj4rCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7Cj4gPj4rCWludCBpLCBpcnFzOwo+ ID4+Kwo+ID4+KwkvKiB0ZWxsIGFsbCBjb21tYW5kIHN0cmVhbWVycyB0byBmb3J3YXJkIGludGVy cnVwdHMgYW5kIHZibGFuayB0byBHdUMgKi8KPiA+PisJaXJxcyA9IF9NQVNLRURfRklFTEQoR0ZY X0ZPUldBUkRfVkJMQU5LX01BU0ssIEdGWF9GT1JXQVJEX1ZCTEFOS19BTFdBWVMpOwo+ID4+Kwlp cnFzIHw9IF9NQVNLRURfQklUX0VOQUJMRShHRlhfSU5URVJSVVBUX1NURUVSSU5HKTsKPiA+PisJ Zm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkKPiA+PisJCUk5MTVfV1JJVEUoUklOR19N T0RFX0dFTjcocmluZyksIGlycXMpOwo+ID4+Kwo+ID4+KwkvKiB0ZWxsIERFIHRvIHNlbmQgKGFs bCkgZmxpcF9kb25lIHRvIEd1QyAqLwo+ID4+KwlpcnFzID0gREVSUk1SX1BJUEVBX1BSSV9GTElQ X0RPTkUgfCBERVJSTVJfUElQRUFfU1BSX0ZMSVBfRE9ORSB8Cj4gPj4rCSAgICAgICBERVJSTVJf UElQRUJfUFJJX0ZMSVBfRE9ORSB8IERFUlJNUl9QSVBFQl9TUFJfRkxJUF9ET05FIHwKPiA+PisJ ICAgICAgIERFUlJNUl9QSVBFQ19QUklfRkxJUF9ET05FIHwgREVSUk1SX1BJUEVDX1NQUl9GTElQ X0RPTkU7Cj4gPj4rCS8qIFVubWFza2VkIGJpdHMgd2lsbCBjYXVzZSBHdUMgcmVzcG9uc2UgbWVz c2FnZSB0byBiZSBzZW50ICovCj4gPj4rCUk5MTVfV1JJVEUoREVfR1VDUk1SLCB+aXJxcyk7Cj4g Pj4rCj4gPj4rCS8qIHJvdXRlIFVTRVJfSU5URVJSVVBUIHRvIEhvc3QsIGFsbCBvdGhlcnMgYXJl IHNlbnQgdG8gR3VDLiAqLwo+ID4+KwlpcnFzID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8 IEdFTjhfUkNTX0lSUV9TSElGVCB8Cj4gPj4rCSAgICAgICBHVF9SRU5ERVJfVVNFUl9JTlRFUlJV UFQgPDwgR0VOOF9CQ1NfSVJRX1NISUZUOwo+ID4+KwkvKiBUaGVzZSB0aHJlZSByZWdpc3RlcnMg aGF2ZSB0aGUgc2FtZSBiaXQgZGVmaW5pdGlvbnMgKi8KPiA+PisJSTkxNV9XUklURShHVUNfQkNT X1JDU19JRVIsIH5pcnFzKTsKPiA+PisJSTkxNV9XUklURShHVUNfVkNTMl9WQ1MxX0lFUiwgfmly cXMpOwo+ID4+KwlJOTE1X1dSSVRFKEdVQ19XRF9WRUNTX0lFUiwgfmlycXMpOwo+ID4+K30KPiA+ PisKPiA+PiAgc3RhdGljIHUzMiBnZXRfZ3R0eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiA+PiAgewo+ID4+ICAJLyogWFhYOiBHVCB0eXBlIGJhc2VkIG9uIFBDSSBkZXZp Y2UgSUQ/IGZpZWxkIHNlZW1zIHVudXNlZCBieSBmdyAqLwo+ID4+QEAgLTQxNyw2ICs0NjQsNyBA QCBpbnQgaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiAg CQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPnVjX2Z3X2ZldGNoX3N0YXR1cyksCj4g Pj4gIAkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT51Y19md19sb2FkX3N0YXR1cykp Owo+ID4+Cj4gPj4rCWRpcmVjdF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwo+ID4+ICAJ aTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldik7Cj4gPj4KPiA+PiAgCWlmIChndWNfZnct PnVjX2Z3X2ZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQo+ID4+QEAgLTQ1 MCw2ICs0OTgsNyBAQCBpbnQgaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiA+PiAgCQllcnIgPSBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShkZXYpOwo+ID4+ ICAJCWlmIChlcnIpCj4gPj4gIAkJCWdvdG8gZmFpbDsKPiA+PisJCWRpcmVjdF9pbnRlcnJ1cHRz X3RvX2d1YyhkZXZfcHJpdik7Cj4gPgo+ID5UaGlzIGxvb2tzIGxpa2Ugc3RpbGwgc29tZSByZW1u YW50cyBmcm9tIHdoZW4gZ3VjIGxvYWRpbmcgY291bGQgZmFpbCBhbmQKPiA+d2UgbmVlZGVkIHRv IHN3aXRjaCBiZXR3ZWVuIGNwdSBhbmQgZ3VjIHN1Ym1pc3Npb24gYXQgcnVudGltZS4gUHJvYmxl bSBpcwo+ID50aGF0IHlvdSBkb24ndCBvd24gdGhlIGludGVycnVwdCBzdGF0ZSBhdCB0aGlzIHBv aW50IChzaW5jZSBpbnRlcnJ1cHRzIGFyZQo+ID5hbHJlYWR5IGVuYWJsZWQpIGFuZCBoZW5jZSB0 aGVyZSBjb3VsZCBiZSBwcm9ibGVtcyB3aXRoIHJhY2VzLgo+ID4KPiA+U2ltcGxlc3Qgc29sdXRp b24gd291bGQgYmUgdG8ganVzdCBzZXQgdXAgdGhlIGludGVycnVwdCByb3V0aW5nIHdlIHdhbnQK PiA+c3RhdGljYWxseSBhdCBkcml2ZXIgbG9hZCB0aW1lIGluIHRoZSByZXNwZWN0aXZlIGlycSBj YWxsYmFja3MgKGxvb2tpbmcgYXQKPiA+Z3VjLW9yLW5vdC1ndWMgbW9kdWxlIG9wdGlvbikuIFRo YXQgbWVhbnMgd2UgYmFrZSB0aGUgZ3VjIHN1Ym1pc3Npb24geS9uCj4gPmRlY2lzaW9uIGludG8g dGhlIGRyaXZlciBsb2FkIHNlcXVlbmNlIHZlcnkgZWFybHksIGJ1dCBpdCBkb2VzIHNpbXBsaWZ5 Cj4gPnRoaW5ncy4gQW5kIHRoYXQncyBvbmUgb2YgdGhlIHJlYXNvbnMgSSBkb24ndCBsaWtlIHJ1 bnRpbWUgZmFsbGJhY2tzLgo+ID4tRGFuaWVsCj4gCj4gV2UgY2FuJ3Qgc2VuZCBpbnRlcnJ1cHRz IHRvIHRoZSBHdUMgYmVmb3JlIGl0cyBmaXJtd2FyZSBpcyByZWFkeSBmb3IgdGhlbSwKPiBoZW5j ZSB3ZSAvY2FuJ3QvIHNldCBpdCB1cCBzdGF0aWNhbGx5LiBXZSAvbXVzdC8gc3RhcnQgd2l0aCBh bGwgaW50ZXJydXB0cwo+IGRpcmVjdGVkIHRvIHRoZSBob3N0LCBhbmQgc3dpdGNoIHRoZW0gdG8g dGhlIEd1QyBvbmx5IG9uY2UgdGhlIGZpcm13YXJlIGlzCj4gbG9hZGVkIGFuZCBydW5uaW5nLiAo SSBzdXBwb3NlIGl0IHdvdWxkIGJlIHNpbXBsZXIgaWYgdGhlIEd1QyBmaXJtd2FyZQo+ICp0b29r KiBjb250cm9sIG9mIHRoZSBpbnRlcnJ1cHRzIHdoZW4gaXQgc3RhcnRlZCwgcmF0aGVyIHRoYW4g aGF2aW5nIGk5MTUKPiAqZ2l2ZSogdGhlIGludGVycnVwdHMgdG8gdGhlIEd1QywgYnV0IHRoYXQg d291bGQgbGVhdmUgZXZlbiBtb3JlCj4gb3Bwb3J0dW5pdGllcyBmb3IgY29uZnVzaW9uKS4KPiAK PiBUaGlzIGlzbid0IHJlYWxseSAicnVudGltZSIsIHRoaXMgKmlzKiBzdGlsbCBpbiB0aGUgZHJp dmVyIGxvYWQgc3RhZ2UsCj4gYWx0aG91Z2ggcmF0aGVyIGxhdGVyIHRoYW4gaXJxIHNldHVwLgo+ IAo+IEZvciB0aGUgaW1wb3J0YW50IGludGVycnVwdHMgdGhhdCB3ZSdyZSBzd2l0Y2hpbmcgdG8g dGhlIEd1QyAoaS5lLiBjb250ZXh0Cj4gc3dpdGNoKSB3ZSBETyBrbm93IHRoYXQgdGhlcmUgYXJl bid0IGFueSBpbiBmbGlnaHQgYWxyZWFkeSwgYmVjYXVzZSB3ZSBjYW4ndAo+IHN1Ym1pdCBhbnl0 aGluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIGNvbnRleHQgc3dpdGNoIHVudGlsIHRoZSBHdUMg aXMgdXAgJgo+IHJ1bm5pbmcuIEZvciBvdGhlcnMgKGUuZy4gVkJMQU5LLCBGTElQX0RPTkUpIGl0 IGRvZXNuJ3QgbWF0dGVyOyB0aGUgR3VDCj4gZG9lc24ndCBpbml0aWF0ZSB0aGVzZSBjbGFzc2Vz IG9mIGludGVycnVwdHMgYW55d2F5LCBhbmQgaXQgZG9lc24ndCBrZWVwCj4gdHJhY2sgb2Ygc3Bl Y2lmaWMgb2NjdXJlbmNlcyBvciB0cnkgdG8gcGFpciB1cCBhY3Rpb25zIGFuZCByZXN1bHRpbmcg ZXZlbnRzLgo+IEFGQUlLLCBpdCdzIGp1c3QgbGlzdGVuaW5nIGluIHRvIHRob3NlIGludGVycnVw dHMgdG8gc2VlIHdoYXQncyBnb2luZyBvbiwKPiBwcmVzdW1hYmx5IGZvciBwb3dlci1tYW5hZ2Vt ZW50IHB1cnBvc2VzLgoKWWVhaCBJIG1pc3JlYWQgdGhlIHBhdGNoLCBzb21laG93IEkgdGhvdWdo dCB0aGF0IHdlIGFyZSB0b3VjaGluZyBzb21lCmNwdS1zaWRlIGlycSBjb250cm9sIHJlZ2lzdGVy cyB0b28uIFRoYXQgd2FzIG15IGNvbmNlcm4gc2luY2UgUGF1bG8gc3BlbnQKYW4gYXdmdWwgbG90 IG9mIHRpbWUgdW5pZnlpbmcgdGhlIHNldHVwIGZvciB0aG9zZSB0byBtYWtlIHRoZW0gbWVzaCB3 ZWxsCndpdGggcnVudGltZSBwbS4gQnV0IHRoaXMgaXMgaW5kZWVkIGFsbCBqdXN0IGd1YyBwcml2 YXRlIHJlZ2lzdGVyIHN0YXRlLgpPbmUgZXhjZXB0aW9uIGlzIHRoZSBSSU5HX01PREUgcmVnaXN0 ZXJzLCBidXQgc2luY2UgdGhhdCdzIGEgbWFza2VkCmJpdGZpZWxkIGFuZCB0aGlzIGNvZGUgaXMg dGhlIG9ubHkgYml0IHRoYXQgdG91Y2hlcyBpdCB3ZSBzaG91bGQgYmUgZmluZQp0b28uCgpPbmUg dGhpbmcgYXNpZGU6IFdpbGwgdGhlIGd1YyByZWNlaXZlIGNvcGllcyBvZiB0aGVzZSAoaS5lLiB3 aWxsIHRoZSBjcHUKc3RpbGwgYmUgYWJsZSB0byBtYXNrL3JlY2VpdmUvYWNrL2NsZWFyL3doYXRl dmVyIHRoZW0gb24gaXRzIG93bikgb3IgaXMKdGhpcyBzb21ld2hhdCBleGNsdXNpdmUgYW5kIGl0 J3Mgb25seSBlaXRoZXIgZ3VjIG9yIGNwdSB0aGF0IGdldHMgY2VydGFpbgppbnRlcnJ1cHRzPyBJ ZiBpdCdzIGp1c3QgYW4gZW5hYmxlL2Rpc2FibGUgbm90IGFmZmVjdGluZyB0aGUgY3B1IHNpZGUK cmVhbGx5IEknZCBzdWdnZXN0IHdlIGNhbGwgdGhlbSBlbmFibGUvZGlzYWJsZSAobW9yZSBpbiBs aW5lIHdpdGggb3RoZXIKaXJxIGhhbmRsaW5nIGNvZGUpIGluc3RlYWQgb2YgdGhlIGRpcmVjdF9p bnRlcnJ1cHRzX3RvXyouIEJ1dCB0aGF0J3MKcmVhbGx5IGp1c3QgYSBiaWtlc2hlZCB0byBhdm9p ZCBjb25mdXNpb24gaGVyZS4KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdp bmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK