From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 11/24] drm/doc: Document drm_file.[hc] Date: Mon, 13 Mar 2017 13:53:28 -0400 Message-ID: <20170313175328.GL20329@art_vandelay> References: <20170308141257.12119-1-daniel.vetter@ffwll.ch> <20170308141257.12119-12-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-x230.google.com (mail-qt0-x230.google.com [IPv6:2607:f8b0:400d:c0d::230]) by gabe.freedesktop.org (Postfix) with ESMTPS id 826DB6E5B1 for ; Mon, 13 Mar 2017 17:53:32 +0000 (UTC) Received: by mail-qt0-x230.google.com with SMTP id i34so37795352qtc.0 for ; Mon, 13 Mar 2017 10:53:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170308141257.12119-12-daniel.vetter@ffwll.ch> 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: Daniel Vetter , Intel Graphics Development , DRI Development List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMDgsIDIwMTcgYXQgMDM6MTI6NDRQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBXZWxsLCBtb3N0bHkgZHJtX2ZpbGUuaCwgYW5kIGNsZWFuIHVwIGFsbCByZWxhdGVk IHRoaW5nczoKPiAKPiAtIEkgZGlkbnQnIGZpZ3VyZSBvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl biBwcmVjbG9zZSBhbmQgcG9zdGNsb3NlLgo+ICAgVGhlIGV4aXN0aW5nIGV4cGxhbmF0aW9uIGlu IGRybS1pbnRlcm5hbHMucnN0IGRpZG4ndCBjb252aW5jZSBtZSwKPiAgIHNpbmNlIGl0J3MgYWxz byByZWFsbHkgb3V0ZGF0ZWQgLSB3ZSBjbGVhbiB1cCBwZW5kaW5nIERSTSBldmVudHMgaW4KPiAg IHRoZSBjb3JlIG5vd2FkYXlzLiBJIHB1dCBhIEZJWE1FIGluIGZvciB0aGUgZnV0dXJlLgo+IAo+ IC0gQW5vdGhlciBGSVhNRSBpcyB0byBoYXZlIGEgbWFjcm8gZm9yIGRlZmF1bHQgZm9wcy4KPiAK PiAtIExvdHMgb2YgbGlua3MgYWxsIGFyb3VuZCwgbWFpbiBhcmVhcyBhcmUgdG8gdGllIHRoZSBv dmVydmlldyBpbgo+ICAgZHJtX2ZpbGUuYyBtb3JlIGludG8gdGhlIGNhbGxiYWNrcyBpbiBzdHJ1 Y3QgZHJtX2RldmljZSwgYW5kIHRoZQo+ICAgb3RoZXIgaXMgdG8gbGluayByZW5kZXIvcHJpbWFy eSBub2RlIGNvZGUgdG8gdGhlIHJpZ2h0IHNlY3Rpb25zIGluCj4gICBkcm0tdWFwaS5yc3QuCj4g Cj4gLSBBbHNvIG1vdmVkIHRoZSBvcGVuL2Nsb3NlIHN0dWZmIHRvIGRybV9kcnYuaCBmcm9tIGRy bS1pbnRlcm5hbHMucnN0LAo+ICAgc2VlbXMgbGlrZSB0aGUgYmV0dGVyIHBsYWNlIGZvciB0aGF0 IGluZm9ybWF0aW9uLiBTaW5jZSB0aGF0IHNlY3Rpb24KPiAgIHdhcyByYXRoZXIgb3V0ZGF0ZWQg dGhpcyBhbW91bnRlZCB0byBmdWxsLW9uIHJld3JpdGUuCj4gCj4gQSBiaWcgbWlzc2luZyBwaWVj ZSBoZXJlIGlzIHNvbWUgb3ZlcnZpZXcgZ3JhcGgsIGJ1dCBJIHRoaW5rIGJldHRlciB0bwo+IHdh aXQgd2l0aCB0aGF0IG9uZSB1bnRpbCBkcm1fZGV2aWNlIGFuZCBkcm1fZHJpdmVyIGFyZSBhbHNv IGZ1bGx5Cj4gZG9jdW1lbnRlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGludGVsLmNvbT4KCk92ZXJhbGwsIGF3ZXNvbWUgcGF0Y2gsIHJlYWxseSBk b2VzIGEgZ29vZCBqb2IgZXhwbGFpbmluZyB0aGUgcGFyYW1ldGVycyBhbmQgaG93CnRoZXkgaW50 ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIChib251cyBwb2ludHMgZm9yIHRoZSBsb2NrIGJyZWFkY3J1 bWJzKS4gSSBqdXN0CmhhdmUgYSBmZXcgb3B0aW9uYWwgbml0cyBhbmQgc29tZSBzcGVsbGluZyBl cnJvcnMuCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cgo+ IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdCB8ICA1MiArLS0tLS0t Cj4gIERvY3VtZW50YXRpb24vZ3B1L2RybS11YXBpLnJzdCAgICAgIHwgICA0ICsKPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9maWxlLmMgICAgICAgICAgfCAgNjYgKysrKystLS0tCj4gIGluY2x1ZGUv ZHJtL2RybV9kcnYuaCAgICAgICAgICAgICAgIHwgIDgxICsrKysrKysrKystCj4gIGluY2x1ZGUv ZHJtL2RybV9maWxlLmggICAgICAgICAgICAgIHwgMjY3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDM1NiBpbnNlcnRpb25zKCspLCAxMTQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRl cm5hbHMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QKPiBpbmRleCBl YTMyOWI3MWM0NTkuLjdhMmZlNGEwMjIxMiAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dw dS9kcm0taW50ZXJuYWxzLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5h bHMucnN0Cj4gQEAgLTI0Niw2MSArMjQ2LDE1IEBAIGRyaXZlcnMuCj4gIE9wZW4vQ2xvc2UsIEZp bGUgT3BlcmF0aW9ucyBhbmQgSU9DVExzCj4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Cj4gIAo+IC1PcGVuIGFuZCBDbG9zZQo+IC0tLS0tLS0tLS0tLS0tLQo+IC0KPiAt T3BlbiBhbmQgY2xvc2UgaGFuZGxlcnMuIE5vbmUgb2YgdGhvc2UgbWV0aG9kcyBhcmUgbWFuZGF0 b3J5OjoKPiAtCj4gLSAgICBpbnQgKCpmaXJzdG9wZW4pIChzdHJ1Y3QgZHJtX2RldmljZSAqKTsK PiAtICAgIHZvaWQgKCpsYXN0Y2xvc2UpIChzdHJ1Y3QgZHJtX2RldmljZSAqKTsKPiAtICAgIGlu dCAoKm9wZW4pIChzdHJ1Y3QgZHJtX2RldmljZSAqLCBzdHJ1Y3QgZHJtX2ZpbGUgKik7Cj4gLSAg ICB2b2lkICgqcHJlY2xvc2UpIChzdHJ1Y3QgZHJtX2RldmljZSAqLCBzdHJ1Y3QgZHJtX2ZpbGUg Kik7Cj4gLSAgICB2b2lkICgqcG9zdGNsb3NlKSAoc3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0 IGRybV9maWxlICopOwo+IC0KPiAtVGhlIGZpcnN0b3BlbiBtZXRob2QgaXMgY2FsbGVkIGJ5IHRo ZSBEUk0gY29yZSBmb3IgbGVnYWN5IFVNUyAoVXNlciBNb2RlCj4gLVNldHRpbmcpIGRyaXZlcnMg b25seSB3aGVuIGFuIGFwcGxpY2F0aW9uIG9wZW5zIGEgZGV2aWNlIHRoYXQgaGFzIG5vCj4gLW90 aGVyIG9wZW5lZCBmaWxlIGhhbmRsZS4gVU1TIGRyaXZlcnMgY2FuIGltcGxlbWVudCBpdCB0byBh Y3F1aXJlIGRldmljZQo+IC1yZXNvdXJjZXMuIEtNUyBkcml2ZXJzIGNhbid0IHVzZSB0aGUgbWV0 aG9kIGFuZCBtdXN0IGFjcXVpcmUgcmVzb3VyY2VzCj4gLWluIHRoZSBsb2FkIG1ldGhvZCBpbnN0 ZWFkLgo+IC0KPiAtU2ltaWxhcmx5IHRoZSBsYXN0Y2xvc2UgbWV0aG9kIGlzIGNhbGxlZCB3aGVu IHRoZSBsYXN0IGFwcGxpY2F0aW9uCj4gLWhvbGRpbmcgYSBmaWxlIGhhbmRsZSBvcGVuZWQgb24g dGhlIGRldmljZSBjbG9zZXMgaXQsIGZvciBib3RoIFVNUyBhbmQKPiAtS01TIGRyaXZlcnMuIEFk ZGl0aW9uYWxseSwgdGhlIG1ldGhvZCBpcyBhbHNvIGNhbGxlZCBhdCBtb2R1bGUgdW5sb2FkCj4g LXRpbWUgb3IsIGZvciBob3QtcGx1Z2dhYmxlIGRldmljZXMsIHdoZW4gdGhlIGRldmljZSBpcyB1 bnBsdWdnZWQuIFRoZQo+IC1maXJzdG9wZW4gYW5kIGxhc3RjbG9zZSBjYWxscyBjYW4gdGh1cyBi ZSB1bmJhbGFuY2VkLgo+IC0KPiAtVGhlIG9wZW4gbWV0aG9kIGlzIGNhbGxlZCBldmVyeSB0aW1l IHRoZSBkZXZpY2UgaXMgb3BlbmVkIGJ5IGFuCj4gLWFwcGxpY2F0aW9uLiBEcml2ZXJzIGNhbiBh bGxvY2F0ZSBwZXItZmlsZSBwcml2YXRlIGRhdGEgaW4gdGhpcyBtZXRob2QKPiAtYW5kIHN0b3Jl IHRoZW0gaW4gdGhlIHN0cnVjdCA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2ZpbGUKPiAtPGRybV9maWxl PmAgZHJpdmVyX3ByaXYgZmllbGQuIE5vdGUgdGhhdCB0aGUgb3BlbiBtZXRob2QgaXMKPiAtY2Fs bGVkIGJlZm9yZSBmaXJzdG9wZW4uCj4gLQo+IC1UaGUgY2xvc2Ugb3BlcmF0aW9uIGlzIHNwbGl0 IGludG8gcHJlY2xvc2UgYW5kIHBvc3RjbG9zZSBtZXRob2RzLgo+IC1Ecml2ZXJzIG11c3Qgc3Rv cCBhbmQgY2xlYW51cCBhbGwgcGVyLWZpbGUgb3BlcmF0aW9ucyBpbiB0aGUgcHJlY2xvc2UKPiAt bWV0aG9kLiBGb3IgaW5zdGFuY2UgcGVuZGluZyB2ZXJ0aWNhbCBibGFua2luZyBhbmQgcGFnZSBm bGlwIGV2ZW50cyBtdXN0Cj4gLWJlIGNhbmNlbGxlZC4gTm8gcGVyLWZpbGUgb3BlcmF0aW9uIGlz IGFsbG93ZWQgb24gdGhlIGZpbGUgaGFuZGxlIGFmdGVyCj4gLXJldHVybmluZyBmcm9tIHRoZSBw cmVjbG9zZSBtZXRob2QuCj4gLQo+IC1GaW5hbGx5IHRoZSBwb3N0Y2xvc2UgbWV0aG9kIGlzIGNh bGxlZCBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZSBjbG9zZQo+IC1vcGVyYXRpb24sIHJpZ2h0IGJl Zm9yZSBjYWxsaW5nIHRoZSBsYXN0Y2xvc2UgbWV0aG9kIGlmIG5vIG90aGVyIG9wZW4KPiAtZmls ZSBoYW5kbGUgZXhpc3RzIGZvciB0aGUgZGV2aWNlLiBEcml2ZXJzIHRoYXQgaGF2ZSBhbGxvY2F0 ZWQgcGVyLWZpbGUKPiAtcHJpdmF0ZSBkYXRhIGluIHRoZSBvcGVuIG1ldGhvZCBzaG91bGQgZnJl ZSBpdCBoZXJlLgo+IC0KPiAtVGhlIGxhc3RjbG9zZSBtZXRob2Qgc2hvdWxkIHJlc3RvcmUgQ1JU QyBhbmQgcGxhbmUgcHJvcGVydGllcyB0byBkZWZhdWx0Cj4gLXZhbHVlLCBzbyB0aGF0IGEgc3Vi c2VxdWVudCBvcGVuIG9mIHRoZSBkZXZpY2Ugd2lsbCBub3QgaW5oZXJpdCBzdGF0ZQo+IC1mcm9t IHRoZSBwcmV2aW91cyB1c2VyLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4ZWN1dGUgZGVsYXll ZCBwb3dlcgo+IC1zd2l0Y2hpbmcgc3RhdGUgY2hhbmdlcywgZS5nLiBpbiBjb25qdW5jdGlvbiB3 aXRoIHRoZSA6cmVmOmB2Z2Ffc3dpdGNoZXJvb2AKPiAtaW5mcmFzdHJ1Y3R1cmUuIEJleW9uZCB0 aGF0IEtNUyBkcml2ZXJzIHNob3VsZCBub3QgZG8gYW55Cj4gLWZ1cnRoZXIgY2xlYW51cC4gT25s eSBsZWdhY3kgVU1TIGRyaXZlcnMgbWlnaHQgbmVlZCB0byBjbGVhbiB1cCBkZXZpY2UKPiAtc3Rh dGUgc28gdGhhdCB0aGUgdmdhIGNvbnNvbGUgb3IgYW4gaW5kZXBlbmRlbnQgZmJkZXYgZHJpdmVy IGNvdWxkIHRha2UKPiAtb3Zlci4KPiAtCj4gIEZpbGUgT3BlcmF0aW9ucwo+ICAtLS0tLS0tLS0t LS0tLS0KPiAgCj4gIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+ ICAgICA6ZG9jOiBmaWxlIG9wZXJhdGlvbnMKPiAgCj4gKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2RybS9kcm1fZmlsZS5oCj4gKyAgIDppbnRlcm5hbDoKPiArCj4gIC4uIGtlcm5lbC1kb2M6OiBk cml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+ICAgICA6ZXhwb3J0Ogo+ICAKPiBkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJt LXVhcGkucnN0Cj4gaW5kZXggZmNjMjI4ZWY1YmM0Li4zNTI2NTI4MTBkYWIgMTAwNjQ0Cj4gLS0t IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLXVhcGkucnN0Cj4gQEAgLTIxLDYgKzIxLDggQEAgbGliZHJtIERldmljZSBMb29rdXAK PiAgICAgOmRvYzogZ2V0dW5pcXVlIGFuZCBzZXR2ZXJzaW9uIHN0b3J5Cj4gIAo+ICAKPiArLi4g X2RybV9wcmltYXJ5X25vZGU6Cj4gKwo+ICBQcmltYXJ5IE5vZGVzLCBEUk0gTWFzdGVyIGFuZCBB dXRoZW50aWNhdGlvbgo+ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+ICAKPiBAQCAtMTAzLDYgKzEwNSw4IEBAIGlzIGFscmVhZHkgcmF0aGVyIHBhaW5mdWwg Zm9yIHRoZSBEUk0gc3Vic3lzdGVtLCB3aXRoIG11bHRpcGxlIGRpZmZlcmVudCB1QVBJcwo+ICBm b3IgdGhlIHNhbWUgdGhpbmcgY28tZXhpc3RpbmcuIElmIHdlIGFkZCBhIGZldyBtb3JlIGNvbXBs ZXRlIG1pc3Rha2VzIGludG8gdGhlCj4gIG1peCBldmVyeSB5ZWFyIGl0IHdvdWxkIGJlIGVudGly ZWx5IHVubWFuYWdlYWJsZS4KPiAgCj4gKy4uIF9kcm1fcmVuZGVyX25vZGU6Cj4gKwo+ICBSZW5k ZXIgbm9kZXMKPiAgPT09PT09PT09PT09Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZpbGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCj4gaW5kZXggZDllNjNk NzNkM2VjLi5hODgxM2ExMTE1ZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9m aWxlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+IEBAIC01MCwxMiArNTAs MTQgQEAgREVGSU5FX01VVEVYKGRybV9nbG9iYWxfbXV0ZXgpOwo+ICAgKgo+ICAgKiBEcml2ZXJz IG11c3QgZGVmaW5lIHRoZSBmaWxlIG9wZXJhdGlvbnMgc3RydWN0dXJlIHRoYXQgZm9ybXMgdGhl IERSTQo+ICAgKiB1c2Vyc3BhY2UgQVBJIGVudHJ5IHBvaW50LCBldmVuIHRob3VnaCBtb3N0IG9m IHRob3NlIG9wZXJhdGlvbnMgYXJlCj4gLSAqIGltcGxlbWVudGVkIGluIHRoZSBEUk0gY29yZS4g VGhlIG1hbmRhdG9yeSBmdW5jdGlvbnMgYXJlIGRybV9vcGVuKCksCj4gKyAqIGltcGxlbWVudGVk IGluIHRoZSBEUk0gY29yZS4gVGhlIHJlc3VsdGluZyAmc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBt dXN0IGJlCj4gKyAqIHN0b3JlZCBpbiB0aGUgJmRybV9kcml2ZXIuZm9wcyBmaWVsZC4gVGhlIG1h bmRhdG9yeSBmdW5jdGlvbnMgYXJlIGRybV9vcGVuKCksCj4gICAqIGRybV9yZWFkKCksIGRybV9p b2N0bCgpIGFuZCBkcm1fY29tcGF0X2lvY3RsKCkgaWYgQ09ORklHX0NPTVBBVCBpcyBlbmFibGVk Cj4gLSAqIChub3RlIHRoYXQgZHJtX2NvbXBhdF9pb2N0bCB3aWxsIGJlIE5VTEwgaWYgQ09ORklH X0NPTVBBVD1uKS4gRHJpdmVycyB3aGljaAo+IC0gKiBpbXBsZW1lbnQgcHJpdmF0ZSBpb2N0bHMg dGhhdCByZXF1aXJlIDMyLzY0IGJpdCBjb21wYXRpYmlsaXR5IHN1cHBvcnQgbXVzdAo+IC0gKiBw cm92aWRlIHRoZWlyIG93biAuY29tcGF0X2lvY3RsKCkgaGFuZGxlciB0aGF0IHByb2Nlc3NlcyBw cml2YXRlIGlvY3RscyBhbmQKPiAtICogY2FsbHMgZHJtX2NvbXBhdF9pb2N0bCgpIGZvciBjb3Jl IGlvY3Rscy4KPiArICogTm90ZSB0aGF0IGRybV9jb21wYXRfaW9jdGwgd2lsbCBiZSBOVUxMIGlm IENPTkZJR19DT01QQVQ9biwgc28gdGhlcmUncyBubwo+ICsgKiBuZWVkIHRvIHNwcmlua2xlICNp ZmRlZiBpbnRvIHRoZSBjb2RlLiBEcml2ZXJzIHdoaWNoIGltcGxlbWVudCBwcml2YXRlIGlvY3Rs cwo+ICsgKiB0aGF0IHJlcXVpcmUgMzIvNjQgYml0IGNvbXBhdGliaWxpdHkgc3VwcG9ydCBtdXN0 IHByb3ZpZGUgdGhlaXIgb3duCj4gKyAqICZmaWxlX29wZXJhdGlvbnMuY29tcGF0X2lvY3RsIGhh bmRsZXIgdGhhdCBwcm9jZXNzZXMgcHJpdmF0ZSBpb2N0bHMgYW5kIGNhbGxzCj4gKyAqIGRybV9j b21wYXRfaW9jdGwoKSBmb3IgY29yZSBpb2N0bHMuCj4gICAqCj4gICAqIEluIGFkZGl0aW9uIGRy bV9yZWFkKCkgYW5kIGRybV9wb2xsKCkgcHJvdmlkZSBzdXBwb3J0IGZvciBEUk0gZXZlbnRzLiBE Uk0KPiAgICogZXZlbnRzIGFyZSBhIGdlbmVyaWMgYW5kIGV4dGVuc2libGUgbWVhbnMgdG8gc2Vu ZCBhc3luY2hyb25vdXMgZXZlbnRzIHRvCj4gQEAgLTYzLDEwICs2NSwxNCBAQCBERUZJTkVfTVVU RVgoZHJtX2dsb2JhbF9tdXRleCk7Cj4gICAqIHBhZ2UgZmxpcCBjb21wbGV0aW9ucyBieSB0aGUg S01TIEFQSS4gQnV0IGRyaXZlcnMgY2FuIGFsc28gdXNlIGl0IGZvciB0aGVpcgo+ICAgKiBvd24g bmVlZHMsIGUuZy4gdG8gc2lnbmFsIGNvbXBsZXRpb24gb2YgcmVuZGVyaW5nLgo+ICAgKgo+ICsg KiBGb3IgdGhlIGRyaXZlci1zaWRlIGV2ZW50IGludGVyZmFjZSBzZWUgZHJtX2V2ZW50X3Jlc2Vy dmVfaW5pdCgpIGFuZAo+ICsgKiBkcm1fc2VuZF9ldmVudCgpIGFzIHRoZSBtYWluIHN0YXJ0aW5n IHBvaW50cy4KPiArICoKPiAgICogVGhlIG1lbW9yeSBtYXBwaW5nIGltcGxlbWVudGF0aW9uIHdp bGwgdmFyeSBkZXBlbmRpbmcgb24gaG93IHRoZSBkcml2ZXIKPiAgICogbWFuYWdlcyBtZW1vcnku IExlZ2FjeSBkcml2ZXJzIHdpbGwgdXNlIHRoZSBkZXByZWNhdGVkIGRybV9sZWdhY3lfbW1hcCgp Cj4gICAqIGZ1bmN0aW9uLCBtb2Rlcm4gZHJpdmVycyBzaG91bGQgdXNlIG9uZSBvZiB0aGUgcHJv dmlkZWQgbWVtb3J5LW1hbmFnZXIKPiAtICogc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBGb3Ig R0VNLWJhc2VkIGRyaXZlcnMgdGhpcyBpcyBkcm1fZ2VtX21tYXAoKS4KPiArICogc3BlY2lmaWMg aW1wbGVtZW50YXRpb25zLiBGb3IgR0VNLWJhc2VkIGRyaXZlcnMgdGhpcyBpcyBkcm1fZ2VtX21t YXAoKSwgYW5kCj4gKyAqIGZvciBkcml2ZXJzIHdoaWNoIHVzZSB0aGUgQ01BIEdFTSBoZWxwZXJz IGl0J3MgZHJtX2dlbV9jbWFfbW1hcCgpLgo+ICAgKgo+ICAgKiBObyBvdGhlciBmaWxlIG9wZXJh dGlvbnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRFJNIHVzZXJzcGFjZSBBUEkuIE92ZXJhbGwgdGhl Cj4gICAqIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlICNmaWxlX29wZXJhdGlvbnMgc3RydWN0dXJl OjoKPiBAQCAtODIsNiArODgsOSBAQCBERUZJTkVfTVVURVgoZHJtX2dsb2JhbF9tdXRleCk7Cj4g ICAqICAgICAgICAgICAgIC5sbHNlZWsgPSBub19sbHNlZWssCj4gICAqICAgICAgICAgICAgIC5t bWFwID0gZHJtX2dlbV9tbWFwLAo+ICAgKiAgICAgfTsKPiArICoKPiArICogRklYTUU6IFdlIHNo b3VsZCBoYXZlIGEgbWFjcm8gZm9yIHRoaXMgKGFuZCB0aGUgQ01BIHZlcnNpb24pIHNvIHRoYXQg ZHJpdmVycwo+ICsgKiBkb24ndCBoYXZlIHRvIHJlcGVhdCBpdCBhbGwgdGhlIHRpbWUuCj4gICAq Lwo+ICAKPiAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0IGZpbGUgKmZpbHAsIHN0 cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiBAQCAtMTExLDkgKzEyMCw5IEBAIHN0YXRpYyBpbnQg ZHJtX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2KQo+ICAgKiBAaW5vZGU6IGRldmljZSBp bm9kZQo+ICAgKiBAZmlscDogZmlsZSBwb2ludGVyLgo+ICAgKgo+IC0gKiBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgdXNlZCBieSBkcml2ZXJzIGFzIHRoZWlyIC5vcGVuKCkgI2ZpbGVfb3BlcmF0aW9u cwo+IC0gKiBtZXRob2QuIEl0IGxvb2tzIHVwIHRoZSBjb3JyZWN0IERSTSBkZXZpY2UgYW5kIGlu c3RhbnRpYXRlcyBhbGwgdGhlIHBlci1maWxlCj4gLSAqIHJlc291cmNlcyBmb3IgaXQuCj4gKyAq IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIGJ5IGRyaXZlcnMgYXMgdGhlaXIgJmZpbGVfb3Bl cmF0aW9ucy5vcGVuIG1ldGhvZC4KPiArICogSXQgbG9va3MgdXAgdGhlIGNvcnJlY3QgRFJNIGRl dmljZSBhbmQgaW5zdGFudGlhdGVzIGFsbCB0aGUgcGVyLWZpbGUKPiArICogcmVzb3VyY2VzIGZv ciBpdC4gSXQgYWxzbyBjYWxscyB0aGUgJmRybV9kcml2ZXIub3BlbiBkcml2ZXIgY2FsbGJhY2su Cj4gICAqCj4gICAqIFJFVFVSTlM6Cj4gICAqCj4gQEAgLTI5OCwxMSArMzA3LDYgQEAgc3RhdGlj IHZvaWQgZHJtX2V2ZW50c19yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ICAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gIH0KPiAg Cj4gLS8qCj4gLSAqIGRybV9sZWdhY3lfZGV2X3JlaW5pdAo+IC0gKgo+IC0gKiBSZWluaXRpYWxp emVzIGEgbGVnYWN5L3VtcyBkcm0gZGV2aWNlIGluIGl0J3MgbGFzdGNsb3NlIGZ1bmN0aW9uLgo+ IC0gKi8KPiAgc3RhdGljIHZvaWQgZHJtX2xlZ2FjeV9kZXZfcmVpbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIHsKPiAgCWlmIChkZXYtPmlycV9lbmFibGVkKQo+IEBAIC0zMjcsMTUgKzMz MSw2IEBAIHN0YXRpYyB2b2lkIGRybV9sZWdhY3lfZGV2X3JlaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJRFJNX0RFQlVHKCJsYXN0Y2xvc2UgY29tcGxldGVkXG4iKTsKPiAgfQo+ICAK PiAtLyoKPiAtICogVGFrZSBkb3duIHRoZSBEUk0gZGV2aWNlLgo+IC0gKgo+IC0gKiBccGFyYW0g ZGV2IERSTSBkZXZpY2Ugc3RydWN0dXJlLgo+IC0gKgo+IC0gKiBGcmVlcyBldmVyeSByZXNvdXJj ZSBpbiBccCBkZXYuCj4gLSAqCj4gLSAqIFxzYSBkcm1fZGV2aWNlCj4gLSAqLwo+ICB2b2lkIGRy bV9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCj4gIHsKPiAgCURSTV9ERUJVRygi XG4iKTsKPiBAQCAtMzUzLDkgKzM0OCwxMSBAQCB2b2lkIGRybV9sYXN0Y2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKiBkZXYpCj4gICAqIEBpbm9kZTogZGV2aWNlIGlub2RlCj4gICAqIEBmaWxwOiBm aWxlIHBvaW50ZXIuCj4gICAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIGJ5IGRy aXZlcnMgYXMgdGhlaXIgLnJlbGVhc2UoKSAjZmlsZV9vcGVyYXRpb25zCj4gLSAqIG1ldGhvZC4g SXQgZnJlZXMgYW55IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIG9wZW4gZmlsZSwgYW5k IGlmIHRoaXMgaXMKPiAtICogdGhlIGxhc3Qgb3BlbiBmaWxlIGZvciB0aGUgRFJNIGRldmljZSBh bHNvIHByb2NlZWRzIHRvIGNhbGwgZHJtX2xhc3RjbG9zZSgpLgo+ICsgKiBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgdXNlZCBieSBkcml2ZXJzIGFzIHRoZWlyICZmaWxlX29wZXJhdGlvbnMucmVsZWFz ZQo+ICsgKiBtZXRob2QuIEl0IGZyZWVzIGFueSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRo ZSBvcGVuIGZpbGUsIGFuZCBjYWxscyB0aGUKPiArICogJmRybV9kcml2ZXIucHJlY2xvc2UgYW5k ICZkcm1fZHJpdmVyLmxhc3RjbG9zZSBkcml2ZXIgY2FsbGJhY2tzLiBJZiB0aGlzIGlzCj4gKyAq IHRoZSBsYXN0IG9wZW4gZmlsZSBmb3IgdGhlIERSTSBkZXZpY2UgYWxzbyBwcm9jZWVkcyB0byBj YWxsIHRoZQo+ICsgKiAmZHJtX2RyaXZlci5sYXN0Y2xvc2UgZHJpdmVyIGNhbGxiYWNrLgo+ICAg Kgo+ICAgKiBSRVRVUk5TOgo+ICAgKgo+IEBAIC00NDMsMTMgKzQ0MCwxMyBAQCBFWFBPUlRfU1lN Qk9MKGRybV9yZWxlYXNlKTsKPiAgICogQGNvdW50OiBjb3VudCBpbiBieXRlcyB0byByZWFkCj4g ICAqIEBvZmZzZXQ6IG9mZnNldCB0byByZWFkCj4gICAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gbXVz dCBiZSB1c2VkIGJ5IGRyaXZlcnMgYXMgdGhlaXIgLnJlYWQoKSAjZmlsZV9vcGVyYXRpb25zCj4g KyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIGJ5IGRyaXZlcnMgYXMgdGhlaXIgJmZpbGVf b3BlcmF0aW9ucy5yZWFkCj4gICAqIG1ldGhvZCBpZmYgdGhleSB1c2UgRFJNIGV2ZW50cyBmb3Ig YXN5bmNocm9ub3VzIHNpZ25hbGxpbmcgdG8gdXNlcnNwYWNlLgo+ICAgKiBTaW5jZSBldmVudHMg YXJlIHVzZWQgYnkgdGhlIEtNUyBBUEkgZm9yIHZibGFuayBhbmQgcGFnZSBmbGlwIGNvbXBsZXRp b24gdGhpcwo+ICAgKiBtZWFucyBhbGwgbW9kZXJuIGRpc3BsYXkgZHJpdmVycyBtdXN0IHVzZSBp dC4KPiAgICoKPiAtICogQG9mZnNldCBpcyBpZ25vcmUsIERSTSBldmVudHMgYXJlIHJlYWQgbGlr ZSBhIHBpcGUuIFRoZXJlZm9yZSBkcml2ZXJzIGFsc28KPiAtICogbXVzdCBzZXQgdGhlIC5sbHNl ZWsoKSAjZmlsZV9vcGVyYXRpb24gdG8gbm9fbGxzZWVrKCkuIFBvbGxpbmcgc3VwcG9ydCBpcwo+ ICsgKiBAb2Zmc2V0IGlzIGlnbm9yZWQsIERSTSBldmVudHMgYXJlIHJlYWQgbGlrZSBhIHBpcGUu IFRoZXJlZm9yZSBkcml2ZXJzIGFsc28KPiArICogbXVzdCBzZXQgdGhlICZmaWxlX29wZXJhdGlv bi5sbHNlZWsgIHRvIG5vX2xsc2VlaygpLiBQb2xsaW5nIHN1cHBvcnQgaXMKCm5pdDogZG91Ymxl IHNwYWNlIGJlZm9yZSAndG8nCgo+ICAgKiBwcm92aWRlZCBieSBkcm1fcG9sbCgpLgo+ICAgKgo+ ICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSBldmVyIHJlYWQgYSBmdWxsIGV2ZW50LiBUaGVy ZWZvcmUgdXNlcnNwYWNlIG11c3QKPiBAQCAtNTM3LDEwICs1MzQsMTAgQEAgRVhQT1JUX1NZTUJP TChkcm1fcmVhZCk7Cj4gICAqIEBmaWxwOiBmaWxlIHBvaW50ZXIKPiAgICogQHdhaXQ6IHBvbGwg d2FpdGVyIHRhYmxlCj4gICAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIGJ5IGRy aXZlcnMgYXMgdGhlaXIgLnJlYWQoKSAjZmlsZV9vcGVyYXRpb25zCj4gLSAqIG1ldGhvZCBpZmYg dGhleSB1c2UgRFJNIGV2ZW50cyBmb3IgYXN5bmNocm9ub3VzIHNpZ25hbGxpbmcgdG8gdXNlcnNw YWNlLgo+IC0gKiBTaW5jZSBldmVudHMgYXJlIHVzZWQgYnkgdGhlIEtNUyBBUEkgZm9yIHZibGFu ayBhbmQgcGFnZSBmbGlwIGNvbXBsZXRpb24gdGhpcwo+IC0gKiBtZWFucyBhbGwgbW9kZXJuIGRp c3BsYXkgZHJpdmVycyBtdXN0IHVzZSBpdC4KPiArICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVz ZWQgYnkgZHJpdmVycyBhcyB0aGVpciAmZmlsZV9vcGVyYXRpb25zLnJlYWQgbWV0aG9kCj4gKyAq IGlmZiB0aGV5IHVzZSBEUk0gZXZlbnRzIGZvciBhc3luY2hyb25vdXMgc2lnbmFsbGluZyB0byB1 c2Vyc3BhY2UuICBTaW5jZQo+ICsgKiBldmVudHMgYXJlIHVzZWQgYnkgdGhlIEtNUyBBUEkgZm9y IHZibGFuayBhbmQgcGFnZSBmbGlwIGNvbXBsZXRpb24gdGhpcyBtZWFucwo+ICsgKiBhbGwgbW9k ZXJuIGRpc3BsYXkgZHJpdmVycyBtdXN0IHVzZSBpdC4KPiAgICoKPiAgICogU2VlIGFsc28gZHJt X3JlYWQoKS4KPiAgICoKPiBAQCAtNjUwLDcgKzY0Nyw4IEBAIEVYUE9SVF9TWU1CT0woZHJtX2V2 ZW50X3Jlc2VydmVfaW5pdCk7Cj4gICAqIEBwOiB0cmFja2luZyBzdHJ1Y3R1cmUgZm9yIHRoZSBw ZW5kaW5nIGV2ZW50Cj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gZnJlZXMgdGhlIGV2ZW50IEBw IGluaXRpYWxpemVkIHdpdGggZHJtX2V2ZW50X3Jlc2VydmVfaW5pdCgpCj4gLSAqIGFuZCByZWxl YXNlcyBhbnkgYWxsb2NhdGVkIHNwYWNlLgo+ICsgKiBhbmQgcmVsZWFzZXMgYW55IGFsbG9jYXRl ZCBzcGFjZS4gSXQgaXMgdXNlZCB0byBjYW5jZWwgYW4gZXZlbnQgd2hlbiB0aGUKPiArICogbm9u YmxvY2tpbmcgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBzdWJtaXR0ZWQgYW5kIG5lZWRlZCB0byBi ZSBhYm9ydGVkLgo+ICAgKi8KPiAgdm9pZCBkcm1fZXZlbnRfY2FuY2VsX2ZyZWUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgCQkJICAgc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICpwKQo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmggYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgK PiBpbmRleCA0MzIxZDAxMmM0YmEuLjhmOTAwZmIzMDI3NSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fZHJ2LmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKPiBAQCAtNjQsNyAr NjQsNiBAQCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWI7Cj4gICAqIHN0cnVjdHVyZSBmb3Ig R0VNIGRyaXZlcnMuCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX2RyaXZlciB7Cj4gLQo+ICAJLyoqCj4g IAkgKiBAbG9hZDoKPiAgCSAqCj4gQEAgLTc2LDE0ICs3NSw5NCBAQCBzdHJ1Y3QgZHJtX2RyaXZl ciB7Cj4gIAkgKiBTZWUgZHJtX2Rldl9pbml0KCkgYW5kIGRybV9kZXZfcmVnaXN0ZXIoKSBmb3Ig cHJvcGVyIGFuZAo+ICAJICogcmFjZS1mcmVlIHdheSB0byBzZXQgdXAgYSAmc3RydWN0IGRybV9k ZXZpY2UuCj4gIAkgKgo+ICsJICogVGhpcyBpcyBkZXByZWNhdGVkLCBkbyBub3QgdXNlIQo+ICsJ ICoKPiAgCSAqIFJldHVybnM6Cj4gIAkgKgo+ICAJICogWmVybyBvbiBzdWNjZXNzLCBub24temVy byB2YWx1ZSBvbiBmYWlsdXJlLgo+ICAJICovCj4gIAlpbnQgKCpsb2FkKSAoc3RydWN0IGRybV9k ZXZpY2UgKiwgdW5zaWduZWQgbG9uZyBmbGFncyk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAb3BlbjoK PiArCSAqCj4gKwkgKiBEcml2ZXIgY2FsbGJhY2sgd2hlbiBhIG5ldyAmc3RydWN0IGRybV9maWxl IGlzIG9wZW5lZC4gVXNlZnVsIGZvcgo+ICsJICogc2V0dGluZyB1cCBkcml2ZXItcHJpdmF0ZSBk YXRhIHN0cnVjdHVyZXMgbGlrZSBidWZmZXIgYWxsb2NhdG9ycywKPiArCSAqIGV4ZWN1dGlvbiBj b250ZXh0cyBvciBzaW1pbGFyIHRoaW5ncy4gU3VjaCBkcml2ZXItcHJpdmF0ZSByZXNvdXJjZXMK PiArCSAqIG11c3QgYmUgcmVsZWFzZWQgYWdhaW4gaW4gQHBvc3RjbG9zZS4KPiArCSAqCj4gKwkg KiBTaW5jZSB0aGUgZGlzcGxheS9tb2Rlc2V0IHNpZGUgb2YgRFJNIGNhbiBvbmx5IGJlIG93bmVk IGJ5IGV4YWN0bHkKPiArCSAqIG9uZSAmc3RydWN0IGRybV9maWxlIChzZWUgJmRybV9maWxlLmlz X21hc3RlciBhbmQgJmRybV9kZXZpY2UubWFzdGVyKQo+ICsJICogdGhlcmUgc2hvdWxkIG5ldmVy IGJlIGEgbmVlZCB0byBzZXQgdXAgYW55IG1vZGVzZXQgcmVsYXRlZCByZXNvdXJjZXMKPiArCSAq IGluIHRoaXMgY2FsbGJhY2suIERvaW5nIHNvIHdvdWxkIGJlIGEgZHJpdmVyIGRlc2lnbiBidWcu Cj4gKwkgKgo+ICsJICogUmV0dXJuczoKPiArCSAqCj4gKwkgKiAwIG9uIHN1Y2Nlc3MsIGEgbmVn YXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLCB3aGljaCB3aWxsIGJlCj4gKwkgKiBwcm9tb3Rl ZCB0byB1c2Vyc3BhY2UgYXMgdGhlIHJlc3VsdCBvZiB0aGUgb3BlbigpIHN5c3RlbSBjYWxsLgo+ ICsJICovCj4gIAlpbnQgKCpvcGVuKSAoc3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0IGRybV9m aWxlICopOwo+ICsKPiArCS8qKgo+ICsJICogQHByZWNsb3NlOgo+ICsJICoKPiArCSAqIE9uZSBv ZiB0aGUgZHJpdmVyIGNhbGxiYWNrcyB3aGVuIGEgbmV3ICZzdHJ1Y3QgZHJtX2ZpbGUgaXMgY2xv c2VkLgo+ICsJICogVXNlZnVsIGZvciB0ZWFyaW5nIGRvd24gZHJpdmVyLXByaXZhdGUgZGF0YSBz dHJ1Y3R1cmVzIGFsbG9jYXRlZCBpbgo+ICsJICogQG9wZW4gbGlrZSBidWZmZXIgYWxsb2NhdG9y cywgZXhlY3V0aW9uIGNvbnRleHRzIG9yIHNpbWlsYXIgdGhpbmdzLgo+ICsJICoKPiArCSAqIFNp bmNlIHRoZSBkaXNwbGF5L21vZGVzZXQgc2lkZSBvZiBEUk0gY2FuIG9ubHkgYmUgb3duZWQgYnkg ZXhhY3RseQo+ICsJICogb25lICZzdHJ1Y3QgZHJtX2ZpbGUgKHNlZSAmZHJtX2ZpbGUuaXNfbWFz dGVyIGFuZCAmZHJtX2RldmljZS5tYXN0ZXIpCj4gKwkgKiB0aGVyZSBzaG91bGQgbmV2ZXIgYmUg YSBuZWVkIHRvIHRlYXIgZG93biBhbnkgbW9kZXNldCByZWxhdGVkCj4gKwkgKiByZXNvdXJjZXMg aW4gdGhpcyBjYWxsYmFjay4gRG9pbmcgc28gd291bGQgYmUgYSBkcml2ZXIgZGVzaWduIGJ1Zy4K PiArCSAqCj4gKwkgKiBGSVhNRTogSXQgaXMgbm90IHJlYWxseSBjbGVhciB3aHkgdGhlcmUncyBi b3RoIEBwcmVjbG9zZSBhbmQKPiArCSAqIEBwb3N0Y2xvc2UuIFdpdGhvdXQgYSByZWFsbHkgZ29v ZCByZWFzb24sIHVzZSBAcG9zdGNsb3NlIG9ubHkuCj4gKwkgKi8KPiAgCXZvaWQgKCpwcmVjbG9z ZSkgKHN0cnVjdCBkcm1fZGV2aWNlICosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAr Cj4gKwkvKioKPiArCSAqIEBwb3N0Y2xvc2U6Cj4gKwkgKgo+ICsJICogT25lIG9mIHRoZSBkcml2 ZXIgY2FsbGJhY2tzIHdoZW4gYSBuZXcgJnN0cnVjdCBkcm1fZmlsZSBpcyBjbG9zZWQuCj4gKwkg KiBVc2VmdWwgZm9yIHRlYXJpbmcgZG93biBkcml2ZXItcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZXMg YWxsb2NhdGVkIGluCj4gKwkgKiBAb3BlbiBsaWtlIGJ1ZmZlciBhbGxvY2F0b3JzLCBleGVjdXRp b24gY29udGV4dHMgb3Igc2ltaWxhciB0aGluZ3MuCj4gKwkgKgo+ICsJICogU2luY2UgdGhlIGRp c3BsYXkvbW9kZXNldCBzaWRlIG9mIERSTSBjYW4gb25seSBiZSBvd25lZCBieSBleGFjdGx5Cj4g KwkgKiBvbmUgJnN0cnVjdCBkcm1fZmlsZSAoc2VlICZkcm1fZmlsZS5pc19tYXN0ZXIgYW5kICZk cm1fZGV2aWNlLm1hc3RlcikKPiArCSAqIHRoZXJlIHNob3VsZCBuZXZlciBiZSBhIG5lZWQgdG8g dGVhciBkb3duIGFueSBtb2Rlc2V0IHJlbGF0ZWQKPiArCSAqIHJlc291cmNlcyBpbiB0aGlzIGNh bGxiYWNrLiBEb2luZyBzbyB3b3VsZCBiZSBhIGRyaXZlciBkZXNpZ24gYnVnLgo+ICsJICoKPiAr CSAqIEZJWE1FOiBJdCBpcyBub3QgcmVhbGx5IGNsZWFyIHdoeSB0aGVyZSdzIGJvdGggQHByZWNs b3NlIGFuZAo+ICsJICogQHBvc3RjbG9zZS4gV2l0aG91dCBhIHJlYWxseSBnb29kIHJlYXNvbiwg dXNlIEBwb3N0Y2xvc2Ugb25seS4KPiArCSAqLwo+ICAJdm9pZCAoKnBvc3RjbG9zZSkgKHN0cnVj dCBkcm1fZGV2aWNlICosIHN0cnVjdCBkcm1fZmlsZSAqKTsKPiArCj4gKwkvKioKPiArCSAqIEBs YXN0Y2xvc2U6Cj4gKwkgKgo+ICsJICogQ2FsbGVkIHdoZW4gdGhlIGxhc3QgJnN0cnVjdCBkcm1f ZmlsZSBoYXMgYmVlbiBjbG9zZWQgYW5kIHRoZXJlJ3MKPiArCSAqIGN1cnJlbnRseSBubyB1c2Vy c3BhY2UgY2xpZW50IGZvciB0aGUgJnN0cnVjdCBkcm1fZGV2aWNlLgo+ICsJICoKPiArCSAqIE1v ZGVybiBkcml2ZXJzIHNob3VsZCBvbmx5IHVzZSB0aGlzIHRvIGZvcmNlLXJlc3RvcmUgdGhlIGZi ZGV2Cj4gKwkgKiBmcmFtZWJ1ZmZlciB1c2luZyBkcm1fZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZf bW9kZV91bmxvY2tlZCgpLgo+ICsJICogQW55dGhpbmcgZWxzZSB3b3VsZCBpbmRpY2F0ZSB0aGVy ZSdzIHNvbWV0aGluZyBzZXJpb3VzbHkgd3JvbmcuCj4gKwkgKiBNb2Rlcm4gZHJpdmVycyBjYW4g YWxzbyB1c2UgdGhpcyB0byBleGVjdXRlIGRlbGF5ZWQgcG93ZXIgc3dpdGNoaW5nCj4gKwkgKiBz dGF0ZSBjaGFuZ2VzLCBlLmcuIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIDpyZWY6YHZnYV9zd2l0 Y2hlcm9vYAo+ICsJICogaW5mcmFzdHJ1Y3R1cmUuCj4gKwkgKgo+ICsJICogVGhpcyBpcyBjYWxs ZWQgYWZ0ZXIgQHByZWNsb3NlIGFuZCBAcG9zdGNsb3NlIGhhdmUgYmVlbiBjYWxsZWQuCj4gKwkg Kgo+ICsJICogTk9URToKPiArCSAqCj4gKwkgKiBBbGwgbGVnYWN5IGRyaXZlcnMgdXNlIHRoaXMg Y2FsbGJhY2sgdG8gZGUtaW5pdGlhbGl6ZSB0aGUgaGFyZHdhcmUuCj4gKwkgKiBUaGlzIGlzIHB1 cmVseSBiZWNhdXNlIG9mIHRoZSBzaGFkb3ctYXR0YWNoIG1vZGVsLCB3aGVyZSB0aGUgRFJNCj4g KwkgKiBrZXJuZWwgZHJpdmVyIGRvZXMgbm90IHJlYWxseSBvd24gdGhlIGhhcmR3YXJlLiBJbnN0 ZWFkIG93bmVyc2hpcGUgaXMKPiArCSAqIGhhbmRsZWQgd2l0aCB0aGUgaGVscCBvZiB1c2Vyc3Bh Y2UgdGhyb3VnaCBhbiBpbmhlcml0ZWRseSByYWN5IGRhbmNlCj4gKwkgKiB0byBzZXQvdW5zZXQg dGhlIFZUIGludG8gcmF3IG1vZGUuCj4gKwkgKgo+ICsJICogTGVnYWN5IGRyaXZlcnMgaW5pdGlh bGl6ZSB0aGUgaGFyZHdhcmUgaW4gdGhlIEBmaXJzdG9wZW4gY2FsbGJhY2ssCj4gKwkgKiB3aGlj aCBpc24ndCBldmVuIGNhbGxlZCBmb3IgbW9kZXJuIGRyaXZlcnMuCj4gKwkgKi8KPiAgCXZvaWQg KCpsYXN0Y2xvc2UpIChzdHJ1Y3QgZHJtX2RldmljZSAqKTsKPiAgCj4gIAkvKioKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKPiBp bmRleCA0ZTM0NzM5OWE3YmQuLjY3MjQ0ZjJjMGM1NCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fZmlsZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaAo+IEBAIC00NSw2ICs0 NSw3IEBAIHN0cnVjdCBkcm1fZGV2aWNlOwo+ICAgKiBGSVhNRTogTm90IHN1cmUgd2Ugd2FudCB0 byBoYXZlIGRybV9taW5vciBoZXJlIGluIHRoZSBlbmQsIGJ1dCB0byBhdm9pZAo+ICAgKiBoZWFk ZXIgaW5jbHVkZSBsb29wcyB3ZSBuZWVkIGl0IGhlcmUgZm9yIG5vdy4KPiAgICovCj4gKwo+ICBl bnVtIGRybV9taW5vcl90eXBlIHsKPiAgCURSTV9NSU5PUl9QUklNQVJZLAo+ICAJRFJNX01JTk9S X0NPTlRST0wsCj4gQEAgLTUyLDEyICs1MywxOSBAQCBlbnVtIGRybV9taW5vcl90eXBlIHsKPiAg fTsKPiAgCj4gIC8qKgo+IC0gKiBEUk0gbWlub3Igc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBy ZXByZXNlbnRzIGEgZHJtIG1pbm9yIG51bWJlci4KPiArICogc3RydWN0IGRybV9taW5vciAtIERS TSBkZXZpY2UgbWlub3Igc3RydWN0dXJlCj4gKyAqCj4gKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJl c2VudHMgYSBEUk0gbWlub3IgbnVtYmVyIGZvciBkZXZpY2Ugbm9kZXMgaW4gL2Rldi4KPiArICog RW50aXJlbHkgb3BhcXVlIHRvIGRyaXZlcnMgYW5kIHNob3VsZCBuZXZlciBiZSBpbnNwZWN0ZWQg ZGlyZWN0bHkgYnkgZHJpdmVycy4KPiArICogRHJpdmVycyBpbnN0ZWFkIHNob3VsZCBvbmx5IGlu dGVyYWN0IHdpdGggJnN0cnVjdCBkcm1fZmlsZSBhbmQgb2YgY291cnNlCj4gKyAqICZzdHJ1Y3Qg ZHJtX2RldmljZSwgd2hpY2ggaXMgYWxzbyB3aGVyZSBkcml2ZXItcHJpdmF0ZSBkYXRhIGFuZCBy ZXNvdXJjZXMgY2FuCj4gKyAqIGJlIGF0dGFjaGVkIHRvLgo+ICAgKi8KPiAgc3RydWN0IGRybV9t aW5vciB7Cj4gLQlpbnQgaW5kZXg7CQkJLyoqPCBNaW5vciBkZXZpY2UgbnVtYmVyICovCj4gLQlp bnQgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgQ29udHJvbCBvciByZW5kZXIgKi8K PiAtCXN0cnVjdCBkZXZpY2UgKmtkZXY7CQkvKio8IExpbnV4IGRldmljZSAqLwo+ICsJLyogcHJp dmF0ZTogKi8KClNhbWUgY29tbWVudCBoZXJlIHJlOiB0aGUgcHJpdmF0ZSBjb21tZW50LiBJIGRv bid0IHRoaW5rIGl0IGFkZHMgYW55dGhpbmcgYmV5b25kCndoYXQgeW91J3ZlIGFscmVhZHkgc2Fp ZCBpbiB0aGUgb3ZlcnZpZXcuCgo+ICsJaW50IGluZGV4OwkJCS8qIE1pbm9yIGRldmljZSBudW1i ZXIgKi8KPiArCWludCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgLyogQ29udHJvbCBvciBy ZW5kZXIgKi8KPiArCXN0cnVjdCBkZXZpY2UgKmtkZXY7CQkvKiBMaW51eCBkZXZpY2UgKi8KPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gIAo+ICAJc3RydWN0IGRlbnRyeSAqZGVidWdmc19y b290Owo+IEBAIC02Niw4OSArNzQsMjg4IEBAIHN0cnVjdCBkcm1fbWlub3Igewo+ICAJc3RydWN0 IG11dGV4IGRlYnVnZnNfbG9jazsgLyogUHJvdGVjdHMgZGVidWdmc19saXN0LiAqLwo+ICB9Owo+ ICAKPiAtLyogRXZlbnQgcXVldWVkIHVwIGZvciB1c2Vyc3BhY2UgdG8gcmVhZCAqLwo+ICsvKioK PiArICogc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50IC0gRXZlbnQgcXVldWVkIHVwIGZvciB1c2Vy c3BhY2UgdG8gcmVhZAo+ICsgKgo+ICsgKiBUaGlzIHJlcHJlc2VudHMgYSBEUk0gZXZlbnQuIERy aXZlcnMgY2FuIHVzZSB0aGlzIGFzIGEgZ2VuZXJpYyBjb21wbGV0aW9uCj4gKyAqIG1lY2hhbmlz bSwgd2hpY2ggc3VwcG9ydHMga2VybmVsLWludGVybmFsICZzdHJ1Y3QgY29tcGxldGlvbiwgJnN0 cnVjdCBkbWFfZmVuY2UKPiArICogYW5kIGFsc28gdGhlIERSTS1zcGVjaWZpYyAmc3RydWN0IGRy bV9ldmVudCBkZWxpdmVyeSBtZWNoYW5pc20uCj4gKyAqLwo+ICBzdHJ1Y3QgZHJtX3BlbmRpbmdf ZXZlbnQgewo+ICsJLyoqCj4gKwkgKiBAY29tcGxldGlvbjoKPiArCSAqCj4gKwkgKiBPcHRpb25h bCBwb2ludGVyIHRvIGEga2VybmVsIGludGVybmFsIGNvbXBsZXRpb24gc2lnbmFsbGVkIHdoZW4K PiArCSAqIGRybV9zZW5kX2V2ZW50KCkgaXMgY2FsbGVkLCB1c2VmdWwgdG8gaW50ZXJuYWxseSBz eW5jaHJvbml6ZSB3aXRoCj4gKwkgKiBub25ibGNva2luZyBvcGVyYXRpb25zLgoKbm9uYmxvY2tp bmcKCj4gKwkgKi8KPiAgCXN0cnVjdCBjb21wbGV0aW9uICpjb21wbGV0aW9uOwo+ICsKPiArCS8q Kgo+ICsJICogQGNvbXBsZXRpb25fcmVsZWFzZToKPiArCSAqCj4gKwkgKiBPcHRpb25hbCBjYWxs YmFjayBjdXJyZW50bHkgb25seSB1c2VkIGJ5IHRoZSBhdG9taWMgbW9kZXNldCBoZWxwZXJzCj4g KwkgKiB0byBjbGVhbiB1cCB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgc3RydWN0dXJlIEBj b21wbGV0aW9uIGlzCj4gKwkgKiBzdG9yZWQgaW4uCj4gKwkgKi8KPiAgCXZvaWQgKCpjb21wbGV0 aW9uX3JlbGVhc2UpKHN0cnVjdCBjb21wbGV0aW9uICpjb21wbGV0aW9uKTsKPiArCj4gKwkvKioK PiArCSAqIEBldmVudDoKPiArCSAqCj4gKwkgKiBQb2ludGVyIHRvIHRoZSBhY3R1YWwgZXZlbnQg dGhhdCBzaG91bGQgYmUgc2VudCB0byB1c2Vyc3BhY2UgdG8gYmUKPiArCSAqIHJlYWQgdXNpbmcg ZHJtX3JlYWQoKS4gQ2FuIGJlIG9wdGlvbmFsLCBzaW5jZSBub3dhZGF5cyBldmVudHMgYXJlCj4g KwkgKiBhbHNvIHVzZWQgdG8gc2lnbmFsIGtlcm5lbCBpbnRlcm5hbCB0aHJlYWRzIHdpdGggQGNv bXBsZXRpb24gb3IgRE1BCj4gKwkgKiB0cmFuc2FjdGlvbnMgdXNpbmcgQGZlbmNlLgo+ICsJICov Cj4gIAlzdHJ1Y3QgZHJtX2V2ZW50ICpldmVudDsKPiArCj4gKwkvKioKPiArCSAqIEBmZW5jZToK PiArCSAqCj4gKwkgKiBPcHRpb25hbCBETUEgZmVuY2UgdG8gdW5ibG9jayBvdGhlciBoYXJkd2Fy ZSB0cmFuc2FjdGlvbnMgd2hpY2gKPiArCSAqIGRlcGVuZCB1cG9uIHRoZSBub25ibG9ja2luZyBE Uk0gb3BlcmF0aW9uIHRoaXMgZXZlbnQgcmVwcmVzZW50cy4KPiArCSAqLwo+ICAJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZmlsZV9wcml2Ogo+ICsJICoKPiAr CSAqICZzdHJ1Y3QgZHJtX2ZpbGUgd2hlcmUgQGV2ZW50IHNob3VsZCBiZSBkZWxpdmVyZWQgdG8u IE9ubHkgc2V0IHdoZW4KPiArCSAqIEBldmVudCBpcyBzZXQuCj4gKwkgKi8KPiArCXN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2Owo+ICsKPiArCS8qKgo+ICsJICogQGxpbms6Cj4gKwkgKgo+ICsJ ICogRG91YmxlLWxpbmtlZCBsaXN0IHRvIGtlZXAgdHJhY2sgb2YgdGhpcyBldmVudC4gQ2FuIGJl IHVzZWQgYnkgdGhlCj4gKwkgKiBkcml2ZXIgdXAgdG8gdGhlIHBvaW50IHdoZW4gaXQgY2FsbHMg ZHJtX3NlbmRfZXZlbnQoKSwgYWZ0ZXIgdGhhdAo+ICsJICogdGhpcyBsaXN0IGVudHJ5IGlzIG93 bmVkIGJ5IHRoZSBjb3JlIGZvciBpdHMgb3duIGJvb2sta2VlcGluZy4KPiArCSAqLwo+ICAJc3Ry dWN0IGxpc3RfaGVhZCBsaW5rOwo+ICsKPiArCS8qKgo+ICsJICogQHBlbmRpbmdfbGluazoKPiAr CSAqCj4gKwkgKiBFbnRyeSBvbiAmZHJtX2ZpbGUucGVuZGluZ19ldmVudF9saXN0LCB0byBrZWVw IHRyYWNrIG9mIGFsbCBwZW5kaW5nCj4gKwkgKiBldmVudHMgZm9yIEBmaWxlX3ByaXYsIHRvIGFs bG93IGNvcnJlY3QgdW53aW5kaW5nIG9mIHRoZW0gd2hlbgo+ICsJICogdXNlcnNwYWNlIGNsb3Nl cyB0aGUgZmlsZSBiZWZvcmUgdGhlIGV2ZW50IGlzIGRlbGl2ZXJlZC4KPiArCSAqLwo+ICAJc3Ry dWN0IGxpc3RfaGVhZCBwZW5kaW5nX2xpbms7Cj4gLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp djsKPiAgfTsKPiAgCj4gLS8qKiBGaWxlIHByaXZhdGUgZGF0YSAqLwo+ICsvKioKPiArICogc3Ry dWN0IGRybV9maWxlIC0gRFJNIGZpbGUgcHJpdmF0ZSBkYXRhCj4gKyAqCj4gKyAqIFRoaXMgc3Ry dWN0dXJlIHRyYWNrcyBwZXIgb3BlbiBmaWxlIGRlc2NyaXB0b3IgRFJNIHN0YXRlLgoKbml0OiBU aGlzIHN0cnVjdHVyZSB0cmFja3MgRFJNIHN0YXRlIHBlciBvcGVuIGZpbGUgZGVzY3JpcHRvci4K Cj4gKyAqLwo+ICBzdHJ1Y3QgZHJtX2ZpbGUgewo+ICsJLyoqCj4gKwkgKiBAYXV0aGVudGljYXRl ZDoKPiArCSAqCj4gKwkgKiBXaGV0aGVyIHRoZSBjbGllbnQgaXMgYWxsb3dlZCB0byBzdWJtaXQg cmVuZGVyaW5nLCB3aGljaCBmb3IgbGVnYWN5Cj4gKwkgKiBub2RlcyBtZWFucyBpdCBtdXN0IGJl IGF1dGhlbnRpY2F0ZWQuCj4gKwkgKgo+ICsJICogU2VlIGFsc28gdGhlIDpyZWY6YHNlY3Rpb24g b24gcHJpbWFyeSBub2RlcyBhbmQgYXV0aGVudGljYXRpb24KPiArCSAqIDxkcm1fcHJpbWFyeV9u b2RlPmAuCj4gKwkgKi8KPiArCgpuaXQ6IGV4dHJhIGxpbmUKCj4gIAl1bnNpZ25lZCBhdXRoZW50 aWNhdGVkIDoxOwo+IC0JLyogdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaGFzIGFza2VkIHVzIHRvIGV4 cG9zZSBzdGVyZW8gM0QgbW9kZSBmbGFncyAqLwo+ICsKPiArCS8qKgo+ICsJICogQHN0ZXJlb19h bGxvd2VkOgo+ICsJICoKPiArCSAqIFRydWUgd2hlbiB0aGUgY2xpZW50IGhhcyBhc2tlZCB1cyB0 byBleHBvc2Ugc3RlcmVvIDNEIG1vZGUgZmxhZ3MuCj4gKwkgKi8KPiAgCXVuc2lnbmVkIHN0ZXJl b19hbGxvd2VkIDoxOwo+IC0JLyoKPiAtCSAqIHRydWUgaWYgY2xpZW50IHVuZGVyc3RhbmRzIENS VEMgcHJpbWFyeSBwbGFuZXMgYW5kIGN1cnNvciBwbGFuZXMKPiAtCSAqIGluIHRoZSBwbGFuZSBs aXN0Cj4gKwo+ICsJLyoqCj4gKwkgKiBAdW5pdmVyc2FsX3BsYW5lczoKPiArCSAqCj4gKwkgKiBU cnVlIGlmIGNsaWVudCB1bmRlcnN0YW5kcyBDUlRDIHByaW1hcnkgcGxhbmVzIGFuZCBjdXJzb3Ig cGxhbmVzCj4gKwkgKiBpbiB0aGUgcGxhbmUgbGlzdC4gQXV0b21hdGljYWxseSBzZXQgd2hlbiBA YXRvbWljIGlzIHNldC4KPiAgCSAqLwo+ICAJdW5zaWduZWQgdW5pdmVyc2FsX3BsYW5lczoxOwo+ IC0JLyogdHJ1ZSBpZiBjbGllbnQgdW5kZXJzdGFuZHMgYXRvbWljIHByb3BlcnRpZXMgKi8KPiAr Cj4gKwkvKiogQGF0b21pYzogVHJ1ZSBpZiBjbGllbnQgdW5kZXJzdGFuZHMgYXRvbWljIHByb3Bl cnRpZXMuICovCj4gIAl1bnNpZ25lZCBhdG9taWM6MTsKPiAtCS8qCj4gLQkgKiBUaGlzIGNsaWVu dCBpcyB0aGUgY3JlYXRvciBvZiBAbWFzdGVyLgo+IC0JICogUHJvdGVjdGVkIGJ5IHN0cnVjdCBk cm1fZGV2aWNlOjptYXN0ZXJfbXV0ZXguCj4gKwo+ICsJLyoqCj4gKwkgKiBAaXNfbWFzdGVyOgo+ ICsJICoKPiArCSAqIFRoaXMgY2xpZW50IGlzIHRoZSBjcmVhdG9yIG9mIEBtYXN0ZXIuICBQcm90 ZWN0ZWQgYnkgc3RydWN0CgpuaXQ6IGRvdWJsZSBzcGFjZSBiZWZvcmUgUHJvdGVjdGVkCgo+ICsJ ICogJmRybV9kZXZpY2UubWFzdGVyX211dGV4Lgo+ICsJICoKPiArCSAqIFNlZSBhbHNvIHRoZSA6 cmVmOmBzZWN0aW9uIG9uIHByaW1hcnkgbm9kZXMgYW5kIGF1dGhlbnRpY2F0aW9uCj4gKwkgKiA8 ZHJtX3ByaW1hcnlfbm9kZT5gLgo+ICAJICovCj4gIAl1bnNpZ25lZCBpc19tYXN0ZXI6MTsKPiAg Cj4gKwkvKioKPiArCSAqIEBtYXN0ZXI6Cj4gKwkgKgo+ICsJICogTWFzdGVyIHRoaXMgbm9kZSBp cyBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoLiBPbmx5IHJlbGV2YW50IGlmCj4gKwkgKiBkcm1f aXNfcHJpbWFyeV9jbGllbnQoKSByZXR1cm5zIHRydWUuIE5vdGUgdGhhdCB0aGlzIG9ubHkKPiAr CSAqIG1hdGNoZXMgJmRybV9kZXZpY2UubWFzdGVyIGlmIHRoZSBtYXN0ZXIgaXMgdGhlIGN1cnJl bnRseSBhY3RpdmUgb25lLgo+ICsJICoKPiArCSAqIFNlZSBhbHNvIEBhdXRoZW50aWNhdGlvbiBh bmQgQGlzX21hc3RlciBhbmQgdGhlIDpyZWY6YHNlY3Rpb24gb24KPiArCSAqIHByaW1hcnkgbm9k ZXMgYW5kIGF1dGhlbnRpY2F0aW9uIDxkcm1fcHJpbWFyeV9ub2RlPmAuCj4gKwkgKi8KPiArCXN0 cnVjdCBkcm1fbWFzdGVyICptYXN0ZXI7Cj4gKwo+ICsJLyoqIEBwaWQ6IFByb2Nlc3MgdGhhdCBv cGVuZWQgdGhpcyBmaWxlLiAqLwo+ICAJc3RydWN0IHBpZCAqcGlkOwo+ICsKPiArCS8qKiBAbWFn aWM6IEF1dGhlbnRpY2F0aW9uIG1hZ2ljLCBzZWUgQGF1dGhlbnRpY2F0ZWQuICovCj4gIAlkcm1f bWFnaWNfdCBtYWdpYzsKPiArCj4gKwkvKioKPiArCSAqIEBsaGVhZDoKPiArCSAqCj4gKwkgKiBM aXN0IG9mIGFsbCBvcGVuIGZpbGVzIG9mIGEgRFJNIGRldmljZSwgbGlua2VkIGludG8KPiArCSAq ICZkcm1fZGV2aWNlLmZpbGVsaXN0LiBQcm90ZWN0ZWQgYnkgJmRybV9kZXZpY2UuZmlsZWxpc3Rf bXV0ZXguCj4gKwkgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgbGhlYWQ7Cj4gKwo+ICsKCm5pdDog ZXh0cmEgbGluZQoKPiArCS8qKiBAbWlub3I6ICZzdHJ1Y3QgZHJtX21pbm9yIGZvciB0aGlzIGZp bGUuICovCj4gIAlzdHJ1Y3QgZHJtX21pbm9yICptaW5vcjsKPiAtCXVuc2lnbmVkIGxvbmcgbG9j a19jb3VudDsKPiAgCj4gLQkvKiogTWFwcGluZyBvZiBtbSBvYmplY3QgaGFuZGxlcyB0byBvYmpl Y3QgcG9pbnRlcnMuICovCj4gKwkvKioKPiArCSAqIEBvYmplY3RfaWRyOgo+ICsJICoKPiArCSAq IE1hcHBpbmcgb2YgbW0gb2JqZWN0IGhhbmRsZXMgdG8gb2JqZWN0IHBvaW50ZXJzLiBVc2VkIGJ5 IHRoZSBHRU0KPiArCSAqIHN1YnN5c3RlbS4gUHJvdGVjdGVkIGJ5IEB0YWJsZV9sb2NrLgo+ICsJ ICovCj4gIAlzdHJ1Y3QgaWRyIG9iamVjdF9pZHI7Cj4gLQkvKiogTG9jayBmb3Igc3luY2hyb25p emF0aW9uIG9mIGFjY2VzcyB0byBvYmplY3RfaWRyLiAqLwo+ICsKPiArCS8qKiBAdGFibGVfbG9j azogUHJvdGVjdHMgQG9iamVjdF9pZHIuICovCj4gIAlzcGlubG9ja190IHRhYmxlX2xvY2s7Cj4g IAo+ICsJLyoqIEBmaWxwOiBQb2ludGVyIHRvIHRoZSBjb3JlIGZpbGUgc3RydWN0dXJlLiAqLwo+ ICAJc3RydWN0IGZpbGUgKmZpbHA7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZHJpdmVyX3ByaXY6Cj4g KwkgKgo+ICsJICogT3B0aW9uYWwgcG9pbnRlciBmb3IgZHJpdmVyIHByaXZhdGUgZGF0YS4gQ2Fu IGJlIGFsbG9jYXRlZCBpbgo+ICsJICogJmRybV9kcml2ZXIub3BlbiBhbmQgc2hvdWxkIGJlIGZy ZWVkIGluICZkcm1fZHJpdmVyLnBvc3RjbG9zZS4KPiArCSAqLwo+ICAJdm9pZCAqZHJpdmVyX3By aXY7Cj4gIAo+IC0Jc3RydWN0IGRybV9tYXN0ZXIgKm1hc3RlcjsgLyogbWFzdGVyIHRoaXMgbm9k ZSBpcyBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoCj4gLQkJCQkgICAgICBOLkIuIG5vdCBhbHdh eXMgZGV2LT5tYXN0ZXIgKi8KPiAgCS8qKgo+IC0JICogZmJzIC0gTGlzdCBvZiBmcmFtZWJ1ZmZl cnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsZS4KPiArCSAqIEBmYnM6Cj4gKwkgKgo+ICsJICog TGlzdCBvZiAmc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWxl LCB1c2luZyB0aGUKPiArCSAqICZkcm1fZnJhbWVidWZmZXIuZmlscF9oZWFkIGVudHJ5Lgo+ICAJ ICoKPiAtCSAqIFByb3RlY3RlZCBieSBmYnNfbG9jay4gTm90ZSB0aGF0IHRoZSBmYnMgbGlzdCBo b2xkcyBhIHJlZmVyZW5jZSBvbgo+IC0JICogdGhlIGZiIG9iamVjdCB0byBwcmV2ZW50IGl0IGZy b20gdW50aW1lbHkgZGlzYXBwZWFyaW5nLgo+ICsJICogUHJvdGVjdGVkIGJ5IEBmYnNfbG9jay4g Tm90ZSB0aGF0IHRoZSBAZmJzIGxpc3QgaG9sZHMgYSByZWZlcmVuY2Ugb24KPiArCSAqIHRoZSBm cmFtZWJ1ZmZlciBvYmplY3QgdG8gcHJldmVudCBpdCBmcm9tIHVudGltZWx5IGRpc2FwcGVhcmlu Zy4KPiAgCSAqLwo+ICAJc3RydWN0IGxpc3RfaGVhZCBmYnM7Cj4gKwo+ICsJLyoqIEBmYnNfbG9j azogUHJvdGVjdHMgQGZicy4gKi8KPiAgCXN0cnVjdCBtdXRleCBmYnNfbG9jazsKPiAgCj4gLQkv KiogVXNlci1jcmVhdGVkIGJsb2IgcHJvcGVydGllczsgdGhpcyByZXRhaW5zIGEgcmVmZXJlbmNl IG9uIHRoZQo+IC0JICogIHByb3BlcnR5LiAqLwo+ICsJLyoqCj4gKwkgKiBAYmxvYnM6Cj4gKwkg Kgo+ICsJICogVXNlci1jcmVhdGVkIGJsb2IgcHJvcGVydGllczsgdGhpcyByZXRhaW5zIGEgcmVm ZXJlbmNlIG9uIHRoZQo+ICsJICogcHJvcGVydHkuCj4gKwkgKgo+ICsJICogUHJvdGVjdGVkIGJ5 IEBkcm1fbW9kZV9jb25maWcuYmxvYl9sb2NrOwo+ICsJICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFk IGJsb2JzOwo+ICAKPiArCS8qKiBAZXZlbnRfd2FpdDogV2FpdHF1ZXVlIGZvciBuZXcgZXZlbnRz IGFkZGVkIHRvIEBldmVudF9saXN0LiAqLwo+ICAJd2FpdF9xdWV1ZV9oZWFkX3QgZXZlbnRfd2Fp dDsKPiArCj4gKwkvKioKPiArCSAqIEBwZW5kaW5nX2V2ZW50X2xpc3Q6Cj4gKwkgKgo+ICsJICog TGlzdCBvZiBwZW5kaW5nICZzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQsIHVzZWQgdG8gY2xlYW4g dXAgcGVuZGluZwo+ICsJICogZXZlbnRzIGluIGNhc2UgdGhpcyBmaWxlIGdldHMgY2xvc2VkIGJl Zm9yZSB0aGUgZXZlbnQgaXMgc2lnbmFsbGVkLgo+ICsJICogVXNlcyB0aGUgJmRybV9wZW5kaW5n X2V2ZW50LnBlbmRpbmdfbGluayBlbnRyeS4KPiArCSAqCj4gKwkgKiBQcm90ZWN0IGJ5ICZkcm1f ZGV2aWNlLmV2ZW50X2xvY2suCj4gKwkgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19l dmVudF9saXN0Owo+ICsKPiArCS8qKgo+ICsJICogQGV2ZW50X2xpc3Q6Cj4gKwkgKgo+ICsJICog TGlzdCBvZiAmc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50LCByZWFkeSBmb3IgZGV2bGl2ZXJ5IHRv IHVzZXJzcGFjZQoKRGF0ICdkZXYnIG11c2NsZSBtZW1vcnkgOi0pCgo+ICsJICogdGhyb3VnaCBk cm1fcmVhZCgpLiBVc2VzIHRoZSAmZHJtX3BlbmRpbmdfZXZlbnQubGluayBlbnRyeS4KPiArCSAq Cj4gKwkgKiBQcm90ZWN0IGJ5ICZkcm1fZGV2aWNlLmV2ZW50X2xvY2suCj4gKwkgKi8KPiAgCXN0 cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKPiArCj4gKwkvKioKPiArCSAqIEBldmVudF9zcGFj ZToKPiArCSAqCj4gKwkgKiBBdmFpbGFibGUgZXZlbnQgc3BhY2UgdG8gcHJldmVudCB1c2Vyc3Bh Y2UgZnJvbQo+ICsJICogZXhoYXVzdGluZyBrZXJuZWwgbWVtb3J5LiBDdXJyZW50bHkgbGltaXRl ZCB0byB0aGUgZmFpcmx5IGFyYml0cmFyeQo+ICsJICogdmFsdWUgb2YgNEtCLgo+ICsJICovCj4g IAlpbnQgZXZlbnRfc3BhY2U7Cj4gIAo+ICsJLyoqIEBldmVudF9yZWFkX2xvY2s6IFNlcmlhbGl6 ZXMgZHJtX3JlYWQoKS4gKi8KPiAgCXN0cnVjdCBtdXRleCBldmVudF9yZWFkX2xvY2s7Cj4gIAo+ ICsJLyoqCj4gKwkgKiBAcHJpbWU6Cj4gKwkgKgo+ICsJICogUGVyLWZpbGUgYnVmZmVyIGNhY2hl cyB1c2VkIGJ5IHRoZSBQUklNRSBidWZmZXIgc2hhcmluZyBjb2RlLgo+ICsJICovCj4gIAlzdHJ1 Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSBwcmltZTsKPiArCj4gKwkvKiBwcml2YXRlOiAqLwo+ ICsJdW5zaWduZWQgbG9uZyBsb2NrX2NvdW50OyAvKiBEUkkxIGxlZ2FjeSBsb2NrIGNvdW50ICov Cj4gIH07Cj4gIAo+ICsvKioKPiArICogZHJtX2lzX3ByaW1hcnlfY2xpZW50IC0gaXMgdGhpcyBh biBvcGVuIGZpbGUgb2YgdGhlIHByaW1hcnkgbm9kZQo+ICsgKiBAZmlsZV9wcml2OiBEUk0gZmls ZQo+ICsgKgo+ICsgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBhbiBvcGVuIGZpbGUgb2YgdGhl IHByaW1hcnkgbm9kZSwgaS5lLgo+ICsgKiAmZHJtX2ZpbGUubWlub3Igb2YgQGZpbGVfcHJpdiBp cyBhIHByaW1hcnkgbWlub3IuCj4gKyAqCj4gKyAqIFNlZSBhbHNvIHRoZSA6cmVmOmBzZWN0aW9u IG9uIHByaW1hcnkgbm9kZXMgYW5kIGF1dGhlbnRpY2F0aW9uCj4gKyAqIDxkcm1fcHJpbWFyeV9u b2RlPmAuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZHJtX2lzX3ByaW1hcnlfY2xpZW50 KGNvbnN0IHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ICt7Cj4gKwlyZXR1cm4gZmlsZV9w cml2LT5taW5vci0+dHlwZSA9PSBEUk1fTUlOT1JfUFJJTUFSWTsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGRybV9pc19yZW5kZXJfY2xpZW50IC0gaXMgdGhpcyBhbiBvcGVuIGZpbGUgb2YgdGhlIHJl bmRlciBub2RlCj4gKyAqIEBmaWxlX3ByaXY6IERSTSBmaWxlCj4gKyAqCj4gKyAqIFJldHVybnMg dHJ1ZSBpZiB0aGlzIGlzIGFuIG9wZW4gZmlsZSBvZiB0aGUgcmVuZGVyIG5vZGUsIGkuZS4KPiAr ICogJmRybV9maWxlLm1pbm9yIG9mIEBmaWxlX3ByaXYgaXMgYSByZW5kZXIgbWlub3IuCj4gKyAq Cj4gKyAqIFNlZSBhbHNvIHRoZSA6cmVmOmBzZWN0aW9uIG9uIHJlbmRlciBub2RlcyA8ZHJtX3Jl bmRlcl9ub2RlPmAuCj4gKyAqLwo+ICBzdGF0aWMgaW5saW5lIGJvb2wgZHJtX2lzX3JlbmRlcl9j bGllbnQoY29uc3Qgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4gIHsKPiAgCXJldHVybiBm aWxlX3ByaXYtPm1pbm9yLT50eXBlID09IERSTV9NSU5PUl9SRU5ERVI7Cj4gIH0KPiAgCj4gKy8q Kgo+ICsgKiBkcm1faXNfY29udHJvbF9jbGllbnQgLSBpcyB0aGlzIGFuIG9wZW4gZmlsZSBvZiB0 aGUgY29udHJvbCBub2RlCj4gKyAqIEBmaWxlX3ByaXY6IERSTSBmaWxlCj4gKyAqCj4gKyAqIENv bnRyb2wgbm9kZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIGluIHRoZSBwcm9jZXNzIG9mIGdldHRpbmcg cmVtb3ZlZCBmcm9tIHRoZQo+ICsgKiBEUk0gdXNlcnNwYWNlIEFQSS4gRG8gbm90IGV2ZXIgdXNl IQo+ICsgKi8KPiAgc3RhdGljIGlubGluZSBib29sIGRybV9pc19jb250cm9sX2NsaWVudChjb25z dCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiAgewo+ICAJcmV0dXJuIGZpbGVfcHJpdi0+ bWlub3ItPnR5cGUgPT0gRFJNX01JTk9SX0NPTlRST0w7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxp bmUgYm9vbCBkcm1faXNfcHJpbWFyeV9jbGllbnQoY29uc3Qgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYpCj4gLXsKPiAtCXJldHVybiBmaWxlX3ByaXYtPm1pbm9yLT50eXBlID09IERSTV9NSU5P Ul9QUklNQVJZOwo+IC19Cj4gLQo+ICBpbnQgZHJtX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGZpbGUgKmZpbHApOwo+ICBzc2l6ZV90IGRybV9yZWFkKHN0cnVjdCBmaWxlICpmaWxw LCBjaGFyIF9fdXNlciAqYnVmZmVyLAo+ICAJCSBzaXplX3QgY291bnQsIGxvZmZfdCAqb2Zmc2V0 KTsKPiAtLSAKPiAyLjExLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==