From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 2/4] drm/dp_mst: Start tracking per-port VCPI allocations Date: Tue, 30 Oct 2018 10:04:27 +0100 Message-ID: <20181030090427.GI21967@phenom.ffwll.local> References: <20181026203549.1796-1-lyude@redhat.com> <20181026203549.1796-3-lyude@redhat.com> <20181029142429.GB21967@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181029142429.GB21967-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Lyude Paul Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMjksIDIwMTggYXQgMDM6MjQ6MjlQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIE9jdCAyNiwgMjAxOCBhdCAwNDozNTo0N1BNIC0wNDAwLCBMeXVkZSBQ YXVsIHdyb3RlOgo+ID4gVGhlcmUgaGFzIGJlZW4gYSBUT0RPIHdhaXRpbmcgZm9yIHF1aXRlIGEg bG9uZyB0aW1lIGluCj4gPiBkcm1fZHBfbXN0X3RvcG9sb2d5LmM6Cj4gPiAKPiA+IAkvKiBXZSBj YW5ub3QgcmVseSBvbiBwb3J0LT52Y3BpLm51bV9zbG90cyB0byB1cGRhdGUKPiA+IAkgKiB0b3Bv bG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZiB0aGUg cGFyZW50Cj4gPiAJICogYnJhbmNoIGRldmljZSB3YXMgdW5wbHVnZ2VkLiBUaGlzIHNob3VsZCBi ZSBmaXhlZCBieSB0cmFja2luZwo+ID4gCSAqIHBlci1wb3J0IHNsb3QgYWxsb2NhdGlvbiBpbiBk cm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlIGluc3RlYWQgb2YKPiA+IAkgKiBkZXBlbmRpbmcgb24g dGhlIGNhbGxlciB0byB0ZWxsIHVzIGhvdyBtYW55IHNsb3RzIHRvIHJlbGVhc2UuCj4gPiAJICov Cj4gPiAKPiA+IFRoYXQncyBub3QgdGhlIG9ubHkgcmVhc29uIHdlIHNob3VsZCBmaXggdGhpczog Zm9yY2luZyB0aGUgZHJpdmVyIHRvCj4gPiB0cmFjayB0aGUgVkNQSSBhbGxvY2F0aW9ucyB0aHJv dWdob3V0IGEgc3RhdGUncyBhdG9taWMgY2hlY2sgaXMKPiA+IGVycm9yIHByb25lLCBiZWNhdXNl IGl0IG1lYW5zIHRoYXQgZXh0cmEgY2FyZSBoYXMgdG8gYmUgdGFrZW4gd2l0aCB0aGUKPiA+IG9y ZGVyIHRoYXQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSBhbmQKPiA+IGRybV9kcF9h dG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgYXJlIGNhbGxlZCBpbiBpbiBvcmRlciB0byBlbnN1 cmUKPiA+IGlkZW1wb3RlbmN5LiBDdXJyZW50bHkgdGhlIG9ubHkgZHJpdmVyIGFjdHVhbGx5IHVz aW5nIHRoZXNlIGhlbHBlcnMsCj4gPiBpOTE1LCBkb2Vzbid0IGV2ZW4gZG8gdGhpcyBjb3JyZWN0 bHk6IG11bHRpcGxlIC0+YmVzdF9lbmNvZGVyKCkgY2hlY2tzCj4gPiB3aXRoIGk5MTUncyBjdXJy ZW50IGltcGxlbWVudGF0aW9uIHdvdWxkIG5vdCBiZSBpZGVtcG90ZW50IGFuZCB3b3VsZAo+ID4g b3Zlci1hbGxvY2F0ZSBWQ1BJIHNsb3RzLCBzb21ldGhpbmcgSSBsZWFybmVkIHRyeWluZyB0byBp bXBsZW1lbnQKPiA+IGZhbGxiYWNrIHJldHJhaW5pbmcgaW4gTVNULgo+ID4gCj4gPiBTbzogc2lt cGxpZnkgdGhpcyB3aG9sZSBtZXNzLCBhbmQgdGVhY2ggZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoKQo+ID4gYW5kIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgdG8gdHJh Y2sgdGhlIFZDUEkgYWxsb2NhdGlvbnMgZm9yCj4gPiBlYWNoIHBvcnQuIFRoaXMgYWxsb3dzIHVz IHRvIGVuc3VyZSBpZGVtcG90ZW5jeSB3aXRob3V0IGhhdmluZyB0byByZWx5Cj4gPiBvbiB0aGUg ZHJpdmVyIGFzIG11Y2guIEFkZGl0aW9uYWxseTogdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQgdG8g ZG8gYW55Cj4gPiBraW5kIG9mIFZDUEkgc2xvdCB0cmFja2luZyBhbnltb3JlIGlmIGl0IGRvZXNu J3QgbmVlZCBpdCBmb3IgaXQncyBvd24KPiA+IGludGVybmFsIHN0YXRlLgo+ID4gCj4gPiBBZGRp dGlvbmFsbHk7IHRoaXMgYWRkcyBhIG5ldyBkcm1fZHBfbXN0X2F0b21pY19jaGVjaygpIGhlbHBl ciB3aGljaAo+ID4gbXVzdCBiZSB1c2VkIGJ5IGF0b21pYyBkcml2ZXJzIHRvIHBlcmZvcm0gdmFs aWRpdHkgY2hlY2tzIGZvciB0aGUgbmV3Cj4gPiBWQ1BJIGFsbG9jYXRpb25zIGluY3VycmVkIGJ5 IGEgc3RhdGUuCj4gPiAKPiA+IEFsc286IHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbWFr ZSBpdCBtb3JlIG9idmlvdXMgdGhhdCB0aGVzZQo+ID4gL211c3QvIGJlIGNhbGxlZCBieSAvYWxs LyBhdG9taWMgZHJpdmVycyBzdXBwb3J0aW5nIE1TVC4KPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2 MToKPiA+ICAtIERvbid0IHVzZSB0aGUgbm93LXJlbW92ZWQgLT5hdG9taWNfY2hlY2soKSBmb3Ig cHJpdmF0ZSBvYmplY3RzIGhvb2ssCj4gPiAgICBqdXN0IGdpdmUgZHJpdmVycyBhIGZ1bmN0aW9u IHRvIGNhbGwgdGhlbXNlbHZlcwo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVsIDxs eXVkZUByZWRoYXQuY29tPgo+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3 bGwuY2g+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5j IHwgMTkwICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICB8ICAgOCArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwX21zdC5jICAgfCAgMzEgKysrLS0KPiA+ICBpbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hl bHBlci5oICAgICAgIHwgIDExICstCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9u cygrKSwgNDggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2RwX21zdF90b3BvbG9neS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9w b2xvZ3kuYwo+ID4gaW5kZXggOGMzY2ZhYzQzN2Y0Li5kY2ZhYjc1MzY5MTQgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiBAQCAtMjYxNCwyMSArMjYxNCwz MyBAQCBzdGF0aWMgaW50IGRybV9kcF9pbml0X3ZjcGkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCj4gPiAgfQo+ID4gIAo+ID4gIC8qKgo+ID4gLSAqIGRybV9kcF9hdG9taWNf ZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgdmNwaSBzbG90cyB0byB0aGUgc3RhdGUK PiA+ICsgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQgYWRkIFZD UEkgc2xvdHMgdG8gdGhlIHN0YXRlCj4gPiAgICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRl Cj4gPiAgICogQG1ncjogTVNUIHRvcG9sb2d5IG1hbmFnZXIgZm9yIHRoZSBwb3J0Cj4gPiAgICog QHBvcnQ6IHBvcnQgdG8gZmluZCB2Y3BpIHNsb3RzIGZvcgo+ID4gICAqIEBwYm46IGJhbmR3aWR0 aCByZXF1aXJlZCBmb3IgdGhlIG1vZGUgaW4gUEJOCj4gPiAgICoKPiA+ICsgKiBBbGxvY2F0ZXMg VkNQSSBzbG90cyB0byBAcG9ydCwgcmVwbGFjaW5nIGFueSBwcmV2aW91cyBWQ1BJIGFsbG9jYXRp b25zIGl0Cj4gPiArICogbWF5IGhhdmUgaGFkLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3Vw cG9ydCBNU1QgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24KPiA+ICsgKiBpbiB0aGVpciBhdG9taWNf Y2hlY2soKSBoYW5kbGVycyB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgVkNQSSBhbGxvY2F0aW9uIGZv cgo+IAo+IE1heWJlIGRvIGEgbmljZSBrZXJuZWxkb2MgcmVmZXJlbmNlIHRvIHRoZSByaWdodCBh dG9taWNfY2hlY2sgaGVyZS4KPiAKPiA+ICsgKiB0aGUgbmV3IHN0YXRlLiBBZnRlciB0aGUgLT5h dG9taWNfY2hlY2soKSBob29rcyBvZiB0aGUgZHJpdmVyIGFuZCBhbGwgb3RoZXIKPiAKPiBUaGlz IHdpbGwgdXBzZXQgdGhlIGtlcm5lbGRvYyBwYXJzZXIgSSB0aGluay4KPiAKPiA+ICsgKiBtb2Rl IG9iamVjdHMgaW4gdGhlIHN0YXRlIGhhdmUgYmVlbiBjYWxsZWQsIERSTSB3aWxsIGNoZWNrIHRo ZSBmaW5hbCBWQ1BJCj4gPiArICogYWxsb2NhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhleSB3aWxs IGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgYmFuZHdpZHRoIG9uCj4gPiArICogdGhlIHRvcG9sb2d5 Lgo+ID4gKyAqCj4gPiArICogU2VlIGFsc286IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Ns b3RzKCkKPiAKPiBBbHNvIG5lZWQgdG8gcmVmZXJlbmNlIGRybV9kcF9tc3RfYXRvbWljX2NoZWNr KCkgaGVyZSBhbmQgdGhhdCBkcml2ZXJzCj4gbXVzdCBjYWxsIGl0IG9yIG5vdGhpbmcgaGFwcGVu cy4KPiA+ICsgKgo+ID4gICAqIFJFVFVSTlM6Cj4gPiAtICogVG90YWwgc2xvdHMgaW4gdGhlIGF0 b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0IG9yIGVycm9yCj4gPiArICogVG90YWwg c2xvdHMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0LCBvciBhIG5l Z2F0aXZlIGVycm9yCj4gPiArICogY29kZSBpZiB0aGUgcG9ydCBubyBsb25nZXIgZXhpc3RzCj4g PiAgICovCj4gPiAgaW50IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9tZ3IgKm1nciwKPiA+ICAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQg cGJuKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKnRvcG9s b2d5X3N0YXRlOwo+ID4gLQlpbnQgcmVxX3Nsb3RzOwo+ID4gKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlf YWxsb2NhdGlvbiAqcG9zLCAqdmNwaSA9IE5VTEw7Cj4gPiArCWludCBwcmV2X3Nsb3RzLCByZXFf c2xvdHMsIHJldDsKPiA+ICAKPiA+ICAJdG9wb2xvZ3lfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9t c3RfdG9wb2xvZ3lfc3RhdGUoc3RhdGUsIG1ncik7Cj4gPiAgCWlmIChJU19FUlIodG9wb2xvZ3lf c3RhdGUpKQo+ID4gQEAgLTI2MzcsMjAgKzI2NDksNDEgQEAgaW50IGRybV9kcF9hdG9taWNfZmlu ZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAJcG9ydCA9 IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgcG9ydCk7Cj4gPiAgCWlmIChwb3J0 ID09IE5VTEwpCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0JcmVxX3Nsb3RzID0gRElWX1JP VU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KTsKPiA+IC0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90 cyByZXE9JWQsIGF2YWlsPSVkXG4iLAo+ID4gLQkJCXJlcV9zbG90cywgdG9wb2xvZ3lfc3RhdGUt PmF2YWlsX3Nsb3RzKTsKPiA+ICAKPiA+IC0JaWYgKHJlcV9zbG90cyA+IHRvcG9sb2d5X3N0YXRl LT5hdmFpbF9zbG90cykgewo+ID4gLQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ID4gLQkJcmV0 dXJuIC1FTk9TUEM7Cj4gPiArCS8qIEZpbmQgdGhlIGN1cnJlbnQgYWxsb2NhdGlvbiBmb3IgdGhp cyBwb3J0LCBpZiBhbnkgKi8KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZ0b3BvbG9n eV9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKPiA+ICsJCWlmIChwb3MtPnBvcnQgPT0gcG9ydCkgewo+ ID4gKwkJCXZjcGkgPSBwb3M7Cj4gPiArCQkJcHJldl9zbG90cyA9IHZjcGktPnZjcGk7Cj4gPiAr CQkJYnJlYWs7Cj4gPiArCQl9Cj4gPiAgCX0KPiA+ICsJaWYgKCF2Y3BpKQo+ID4gKwkJcHJldl9z bG90cyA9IDA7Cj4gCj4gRm9yIHJvYnVzdG5lc3Mgc2hvdWxkIHdlIHdhcm4gaGVyZSwgc2luY2Ug ZHJpdmVycyBmb3JnZXR0aW5nIHRvIHJlbGVhc2UKPiB2Y3BpIHNsb3RzIGlzIGtpbmRhIGEgYnVn PyBPciBkbyB3ZSBuZWVkIHRvIGhhdmUgdGhpcyB0byBtYWtlIGxpZmUgZWFzaWVyCj4gZm9yIGRy aXZlciB3cml0ZXJzPwo+IAo+ID4gKwo+ID4gKwlyZXFfc2xvdHMgPSBESVZfUk9VTkRfVVAocGJu LCBtZ3ItPnBibl9kaXYpOwo+ID4gKwo+ID4gKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVk OiVzXSBbTVNUIFBPUlQ6JXBdIHZjcGkgJWQgLT4gJWRcbiIsCj4gPiArCQkgICAgICBwb3J0LT5j b25uZWN0b3ItPmJhc2UuaWQsIHBvcnQtPmNvbm5lY3Rvci0+bmFtZSwgcG9ydCwKPiA+ICsJCSAg ICAgIHByZXZfc2xvdHMsIHJlcV9zbG90cyk7Cj4gPiArCj4gPiArCS8qIEFkZCB0aGUgbmV3IGFs bG9jYXRpb24gdG8gdGhlIHN0YXRlICovCj4gPiArCWlmICghdmNwaSkgewo+ID4gKwkJdmNwaSA9 IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwgR0ZQX0tFUk5FTCk7Cj4gPiArCQlpZiAoIXZjcGkpIHsK PiA+ICsJCQlyZXQgPSAtRU5PTUVNOwo+ID4gKwkJCWdvdG8gb3V0Owo+ID4gKwkJfQo+ID4gIAo+ ID4gLQl0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgLT0gcmVxX3Nsb3RzOwo+ID4gLQlEUk1f REVCVUdfS01TKCJ2Y3BpIHNsb3RzIGF2YWlsPSVkIiwgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Ns b3RzKTsKPiA+ICsJCXZjcGktPnBvcnQgPSBwb3J0Owo+ID4gKwkJbGlzdF9hZGQoJnZjcGktPm5l eHQsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMpOwo+ID4gKwl9Cj4gPiArCXZjcGktPnZjcGkgPSBy ZXFfc2xvdHM7Cj4gPiAgCj4gPiArCXJldCA9IHJlcV9zbG90czsKPiA+ICtvdXQ6Cj4gPiAgCWRy bV9kcF9wdXRfcG9ydChwb3J0KTsKPiA+IC0JcmV0dXJuIHJlcV9zbG90czsKPiA+ICsJcmV0dXJu IHJldDsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9z bG90cyk7Cj4gPiAgCj4gPiBAQCAtMjY1OCwzMiArMjY5MSw0NiBAQCBFWFBPUlRfU1lNQk9MKGRy bV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKPiA+ICAgKiBkcm1fZHBfYXRvbWljX3JlbGVh c2VfdmNwaV9zbG90cygpIC0gUmVsZWFzZSBhbGxvY2F0ZWQgdmNwaSBzbG90cwo+ID4gICAqIEBz dGF0ZTogZ2xvYmFsIGF0b21pYyBzdGF0ZQo+ID4gICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5h Z2VyIGZvciB0aGUgcG9ydAo+ID4gLSAqIEBzbG90czogbnVtYmVyIG9mIHZjcGkgc2xvdHMgdG8g cmVsZWFzZQo+ID4gKyAqCj4gPiArICogUmVsZWFzZXMgYW55IFZDUEkgc2xvdHMgdGhhdCBoYXZl IGJlZW4gYWxsb2NhdGVkIHRvIGEgcG9ydCBpbiB0aGUgYXRvbWljCj4gPiArICogc3RhdGUuIEFu eSBhdG9taWMgZHJpdmVycyB3aGljaCBzdXBwb3J0IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlv biBpbgo+ID4gKyAqIHRoZWlyIGNvbm5lY3RvcidzIGF0b21pY19jaGVjaygpIGhhbmRsZXIgd2hl biB0aGUgY29ubmVjdG9yIHdpbGwgbm8gbG9uZ2VyCj4gPiArICogaGF2ZSBWQ1BJIGFsbG9jYXRl ZCAoZS5nLiBiZWNhdXNlIGl0J3MgQ1JUQyB3YXMgcmVtb3ZlZCkuCj4gPiArICoKPiA+ICsgKiBJ dCBpcyBPSyB0byBjYWxsIHRoaXMgZXZlbiBpZiBAcG9ydCBoYXMgYmVlbiByZW1vdmVkIGZyb20g dGhlIHN5c3RlbSwgaW4KPiA+ICsgKiB3aGljaCBjYXNlIGl0IHdpbGwganVzdCBhbW91bnQgdG8g YSBuby1vcC4KPiA+ICsgKgo+ID4gKyAqIFNlZSBhbHNvOiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNw aV9zbG90cygpCj4gCj4gU2FtZSBjb21tZW50cyBhcyB3aXRoIHRoZSBfZmluZF92Y3BpX3Nsb3Rz KCkgZnVuY3Rpb24uCj4gCj4gPiAgICoKPiA+ICAgKiBSRVRVUk5TOgo+ID4gLSAqIDAgaWYgQHNs b3RzIHdlcmUgYWRkZWQgYmFjayB0byAmZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZS0+YXZhaWxf c2xvdHMgb3IKPiA+IC0gKiBuZWdhdGl2ZSBlcnJvciBjb2RlCj4gPiArICogMCBpZiBhbGwgc2xv dHMgZm9yIHRoaXMgcG9ydCB3ZXJlIGFkZGVkIGJhY2sgdG8KPiA+ICsgKiAmZHJtX2RwX21zdF90 b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQo+ID4gICAq Lwo+ID4gIGludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCQkJCSAgICAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCj4gPiAtCQkJCSAgICAgaW50IHNsb3RzKQo+ID4gKwkJCQkgICAgIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fZHBfdmNwaV9h bGxvY2F0aW9uICp0bXAsICpwb3M7Cj4gPiAgCj4gPiAgCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0 b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlKHN0YXRlLCBtZ3IpOwo+ID4gIAlpZiAoSVNfRVJS KHRvcG9sb2d5X3N0YXRlKSkKPiA+ICAJCXJldHVybiBQVFJfRVJSKHRvcG9sb2d5X3N0YXRlKTsK PiA+ICAKPiA+IC0JLyogV2UgY2Fubm90IHJlbHkgb24gcG9ydC0+dmNwaS5udW1fc2xvdHMgdG8g dXBkYXRlCj4gPiAtCSAqIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyBhcyB0aGUgcG9ydCBt YXkgbm90IGV4aXN0IGlmIHRoZSBwYXJlbnQKPiA+IC0JICogYnJhbmNoIGRldmljZSB3YXMgdW5w bHVnZ2VkLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBieSB0cmFja2luZwo+ID4gLQkgKiBwZXItcG9y dCBzbG90IGFsbG9jYXRpb24gaW4gZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSBpbnN0ZWFkIG9m Cj4gPiAtCSAqIGRlcGVuZGluZyBvbiB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xv dHMgdG8gcmVsZWFzZS4KPiA+IC0JICovCj4gPiAtCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90 cyArPSBzbG90czsKPiA+IC0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZWxlYXNlZD0lZCwg YXZhaWw9JWRcbiIsCj4gPiAtCQkJc2xvdHMsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7 Cj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJnRvcG9sb2d5X3N0YXRl LT52Y3BpcywgbmV4dCkgewo+ID4gKwkJaWYgKHBvcy0+cG9ydCA9PSBwb3J0KSB7Cj4gPiArCQkJ bGlzdF9kZWwoJnBvcy0+bmV4dCk7Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygiW01TVCBQT1JUOiVw XSB2Y3BpICVkIC0+IDBcbiIsCj4gPiArCQkJCSAgICAgIHBvcnQsIHBvcy0+dmNwaSk7Cj4gPiAg Cj4gPiArCQkJa2ZyZWUocG9zKTsKPiA+ICsJCQlyZXR1cm4gMDsKPiA+ICsJCX0KPiA+ICsJfQo+ ID4gKwo+ID4gKwkvKiBJZiBubyBhbGxvY2F0aW9uIHdhcyBmb3VuZCwgYWxsIHRoYXQgbWVhbnMg aXMgdGhhdCB0aGUgcG9ydCB3YXMKPiA+ICsJICogZGVzdHJveWVkIHNpbmNlIHRoZSBsYXN0IGF0 b21pYyBjb21taXQuIFRoYXQncyBPSyEKPiA+ICsJICovCj4gPiAgCXJldHVybiAwOwo+ID4gIH0K PiA+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKTsKPiA+ IEBAIC0zMTEyLDE1ICszMTU5LDUwIEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nvbm5l Y3Rvcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ICBzdGF0aWMgc3RydWN0IGRy bV9wcml2YXRlX3N0YXRlICoKPiA+ICBkcm1fZHBfbXN0X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3Qg ZHJtX3ByaXZhdGVfb2JqICpvYmopCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2RwX21zdF90b3Bv bG9neV9zdGF0ZSAqc3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRl ICpzdGF0ZSwgKm9sZF9zdGF0ZSA9Cj4gPiArCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUob2Jq LT5zdGF0ZSk7Cj4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gb2xk X3N0YXRlLT5tZ3I7Cj4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Cj4gPiArCXN0 cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3MsICp2Y3BpOwo+ID4gIAo+ID4gLQlzdGF0 ZSA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+ID4g KwlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+ID4gIAlpZiAo IXN0YXRlKQo+ID4gIAkJcmV0dXJuIE5VTEw7Cj4gPiAgCj4gPiAgCV9fZHJtX2F0b21pY19oZWxw ZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0YXRlLT5iYXNlKTsKPiA+ICAK PiA+ICsJc3RhdGUtPm1nciA9IG1ncjsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnN0YXRlLT52Y3Bp cyk7Cj4gPiArCj4gPiArCS8qIENvcHkgb3ZlciB0aGUgVkNQSSBhbGxvY2F0aW9ucyBmb3IgcG9y dHMgdGhhdCBzdGlsbCBleGlzdCAqLwo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJm9s ZF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKPiA+ICsJCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRl ZF9wb3J0X3JlZihtZ3IsIHBvcy0+cG9ydCk7Cj4gPiArCQlpZiAoIXBvcnQpIHsKPiA+ICsJCQlE Uk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIGlzIGdvbmUsIHZjcGkgJWQgLT4gMFxuIiwK PiA+ICsJCQkJCSBwb3MtPnBvcnQsIHBvcy0+dmNwaSk7Cj4gPiArCQkJY29udGludWU7Cj4gPiAr CQl9Cj4gCj4gSG0sIGluIGdlbmVyYWwgd2UgaGF2ZSAwIHZhbGlkYXRpb24gaW4gdGhlIGR1cGxp Y2F0ZV9zdGF0ZSBmdW5jdGlvbnMsIEp1c3QKPiBkdW1wIGNvcHlpbmcsIHdpdGggbWluaW1hbCBw b2ludGVyL3JlZmNvdW50IHVwZGF0ZXMuCj4gPiArCj4gPiArCQl2Y3BpID0ga3phbGxvYyhzaXpl b2YoKnZjcGkpLCBHRlBfS0VSTkVMKTsKPiAKPiBrbWVtZHVtcCArIHVwZGF0aW5nIHRoZSBsaXN0 LiBKdXN0IGluIGNhc2Ugd2UgZXZlciBhZGQgbW9yZSBzdHVmZiBoZXJlLgo+IFByb2JhYmx5IG5l ZWRzIGFuIGV4cGxpY2l0IG1lbXNldCB0byBhdm9pZCBsaXN0IGRlYnVnZ2luZy4KPiAKPiBBdCBs ZWFzdCB0aGF0J3MgdGhlIHN0eWxlIHdlIHVzZSBldmVyeXdoZXJlIGVsc2UuCj4gCj4gPiArCQlp ZiAoIXZjcGkpIHsKPiA+ICsJCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gPiArCQkJZ290byBm YWlsX2FsbG9jOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJdmNwaS0+cG9ydCA9IHBvcnQ7Cj4gPiAr CQl2Y3BpLT52Y3BpID0gcG9zLT52Y3BpOwo+ID4gKwkJbGlzdF9hZGQoJnZjcGktPm5leHQsICZz dGF0ZS0+dmNwaXMpOwo+ID4gKwkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ID4gKwl9Cj4gPiAr Cj4gPiAgCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4gPiArCj4gPiArZmFpbF9hbGxvYzoKPiA+ICsJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgdmNwaSwgJnN0YXRlLT52Y3BpcywgbmV4dCkK PiA+ICsJCWtmcmVlKHBvcyk7Cj4gPiArCWtmcmVlKHN0YXRlKTsKPiA+ICsKPiA+ICsJcmV0dXJu IE5VTEw7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfZGVzdHJveV9z dGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCj4gPiBAQCAtMzEyOCwxNCArMzIxMCw2 MCBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2 YXRlX29iaiAqb2JqLAo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3Rh dGUgKm1zdF9zdGF0ZSA9Cj4gPiAgCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUoc3RhdGUpOwo+ ID4gKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9zLCAqdG1wOwo+ID4gKwo+IFdB Uk5fT04oIWxpc3RfZW1wdHkoKSk7Cj4gCj4gSSB0aGluayB0aGlzIG5vdCBiZWluZyBlbXB0eSBv biBtZ3IgdGVhcmRvd24gd291bGQgYmUgYSBkcml2ZXIgYnVnLiBBbGwKPiB0aGUgcG9ydHMvYnJh bmNoIGRldmljZXMgc2hvdWxkIGJlIGdvbmUgYnkgbm93LCBhbmQgYWxzbyBhbGwgdGhlIG1vZGVz ZXQKPiBzdGF0ZSBzaG91bGQgaGF2ZSBiZWVuIHRvcm4gZG93biwgdXNpbmcgZHJtX2F0b21pY19o ZWxwZXJfc2h1dGRvd24oKSBvcgo+IGZyaWVuZHMuCgpMeXVkZSBwb2ludGVkIG91dCBvbiBpcmMg dGhhdCBJIHdhcyBub3QgeWV0IHN1ZmZpY2llbnRseSBjb2ZmZWUnZCB1cCB3aGVuCm1ha2luZyB0 aGlzIGNvbW1lbnQ6IFRoZSBkZXN0cm95X3N0YXRlIGNhbGxiYWNrIG5lZWRzIHRvIGNsZWFuIHVw IHdpdGhvdXQKY29tcGxhaW5pbmcgb2ZjISBJIG1peGVkIGl0IHVwIHNvbWVob3cgd2l0aCBkcm1f bW9kZV9jb25maWdfY2xlYW51cCwKd2hlcmUgdGhlIFdBUk5fT04gd291bGQgaGF2ZSBiZWVuIGEg Z29vZCBpZGVhLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL25vdXZlYXUK