From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/3] drm: Add DRM_MODESET_LOCK_BEGIN/END helpers Date: Wed, 28 Nov 2018 10:01:07 +0100 Message-ID: <20181128090107.GL4266@phenom.ffwll.local> References: <20181127224654.48331-1-sean@poorly.run> <20181127224654.48331-3-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id ECB716E248 for ; Wed, 28 Nov 2018 09:01:11 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id o10so21362562edt.13 for ; Wed, 28 Nov 2018 01:01:11 -0800 (PST) Content-Disposition: inline In-Reply-To: <20181127224654.48331-3-sean@poorly.run> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: Maxime Ripard , dri-devel@lists.freedesktop.org, David Airlie , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDU6NDY6NDBQTSAtMDUwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IEZyb206IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+IAo+IFRoaXMgcGF0 Y2ggYWRkcyBhIGNvdXBsZSBvZiBoZWxwZXJzIHRvIHJlbW92ZSB0aGUgYm9pbGVycGxhdGUgaW52 b2x2ZWQKPiBpbiBncmFiYmluZyBhbGwgb2YgdGhlIG1vZGVzZXQgbG9ja3MuCj4gCj4gSSd2ZSBh bHNvIGNvbnZlcnRlZCB0aGUgb2J2aW91cyBjYXNlcyBpbiBkcm0gY29yZSB0byB1c2UgdGhlIGhl bHBlcnMuCj4gCj4gVGhlIG9ubHkgcmVtYWluaW5nIGluc3RhbmNlIG9mIGRybV9tb2Rlc2V0X2xv Y2tfYWxsX2N0eCgpIGlzIGluCj4gZHJtX2ZyYW1lYnVmZmVyLiBJdCdzIGNvbXBsaWNhdGVkIGJ5 IHRoZSBzdGF0ZSBjbGVhciB0aGF0IG9jY3VycyBvbgo+IGRlYWRsb2NrLiBBVE0sIHRoZXJlJ3Mg bm8gd2F5IHRvIGluamVjdCBjb2RlIGluIHRoZSBkZWFkbG9jayBwYXRoIHdpdGgKPiB0aGUgaGVs cGVycywgc28gaXQncyB1bmZpdCBmb3IgY29udmVyc2lvbi4KPiAKPiBDYzogRGFuaWVsIFZldHRl ciA8ZGFuaWVsQGZmd2xsLmNoPgo+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxA Y2hyb21pdW0ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YyB8IDUyICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X2NvbG9yX21nbXQuYyAgICB8IDE0ICsrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jICAgICAgICAgIHwgMTUgKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5j ICAgICAgICAgfCAxNiArKy0tLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfbG9jay5o ICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5n ZWQsIDcyIGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCj4gaW5kZXggMTVhNzViOWYxODVmYS4uOTk3NzM1ZWVhOWFiYyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTMxMjQsMjMgKzMxMjQsMTMg QEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiAgCWludCByZXQ7Cj4g IAo+IC0JZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+IC0Jd2hpbGUgKDEpIHsK PiAtCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKPiAtCQlpZiAo IXJldCkKPiAtCQkJcmV0ID0gX19kcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChkZXYsICZj dHgsIHRydWUpOwo+IC0KPiAtCQlpZiAocmV0ICE9IC1FREVBRExLKQo+IC0JCQlicmVhazsKPiAt Cj4gLQkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiAtCX0KPiArCURSTV9NT0RFU0VUX0xP Q0tfQUxMX0JFR0lOKGRldiwgcmV0LCBjdHgsIDApOwo+ICAKPiArCXJldCA9IF9fZHJtX2F0b21p Y19oZWxwZXJfZGlzYWJsZV9hbGwoZGV2LCAmY3R4LCB0cnVlKTsKPiAgCWlmIChyZXQpCj4gIAkJ RFJNX0VSUk9SKCJEaXNhYmxpbmcgYWxsIGNydGMncyBkdXJpbmcgdW5sb2FkIGZhaWxlZCB3aXRo ICVpXG4iLCByZXQpOwo+ICAKPiAtCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQlk cm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9F TkQocmV0LCBjdHgpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc2h1 dGRvd24pOwo+ICAKPiBAQCAtMzE3NSwxNCArMzE2NSw3IEBAIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIAlpbnQgZXJyOwo+ICAKPiAtCWRy bV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiAtCj4gLXJldHJ5Ogo+IC0JZXJyID0g ZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCk7Cj4gLQlpZiAoZXJyIDwgMCkgewo+ IC0JCXN0YXRlID0gRVJSX1BUUihlcnIpOwo+IC0JCWdvdG8gdW5sb2NrOwo+IC0JfQo+ICsJRFJN X01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCBlcnIsIGN0eCwgMCk7Cj4gIAo+ICAJc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfc3RhdGUoZGV2LCAmY3R4KTsKPiAgCWlmIChJ U19FUlIoc3RhdGUpKQo+IEBAIC0zMTkxLDE4ICszMTc0LDE0IEBAIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAllcnIgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChkZXYsICZjdHgpOwo+ICAJ aWYgKGVyciA8IDApIHsKPiAgCQlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gLQkJc3Rh dGUgPSBFUlJfUFRSKGVycik7Cj4gIAkJZ290byB1bmxvY2s7Cj4gIAl9Cj4gIAo+ICB1bmxvY2s6 Cj4gLQlpZiAoUFRSX0VSUihzdGF0ZSkgPT0gLUVERUFETEspIHsKPiAtCQlkcm1fbW9kZXNldF9i YWNrb2ZmKCZjdHgpOwo+IC0JCWdvdG8gcmV0cnk7Cj4gLQl9Cj4gKwlEUk1fTU9ERVNFVF9MT0NL X0FMTF9FTkQoZXJyLCBjdHgpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gRVJSX1BUUihlcnIp Owo+ICAKPiAtCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQlkcm1fbW9kZXNldF9h Y3F1aXJlX2ZpbmkoJmN0eCk7Cj4gIAlyZXR1cm4gc3RhdGU7Cj4gIH0KPiAgRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl9zdXNwZW5kKTsKPiBAQCAtMzI3MiwyMyArMzI1MSwxMiBAQCBp bnQgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ ICAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRldik7Cj4gIAo+IC0JZHJtX21vZGVzZXRfYWNxdWly ZV9pbml0KCZjdHgsIDApOwo+IC0Jd2hpbGUgKDEpIHsKPiAtCQllcnIgPSBkcm1fbW9kZXNldF9s b2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlnb3RvIG91dDsKPiAr CURSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKGRldiwgZXJyLCBjdHgsIDApOwo+ICAKPiAtCQll cnIgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfZHVwbGljYXRlZF9zdGF0ZShzdGF0ZSwgJmN0 eCk7Cj4gLW91dDoKPiAtCQlpZiAoZXJyICE9IC1FREVBRExLKQo+IC0JCQlicmVhazsKPiAtCj4g LQkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiAtCX0KPiArCWVyciA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0YXRlLCAmY3R4KTsKPiAgCj4gIAlzdGF0 ZS0+YWNxdWlyZV9jdHggPSBOVUxMOwo+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsK PiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCURSTV9NT0RFU0VUX0xPQ0tf QUxMX0VORChlcnIsIGN0eCk7Cj4gIAlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAo+ ICAJcmV0dXJuIGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9t Z210LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+IGluZGV4IDU4MWNjMzc4 ODIyMzAuLjljNjgyNzE3MWQ3OTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9j b2xvcl9tZ210LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+IEBA IC0yNTUsMTEgKzI1NSw3IEBAIGludCBkcm1fbW9kZV9nYW1tYV9zZXRfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgCWlmIChjcnRjX2x1dC0+Z2FtbWFfc2l6ZSAhPSBjcnRjLT5nYW1t YV9zaXplKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVf aW5pdCgmY3R4LCAwKTsKPiAtcmV0cnk6Cj4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9j dHgoZGV2LCAmY3R4KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBvdXQ7Cj4gKwlEUk1fTU9ERVNF VF9MT0NLX0FMTF9CRUdJTihkZXYsIHJldCwgY3R4LCAwKTsKPiAgCj4gIAlzaXplID0gY3J0Y19s dXQtPmdhbW1hX3NpemUgKiAoc2l6ZW9mKHVpbnQxNl90KSk7Cj4gIAlyX2Jhc2UgPSBjcnRjLT5n YW1tYV9zdG9yZTsKPiBAQCAtMjg0LDEzICsyODAsNyBAQCBpbnQgZHJtX21vZGVfZ2FtbWFfc2V0 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICAgIGNydGMtPmdhbW1hX3Np emUsICZjdHgpOwo+ICAKPiAgb3V0Ogo+IC0JaWYgKHJldCA9PSAtRURFQURMSykgewo+IC0JCWRy bV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gLQkJZ290byByZXRyeTsKPiAtCX0KPiAtCWRybV9t b2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0 eCk7Cj4gLQo+ICsJRFJNX01PREVTRVRfTE9DS19BTExfRU5EKHJldCwgY3R4KTsKPiAgCXJldHVy biByZXQ7Cj4gIAo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCBhZjRiOTRjZThlOTQyLi40YjNk NDUyMzk0MDdlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtNTk5LDExICs1OTksOCBAQCBpbnQg ZHJtX21vZGVfc2V0Y3J0YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJ cGxhbmUgPSBjcnRjLT5wcmltYXJ5Owo+ICAKPiAgCW11dGV4X2xvY2soJmNydGMtPmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwo+IC0JZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIERSTV9N T0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7Cj4gLXJldHJ5Ogo+IC0JcmV0ID0gZHJtX21v ZGVzZXRfbG9ja19hbGxfY3R4KGNydGMtPmRldiwgJmN0eCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdv dG8gb3V0Owo+ICsJRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCByZXQsIGN0eCwKPiAr CQkJCSAgIERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7Cj4gIAo+ICAJaWYgKGNy dGNfcmVxLT5tb2RlX3ZhbGlkKSB7Cj4gIAkJLyogSWYgd2UgaGF2ZSBhIG1vZGUgd2UgbmVlZCBh IGZyYW1lYnVmZmVyLiAqLwo+IEBAIC03NjgsMTMgKzc2NSw3IEBAIGludCBkcm1fbW9kZV9zZXRj cnRjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAlmYiA9IE5VTEw7Cj4g IAltb2RlID0gTlVMTDsKPiAgCj4gLQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gLQkJcmV0ID0g ZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiAtCQlpZiAoIXJldCkKPiAtCQkJZ290byByZXRy eTsKPiAtCX0KPiAtCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQlkcm1fbW9kZXNl dF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9FTkQocmV0LCBj dHgpOwo+ICAJbXV0ZXhfdW5sb2NrKCZjcnRjLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiAg Cj4gIAlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5l LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiBpbmRleCA2Nzk0NTVlMzY4Mjk4Li4z NzQ3MmVkYjRmMzAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+IEBAIC03NjcsMTEgKzc2Nyw4IEBA IHN0YXRpYyBpbnQgc2V0cGxhbmVfaW50ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ICAJaW50IHJldDsKPiAgCj4g LQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgRFJNX01PREVTRVRfQUNRVUlSRV9JTlRF UlJVUFRJQkxFKTsKPiAtcmV0cnk6Cj4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgo cGxhbmUtPmRldiwgJmN0eCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZmFpbDsKPiArCURSTV9N T0RFU0VUX0xPQ0tfQUxMX0JFR0lOKHBsYW5lLT5kZXYsIHJldCwgY3R4LAo+ICsJCQkJICAgRFJN X01PREVTRVRfQUNRVUlSRV9JTlRFUlJVUFRJQkxFKTsKPiAgCj4gIAlpZiAoZHJtX2Rydl91c2Vz X2F0b21pY19tb2Rlc2V0KHBsYW5lLT5kZXYpKQo+ICAJCXJldCA9IF9fc2V0cGxhbmVfYXRvbWlj KHBsYW5lLCBjcnRjLCBmYiwKPiBAQCAtNzgyLDE0ICs3NzksNyBAQCBzdGF0aWMgaW50IHNldHBs YW5lX2ludGVybmFsKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJCSAgY3J0Y194LCBj cnRjX3ksIGNydGNfdywgY3J0Y19oLAo+ICAJCQkJCSAgc3JjX3gsIHNyY195LCBzcmNfdywgc3Jj X2gsICZjdHgpOwo+ICAKPiAtZmFpbDoKPiAtCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiAtCQly ZXQgPSBkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+IC0JCWlmICghcmV0KQo+IC0JCQlnb3Rv IHJldHJ5Owo+IC0JfQo+IC0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiAtCWRybV9t b2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCURSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORChy ZXQsIGN0eCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9kcm1fbW9kZXNldF9sb2NrLmggYi9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9sb2NrLmgK PiBpbmRleCBhNjg1ZDFiYjIxZjI2Li42MjEzYTExNDQ1NjMzIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvZHJtL2RybV9tb2Rlc2V0X2xvY2suaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0 X2xvY2suaAo+IEBAIC0xMzAsNCArMTMwLDU4IEBAIHZvaWQgZHJtX3dhcm5fb25fbW9kZXNldF9u b3RfYWxsX2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgaW50IGRybV9tb2Rlc2V0 X2xvY2tfYWxsX2N0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgICAgIHN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KTsKPiAgCj4gKy8qKgo+ICsgKiBEUk1fTU9ERVNF VF9MT0NLX0FMTF9CRUdJTiAtIEhlbHBlciB0byBhY3F1aXJlIG1vZGVzZXQgbG9ja3MKPiArICog QGRldjogZHJtIGRldmljZQo+ICsgKiBAcmV0OiBsb2NhbCByZXQvZXJyL2V0YyB2YXJpYWJsZSB0 byB0cmFjayBlcnJvciBzdGF0dXMKPiArICogQGN0eDogbG9jYWwgbW9kZXNldCBhY3F1aXJlIGNv bnRleHQsIHdpbGwgYmUgZGVyZWZlcmVuY2VkCj4gKyAqIEBmbGFnczogRFJNX01PREVTRVRfQUNR VUlSRV8qIGZsYWdzIHRvIHBhc3MgdG8gYWNxdWlyZV9pbml0KCkKCkZ1bGwgZnVuY3Rpb24gbmFt ZSBmb3IgdGhlIG5pY2UgaHlwZXJsaW5rLiBOZWVkcyBhIGNvbnRpbnVhdGlvbiBsaW5lLAp3aGlj aCBqdXN0IG5lZWRzIHRvIGJlIGluZGVudGVuZC4KCkFuZCBhIGJpa2VzaGVkOiBJJ2QgcHV0IHJl dCBsYXN0IGluIGJvdGggbWFjcm9zLCBJIHRoaW5rIHRoYXQncyB3aGVyZQp1c3VhbGx5IHRoZSBj dXJzb3JzL291dHB1dCB2YXJpYWJsZXMgYXJlLgoKPiArICoKPiArICogVXNlIHRoZXNlIG1hY3Jv cyB0byBzaW1wbGlmeSBncmFiYmluZyBhbGwgbW9kZXNldCBsb2NrcyB1c2luZyBhIGxvY2FsCj4g KyAqIGNvbnRleHQuIFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgcmVkdWNpbmcgYm9pbGVycGxh dGUsIGJ1dCBhbHNvIHByb3Blcmx5Cj4gKyAqIGNoZWNraW5nIHJldHVybiB2YWx1ZXMgd2hlcmUg YXBwcm9wcmlhdGUuCj4gKyAqCj4gKyAqIEFueSBjb2RlIHJ1biBiZXR3ZWVuIEJFR0lOIGFuZCBF TkQgd2lsbCBiZSBob2xkaW5nIHRoZSBtb2Rlc2V0IGxvY2tzLgo+ICsgKgo+ICsgKiBUaGlzIG11 c3QgYmUgcGFpcmVkIHdpdGggRFJNX01PREVTRVRfTE9DQUxfQUxMX0VORC4gV2Ugd2lsbCBqdW1w IGJhY2sgYW5kCgpfRU5EKCkgZm9yIHRoZSBoeXBlcmxpbmsuIEFsc28gcy9MT0NBTC9MT0NLLwoK PiArICogZm9ydGggYmV0d2VlbiB0aGUgbGFiZWxzIG9uIGRlYWRsb2NrIGFuZCBlcnJvciBjb25k aXRpb25zLgoKTWF5YmUgYWRkOgoKIkRyaXZlcnMgY2FuIGFjcXVpcmUgYWRkaXRpb25hbCBtb2Rl c2V0IGxvY2tzLiBJZiBhbnkgbG9jayBhY3F1aXNpdGlvbgpmYWlscyB0aGUgY29udHJvbCBmbG93 IG5lZWRzIHRvIGp1bXAgdG8gRFJNX01PREVTRVRfTE9DS19BTExfRU5EKCksIHdpdGgKdGhlIEBy ZXQgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBkcm1fbW9kZXNldF9s b2NrKCkuIgoKU2luY2UgbWFraW5nIHRoYXQgcG9zc2libGUgd2FzIHRoZSBlbnRpcmUgcG9pbnQg b2YgdGhpcyBleGVyY2lzZS4KCj4gKyAqCj4gKyAqIFJldHVybnM6IFRoZSBvbmx5IHBvc3NpYmxl IHZhbHVlIG9mIHJldCBpbW1lZGlhdGVseSBhZnRlcgo+ICsgKgkgICAgRFJNX01PREVTRVRfTE9D S19BTExfQkVHSU4gaXMgMCwgc28gbm8gZXJyb3IgY2hlY2tpbmcgaXMgbmVjZXNzYXJ5LgoKTG9v a3MgcHJldHR5IGluIHRoZSBnZW5lcmF0ZWQgaHRtbCBJIGd1ZXNzLCBidXQgaW5jb25zaXN0ZW50 IHdpdGggdGhlCnVzdWFsIHN0eWxlLCB3aGljaCBpcyBlbXB0eSBsaW5lIGFmdGVyIFJldHVybnM6 IGFuZCB0aGVuIG5vIGluZGVudGluZy4KCj4gKyAqLwo+ICsjZGVmaW5lIERSTV9NT0RFU0VUX0xP Q0tfQUxMX0JFR0lOKGRldiwgcmV0LCBjdHgsIGZsYWdzKQkJXAo+ICsJZHJtX21vZGVzZXRfYWNx dWlyZV9pbml0KCZjdHgsIGZsYWdzKTsJCQkJXAo+ICttb2Rlc2V0X2xvY2tfcmV0cnk6CQkJCQkJ CVwKPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpOwkJCVwKPiAr CWlmIChyZXQpCQkJCQkJCVwKPiArCQlnb3RvIG1vZGVzZXRfbG9ja19mYWlsOwo+ICsKPiArLyoq Cj4gKyAqIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCAtIEhlbHBlciB0byByZWxlYXNlIGFuZCBj bGVhbnVwIG1vZGVzZXQgbG9ja3MKPiArICogQHJldDogbG9jYWwgcmV0L2Vyci9ldGMgdmFyaWFi bGUgdG8gdHJhY2sgZXJyb3Igc3RhdHVzCj4gKyAqIEBjdHg6IGxvY2FsIG1vZGVzZXQgYWNxdWly ZSBjb250ZXh0LCB3aWxsIGJlIGRlcmVmZXJlbmNlZAo+ICsgKgo+ICsgKiBUaGUgb3RoZXIgc2lk ZSBvZiBEUk1fTU9ERVNFVF9MT0NLX0FMTF9CRUdJTi4gSXQgd2lsbCBib3VuY2UgYmFjayB0byBC RUdJTiBpZgoKKCkKCj4gKyAqIHJldCBpcyAtRURFQURMSy4KPiArICoKPiArICogSXQncyBpbXBv cnRhbnQgdGhhdCB5b3UgdXNlIHRoZSBzYW1lIHJldCB2YXJpYWJsZSBmb3IgYmVnaW4gYW5kIGVu ZCBzbwo+ICsgKiBkZWFkbG9jayBjb25kaXRpb25zIGFyZSBwcm9wZXJseSBoYW5kbGVkLgo+ICsg Kgo+ICsgKiBSZXR1cm5zOiByZXQgd2lsbCBiZSB1bnRvdWNoZWQgdW5sZXNzIGl0IGlzIC1FREVB RExLLiBUaGF0IG1lYW5zIHRoYXQgaWYgeW91Cj4gKyAqCSAgICBzdWNjZXNzZnVsbHkgYWNxdWly ZSB0aGUgbG9ja3MsIHJldCB3aWxsIGJlIHdoYXRldmVyIHlvdXIgY29kZSBzZXRzCj4gKyAqCSAg ICBpdCB0by4gSWYgdGhlcmUgaXMgYSBkZWFkbG9jayBvciBvdGhlciBmYWlsdXJlIHdpdGggYWNx dWlyZSBvcgo+ICsgKgkgICAgYmFja29mZiwgcmV0IHdpbGwgYmUgc2V0IHRvIHRoYXQgZmFpbHVy ZS4gSW4gYm90aCBvZiB0aGVzZSBjYXNlcyB0aGUKPiArICoJICAgIGNvZGUgYmV0d2VlbiBCRUdJ Ti9FTkQgd2lsbCBub3QgYmUgcnVuLCBzbyB0aGUgZmFpbHVyZSB3aWxsIHJlZmxlY3QKPiArICoJ ICAgIHRoZSBpbmFiaWxpdHkgdG8gZ3JhYiB0aGUgbG9ja3MuCj4gKyAqLwo+ICsjZGVmaW5lIERS TV9NT0RFU0VUX0xPQ0tfQUxMX0VORChyZXQsIGN0eCkJCQkJXAo+ICttb2Rlc2V0X2xvY2tfZmFp bDoJCQkJCQkJXAo+ICsJaWYgKHJldCA9PSAtRURFQURMSykgewkJCQkJCVwKPiArCQlyZXQgPSBk cm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwkJCVwKPiArCQlpZiAoIXJldCkJCQkJCQlcCj4gKwkJ CWdvdG8gbW9kZXNldF9sb2NrX3JldHJ5OwkJCVwKPiArCX0JCQkJCQkJCVwKPiArCWRybV9tb2Rl c2V0X2Ryb3BfbG9ja3MoJmN0eCk7CQkJCQlcCj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2Zpbmko JmN0eCk7Cj4gKwo+ICAjZW5kaWYgLyogRFJNX01PREVTRVRfTE9DS19IXyAqLwoKUGxlYXNlIHJl ZmVyZW5jZSB0aGVzZSB0d28gY29udmVuaWVuY2UgbWFjcm9zIGF0IHRoZSBlbmQgb2YgdGhlIERP QzoKb3ZlcnZpZXcgY29tbWVudCBpbiBkcm1fbW9kZXNldF9sb2NrLmMsIGUuZy4KCiJGb3IgY29u dmVuaWVuY2UgdGhpcyBjb250cm9sIGZsb3cgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCkRSTV9NT0RF U0VUX0xPQ0tfQUxMX0JFR0lOKCkgYW5kIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCgpIGZvciB0 aGUgY2FzZQp3aGVyZSBhbGwgbW9kZXNldCBsb2NrcyBuZWVkIHRvIGJlIHRha2VuIHRocm91Z2gK ZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KCkuIgoKQW5kIG1heWJlIGluIHRoZSBfbG9ja19hbGxf Y3R4KCkgZnVuY3Rpb24gYWRkOgoKIlNlZSBhbHNvIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lO KCkgYW5kIERSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORCgpLiIKCldpdGggdGhlIGRvYyBiaWtlc2hl ZHM6CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4K LS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0 dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=