From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH] drm: Add crtc_queue_syncobj and crtc_get_syncobj ioctls Date: Fri, 6 Apr 2018 16:56:49 -0700 Message-ID: <20180406235649.9494-2-keithp@keithp.com> References: <20180406235649.9494-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from elaine.keithp.com (home.keithp.com [63.227.221.253]) by gabe.freedesktop.org (Postfix) with ESMTP id A5D7E6EAE4 for ; Fri, 6 Apr 2018 23:56:56 +0000 (UTC) In-Reply-To: <20180406235649.9494-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, Dave Airlie , Daniel Vetter Cc: Keith Packard , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Y3J0Y19xdWV1ZV9zeW5jb2JqIGNyZWF0ZXMgYSBuZXcgc3luY29iaiB0aGF0IHdpbGwgZ2V0IHNp Z25hbGVkIGF0IGEKc3BlY2lmaWVkIHZibGFuayBzZXF1ZW5jZSBjb3VudC4KCmNydGNfZ2V0X3N5 bmNvYmogcmV0dXJucyB0aGUgdGltZSBhbmQgdmJsYW5rIHNlcXVlbmNlIGNvdW50IHdoZW4gdGhl CnN5bmNvYmogd2FzIHNpZ25hbGVkLgoKVGhlIHBhaXIgb2YgdGhlc2UgYWxsb3dzIHVzZSBvZiBz eW5jb2JqcyBpbnN0ZWFkIG9mIGV2ZW50cyBmb3IKbW9uaXRvcmluZyB2YmxhbmsgYWN0aXZpdHku CgpTaWduZWQtb2ZmLWJ5OiBLZWl0aCBQYWNrYXJkIDxrZWl0aHBAa2VpdGhwLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYyAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2Ry bV9pbnRlcm5hbC5oIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYyAgICB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyAgfCAgMTMgKystCiBkcml2ZXJzL2dw dS9kcm0vZHJtX3ZibGFuay5jICAgfCAyMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0KIGluY2x1ZGUvZHJtL2RybV9maWxlLmggICAgICAgICB8ICAxMSArKy0KIGlu Y2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggICAgICB8ICAxMyArKysKIGluY2x1ZGUvdWFwaS9kcm0v ZHJtLmggICAgICAgICB8ICAxNyArKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNlcnRpb25z KCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zp bGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jCmluZGV4IGIzYzZlOTk3Y2NkYi4uYzFh ZGEzZmU3MGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYwpAQCAtMzcsNiArMzcsNyBAQAogCiAjaW5jbHVkZSA8 ZHJtL2RybV9maWxlLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X3N5bmNvYmouaD4KIAogI2luY2x1ZGUgImRybV9sZWdhY3kuaCIKICNpbmNsdWRlICJkcm1faW50 ZXJuYWwuaCIKQEAgLTcxMSw2ICs3MTIsMTAgQEAgdm9pZCBkcm1fc2VuZF9ldmVudF9sb2NrZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICplKQogCQlk bWFfZmVuY2VfcHV0KGUtPmZlbmNlKTsKIAl9CiAKKwlpZiAoZS0+c3luY29iaikgeworCQlkcm1f c3luY29ial9wdXQoZS0+c3luY29iaik7CisJfQorCiAJaWYgKCFlLT5maWxlX3ByaXYpIHsKIAkJ a2ZyZWUoZSk7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50 ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBjOWQ1YTZjZDRk NDEuLjcxYjk0MzViNWIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5h bC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaApAQCAtNzUsNiArNzUsMTAg QEAgaW50IGRybV9jcnRjX2dldF9zZXF1ZW5jZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAogCiBpbnQgZHJtX2NydGNfcXVldWVfc2VxdWVuY2VfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmls cCk7CitpbnQgZHJtX2NydGNfcXVldWVfc3luY29ial9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAorCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOworaW50IGRybV9j cnRjX2dldF9zeW5jb2JqX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CisJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7CiAKIC8qIGRybV9hdXRoLmMgKi8KIGludCBk cm1fZ2V0bWFnaWMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9j dGwuYwppbmRleCA0YWFmZTQ4MDIwOTkuLjMwOTYxMWZiNWQwZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9pb2N0bC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwpA QCAtNjY1LDYgKzY2NSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJt X2lvY3Rsc1tdID0gewogCQkgICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCiAJ RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfQ1JUQ19HRVRfU0VRVUVOQ0UsIGRybV9jcnRjX2dldF9z ZXF1ZW5jZV9pb2N0bCwgRFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9D UlRDX1FVRVVFX1NFUVVFTkNFLCBkcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZV9pb2N0bCwgRFJNX1VO TE9DS0VEKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9DUlRDX1FVRVVFX1NZTkNPQkosIGRy bV9jcnRjX3F1ZXVlX3N5bmNvYmpfaW9jdGwsIERSTV9VTkxPQ0tFRCksCisJRFJNX0lPQ1RMX0RF RihEUk1fSU9DVExfQ1JUQ19HRVRfU1lOQ09CSiwgZHJtX2NydGNfZ2V0X3N5bmNvYmpfaW9jdGws IERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9DUkVBVEVfTEVB U0UsIGRybV9tb2RlX2NyZWF0ZV9sZWFzZV9pb2N0bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9B TExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfTElTVF9M RVNTRUVTLCBkcm1fbW9kZV9saXN0X2xlc3NlZXNfaW9jdGwsIERSTV9NQVNURVJ8RFJNX0NPTlRS T0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0dF VF9MRUFTRSwgZHJtX21vZGVfZ2V0X2xlYXNlX2lvY3RsLCBEUk1fTUFTVEVSfERSTV9DT05UUk9M X0FMTE9XfERSTV9VTkxPQ0tFRCksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5 bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCmluZGV4IGNiNGQwOWM3MGZk NC4uZTE5N2IwMDcwNzlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmou YworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMjA4LDcgKzIwOCw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3luY29ial9udWxsX2ZlbmNl X29wcyA9IHsKIAkucmVsZWFzZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMgaW50IGRybV9zeW5jb2Jq X2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCitpbnQgZHJt X3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwg Ym9vbCBzaWduYWwpCiB7CiAJc3RydWN0IGRybV9zeW5jb2JqX251bGxfZmVuY2UgKmZlbmNlOwog CWZlbmNlID0ga3phbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5FTCk7CkBAIC0yMTgsNyAr MjE4LDggQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqKQogCXNwaW5fbG9ja19pbml0KCZmZW5jZS0+bG9jayk7CiAJ ZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLCAmZHJtX3N5bmNvYmpfbnVsbF9mZW5jZV9vcHMs CiAJCSAgICAgICAmZmVuY2UtPmxvY2ssIDAsIDApOwotCWRtYV9mZW5jZV9zaWduYWwoJmZlbmNl LT5iYXNlKTsKKwlpZiAoc2lnbmFsKQorCQlkbWFfZmVuY2Vfc2lnbmFsKCZmZW5jZS0+YmFzZSk7 CiAKIAlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosICZmZW5jZS0+YmFzZSk7CiAK QEAgLTIyNiw2ICsyMjcsNyBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hh bmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCiAKIAlyZXR1cm4gMDsKIH0KK0VYUE9S VF9TWU1CT0woZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKTsKIAogaW50IGRybV9zeW5j b2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCiAJCQkgICB1MzIg aGFuZGxlLApAQCAtMjgzLDcgKzI4NSw3IEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0 IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAogCXNwaW5fbG9ja19p bml0KCZzeW5jb2JqLT5sb2NrKTsKIAogCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9T SUdOQUxFRCkgewotCQlyZXQgPSBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29i aik7CisJCXJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2JqLCB0cnVl KTsKIAkJaWYgKHJldCA8IDApIHsKIAkJCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKIAkJCXJl dHVybiByZXQ7CkBAIC0zNDEsNyArMzQzLDcgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9jcmVh dGVfYXNfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAogCXJldHVybiByZXQ7 CiB9CiAKLXN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdmF0ZSwKK2ludCBkcm1fc3luY29ial9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2YXRlLAogCQkJICAgICAgIHUzMiBoYW5kbGUpCiB7CiAJc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqOwpAQCAtMzU2LDYgKzM1OCw3IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZGVz dHJveShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAlkcm1fc3luY29ial9wdXQoc3lu Y29iaik7CiAJcmV0dXJuIDA7CiB9CitFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2Rlc3Ryb3kp OwogCiBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKQEAgLTk3Myw3ICs5NzYsNyBAQCBkcm1fc3luY29i al9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0 dXJuIHJldDsKIAogCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBpKyspIHsK LQkJcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmpzW2ldKTsKKwkJ cmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmpzW2ldLCB0cnVlKTsK IAkJaWYgKHJldCA8IDApCiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwppbmRleCAzMmQ5 YmNmNWJlN2YuLjQyMmE1YjFkM2I5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92 YmxhbmsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC0yNiw2ICsyNiw3 IEBACiAKICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+ CiAKICNpbmNsdWRlICJkcm1fdHJhY2UuaCIKQEAgLTgwNiwyNSArODA3LDMzIEBAIHN0YXRpYyB2 b2lkIHNlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXU2NCBzZXEs IGt0aW1lX3Qgbm93KQogewogCXN0cnVjdCB0aW1lc3BlYzY0IHR2OworCXN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaiA9IGUtPmJhc2Uuc3luY29iajsKIAotCXN3aXRjaCAoZS0+ZXZlbnQuYmFz ZS50eXBlKSB7Ci0JY2FzZSBEUk1fRVZFTlRfVkJMQU5LOgotCWNhc2UgRFJNX0VWRU5UX0ZMSVBf Q09NUExFVEU6Ci0JCXR2ID0ga3RpbWVfdG9fdGltZXNwZWM2NChub3cpOwotCQllLT5ldmVudC52 Ymwuc2VxdWVuY2UgPSBzZXE7Ci0JCS8qCi0JCSAqIGUtPmV2ZW50IGlzIGEgdXNlciBzcGFjZSBz dHJ1Y3R1cmUsIHdpdGggaGFyZGNvZGVkIHVuc2lnbmVkCi0JCSAqIDMyLWJpdCBzZWNvbmRzL21p Y3Jvc2Vjb25kcy4gVGhpcyBpcyBzYWZlIGFzIHdlIGFsd2F5cyB1c2UKLQkJICogbW9ub3Rvbmlj IHRpbWVzdGFtcHMgc2luY2UgbGludXgtNC4xNQotCQkgKi8KLQkJZS0+ZXZlbnQudmJsLnR2X3Nl YyA9IHR2LnR2X3NlYzsKLQkJZS0+ZXZlbnQudmJsLnR2X3VzZWMgPSB0di50dl9uc2VjIC8gMTAw MDsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fRVZFTlRfQ1JUQ19TRVFVRU5DRToKKwlpZiAoc3luY29i aikgewogCQlpZiAoc2VxKQotCQkJZS0+ZXZlbnQuc2VxLnNlcXVlbmNlID0gc2VxOwotCQllLT5l dmVudC5zZXEudGltZV9ucyA9IGt0aW1lX3RvX25zKG5vdyk7Ci0JCWJyZWFrOworCQkJc3luY29i ai0+c2VxdWVuY2UgPSBzZXE7CisJCXN5bmNvYmotPnRpbWUgPSBub3c7CisJfQorCWlmIChlLT5i YXNlLmV2ZW50KSB7CisJCXN3aXRjaCAoZS0+ZXZlbnQuYmFzZS50eXBlKSB7CisJCWNhc2UgRFJN X0VWRU5UX1ZCTEFOSzoKKwkJY2FzZSBEUk1fRVZFTlRfRkxJUF9DT01QTEVURToKKwkJCXR2ID0g a3RpbWVfdG9fdGltZXNwZWM2NChub3cpOworCQkJZS0+ZXZlbnQudmJsLnNlcXVlbmNlID0gc2Vx OworCQkJLyoKKwkJCSAqIGUtPmV2ZW50IGlzIGEgdXNlciBzcGFjZSBzdHJ1Y3R1cmUsIHdpdGgg aGFyZGNvZGVkIHVuc2lnbmVkCisJCQkgKiAzMi1iaXQgc2Vjb25kcy9taWNyb3NlY29uZHMuIFRo aXMgaXMgc2FmZSBhcyB3ZSBhbHdheXMgdXNlCisJCQkgKiBtb25vdG9uaWMgdGltZXN0YW1wcyBz aW5jZSBsaW51eC00LjE1CisJCQkgKi8KKwkJCWUtPmV2ZW50LnZibC50dl9zZWMgPSB0di50dl9z ZWM7CisJCQllLT5ldmVudC52YmwudHZfdXNlYyA9IHR2LnR2X25zZWMgLyAxMDAwOworCQkJYnJl YWs7CisJCWNhc2UgRFJNX0VWRU5UX0NSVENfU0VRVUVOQ0U6CisJCQlpZiAoc2VxKQorCQkJCWUt PmV2ZW50LnNlcS5zZXF1ZW5jZSA9IHNlcTsKKwkJCWUtPmV2ZW50LnNlcS50aW1lX25zID0ga3Rp bWVfdG9fbnMobm93KTsKKwkJCWJyZWFrOworCQl9CiAJfQogCXRyYWNlX2RybV92YmxhbmtfZXZl bnRfZGVsaXZlcmVkKGUtPmJhc2UuZmlsZV9wcml2LCBlLT5waXBlLCBzZXEpOwogCWRybV9zZW5k X2V2ZW50X2xvY2tlZChkZXYsICZlLT5iYXNlKTsKQEAgLTE4MzcsMyArMTg0NiwxNzIgQEAgaW50 IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJa2ZyZWUoZSk7CiAJcmV0dXJuIHJldDsKIH0KKworLyoKKyAqIENyZWF0ZSBh IHN5bmNvYmogdGhhdCBpcyBzaWduYWxlZCB3aGVuIHRoZSBzcGVjaWZpZWQgdmJsYW5rCisgKiBv Y2N1cnMuCisgKi8KK2ludCBkcm1fY3J0Y19xdWV1ZV9zeW5jb2JqX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KQoreworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2 Ymxhbms7CisJaW50IHBpcGU7CisJc3RydWN0IGRybV9jcnRjX3F1ZXVlX3N5bmNvYmogKnF1ZXVl X3N5bmNvYmogPSBkYXRhOworCWt0aW1lX3Qgbm93OworCXN0cnVjdCBkcm1fcGVuZGluZ192Ymxh bmtfZXZlbnQgKmU7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCXUzMiBzeW5jb2Jq X2hhbmRsZTsKKwl1MzIgZmxhZ3M7CisJdTY0IHNlcTsKKwl1NjQgcmVxX3NlcTsKKwlpbnQgcmV0 OworCXVuc2lnbmVkIGxvbmcgc3Bpbl9mbGFnczsKKworCWlmICghZHJtX2NvcmVfY2hlY2tfZmVh dHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWRl di0+aXJxX2VuYWJsZWQpCisJCXJldHVybiAtRUlOVkFMOworCisJY3J0YyA9IGRybV9jcnRjX2Zp bmQoZGV2LCBmaWxlX3ByaXYsIHF1ZXVlX3N5bmNvYmotPmNydGNfaWQpOworCWlmICghY3J0YykK KwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlmbGFncyA9IHF1ZXVlX3N5bmNvYmotPmZsYWdzOworCS8q IENoZWNrIHZhbGlkIGZsYWcgYml0cyAqLworCWlmIChmbGFncyAmIH4oRFJNX0NSVENfU0VRVUVO Q0VfUkVMQVRJVkV8CisJCSAgICAgIERSTV9DUlRDX1NFUVVFTkNFX05FWFRfT05fTUlTUykpCisJ CXJldHVybiAtRUlOVkFMOworCisJcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpOworCisJdmJs YW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOworCisJLyoKKwkgKiBBbGxvY2F0ZSBhbGwgb2YgdGhl IG5lY2Vzc2FyeSBvYmplY3RzIC0tCisJICogYSBkcm1fcGVuZGluZ192YmxhbmssIGRybV9zeW5j b2JqLCBkcm1fc3luY29iaiBoYW5kbGUgYW5kIGRtYV9mZW5jZQorCSAqLworCisJLyogZHJtX3Bl bmRpbmdfdmJsYW5rX2V2ZW50ICovCisJZSA9IGt6YWxsb2Moc2l6ZW9mKCplKSwgR0ZQX0tFUk5F TCk7CisJaWYgKGUgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBzeW5jb2JqICov CisJcmV0ID0gZHJtX3N5bmNvYmpfY3JlYXRlKCZzeW5jb2JqLCAwLCBOVUxMKTsKKwlpZiAocmV0 KSB7CisJCURSTV9ERUJVRygiY3J0YyAlZCBmYWlsZWQgdG8gYWxsb2NhdGUgc3luY29iaiwgJWRc biIsIHBpcGUsIHJldCk7CisJCWdvdG8gZXJyX2ZyZWVfZXZlbnQ7CisJfQorCisJLyoKKwkgKiBU aGlzIGFsbG9jYXRlcyB0aGUgZG1hX2ZlbmNlIG9iamVjdCBmb3IgdGhlIHN5bmNvYmogYW5kCisJ ICogbGVhdmVzIGl0IHVuc2lnbmFsZWQuCisJICovCisJcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWdu X251bGxfaGFuZGxlKHN5bmNvYmosIGZhbHNlKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERUJVRygi Y3J0YyAlZCBmYWlsZWQgdG8gYWxsb2NhdGUgc3luY29iaiBmZW5jZSwgJWRcbiIsIHBpcGUsIHJl dCk7CisJCWdvdG8gZXJyX2ZyZWVfZXZlbnQ7CisJfQorCisJLyogYW5kIGZpbmFsbHkgdGhlIHN5 bmNvYmogaGFuZGxlIHRvIHJldHVybiB0byB1c2VyIHNwYWNlICovCisJcmV0ID0gZHJtX3N5bmNv YmpfZ2V0X2hhbmRsZShmaWxlX3ByaXYsIHN5bmNvYmosICZzeW5jb2JqX2hhbmRsZSk7CisJaWYg KHJldCkgeworCQlEUk1fREVCVUcoImNydGMgJWQgZmFpbGVkIHRvIGFsbG9jYXRlIHN5bmNvYmog aGFuZGxlLCAlZFxuIiwgcGlwZSwgcmV0KTsKKwkJZ290byBlcnJfZnJlZV9zeW5jb2JqOworCX0K KworCXJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7CisJaWYgKHJldCkgeworCQlEUk1f REVCVUcoImNydGMgJWQgZmFpbGVkIHRvIGFjcXVpcmUgdmJsYW5rIGNvdW50ZXIsICVkXG4iLCBw aXBlLCByZXQpOworCQlnb3RvIGVycl9mcmVlX3N5bmNvYmpfaGFuZGxlOworCX0KKworCXNlcSA9 IGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoZGV2LCBwaXBlLCAmbm93KTsKKwlyZXFfc2VxID0g cXVldWVfc3luY29iai0+c2VxdWVuY2U7CisKKwlpZiAoZmxhZ3MgJiBEUk1fQ1JUQ19TRVFVRU5D RV9SRUxBVElWRSkKKwkJcmVxX3NlcSArPSBzZXE7CisKKwlpZiAoKGZsYWdzICYgRFJNX0NSVENf U0VRVUVOQ0VfTkVYVF9PTl9NSVNTKSAmJiB2YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkpCisJ CXJlcV9zZXEgPSBzZXEgKyAxOworCisJZS0+cGlwZSA9IHBpcGU7CisJc3Bpbl9sb2NrX2lycXNh dmUoJmRldi0+ZXZlbnRfbG9jaywgc3Bpbl9mbGFncyk7CisKKwkvKgorCSAqIGRybV9jcnRjX3Zi bGFua19vZmYoKSBtaWdodCBoYXZlIGJlZW4gY2FsbGVkIGFmdGVyIHdlIGNhbGxlZAorCSAqIGRy bV9jcnRjX3ZibGFua19nZXQoKS4gZHJtX2NydGNfdmJsYW5rX29mZigpIGhvbGRzIGV2ZW50X2xv Y2sgYXJvdW5kIHRoZQorCSAqIHZibGFuayBkaXNhYmxlLCBzbyBubyBuZWVkIGZvciBmdXJ0aGVy IGxvY2tpbmcuICBUaGUgcmVmZXJlbmNlIGZyb20KKwkgKiBkcm1fY3J0Y192YmxhbmtfZ2V0KCkg cHJvdGVjdHMgYWdhaW5zdCB2YmxhbmsgZGlzYWJsZSBmcm9tIGFub3RoZXIgc291cmNlLgorCSAq LworCWlmICghUkVBRF9PTkNFKHZibGFuay0+ZW5hYmxlZCkpIHsKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZ290byBlcnJfdW5sb2NrOworCX0KKworCWUtPmJhc2Uuc3luY29iaiA9IHN5bmNvYmo7CisJ ZS0+YmFzZS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKKworCWxpc3Rf YWRkKCZlLT5iYXNlLnBlbmRpbmdfbGluaywgJmZpbGVfcHJpdi0+cGVuZGluZ19ldmVudF9saXN0 KTsKKwllLT5iYXNlLmZpbGVfcHJpdiA9IGZpbGVfcHJpdjsKKworCWUtPnNlcXVlbmNlID0gcmVx X3NlcTsKKworCWlmICh2YmxhbmtfcGFzc2VkKHNlcSwgcmVxX3NlcSkpIHsKKwkJZHJtX2NydGNf dmJsYW5rX3B1dChjcnRjKTsKKwkJc2VuZF92YmxhbmtfZXZlbnQoZGV2LCBlLCBzZXEsIG5vdyk7 CisJCXF1ZXVlX3N5bmNvYmotPnNlcXVlbmNlID0gc2VxOworCX0gZWxzZSB7CisJCS8qIGRybV9o YW5kbGVfdmJsYW5rX2V2ZW50cyB3aWxsIGNhbGwgZHJtX3ZibGFua19wdXQgKi8KKwkJbGlzdF9h ZGRfdGFpbCgmZS0+YmFzZS5saW5rLCAmZGV2LT52YmxhbmtfZXZlbnRfbGlzdCk7CisJCXF1ZXVl X3N5bmNvYmotPnNlcXVlbmNlID0gcmVxX3NlcTsKKwl9CisKKwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXYtPmV2ZW50X2xvY2ssIHNwaW5fZmxhZ3MpOworCisJLyogUGFzcyB0aGUgc3luY29i aiBoYW5kbGUgYmFjayB0byB1c2VyIHNwYWNlICovCisJcXVldWVfc3luY29iai0+aGFuZGxlID0g c3luY29ial9oYW5kbGU7CisKKwlyZXR1cm4gMDsKKworZXJyX3VubG9jazoKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIHNwaW5fZmxhZ3MpOworCWRybV9jcnRjX3Zi bGFua19wdXQoY3J0Yyk7CitlcnJfZnJlZV9zeW5jb2JqX2hhbmRsZToKKwlkcm1fc3luY29ial9k ZXN0cm95KGZpbGVfcHJpdiwgc3luY29ial9oYW5kbGUpOworZXJyX2ZyZWVfc3luY29iajoKKwlk cm1fc3luY29ial9wdXQoc3luY29iaik7CitlcnJfZnJlZV9ldmVudDoKKwlrZnJlZShlKTsKKwly ZXR1cm4gcmV0OworfQorCitpbnQgZHJtX2NydGNfZ2V0X3N5bmNvYmpfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpCit7CisJc3RydWN0IGRybV9jcnRjX2dldF9zeW5jb2JqICphcmdzID0gZGF0YTsKKwlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisKKwlp ZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVy biAtRU5PREVWOworCisJc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2LCBhcmdz LT5oYW5kbGUpOworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwkvKiBJZiB0 aGVyZSdzIG5vIGZlbmNlLCBpdCBjYW4ndCBoYXZlIGJlZW4gc2lnbmFsZWQgKi8KKwlmZW5jZSA9 IHN5bmNvYmotPmZlbmNlOworCWlmIChmZW5jZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVCVVNZOwor CisJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQorCQlyZXR1cm4gLUVCVVNZOwor CisJYXJncy0+c2VxdWVuY2UgPSBzeW5jb2JqLT5zZXF1ZW5jZTsKKwlhcmdzLT5zZXF1ZW5jZV9u cyA9IHN5bmNvYmotPnRpbWU7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9maWxlLmggYi9pbmNsdWRlL2RybS9kcm1fZmlsZS5oCmluZGV4IDBlMGM4Njg0NTFh NS4uMTZkZTM5NWEyYmU5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZmlsZS5oCisrKyBi L2luY2x1ZGUvZHJtL2RybV9maWxlLmgKQEAgLTEwNiw4ICsxMDYsOCBAQCBzdHJ1Y3QgZHJtX3Bl bmRpbmdfZXZlbnQgewogCSAqCiAJICogUG9pbnRlciB0byB0aGUgYWN0dWFsIGV2ZW50IHRoYXQg c2hvdWxkIGJlIHNlbnQgdG8gdXNlcnNwYWNlIHRvIGJlCiAJICogcmVhZCB1c2luZyBkcm1fcmVh ZCgpLiBDYW4gYmUgb3B0aW9uYWwsIHNpbmNlIG5vd2FkYXlzIGV2ZW50cyBhcmUKLQkgKiBhbHNv IHVzZWQgdG8gc2lnbmFsIGtlcm5lbCBpbnRlcm5hbCB0aHJlYWRzIHdpdGggQGNvbXBsZXRpb24g b3IgRE1BCi0JICogdHJhbnNhY3Rpb25zIHVzaW5nIEBmZW5jZS4KKwkgKiBhbHNvIHVzZWQgdG8g c2lnbmFsIGtlcm5lbCBpbnRlcm5hbCB0aHJlYWRzIHdpdGggQGNvbXBsZXRpb24sIERNQQorCSAq IHRyYW5zYWN0aW9ucyB1c2luZyBAZmVuY2Ugb3Igc3luYyBvYmplY3RzIHVzaW5nIEBzeW5jb2Jq LgogCSAqLwogCXN0cnVjdCBkcm1fZXZlbnQgKmV2ZW50OwogCkBAIC0xMTksNiArMTE5LDEzIEBA IHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCB7CiAJICovCiAJc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2U7CiAKKwkvKioKKwkgKiBAc3luY29iajoKKwkgKgorCSAqIE9wdGlvbmFsIFN5bmMgT2JqZWN0 IHRvIHNpZ25hbCB3aGVuIHRoZSBldmVudCBvY2N1cnMuCisJICovCisJc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqOworCiAJLyoqCiAJICogQGZpbGVfcHJpdjoKIAkgKgpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKaW5k ZXggNDNlMmYzODJkMmYwLi45MjRmOGI4ODBkMGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9zeW5jb2JqLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaApAQCAtNjUsNiArNjUs MTYgQEAgc3RydWN0IGRybV9zeW5jb2JqIHsKIAkgKiBhIGZpbGUgYmFja2luZyBmb3IgdGhpcyBz eW5jb2JqLgogCSAqLwogCXN0cnVjdCBmaWxlICpmaWxlOworCS8qKgorCSAqIEBzZXF1ZW5jZToK KwkgKiBjcnRjIHNlcXVlbmNlIG51bWJlciB3aGVuIGEgdmJsYW5rIHN5bmNvYmogd2FzIHNpZ25h bGVkCisJICovCisJdWludDY0X3Qgc2VxdWVuY2U7CisJLyoqCisJICogQHRpbWU6CisJICogdGlt ZSB0aGF0IGEgdmJsYW5rIHN5bmNvYmogd2FzIHNpZ25hbGVkCisJICovCisJa3RpbWVfdCB0aW1l OwogfTsKIAogdHlwZWRlZiB2b2lkICgqZHJtX3N5bmNvYmpfZnVuY190KShzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmosCkBAIC0xMzIsNiArMTQyLDcgQEAgdm9pZCBkcm1fc3luY29ial9yZW1v dmVfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCQkJCSBzdHJ1Y3QgZHJt X3N5bmNvYmpfY2IgKmNiKTsKIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJCQkgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2Up OworaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosIGJvb2wgc2lnbmFsKTsKIGludCBkcm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAogCQkJICAgdTMyIGhhbmRsZSwKIAkJCSAgIHN0cnVj dCBkbWFfZmVuY2UgKipmZW5jZSk7CkBAIC0xNDAsNiArMTUxLDggQEAgaW50IGRybV9zeW5jb2Jq X2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3Ms CiAJCSAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7CiBpbnQgZHJtX3N5bmNvYmpfZ2V0 X2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaiwgdTMyICpoYW5kbGUpOworaW50IGRybV9zeW5jb2JqX2Rlc3Ryb3ko c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQl1MzIgaGFuZGxlKTsKIGludCBkcm1f c3luY29ial9nZXRfZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCBpbnQgKnBfZmQpOwog CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2RybS5oCmluZGV4IDZmZGZmNTk0NWM4YS4uN2E5OTZmNzNlOTcyIDEwMDY0NAotLS0g YS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKQEAg LTc1OSw2ICs3NTksMjEgQEAgc3RydWN0IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlIHsKIAlfX3U2 NCB1c2VyX2RhdGE7CS8qIHVzZXIgZGF0YSBwYXNzZWQgdG8gZXZlbnQgKi8KIH07CiAKK3N0cnVj dCBkcm1fY3J0Y19xdWV1ZV9zeW5jb2JqIHsKKwlfX3UzMiBjcnRjX2lkOworCV9fdTMyIGZsYWdz OworCV9fdTY0IHNlcXVlbmNlOworCV9fdTMyIGhhbmRsZTsJCS8qIHJldHVybiBzeW5jb2JqIGhh bmRsZSAqLworCV9fdTMyIHBhZDsKK307CisKK3N0cnVjdCBkcm1fY3J0Y19nZXRfc3luY29iaiB7 CisJX191MzIgaGFuZGxlOwkJLyogc2lnbmFsZWQgc3luY29iaiAqLworCV9fdTMyIHBhZDsKKwlf X3U2NCBzZXF1ZW5jZTsJCS8qIHJldHVybjogc2VxdWVuY2Ugd2hlbiBzeW5jb2JqIHdhcyBzaWdu YWxlZCAqLworCV9fdTY0IHNlcXVlbmNlX25zOwkvKiByZXR1cm46IHRpbWUgd2hlbiBzeW5jb2Jq IHdhcyBzaWduYWxlZCAqLworfTsKKwogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiB9CiAjZW5k aWYKQEAgLTg0Myw2ICs4NTgsOCBAQCBleHRlcm4gIkMiIHsKIAogI2RlZmluZSBEUk1fSU9DVExf Q1JUQ19HRVRfU0VRVUVOQ0UJRFJNX0lPV1IoMHgzYiwgc3RydWN0IGRybV9jcnRjX2dldF9zZXF1 ZW5jZSkKICNkZWZpbmUgRFJNX0lPQ1RMX0NSVENfUVVFVUVfU0VRVUVOQ0UJRFJNX0lPV1IoMHgz Yywgc3RydWN0IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlKQorI2RlZmluZSBEUk1fSU9DVExfQ1JU Q19RVUVVRV9TWU5DT0JKCURSTV9JT1dSKDB4M2QsIHN0cnVjdCBkcm1fY3J0Y19xdWV1ZV9zeW5j b2JqKQorI2RlZmluZSBEUk1fSU9DVExfQ1JUQ19HRVRfU1lOQ09CSglEUk1fSU9XUigweDNlLCBz dHJ1Y3QgZHJtX2NydGNfZ2V0X3N5bmNvYmopCiAKICNkZWZpbmUgRFJNX0lPQ1RMX1VQREFURV9E UkFXCQlEUk1fSU9XKDB4M2YsIHN0cnVjdCBkcm1fdXBkYXRlX2RyYXcpCiAKLS0gCjIuMTYuMgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==