From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/6] drm/dp_mst: Start tracking per-port VCPI allocations Date: Wed, 24 Oct 2018 10:55:21 +0200 Message-ID: <20181024085521.GJ324@phenom.ffwll.local> References: <20181023231251.16883-1-lyude@redhat.com> <20181023231251.16883-5-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181023231251.16883-5-lyude-H+wXaHxf7aLQT0dZR+AlfA@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: nouveau.vger.kernel.org T24gVHVlLCBPY3QgMjMsIDIwMTggYXQgMDc6MTI6NDlQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBUaGVyZSBoYXMgYmVlbiBhIFRPRE8gd2FpdGluZyBmb3IgcXVpdGUgYSBsb25nIHRpbWUg aW4KPiBkcm1fZHBfbXN0X3RvcG9sb2d5LmM6Cj4gCj4gCS8qIFdlIGNhbm5vdCByZWx5IG9uIHBv cnQtPnZjcGkubnVtX3Nsb3RzIHRvIHVwZGF0ZQo+IAkgKiB0b3BvbG9neV9zdGF0ZS0+YXZhaWxf c2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZiB0aGUgcGFyZW50Cj4gCSAqIGJyYW5j aCBkZXZpY2Ugd2FzIHVucGx1Z2dlZC4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYnkgdHJhY2tpbmcK PiAJICogcGVyLXBvcnQgc2xvdCBhbGxvY2F0aW9uIGluIGRybV9kcF9tc3RfdG9wb2xvZ3lfc3Rh dGUgaW5zdGVhZCBvZgo+IAkgKiBkZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0ZWxsIHVzIGhv dyBtYW55IHNsb3RzIHRvIHJlbGVhc2UuCj4gCSAqLwo+IAo+IFRoYXQncyBub3QgdGhlIG9ubHkg cmVhc29uIHdlIHNob3VsZCBmaXggdGhpczogZm9yY2luZyB0aGUgZHJpdmVyIHRvCj4gdHJhY2sg dGhlIFZDUEkgYWxsb2NhdGlvbnMgdGhyb3VnaG91dCBhIHN0YXRlJ3MgYXRvbWljIGNoZWNrIGlz Cj4gZXJyb3IgcHJvbmUsIGJlY2F1c2UgaXQgbWVhbnMgdGhhdCBleHRyYSBjYXJlIGhhcyB0byBi ZSB0YWtlbiB3aXRoIHRoZQo+IG9yZGVyIHRoYXQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xv dHMoKSBhbmQKPiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIGFyZSBjYWxsZWQg aW4gaW4gb3JkZXIgdG8gZW5zdXJlCj4gaWRlbXBvdGVuY3kuIEN1cnJlbnRseSB0aGUgb25seSBk cml2ZXIgYWN0dWFsbHkgdXNpbmcgdGhlc2UgaGVscGVycywKPiBpOTE1LCBkb2Vzbid0IGV2ZW4g ZG8gdGhpcyBjb3JyZWN0bHk6IG11bHRpcGxlIC0+YmVzdF9lbmNvZGVyKCkgY2hlY2tzCj4gd2l0 aCBpOTE1J3MgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBub3QgYmUgaWRlbXBvdGVudCBh bmQgd291bGQKPiBvdmVyLWFsbG9jYXRlIFZDUEkgc2xvdHMsIHNvbWV0aGluZyBJIGxlYXJuZWQg dHJ5aW5nIHRvIGltcGxlbWVudAo+IGZhbGxiYWNrIHJldHJhaW5pbmcgaW4gTVNULgo+IAo+IFNv OiBzaW1wbGlmeSB0aGlzIHdob2xlIG1lc3MsIGFuZCB0ZWFjaCBkcm1fZHBfYXRvbWljX2ZpbmRf dmNwaV9zbG90cygpCj4gYW5kIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgdG8g dHJhY2sgdGhlIFZDUEkgYWxsb2NhdGlvbnMgZm9yCj4gZWFjaCBwb3J0LiBUaGlzIGFsbG93cyB1 cyB0byBlbnN1cmUgaWRlbXBvdGVuY3kgd2l0aG91dCBoYXZpbmcgdG8gcmVseQo+IG9uIHRoZSBk cml2ZXIgYXMgbXVjaC4gQWRkaXRpb25hbGx5OiB0aGUgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0byBk byBhbnkKPiBraW5kIG9mIFZDUEkgc2xvdCB0cmFja2luZyBhbnltb3JlIGlmIGl0IGRvZXNuJ3Qg bmVlZCBpdCBmb3IgaXQncyBvd24KPiBpbnRlcm5hbCBzdGF0ZS4KPiAKPiBBZGRpdGlvbmFsbHk7 IHRoaXMgbW92ZXMgdGhlIGNvZGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRoZQo+IFZD UEkgYWxsb2NhdGlvbnMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhcmUgdmFsaWQgaW50byB0aGUgbmV3 Cj4gLT5hdG9taWNfY2hlY2soKSBob29rIGZvciBwcml2YXRlIG9iamVjdHMsIHNvIHdlIGNhbiBl bnN1cmUgdGhhdCB3ZSBvbmx5Cj4gY2hlY2sgdGhlIGZpbmFsIFZDUEkgYWxsb2NhdGlvbiB0aGF0 IHdvdWxkIGJlIGluY3VycmVkIGJ5IHRoZSBuZXcgc3RhdGUKPiBhbmQgbm90IHRoZSBtaWQtY2hl Y2sgVkNQSSBhbGxvY2F0aW9ucy4gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGZhaWxpbmcKPiBjaGVj a3Mgd2hpY2ggZW5kIHVwIGFsbG9jYXRpbmcgVkNQSSBzbG90cyB0byBwb3J0cyBiZWZvcmUgZnJl ZWluZyBhbnkgb2YKPiB0aGUgVkNQSSBzbG90cyBhbGxvY2F0ZWQgYnkgcG9ydHMgd2hpY2ggYXJl IGFib3V0IHRvIGJlIGRpc2FibGVkLgo+IAo+IEFsc286IHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlv biBhbmQgbWFrZSBpdCBtb3JlIG9idmlvdXMgdGhhdCB0aGVzZQo+IC9tdXN0LyBiZSBjYWxsZWQg YnkgL2FsbC8gYXRvbWljIGRyaXZlcnMgc3VwcG9ydGluZyBNU1QuCj4gCj4gU2lnbmVkLW9mZi1i eTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KCmxndG0sIGJ1dCBJJ2xsIHdhaXQgd2l0aCBkZXRhaWxlZCBy ZXZpZXcgdW50aWwgd2UgaGF2ZSB0aGUgIndoZXJlIHNob3VsZAp3ZSBhdG9taWNfY2hlY2sgdGhp cyIgcXVlc3Rpb24gc29ydGVkIG91dC4KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2RybV9kcF9tc3RfdG9wb2xvZ3kuYyB8IDE3MiArKysrKysrKysrKysrKysrKysrKystLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyAgIHwgIDMxICsrLS0tCj4gIGlu Y2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgfCAgMTAgKy0KPiAgMyBmaWxlcyBj aGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gaW5kZXggOGMzY2ZhYzQzN2Y0Li5hZGI0Mjk4NTcw Y2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiBAQCAtMjYxNCwy MSArMjYxNCwzMyBAQCBzdGF0aWMgaW50IGRybV9kcF9pbml0X3ZjcGkoc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gIH0KPiAgCj4gIC8qKgo+IC0gKiBkcm1fZHBfYXRvbWlj X2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQgYWRkIHZjcGkgc2xvdHMgdG8gdGhlIHN0YXRl Cj4gKyAqIGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkgLSBGaW5kIGFuZCBhZGQgVkNQ SSBzbG90cyB0byB0aGUgc3RhdGUKPiAgICogQHN0YXRlOiBnbG9iYWwgYXRvbWljIHN0YXRlCj4g ICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5hZ2VyIGZvciB0aGUgcG9ydAo+ICAgKiBAcG9ydDog cG9ydCB0byBmaW5kIHZjcGkgc2xvdHMgZm9yCj4gICAqIEBwYm46IGJhbmR3aWR0aCByZXF1aXJl ZCBmb3IgdGhlIG1vZGUgaW4gUEJOCj4gICAqCj4gKyAqIEFsbG9jYXRlcyBWQ1BJIHNsb3RzIHRv IEBwb3J0LCByZXBsYWNpbmcgYW55IHByZXZpb3VzIFZDUEkgYWxsb2NhdGlvbnMgaXQKPiArICog bWF5IGhhdmUgaGFkLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3VwcG9ydCBNU1QgbXVzdCBj YWxsIHRoaXMgZnVuY3Rpb24KPiArICogaW4gdGhlaXIgYXRvbWljX2NoZWNrKCkgaGFuZGxlcnMg dG8gY2hhbmdlIHRoZSBjdXJyZW50IFZDUEkgYWxsb2NhdGlvbiBmb3IKPiArICogdGhlIG5ldyBz dGF0ZS4gQWZ0ZXIgdGhlIC0+YXRvbWljX2NoZWNrKCkgaG9va3Mgb2YgdGhlIGRyaXZlciBhbmQg YWxsIG90aGVyCj4gKyAqIG1vZGUgb2JqZWN0cyBpbiB0aGUgc3RhdGUgaGF2ZSBiZWVuIGNhbGxl ZCwgRFJNIHdpbGwgY2hlY2sgdGhlIGZpbmFsIFZDUEkKPiArICogYWxsb2NhdGlvbnMgdG8gZW5z dXJlIHRoYXQgdGhleSB3aWxsIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgYmFuZHdpZHRoIG9uCj4g KyAqIHRoZSB0b3BvbG9neS4KPiArICoKPiArICogU2VlIGFsc286IGRybV9kcF9hdG9taWNfcmVs ZWFzZV92Y3BpX3Nsb3RzKCkKPiArICoKPiAgICogUkVUVVJOUzoKPiAtICogVG90YWwgc2xvdHMg aW4gdGhlIGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBmb3IgdGhpcyBwb3J0IG9yIGVycm9yCj4gKyAq IFRvdGFsIHNsb3RzIGluIHRoZSBhdG9taWMgc3RhdGUgYXNzaWduZWQgZm9yIHRoaXMgcG9ydCwg b3IgYSBuZWdhdGl2ZSBlcnJvcgo+ICsgKiBjb2RlIGlmIHRoZSBwb3J0IG5vIGxvbmdlciBleGlz dHMKPiAgICovCj4gIGludCBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCQkgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X21nciAqbWdyLAo+ICAJCQkJICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgcGJu KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3Rh dGU7Cj4gLQlpbnQgcmVxX3Nsb3RzOwo+ICsJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24g KnBvcywgKnZjcGkgPSBOVUxMOwo+ICsJaW50IHByZXZfc2xvdHMsIHJlcV9zbG90cywgcmV0Owo+ ICAKPiAgCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRl KHN0YXRlLCBtZ3IpOwo+ICAJaWYgKElTX0VSUih0b3BvbG9neV9zdGF0ZSkpCj4gQEAgLTI2Mzcs MjAgKzI2NDksNDEgQEAgaW50IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9w b3J0X3JlZihtZ3IsIHBvcnQpOwo+ICAJaWYgKHBvcnQgPT0gTlVMTCkKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCXJlcV9zbG90cyA9IERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2Rpdik7Cj4g LQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIHJlcT0lZCwgYXZhaWw9JWRcbiIsCj4gLQkJCXJl cV9zbG90cywgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKPiAgCj4gLQlpZiAocmVxX3Ns b3RzID4gdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKSB7Cj4gLQkJZHJtX2RwX3B1dF9wb3J0 KHBvcnQpOwo+IC0JCXJldHVybiAtRU5PU1BDOwo+ICsJLyogRmluZCB0aGUgY3VycmVudCBhbGxv Y2F0aW9uIGZvciB0aGlzIHBvcnQsIGlmIGFueSAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShw b3MsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKPiArCQlpZiAocG9zLT5wb3J0ID09 IHBvcnQpIHsKPiArCQkJdmNwaSA9IHBvczsKPiArCQkJcHJldl9zbG90cyA9IHZjcGktPnZjcGk7 Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiAgCX0KPiArCWlmICghdmNwaSkKPiArCQlwcmV2X3Nsb3Rz ID0gMDsKPiAgCj4gLQl0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgLT0gcmVxX3Nsb3RzOwo+ IC0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyBhdmFpbD0lZCIsIHRvcG9sb2d5X3N0YXRlLT5h dmFpbF9zbG90cyk7Cj4gKwlyZXFfc2xvdHMgPSBESVZfUk9VTkRfVVAocGJuLCBtZ3ItPnBibl9k aXYpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdIFtNU1QgUE9SVDol cF0gdmNwaSAlZCAtPiAlZFxuIiwKPiArCQkgICAgICBwb3J0LT5jb25uZWN0b3ItPmJhc2UuaWQs IHBvcnQtPmNvbm5lY3Rvci0+bmFtZSwgcG9ydCwKPiArCQkgICAgICBwcmV2X3Nsb3RzLCByZXFf c2xvdHMpOwo+ICAKPiArCS8qIEFkZCB0aGUgbmV3IGFsbG9jYXRpb24gdG8gdGhlIHN0YXRlICov Cj4gKwlpZiAoIXZjcGkpIHsKPiArCQl2Y3BpID0ga3phbGxvYyhzaXplb2YoKnZjcGkpLCBHRlBf S0VSTkVMKTsKPiArCQlpZiAoIXZjcGkpIHsKPiArCQkJcmV0ID0gLUVOT01FTTsKPiArCQkJZ290 byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQl2Y3BpLT5wb3J0ID0gcG9ydDsKPiArCQlsaXN0X2FkZCgm dmNwaS0+bmV4dCwgJnRvcG9sb2d5X3N0YXRlLT52Y3Bpcyk7Cj4gKwl9Cj4gKwl2Y3BpLT52Y3Bp ID0gcmVxX3Nsb3RzOwo+ICsKPiArCXJldCA9IHJlcV9zbG90czsKPiArb3V0Ogo+ICAJZHJtX2Rw X3B1dF9wb3J0KHBvcnQpOwo+IC0JcmV0dXJuIHJlcV9zbG90czsKPiArCXJldHVybiByZXQ7Cj4g IH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyk7Cj4gIAo+ IEBAIC0yNjU4LDMyICsyNjkxLDQ2IEBAIEVYUE9SVF9TWU1CT0woZHJtX2RwX2F0b21pY19maW5k X3ZjcGlfc2xvdHMpOwo+ICAgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIC0g UmVsZWFzZSBhbGxvY2F0ZWQgdmNwaSBzbG90cwo+ICAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMg c3RhdGUKPiAgICogQG1ncjogTVNUIHRvcG9sb2d5IG1hbmFnZXIgZm9yIHRoZSBwb3J0Cj4gLSAq IEBzbG90czogbnVtYmVyIG9mIHZjcGkgc2xvdHMgdG8gcmVsZWFzZQo+ICsgKgo+ICsgKiBSZWxl YXNlcyBhbnkgVkNQSSBzbG90cyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgdG8gYSBwb3J0IGlu IHRoZSBhdG9taWMKPiArICogc3RhdGUuIEFueSBhdG9taWMgZHJpdmVycyB3aGljaCBzdXBwb3J0 IE1TVCBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBpbgo+ICsgKiB0aGVpciBjb25uZWN0b3IncyBh dG9taWNfY2hlY2soKSBoYW5kbGVyIHdoZW4gdGhlIGNvbm5lY3RvciB3aWxsIG5vIGxvbmdlcgo+ ICsgKiBoYXZlIFZDUEkgYWxsb2NhdGVkIChlLmcuIGJlY2F1c2UgaXQncyBDUlRDIHdhcyByZW1v dmVkKS4KPiArICoKPiArICogSXQgaXMgT0sgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgQHBvcnQgaGFz IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0sIGluCj4gKyAqIHdoaWNoIGNhc2UgaXQgd2ls bCBqdXN0IGFtb3VudCB0byBhIG5vLW9wLgo+ICsgKgo+ICsgKiBTZWUgYWxzbzogZHJtX2RwX2F0 b21pY19maW5kX3ZjcGlfc2xvdHMoKQo+ICAgKgo+ICAgKiBSRVRVUk5TOgo+IC0gKiAwIGlmIEBz bG90cyB3ZXJlIGFkZGVkIGJhY2sgdG8gJmRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUtPmF2YWls X3Nsb3RzIG9yCj4gLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGUKPiArICogMCBpZiBhbGwgc2xvdHMg Zm9yIHRoaXMgcG9ydCB3ZXJlIGFkZGVkIGJhY2sgdG8KPiArICogJmRybV9kcF9tc3RfdG9wb2xv Z3lfc3RhdGUtPmF2YWlsX3Nsb3RzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKPiAgICovCj4gIGlu dCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdy LAo+IC0JCQkJICAgICBpbnQgc2xvdHMpCj4gKwkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3Bv cnQgKnBvcnQpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlICp0b3Bv bG9neV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp0bXAsICpwb3M7 Cj4gIAo+ICAJdG9wb2xvZ3lfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9tc3RfdG9wb2xvZ3lfc3Rh dGUoc3RhdGUsIG1ncik7Cj4gIAlpZiAoSVNfRVJSKHRvcG9sb2d5X3N0YXRlKSkKPiAgCQlyZXR1 cm4gUFRSX0VSUih0b3BvbG9neV9zdGF0ZSk7Cj4gIAo+IC0JLyogV2UgY2Fubm90IHJlbHkgb24g cG9ydC0+dmNwaS5udW1fc2xvdHMgdG8gdXBkYXRlCj4gLQkgKiB0b3BvbG9neV9zdGF0ZS0+YXZh aWxfc2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZiB0aGUgcGFyZW50Cj4gLQkgKiBi cmFuY2ggZGV2aWNlIHdhcyB1bnBsdWdnZWQuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGJ5IHRyYWNr aW5nCj4gLQkgKiBwZXItcG9ydCBzbG90IGFsbG9jYXRpb24gaW4gZHJtX2RwX21zdF90b3BvbG9n eV9zdGF0ZSBpbnN0ZWFkIG9mCj4gLQkgKiBkZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0ZWxs IHVzIGhvdyBtYW55IHNsb3RzIHRvIHJlbGVhc2UuCj4gLQkgKi8KPiAtCXRvcG9sb2d5X3N0YXRl LT5hdmFpbF9zbG90cyArPSBzbG90czsKPiAtCURSTV9ERUJVR19LTVMoInZjcGkgc2xvdHMgcmVs ZWFzZWQ9JWQsIGF2YWlsPSVkXG4iLAo+IC0JCQlzbG90cywgdG9wb2xvZ3lfc3RhdGUtPmF2YWls X3Nsb3RzKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJnRvcG9sb2d5 X3N0YXRlLT52Y3BpcywgbmV4dCkgewo+ICsJCWlmIChwb3MtPnBvcnQgPT0gcG9ydCkgewo+ICsJ CQlsaXN0X2RlbCgmcG9zLT5uZXh0KTsKPiArCQkJRFJNX0RFQlVHX0tNUygiW01TVCBQT1JUOiVw XSB2Y3BpICVkIC0+IDBcbiIsCj4gKwkJCQkgICAgICBwb3J0LCBwb3MtPnZjcGkpOwo+ICAKPiAr CQkJa2ZyZWUocG9zKTsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8qIElm IG5vIGFsbG9jYXRpb24gd2FzIGZvdW5kLCBhbGwgdGhhdCBtZWFucyBpcyB0aGF0IHRoZSBwb3J0 IHdhcwo+ICsJICogZGVzdHJveWVkIHNpbmNlIHRoZSBsYXN0IGF0b21pYyBjb21taXQuIFRoYXQn cyBPSyEKPiArCSAqLwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBf YXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyk7Cj4gQEAgLTMxMTIsMTUgKzMxNTksNTAgQEAgc3Rh dGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQo+ICBzdGF0aWMgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICoKPiAgZHJtX2RwX21z dF9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rw X21zdF90b3BvbG9neV9zdGF0ZSAqc3RhdGUsICpvbGRfc3RhdGUgPQo+ICsJCXRvX2RwX21zdF90 b3BvbG9neV9zdGF0ZShvYmotPnN0YXRlKTsKPiArCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5 X21nciAqbWdyID0gb2xkX3N0YXRlLT5tZ3I7Cj4gKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpw b3J0Owo+ICsJc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnZjcGk7Cj4gIAo+ IC0Jc3RhdGUgPSBrbWVtZHVwKG9iai0+c3RhdGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVM KTsKPiArCXN0YXRlID0ga3phbGxvYyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gIAlp ZiAoIXN0YXRlKQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAgCV9fZHJtX2F0b21pY19oZWxwZXJf cHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJnN0YXRlLT5iYXNlKTsKPiAgCj4gKwlz dGF0ZS0+bWdyID0gbWdyOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnN0YXRlLT52Y3Bpcyk7Cj4gKwo+ ICsJLyogQ29weSBvdmVyIHRoZSBWQ1BJIGFsbG9jYXRpb25zIGZvciBwb3J0cyB0aGF0IHN0aWxs IGV4aXN0ICovCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJm9sZF9zdGF0ZS0+dmNwaXMs IG5leHQpIHsKPiArCQlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBw b3MtPnBvcnQpOwo+ICsJCWlmICghcG9ydCkgewo+ICsJCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNU IFBPUlQ6JXBdIGlzIGdvbmUsIHZjcGkgJWQgLT4gMFxuIiwKPiArCQkJCQkgcG9zLT5wb3J0LCBw b3MtPnZjcGkpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCXZjcGkgPSBremFsbG9j KHNpemVvZigqdmNwaSksIEdGUF9LRVJORUwpOwo+ICsJCWlmICghdmNwaSkgewo+ICsJCQlkcm1f ZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwkJCWdvdG8gZmFpbF9hbGxvYzsKPiArCQl9Cj4gKwo+ICsJ CXZjcGktPnBvcnQgPSBwb3J0Owo+ICsJCXZjcGktPnZjcGkgPSBwb3MtPnZjcGk7Cj4gKwkJbGlz dF9hZGQoJnZjcGktPm5leHQsICZzdGF0ZS0+dmNwaXMpOwo+ICsJCWRybV9kcF9wdXRfcG9ydChw b3J0KTsKPiArCX0KPiArCj4gIAlyZXR1cm4gJnN0YXRlLT5iYXNlOwo+ICsKPiArZmFpbF9hbGxv YzoKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHZjcGksICZzdGF0ZS0+dmNwaXMs IG5leHQpCj4gKwkJa2ZyZWUocG9zKTsKPiArCWtmcmVlKHN0YXRlKTsKPiArCj4gKwlyZXR1cm4g TlVMTDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0 cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaiwKPiBAQCAtMzEyOCwxMyArMzIxMCw0NSBAQCBzdGF0 aWMgdm9pZCBkcm1fZHBfbXN0X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAq b2JqLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRl ID0KPiAgCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUoc3RhdGUpOwo+ICsJc3RydWN0IGRybV9k cF92Y3BpX2FsbG9jYXRpb24gKnBvcywgKnRtcDsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUocG9zLCB0bXAsICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0KQo+ICsJCWtmcmVlKHBvcyk7 Cj4gIAo+ICAJa2ZyZWUobXN0X3N0YXRlKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBkcm1fZHBf bXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCj4gKwkJCQkgICBz dHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9zdGF0ZSAqbXN0X3N0YXRlID0KPiArCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3Rh dGUoc3RhdGUpOwo+ICsJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBtc3Rf c3RhdGUtPm1ncjsKPiArCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3M7Cj4gKwlp bnQgYXZhaWxfc2xvdHMgPSA2MzsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJm1z dF9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKPiArCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6 JXBdIHJlcXVpcmVzICVkIHZjcGkgc2xvdHNcbiIsCj4gKwkJCQkgcG9zLT5wb3J0LCBwb3MtPnZj cGkpOwo+ICsKPiArCQlhdmFpbF9zbG90cyAtPSBwb3MtPnZjcGk7Cj4gKwkJaWYgKGF2YWlsX3Ns b3RzIDwgMCkgewo+ICsJCQlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIG5vdCBlbm91 Z2ggdmNwaSBzbG90cyBpbiBzdGF0ZSAlcCAoYXZhaWw9JWQpXG4iLAo+ICsJCQkJCSBwb3MtPnBv cnQsIHN0YXRlLAo+ICsJCQkJCSBhdmFpbF9zbG90cyArIHBvcy0+dmNwaSk7Cj4gKwkJCXJldHVy biAtRU5PU1BDOwo+ICsJCX0KPiArCX0KPiArCURSTV9ERUJVR19BVE9NSUMoIltNU1QgTUdSOiVw XSBzdGF0ZSAlcCB2Y3BpIGF2YWlsPSVkIHVzZWQ9JWRcbiIsCj4gKwkJCSBtZ3IsIHN0YXRlLCBh dmFpbF9zbG90cywgNjMgLSBhdmFpbF9zbG90cyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgbXN0X3N0YXRl X2Z1bmNzID0gewo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fZHBfbXN0X2R1cGxp Y2F0ZV9zdGF0ZSwKPiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9kcF9tc3RfZGVzdHJv eV9zdGF0ZSwKPiArCS5hdG9taWNfY2hlY2sgPSBkcm1fZHBfbXN0X2F0b21pY19jaGVjaywKPiAg fTsKPiAgCj4gIC8qKgo+IEBAIC0zMjEzLDkgKzMzMjcsNyBAQCBpbnQgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3JfaW5pdChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKPiAgCQly ZXR1cm4gLUVOT01FTTsKPiAgCj4gIAltc3Rfc3RhdGUtPm1nciA9IG1ncjsKPiAtCj4gLQkvKiBt YXguIHRpbWUgc2xvdHMgLSBvbmUgc2xvdCBmb3IgTVRQIGhlYWRlciAqLwo+IC0JbXN0X3N0YXRl LT5hdmFpbF9zbG90cyA9IDYzOwo+ICsJSU5JVF9MSVNUX0hFQUQoJm1zdF9zdGF0ZS0+dmNwaXMp Owo+ICAKPiAgCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgmbWdyLT5iYXNlLAo+ICAJCQkJ ICAgICZtc3Rfc3RhdGUtPmJhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiBp bmRleCA4YjcxZDY0ZWJkOWQuLmFhZjkwNDczOGI3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwX21zdC5jCj4gQEAgLTExNCwyOCArMTE0LDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBf bXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwo+ICAJc3RydWN0IGRybV9j cnRjICpvbGRfY3J0YzsKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAt CWludCBzbG90cywgcmV0ID0gMDsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nv bm5lY3RvciA9Cj4gKwkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9Cj4gKwkJJmludGVsX2Nvbm5lY3Rvci0+bXN0 X3BvcnQtPm1zdF9tZ3I7Cj4gKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gaW50ZWxf Y29ubmVjdG9yLT5wb3J0Owo+ICsJaW50IHJldCA9IDA7Cj4gIAo+ICAJb2xkX2Nvbm5fc3RhdGUg PSBkcm1fYXRvbWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwo+ ICAJb2xkX2NydGMgPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YzsKPiAgCWlmICghb2xkX2NydGMpCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gLQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2Ny dGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsKPiAtCXNsb3RzID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjX3N0YXRlKS0+ZHBfbV9uLnR1Owo+IC0JaWYgKGRybV9hdG9taWNfY3J0Y19uZWVkc19t b2Rlc2V0KGNydGNfc3RhdGUpICYmIHNsb3RzID4gMCkgewo+IC0JCXN0cnVjdCBkcm1fZHBfbXN0 X3RvcG9sb2d5X21nciAqbWdyOwo+IC0JCXN0cnVjdCBkcm1fZW5jb2RlciAqb2xkX2VuY29kZXI7 Cj4gKwkvKiBGcmVlIFZDUEksIHNpbmNlIGNvbXB1dGVfY29uZmlnKCkgd29uJ3QgYmUgcnVuICov Cj4gKwlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRjKSB7Cj4gKwkJY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY3J0Yyk7Cj4gIAo+IC0JCW9sZF9l bmNvZGVyID0gb2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKPiAtCQltZ3IgPSAmZW5jX3Rv X21zdChvbGRfZW5jb2RlciktPnByaW1hcnktPmRwLm1zdF9tZ3I7Cj4gLQo+IC0JCXJldCA9IGRy bV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLCBtZ3IsIHNsb3RzKTsKPiAtCQlp ZiAocmV0KQo+IC0JCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgcmVsZWFzaW5nICVkIHZjcGkgc2xv dHM6JWRcbiIsIHNsb3RzLCByZXQpOwo+IC0JCWVsc2UKPiAtCQkJdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjX3N0YXRlKS0+ZHBfbV9uLnR1ID0gMDsKPiArCQlyZXQgPSBkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBwb3J0KTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJ CURSTV9ERUJVR19LTVMoImZhaWxlZCByZWxlYXNpbmcgdmNwaSBzbG90czogJWRcbiIsCj4gKwkJ CQkgICAgICByZXQpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCQl0b19pbnRlbF9jcnRj X3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24udHUgPSAwOwo+ICAJfQo+ICsKPiAgCXJldHVybiBy ZXQ7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVy LmggYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gaW5kZXggNTlmMDA1YjQxOWNm Li40YzA4MDVlNTYzMzUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxw ZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKPiBAQCAtNDA2LDkg KzQwNiwxNSBAQCBzdHJ1Y3QgZHJtX2RwX3BheWxvYWQgewo+ICAKPiAgI2RlZmluZSB0b19kcF9t c3RfdG9wb2xvZ3lfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X3N0YXRlLCBiYXNlKQo+ICAKPiArc3RydWN0IGRybV9kcF92Y3BpX2FsbG9jYXRpb24g ewo+ICsJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKPiArCWludCB2Y3BpOwo+ICsJc3Ry dWN0IGxpc3RfaGVhZCBuZXh0Owo+ICt9Owo+ICsKPiAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfc3RhdGUgewo+ICAJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlIGJhc2U7Cj4gLQlpbnQgYXZh aWxfc2xvdHM7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHZjcGlzOwo+ICAJc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyICptZ3I7Cj4gIH07Cj4gIAo+IEBAIC02MjQsNyArNjMwLDcgQEAgaW50 IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSwKPiAgCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50IHBibik7Cj4g IGludCBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAq bWdyLAo+IC0JCQkJICAgICBpbnQgc2xvdHMpOwo+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpwb3J0KTsKPiAgaW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gIAkJCQkgc3RydWN0IGRybV9kcF9tc3Rf cG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91cCk7Cj4gIAo+IC0tIAo+IDIuMTcuMgo+IAoKLS0gCkRh bmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=