From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/3] drm: export gem dmabuf_ops for drivers to reuse Date: Tue, 9 Jan 2018 10:22:01 +0100 Message-ID: <20180109092201.GE26573@phenom.ffwll.local> References: <1515100334-6845-1-git-send-email-Samuel.Li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: christian.koenig-5C7GfCeVMHo@public.gmane.org Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Samuel Li List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKYW4gMDUsIDIwMTggYXQgMTA6MTY6MDRBTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAwNC4wMS4yMDE4IHVtIDIyOjEyIHNjaHJpZWIgU2FtdWVsIExpOgo+ID4g Q2hhbmdlLUlkOiBJMDNjMjJhODkwZDIzMDVmMzI0M2Q4ODAxOWQxYTI4YmRkZDRkZGRhNwo+ID4g U2lnbmVkLW9mZi1ieTogU2FtdWVsIExpIDxTYW11ZWwuTGlAYW1kLmNvbT4KPiAKPiBSZXZpZXdl ZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKV2FudCB0 byBwdXNoIHRvIGRybS1taXNjIG9yIHNvbWUgb3RoZXIgcGxhbiB3aXRoIHRoaXM/Ci1EYW5pZWwK Cj4gCj4gPiAtLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jIHwgNTMgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgIGluY2x1ZGUvZHJt L2RybV9wcmltZS5oICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysKPiA+ICAgMiBmaWxlcyBj aGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYwo+ID4gaW5kZXggOGRlOTNhMi4uNjhhNjllOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmlt ZS5jCj4gPiBAQCAtMTgwLDkgKzE4MCw4IEBAIHN0YXRpYyBpbnQgZHJtX3ByaW1lX2xvb2t1cF9i dWZfaGFuZGxlKHN0cnVjdCBkcm1fcHJpbWVfZmlsZV9wcml2YXRlICpwcmltZV9mcHJpCj4gPiAg IAlyZXR1cm4gLUVOT0VOVDsKPiA+ICAgfQo+ID4gLXN0YXRpYyBpbnQgZHJtX2dlbV9tYXBfYXR0 YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gLQkJCSAgICAgIHN0cnVjdCBkZXZpY2Ug KnRhcmdldF9kZXYsCj4gPiAtCQkJICAgICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0 YWNoKQo+ID4gK2ludCBkcm1fZ2VtX21hcF9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYs IHN0cnVjdCBkZXZpY2UgKnRhcmdldF9kZXYsCj4gPiArCQkgICAgICAgc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoKQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX3ByaW1lX2F0dGFj aG1lbnQgKnByaW1lX2F0dGFjaDsKPiA+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0g ZG1hX2J1Zi0+cHJpdjsKPiA+IEBAIC0yMDAsOSArMTk5LDEwIEBAIHN0YXRpYyBpbnQgZHJtX2dl bV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gICAJcmV0dXJuIGRldi0+ ZHJpdmVyLT5nZW1fcHJpbWVfcGluKG9iaik7Cj4gPiAgIH0KPiA+ICtFWFBPUlRfU1lNQk9MKGRy bV9nZW1fbWFwX2F0dGFjaCk7Cj4gPiAtc3RhdGljIHZvaWQgZHJtX2dlbV9tYXBfZGV0YWNoKHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gLQkJCSAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICphdHRhY2gpCj4gPiArdm9pZCBkcm1fZ2VtX21hcF9kZXRhY2goc3RydWN0IGRtYV9i dWYgKmRtYV9idWYsCj4gPiArCQkJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQo+ ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX3ByaW1lX2F0dGFjaG1lbnQgKnByaW1lX2F0dGFjaCA9 IGF0dGFjaC0+cHJpdjsKPiA+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1 Zi0+cHJpdjsKPiA+IEBAIC0yMjcsNiArMjI3LDcgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV9tYXBf ZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gICAJa2ZyZWUocHJpbWVfYXR0YWNo KTsKPiA+ICAgCWF0dGFjaC0+cHJpdiA9IE5VTEw7Cj4gPiAgIH0KPiA+ICtFWFBPUlRfU1lNQk9M KGRybV9nZW1fbWFwX2RldGFjaCk7Cj4gPiAgIHZvaWQgZHJtX3ByaW1lX3JlbW92ZV9idWZfaGFu ZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByaXYsCj4g PiAgIAkJCQkJc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4gPiBAQCAtMjUzLDggKzI1NCw4IEBA IHZvaWQgZHJtX3ByaW1lX3JlbW92ZV9idWZfaGFuZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX3ByaW1l X2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByCj4gPiAgIAl9Cj4gPiAgIH0KPiA+IC1zdGF0aWMgc3Ry dWN0IHNnX3RhYmxlICpkcm1fZ2VtX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaCwKPiA+IC0JCQkJCSAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4g PiArc3RydWN0IHNnX3RhYmxlICpkcm1fZ2VtX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaCwKPiA+ICsJCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIpCj4gPiAgIHsKPiA+ICAgCXN0cnVjdCBkcm1fcHJpbWVfYXR0YWNobWVudCAqcHJpbWVfYXR0 YWNoID0gYXR0YWNoLT5wcml2Owo+ID4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBh dHRhY2gtPmRtYWJ1Zi0+cHJpdjsKPiA+IEBAIC0yODksMTMgKzI5MCwxNSBAQCBzdGF0aWMgc3Ry dWN0IHNnX3RhYmxlICpkcm1fZ2VtX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaCwKPiA+ICAgCXJldHVybiBzZ3Q7Cj4gPiAgIH0KPiA+ICtFWFBPUlRfU1lNQk9M KGRybV9nZW1fbWFwX2RtYV9idWYpOwo+ID4gLXN0YXRpYyB2b2lkIGRybV9nZW1fdW5tYXBfZG1h X2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gPiAtCQkJCSAgc3RydWN0 IHNnX3RhYmxlICpzZ3QsCj4gPiAtCQkJCSAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQo+ ID4gK3ZvaWQgZHJtX2dlbV91bm1hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KmF0dGFjaCwKPiA+ICsJCQkgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwKPiA+ICsJCQkgICBlbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCj4gPiAgIHsKPiA+ICAgCS8qIG5vdGhpbmcgdG8gYmUg ZG9uZSBoZXJlICovCj4gPiAgIH0KPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fdW5tYXBfZG1h X2J1Zik7Cj4gPiAgIC8qKgo+ID4gICAgKiBkcm1fZ2VtX2RtYWJ1Zl9leHBvcnQgLSBkbWFfYnVm IGV4cG9ydCBpbXBsZW1lbnRhdGlvbiBmb3IgR0VNCj4gPiBAQCAtMzQ2LDQ3ICszNDksNTIgQEAg dm9pZCBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQo+ID4g ICB9Cj4gPiAgIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9kbWFidWZfcmVsZWFzZSk7Cj4gPiAtc3Rh dGljIHZvaWQgKmRybV9nZW1fZG1hYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4g PiArdm9pZCAqZHJtX2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiA+ ICAgewo+ID4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2Owo+ ID4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2Owo+ID4gICAJcmV0dXJuIGRl di0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcChvYmopOwo+ID4gICB9Cj4gPiArRVhQT1JUX1NZTUJP TChkcm1fZ2VtX2RtYWJ1Zl92bWFwKTsKPiA+IC1zdGF0aWMgdm9pZCBkcm1fZ2VtX2RtYWJ1Zl92 dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+ID4gK3ZvaWQgZHJt X2dlbV9kbWFidWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB2b2lkICp2YWRkcikK PiA+ICAgewo+ID4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2 Owo+ID4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2Owo+ID4gICAJZGV2LT5k cml2ZXItPmdlbV9wcmltZV92dW5tYXAob2JqLCB2YWRkcik7Cj4gPiAgIH0KPiA+ICtFWFBPUlRf U1lNQk9MKGRybV9nZW1fZG1hYnVmX3Z1bm1hcCk7Cj4gPiAtc3RhdGljIHZvaWQgKmRybV9nZW1f ZG1hYnVmX2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gLQkJCQkJdW5z aWduZWQgbG9uZyBwYWdlX251bSkKPiA+ICt2b2lkICpkcm1fZ2VtX2RtYWJ1Zl9rbWFwX2F0b21p YyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICsJCQkJIHVuc2lnbmVkIGxvbmcgcGFnZV9u dW0pCj4gPiAgIHsKPiA+ICAgCXJldHVybiBOVUxMOwo+ID4gICB9Cj4gPiArRVhQT1JUX1NZTUJP TChkcm1fZ2VtX2RtYWJ1Zl9rbWFwX2F0b21pYyk7Cj4gPiAtc3RhdGljIHZvaWQgZHJtX2dlbV9k bWFidWZfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+IC0JCQkJCSB1 bnNpZ25lZCBsb25nIHBhZ2VfbnVtLCB2b2lkICphZGRyKQo+ID4gK3ZvaWQgZHJtX2dlbV9kbWFi dWZfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICsJCQkJICB1bnNp Z25lZCBsb25nIHBhZ2VfbnVtLCB2b2lkICphZGRyKQo+ID4gICB7Cj4gPiAgIH0KPiA+IC1zdGF0 aWMgdm9pZCAqZHJtX2dlbV9kbWFidWZfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ IC0JCQkJIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0pCj4gPiArRVhQT1JUX1NZTUJPTChkcm1fZ2Vt X2RtYWJ1Zl9rdW5tYXBfYXRvbWljKTsKPiA+ICsKPiA+ICt2b2lkICpkcm1fZ2VtX2RtYWJ1Zl9r bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtKQo+ID4g ICB7Cj4gPiAgIAlyZXR1cm4gTlVMTDsKPiA+ICAgfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2dl bV9kbWFidWZfa21hcCk7Cj4gPiAtc3RhdGljIHZvaWQgZHJtX2dlbV9kbWFidWZfa3VubWFwKHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gLQkJCQkgIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0s IHZvaWQgKmFkZHIpCj4gPiArdm9pZCBkcm1fZ2VtX2RtYWJ1Zl9rdW5tYXAoc3RydWN0IGRtYV9i dWYgKmRtYV9idWYsIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0sCj4gPiArCQkJICAgdm9pZCAqYWRk cikKPiA+ICAgewo+ID4gICB9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl9rdW5t YXApOwo+ID4gLXN0YXRpYyBpbnQgZHJtX2dlbV9kbWFidWZfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZiwKPiA+IC0JCQkgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPiAr aW50IGRybV9nZW1fZG1hYnVmX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiA9IGRtYV9idWYtPnByaXY7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2Jq LT5kZXY7Cj4gPiBAQCAtMzk2LDYgKzQwNCw3IEBAIHN0YXRpYyBpbnQgZHJtX2dlbV9kbWFidWZf bW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICAgCXJldHVybiBkZXYtPmRyaXZlci0+ Z2VtX3ByaW1lX21tYXAob2JqLCB2bWEpOwo+ID4gICB9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1f Z2VtX2RtYWJ1Zl9tbWFwKTsKPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBk cm1fZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMgPSAgewo+ID4gICAJLmF0dGFjaCA9IGRybV9nZW1fbWFw X2F0dGFjaCwKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcHJpbWUuaCBiL2luY2x1 ZGUvZHJtL2RybV9wcmltZS5oCj4gPiBpbmRleCA5Y2Q5ZTM2Li40ZDVmNWQ2IDEwMDY0NAo+ID4g LS0tIGEvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9w cmltZS5oCj4gPiBAQCAtNTQsNiArNTQsOSBAQCBzdHJ1Y3QgZGV2aWNlOwo+ID4gICBzdHJ1Y3Qg ZG1hX2J1Zl9leHBvcnRfaW5mbzsKPiA+ICAgc3RydWN0IGRtYV9idWY7Cj4gPiArc3RydWN0IGRt YV9idWZfYXR0YWNobWVudDsKPiA+ICsKPiA+ICtlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbjsKPiA+ ICAgc3RydWN0IGRybV9kZXZpY2U7Cj4gPiAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiA+IEBA IC03OSw2ICs4MiwyNSBAQCBpbnQgZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+ICAgc3RydWN0IGRtYV9idWYgKmRybV9nZW1fZG1hYnVmX2V4cG9y dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gICAJCQkJICAgICAgc3RydWN0IGRtYV9idWZf ZXhwb3J0X2luZm8gKmV4cF9pbmZvKTsKPiA+ICAgdm9pZCBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNl KHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKTsKPiA+ICtpbnQgZHJtX2dlbV9tYXBfYXR0YWNoKHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3QgZGV2aWNlICp0YXJnZXRfZGV2LAo+ID4gKwkJ ICAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4gPiArdm9pZCBkcm1f Z2VtX21hcF9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gPiArCQkJc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPiA+ICtzdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1f bWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gKwkJCQkg ICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4gPiArdm9pZCBkcm1fZ2VtX3VubWFw X2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4gKwkJCSAgIHN0 cnVjdCBzZ190YWJsZSAqc2d0LAo+ID4gKwkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp cik7Cj4gPiArdm9pZCAqZHJtX2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1 Zik7Cj4gPiArdm9pZCBkcm1fZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9i dWYsIHZvaWQgKnZhZGRyKTsKPiA+ICt2b2lkICpkcm1fZ2VtX2RtYWJ1Zl9rbWFwX2F0b21pYyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICsJCQkJIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0p Owo+ID4gK3ZvaWQgZHJtX2dlbV9kbWFidWZfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZiwKPiA+ICsJCQkJICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtLCB2b2lkICphZGRyKTsK PiA+ICt2b2lkICpkcm1fZ2VtX2RtYWJ1Zl9rbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB1 bnNpZ25lZCBsb25nIHBhZ2VfbnVtKTsKPiA+ICt2b2lkIGRybV9nZW1fZG1hYnVmX2t1bm1hcChz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgdW5zaWduZWQgbG9uZyBwYWdlX251bSwKPiA+ICsJCQkg ICB2b2lkICphZGRyKTsKPiA+ICtpbnQgZHJtX2dlbV9kbWFidWZfbW1hcChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+ID4gICBpbnQgZHJtX3By aW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJheXMoc3RydWN0IHNnX3RhYmxlICpzZ3QsIHN0cnVjdCBw YWdlICoqcGFnZXMsCj4gPiAgIAkJCQkgICAgIGRtYV9hZGRyX3QgKmFkZHJzLCBpbnQgbWF4X3Bh Z2VzKTsKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK