From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 11/24] drm/doc: Document drm_file.[hc] Date: Tue, 14 Mar 2017 14:27:01 +0100 Message-ID: <20170314132701.jwxwaoaklg6rw6xx@phenom.ffwll.local> References: <20170308141257.12119-1-daniel.vetter@ffwll.ch> <20170308141257.12119-12-daniel.vetter@ffwll.ch> <20170313175328.GL20329@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170313175328.GL20329@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Sean Paul Cc: Daniel Vetter , Intel Graphics Development , DRI Development , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXIgMTMsIDIwMTcgYXQgMDE6NTM6MjhQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFdlZCwgTWFyIDA4LCAyMDE3IGF0IDAzOjEyOjQ0UE0gKzAxMDAsIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4gPiBXZWxsLCBtb3N0bHkgZHJtX2ZpbGUuaCwgYW5kIGNsZWFuIHVwIGFsbCBy ZWxhdGVkIHRoaW5nczoKPiA+IAo+ID4gLSBJIGRpZG50JyBmaWd1cmUgb3V0IHRoZSBkaWZmZXJl bmNlIGJldHdlZW4gcHJlY2xvc2UgYW5kIHBvc3RjbG9zZS4KPiA+ICAgVGhlIGV4aXN0aW5nIGV4 cGxhbmF0aW9uIGluIGRybS1pbnRlcm5hbHMucnN0IGRpZG4ndCBjb252aW5jZSBtZSwKPiA+ICAg c2luY2UgaXQncyBhbHNvIHJlYWxseSBvdXRkYXRlZCAtIHdlIGNsZWFuIHVwIHBlbmRpbmcgRFJN IGV2ZW50cyBpbgo+ID4gICB0aGUgY29yZSBub3dhZGF5cy4gSSBwdXQgYSBGSVhNRSBpbiBmb3Ig dGhlIGZ1dHVyZS4KPiA+IAo+ID4gLSBBbm90aGVyIEZJWE1FIGlzIHRvIGhhdmUgYSBtYWNybyBm b3IgZGVmYXVsdCBmb3BzLgo+ID4gCj4gPiAtIExvdHMgb2YgbGlua3MgYWxsIGFyb3VuZCwgbWFp biBhcmVhcyBhcmUgdG8gdGllIHRoZSBvdmVydmlldyBpbgo+ID4gICBkcm1fZmlsZS5jIG1vcmUg aW50byB0aGUgY2FsbGJhY2tzIGluIHN0cnVjdCBkcm1fZGV2aWNlLCBhbmQgdGhlCj4gPiAgIG90 aGVyIGlzIHRvIGxpbmsgcmVuZGVyL3ByaW1hcnkgbm9kZSBjb2RlIHRvIHRoZSByaWdodCBzZWN0 aW9ucyBpbgo+ID4gICBkcm0tdWFwaS5yc3QuCj4gPiAKPiA+IC0gQWxzbyBtb3ZlZCB0aGUgb3Bl bi9jbG9zZSBzdHVmZiB0byBkcm1fZHJ2LmggZnJvbSBkcm0taW50ZXJuYWxzLnJzdCwKPiA+ICAg c2VlbXMgbGlrZSB0aGUgYmV0dGVyIHBsYWNlIGZvciB0aGF0IGluZm9ybWF0aW9uLiBTaW5jZSB0 aGF0IHNlY3Rpb24KPiA+ICAgd2FzIHJhdGhlciBvdXRkYXRlZCB0aGlzIGFtb3VudGVkIHRvIGZ1 bGwtb24gcmV3cml0ZS4KPiA+IAo+ID4gQSBiaWcgbWlzc2luZyBwaWVjZSBoZXJlIGlzIHNvbWUg b3ZlcnZpZXcgZ3JhcGgsIGJ1dCBJIHRoaW5rIGJldHRlciB0bwo+ID4gd2FpdCB3aXRoIHRoYXQg b25lIHVudGlsIGRybV9kZXZpY2UgYW5kIGRybV9kcml2ZXIgYXJlIGFsc28gZnVsbHkKPiA+IGRv Y3VtZW50ZWQuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52 ZXR0ZXJAaW50ZWwuY29tPgo+IAo+IE92ZXJhbGwsIGF3ZXNvbWUgcGF0Y2gsIHJlYWxseSBkb2Vz IGEgZ29vZCBqb2IgZXhwbGFpbmluZyB0aGUgcGFyYW1ldGVycyBhbmQgaG93Cj4gdGhleSBpbnRl cmFjdCB3aXRoIGVhY2ggb3RoZXIgKGJvbnVzIHBvaW50cyBmb3IgdGhlIGxvY2sgYnJlYWRjcnVt YnMpLiBJIGp1c3QKPiBoYXZlIGEgZmV3IG9wdGlvbmFsIG5pdHMgYW5kIHNvbWUgc3BlbGxpbmcg ZXJyb3JzLgo+IAo+IFJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9y Zz4KCk1lcmdlZCB1cCB0byB0aGlzIG9uZSB0byBkcm0tbWlzYy4gQXMgbWVudGlvbmVkIGEgZmV3 IHRpbWVzIG9uIGlyYywgSSdkCmxpa2UgdG8gZ2V0IHRoZSBwb3N0L3ByZWNsb3NlIHBhdGNoZXMg dGhyb3VnaCByZWxldmFudCBkcml2ZXIgdHJlZXMsIGZvcgptYXhpbXVtIGFtb3VudCBvZiB0ZXN0 aW5nLgotRGFuaWVsCj4gCj4gPiAtLS0KPiA+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJu YWxzLnJzdCB8ICA1MiArLS0tLS0tCj4gPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0 ICAgICAgfCAgIDQgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jICAgICAgICAgIHwg IDY2ICsrKysrLS0tLQo+ID4gIGluY2x1ZGUvZHJtL2RybV9kcnYuaCAgICAgICAgICAgICAgIHwg IDgxICsrKysrKysrKystCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgICAgICAgICAg fCAyNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gPiAgNSBmaWxlcyBj aGFuZ2VkLCAzNTYgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZm IC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QgYi9Eb2N1bWVudGF0 aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdAo+ID4gaW5kZXggZWEzMjliNzFjNDU5Li43YTJmZTRh MDIyMTIgMTAwNjQ0Cj4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJz dAo+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QKPiA+IEBAIC0y NDYsNjEgKzI0NiwxNSBAQCBkcml2ZXJzLgo+ID4gIE9wZW4vQ2xvc2UsIEZpbGUgT3BlcmF0aW9u cyBhbmQgSU9DVExzCj4gPiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K PiA+ICAKPiA+IC1PcGVuIGFuZCBDbG9zZQo+ID4gLS0tLS0tLS0tLS0tLS0tCj4gPiAtCj4gPiAt T3BlbiBhbmQgY2xvc2UgaGFuZGxlcnMuIE5vbmUgb2YgdGhvc2UgbWV0aG9kcyBhcmUgbWFuZGF0 b3J5OjoKPiA+IC0KPiA+IC0gICAgaW50ICgqZmlyc3RvcGVuKSAoc3RydWN0IGRybV9kZXZpY2Ug Kik7Cj4gPiAtICAgIHZvaWQgKCpsYXN0Y2xvc2UpIChzdHJ1Y3QgZHJtX2RldmljZSAqKTsKPiA+ IC0gICAgaW50ICgqb3BlbikgKHN0cnVjdCBkcm1fZGV2aWNlICosIHN0cnVjdCBkcm1fZmlsZSAq KTsKPiA+IC0gICAgdm9pZCAoKnByZWNsb3NlKSAoc3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0 IGRybV9maWxlICopOwo+ID4gLSAgICB2b2lkICgqcG9zdGNsb3NlKSAoc3RydWN0IGRybV9kZXZp Y2UgKiwgc3RydWN0IGRybV9maWxlICopOwo+ID4gLQo+ID4gLVRoZSBmaXJzdG9wZW4gbWV0aG9k IGlzIGNhbGxlZCBieSB0aGUgRFJNIGNvcmUgZm9yIGxlZ2FjeSBVTVMgKFVzZXIgTW9kZQo+ID4g LVNldHRpbmcpIGRyaXZlcnMgb25seSB3aGVuIGFuIGFwcGxpY2F0aW9uIG9wZW5zIGEgZGV2aWNl IHRoYXQgaGFzIG5vCj4gPiAtb3RoZXIgb3BlbmVkIGZpbGUgaGFuZGxlLiBVTVMgZHJpdmVycyBj YW4gaW1wbGVtZW50IGl0IHRvIGFjcXVpcmUgZGV2aWNlCj4gPiAtcmVzb3VyY2VzLiBLTVMgZHJp dmVycyBjYW4ndCB1c2UgdGhlIG1ldGhvZCBhbmQgbXVzdCBhY3F1aXJlIHJlc291cmNlcwo+ID4g LWluIHRoZSBsb2FkIG1ldGhvZCBpbnN0ZWFkLgo+ID4gLQo+ID4gLVNpbWlsYXJseSB0aGUgbGFz dGNsb3NlIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbGFzdCBhcHBsaWNhdGlvbgo+ID4gLWhv bGRpbmcgYSBmaWxlIGhhbmRsZSBvcGVuZWQgb24gdGhlIGRldmljZSBjbG9zZXMgaXQsIGZvciBi b3RoIFVNUyBhbmQKPiA+IC1LTVMgZHJpdmVycy4gQWRkaXRpb25hbGx5LCB0aGUgbWV0aG9kIGlz IGFsc28gY2FsbGVkIGF0IG1vZHVsZSB1bmxvYWQKPiA+IC10aW1lIG9yLCBmb3IgaG90LXBsdWdn YWJsZSBkZXZpY2VzLCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5wbHVnZ2VkLiBUaGUKPiA+IC1maXJz dG9wZW4gYW5kIGxhc3RjbG9zZSBjYWxscyBjYW4gdGh1cyBiZSB1bmJhbGFuY2VkLgo+ID4gLQo+ ID4gLVRoZSBvcGVuIG1ldGhvZCBpcyBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZGV2aWNlIGlzIG9w ZW5lZCBieSBhbgo+ID4gLWFwcGxpY2F0aW9uLiBEcml2ZXJzIGNhbiBhbGxvY2F0ZSBwZXItZmls ZSBwcml2YXRlIGRhdGEgaW4gdGhpcyBtZXRob2QKPiA+IC1hbmQgc3RvcmUgdGhlbSBpbiB0aGUg c3RydWN0IDpjOnR5cGU6YHN0cnVjdCBkcm1fZmlsZQo+ID4gLTxkcm1fZmlsZT5gIGRyaXZlcl9w cml2IGZpZWxkLiBOb3RlIHRoYXQgdGhlIG9wZW4gbWV0aG9kIGlzCj4gPiAtY2FsbGVkIGJlZm9y ZSBmaXJzdG9wZW4uCj4gPiAtCj4gPiAtVGhlIGNsb3NlIG9wZXJhdGlvbiBpcyBzcGxpdCBpbnRv IHByZWNsb3NlIGFuZCBwb3N0Y2xvc2UgbWV0aG9kcy4KPiA+IC1Ecml2ZXJzIG11c3Qgc3RvcCBh bmQgY2xlYW51cCBhbGwgcGVyLWZpbGUgb3BlcmF0aW9ucyBpbiB0aGUgcHJlY2xvc2UKPiA+IC1t ZXRob2QuIEZvciBpbnN0YW5jZSBwZW5kaW5nIHZlcnRpY2FsIGJsYW5raW5nIGFuZCBwYWdlIGZs aXAgZXZlbnRzIG11c3QKPiA+IC1iZSBjYW5jZWxsZWQuIE5vIHBlci1maWxlIG9wZXJhdGlvbiBp cyBhbGxvd2VkIG9uIHRoZSBmaWxlIGhhbmRsZSBhZnRlcgo+ID4gLXJldHVybmluZyBmcm9tIHRo ZSBwcmVjbG9zZSBtZXRob2QuCj4gPiAtCj4gPiAtRmluYWxseSB0aGUgcG9zdGNsb3NlIG1ldGhv ZCBpcyBjYWxsZWQgYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGUgY2xvc2UKPiA+IC1vcGVyYXRpb24s IHJpZ2h0IGJlZm9yZSBjYWxsaW5nIHRoZSBsYXN0Y2xvc2UgbWV0aG9kIGlmIG5vIG90aGVyIG9w ZW4KPiA+IC1maWxlIGhhbmRsZSBleGlzdHMgZm9yIHRoZSBkZXZpY2UuIERyaXZlcnMgdGhhdCBo YXZlIGFsbG9jYXRlZCBwZXItZmlsZQo+ID4gLXByaXZhdGUgZGF0YSBpbiB0aGUgb3BlbiBtZXRo b2Qgc2hvdWxkIGZyZWUgaXQgaGVyZS4KPiA+IC0KPiA+IC1UaGUgbGFzdGNsb3NlIG1ldGhvZCBz aG91bGQgcmVzdG9yZSBDUlRDIGFuZCBwbGFuZSBwcm9wZXJ0aWVzIHRvIGRlZmF1bHQKPiA+IC12 YWx1ZSwgc28gdGhhdCBhIHN1YnNlcXVlbnQgb3BlbiBvZiB0aGUgZGV2aWNlIHdpbGwgbm90IGlu aGVyaXQgc3RhdGUKPiA+IC1mcm9tIHRoZSBwcmV2aW91cyB1c2VyLiBJdCBjYW4gYWxzbyBiZSB1 c2VkIHRvIGV4ZWN1dGUgZGVsYXllZCBwb3dlcgo+ID4gLXN3aXRjaGluZyBzdGF0ZSBjaGFuZ2Vz LCBlLmcuIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIDpyZWY6YHZnYV9zd2l0Y2hlcm9vYAo+ID4g LWluZnJhc3RydWN0dXJlLiBCZXlvbmQgdGhhdCBLTVMgZHJpdmVycyBzaG91bGQgbm90IGRvIGFu eQo+ID4gLWZ1cnRoZXIgY2xlYW51cC4gT25seSBsZWdhY3kgVU1TIGRyaXZlcnMgbWlnaHQgbmVl ZCB0byBjbGVhbiB1cCBkZXZpY2UKPiA+IC1zdGF0ZSBzbyB0aGF0IHRoZSB2Z2EgY29uc29sZSBv ciBhbiBpbmRlcGVuZGVudCBmYmRldiBkcml2ZXIgY291bGQgdGFrZQo+ID4gLW92ZXIuCj4gPiAt Cj4gPiAgRmlsZSBPcGVyYXRpb25zCj4gPiAgLS0tLS0tLS0tLS0tLS0tCj4gPiAgCj4gPiAgLi4g a2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCj4gPiAgICAgOmRvYzogZmls ZSBvcGVyYXRpb25zCj4gPiAgCj4gPiArLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvZHJtL2RybV9m aWxlLmgKPiA+ICsgICA6aW50ZXJuYWw6Cj4gPiArCj4gPiAgLi4ga2VybmVsLWRvYzo6IGRyaXZl cnMvZ3B1L2RybS9kcm1fZmlsZS5jCj4gPiAgICAgOmV4cG9ydDoKPiA+ICAKPiA+IGRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tdWFwaS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9k cm0tdWFwaS5yc3QKPiA+IGluZGV4IGZjYzIyOGVmNWJjNC4uMzUyNjUyODEwZGFiIDEwMDY0NAo+ ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0Cj4gPiArKysgYi9Eb2N1bWVu dGF0aW9uL2dwdS9kcm0tdWFwaS5yc3QKPiA+IEBAIC0yMSw2ICsyMSw4IEBAIGxpYmRybSBEZXZp Y2UgTG9va3VwCj4gPiAgICAgOmRvYzogZ2V0dW5pcXVlIGFuZCBzZXR2ZXJzaW9uIHN0b3J5Cj4g PiAgCj4gPiAgCj4gPiArLi4gX2RybV9wcmltYXJ5X25vZGU6Cj4gPiArCj4gPiAgUHJpbWFyeSBO b2RlcywgRFJNIE1hc3RlciBhbmQgQXV0aGVudGljYXRpb24KPiA+ICA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gIAo+ID4gQEAgLTEwMyw2ICsxMDUsOCBA QCBpcyBhbHJlYWR5IHJhdGhlciBwYWluZnVsIGZvciB0aGUgRFJNIHN1YnN5c3RlbSwgd2l0aCBt dWx0aXBsZSBkaWZmZXJlbnQgdUFQSXMKPiA+ICBmb3IgdGhlIHNhbWUgdGhpbmcgY28tZXhpc3Rp bmcuIElmIHdlIGFkZCBhIGZldyBtb3JlIGNvbXBsZXRlIG1pc3Rha2VzIGludG8gdGhlCj4gPiAg bWl4IGV2ZXJ5IHllYXIgaXQgd291bGQgYmUgZW50aXJlbHkgdW5tYW5hZ2VhYmxlLgo+ID4gIAo+ ID4gKy4uIF9kcm1fcmVuZGVyX25vZGU6Cj4gPiArCj4gPiAgUmVuZGVyIG5vZGVzCj4gPiAgPT09 PT09PT09PT09Cj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9maWxl LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+ID4gaW5kZXggZDllNjNkNzNkM2VjLi5h ODgxM2ExMTE1ZGMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKPiA+IEBAIC01MCwxMiArNTAsMTQg QEAgREVGSU5FX01VVEVYKGRybV9nbG9iYWxfbXV0ZXgpOwo+ID4gICAqCj4gPiAgICogRHJpdmVy cyBtdXN0IGRlZmluZSB0aGUgZmlsZSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0aGF0IGZvcm1zIHRo ZSBEUk0KPiA+ICAgKiB1c2Vyc3BhY2UgQVBJIGVudHJ5IHBvaW50LCBldmVuIHRob3VnaCBtb3N0 IG9mIHRob3NlIG9wZXJhdGlvbnMgYXJlCj4gPiAtICogaW1wbGVtZW50ZWQgaW4gdGhlIERSTSBj b3JlLiBUaGUgbWFuZGF0b3J5IGZ1bmN0aW9ucyBhcmUgZHJtX29wZW4oKSwKPiA+ICsgKiBpbXBs ZW1lbnRlZCBpbiB0aGUgRFJNIGNvcmUuIFRoZSByZXN1bHRpbmcgJnN0cnVjdCBmaWxlX29wZXJh dGlvbnMgbXVzdCBiZQo+ID4gKyAqIHN0b3JlZCBpbiB0aGUgJmRybV9kcml2ZXIuZm9wcyBmaWVs ZC4gVGhlIG1hbmRhdG9yeSBmdW5jdGlvbnMgYXJlIGRybV9vcGVuKCksCj4gPiAgICogZHJtX3Jl YWQoKSwgZHJtX2lvY3RsKCkgYW5kIGRybV9jb21wYXRfaW9jdGwoKSBpZiBDT05GSUdfQ09NUEFU IGlzIGVuYWJsZWQKPiA+IC0gKiAobm90ZSB0aGF0IGRybV9jb21wYXRfaW9jdGwgd2lsbCBiZSBO VUxMIGlmIENPTkZJR19DT01QQVQ9bikuIERyaXZlcnMgd2hpY2gKPiA+IC0gKiBpbXBsZW1lbnQg cHJpdmF0ZSBpb2N0bHMgdGhhdCByZXF1aXJlIDMyLzY0IGJpdCBjb21wYXRpYmlsaXR5IHN1cHBv cnQgbXVzdAo+ID4gLSAqIHByb3ZpZGUgdGhlaXIgb3duIC5jb21wYXRfaW9jdGwoKSBoYW5kbGVy IHRoYXQgcHJvY2Vzc2VzIHByaXZhdGUgaW9jdGxzIGFuZAo+ID4gLSAqIGNhbGxzIGRybV9jb21w YXRfaW9jdGwoKSBmb3IgY29yZSBpb2N0bHMuCj4gPiArICogTm90ZSB0aGF0IGRybV9jb21wYXRf aW9jdGwgd2lsbCBiZSBOVUxMIGlmIENPTkZJR19DT01QQVQ9biwgc28gdGhlcmUncyBubwo+ID4g KyAqIG5lZWQgdG8gc3ByaW5rbGUgI2lmZGVmIGludG8gdGhlIGNvZGUuIERyaXZlcnMgd2hpY2gg aW1wbGVtZW50IHByaXZhdGUgaW9jdGxzCj4gPiArICogdGhhdCByZXF1aXJlIDMyLzY0IGJpdCBj b21wYXRpYmlsaXR5IHN1cHBvcnQgbXVzdCBwcm92aWRlIHRoZWlyIG93bgo+ID4gKyAqICZmaWxl X29wZXJhdGlvbnMuY29tcGF0X2lvY3RsIGhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgcHJpdmF0ZSBp b2N0bHMgYW5kIGNhbGxzCj4gPiArICogZHJtX2NvbXBhdF9pb2N0bCgpIGZvciBjb3JlIGlvY3Rs cy4KPiA+ICAgKgo+ID4gICAqIEluIGFkZGl0aW9uIGRybV9yZWFkKCkgYW5kIGRybV9wb2xsKCkg cHJvdmlkZSBzdXBwb3J0IGZvciBEUk0gZXZlbnRzLiBEUk0KPiA+ICAgKiBldmVudHMgYXJlIGEg Z2VuZXJpYyBhbmQgZXh0ZW5zaWJsZSBtZWFucyB0byBzZW5kIGFzeW5jaHJvbm91cyBldmVudHMg dG8KPiA+IEBAIC02MywxMCArNjUsMTQgQEAgREVGSU5FX01VVEVYKGRybV9nbG9iYWxfbXV0ZXgp Owo+ID4gICAqIHBhZ2UgZmxpcCBjb21wbGV0aW9ucyBieSB0aGUgS01TIEFQSS4gQnV0IGRyaXZl cnMgY2FuIGFsc28gdXNlIGl0IGZvciB0aGVpcgo+ID4gICAqIG93biBuZWVkcywgZS5nLiB0byBz aWduYWwgY29tcGxldGlvbiBvZiByZW5kZXJpbmcuCj4gPiAgICoKPiA+ICsgKiBGb3IgdGhlIGRy aXZlci1zaWRlIGV2ZW50IGludGVyZmFjZSBzZWUgZHJtX2V2ZW50X3Jlc2VydmVfaW5pdCgpIGFu ZAo+ID4gKyAqIGRybV9zZW5kX2V2ZW50KCkgYXMgdGhlIG1haW4gc3RhcnRpbmcgcG9pbnRzLgo+ ID4gKyAqCj4gPiAgICogVGhlIG1lbW9yeSBtYXBwaW5nIGltcGxlbWVudGF0aW9uIHdpbGwgdmFy eSBkZXBlbmRpbmcgb24gaG93IHRoZSBkcml2ZXIKPiA+ICAgKiBtYW5hZ2VzIG1lbW9yeS4gTGVn YWN5IGRyaXZlcnMgd2lsbCB1c2UgdGhlIGRlcHJlY2F0ZWQgZHJtX2xlZ2FjeV9tbWFwKCkKPiA+ ICAgKiBmdW5jdGlvbiwgbW9kZXJuIGRyaXZlcnMgc2hvdWxkIHVzZSBvbmUgb2YgdGhlIHByb3Zp ZGVkIG1lbW9yeS1tYW5hZ2VyCj4gPiAtICogc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLiBGb3Ig R0VNLWJhc2VkIGRyaXZlcnMgdGhpcyBpcyBkcm1fZ2VtX21tYXAoKS4KPiA+ICsgKiBzcGVjaWZp YyBpbXBsZW1lbnRhdGlvbnMuIEZvciBHRU0tYmFzZWQgZHJpdmVycyB0aGlzIGlzIGRybV9nZW1f bW1hcCgpLCBhbmQKPiA+ICsgKiBmb3IgZHJpdmVycyB3aGljaCB1c2UgdGhlIENNQSBHRU0gaGVs cGVycyBpdCdzIGRybV9nZW1fY21hX21tYXAoKS4KPiA+ICAgKgo+ID4gICAqIE5vIG90aGVyIGZp bGUgb3BlcmF0aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBEUk0gdXNlcnNwYWNlIEFQSS4gT3Zl cmFsbCB0aGUKPiA+ICAgKiBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSAjZmlsZV9vcGVyYXRpb25z IHN0cnVjdHVyZTo6Cj4gPiBAQCAtODIsNiArODgsOSBAQCBERUZJTkVfTVVURVgoZHJtX2dsb2Jh bF9tdXRleCk7Cj4gPiAgICogICAgICAgICAgICAgLmxsc2VlayA9IG5vX2xsc2VlaywKPiA+ICAg KiAgICAgICAgICAgICAubW1hcCA9IGRybV9nZW1fbW1hcCwKPiA+ICAgKiAgICAgfTsKPiA+ICsg Kgo+ID4gKyAqIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIG1hY3JvIGZvciB0aGlzIChhbmQgdGhl IENNQSB2ZXJzaW9uKSBzbyB0aGF0IGRyaXZlcnMKPiA+ICsgKiBkb24ndCBoYXZlIHRvIHJlcGVh dCBpdCBhbGwgdGhlIHRpbWUuCj4gPiAgICovCj4gPiAgCj4gPiAgc3RhdGljIGludCBkcm1fb3Bl bl9oZWxwZXIoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiA+ IEBAIC0xMTEsOSArMTIwLDkgQEAgc3RhdGljIGludCBkcm1fc2V0dXAoc3RydWN0IGRybV9kZXZp Y2UgKiBkZXYpCj4gPiAgICogQGlub2RlOiBkZXZpY2UgaW5vZGUKPiA+ICAgKiBAZmlscDogZmls ZSBwb2ludGVyLgo+ID4gICAqCj4gPiAtICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgYnkg ZHJpdmVycyBhcyB0aGVpciAub3BlbigpICNmaWxlX29wZXJhdGlvbnMKPiA+IC0gKiBtZXRob2Qu IEl0IGxvb2tzIHVwIHRoZSBjb3JyZWN0IERSTSBkZXZpY2UgYW5kIGluc3RhbnRpYXRlcyBhbGwg dGhlIHBlci1maWxlCj4gPiAtICogcmVzb3VyY2VzIGZvciBpdC4KPiA+ICsgKiBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgdXNlZCBieSBkcml2ZXJzIGFzIHRoZWlyICZmaWxlX29wZXJhdGlvbnMub3Bl biBtZXRob2QuCj4gPiArICogSXQgbG9va3MgdXAgdGhlIGNvcnJlY3QgRFJNIGRldmljZSBhbmQg aW5zdGFudGlhdGVzIGFsbCB0aGUgcGVyLWZpbGUKPiA+ICsgKiByZXNvdXJjZXMgZm9yIGl0LiBJ dCBhbHNvIGNhbGxzIHRoZSAmZHJtX2RyaXZlci5vcGVuIGRyaXZlciBjYWxsYmFjay4KPiA+ICAg Kgo+ID4gICAqIFJFVFVSTlM6Cj4gPiAgICoKPiA+IEBAIC0yOTgsMTEgKzMwNyw2IEBAIHN0YXRp YyB2b2lkIGRybV9ldmVudHNfcmVsZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiA+ ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gPiAg fQo+ID4gIAo+ID4gLS8qCj4gPiAtICogZHJtX2xlZ2FjeV9kZXZfcmVpbml0Cj4gPiAtICoKPiA+ IC0gKiBSZWluaXRpYWxpemVzIGEgbGVnYWN5L3VtcyBkcm0gZGV2aWNlIGluIGl0J3MgbGFzdGNs b3NlIGZ1bmN0aW9uLgo+ID4gLSAqLwo+ID4gIHN0YXRpYyB2b2lkIGRybV9sZWdhY3lfZGV2X3Jl aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIHsKPiA+ICAJaWYgKGRldi0+aXJxX2Vu YWJsZWQpCj4gPiBAQCAtMzI3LDE1ICszMzEsNiBAQCBzdGF0aWMgdm9pZCBkcm1fbGVnYWN5X2Rl dl9yZWluaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJRFJNX0RFQlVHKCJsYXN0Y2xv c2UgY29tcGxldGVkXG4iKTsKPiA+ICB9Cj4gPiAgCj4gPiAtLyoKPiA+IC0gKiBUYWtlIGRvd24g dGhlIERSTSBkZXZpY2UuCj4gPiAtICoKPiA+IC0gKiBccGFyYW0gZGV2IERSTSBkZXZpY2Ugc3Ry dWN0dXJlLgo+ID4gLSAqCj4gPiAtICogRnJlZXMgZXZlcnkgcmVzb3VyY2UgaW4gXHAgZGV2Lgo+ ID4gLSAqCj4gPiAtICogXHNhIGRybV9kZXZpY2UKPiA+IC0gKi8KPiA+ICB2b2lkIGRybV9sYXN0 Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKiBkZXYpCj4gPiAgewo+ID4gIAlEUk1fREVCVUcoIlxu Iik7Cj4gPiBAQCAtMzUzLDkgKzM0OCwxMSBAQCB2b2lkIGRybV9sYXN0Y2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKiBkZXYpCj4gPiAgICogQGlub2RlOiBkZXZpY2UgaW5vZGUKPiA+ICAgKiBAZmls cDogZmlsZSBwb2ludGVyLgo+ID4gICAqCj4gPiAtICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVz ZWQgYnkgZHJpdmVycyBhcyB0aGVpciAucmVsZWFzZSgpICNmaWxlX29wZXJhdGlvbnMKPiA+IC0g KiBtZXRob2QuIEl0IGZyZWVzIGFueSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcGVu IGZpbGUsIGFuZCBpZiB0aGlzIGlzCj4gPiAtICogdGhlIGxhc3Qgb3BlbiBmaWxlIGZvciB0aGUg RFJNIGRldmljZSBhbHNvIHByb2NlZWRzIHRvIGNhbGwgZHJtX2xhc3RjbG9zZSgpLgo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIGJ5IGRyaXZlcnMgYXMgdGhlaXIgJmZpbGVfb3Bl cmF0aW9ucy5yZWxlYXNlCj4gPiArICogbWV0aG9kLiBJdCBmcmVlcyBhbnkgcmVzb3VyY2VzIGFz c29jaWF0ZWQgd2l0aCB0aGUgb3BlbiBmaWxlLCBhbmQgY2FsbHMgdGhlCj4gPiArICogJmRybV9k cml2ZXIucHJlY2xvc2UgYW5kICZkcm1fZHJpdmVyLmxhc3RjbG9zZSBkcml2ZXIgY2FsbGJhY2tz LiBJZiB0aGlzIGlzCj4gPiArICogdGhlIGxhc3Qgb3BlbiBmaWxlIGZvciB0aGUgRFJNIGRldmlj ZSBhbHNvIHByb2NlZWRzIHRvIGNhbGwgdGhlCj4gPiArICogJmRybV9kcml2ZXIubGFzdGNsb3Nl IGRyaXZlciBjYWxsYmFjay4KPiA+ICAgKgo+ID4gICAqIFJFVFVSTlM6Cj4gPiAgICoKPiA+IEBA IC00NDMsMTMgKzQ0MCwxMyBAQCBFWFBPUlRfU1lNQk9MKGRybV9yZWxlYXNlKTsKPiA+ICAgKiBA Y291bnQ6IGNvdW50IGluIGJ5dGVzIHRvIHJlYWQKPiA+ICAgKiBAb2Zmc2V0OiBvZmZzZXQgdG8g cmVhZAo+ID4gICAqCj4gPiAtICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgYnkgZHJpdmVy cyBhcyB0aGVpciAucmVhZCgpICNmaWxlX29wZXJhdGlvbnMKPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgdXNlZCBieSBkcml2ZXJzIGFzIHRoZWlyICZmaWxlX29wZXJhdGlvbnMucmVhZAo+ ID4gICAqIG1ldGhvZCBpZmYgdGhleSB1c2UgRFJNIGV2ZW50cyBmb3IgYXN5bmNocm9ub3VzIHNp Z25hbGxpbmcgdG8gdXNlcnNwYWNlLgo+ID4gICAqIFNpbmNlIGV2ZW50cyBhcmUgdXNlZCBieSB0 aGUgS01TIEFQSSBmb3IgdmJsYW5rIGFuZCBwYWdlIGZsaXAgY29tcGxldGlvbiB0aGlzCj4gPiAg ICogbWVhbnMgYWxsIG1vZGVybiBkaXNwbGF5IGRyaXZlcnMgbXVzdCB1c2UgaXQuCj4gPiAgICoK PiA+IC0gKiBAb2Zmc2V0IGlzIGlnbm9yZSwgRFJNIGV2ZW50cyBhcmUgcmVhZCBsaWtlIGEgcGlw ZS4gVGhlcmVmb3JlIGRyaXZlcnMgYWxzbwo+ID4gLSAqIG11c3Qgc2V0IHRoZSAubGxzZWVrKCkg I2ZpbGVfb3BlcmF0aW9uIHRvIG5vX2xsc2VlaygpLiBQb2xsaW5nIHN1cHBvcnQgaXMKPiA+ICsg KiBAb2Zmc2V0IGlzIGlnbm9yZWQsIERSTSBldmVudHMgYXJlIHJlYWQgbGlrZSBhIHBpcGUuIFRo ZXJlZm9yZSBkcml2ZXJzIGFsc28KPiA+ICsgKiBtdXN0IHNldCB0aGUgJmZpbGVfb3BlcmF0aW9u Lmxsc2VlayAgdG8gbm9fbGxzZWVrKCkuIFBvbGxpbmcgc3VwcG9ydCBpcwo+IAo+IG5pdDogZG91 YmxlIHNwYWNlIGJlZm9yZSAndG8nCj4gCj4gPiAgICogcHJvdmlkZWQgYnkgZHJtX3BvbGwoKS4K PiA+ICAgKgo+ID4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGV2ZXIgcmVhZCBhIGZ1bGwg ZXZlbnQuIFRoZXJlZm9yZSB1c2Vyc3BhY2UgbXVzdAo+ID4gQEAgLTUzNywxMCArNTM0LDEwIEBA IEVYUE9SVF9TWU1CT0woZHJtX3JlYWQpOwo+ID4gICAqIEBmaWxwOiBmaWxlIHBvaW50ZXIKPiA+ ICAgKiBAd2FpdDogcG9sbCB3YWl0ZXIgdGFibGUKPiA+ICAgKgo+ID4gLSAqIFRoaXMgZnVuY3Rp b24gbXVzdCBiZSB1c2VkIGJ5IGRyaXZlcnMgYXMgdGhlaXIgLnJlYWQoKSAjZmlsZV9vcGVyYXRp b25zCj4gPiAtICogbWV0aG9kIGlmZiB0aGV5IHVzZSBEUk0gZXZlbnRzIGZvciBhc3luY2hyb25v dXMgc2lnbmFsbGluZyB0byB1c2Vyc3BhY2UuCj4gPiAtICogU2luY2UgZXZlbnRzIGFyZSB1c2Vk IGJ5IHRoZSBLTVMgQVBJIGZvciB2YmxhbmsgYW5kIHBhZ2UgZmxpcCBjb21wbGV0aW9uIHRoaXMK PiA+IC0gKiBtZWFucyBhbGwgbW9kZXJuIGRpc3BsYXkgZHJpdmVycyBtdXN0IHVzZSBpdC4KPiA+ ICsgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCBieSBkcml2ZXJzIGFzIHRoZWlyICZmaWxl X29wZXJhdGlvbnMucmVhZCBtZXRob2QKPiA+ICsgKiBpZmYgdGhleSB1c2UgRFJNIGV2ZW50cyBm b3IgYXN5bmNocm9ub3VzIHNpZ25hbGxpbmcgdG8gdXNlcnNwYWNlLiAgU2luY2UKPiA+ICsgKiBl dmVudHMgYXJlIHVzZWQgYnkgdGhlIEtNUyBBUEkgZm9yIHZibGFuayBhbmQgcGFnZSBmbGlwIGNv bXBsZXRpb24gdGhpcyBtZWFucwo+ID4gKyAqIGFsbCBtb2Rlcm4gZGlzcGxheSBkcml2ZXJzIG11 c3QgdXNlIGl0Lgo+ID4gICAqCj4gPiAgICogU2VlIGFsc28gZHJtX3JlYWQoKS4KPiA+ICAgKgo+ ID4gQEAgLTY1MCw3ICs2NDcsOCBAQCBFWFBPUlRfU1lNQk9MKGRybV9ldmVudF9yZXNlcnZlX2lu aXQpOwo+ID4gICAqIEBwOiB0cmFja2luZyBzdHJ1Y3R1cmUgZm9yIHRoZSBwZW5kaW5nIGV2ZW50 Cj4gPiAgICoKPiA+ICAgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIHRoZSBldmVudCBAcCBpbml0aWFs aXplZCB3aXRoIGRybV9ldmVudF9yZXNlcnZlX2luaXQoKQo+ID4gLSAqIGFuZCByZWxlYXNlcyBh bnkgYWxsb2NhdGVkIHNwYWNlLgo+ID4gKyAqIGFuZCByZWxlYXNlcyBhbnkgYWxsb2NhdGVkIHNw YWNlLiBJdCBpcyB1c2VkIHRvIGNhbmNlbCBhbiBldmVudCB3aGVuIHRoZQo+ID4gKyAqIG5vbmJs b2NraW5nIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgc3VibWl0dGVkIGFuZCBuZWVkZWQgdG8gYmUg YWJvcnRlZC4KPiA+ICAgKi8KPiA+ICB2b2lkIGRybV9ldmVudF9jYW5jZWxfZnJlZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ID4gIAkJCSAgIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCAqcCkK PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmggYi9pbmNsdWRlL2RybS9kcm1f ZHJ2LmgKPiA+IGluZGV4IDQzMjFkMDEyYzRiYS4uOGY5MDBmYjMwMjc1IDEwMDY0NAo+ID4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgK PiA+IEBAIC02NCw3ICs2NCw2IEBAIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYjsKPiA+ICAg KiBzdHJ1Y3R1cmUgZm9yIEdFTSBkcml2ZXJzLgo+ID4gICAqLwo+ID4gIHN0cnVjdCBkcm1fZHJp dmVyIHsKPiA+IC0KPiA+ICAJLyoqCj4gPiAgCSAqIEBsb2FkOgo+ID4gIAkgKgo+ID4gQEAgLTc2 LDE0ICs3NSw5NCBAQCBzdHJ1Y3QgZHJtX2RyaXZlciB7Cj4gPiAgCSAqIFNlZSBkcm1fZGV2X2lu aXQoKSBhbmQgZHJtX2Rldl9yZWdpc3RlcigpIGZvciBwcm9wZXIgYW5kCj4gPiAgCSAqIHJhY2Ut ZnJlZSB3YXkgdG8gc2V0IHVwIGEgJnN0cnVjdCBkcm1fZGV2aWNlLgo+ID4gIAkgKgo+ID4gKwkg KiBUaGlzIGlzIGRlcHJlY2F0ZWQsIGRvIG5vdCB1c2UhCj4gPiArCSAqCj4gPiAgCSAqIFJldHVy bnM6Cj4gPiAgCSAqCj4gPiAgCSAqIFplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8gdmFsdWUgb24g ZmFpbHVyZS4KPiA+ICAJICovCj4gPiAgCWludCAoKmxvYWQpIChzdHJ1Y3QgZHJtX2RldmljZSAq LCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBvcGVuOgo+ ID4gKwkgKgo+ID4gKwkgKiBEcml2ZXIgY2FsbGJhY2sgd2hlbiBhIG5ldyAmc3RydWN0IGRybV9m aWxlIGlzIG9wZW5lZC4gVXNlZnVsIGZvcgo+ID4gKwkgKiBzZXR0aW5nIHVwIGRyaXZlci1wcml2 YXRlIGRhdGEgc3RydWN0dXJlcyBsaWtlIGJ1ZmZlciBhbGxvY2F0b3JzLAo+ID4gKwkgKiBleGVj dXRpb24gY29udGV4dHMgb3Igc2ltaWxhciB0aGluZ3MuIFN1Y2ggZHJpdmVyLXByaXZhdGUgcmVz b3VyY2VzCj4gPiArCSAqIG11c3QgYmUgcmVsZWFzZWQgYWdhaW4gaW4gQHBvc3RjbG9zZS4KPiA+ ICsJICoKPiA+ICsJICogU2luY2UgdGhlIGRpc3BsYXkvbW9kZXNldCBzaWRlIG9mIERSTSBjYW4g b25seSBiZSBvd25lZCBieSBleGFjdGx5Cj4gPiArCSAqIG9uZSAmc3RydWN0IGRybV9maWxlIChz ZWUgJmRybV9maWxlLmlzX21hc3RlciBhbmQgJmRybV9kZXZpY2UubWFzdGVyKQo+ID4gKwkgKiB0 aGVyZSBzaG91bGQgbmV2ZXIgYmUgYSBuZWVkIHRvIHNldCB1cCBhbnkgbW9kZXNldCByZWxhdGVk IHJlc291cmNlcwo+ID4gKwkgKiBpbiB0aGlzIGNhbGxiYWNrLiBEb2luZyBzbyB3b3VsZCBiZSBh IGRyaXZlciBkZXNpZ24gYnVnLgo+ID4gKwkgKgo+ID4gKwkgKiBSZXR1cm5zOgo+ID4gKwkgKgo+ ID4gKwkgKiAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLCB3 aGljaCB3aWxsIGJlCj4gPiArCSAqIHByb21vdGVkIHRvIHVzZXJzcGFjZSBhcyB0aGUgcmVzdWx0 IG9mIHRoZSBvcGVuKCkgc3lzdGVtIGNhbGwuCj4gPiArCSAqLwo+ID4gIAlpbnQgKCpvcGVuKSAo c3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0IGRybV9maWxlICopOwo+ID4gKwo+ID4gKwkvKioK PiA+ICsJICogQHByZWNsb3NlOgo+ID4gKwkgKgo+ID4gKwkgKiBPbmUgb2YgdGhlIGRyaXZlciBj YWxsYmFja3Mgd2hlbiBhIG5ldyAmc3RydWN0IGRybV9maWxlIGlzIGNsb3NlZC4KPiA+ICsJICog VXNlZnVsIGZvciB0ZWFyaW5nIGRvd24gZHJpdmVyLXByaXZhdGUgZGF0YSBzdHJ1Y3R1cmVzIGFs bG9jYXRlZCBpbgo+ID4gKwkgKiBAb3BlbiBsaWtlIGJ1ZmZlciBhbGxvY2F0b3JzLCBleGVjdXRp b24gY29udGV4dHMgb3Igc2ltaWxhciB0aGluZ3MuCj4gPiArCSAqCj4gPiArCSAqIFNpbmNlIHRo ZSBkaXNwbGF5L21vZGVzZXQgc2lkZSBvZiBEUk0gY2FuIG9ubHkgYmUgb3duZWQgYnkgZXhhY3Rs eQo+ID4gKwkgKiBvbmUgJnN0cnVjdCBkcm1fZmlsZSAoc2VlICZkcm1fZmlsZS5pc19tYXN0ZXIg YW5kICZkcm1fZGV2aWNlLm1hc3RlcikKPiA+ICsJICogdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEg bmVlZCB0byB0ZWFyIGRvd24gYW55IG1vZGVzZXQgcmVsYXRlZAo+ID4gKwkgKiByZXNvdXJjZXMg aW4gdGhpcyBjYWxsYmFjay4gRG9pbmcgc28gd291bGQgYmUgYSBkcml2ZXIgZGVzaWduIGJ1Zy4K PiA+ICsJICoKPiA+ICsJICogRklYTUU6IEl0IGlzIG5vdCByZWFsbHkgY2xlYXIgd2h5IHRoZXJl J3MgYm90aCBAcHJlY2xvc2UgYW5kCj4gPiArCSAqIEBwb3N0Y2xvc2UuIFdpdGhvdXQgYSByZWFs bHkgZ29vZCByZWFzb24sIHVzZSBAcG9zdGNsb3NlIG9ubHkuCj4gPiArCSAqLwo+ID4gIAl2b2lk ICgqcHJlY2xvc2UpIChzdHJ1Y3QgZHJtX2RldmljZSAqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdik7Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAcG9zdGNsb3NlOgo+ID4gKwkgKgo+ID4g KwkgKiBPbmUgb2YgdGhlIGRyaXZlciBjYWxsYmFja3Mgd2hlbiBhIG5ldyAmc3RydWN0IGRybV9m aWxlIGlzIGNsb3NlZC4KPiA+ICsJICogVXNlZnVsIGZvciB0ZWFyaW5nIGRvd24gZHJpdmVyLXBy aXZhdGUgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBpbgo+ID4gKwkgKiBAb3BlbiBsaWtlIGJ1 ZmZlciBhbGxvY2F0b3JzLCBleGVjdXRpb24gY29udGV4dHMgb3Igc2ltaWxhciB0aGluZ3MuCj4g PiArCSAqCj4gPiArCSAqIFNpbmNlIHRoZSBkaXNwbGF5L21vZGVzZXQgc2lkZSBvZiBEUk0gY2Fu IG9ubHkgYmUgb3duZWQgYnkgZXhhY3RseQo+ID4gKwkgKiBvbmUgJnN0cnVjdCBkcm1fZmlsZSAo c2VlICZkcm1fZmlsZS5pc19tYXN0ZXIgYW5kICZkcm1fZGV2aWNlLm1hc3RlcikKPiA+ICsJICog dGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgbmVlZCB0byB0ZWFyIGRvd24gYW55IG1vZGVzZXQgcmVs YXRlZAo+ID4gKwkgKiByZXNvdXJjZXMgaW4gdGhpcyBjYWxsYmFjay4gRG9pbmcgc28gd291bGQg YmUgYSBkcml2ZXIgZGVzaWduIGJ1Zy4KPiA+ICsJICoKPiA+ICsJICogRklYTUU6IEl0IGlzIG5v dCByZWFsbHkgY2xlYXIgd2h5IHRoZXJlJ3MgYm90aCBAcHJlY2xvc2UgYW5kCj4gPiArCSAqIEBw b3N0Y2xvc2UuIFdpdGhvdXQgYSByZWFsbHkgZ29vZCByZWFzb24sIHVzZSBAcG9zdGNsb3NlIG9u bHkuCj4gPiArCSAqLwo+ID4gIAl2b2lkICgqcG9zdGNsb3NlKSAoc3RydWN0IGRybV9kZXZpY2Ug Kiwgc3RydWN0IGRybV9maWxlICopOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQGxhc3RjbG9z ZToKPiA+ICsJICoKPiA+ICsJICogQ2FsbGVkIHdoZW4gdGhlIGxhc3QgJnN0cnVjdCBkcm1fZmls ZSBoYXMgYmVlbiBjbG9zZWQgYW5kIHRoZXJlJ3MKPiA+ICsJICogY3VycmVudGx5IG5vIHVzZXJz cGFjZSBjbGllbnQgZm9yIHRoZSAmc3RydWN0IGRybV9kZXZpY2UuCj4gPiArCSAqCj4gPiArCSAq IE1vZGVybiBkcml2ZXJzIHNob3VsZCBvbmx5IHVzZSB0aGlzIHRvIGZvcmNlLXJlc3RvcmUgdGhl IGZiZGV2Cj4gPiArCSAqIGZyYW1lYnVmZmVyIHVzaW5nIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9m YmRldl9tb2RlX3VubG9ja2VkKCkuCj4gPiArCSAqIEFueXRoaW5nIGVsc2Ugd291bGQgaW5kaWNh dGUgdGhlcmUncyBzb21ldGhpbmcgc2VyaW91c2x5IHdyb25nLgo+ID4gKwkgKiBNb2Rlcm4gZHJp dmVycyBjYW4gYWxzbyB1c2UgdGhpcyB0byBleGVjdXRlIGRlbGF5ZWQgcG93ZXIgc3dpdGNoaW5n Cj4gPiArCSAqIHN0YXRlIGNoYW5nZXMsIGUuZy4gaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgOnJl ZjpgdmdhX3N3aXRjaGVyb29gCj4gPiArCSAqIGluZnJhc3RydWN0dXJlLgo+ID4gKwkgKgo+ID4g KwkgKiBUaGlzIGlzIGNhbGxlZCBhZnRlciBAcHJlY2xvc2UgYW5kIEBwb3N0Y2xvc2UgaGF2ZSBi ZWVuIGNhbGxlZC4KPiA+ICsJICoKPiA+ICsJICogTk9URToKPiA+ICsJICoKPiA+ICsJICogQWxs IGxlZ2FjeSBkcml2ZXJzIHVzZSB0aGlzIGNhbGxiYWNrIHRvIGRlLWluaXRpYWxpemUgdGhlIGhh cmR3YXJlLgo+ID4gKwkgKiBUaGlzIGlzIHB1cmVseSBiZWNhdXNlIG9mIHRoZSBzaGFkb3ctYXR0 YWNoIG1vZGVsLCB3aGVyZSB0aGUgRFJNCj4gPiArCSAqIGtlcm5lbCBkcml2ZXIgZG9lcyBub3Qg cmVhbGx5IG93biB0aGUgaGFyZHdhcmUuIEluc3RlYWQgb3duZXJzaGlwZSBpcwo+ID4gKwkgKiBo YW5kbGVkIHdpdGggdGhlIGhlbHAgb2YgdXNlcnNwYWNlIHRocm91Z2ggYW4gaW5oZXJpdGVkbHkg cmFjeSBkYW5jZQo+ID4gKwkgKiB0byBzZXQvdW5zZXQgdGhlIFZUIGludG8gcmF3IG1vZGUuCj4g PiArCSAqCj4gPiArCSAqIExlZ2FjeSBkcml2ZXJzIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGlu IHRoZSBAZmlyc3RvcGVuIGNhbGxiYWNrLAo+ID4gKwkgKiB3aGljaCBpc24ndCBldmVuIGNhbGxl ZCBmb3IgbW9kZXJuIGRyaXZlcnMuCj4gPiArCSAqLwo+ID4gIAl2b2lkICgqbGFzdGNsb3NlKSAo c3RydWN0IGRybV9kZXZpY2UgKik7Cj4gPiAgCj4gPiAgCS8qKgo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2RybV9maWxlLmggYi9pbmNsdWRlL2RybS9kcm1fZmlsZS5oCj4gPiBpbmRleCA0 ZTM0NzM5OWE3YmQuLjY3MjQ0ZjJjMGM1NCAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9maWxlLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKPiA+IEBAIC00NSw2ICs0 NSw3IEBAIHN0cnVjdCBkcm1fZGV2aWNlOwo+ID4gICAqIEZJWE1FOiBOb3Qgc3VyZSB3ZSB3YW50 IHRvIGhhdmUgZHJtX21pbm9yIGhlcmUgaW4gdGhlIGVuZCwgYnV0IHRvIGF2b2lkCj4gPiAgICog aGVhZGVyIGluY2x1ZGUgbG9vcHMgd2UgbmVlZCBpdCBoZXJlIGZvciBub3cuCj4gPiAgICovCj4g PiArCj4gPiAgZW51bSBkcm1fbWlub3JfdHlwZSB7Cj4gPiAgCURSTV9NSU5PUl9QUklNQVJZLAo+ ID4gIAlEUk1fTUlOT1JfQ09OVFJPTCwKPiA+IEBAIC01MiwxMiArNTMsMTkgQEAgZW51bSBkcm1f bWlub3JfdHlwZSB7Cj4gPiAgfTsKPiA+ICAKPiA+ICAvKioKPiA+IC0gKiBEUk0gbWlub3Igc3Ry dWN0dXJlLiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgZHJtIG1pbm9yIG51bWJlci4KPiA+ ICsgKiBzdHJ1Y3QgZHJtX21pbm9yIC0gRFJNIGRldmljZSBtaW5vciBzdHJ1Y3R1cmUKPiA+ICsg Kgo+ID4gKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgYSBEUk0gbWlub3IgbnVtYmVyIGZv ciBkZXZpY2Ugbm9kZXMgaW4gL2Rldi4KPiA+ICsgKiBFbnRpcmVseSBvcGFxdWUgdG8gZHJpdmVy cyBhbmQgc2hvdWxkIG5ldmVyIGJlIGluc3BlY3RlZCBkaXJlY3RseSBieSBkcml2ZXJzLgo+ID4g KyAqIERyaXZlcnMgaW5zdGVhZCBzaG91bGQgb25seSBpbnRlcmFjdCB3aXRoICZzdHJ1Y3QgZHJt X2ZpbGUgYW5kIG9mIGNvdXJzZQo+ID4gKyAqICZzdHJ1Y3QgZHJtX2RldmljZSwgd2hpY2ggaXMg YWxzbyB3aGVyZSBkcml2ZXItcHJpdmF0ZSBkYXRhIGFuZCByZXNvdXJjZXMgY2FuCj4gPiArICog YmUgYXR0YWNoZWQgdG8uCj4gPiAgICovCj4gPiAgc3RydWN0IGRybV9taW5vciB7Cj4gPiAtCWlu dCBpbmRleDsJCQkvKio8IE1pbm9yIGRldmljZSBudW1iZXIgKi8KPiA+IC0JaW50IHR5cGU7ICAg ICAgICAgICAgICAgICAgICAgICAvKio8IENvbnRyb2wgb3IgcmVuZGVyICovCj4gPiAtCXN0cnVj dCBkZXZpY2UgKmtkZXY7CQkvKio8IExpbnV4IGRldmljZSAqLwo+ID4gKwkvKiBwcml2YXRlOiAq Lwo+IAo+IFNhbWUgY29tbWVudCBoZXJlIHJlOiB0aGUgcHJpdmF0ZSBjb21tZW50LiBJIGRvbid0 IHRoaW5rIGl0IGFkZHMgYW55dGhpbmcgYmV5b25kCj4gd2hhdCB5b3UndmUgYWxyZWFkeSBzYWlk IGluIHRoZSBvdmVydmlldy4KPiAKPiA+ICsJaW50IGluZGV4OwkJCS8qIE1pbm9yIGRldmljZSBu dW1iZXIgKi8KPiA+ICsJaW50IHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBDb250cm9s IG9yIHJlbmRlciAqLwo+ID4gKwlzdHJ1Y3QgZGV2aWNlICprZGV2OwkJLyogTGludXggZGV2aWNl ICovCj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gPiAgCj4gPiAgCXN0cnVjdCBkZW50 cnkgKmRlYnVnZnNfcm9vdDsKPiA+IEBAIC02Niw4OSArNzQsMjg4IEBAIHN0cnVjdCBkcm1fbWlu b3Igewo+ID4gIAlzdHJ1Y3QgbXV0ZXggZGVidWdmc19sb2NrOyAvKiBQcm90ZWN0cyBkZWJ1Z2Zz X2xpc3QuICovCj4gPiAgfTsKPiA+ICAKPiA+IC0vKiBFdmVudCBxdWV1ZWQgdXAgZm9yIHVzZXJz cGFjZSB0byByZWFkICovCj4gPiArLyoqCj4gPiArICogc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50 IC0gRXZlbnQgcXVldWVkIHVwIGZvciB1c2Vyc3BhY2UgdG8gcmVhZAo+ID4gKyAqCj4gPiArICog VGhpcyByZXByZXNlbnRzIGEgRFJNIGV2ZW50LiBEcml2ZXJzIGNhbiB1c2UgdGhpcyBhcyBhIGdl bmVyaWMgY29tcGxldGlvbgo+ID4gKyAqIG1lY2hhbmlzbSwgd2hpY2ggc3VwcG9ydHMga2VybmVs LWludGVybmFsICZzdHJ1Y3QgY29tcGxldGlvbiwgJnN0cnVjdCBkbWFfZmVuY2UKPiA+ICsgKiBh bmQgYWxzbyB0aGUgRFJNLXNwZWNpZmljICZzdHJ1Y3QgZHJtX2V2ZW50IGRlbGl2ZXJ5IG1lY2hh bmlzbS4KPiA+ICsgKi8KPiA+ICBzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgewo+ID4gKwkvKioK PiA+ICsJICogQGNvbXBsZXRpb246Cj4gPiArCSAqCj4gPiArCSAqIE9wdGlvbmFsIHBvaW50ZXIg dG8gYSBrZXJuZWwgaW50ZXJuYWwgY29tcGxldGlvbiBzaWduYWxsZWQgd2hlbgo+ID4gKwkgKiBk cm1fc2VuZF9ldmVudCgpIGlzIGNhbGxlZCwgdXNlZnVsIHRvIGludGVybmFsbHkgc3luY2hyb25p emUgd2l0aAo+ID4gKwkgKiBub25ibGNva2luZyBvcGVyYXRpb25zLgo+IAo+IG5vbmJsb2NraW5n Cj4gCj4gPiArCSAqLwo+ID4gIAlzdHJ1Y3QgY29tcGxldGlvbiAqY29tcGxldGlvbjsKPiA+ICsK PiA+ICsJLyoqCj4gPiArCSAqIEBjb21wbGV0aW9uX3JlbGVhc2U6Cj4gPiArCSAqCj4gPiArCSAq IE9wdGlvbmFsIGNhbGxiYWNrIGN1cnJlbnRseSBvbmx5IHVzZWQgYnkgdGhlIGF0b21pYyBtb2Rl c2V0IGhlbHBlcnMKPiA+ICsJICogdG8gY2xlYW4gdXAgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3Ig dGhlIHN0cnVjdHVyZSBAY29tcGxldGlvbiBpcwo+ID4gKwkgKiBzdG9yZWQgaW4uCj4gPiArCSAq Lwo+ID4gIAl2b2lkICgqY29tcGxldGlvbl9yZWxlYXNlKShzdHJ1Y3QgY29tcGxldGlvbiAqY29t cGxldGlvbik7Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAZXZlbnQ6Cj4gPiArCSAqCj4gPiAr CSAqIFBvaW50ZXIgdG8gdGhlIGFjdHVhbCBldmVudCB0aGF0IHNob3VsZCBiZSBzZW50IHRvIHVz ZXJzcGFjZSB0byBiZQo+ID4gKwkgKiByZWFkIHVzaW5nIGRybV9yZWFkKCkuIENhbiBiZSBvcHRp b25hbCwgc2luY2Ugbm93YWRheXMgZXZlbnRzIGFyZQo+ID4gKwkgKiBhbHNvIHVzZWQgdG8gc2ln bmFsIGtlcm5lbCBpbnRlcm5hbCB0aHJlYWRzIHdpdGggQGNvbXBsZXRpb24gb3IgRE1BCj4gPiAr CSAqIHRyYW5zYWN0aW9ucyB1c2luZyBAZmVuY2UuCj4gPiArCSAqLwo+ID4gIAlzdHJ1Y3QgZHJt X2V2ZW50ICpldmVudDsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBmZW5jZToKPiA+ICsJICoK PiA+ICsJICogT3B0aW9uYWwgRE1BIGZlbmNlIHRvIHVuYmxvY2sgb3RoZXIgaGFyZHdhcmUgdHJh bnNhY3Rpb25zIHdoaWNoCj4gPiArCSAqIGRlcGVuZCB1cG9uIHRoZSBub25ibG9ja2luZyBEUk0g b3BlcmF0aW9uIHRoaXMgZXZlbnQgcmVwcmVzZW50cy4KPiA+ICsJICovCj4gPiAgCXN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQGZpbGVfcHJpdjoKPiA+ ICsJICoKPiA+ICsJICogJnN0cnVjdCBkcm1fZmlsZSB3aGVyZSBAZXZlbnQgc2hvdWxkIGJlIGRl bGl2ZXJlZCB0by4gT25seSBzZXQgd2hlbgo+ID4gKwkgKiBAZXZlbnQgaXMgc2V0Lgo+ID4gKwkg Ki8KPiA+ICsJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXY7Cj4gPiArCj4gPiArCS8qKgo+ID4g KwkgKiBAbGluazoKPiA+ICsJICoKPiA+ICsJICogRG91YmxlLWxpbmtlZCBsaXN0IHRvIGtlZXAg dHJhY2sgb2YgdGhpcyBldmVudC4gQ2FuIGJlIHVzZWQgYnkgdGhlCj4gPiArCSAqIGRyaXZlciB1 cCB0byB0aGUgcG9pbnQgd2hlbiBpdCBjYWxscyBkcm1fc2VuZF9ldmVudCgpLCBhZnRlciB0aGF0 Cj4gPiArCSAqIHRoaXMgbGlzdCBlbnRyeSBpcyBvd25lZCBieSB0aGUgY29yZSBmb3IgaXRzIG93 biBib29rLWtlZXBpbmcuCj4gPiArCSAqLwo+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4g PiArCj4gPiArCS8qKgo+ID4gKwkgKiBAcGVuZGluZ19saW5rOgo+ID4gKwkgKgo+ID4gKwkgKiBF bnRyeSBvbiAmZHJtX2ZpbGUucGVuZGluZ19ldmVudF9saXN0LCB0byBrZWVwIHRyYWNrIG9mIGFs bCBwZW5kaW5nCj4gPiArCSAqIGV2ZW50cyBmb3IgQGZpbGVfcHJpdiwgdG8gYWxsb3cgY29ycmVj dCB1bndpbmRpbmcgb2YgdGhlbSB3aGVuCj4gPiArCSAqIHVzZXJzcGFjZSBjbG9zZXMgdGhlIGZp bGUgYmVmb3JlIHRoZSBldmVudCBpcyBkZWxpdmVyZWQuCj4gPiArCSAqLwo+ID4gIAlzdHJ1Y3Qg bGlzdF9oZWFkIHBlbmRpbmdfbGluazsKPiA+IC0Jc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXY7 Cj4gPiAgfTsKPiA+ICAKPiA+IC0vKiogRmlsZSBwcml2YXRlIGRhdGEgKi8KPiA+ICsvKioKPiA+ ICsgKiBzdHJ1Y3QgZHJtX2ZpbGUgLSBEUk0gZmlsZSBwcml2YXRlIGRhdGEKPiA+ICsgKgo+ID4g KyAqIFRoaXMgc3RydWN0dXJlIHRyYWNrcyBwZXIgb3BlbiBmaWxlIGRlc2NyaXB0b3IgRFJNIHN0 YXRlLgo+IAo+IG5pdDogVGhpcyBzdHJ1Y3R1cmUgdHJhY2tzIERSTSBzdGF0ZSBwZXIgb3BlbiBm aWxlIGRlc2NyaXB0b3IuCj4gCj4gPiArICovCj4gPiAgc3RydWN0IGRybV9maWxlIHsKPiA+ICsJ LyoqCj4gPiArCSAqIEBhdXRoZW50aWNhdGVkOgo+ID4gKwkgKgo+ID4gKwkgKiBXaGV0aGVyIHRo ZSBjbGllbnQgaXMgYWxsb3dlZCB0byBzdWJtaXQgcmVuZGVyaW5nLCB3aGljaCBmb3IgbGVnYWN5 Cj4gPiArCSAqIG5vZGVzIG1lYW5zIGl0IG11c3QgYmUgYXV0aGVudGljYXRlZC4KPiA+ICsJICoK PiA+ICsJICogU2VlIGFsc28gdGhlIDpyZWY6YHNlY3Rpb24gb24gcHJpbWFyeSBub2RlcyBhbmQg YXV0aGVudGljYXRpb24KPiA+ICsJICogPGRybV9wcmltYXJ5X25vZGU+YC4KPiA+ICsJICovCj4g PiArCj4gCj4gbml0OiBleHRyYSBsaW5lCj4gCj4gPiAgCXVuc2lnbmVkIGF1dGhlbnRpY2F0ZWQg OjE7Cj4gPiAtCS8qIHRydWUgd2hlbiB0aGUgY2xpZW50IGhhcyBhc2tlZCB1cyB0byBleHBvc2Ug c3RlcmVvIDNEIG1vZGUgZmxhZ3MgKi8KPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBzdGVyZW9f YWxsb3dlZDoKPiA+ICsJICoKPiA+ICsJICogVHJ1ZSB3aGVuIHRoZSBjbGllbnQgaGFzIGFza2Vk IHVzIHRvIGV4cG9zZSBzdGVyZW8gM0QgbW9kZSBmbGFncy4KPiA+ICsJICovCj4gPiAgCXVuc2ln bmVkIHN0ZXJlb19hbGxvd2VkIDoxOwo+ID4gLQkvKgo+ID4gLQkgKiB0cnVlIGlmIGNsaWVudCB1 bmRlcnN0YW5kcyBDUlRDIHByaW1hcnkgcGxhbmVzIGFuZCBjdXJzb3IgcGxhbmVzCj4gPiAtCSAq IGluIHRoZSBwbGFuZSBsaXN0Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAdW5pdmVyc2FsX3Bs YW5lczoKPiA+ICsJICoKPiA+ICsJICogVHJ1ZSBpZiBjbGllbnQgdW5kZXJzdGFuZHMgQ1JUQyBw cmltYXJ5IHBsYW5lcyBhbmQgY3Vyc29yIHBsYW5lcwo+ID4gKwkgKiBpbiB0aGUgcGxhbmUgbGlz dC4gQXV0b21hdGljYWxseSBzZXQgd2hlbiBAYXRvbWljIGlzIHNldC4KPiA+ICAJICovCj4gPiAg CXVuc2lnbmVkIHVuaXZlcnNhbF9wbGFuZXM6MTsKPiA+IC0JLyogdHJ1ZSBpZiBjbGllbnQgdW5k ZXJzdGFuZHMgYXRvbWljIHByb3BlcnRpZXMgKi8KPiA+ICsKPiA+ICsJLyoqIEBhdG9taWM6IFRy dWUgaWYgY2xpZW50IHVuZGVyc3RhbmRzIGF0b21pYyBwcm9wZXJ0aWVzLiAqLwo+ID4gIAl1bnNp Z25lZCBhdG9taWM6MTsKPiA+IC0JLyoKPiA+IC0JICogVGhpcyBjbGllbnQgaXMgdGhlIGNyZWF0 b3Igb2YgQG1hc3Rlci4KPiA+IC0JICogUHJvdGVjdGVkIGJ5IHN0cnVjdCBkcm1fZGV2aWNlOjpt YXN0ZXJfbXV0ZXguCj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAaXNfbWFzdGVyOgo+ID4gKwkg Kgo+ID4gKwkgKiBUaGlzIGNsaWVudCBpcyB0aGUgY3JlYXRvciBvZiBAbWFzdGVyLiAgUHJvdGVj dGVkIGJ5IHN0cnVjdAo+IAo+IG5pdDogZG91YmxlIHNwYWNlIGJlZm9yZSBQcm90ZWN0ZWQKPiAK PiA+ICsJICogJmRybV9kZXZpY2UubWFzdGVyX211dGV4Lgo+ID4gKwkgKgo+ID4gKwkgKiBTZWUg YWxzbyB0aGUgOnJlZjpgc2VjdGlvbiBvbiBwcmltYXJ5IG5vZGVzIGFuZCBhdXRoZW50aWNhdGlv bgo+ID4gKwkgKiA8ZHJtX3ByaW1hcnlfbm9kZT5gLgo+ID4gIAkgKi8KPiA+ICAJdW5zaWduZWQg aXNfbWFzdGVyOjE7Cj4gPiAgCj4gPiArCS8qKgo+ID4gKwkgKiBAbWFzdGVyOgo+ID4gKwkgKgo+ ID4gKwkgKiBNYXN0ZXIgdGhpcyBub2RlIGlzIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGguIE9u bHkgcmVsZXZhbnQgaWYKPiA+ICsJICogZHJtX2lzX3ByaW1hcnlfY2xpZW50KCkgcmV0dXJucyB0 cnVlLiBOb3RlIHRoYXQgdGhpcyBvbmx5Cj4gPiArCSAqIG1hdGNoZXMgJmRybV9kZXZpY2UubWFz dGVyIGlmIHRoZSBtYXN0ZXIgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgb25lLgo+ID4gKwkgKgo+ ID4gKwkgKiBTZWUgYWxzbyBAYXV0aGVudGljYXRpb24gYW5kIEBpc19tYXN0ZXIgYW5kIHRoZSA6 cmVmOmBzZWN0aW9uIG9uCj4gPiArCSAqIHByaW1hcnkgbm9kZXMgYW5kIGF1dGhlbnRpY2F0aW9u IDxkcm1fcHJpbWFyeV9ub2RlPmAuCj4gPiArCSAqLwo+ID4gKwlzdHJ1Y3QgZHJtX21hc3RlciAq bWFzdGVyOwo+ID4gKwo+ID4gKwkvKiogQHBpZDogUHJvY2VzcyB0aGF0IG9wZW5lZCB0aGlzIGZp bGUuICovCj4gPiAgCXN0cnVjdCBwaWQgKnBpZDsKPiA+ICsKPiA+ICsJLyoqIEBtYWdpYzogQXV0 aGVudGljYXRpb24gbWFnaWMsIHNlZSBAYXV0aGVudGljYXRlZC4gKi8KPiA+ICAJZHJtX21hZ2lj X3QgbWFnaWM7Cj4gPiArCj4gPiArCS8qKgo+ID4gKwkgKiBAbGhlYWQ6Cj4gPiArCSAqCj4gPiAr CSAqIExpc3Qgb2YgYWxsIG9wZW4gZmlsZXMgb2YgYSBEUk0gZGV2aWNlLCBsaW5rZWQgaW50bwo+ ID4gKwkgKiAmZHJtX2RldmljZS5maWxlbGlzdC4gUHJvdGVjdGVkIGJ5ICZkcm1fZGV2aWNlLmZp bGVsaXN0X211dGV4Lgo+ID4gKwkgKi8KPiA+ICAJc3RydWN0IGxpc3RfaGVhZCBsaGVhZDsKPiA+ ICsKPiA+ICsKPiAKPiBuaXQ6IGV4dHJhIGxpbmUKPiAKPiA+ICsJLyoqIEBtaW5vcjogJnN0cnVj dCBkcm1fbWlub3IgZm9yIHRoaXMgZmlsZS4gKi8KPiA+ICAJc3RydWN0IGRybV9taW5vciAqbWlu b3I7Cj4gPiAtCXVuc2lnbmVkIGxvbmcgbG9ja19jb3VudDsKPiA+ICAKPiA+IC0JLyoqIE1hcHBp bmcgb2YgbW0gb2JqZWN0IGhhbmRsZXMgdG8gb2JqZWN0IHBvaW50ZXJzLiAqLwo+ID4gKwkvKioK PiA+ICsJICogQG9iamVjdF9pZHI6Cj4gPiArCSAqCj4gPiArCSAqIE1hcHBpbmcgb2YgbW0gb2Jq ZWN0IGhhbmRsZXMgdG8gb2JqZWN0IHBvaW50ZXJzLiBVc2VkIGJ5IHRoZSBHRU0KPiA+ICsJICog c3Vic3lzdGVtLiBQcm90ZWN0ZWQgYnkgQHRhYmxlX2xvY2suCj4gPiArCSAqLwo+ID4gIAlzdHJ1 Y3QgaWRyIG9iamVjdF9pZHI7Cj4gPiAtCS8qKiBMb2NrIGZvciBzeW5jaHJvbml6YXRpb24gb2Yg YWNjZXNzIHRvIG9iamVjdF9pZHIuICovCj4gPiArCj4gPiArCS8qKiBAdGFibGVfbG9jazogUHJv dGVjdHMgQG9iamVjdF9pZHIuICovCj4gPiAgCXNwaW5sb2NrX3QgdGFibGVfbG9jazsKPiA+ICAK PiA+ICsJLyoqIEBmaWxwOiBQb2ludGVyIHRvIHRoZSBjb3JlIGZpbGUgc3RydWN0dXJlLiAqLwo+ ID4gIAlzdHJ1Y3QgZmlsZSAqZmlscDsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBkcml2ZXJf cHJpdjoKPiA+ICsJICoKPiA+ICsJICogT3B0aW9uYWwgcG9pbnRlciBmb3IgZHJpdmVyIHByaXZh dGUgZGF0YS4gQ2FuIGJlIGFsbG9jYXRlZCBpbgo+ID4gKwkgKiAmZHJtX2RyaXZlci5vcGVuIGFu ZCBzaG91bGQgYmUgZnJlZWQgaW4gJmRybV9kcml2ZXIucG9zdGNsb3NlLgo+ID4gKwkgKi8KPiA+ ICAJdm9pZCAqZHJpdmVyX3ByaXY7Cj4gPiAgCj4gPiAtCXN0cnVjdCBkcm1fbWFzdGVyICptYXN0 ZXI7IC8qIG1hc3RlciB0aGlzIG5vZGUgaXMgY3VycmVudGx5IGFzc29jaWF0ZWQgd2l0aAo+ID4g LQkJCQkgICAgICBOLkIuIG5vdCBhbHdheXMgZGV2LT5tYXN0ZXIgKi8KPiA+ICAJLyoqCj4gPiAt CSAqIGZicyAtIExpc3Qgb2YgZnJhbWVidWZmZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbGUu Cj4gPiArCSAqIEBmYnM6Cj4gPiArCSAqCj4gPiArCSAqIExpc3Qgb2YgJnN0cnVjdCBkcm1fZnJh bWVidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsZSwgdXNpbmcgdGhlCj4gPiArCSAqICZk cm1fZnJhbWVidWZmZXIuZmlscF9oZWFkIGVudHJ5Lgo+ID4gIAkgKgo+ID4gLQkgKiBQcm90ZWN0 ZWQgYnkgZmJzX2xvY2suIE5vdGUgdGhhdCB0aGUgZmJzIGxpc3QgaG9sZHMgYSByZWZlcmVuY2Ug b24KPiA+IC0JICogdGhlIGZiIG9iamVjdCB0byBwcmV2ZW50IGl0IGZyb20gdW50aW1lbHkgZGlz YXBwZWFyaW5nLgo+ID4gKwkgKiBQcm90ZWN0ZWQgYnkgQGZic19sb2NrLiBOb3RlIHRoYXQgdGhl IEBmYnMgbGlzdCBob2xkcyBhIHJlZmVyZW5jZSBvbgo+ID4gKwkgKiB0aGUgZnJhbWVidWZmZXIg b2JqZWN0IHRvIHByZXZlbnQgaXQgZnJvbSB1bnRpbWVseSBkaXNhcHBlYXJpbmcuCj4gPiAgCSAq Lwo+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGZiczsKPiA+ICsKPiA+ICsJLyoqIEBmYnNfbG9jazog UHJvdGVjdHMgQGZicy4gKi8KPiA+ICAJc3RydWN0IG11dGV4IGZic19sb2NrOwo+ID4gIAo+ID4g LQkvKiogVXNlci1jcmVhdGVkIGJsb2IgcHJvcGVydGllczsgdGhpcyByZXRhaW5zIGEgcmVmZXJl bmNlIG9uIHRoZQo+ID4gLQkgKiAgcHJvcGVydHkuICovCj4gPiArCS8qKgo+ID4gKwkgKiBAYmxv YnM6Cj4gPiArCSAqCj4gPiArCSAqIFVzZXItY3JlYXRlZCBibG9iIHByb3BlcnRpZXM7IHRoaXMg cmV0YWlucyBhIHJlZmVyZW5jZSBvbiB0aGUKPiA+ICsJICogcHJvcGVydHkuCj4gPiArCSAqCj4g PiArCSAqIFByb3RlY3RlZCBieSBAZHJtX21vZGVfY29uZmlnLmJsb2JfbG9jazsKPiA+ICsJICov Cj4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgYmxvYnM7Cj4gPiAgCj4gPiArCS8qKiBAZXZlbnRfd2Fp dDogV2FpdHF1ZXVlIGZvciBuZXcgZXZlbnRzIGFkZGVkIHRvIEBldmVudF9saXN0LiAqLwo+ID4g IAl3YWl0X3F1ZXVlX2hlYWRfdCBldmVudF93YWl0Owo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICog QHBlbmRpbmdfZXZlbnRfbGlzdDoKPiA+ICsJICoKPiA+ICsJICogTGlzdCBvZiBwZW5kaW5nICZz dHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQsIHVzZWQgdG8gY2xlYW4gdXAgcGVuZGluZwo+ID4gKwkg KiBldmVudHMgaW4gY2FzZSB0aGlzIGZpbGUgZ2V0cyBjbG9zZWQgYmVmb3JlIHRoZSBldmVudCBp cyBzaWduYWxsZWQuCj4gPiArCSAqIFVzZXMgdGhlICZkcm1fcGVuZGluZ19ldmVudC5wZW5kaW5n X2xpbmsgZW50cnkuCj4gPiArCSAqCj4gPiArCSAqIFByb3RlY3QgYnkgJmRybV9kZXZpY2UuZXZl bnRfbG9jay4KPiA+ICsJICovCj4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19ldmVudF9s aXN0Owo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQGV2ZW50X2xpc3Q6Cj4gPiArCSAqCj4gPiAr CSAqIExpc3Qgb2YgJnN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCwgcmVhZHkgZm9yIGRldmxpdmVy eSB0byB1c2Vyc3BhY2UKPiAKPiBEYXQgJ2RldicgbXVzY2xlIG1lbW9yeSA6LSkKPiAKPiA+ICsJ ICogdGhyb3VnaCBkcm1fcmVhZCgpLiBVc2VzIHRoZSAmZHJtX3BlbmRpbmdfZXZlbnQubGluayBl bnRyeS4KPiA+ICsJICoKPiA+ICsJICogUHJvdGVjdCBieSAmZHJtX2RldmljZS5ldmVudF9sb2Nr Lgo+ID4gKwkgKi8KPiA+ICAJc3RydWN0IGxpc3RfaGVhZCBldmVudF9saXN0Owo+ID4gKwo+ID4g KwkvKioKPiA+ICsJICogQGV2ZW50X3NwYWNlOgo+ID4gKwkgKgo+ID4gKwkgKiBBdmFpbGFibGUg ZXZlbnQgc3BhY2UgdG8gcHJldmVudCB1c2Vyc3BhY2UgZnJvbQo+ID4gKwkgKiBleGhhdXN0aW5n IGtlcm5lbCBtZW1vcnkuIEN1cnJlbnRseSBsaW1pdGVkIHRvIHRoZSBmYWlybHkgYXJiaXRyYXJ5 Cj4gPiArCSAqIHZhbHVlIG9mIDRLQi4KPiA+ICsJICovCj4gPiAgCWludCBldmVudF9zcGFjZTsK PiA+ICAKPiA+ICsJLyoqIEBldmVudF9yZWFkX2xvY2s6IFNlcmlhbGl6ZXMgZHJtX3JlYWQoKS4g Ki8KPiA+ICAJc3RydWN0IG11dGV4IGV2ZW50X3JlYWRfbG9jazsKPiA+ICAKPiA+ICsJLyoqCj4g PiArCSAqIEBwcmltZToKPiA+ICsJICoKPiA+ICsJICogUGVyLWZpbGUgYnVmZmVyIGNhY2hlcyB1 c2VkIGJ5IHRoZSBQUklNRSBidWZmZXIgc2hhcmluZyBjb2RlLgo+ID4gKwkgKi8KPiA+ICAJc3Ry dWN0IGRybV9wcmltZV9maWxlX3ByaXZhdGUgcHJpbWU7Cj4gPiArCj4gPiArCS8qIHByaXZhdGU6 ICovCj4gPiArCXVuc2lnbmVkIGxvbmcgbG9ja19jb3VudDsgLyogRFJJMSBsZWdhY3kgbG9jayBj b3VudCAqLwo+ID4gIH07Cj4gPiAgCj4gPiArLyoqCj4gPiArICogZHJtX2lzX3ByaW1hcnlfY2xp ZW50IC0gaXMgdGhpcyBhbiBvcGVuIGZpbGUgb2YgdGhlIHByaW1hcnkgbm9kZQo+ID4gKyAqIEBm aWxlX3ByaXY6IERSTSBmaWxlCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBp cyBhbiBvcGVuIGZpbGUgb2YgdGhlIHByaW1hcnkgbm9kZSwgaS5lLgo+ID4gKyAqICZkcm1fZmls ZS5taW5vciBvZiBAZmlsZV9wcml2IGlzIGEgcHJpbWFyeSBtaW5vci4KPiA+ICsgKgo+ID4gKyAq IFNlZSBhbHNvIHRoZSA6cmVmOmBzZWN0aW9uIG9uIHByaW1hcnkgbm9kZXMgYW5kIGF1dGhlbnRp Y2F0aW9uCj4gPiArICogPGRybV9wcmltYXJ5X25vZGU+YC4KPiA+ICsgKi8KPiA+ICtzdGF0aWMg aW5saW5lIGJvb2wgZHJtX2lzX3ByaW1hcnlfY2xpZW50KGNvbnN0IHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KQo+ID4gK3sKPiA+ICsJcmV0dXJuIGZpbGVfcHJpdi0+bWlub3ItPnR5cGUgPT0g RFJNX01JTk9SX1BSSU1BUlk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9pc19y ZW5kZXJfY2xpZW50IC0gaXMgdGhpcyBhbiBvcGVuIGZpbGUgb2YgdGhlIHJlbmRlciBub2RlCj4g PiArICogQGZpbGVfcHJpdjogRFJNIGZpbGUKPiA+ICsgKgo+ID4gKyAqIFJldHVybnMgdHJ1ZSBp ZiB0aGlzIGlzIGFuIG9wZW4gZmlsZSBvZiB0aGUgcmVuZGVyIG5vZGUsIGkuZS4KPiA+ICsgKiAm ZHJtX2ZpbGUubWlub3Igb2YgQGZpbGVfcHJpdiBpcyBhIHJlbmRlciBtaW5vci4KPiA+ICsgKgo+ ID4gKyAqIFNlZSBhbHNvIHRoZSA6cmVmOmBzZWN0aW9uIG9uIHJlbmRlciBub2RlcyA8ZHJtX3Jl bmRlcl9ub2RlPmAuCj4gPiArICovCj4gPiAgc3RhdGljIGlubGluZSBib29sIGRybV9pc19yZW5k ZXJfY2xpZW50KGNvbnN0IHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ID4gIHsKPiA+ICAJ cmV0dXJuIGZpbGVfcHJpdi0+bWlub3ItPnR5cGUgPT0gRFJNX01JTk9SX1JFTkRFUjsKPiA+ICB9 Cj4gPiAgCj4gPiArLyoqCj4gPiArICogZHJtX2lzX2NvbnRyb2xfY2xpZW50IC0gaXMgdGhpcyBh biBvcGVuIGZpbGUgb2YgdGhlIGNvbnRyb2wgbm9kZQo+ID4gKyAqIEBmaWxlX3ByaXY6IERSTSBm aWxlCj4gPiArICoKPiA+ICsgKiBDb250cm9sIG5vZGVzIGFyZSBkZXByZWNhdGVkIGFuZCBpbiB0 aGUgcHJvY2VzcyBvZiBnZXR0aW5nIHJlbW92ZWQgZnJvbSB0aGUKPiA+ICsgKiBEUk0gdXNlcnNw YWNlIEFQSS4gRG8gbm90IGV2ZXIgdXNlIQo+ID4gKyAqLwo+ID4gIHN0YXRpYyBpbmxpbmUgYm9v bCBkcm1faXNfY29udHJvbF9jbGllbnQoY29uc3Qgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp Cj4gPiAgewo+ID4gIAlyZXR1cm4gZmlsZV9wcml2LT5taW5vci0+dHlwZSA9PSBEUk1fTUlOT1Jf Q09OVFJPTDsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGlubGluZSBib29sIGRybV9pc19wcmlt YXJ5X2NsaWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiA+IC17Cj4gPiAt CXJldHVybiBmaWxlX3ByaXYtPm1pbm9yLT50eXBlID09IERSTV9NSU5PUl9QUklNQVJZOwo+ID4g LX0KPiA+IC0KPiA+ICBpbnQgZHJtX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbHApOwo+ID4gIHNzaXplX3QgZHJtX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIg X191c2VyICpidWZmZXIsCj4gPiAgCQkgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKm9mZnNldCk7Cj4g PiAtLSAKPiA+IDIuMTEuMAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK