From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/9] drm: Begin an API for in-kernel clients Date: Thu, 24 May 2018 10:42:13 +0200 Message-ID: <20180524084213.GG3438@phenom.ffwll.local> References: <20180523143411.64070-1-noralf@tronnes.org> <20180523143411.64070-5-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180523143411.64070-5-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgMjMsIDIwMTggYXQgMDQ6MzQ6MDZQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFRoaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBBUEkgZm9yIGluLWtlcm5lbCBjbGll bnRzLgo+IEZpcnN0IG91dCBpcyBhIHdheSB0byBnZXQgYSBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkg YSBkdW1iIGJ1ZmZlci4KPiAKPiBPbmx5IEdFTSBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQuCj4gVGhl IG9yaWdpbmFsIGlkZWEgb2YgdXNpbmcgYW4gZXhwb3J0ZWQgZG1hLWJ1ZiB3YXMgZHJvcHBlZCBi ZWNhdXNlIGl0Cj4gYWxzbyBjcmVhdGVzIGFuIGFub25vbW91cyBmaWxlIGRlc2NyaXB0b3Igd2hp Y2ggZG9lc24ndCB3b3JrIHdoZW4gdGhlCj4gYnVmZmVyIGlzIGNyZWF0ZWQgZnJvbSBhIGtlcm5l bCB0aHJlYWQuIFRoZSBlYXN5IHdheSBvdXQgaXMgdG8gdXNlCj4gZHJtX2RyaXZlci5nZW1fcHJp bWVfdm1hcCB0byBnZXQgdGhlIHZpcnR1YWwgYWRkcmVzcywgd2hpY2ggcmVxdWlyZXMgYQo+IEdF TSBvYmplY3QuIFRoaXMgZXhjbHVkZXMgdGhlIHZtd2dmeCBkcml2ZXIgd2hpY2ggaXMgdGhlIG9u bHkgbm9uLUdFTQo+IGRyaXZlciBhcGFydCBmcm9tIHRoZSBsZWdhY3kgb25lcy4gQSBzb2x1dGlv biBmb3Igdm13Z2Z4IHdpbGwgaGF2ZSB0byBiZQo+IHdvcmtlZCBvdXQgbGF0ZXIgaWYgaXQgd2Fu dHMgdG8gc3VwcG9ydCB0aGUgY2xpZW50IEFQSSB3aGljaCBpdCBwcm9iYWJseQo+IHdpbGwgd2hl biB3ZSBoYXZlIGEgYm9vdHNwbGFzaCBjbGllbnQuCj4gCj4gU2lnbmVkLW9mZi1ieTogTm9yYWxm IFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+CgpBIGZldyBzbWFsbCBuaXRzIGJlbG93LCB3 aXRoIHRob3NlIGFkZHJlc3NlZDoKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPgo+IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJz dCB8ICAxMiArKwo+ICBEb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QgICAgICB8ICAgMSArCj4g IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY2xpZW50LmMgICAgIHwgMjY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jICAgICAgICB8ICAgMSArCj4g IGluY2x1ZGUvZHJtL2RybV9jbGllbnQuaCAgICAgICAgIHwgIDgzICsrKysrKysrKysrKwo+ICBp bmNsdWRlL2RybS9kcm1fZGV2aWNlLmggICAgICAgICB8ICAgNyArCj4gIDcgZmlsZXMgY2hhbmdl ZCwgMzcyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IERvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl L2RybS9kcm1fY2xpZW50LmgKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJt LWNsaWVudC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43ZTY3MjA2M2U3ZWIKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QKPiBAQCAtMCww ICsxLDEyIEBACj4gKz09PT09PT09PT09PT09PT09Cj4gK0tlcm5lbCBjbGllbnRzCj4gKz09PT09 PT09PT09PT09PT09Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9j bGllbnQuYwo+ICsgICA6ZG9jOiBvdmVydmlldwo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGluY2x1 ZGUvZHJtL2RybV9jbGllbnQuaAo+ICsgICA6aW50ZXJuYWw6Cj4gKwo+ICsuLiBrZXJuZWwtZG9j OjogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwo+ICsgICA6ZXhwb3J0Ogo+IGRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9pbmRl eC5yc3QKPiBpbmRleCAwMDI4OGYzNGM1YTYuLjFmY2Y4ZTg1MWUxNSAxMDA2NDQKPiAtLS0gYS9E b2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9pbmRl eC5yc3QKPiBAQCAtMTAsNiArMTAsNyBAQCBMaW51eCBHUFUgRHJpdmVyIERldmVsb3BlcidzIEd1 aWRlCj4gICAgIGRybS1rbXMKPiAgICAgZHJtLWttcy1oZWxwZXJzCj4gICAgIGRybS11YXBpCj4g KyAgIGRybS1jbGllbnQKPiAgICAgZHJpdmVycwo+ICAgICB2Z2Etc3dpdGNoZXJvbwo+ICAgICB2 Z2FhcmJpdGVyCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IGVmOWYzZGFiMjg3Zi4uOGM4MDQ1MTQ3NDE2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZQo+IEBAIC0xOCw3ICsxOCw3IEBAIGRybS15ICAgICAgIDo9CWRybV9hdXRo Lm8gZHJtX2J1ZnMubyBkcm1fY2FjaGUubyBcCj4gIAkJZHJtX2VuY29kZXIubyBkcm1fbW9kZV9v YmplY3QubyBkcm1fcHJvcGVydHkubyBcCj4gIAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQu byBkcm1fcHJpbnQubyBcCj4gIAkJZHJtX2R1bWJfYnVmZmVycy5vIGRybV9tb2RlX2NvbmZpZy5v IGRybV92YmxhbmsubyBcCj4gLQkJZHJtX3N5bmNvYmoubyBkcm1fbGVhc2Uubwo+ICsJCWRybV9z eW5jb2JqLm8gZHJtX2xlYXNlLm8gZHJtX2NsaWVudC5vCj4gIAo+ICBkcm0tJChDT05GSUdfRFJN X0xJQl9SQU5ET00pICs9IGxpYi9kcm1fcmFuZG9tLm8KPiAgZHJtLSQoQ09ORklHX0RSTV9WTSkg Kz0gZHJtX3ZtLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMDkxOWFlYTdkZGRkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiBAQCAtMCwwICsxLDI2NyBAQAo+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgMjAxOCBO b3JhbGYgVHLDuG5uZXMKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsj aW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2ZpbGUuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2RlLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsKPiArI2luY2x1ZGUgImRy bV9jcnRjX2ludGVybmFsLmgiCj4gKyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKPiArCj4gKy8q Kgo+ICsgKiBET0M6IG92ZXJ2aWV3Cj4gKyAqCj4gKyAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBz dXBwb3J0IGZvciBjbGllbnRzIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCBsaWtlIGZiZGV2IGFuZCBi b290c3BsYXNoLgo+ICsgKiBDdXJyZW50bHkgaXQncyBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRl ZCwganVzdCBlbm91Z2ggdG8gc3VwcG9ydCBmYmRldi4KPiArICoKPiArICogR0VNIGRyaXZlcnMg d2hpY2ggcHJvdmlkZSBhIEdFTSBiYXNlZCBkdW1iIGJ1ZmZlciB3aXRoIGEgdmlydHVhbCBhZGRy ZXNzIGFyZSBzdXBwb3J0ZWQuCj4gKyAqLwo+ICsKPiArc3RhdGljIGludCBkcm1fY2xpZW50X2Fs bG9jX2ZpbGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCj4gK3sKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKPiArCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsK PiArCj4gKwlmaWxlID0gZHJtX2ZpbGVfYWxsb2MoZGV2LT5wcmltYXJ5KTsKPiArCWlmIChJU19F UlIoZmlsZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gKwo+ICsJZHJtX2Rldl9nZXQo ZGV2KTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiArCWxpc3Rf YWRkKCZmaWxlLT5saGVhZCwgJmRldi0+ZmlsZWxpc3RfaW50ZXJuYWwpOwo+ICsJbXV0ZXhfdW5s b2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiArCj4gKwljbGllbnQtPmZpbGUgPSBmaWxlOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2ZyZWVf ZmlsZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKPiArewo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2Owo+ICsKPiArCW11dGV4X2xvY2soJmRldi0+ZmlsZWxp c3RfbXV0ZXgpOwo+ICsJbGlzdF9kZWwoJmNsaWVudC0+ZmlsZS0+bGhlYWQpOwo+ICsJbXV0ZXhf dW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiArCj4gKwlkcm1fZmlsZV9mcmVlKGNsaWVu dC0+ZmlsZSk7Cj4gKwlkcm1fZGV2X3B1dChkZXYpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJt X2NsaWVudF9uZXcgLSBDcmVhdGUgYSBEUk0gY2xpZW50Cj4gKyAqIEBkZXY6IERSTSBkZXZpY2UK PiArICoKPiArICogUmV0dXJuczoKPiArICogUG9pbnRlciB0byBhIGNsaWVudCBvciBhbiBlcnJv ciBwb2ludGVyIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmRy bV9jbGllbnRfbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCgpBcGkgbml0cGljazoKCmludCBk cm1fY2xpZW50X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKCQkgICAgc3RydWN0IGRybV9j bGllbnRfZGV2ICpjbGllbnQpCgphbmQgZHJvcHBpbmcgdGhlIGt6YWxsb2MgZnJvbSB0aGlzIHN0 cnVjdHVyZSBoZXJlLiBUaGlzIGFsbG93cyB1c2VycyBvZgp0aGlzIHRvIGVtYmVkIHRoZSBjbGll bnQgc3RydWN0IGludG8gdGhlaXIgb3duIHRoaW5nLCB3aGljaCBtZWFucyB0aGUKLT5wcml2YXRl IGJhY2twb2ludGVyIGlzbid0IG5lY2Vzc2FyeS4gQWxsb3dpbmcgZW1iZWRkaW5nIGlzIHRoZSBw cmVmZXJyZWQKaW50ZXJmYWNlIGluIHRoZSBrZXJuZWwgKHNpbmNlIGl0J3Mgc3RyaWN0bHkgbW9y ZSBwb3dlcmZ1bCwgeW91IGNhbiBhbHdheXMKanVzdCBremFsbG9jICsgX2luaXQgdG8gZ2V0IHRo ZSBfbmV3IGJlaGF2aW91cikuCgo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwg RFJJVkVSX01PREVTRVQpIHx8Cj4gKwkgICAgIWRldi0+ZHJpdmVyLT5kdW1iX2NyZWF0ZSB8fCAh ZGV2LT5kcml2ZXItPmdlbV9wcmltZV92bWFwKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9UU1VQ UCk7Cj4gKwo+ICsJY2xpZW50ID0ga3phbGxvYyhzaXplb2YoKmNsaWVudCksIEdGUF9LRVJORUwp Owo+ICsJaWYgKCFjbGllbnQpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJ Y2xpZW50LT5kZXYgPSBkZXY7Cj4gKwo+ICsJcmV0ID0gZHJtX2NsaWVudF9hbGxvY19maWxlKGNs aWVudCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJa2ZyZWUoY2xpZW50KTsKPiArCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICsJfQo+ICsKPiArCXJldHVybiBjbGllbnQ7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChkcm1fY2xpZW50X25ldyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2NsaWVudF9mcmVlIC0g RnJlZSBEUk0gY2xpZW50IHJlc291cmNlcwo+ICsgKiBAY2xpZW50OiBEUk0gY2xpZW50Cj4gKyAq Lwo+ICt2b2lkIGRybV9jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkK ClNpbWlsYXIgaGVyZSwgX3JlbGVhc2UgaW5zdGVhZCBvZiBfZnJlZSBhbmQgZHJvcCB0aGUga2Zy ZWUuCgo+ICt7Cj4gKwlkcm1fY2xpZW50X2ZyZWVfZmlsZShjbGllbnQpOwo+ICsJa2ZyZWUoY2xp ZW50KTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfZnJlZSk7Cj4gKwo+ICtzdGF0 aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZlcl9kZWxldGUoc3RydWN0IGRybV9jbGllbnRfYnVmZmVy ICpidWZmZXIpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gKwo+ICsJaWYgKCFi dWZmZXIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWRldiA9IGJ1ZmZlci0+Y2xpZW50LT5kZXY7Cj4g KwlpZiAoYnVmZmVyLT52YWRkciAmJiBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcCkKPiAr CQlkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcChidWZmZXItPmdlbSwgYnVmZmVyLT52YWRk cik7Cj4gKwo+ICsJaWYgKGJ1ZmZlci0+Z2VtKQo+ICsJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZChidWZmZXItPmdlbSk7Cj4gKwo+ICsJZHJtX21vZGVfZGVzdHJveV9kdW1iKGRldiwgYnVm ZmVyLT5oYW5kbGUsIGJ1ZmZlci0+Y2xpZW50LT5maWxlKTsKPiArCWtmcmVlKGJ1ZmZlcik7Cj4g K30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKgo+ICtkcm1fY2xpZW50 X2J1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUzMiB3aWR0aCwg dTMyIGhlaWdodCwgdTMyIGZvcm1hdCkKPiArewo+ICsJc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9k dW1iIGR1bWJfYXJncyA9IHsgfTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQt PmRldjsKPiArCXN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyOwo+ICsJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwl2b2lkICp2YWRkcjsKPiArCWludCByZXQ7Cj4gKwo+ICsJ YnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmJ1ZmZlciksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFi dWZmZXIpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJYnVmZmVyLT5jbGll bnQgPSBjbGllbnQ7Cj4gKwo+ICsJZHVtYl9hcmdzLndpZHRoID0gd2lkdGg7Cj4gKwlkdW1iX2Fy Z3MuaGVpZ2h0ID0gaGVpZ2h0Owo+ICsJZHVtYl9hcmdzLmJwcCA9IGRybV9mb3JtYXRfcGxhbmVf Y3BwKGZvcm1hdCwgMCkgKiA4Owo+ICsJcmV0ID0gZHJtX21vZGVfY3JlYXRlX2R1bWIoZGV2LCAm ZHVtYl9hcmdzLCBjbGllbnQtPmZpbGUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9mcmVl Owo+ICsKPiArCWJ1ZmZlci0+aGFuZGxlID0gZHVtYl9hcmdzLmhhbmRsZTsKPiArCWJ1ZmZlci0+ cGl0Y2ggPSBkdW1iX2FyZ3MucGl0Y2g7Cj4gKwo+ICsJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9v a3VwKGNsaWVudC0+ZmlsZSwgZHVtYl9hcmdzLmhhbmRsZSk7Cj4gKwlpZiAoIW9iaikgIHsKPiAr CQlyZXQgPSAtRU5PRU5UOwo+ICsJCWdvdG8gZXJyX2RlbGV0ZTsKPiArCX0KPiArCj4gKwlidWZm ZXItPmdlbSA9IG9iajsKPiArCgpJJ20gcGFyYW5vaWQsIEkgdGhpbmsgYW4gCgoJaWYgKFdBUk5f T04oIWdlbV9wcmltZV92bWFwKSkKCQlyZXR1cm4gLUVJTlZBTDsKCndvdWxkIGJlIGNvb2wgaGVy ZS4KCkFsc28gcGVyaGFwcyB0aGUgZm9sbG93aW5nIGNvbW1lbnQ6CgoJLyoKCSAqIEZJWE1FOiBU aGUgZGVwZW5kZW5jeSBvbiBHRU0gaGVyZSBpc24ndCByZXF1aXJlZCwgd2UgY291bGQKCSAqIGNv bnZlcnQgdGhlIGRyaXZlciBoYW5kbGUgdG8gYSBkbWEtYnVmIGluc3RlYWQgYW5kIHVzZSB0aGUK CSAqIGJhY2tlbmQtYWdub3N0aWMgZG1hLWJ1ZiB2bWFwIHN1cHBvcnQgaW5zdGVhZC4gVGhpcyB3 b3VsZAoJICogcmVxdWlyZSB0aGF0IHRoZSBoYW5kbGUyZmQgcHJpbWUgaW9jdGwgaXMgcmV3b3Jr ZWQgdG8gcHVsbCB0aGUKCSAqIGZkX2luc3RhbGwgc3RlcCBvdXQgb2YgdGhlIGRyaXZlciBiYWNr ZW5kIGhvb2tzLCB0byBtYWtlIHRoYXQKCSAqIGZpbmFsIHN0ZXAgb3B0aW9uYWwgZm9yIGludGVy bmFsIHVzZXJzLgoJICovCgoKPiArCXZhZGRyID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV92bWFw KG9iaik7Cj4gKwlpZiAoIXZhZGRyKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIGVy cl9kZWxldGU7Cj4gKwl9Cj4gKwo+ICsJYnVmZmVyLT52YWRkciA9IHZhZGRyOwo+ICsKPiArCXJl dHVybiBidWZmZXI7Cj4gKwo+ICtlcnJfZGVsZXRlOgo+ICsJZHJtX2NsaWVudF9idWZmZXJfZGVs ZXRlKGJ1ZmZlcik7Cj4gK2Vycl9mcmVlOgo+ICsJa2ZyZWUoYnVmZmVyKTsKPiArCj4gKwlyZXR1 cm4gRVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZl cl9ybWZiKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQo+ICt7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWlmICghYnVmZmVyIHx8ICFidWZmZXItPmZiKQo+ICsJCXJldHVybjsKPiArCj4g KwlyZXQgPSBkcm1fbW9kZV9ybWZiKGJ1ZmZlci0+Y2xpZW50LT5kZXYsIGJ1ZmZlci0+ZmItPmJh c2UuaWQsIGJ1ZmZlci0+Y2xpZW50LT5maWxlKTsKPiArCWlmIChyZXQpCj4gKwkJRFJNX0RFVl9F UlJPUihidWZmZXItPmNsaWVudC0+ZGV2LT5kZXYsCj4gKwkJCSAgICAgICJFcnJvciByZW1vdmlu ZyBGQjoldSAoJWQpXG4iLCBidWZmZXItPmZiLT5iYXNlLmlkLCByZXQpOwo+ICsKPiArCWJ1ZmZl ci0+ZmIgPSBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRybV9jbGllbnRfYnVmZmVyX2Fk ZGZiKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyLAo+ICsJCQkJICAgdTMyIHdpZHRo LCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYg KmNsaWVudCA9IGJ1ZmZlci0+Y2xpZW50Owo+ICsJc3RydWN0IGRybV9tb2RlX2ZiX2NtZCBmYl9y ZXEgPSB7IH07Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvOwo+ICsJaW50 IHJldDsKPiArCj4gKwlpbmZvID0gZHJtX2Zvcm1hdF9pbmZvKGZvcm1hdCk7Cj4gKwlmYl9yZXEu YnBwID0gaW5mby0+Y3BwWzBdICogODsKPiArCWZiX3JlcS5kZXB0aCA9IGluZm8tPmRlcHRoOwo+ ICsJZmJfcmVxLndpZHRoID0gd2lkdGg7Cj4gKwlmYl9yZXEuaGVpZ2h0ID0gaGVpZ2h0Owo+ICsJ ZmJfcmVxLmhhbmRsZSA9IGJ1ZmZlci0+aGFuZGxlOwo+ICsJZmJfcmVxLnBpdGNoID0gYnVmZmVy LT5waXRjaDsKPiArCj4gKwlyZXQgPSBkcm1fbW9kZV9hZGRmYihjbGllbnQtPmRldiwgJmZiX3Jl cSwgY2xpZW50LT5maWxlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwli dWZmZXItPmZiID0gZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChjbGllbnQtPmRldiwgYnVmZmVyLT5j bGllbnQtPmZpbGUsIGZiX3JlcS5mYl9pZCk7Cj4gKwlpZiAoV0FSTl9PTighYnVmZmVyLT5mYikp Cj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJLyogZHJvcCB0aGUgcmVmZXJlbmNlIHdlIHBp Y2tlZCB1cCBpbiBmcmFtZWJ1ZmZlciBsb29rdXAgKi8KPiArCWRybV9mcmFtZWJ1ZmZlcl9wdXQo YnVmZmVyLT5mYik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1f Y2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0ZSAtIENyZWF0ZSBhIGNsaWVudCBmcmFtZWJ1ZmZlcgo+ ICsgKiBAY2xpZW50OiBEUk0gY2xpZW50Cj4gKyAqIEB3aWR0aDogRnJhbWVidWZmZXIgd2lkdGgK PiArICogQGhlaWdodDogRnJhbWVidWZmZXIgaGVpZ2h0Cj4gKyAqIEBmb3JtYXQ6IEJ1ZmZlciBm b3JtYXQKPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgJmRybV9jbGllbnRfYnVm ZmVyIHdoaWNoIGNvbnNpc3RzIG9mIGEKPiArICogJmRybV9mcmFtZWJ1ZmZlciBiYWNrZWQgYnkg YSBkdW1iIGJ1ZmZlci4KPiArICogQ2FsbCBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZSgp IHRvIGZyZWUgdGhlIGJ1ZmZlci4KPiArICoKPiArICogUmV0dXJuczoKPiArICogUG9pbnRlciB0 byBhIGNsaWVudCBidWZmZXIgb3IgYW4gZXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgo+ICsgKi8K PiArc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKPiArZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9j cmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUzMiB3aWR0aCwgdTMyIGhlaWdo dCwgdTMyIGZvcm1hdCkKPiArewo+ICsJc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXI7 Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWJ1ZmZlciA9IGRybV9jbGllbnRfYnVmZmVyX2NyZWF0ZShj bGllbnQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7Cj4gKwlpZiAoSVNfRVJSKGJ1ZmZlcikpCj4g KwkJcmV0dXJuIGJ1ZmZlcjsKPiArCj4gKwlyZXQgPSBkcm1fY2xpZW50X2J1ZmZlcl9hZGRmYihi dWZmZXIsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZHJtX2Ns aWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAr CX0KPiArCj4gKwlyZXR1cm4gYnVmZmVyOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVu dF9mcmFtZWJ1ZmZlcl9jcmVhdGUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9jbGllbnRfZnJhbWVi dWZmZXJfZGVsZXRlIC0gRGVsZXRlIGEgY2xpZW50IGZyYW1lYnVmZmVyCj4gKyAqIEBidWZmZXI6 IERSTSBjbGllbnQgYnVmZmVyCj4gKyAqLwo+ICt2b2lkIGRybV9jbGllbnRfZnJhbWVidWZmZXJf ZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQo+ICt7CgpTdHlsZSBuaXQ6 IEknZCBwdWxsIHRoZSAKCglpZiAoIWJ1ZmZlcikKCQlyZXR1cm47CgpDYXNlIG91dCBvZiB0aGUg YmVsb3cgMiBmdW5jdGlvbnMgYW5kIGludG8gdGhpcyBvbmUgaGVyZTogT25seSBoZXJlIGl0J3MK bmVlZGVkLCBhbmQgaXQgbWFrZXMgaXQgYSBiaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhpcyBmdW5j dGlvbiBkb2VzIHRoZQpyaWdodCB0aGluZyBmb3IgTlVMTCBidWZmZXJzLgoKQWxzbyBwbGVhc2Ug ZXhwbGFpbiB0aGlzIGluIHRoZSBrZXJuZWxkb2MuCgo+ICsJZHJtX2NsaWVudF9idWZmZXJfcm1m YihidWZmZXIpOwo+ICsJZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5j Cj4gaW5kZXggZjY5MTBlYmU0ZDBlLi42N2FjNzkzYTcxMDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiBA QCAtNTA1LDYgKzUwNSw3IEBAIGludCBkcm1fZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCWRldi0+ZHJpdmVyID0gZHJpdmVyOwo+ICAKPiAgCUlOSVRfTElTVF9IRUFEKCZkZXYt PmZpbGVsaXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZkZXYtPmZpbGVsaXN0X2ludGVybmFsKTsK PiAgCUlOSVRfTElTVF9IRUFEKCZkZXYtPmN0eGxpc3QpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJmRl di0+dm1hbGlzdCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5tYXBsaXN0KTsKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5o Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjExMzc5ZWFmMzEx OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKPiBAQCAt MCwwICsxLDgzIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4g Kwo+ICsjaWZuZGVmIF9EUk1fQ0xJRU5UX0hfCj4gKyNkZWZpbmUgX0RSTV9DTElFTlRfSF8KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArc3RydWN0IGRybV9kZXZpY2U7Cj4g K3N0cnVjdCBkcm1fZnJhbWVidWZmZXI7Cj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiArc3Ry dWN0IGRybV9taW5vcjsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgLSBE Uk0gY2xpZW50IGluc3RhbmNlCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgewo+ICsJ LyoqCj4gKwkgKiBAbGlzdDoKPiArCSAqCj4gKwkgKiBMaXN0IG9mIGFsbCBvcGVuIGNsaWVudCBm aWxlcyBvZiBhIERSTSBkZXZpY2UsIGxpbmtlZCBpbnRvCj4gKwkgKiAmZHJtX2RldmljZS5maWxl bGlzdF9pbnRlcm5hbC4gUHJvdGVjdGVkIGJ5ICZkcm1fZGV2aWNlLmZpbGVsaXN0X211dGV4Lgo+ ICsJICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZGV2 OiBEUk0gZGV2aWNlCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4gKwo+ICsJ LyoqCj4gKwkgKiBAZmlsZTogRFJNIGZpbGUKPiArCSAqLwo+ICsJc3RydWN0IGRybV9maWxlICpm aWxlOwo+ICsKPiArCS8qKgo+ICsJICogQHByaXZhdGU6IE9wdGlvbmFsIHBvaW50ZXIgdG8gY2xp ZW50IHByaXZhdGUgZGF0YQo+ICsJICovCj4gKwl2b2lkICpwcml2YXRlOwoKTm90IG5lZWRlZCBp ZiB3ZSBnbyB3aXRoIF9pbml0IGFuZCBfcmVsZWFzZSBiZWNhdXNlIG9mIGVtYmVkZGluZy4KCj4g K307Cj4gKwo+ICt2b2lkIGRybV9jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNs aWVudCk7Cj4gK3N0cnVjdCBkcm1fY2xpZW50X2RldiAqZHJtX2NsaWVudF9uZXcoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGRybV9jbGllbnRfYnVmZmVy IC0gRFJNIGNsaWVudCBidWZmZXIKPiArICovCj4gK3N0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciB7 Cj4gKwkvKioKPiArCSAqIEBjbGllbnQ6IERSTSBjbGllbnQKPiArCSAqLwo+ICsJc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQ7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAaGFuZGxlOiBCdWZmZXIg aGFuZGxlCj4gKwkgKi8KPiArCXUzMiBoYW5kbGU7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAcGl0Y2g6 IEJ1ZmZlciBwaXRjaAo+ICsJICovCj4gKwl1MzIgcGl0Y2g7Cj4gKwo+ICsJLyoqCj4gKwkgKiBA Z2VtOiBHRU0gb2JqZWN0IGJhY2tpbmcgdGhpcyBidWZmZXIKPiArCSAqLwo+ICsJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW07Cj4gKwo+ICsJLyoqCj4gKwkgKiBAdmFkZHI6IFZpcnR1YWwgYWRk cmVzcyBmb3IgdGhlIGJ1ZmZlcgo+ICsJICovCj4gKwl2b2lkICp2YWRkcjsKPiArCj4gKwkvKioK PiArCSAqIEBmYjogRFJNIGZyYW1lYnVmZmVyCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiOwo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKPiArZHJt X2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQs IHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdTMyIGZvcm1hdCk7Cj4gK3ZvaWQgZHJtX2NsaWVudF9m cmFtZWJ1ZmZlcl9kZWxldGUoc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIpOwo+ICsK PiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kZXZpY2UuaCBiL2luY2x1 ZGUvZHJtL2RybV9kZXZpY2UuaAo+IGluZGV4IDg1OGJhMTlhM2UyOS4uOWUyOTk3NmQ0ZTk4IDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kZXZpY2UuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9kZXZpY2UuaAo+IEBAIC03NCw2ICs3NCwxMyBAQCBzdHJ1Y3QgZHJtX2RldmljZSB7Cj4g IAlzdHJ1Y3QgbXV0ZXggZmlsZWxpc3RfbXV0ZXg7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVs aXN0Owo+ICAKPiArCS8qKgo+ICsJICogQGZpbGVsaXN0X2ludGVybmFsOgo+ICsJICoKPiArCSAq IExpc3Qgb2Ygb3BlbiBEUk0gZmlsZXMgZm9yIGluLWtlcm5lbCBjbGllbnRzLiBQcm90ZWN0ZWQg YnkgQGZpbGVsaXN0X211dGV4Lgo+ICsJICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVsaXN0 X2ludGVybmFsOwo+ICsKPiAgCS8qKiBcbmFtZSBNZW1vcnkgbWFuYWdlbWVudCAqLwo+ICAJLypA eyAqLwo+ICAJc3RydWN0IGxpc3RfaGVhZCBtYXBsaXN0OwkvKio8IExpbmtlZCBsaXN0IG9mIHJl Z2lvbnMgKi8KPiAtLSAKPiAyLjE1LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2lu ZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK