From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm: Funnel drm logs to tracepoints Date: Mon, 14 Oct 2019 10:52:22 +0200 Message-ID: <20191014085222.GE11828@phenom.ffwll.local> References: <20191010204823.195540-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 807E46E13D for ; Mon, 14 Oct 2019 08:52:26 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id r18so2406153eds.13 for ; Mon, 14 Oct 2019 01:52:26 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20191010204823.195540-1-sean@poorly.run> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: David Airlie , Daniel Vetter , Sean Paul , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBPY3QgMTAsIDIwMTkgYXQgMDQ6NDg6MDhQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IEZyb206IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+IAo+ICpSZWNvcmQg c2NyYXRjaCogWW91IHJlYWQgdGhhdCBzdWJqZWN0IGNvcnJlY3RseSwgSSBiZXQgeW91J3JlIHdv bmRlcmluZwo+IGhvdyB3ZSBnb3QgaGVyZS4gQXQgbGVhc3QgaGVhciBtZSBvdXQgYmVmb3JlIHlv dSBmbGFtZSA6LSkKPiAKPiBGb3IgYSBsb25nIHdoaWxlIG5vdywgd2UgKENocm9tZU9TKSBoYXZl IGJlZW4gc3RydWdnbGluZyBnZXR0aW5nIGFueQo+IHZhbHVlIG91dCBvZiB1c2VyIGZlZWRiYWNr IHJlcG9ydHMgb2YgZGlzcGxheSBmYWlsdXJlcyAobm90YWJseSBleHRlcm5hbAo+IGRpc3BsYXlz IG5vdCB3b3JraW5nKS4gVGhlIHByb2JsZW0gaXMgdGhhdCBhbGwgbG9nZ2luZywgZXZlbiBmYXRh bAo+IGVycm9ycyAod2VsbCwgZmF0YWwgaW4gdGhlIHNlbnNlIHRoYXQgYSBkaXNwbGF5IHdvbid0 IGxpZ2h0IHVwKSBhcmUKPiBsb2dnZWQgYXQgREVCVUcgbG9nIGxldmVsLiBTbyBpbiBvcmRlciB0 byBleHRyYWN0IHRoZXNlIGxvZ3MsIHlvdSBuZWVkCj4gdG8gYmUgYWJsZSB0byB0dXJuIG9uIGxv Z2dpbmcsIGFuZCByZXByb2R1Y2UgdGhlIGlzc3VlIHdpdGggZGVidWcKPiBlbmFibGVkLiBVbmZv cnR1bmF0ZWx5LCB0aGlzIGlzbid0IHJlYWxseSBzb21ldGhpbmcgd2UgY2FuIGFzayBDck9TIHVz ZXJzCj4gSSBzcG9rZSB3aXRoIGFpcmxpZWQgYWJvdXQgdGhpcyBhbmQgUkhFTCBoYXMgc2ltaWxh ciBpc3N1ZXMuCj4gCj4gVGhpcyBpcyB0aGUgcG9pbnQgd2hlcmUgeW91IGFzayBtZSwgIlNvIFNl YW4sIHdoeSBkb24ndCB5b3UganVzdCBlbmFibGUKPiBEUk1fVVRfQkxBSD8iLiBHb29kIHF1ZXN0 aW9uISBIZXJlIGFyZSB0aGUgcmVhc29ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YKPiBzZXZlcml0 eToKPiAgMS0gUGVvcGxlIGFyZW4ndCBjb25zaXN0ZW50IHdpdGggdGhlaXIgY2F0ZWdvcmllcywg c28gd2UnZCBoYXZlIHRvCj4gICAgIGVuYWJsZSBhIGJ1bmNoIHRvIGdldCBwcm9wZXIgY292ZXJh Z2UKPiAgMi0gV2UgZG9uJ3Qgd2FudCB0byBvdmVyd2hlbG0gc3lzbG9nIHdpdGggZHJtIHNwYW0s IG90aGVycyBoYXZlIHRvIHVzZQo+ICAgICBpdCB0b28KPiAgMy0gQ29uc29sZSBsb2dnaW5nIGlz IHNsb3cKPiAKPiBIb3BlZnVsbHkgeW91J3JlIHdpdGggbWUgc28gZmFyLiBJIGhhdmUgYSBwcm9i bGVtIHRoYXQgaGFzIG5vIGV4aXN0aW5nCj4gc29sdXRpb24uIFdoYXQgSSByZWFsbHkgd2FudCBp cyBhIHJpbmdidWZmZXIgb2YgdGhlIG1vc3QgcmVjZW50IGxvZ3MKPiAoaW4gdGhlIGNhdGVnb3Jp ZXMgSSdtIGludGVyZXN0ZWQgaW4pIGV4cG9zZWQgdmlhIGRlYnVnZnMgc28gSSBjYW4KPiBleHRy YWN0IGl0IHdoZW4gdXNlcnMgZmlsZSBmZWVkYmFjay4KPiAKPiBJdCBqdXN0IHNvIGhhcHBlbnMg dGhhdCB0aGVyZSBpcyBzb21ldGhpbmcgd2hpY2ggZG9lcyBfZXhhY3RseV8gdGhpcyEgSQo+IGNh biBkdW1wIHRoZSBtb3N0IHJlY2VudCBsb2dzIGludG8gdHJhY2Vwb2ludHMsIHR1cm4gdGhlbSBv biBhbmQgb2ZmCj4gZGVwZW5kaW5nIG9uIHdoaWNoIGNhdGVnb3J5IEkgd2FudCwgYW5kIHB1bGwg dGhlbSBmcm9tIGRlYnVnZnMgb24gZGVtYW5kLgo+IAo+ICJXaGF0IGFib3V0IHRyYWNlX3ByaW50 aygpPyIgWW91J2xsIHNheS4gSXQgZG9lc24ndCBnaXZlIHVzIHRoZSBjb250cm9sIHdlCj4gZ2V0 IGZyb20gdXNpbmcgdHJhY2Vwb2ludHMgYW5kIGl0J3Mgbm90IG1lYW50IHRvIGJlIGxlZnQgc3By aW5rbGVkIGFyb3VuZAo+IGluIGNvZGUuCj4gCj4gU28gdGhhdCBpcyBob3cgd2UgZ290IGhlcmUs IG5vdyBpdCdzIHRpbWUgZm9yIHlvdSB0byB0ZWxsIG1lIHdoeSB0aGlzIGlzCj4gYSBob3JyaWJs ZSBpZGVhIDotKQo+IAo+IENjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAZ21haWwuY29tPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IFNpZ25lZC1vZmYtYnk6 IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgoKSSB0aGluayBpZiB0aGlzIGNvbWVz IHdpdGggZXhhbXBsZSBzY3JpcHQgZm9yIGhvdyB0byB1c2UgaXQgKGVuYWJsZSB0aGUKcmlnaHQg dHJhY2Vwb2ludHMgaW4gZGVidWdmcywgY2FwdHVyZSB0aGUgdHJhY2UpIGluIHRoZSBjb21taXQg bWVzc2FnZSBvcgpzb21ld2hlcmUgZWxzZSAoaWd0L3Rvb2xzIG1heWJlPykgdGhlbiB0aGlzIGlz IG9rIHdpdGggbWUuIElmIHlvdSBjYW4gYWxzbwpnZXQgc29tZSBvdGhlciBkaXN0cm8vT1MgcGVv cGxlIHRvIGFjayBpdCwgdGhlbiB3ZSdyZSBnb29kIGltby4KCkFja2VkLWJ5OiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9wcmludC5jICAgICAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ICBp bmNsdWRlL3RyYWNlL2V2ZW50cy9kcm1fcHJpbnQuaCB8IDExNiArKysrKysrKysrKysrKysrKysr KysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS90cmFjZS9ldmVudHMvZHJtX3ByaW50 LmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcmludC5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9wcmludC5jCj4gaW5kZXggOWEyNWQ3M2MxNTVjLi5mNTkxMjkyODExYWEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcmludC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9wcmludC5jCj4gQEAgLTI3LDExICsyNywxNSBAQAo+ICAKPiAgI2luY2x1 ZGUgPHN0ZGFyZy5oPgo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICAjaW5jbHVk ZSA8bGludXgvaW8uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+Cj4gICNpbmNs dWRlIDxsaW51eC9zZXFfZmlsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICAKPiAr I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCj4gKyNpbmNsdWRlIDx0cmFjZS9ldmVudHMvZHJt X3ByaW50Lmg+Cj4gKwo+ICAjaW5jbHVkZSA8ZHJtL2RybS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9kcnYuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiBAQCAtMjQxLDEwICsyNDUs MTAgQEAgdm9pZCBkcm1fZGV2X3ByaW50ayhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0 IGNoYXIgKmxldmVsLAo+ICAJc3RydWN0IHZhX2Zvcm1hdCB2YWY7Cj4gIAl2YV9saXN0IGFyZ3M7 Cj4gIAo+IC0JdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiAgCXZhZi5mbXQgPSBmb3JtYXQ7Cj4g IAl2YWYudmEgPSAmYXJnczsKPiAgCj4gKwl2YV9zdGFydChhcmdzLCBmb3JtYXQpOwo+ICAJaWYg KGRldikKPiAgCQlkZXZfcHJpbnRrKGxldmVsLCBkZXYsICJbIiBEUk1fTkFNRSAiOiVwc10gJXBW IiwKPiAgCQkJICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCAmdmFmKTsKPiBAQCAtMjUz LDQ5ICsyNTcsMTQ1IEBAIHZvaWQgZHJtX2Rldl9wcmludGsoY29uc3Qgc3RydWN0IGRldmljZSAq ZGV2LCBjb25zdCBjaGFyICpsZXZlbCwKPiAgCQkgICAgICAgbGV2ZWwsIF9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwgJnZhZik7Cj4gIAo+ICAJdmFfZW5kKGFyZ3MpOwo+ICsKPiArCXZhX3N0 YXJ0KGFyZ3MsIGZvcm1hdCk7Cj4gKwl0cmFjZV9kcm1fbG9nKGxldmVsLCBkZXYsICZ2YWYpOwo+ ICsJdmFfZW5kKGFyZ3MpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2Rldl9wcmludGspOwo+ ICAKPiArc3RhdGljIHVuc2lnbmVkIGludCBkcm1fdHJhY2VfZW5hYmxlZCh1bnNpZ25lZCBpbnQg Y2F0ZWdvcnkpCj4gK3sKPiArCXVuc2lnbmVkIGludCBiaXQ7Cj4gKwo+ICsJZm9yX2VhY2hfc2V0 X2JpdChiaXQsICh1bnNpZ25lZCBsb25nKikmY2F0ZWdvcnksIHNpemVvZihjYXRlZ29yeSkgKiA4 KSB7Cj4gKwkJc3dpdGNoIChCSVQoYml0KSkgewo+ICsJCWNhc2UgRFJNX1VUX05PTkU6Cj4gKwkJ CXJldHVybiB0cmFjZV9kcm1fZGJnX25vbmVfZW5hYmxlZCgpOwo+ICsJCWNhc2UgRFJNX1VUX0NP UkU6Cj4gKwkJCXJldHVybiB0cmFjZV9kcm1fZGJnX2NvcmVfZW5hYmxlZCgpOwo+ICsJCWNhc2Ug RFJNX1VUX0RSSVZFUjoKPiArCQkJcmV0dXJuIHRyYWNlX2RybV9kYmdfZHJpdmVyX2VuYWJsZWQo KTsKPiArCQljYXNlIERSTV9VVF9LTVM6Cj4gKwkJCXJldHVybiB0cmFjZV9kcm1fZGJnX2ttc19l bmFibGVkKCk7Cj4gKwkJY2FzZSBEUk1fVVRfUFJJTUU6Cj4gKwkJCXJldHVybiB0cmFjZV9kcm1f ZGJnX3ByaW1lX2VuYWJsZWQoKTsKPiArCQljYXNlIERSTV9VVF9BVE9NSUM6Cj4gKwkJCXJldHVy biB0cmFjZV9kcm1fZGJnX2F0b21pY19lbmFibGVkKCk7Cj4gKwkJY2FzZSBEUk1fVVRfVkJMOgo+ ICsJCQlyZXR1cm4gdHJhY2VfZHJtX2RiZ192YmxfZW5hYmxlZCgpOwo+ICsJCWNhc2UgRFJNX1VU X1NUQVRFOgo+ICsJCQlyZXR1cm4gdHJhY2VfZHJtX2RiZ19zdGF0ZV9lbmFibGVkKCk7Cj4gKwkJ Y2FzZSBEUk1fVVRfTEVBU0U6Cj4gKwkJCXJldHVybiB0cmFjZV9kcm1fZGJnX2xlYXNlX2VuYWJs ZWQoKTsKPiArCQljYXNlIERSTV9VVF9EUDoKPiArCQkJcmV0dXJuIHRyYWNlX2RybV9kYmdfZHBf ZW5hYmxlZCgpOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCXJldHVybiB0cmFjZV9kcm1fZGJnX3Vua25v d25fZW5hYmxlZCgpOwo+ICsJCX0KPiArCX0KPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgZHJtX2RvX3RyYWNlKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWdu ZWQgaW50IGNhdGVnb3J5LAo+ICsJCQkgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKQo+ICt7Cj4gKwlX QVJOX09OKGh3ZWlnaHQzMihjYXRlZ29yeSkgPiAxKTsKPiArCj4gKwlzd2l0Y2ggKGNhdGVnb3J5 KSB7Cj4gKwljYXNlIERSTV9VVF9OT05FOgo+ICsJCXRyYWNlX2RybV9kYmdfbm9uZShkZXYsIHZh Zik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9VVF9DT1JFOgo+ICsJCXRyYWNlX2RybV9kYmdf Y29yZShkZXYsIHZhZik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9VVF9EUklWRVI6Cj4gKwkJ dHJhY2VfZHJtX2RiZ19kcml2ZXIoZGV2LCB2YWYpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1f VVRfS01TOgo+ICsJCXRyYWNlX2RybV9kYmdfa21zKGRldiwgdmFmKTsKPiArCQlicmVhazsKPiAr CWNhc2UgRFJNX1VUX1BSSU1FOgo+ICsJCXRyYWNlX2RybV9kYmdfcHJpbWUoZGV2LCB2YWYpOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fVVRfQVRPTUlDOgo+ICsJCXRyYWNlX2RybV9kYmdfYXRv bWljKGRldiwgdmFmKTsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX1VUX1ZCTDoKPiArCQl0cmFj ZV9kcm1fZGJnX3ZibChkZXYsIHZhZik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9VVF9TVEFU RToKPiArCQl0cmFjZV9kcm1fZGJnX3N0YXRlKGRldiwgdmFmKTsKPiArCQlicmVhazsKPiArCWNh c2UgRFJNX1VUX0xFQVNFOgo+ICsJCXRyYWNlX2RybV9kYmdfbGVhc2UoZGV2LCB2YWYpOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBEUk1fVVRfRFA6Cj4gKwkJdHJhY2VfZHJtX2RiZ19kcChkZXYsIHZh Zik7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXRyYWNlX2RybV9kYmdfdW5rbm93bihk ZXYsIHZhZik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gK30KPiArCj4gIHZvaWQgZHJtX2Rldl9kYmco Y29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY2F0ZWdvcnksCj4gIAkJIGNv bnN0IGNoYXIgKmZvcm1hdCwgLi4uKQo+ICB7Cj4gIAlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKPiAr CXVuc2lnbmVkIGludCBiaXQ7Cj4gIAl2YV9saXN0IGFyZ3M7Cj4gIAo+IC0JaWYgKCFkcm1fZGVi dWdfZW5hYmxlZChjYXRlZ29yeSkpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCXZhX3N0YXJ0KGFyZ3Ms IGZvcm1hdCk7Cj4gIAl2YWYuZm10ID0gZm9ybWF0Owo+ICAJdmFmLnZhID0gJmFyZ3M7Cj4gIAo+ IC0JaWYgKGRldikKPiAtCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsIGRldiwgIlsiIERSTV9OQU1F ICI6JXBzXSAlcFYiLAo+IC0JCQkgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICZ2YWYp Owo+IC0JZWxzZQo+IC0JCXByaW50ayhLRVJOX0RFQlVHICJbIiBEUk1fTkFNRSAiOiVwc10gJXBW IiwKPiAtCQkgICAgICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCAmdmFmKTsKPiArCWlm IChkcm1fZGVidWdfZW5hYmxlZChjYXRlZ29yeSkpIHsKPiArCQl2YV9zdGFydChhcmdzLCBmb3Jt YXQpOwo+ICsJCWlmIChkZXYpCj4gKwkJCWRldl9wcmludGsoS0VSTl9ERUJVRywgZGV2LCAiWyIg RFJNX05BTUUgIjolcHNdICVwViIsCj4gKwkJCQkgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo MCksICZ2YWYpOwo+ICsJCWVsc2UKPiArCQkJcHJpbnRrKEtFUk5fREVCVUcgIlsiIERSTV9OQU1F ICI6JXBzXSAlcFYiLAo+ICsJCQkgICAgICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCAm dmFmKTsKPiArCQl2YV9lbmQoYXJncyk7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFkcm1fdHJhY2VfZW5h YmxlZChjYXRlZ29yeSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWZvcl9lYWNoX3NldF9iaXQoYml0 LCAodW5zaWduZWQgbG9uZyopJmNhdGVnb3J5LCBzaXplb2YoY2F0ZWdvcnkpICogOCkgewo+ICsJ CXZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Cj4gKwkJZHJtX2RvX3RyYWNlKGRldiwgQklUKGJpdCks ICZ2YWYpOwo+ICsJCXZhX2VuZChhcmdzKTsKPiArCX0KPiAgCj4gLQl2YV9lbmQoYXJncyk7Cj4g IH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZGV2X2RiZyk7Cj4gIAo+ICB2b2lkIGRybV9kYmcodW5z aWduZWQgaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKPiAgewo+ICAJc3Ry dWN0IHZhX2Zvcm1hdCB2YWY7Cj4gKwl1bnNpZ25lZCBpbnQgYml0Owo+ICAJdmFfbGlzdCBhcmdz Owo+ICAKPiAtCWlmICghZHJtX2RlYnVnX2VuYWJsZWQoY2F0ZWdvcnkpKQo+IC0JCXJldHVybjsK PiAtCj4gLQl2YV9zdGFydChhcmdzLCBmb3JtYXQpOwo+ICAJdmFmLmZtdCA9IGZvcm1hdDsKPiAg CXZhZi52YSA9ICZhcmdzOwo+ICAKPiAtCXByaW50ayhLRVJOX0RFQlVHICJbIiBEUk1fTkFNRSAi OiVwc10gJXBWIiwKPiAtCSAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICZ2YWYp Owo+ICsJaWYgKGRybV9kZWJ1Z19lbmFibGVkKGNhdGVnb3J5KSkgewo+ICsJCXZhX3N0YXJ0KGFy Z3MsIGZvcm1hdCk7Cj4gKwkJcHJpbnRrKEtFUk5fREVCVUcgIlsiIERSTV9OQU1FICI6JXBzXSAl cFYiLAo+ICsJCSAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICZ2YWYpOwo+ICsJ CXZhX2VuZChhcmdzKTsKPiArCX0KPiAgCj4gLQl2YV9lbmQoYXJncyk7Cj4gKwlpZiAoIWRybV90 cmFjZV9lbmFibGVkKGNhdGVnb3J5KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yX2VhY2hfc2V0 X2JpdChiaXQsICh1bnNpZ25lZCBsb25nKikmY2F0ZWdvcnksIHNpemVvZihjYXRlZ29yeSkgKiA4 KSB7Cj4gKwkJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiArCQlkcm1fZG9fdHJhY2UoTlVMTCwg QklUKGJpdCksICZ2YWYpOwo+ICsJCXZhX2VuZChhcmdzKTsKPiArCX0KPiAgfQo+ICBFWFBPUlRf U1lNQk9MKGRybV9kYmcpOwo+ICAKPiBAQCAtMzA0LDEzICs0MDQsMTYgQEAgdm9pZCBkcm1fZXJy KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQo+ICAJc3RydWN0IHZhX2Zvcm1hdCB2YWY7Cj4gIAl2 YV9saXN0IGFyZ3M7Cj4gIAo+IC0JdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiAgCXZhZi5mbXQg PSBmb3JtYXQ7Cj4gIAl2YWYudmEgPSAmYXJnczsKPiAgCj4gKwl2YV9zdGFydChhcmdzLCBmb3Jt YXQpOwo+ICAJcHJpbnRrKEtFUk5fRVJSICJbIiBEUk1fTkFNRSAiOiVwc10gKkVSUk9SKiAlcFYi LAo+ICAJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgJnZhZik7Cj4gKwl2YV9l bmQoYXJncyk7Cj4gIAo+ICsJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiArCXRyYWNlX2RybV9l cnIoTlVMTCwgJnZhZik7Cj4gIAl2YV9lbmQoYXJncyk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1fZXJyKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZHJtX3ByaW50Lmgg Yi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9kcm1fcHJpbnQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYzkzYzY5ZjNmZTQKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZHJtX3ByaW50LmgKPiBAQCAtMCwwICsxLDExNiBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHlyaWdodCAo QykgMjAxOSBHb29nbGUsIEluYy4KPiArICoKPiArICogQXV0aG9yczoKPiArICogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gKyAqLwo+ICsjdW5kZWYgVFJBQ0VfU1lTVEVNCj4g KyNkZWZpbmUgVFJBQ0VfU1lTVEVNIGRybV9wcmludAo+ICsKPiArI2lmICFkZWZpbmVkKF9UUkFD RV9EUk1fUFJJTlRfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRCkKPiArCj4g KyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3RyYWNlcG9pbnQu aD4KPiArCj4gKyNkZWZpbmUgRFJNX1BSSU5UX01BWCAyNTYKPiArCj4gKyNkZWZpbmUgX1RSQUNF X0RSTV9QUklOVF9ICj4gKwo+ICtUUkFDRV9FVkVOVChkcm1fbG9nLAo+ICsJVFBfUFJPVE8oY29u c3QgY2hhciAqIGxldmVsLCBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZiksCj4gKwlUUF9BUkdTKGxldmVsLCBkZXYsIHZhZiksCj4gKwlUUF9TVFJV Q1RfX2VudHJ5KAo+ICsJCV9fZmllbGQoY29uc3QgY2hhciAqLAkJbGV2ZWwJCQkpCj4gKwkJX19m aWVsZChjb25zdCBzdHJ1Y3QgZGV2aWNlICosCWRldgkJCSkKPiArCQlfX2R5bmFtaWNfYXJyYXko Y2hhciwJCW1zZywJRFJNX1BSSU5UX01BWAkpCj4gKwkJX19maWVsZChpbnQsCQkJbGVuCQkJKQo+ ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50cnktPmxldmVsID0gbGV2ZWw7Cj4g KwkJX19lbnRyeS0+ZGV2ID0gZGV2Owo+ICsJCV9fZW50cnktPmxlbiA9IHZzbnByaW50ZihfX2dl dF9zdHIobXNnKSwgRFJNX1BSSU5UX01BWCwKPiArCQkJCQkgdmFmLT5mbXQsICp2YWYtPnZhKTsK PiArCQlpZiAoX19lbnRyeS0+bGVuID4gMCAmJgo+ICsJCSAgICBfX2dldF9zdHIobXNnKVtfX2Vu dHJ5LT5sZW4gLSAxXSA9PSAnXG4nKQo+ICsJCQlfX2dldF9zdHIobXNnKVstLV9fZW50cnktPmxl bl0gPSAnXDAnOwo+ICsJKSwKPiArCVRQX3ByaW50aygiJXMgJXMgJXM6ICVzIiwgX19lbnRyeS0+ bGV2ZWwsCj4gKwkJICBfX2VudHJ5LT5kZXYgPyBkZXZfZHJpdmVyX3N0cmluZyhfX2VudHJ5LT5k ZXYpIDogIihOVUxMKToiLAo+ICsJCSAgX19lbnRyeS0+ZGV2ID8gZGV2X25hbWUoX19lbnRyeS0+ ZGV2KSA6ICIiLCBfX2dldF9zdHIobXNnKSkKPiArKTsKPiArCj4gK1RSQUNFX0VWRU5UKGNsYXNz X2RybV9jYXRlZ29yeV9sb2csCj4gKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCB2YV9mb3JtYXQgKnZhZiksCj4gKwlUUF9BUkdTKGRldiwgdmFmKSwKPiArCVRQX1NU UlVDVF9fZW50cnkoCj4gKwkJX19maWVsZChjb25zdCBzdHJ1Y3QgZGV2aWNlICosCWRldgkJCSkK PiArCQlfX2R5bmFtaWNfYXJyYXkoY2hhciwJCW1zZywJRFJNX1BSSU5UX01BWAkpCj4gKwkJX19m aWVsZChpbnQsCQkJbGVuCQkJKQo+ICsJKSwKPiArCVRQX2Zhc3RfYXNzaWduKAo+ICsJCV9fZW50 cnktPmRldiA9IGRldjsKPiArCQlfX2VudHJ5LT5sZW4gPSB2c25wcmludGYoX19nZXRfc3RyKG1z ZyksIERSTV9QUklOVF9NQVgsCj4gKwkJCQkJIHZhZi0+Zm10LCAqdmFmLT52YSk7Cj4gKwkJaWYg KF9fZW50cnktPmxlbiA+IDAgJiYKPiArCQkgICAgX19nZXRfc3RyKG1zZylbX19lbnRyeS0+bGVu IC0gMV0gPT0gJ1xuJykKPiArCQkJX19nZXRfc3RyKG1zZylbLS1fX2VudHJ5LT5sZW5dID0gJ1ww JzsKPiArCSksCj4gKwlUUF9wcmludGsoIiVzICVzJXMlcyIsCj4gKwkJICBfX2VudHJ5LT5kZXYg PyBkZXZfZHJpdmVyX3N0cmluZyhfX2VudHJ5LT5kZXYpIDogIiIsCj4gKwkJICBfX2VudHJ5LT5k ZXYgPyBkZXZfbmFtZShfX2VudHJ5LT5kZXYpIDogIiIsCj4gKwkJICBfX2VudHJ5LT5kZXYgPyAi OiAiIDogIiIsIF9fZ2V0X3N0cihtc2cpKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoY2xhc3NfZHJt X2NhdGVnb3J5X2xvZywgZHJtX2VyciwKPiArCVRQX1BST1RPKGNvbnN0IHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKSwKPiArCVRQX0FSR1MoZGV2LCB2YWYpCj4gKyk7 Cj4gK0RFRklORV9FVkVOVChjbGFzc19kcm1fY2F0ZWdvcnlfbG9nLCBkcm1fZGJnX25vbmUsCj4g KwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2YV9mb3JtYXQgKnZh ZiksCj4gKwlUUF9BUkdTKGRldiwgdmFmKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoY2xhc3NfZHJt X2NhdGVnb3J5X2xvZywgZHJtX2RiZ19jb3JlLAo+ICsJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpLAo+ICsJVFBfQVJHUyhkZXYsIHZhZikK PiArKTsKPiArREVGSU5FX0VWRU5UKGNsYXNzX2RybV9jYXRlZ29yeV9sb2csIGRybV9kYmdfZHJp dmVyLAo+ICsJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdmFfZm9y bWF0ICp2YWYpLAo+ICsJVFBfQVJHUyhkZXYsIHZhZikKPiArKTsKPiArREVGSU5FX0VWRU5UKGNs YXNzX2RybV9jYXRlZ29yeV9sb2csIGRybV9kYmdfa21zLAo+ICsJVFBfUFJPVE8oY29uc3Qgc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpLAo+ICsJVFBfQVJHUyhkZXYs IHZhZikKPiArKTsKPiArREVGSU5FX0VWRU5UKGNsYXNzX2RybV9jYXRlZ29yeV9sb2csIGRybV9k YmdfcHJpbWUsCj4gKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZiksCj4gKwlUUF9BUkdTKGRldiwgdmFmKQo+ICspOwo+ICtERUZJTkVfRVZF TlQoY2xhc3NfZHJtX2NhdGVnb3J5X2xvZywgZHJtX2RiZ19hdG9taWMsCj4gKwlUUF9QUk9UTyhj b25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2YV9mb3JtYXQgKnZhZiksCj4gKwlUUF9B UkdTKGRldiwgdmFmKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoY2xhc3NfZHJtX2NhdGVnb3J5X2xv ZywgZHJtX2RiZ192YmwsCj4gKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCB2YV9mb3JtYXQgKnZhZiksCj4gKwlUUF9BUkdTKGRldiwgdmFmKQo+ICspOwo+ICtERUZJ TkVfRVZFTlQoY2xhc3NfZHJtX2NhdGVnb3J5X2xvZywgZHJtX2RiZ19zdGF0ZSwKPiArCVRQX1BS T1RPKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKSwKPiAr CVRQX0FSR1MoZGV2LCB2YWYpCj4gKyk7Cj4gK0RFRklORV9FVkVOVChjbGFzc19kcm1fY2F0ZWdv cnlfbG9nLCBkcm1fZGJnX2xlYXNlLAo+ICsJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpLAo+ICsJVFBfQVJHUyhkZXYsIHZhZikKPiArKTsK PiArREVGSU5FX0VWRU5UKGNsYXNzX2RybV9jYXRlZ29yeV9sb2csIGRybV9kYmdfZHAsCj4gKwlU UF9QUk9UTyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB2YV9mb3JtYXQgKnZhZiks Cj4gKwlUUF9BUkdTKGRldiwgdmFmKQo+ICspOwo+ICtERUZJTkVfRVZFTlQoY2xhc3NfZHJtX2Nh dGVnb3J5X2xvZywgZHJtX2RiZ191bmtub3duLAo+ICsJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpLAo+ICsJVFBfQVJHUyhkZXYsIHZhZikK PiArKTsKPiArI2VuZGlmCj4gKwo+ICsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3Rl Y3Rpb24gKi8KPiArI2luY2x1ZGUgPHRyYWNlL2RlZmluZV90cmFjZS5oPgo+IC0tIAo+IFNlYW4g UGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCj4gCgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs