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 11:59:48 -0500 Message-ID: <20181128165948.GH154175@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-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2B5A6E04C for ; Wed, 28 Nov 2018 16:59:50 +0000 (UTC) Received: by mail-qt1-x844.google.com with SMTP id d18so26611711qto.8 for ; Wed, 28 Nov 2018 08:59:50 -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+IHdoaWNoIGp1c3QgbmVlZHMgdG8gYmUgaW5kZW50ZW5kLgoKVGhpcyBp c24ndCBhIGZ1bmN0aW9uLCBidXQgYSBzZXJpZXMgb2YgZmxhZ3MgcHJlZml4ZWQgd2l0aCBEUk1f TU9ERVNFVF9BQ1FVSVJFXwooY3VycmVudGx5IG9ubHkgb25lIHRoZXJlLCBidXQgcGVyaGFwcyBt b3JlIGNvdWxkIGNvbWUpLgoKPiAKPiBBbmQgYSBiaWtlc2hlZDogSSdkIHB1dCByZXQgbGFzdCBp biBib3RoIG1hY3JvcywgSSB0aGluayB0aGF0J3Mgd2hlcmUKPiB1c3VhbGx5IHRoZSBjdXJzb3Jz L291dHB1dCB2YXJpYWJsZXMgYXJlLgo+IAo+ID4gKyAqCj4gPiArICogVXNlIHRoZXNlIG1hY3Jv cyB0byBzaW1wbGlmeSBncmFiYmluZyBhbGwgbW9kZXNldCBsb2NrcyB1c2luZyBhIGxvY2FsCj4g PiArICogY29udGV4dC4gVGhpcyBoYXMgdGhlIGFkdmFudGFnZSBvZiByZWR1Y2luZyBib2lsZXJw bGF0ZSwgYnV0IGFsc28gcHJvcGVybHkKPiA+ICsgKiBjaGVja2luZyByZXR1cm4gdmFsdWVzIHdo ZXJlIGFwcHJvcHJpYXRlLgo+ID4gKyAqCj4gPiArICogQW55IGNvZGUgcnVuIGJldHdlZW4gQkVH SU4gYW5kIEVORCB3aWxsIGJlIGhvbGRpbmcgdGhlIG1vZGVzZXQgbG9ja3MuCj4gPiArICoKPiA+ ICsgKiBUaGlzIG11c3QgYmUgcGFpcmVkIHdpdGggRFJNX01PREVTRVRfTE9DQUxfQUxMX0VORC4g V2Ugd2lsbCBqdW1wIGJhY2sgYW5kCj4gCj4gX0VORCgpIGZvciB0aGUgaHlwZXJsaW5rLiBBbHNv IHMvTE9DQUwvTE9DSy8KPiAKPiA+ICsgKiBmb3J0aCBiZXR3ZWVuIHRoZSBsYWJlbHMgb24gZGVh ZGxvY2sgYW5kIGVycm9yIGNvbmRpdGlvbnMuCj4gCj4gTWF5YmUgYWRkOgo+IAo+ICJEcml2ZXJz IGNhbiBhY3F1aXJlIGFkZGl0aW9uYWwgbW9kZXNldCBsb2Nrcy4gSWYgYW55IGxvY2sgYWNxdWlz aXRpb24KPiBmYWlscyB0aGUgY29udHJvbCBmbG93IG5lZWRzIHRvIGp1bXAgdG8gRFJNX01PREVT RVRfTE9DS19BTExfRU5EKCksIHdpdGgKPiB0aGUgQHJldCBwYXJhbWV0ZXIgY29udGFpbmluZyB0 aGUgcmV0dXJuIHZhbHVlIG9mIGRybV9tb2Rlc2V0X2xvY2soKS4iCj4gCj4gU2luY2UgbWFraW5n IHRoYXQgcG9zc2libGUgd2FzIHRoZSBlbnRpcmUgcG9pbnQgb2YgdGhpcyBleGVyY2lzZS4KPiAK PiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IFRoZSBvbmx5IHBvc3NpYmxlIHZhbHVlIG9mIHJldCBp bW1lZGlhdGVseSBhZnRlcgo+ID4gKyAqCSAgICBEUk1fTU9ERVNFVF9MT0NLX0FMTF9CRUdJTiBp cyAwLCBzbyBubyBlcnJvciBjaGVja2luZyBpcyBuZWNlc3NhcnkuCj4gCj4gTG9va3MgcHJldHR5 IGluIHRoZSBnZW5lcmF0ZWQgaHRtbCBJIGd1ZXNzLCBidXQgaW5jb25zaXN0ZW50IHdpdGggdGhl Cj4gdXN1YWwgc3R5bGUsIHdoaWNoIGlzIGVtcHR5IGxpbmUgYWZ0ZXIgUmV0dXJuczogYW5kIHRo ZW4gbm8gaW5kZW50aW5nLgo+IAo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgRFJNX01PREVTRVRfTE9D S19BTExfQkVHSU4oZGV2LCByZXQsIGN0eCwgZmxhZ3MpCQlcCj4gPiArCWRybV9tb2Rlc2V0X2Fj cXVpcmVfaW5pdCgmY3R4LCBmbGFncyk7CQkJCVwKPiA+ICttb2Rlc2V0X2xvY2tfcmV0cnk6CQkJ CQkJCVwKPiA+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCk7CQkJ XAo+ID4gKwlpZiAocmV0KQkJCQkJCQlcCj4gPiArCQlnb3RvIG1vZGVzZXRfbG9ja19mYWlsOwo+ ID4gKwo+ID4gKy8qKgo+ID4gKyAqIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCAtIEhlbHBlciB0 byByZWxlYXNlIGFuZCBjbGVhbnVwIG1vZGVzZXQgbG9ja3MKPiA+ICsgKiBAcmV0OiBsb2NhbCBy ZXQvZXJyL2V0YyB2YXJpYWJsZSB0byB0cmFjayBlcnJvciBzdGF0dXMKPiA+ICsgKiBAY3R4OiBs b2NhbCBtb2Rlc2V0IGFjcXVpcmUgY29udGV4dCwgd2lsbCBiZSBkZXJlZmVyZW5jZWQKPiA+ICsg Kgo+ID4gKyAqIFRoZSBvdGhlciBzaWRlIG9mIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOLiBJ dCB3aWxsIGJvdW5jZSBiYWNrIHRvIEJFR0lOIGlmCj4gCj4gKCkKPiAKPiA+ICsgKiByZXQgaXMg LUVERUFETEsuCj4gPiArICoKPiA+ICsgKiBJdCdzIGltcG9ydGFudCB0aGF0IHlvdSB1c2UgdGhl IHNhbWUgcmV0IHZhcmlhYmxlIGZvciBiZWdpbiBhbmQgZW5kIHNvCj4gPiArICogZGVhZGxvY2sg Y29uZGl0aW9ucyBhcmUgcHJvcGVybHkgaGFuZGxlZC4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6 IHJldCB3aWxsIGJlIHVudG91Y2hlZCB1bmxlc3MgaXQgaXMgLUVERUFETEsuIFRoYXQgbWVhbnMg dGhhdCBpZiB5b3UKPiA+ICsgKgkgICAgc3VjY2Vzc2Z1bGx5IGFjcXVpcmUgdGhlIGxvY2tzLCBy ZXQgd2lsbCBiZSB3aGF0ZXZlciB5b3VyIGNvZGUgc2V0cwo+ID4gKyAqCSAgICBpdCB0by4gSWYg dGhlcmUgaXMgYSBkZWFkbG9jayBvciBvdGhlciBmYWlsdXJlIHdpdGggYWNxdWlyZSBvcgo+ID4g KyAqCSAgICBiYWNrb2ZmLCByZXQgd2lsbCBiZSBzZXQgdG8gdGhhdCBmYWlsdXJlLiBJbiBib3Ro IG9mIHRoZXNlIGNhc2VzIHRoZQo+ID4gKyAqCSAgICBjb2RlIGJldHdlZW4gQkVHSU4vRU5EIHdp bGwgbm90IGJlIHJ1biwgc28gdGhlIGZhaWx1cmUgd2lsbCByZWZsZWN0Cj4gPiArICoJICAgIHRo ZSBpbmFiaWxpdHkgdG8gZ3JhYiB0aGUgbG9ja3MuCj4gPiArICovCj4gPiArI2RlZmluZSBEUk1f TU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0LCBjdHgpCQkJCVwKPiA+ICttb2Rlc2V0X2xvY2tfZmFp bDoJCQkJCQkJXAo+ID4gKwlpZiAocmV0ID09IC1FREVBRExLKSB7CQkJCQkJXAo+ID4gKwkJcmV0 ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsJCQlcCj4gPiArCQlpZiAoIXJldCkJCQkJCQlc Cj4gPiArCQkJZ290byBtb2Rlc2V0X2xvY2tfcmV0cnk7CQkJXAo+ID4gKwl9CQkJCQkJCQlcCj4g PiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CQkJCQlcCj4gPiArCWRybV9tb2Rlc2V0 X2FjcXVpcmVfZmluaSgmY3R4KTsKPiA+ICsKPiA+ICAjZW5kaWYgLyogRFJNX01PREVTRVRfTE9D S19IXyAqLwo+IAo+IFBsZWFzZSByZWZlcmVuY2UgdGhlc2UgdHdvIGNvbnZlbmllbmNlIG1hY3Jv cyBhdCB0aGUgZW5kIG9mIHRoZSBET0M6Cj4gb3ZlcnZpZXcgY29tbWVudCBpbiBkcm1fbW9kZXNl dF9sb2NrLmMsIGUuZy4KPiAKPiAiRm9yIGNvbnZlbmllbmNlIHRoaXMgY29udHJvbCBmbG93IGlz IGltcGxlbWVudGVkIGluIHRoZQo+IERSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKCkgYW5kIERS TV9NT0RFU0VUX0xPQ0tfQUxMX0VORCgpIGZvciB0aGUgY2FzZQo+IHdoZXJlIGFsbCBtb2Rlc2V0 IGxvY2tzIG5lZWQgdG8gYmUgdGFrZW4gdGhyb3VnaAo+IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0 eCgpLiIKPiAKPiBBbmQgbWF5YmUgaW4gdGhlIF9sb2NrX2FsbF9jdHgoKSBmdW5jdGlvbiBhZGQ6 Cj4gCj4gIlNlZSBhbHNvIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKCkgYW5kIERSTV9NT0RF U0VUX0xPQ0tfQUxMX0VORCgpLiIKPiAKPiBXaXRoIHRoZSBkb2MgYmlrZXNoZWRzOgo+IAo+IFJl dmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IC0tIAo+ IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBo dHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdv b2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=