From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 3/3] drm: Add DRM_MODESET_LOCK_BEGIN/END helpers Date: Wed, 28 Nov 2018 09:31:11 -0500 Message-ID: <20181128143111.GG154175@art_vandelay> References: <20181127224654.48331-1-sean@poorly.run> <20181127224654.48331-3-sean@poorly.run> <20181128090107.GL4266@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by gabe.freedesktop.org (Postfix) with ESMTPS id F00066E180 for ; Wed, 28 Nov 2018 14:31:13 +0000 (UTC) Received: by mail-qt1-x843.google.com with SMTP id t13so26008237qtn.3 for ; Wed, 28 Nov 2018 06:31:13 -0800 (PST) Content-Disposition: inline In-Reply-To: <20181128090107.GL4266@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Maxime Ripard , dri-devel@lists.freedesktop.org, David Airlie , Sean Paul , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMjgsIDIwMTggYXQgMTA6MDE6MDdBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIE5vdiAyNywgMjAxOCBhdCAwNTo0Njo0MFBNIC0wNTAwLCBTZWFuIFBh dWwgd3JvdGU6Cj4gPiBGcm9tOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+ IAo+ID4gVGhpcyBwYXRjaCBhZGRzIGEgY291cGxlIG9mIGhlbHBlcnMgdG8gcmVtb3ZlIHRoZSBi b2lsZXJwbGF0ZSBpbnZvbHZlZAo+ID4gaW4gZ3JhYmJpbmcgYWxsIG9mIHRoZSBtb2Rlc2V0IGxv Y2tzLgo+ID4gCj4gPiBJJ3ZlIGFsc28gY29udmVydGVkIHRoZSBvYnZpb3VzIGNhc2VzIGluIGRy bSBjb3JlIHRvIHVzZSB0aGUgaGVscGVycy4KPiA+IAo+ID4gVGhlIG9ubHkgcmVtYWluaW5nIGlu c3RhbmNlIG9mIGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eCgpIGlzIGluCj4gPiBkcm1fZnJhbWVi dWZmZXIuIEl0J3MgY29tcGxpY2F0ZWQgYnkgdGhlIHN0YXRlIGNsZWFyIHRoYXQgb2NjdXJzIG9u Cj4gPiBkZWFkbG9jay4gQVRNLCB0aGVyZSdzIG5vIHdheSB0byBpbmplY3QgY29kZSBpbiB0aGUg ZGVhZGxvY2sgcGF0aCB3aXRoCj4gPiB0aGUgaGVscGVycywgc28gaXQncyB1bmZpdCBmb3IgY29u dmVyc2lvbi4KPiA+IAo+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+ IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ID4gLS0t Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCA1MiArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyAg ICB8IDE0ICsrLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAg fCAxNSArKy0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyAgICAgICAgIHwg MTYgKystLS0tLS0tCj4gPiAgaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfbG9jay5oICAgICAgfCA1 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNzIg aW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gPiBpbmRleCAxNWE3NWI5ZjE4NWZhLi45OTc3MzVlZWE5YWJjIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiBAQCAtMzEyNCwyMyArMzEy NCwxMyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gPiAgCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiAgCWlu dCByZXQ7Cj4gPiAgCj4gPiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ IC0Jd2hpbGUgKDEpIHsKPiA+IC0JCXJldCA9IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYs ICZjdHgpOwo+ID4gLQkJaWYgKCFyZXQpCj4gPiAtCQkJcmV0ID0gX19kcm1fYXRvbWljX2hlbHBl cl9kaXNhYmxlX2FsbChkZXYsICZjdHgsIHRydWUpOwo+ID4gLQo+ID4gLQkJaWYgKHJldCAhPSAt RURFQURMSykKPiA+IC0JCQlicmVhazsKPiA+IC0KPiA+IC0JCWRybV9tb2Rlc2V0X2JhY2tvZmYo JmN0eCk7Cj4gPiAtCX0KPiA+ICsJRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCByZXQs IGN0eCwgMCk7Cj4gPiAgCj4gPiArCXJldCA9IF9fZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9h bGwoZGV2LCAmY3R4LCB0cnVlKTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCURSTV9FUlJPUigiRGlz YWJsaW5nIGFsbCBjcnRjJ3MgZHVyaW5nIHVubG9hZCBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsK PiA+ICAKPiA+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+IC0JZHJtX21vZGVz ZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0 LCBjdHgpOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3NodXRk b3duKTsKPiA+ICAKPiA+IEBAIC0zMTc1LDE0ICszMTY1LDcgQEAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKmRybV9hdG9taWNfaGVscGVyX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiA+ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ID4gIAlpbnQgZXJyOwo+ID4g IAo+ID4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiAtCj4gPiAtcmV0 cnk6Cj4gPiAtCWVyciA9IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpOwo+ID4g LQlpZiAoZXJyIDwgMCkgewo+ID4gLQkJc3RhdGUgPSBFUlJfUFRSKGVycik7Cj4gPiAtCQlnb3Rv IHVubG9jazsKPiA+IC0JfQo+ID4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9CRUdJTihkZXYsIGVy ciwgY3R4LCAwKTsKPiA+ICAKPiA+ICAJc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNh dGVfc3RhdGUoZGV2LCAmY3R4KTsKPiA+ICAJaWYgKElTX0VSUihzdGF0ZSkpCj4gPiBAQCAtMzE5 MSwxOCArMzE3NCwxNCBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqZHJtX2F0b21pY19oZWxw ZXJfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAllcnIgPSBkcm1fYXRvbWlj X2hlbHBlcl9kaXNhYmxlX2FsbChkZXYsICZjdHgpOwo+ID4gIAlpZiAoZXJyIDwgMCkgewo+ID4g IAkJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ID4gLQkJc3RhdGUgPSBFUlJfUFRSKGVy cik7Cj4gPiAgCQlnb3RvIHVubG9jazsKPiA+ICAJfQo+ID4gIAo+ID4gIHVubG9jazoKPiA+IC0J aWYgKFBUUl9FUlIoc3RhdGUpID09IC1FREVBRExLKSB7Cj4gPiAtCQlkcm1fbW9kZXNldF9iYWNr b2ZmKCZjdHgpOwo+ID4gLQkJZ290byByZXRyeTsKPiA+IC0JfQo+ID4gKwlEUk1fTU9ERVNFVF9M T0NLX0FMTF9FTkQoZXJyLCBjdHgpOwo+ID4gKwlpZiAoZXJyKQo+ID4gKwkJcmV0dXJuIEVSUl9Q VFIoZXJyKTsKPiA+ICAKPiA+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+IC0J ZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gIAlyZXR1cm4gc3RhdGU7Cj4gPiAg fQo+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZCk7Cj4gPiBAQCAt MzI3MiwyMyArMzI1MSwxMiBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gPiAgCj4gPiAgCWRybV9tb2RlX2NvbmZpZ19yZXNldChkZXYpOwo+ ID4gIAo+ID4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiAtCXdoaWxl ICgxKSB7Cj4gPiAtCQllcnIgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsK PiA+IC0JCWlmIChlcnIpCj4gPiAtCQkJZ290byBvdXQ7Cj4gPiArCURSTV9NT0RFU0VUX0xPQ0tf QUxMX0JFR0lOKGRldiwgZXJyLCBjdHgsIDApOwo+ID4gIAo+ID4gLQkJZXJyID0gZHJtX2F0b21p Y19oZWxwZXJfY29tbWl0X2R1cGxpY2F0ZWRfc3RhdGUoc3RhdGUsICZjdHgpOwo+ID4gLW91dDoK PiA+IC0JCWlmIChlcnIgIT0gLUVERUFETEspCj4gPiAtCQkJYnJlYWs7Cj4gPiAtCj4gPiAtCQlk cm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ID4gLQl9Cj4gPiArCWVyciA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0YXRlLCAmY3R4KTsKPiA+ICAKPiA+ICAJ c3RhdGUtPmFjcXVpcmVfY3R4ID0gTlVMTDsKPiA+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2Nrcygm Y3R4KTsKPiA+IC0JZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gKwlEUk1fTU9E RVNFVF9MT0NLX0FMTF9FTkQoZXJyLCBjdHgpOwo+ID4gIAlkcm1fYXRvbWljX3N0YXRlX3B1dChz dGF0ZSk7Cj4gPiAgCj4gPiAgCXJldHVybiBlcnI7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9jb2xvcl9tZ210LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQu Ywo+ID4gaW5kZXggNTgxY2MzNzg4MjIzMC4uOWM2ODI3MTcxZDc5NSAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2NvbG9yX21nbXQuYwo+ID4gQEAgLTI1NSwxMSArMjU1LDcgQEAgaW50IGRybV9tb2Rl X2dhbW1hX3NldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAlpZiAoY3J0Y19s dXQtPmdhbW1hX3NpemUgIT0gY3J0Yy0+Z2FtbWFfc2l6ZSkKPiA+ICAJCXJldHVybiAtRUlOVkFM Owo+ID4gIAo+ID4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiAtcmV0 cnk6Cj4gPiAtCXJldCA9IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpOwo+ID4g LQlpZiAocmV0KQo+ID4gLQkJZ290byBvdXQ7Cj4gPiArCURSTV9NT0RFU0VUX0xPQ0tfQUxMX0JF R0lOKGRldiwgcmV0LCBjdHgsIDApOwo+ID4gIAo+ID4gIAlzaXplID0gY3J0Y19sdXQtPmdhbW1h X3NpemUgKiAoc2l6ZW9mKHVpbnQxNl90KSk7Cj4gPiAgCXJfYmFzZSA9IGNydGMtPmdhbW1hX3N0 b3JlOwo+ID4gQEAgLTI4NCwxMyArMjgwLDcgQEAgaW50IGRybV9tb2RlX2dhbW1hX3NldF9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gIAkJCQkgICAgIGNydGMtPmdhbW1hX3NpemUs ICZjdHgpOwo+ID4gIAo+ID4gIG91dDoKPiA+IC0JaWYgKHJldCA9PSAtRURFQURMSykgewo+ID4g LQkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+IC0JCWdvdG8gcmV0cnk7Cj4gPiAtCX0K PiA+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+IC0JZHJtX21vZGVzZXRfYWNx dWlyZV9maW5pKCZjdHgpOwo+ID4gLQo+ID4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0 LCBjdHgpOwo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gIH0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4g PiBpbmRleCBhZjRiOTRjZThlOTQyLi40YjNkNDUyMzk0MDdlIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jCj4gPiBAQCAtNTk5LDExICs1OTksOCBAQCBpbnQgZHJtX21vZGVfc2V0Y3J0YyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gIAlwbGFuZSA9IGNydGMtPnByaW1hcnk7 Cj4gPiAgCj4gPiAgCW11dGV4X2xvY2soJmNydGMtPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ ID4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgRFJNX01PREVTRVRfQUNRVUlSRV9J TlRFUlJVUFRJQkxFKTsKPiA+IC1yZXRyeToKPiA+IC0JcmV0ID0gZHJtX21vZGVzZXRfbG9ja19h bGxfY3R4KGNydGMtPmRldiwgJmN0eCk7Cj4gPiAtCWlmIChyZXQpCj4gPiAtCQlnb3RvIG91dDsK PiA+ICsJRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCByZXQsIGN0eCwKPiA+ICsJCQkJ ICAgRFJNX01PREVTRVRfQUNRVUlSRV9JTlRFUlJVUFRJQkxFKTsKPiA+ICAKPiA+ICAJaWYgKGNy dGNfcmVxLT5tb2RlX3ZhbGlkKSB7Cj4gPiAgCQkvKiBJZiB3ZSBoYXZlIGEgbW9kZSB3ZSBuZWVk IGEgZnJhbWVidWZmZXIuICovCj4gPiBAQCAtNzY4LDEzICs3NjUsNyBAQCBpbnQgZHJtX21vZGVf c2V0Y3J0YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gIAlmYiA9IE5V TEw7Cj4gPiAgCW1vZGUgPSBOVUxMOwo+ID4gIAo+ID4gLQlpZiAocmV0ID09IC1FREVBRExLKSB7 Cj4gPiAtCQlyZXQgPSBkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ID4gLQkJaWYgKCFyZXQp Cj4gPiAtCQkJZ290byByZXRyeTsKPiA+IC0JfQo+ID4gLQlkcm1fbW9kZXNldF9kcm9wX2xvY2tz KCZjdHgpOwo+ID4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiArCURSTV9N T0RFU0VUX0xPQ0tfQUxMX0VORChyZXQsIGN0eCk7Cj4gPiAgCW11dGV4X3VubG9jaygmY3J0Yy0+ ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gPiAgCj4gPiAgCXJldHVybiByZXQ7Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9wbGFuZS5jCj4gPiBpbmRleCA2Nzk0NTVlMzY4Mjk4Li4zNzQ3MmVkYjRmMzAzIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3BsYW5lLmMKPiA+IEBAIC03NjcsMTEgKzc2Nyw4IEBAIHN0YXRpYyBpbnQgc2V0 cGxhbmVfaW50ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCXN0cnVjdCBkcm1f bW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAtCWRybV9t b2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVSUlVQVElC TEUpOwo+ID4gLXJldHJ5Ogo+ID4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgocGxh bmUtPmRldiwgJmN0eCk7Cj4gPiAtCWlmIChyZXQpCj4gPiAtCQlnb3RvIGZhaWw7Cj4gPiArCURS TV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKHBsYW5lLT5kZXYsIHJldCwgY3R4LAo+ID4gKwkJCQkg ICBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVSUlVQVElCTEUpOwo+ID4gIAo+ID4gIAlpZiAoZHJt X2Rydl91c2VzX2F0b21pY19tb2Rlc2V0KHBsYW5lLT5kZXYpKQo+ID4gIAkJcmV0ID0gX19zZXRw bGFuZV9hdG9taWMocGxhbmUsIGNydGMsIGZiLAo+ID4gQEAgLTc4MiwxNCArNzc5LDcgQEAgc3Rh dGljIGludCBzZXRwbGFuZV9pbnRlcm5hbChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJ CQkJCSAgY3J0Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oLAo+ID4gIAkJCQkJICBzcmNfeCwg c3JjX3ksIHNyY193LCBzcmNfaCwgJmN0eCk7Cj4gPiAgCj4gPiAtZmFpbDoKPiA+IC0JaWYgKHJl dCA9PSAtRURFQURMSykgewo+ID4gLQkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsK PiA+IC0JCWlmICghcmV0KQo+ID4gLQkJCWdvdG8gcmV0cnk7Cj4gPiAtCX0KPiA+IC0JZHJtX21v ZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+IC0JZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZj dHgpOwo+ID4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0LCBjdHgpOwo+ID4gIAo+ID4g IAlyZXR1cm4gcmV0Owo+ID4gIH0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9k ZXNldF9sb2NrLmggYi9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9sb2NrLmgKPiA+IGluZGV4IGE2 ODVkMWJiMjFmMjYuLjYyMTNhMTE0NDU2MzMgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fbW9kZXNldF9sb2NrLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2xvY2su aAo+ID4gQEAgLTEzMCw0ICsxMzAsNTggQEAgdm9pZCBkcm1fd2Fybl9vbl9tb2Rlc2V0X25vdF9h bGxfbG9ja2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gIGludCBkcm1fbW9kZXNldF9s b2NrX2FsbF9jdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQkgICAgIHN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KTsKPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBEUk1f TU9ERVNFVF9MT0NLX0FMTF9CRUdJTiAtIEhlbHBlciB0byBhY3F1aXJlIG1vZGVzZXQgbG9ja3MK PiA+ICsgKiBAZGV2OiBkcm0gZGV2aWNlCj4gPiArICogQHJldDogbG9jYWwgcmV0L2Vyci9ldGMg dmFyaWFibGUgdG8gdHJhY2sgZXJyb3Igc3RhdHVzCj4gPiArICogQGN0eDogbG9jYWwgbW9kZXNl dCBhY3F1aXJlIGNvbnRleHQsIHdpbGwgYmUgZGVyZWZlcmVuY2VkCj4gPiArICogQGZsYWdzOiBE Uk1fTU9ERVNFVF9BQ1FVSVJFXyogZmxhZ3MgdG8gcGFzcyB0byBhY3F1aXJlX2luaXQoKQo+IAo+ IEZ1bGwgZnVuY3Rpb24gbmFtZSBmb3IgdGhlIG5pY2UgaHlwZXJsaW5rLiBOZWVkcyBhIGNvbnRp bnVhdGlvbiBsaW5lLAo+IHdoaWNoIGp1c3QgbmVlZHMgdG8gYmUgaW5kZW50ZW5kLgo+IAo+IEFu ZCBhIGJpa2VzaGVkOiBJJ2QgcHV0IHJldCBsYXN0IGluIGJvdGggbWFjcm9zLCBJIHRoaW5rIHRo YXQncyB3aGVyZQo+IHVzdWFsbHkgdGhlIGN1cnNvcnMvb3V0cHV0IHZhcmlhYmxlcyBhcmUuCgpG b3IgX0JFR0lOIGlzIGVmZmVjdGl2ZWx5IGEgdm9pZCwgc2luY2UgaXQgY2FuJ3QgcmV0dXJuIHdp dGggYW55dGhpbmcgYnV0CnJldD09MC4gSSBhZ29uaXplZCBhIGxpdHRsZSBvdmVyIGRvaW5nIHRo aXMgZm9yIF9FTkQsIGJ1dCBmaWd1cmVkIHNpbmNlIGl0IHdhcwpzZXR0aW5nIHRoZSB2YWx1ZSBv ZiByZXQsIGl0IG1pZ2h0IGJlIG1pc2xlYWRpbmcgdG8gcHV0IGl0IGF0IHRoZSBlbmQgc2luY2UK Zm9sa3MgbWlnaHQgbm90IHJlYWxpemUgdGhhdCBpZiB0aGV5IGlnbm9yZSBpdCByZXQgY2FuIHN0 aWxsIGNoYW5nZSAoaWYgdGhhdAptYWtlcyBzZW5zZSkuIEluIG90aGVyIHdvcmRzLCBJIGRvbid0 IHdhbnQgcGVvcGxlIHRvIHRoaW5rIHRoYXQ6CgpyZXQgPSBEUk1fTU9ERVNFVF9MT0NBTF9BTExf RU5EKHJldCwgY3R4KTsKCmJlaGF2ZXMgZGlmZmVyZW50bHkgdGhhbiAKCkRSTV9NT0RFU0VUX0xP Q0FMX0FMTF9FTkQocmV0LCBjdHgpOwoKQnkgbm90IGFsbG93aW5nIHRoZSBhc3NpZ25tZW50LCBp dCBtaWdodCBwb2tlIHBlb3BsZSB0byB0aGluayBtb3JlIGFib3V0IHJldCBvbgpFTkQuCgpJJ20g aGFwcHkgdG8gaGF2ZSBteSBtaW5kIGNoYW5nZWQgb24gdGhpcywgYnV0IGZpZ3VyZWQgY29udGV4 dCB3b3VsZCBiZSB1c2VmdWwuCgpBbGwgb3RoZXIgYmlrZXNoZWRzIExHVE0uCgpTZWFuCgo+IAo+ ID4gKyAqCj4gPiArICogVXNlIHRoZXNlIG1hY3JvcyB0byBzaW1wbGlmeSBncmFiYmluZyBhbGwg bW9kZXNldCBsb2NrcyB1c2luZyBhIGxvY2FsCj4gPiArICogY29udGV4dC4gVGhpcyBoYXMgdGhl IGFkdmFudGFnZSBvZiByZWR1Y2luZyBib2lsZXJwbGF0ZSwgYnV0IGFsc28gcHJvcGVybHkKPiA+ ICsgKiBjaGVja2luZyByZXR1cm4gdmFsdWVzIHdoZXJlIGFwcHJvcHJpYXRlLgo+ID4gKyAqCj4g PiArICogQW55IGNvZGUgcnVuIGJldHdlZW4gQkVHSU4gYW5kIEVORCB3aWxsIGJlIGhvbGRpbmcg dGhlIG1vZGVzZXQgbG9ja3MuCj4gPiArICoKPiA+ICsgKiBUaGlzIG11c3QgYmUgcGFpcmVkIHdp dGggRFJNX01PREVTRVRfTE9DQUxfQUxMX0VORC4gV2Ugd2lsbCBqdW1wIGJhY2sgYW5kCj4gCj4g X0VORCgpIGZvciB0aGUgaHlwZXJsaW5rLiBBbHNvIHMvTE9DQUwvTE9DSy8KPiAKPiA+ICsgKiBm b3J0aCBiZXR3ZWVuIHRoZSBsYWJlbHMgb24gZGVhZGxvY2sgYW5kIGVycm9yIGNvbmRpdGlvbnMu Cj4gCj4gTWF5YmUgYWRkOgo+IAo+ICJEcml2ZXJzIGNhbiBhY3F1aXJlIGFkZGl0aW9uYWwgbW9k ZXNldCBsb2Nrcy4gSWYgYW55IGxvY2sgYWNxdWlzaXRpb24KPiBmYWlscyB0aGUgY29udHJvbCBm bG93IG5lZWRzIHRvIGp1bXAgdG8gRFJNX01PREVTRVRfTE9DS19BTExfRU5EKCksIHdpdGgKPiB0 aGUgQHJldCBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGRybV9tb2Rl c2V0X2xvY2soKS4iCj4gCj4gU2luY2UgbWFraW5nIHRoYXQgcG9zc2libGUgd2FzIHRoZSBlbnRp cmUgcG9pbnQgb2YgdGhpcyBleGVyY2lzZS4KPiAKPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IFRo ZSBvbmx5IHBvc3NpYmxlIHZhbHVlIG9mIHJldCBpbW1lZGlhdGVseSBhZnRlcgo+ID4gKyAqCSAg ICBEUk1fTU9ERVNFVF9MT0NLX0FMTF9CRUdJTiBpcyAwLCBzbyBubyBlcnJvciBjaGVja2luZyBp cyBuZWNlc3NhcnkuCj4gCj4gTG9va3MgcHJldHR5IGluIHRoZSBnZW5lcmF0ZWQgaHRtbCBJIGd1 ZXNzLCBidXQgaW5jb25zaXN0ZW50IHdpdGggdGhlCj4gdXN1YWwgc3R5bGUsIHdoaWNoIGlzIGVt cHR5IGxpbmUgYWZ0ZXIgUmV0dXJuczogYW5kIHRoZW4gbm8gaW5kZW50aW5nLgo+IAo+ID4gKyAq Lwo+ID4gKyNkZWZpbmUgRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCByZXQsIGN0eCwg ZmxhZ3MpCQlcCj4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCBmbGFncyk7CQkJ CVwKPiA+ICttb2Rlc2V0X2xvY2tfcmV0cnk6CQkJCQkJCVwKPiA+ICsJcmV0ID0gZHJtX21vZGVz ZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCk7CQkJXAo+ID4gKwlpZiAocmV0KQkJCQkJCQlcCj4g PiArCQlnb3RvIG1vZGVzZXRfbG9ja19mYWlsOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIERSTV9N T0RFU0VUX0xPQ0tfQUxMX0VORCAtIEhlbHBlciB0byByZWxlYXNlIGFuZCBjbGVhbnVwIG1vZGVz ZXQgbG9ja3MKPiA+ICsgKiBAcmV0OiBsb2NhbCByZXQvZXJyL2V0YyB2YXJpYWJsZSB0byB0cmFj ayBlcnJvciBzdGF0dXMKPiA+ICsgKiBAY3R4OiBsb2NhbCBtb2Rlc2V0IGFjcXVpcmUgY29udGV4 dCwgd2lsbCBiZSBkZXJlZmVyZW5jZWQKPiA+ICsgKgo+ID4gKyAqIFRoZSBvdGhlciBzaWRlIG9m IERSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOLiBJdCB3aWxsIGJvdW5jZSBiYWNrIHRvIEJFR0lO IGlmCj4gCj4gKCkKPiAKPiA+ICsgKiByZXQgaXMgLUVERUFETEsuCj4gPiArICoKPiA+ICsgKiBJ dCdzIGltcG9ydGFudCB0aGF0IHlvdSB1c2UgdGhlIHNhbWUgcmV0IHZhcmlhYmxlIGZvciBiZWdp biBhbmQgZW5kIHNvCj4gPiArICogZGVhZGxvY2sgY29uZGl0aW9ucyBhcmUgcHJvcGVybHkgaGFu ZGxlZC4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IHJldCB3aWxsIGJlIHVudG91Y2hlZCB1bmxl c3MgaXQgaXMgLUVERUFETEsuIFRoYXQgbWVhbnMgdGhhdCBpZiB5b3UKPiA+ICsgKgkgICAgc3Vj Y2Vzc2Z1bGx5IGFjcXVpcmUgdGhlIGxvY2tzLCByZXQgd2lsbCBiZSB3aGF0ZXZlciB5b3VyIGNv ZGUgc2V0cwo+ID4gKyAqCSAgICBpdCB0by4gSWYgdGhlcmUgaXMgYSBkZWFkbG9jayBvciBvdGhl ciBmYWlsdXJlIHdpdGggYWNxdWlyZSBvcgo+ID4gKyAqCSAgICBiYWNrb2ZmLCByZXQgd2lsbCBi ZSBzZXQgdG8gdGhhdCBmYWlsdXJlLiBJbiBib3RoIG9mIHRoZXNlIGNhc2VzIHRoZQo+ID4gKyAq CSAgICBjb2RlIGJldHdlZW4gQkVHSU4vRU5EIHdpbGwgbm90IGJlIHJ1biwgc28gdGhlIGZhaWx1 cmUgd2lsbCByZWZsZWN0Cj4gPiArICoJICAgIHRoZSBpbmFiaWxpdHkgdG8gZ3JhYiB0aGUgbG9j a3MuCj4gPiArICovCj4gPiArI2RlZmluZSBEUk1fTU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0LCBj dHgpCQkJCVwKPiA+ICttb2Rlc2V0X2xvY2tfZmFpbDoJCQkJCQkJXAo+ID4gKwlpZiAocmV0ID09 IC1FREVBRExLKSB7CQkJCQkJXAo+ID4gKwkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4 KTsJCQlcCj4gPiArCQlpZiAoIXJldCkJCQkJCQlcCj4gPiArCQkJZ290byBtb2Rlc2V0X2xvY2tf cmV0cnk7CQkJXAo+ID4gKwl9CQkJCQkJCQlcCj4gPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3Mo JmN0eCk7CQkJCQlcCj4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiA+ICsK PiA+ICAjZW5kaWYgLyogRFJNX01PREVTRVRfTE9DS19IXyAqLwo+IAo+IFBsZWFzZSByZWZlcmVu Y2UgdGhlc2UgdHdvIGNvbnZlbmllbmNlIG1hY3JvcyBhdCB0aGUgZW5kIG9mIHRoZSBET0M6Cj4g b3ZlcnZpZXcgY29tbWVudCBpbiBkcm1fbW9kZXNldF9sb2NrLmMsIGUuZy4KPiAKPiAiRm9yIGNv bnZlbmllbmNlIHRoaXMgY29udHJvbCBmbG93IGlzIGltcGxlbWVudGVkIGluIHRoZQo+IERSTV9N T0RFU0VUX0xPQ0tfQUxMX0JFR0lOKCkgYW5kIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCgpIGZv ciB0aGUgY2FzZQo+IHdoZXJlIGFsbCBtb2Rlc2V0IGxvY2tzIG5lZWQgdG8gYmUgdGFrZW4gdGhy b3VnaAo+IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eCgpLiIKPiAKPiBBbmQgbWF5YmUgaW4gdGhl IF9sb2NrX2FsbF9jdHgoKSBmdW5jdGlvbiBhZGQ6Cj4gCj4gIlNlZSBhbHNvIERSTV9NT0RFU0VU X0xPQ0tfQUxMX0JFR0lOKCkgYW5kIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCgpLiIKPiAKPiBX aXRoIHRoZSBkb2MgYmlrZXNoZWRzOgo+IAo+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClNl YW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=