From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v4 1/9] drm: Begin an API for in-kernel clients Date: Mon, 2 Jul 2018 15:54:25 +0200 Message-ID: <20180702135433.7960-2-noralf@tronnes.org> References: <20180702135433.7960-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180702135433.7960-1-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: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , laurent.pinchart@ideasonboard.com, david@lechnology.com List-Id: dri-devel@lists.freedesktop.org VGhpcyB0aGUgYmVnaW5uaW5nIG9mIGFuIEFQSSBmb3IgaW4ta2VybmVsIGNsaWVudHMuCkZpcnN0 IG91dCBpcyBhIHdheSB0byBnZXQgYSBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgYSBkdW1iIGJ1ZmZl ci4KCk9ubHkgR0VNIGRyaXZlcnMgYXJlIHN1cHBvcnRlZC4KVGhlIG9yaWdpbmFsIGlkZWEgb2Yg dXNpbmcgYW4gZXhwb3J0ZWQgZG1hLWJ1ZiB3YXMgZHJvcHBlZCBiZWNhdXNlIGl0CmFsc28gY3Jl YXRlcyBhbiBhbm9ub21vdXMgZmlsZSBkZXNjcmlwdG9yIHdoaWNoIGRvZXNuJ3Qgd29yayB3aGVu IHRoZQpidWZmZXIgaXMgY3JlYXRlZCBmcm9tIGEga2VybmVsIHRocmVhZC4gVGhlIGVhc3kgd2F5 IG91dCBpcyB0byB1c2UKZHJtX2RyaXZlci5nZW1fcHJpbWVfdm1hcCB0byBnZXQgdGhlIHZpcnR1 YWwgYWRkcmVzcywgd2hpY2ggcmVxdWlyZXMgYQpHRU0gb2JqZWN0LiBUaGlzIGV4Y2x1ZGVzIHRo ZSB2bXdnZnggZHJpdmVyIHdoaWNoIGlzIHRoZSBvbmx5IG5vbi1HRU0KZHJpdmVyIGFwYXJ0IGZy b20gdGhlIGxlZ2FjeSBvbmVzLiBBIHNvbHV0aW9uIGZvciB2bXdnZnggd2lsbCBoYXZlIHRvIGJl CndvcmtlZCBvdXQgbGF0ZXIgaWYgaXQgd2FudHMgdG8gc3VwcG9ydCB0aGUgY2xpZW50IEFQSSB3 aGljaCBpdCBwcm9iYWJseQp3aWxsIHdoZW4gd2UgaGF2ZSBhIGJvb3RzcGxhc2ggY2xpZW50LgoK U2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ClJldmll d2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIERvY3Vt ZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0IHwgIDEyICsrCiBEb2N1bWVudGF0aW9uL2dwdS9p bmRleC5yc3QgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICB8 ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYyAgICAgfCAyODkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5j ICAgICAgICB8ICAgMSArCiBpbmNsdWRlL2RybS9kcm1fY2xpZW50LmggICAgICAgICB8ICA3NiAr KysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fZGV2aWNlLmggICAgICAgICB8ICAgNyArCiA3IGZp bGVzIGNoYW5nZWQsIDM4NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9kcm0vZHJtX2NsaWVudC5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJt LWNsaWVudC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlNjcyMDYzZTdlYgotLS0gL2Rldi9udWxs CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0CkBAIC0wLDAgKzEsMTIgQEAK Kz09PT09PT09PT09PT09PT09CitLZXJuZWwgY2xpZW50cworPT09PT09PT09PT09PT09PT0KKwor Li4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKKyAgIDpkb2M6IG92 ZXJ2aWV3CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKKyAgIDpp bnRlcm5hbDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMK KyAgIDpleHBvcnQ6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QgYi9E b2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKaW5kZXggMDAyODhmMzRjNWE2Li4xZmNmOGU4NTFl MTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2luZGV4LnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL2dwdS9pbmRleC5yc3QKQEAgLTEwLDYgKzEwLDcgQEAgTGludXggR1BVIERyaXZlciBE ZXZlbG9wZXIncyBHdWlkZQogICAgZHJtLWttcwogICAgZHJtLWttcy1oZWxwZXJzCiAgICBkcm0t dWFwaQorICAgZHJtLWNsaWVudAogICAgZHJpdmVycwogICAgdmdhLXN3aXRjaGVyb28KICAgIHZn YWFyYml0ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCA2OWMxMzUxN2VhM2EuLmQ2NjU3YTYxZDAzNyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9idWZz Lm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fZW5jb2Rlci5vIGRybV9tb2RlX29iamVjdC5vIGRybV9w cm9wZXJ0eS5vIFwKIAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1fcHJpbnQubyBc CiAJCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubyBkcm1fdmJsYW5rLm8gXAot CQlkcm1fc3luY29iai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subworCQlkcm1fc3luY29i ai5vIGRybV9sZWFzZS5vIGRybV93cml0ZWJhY2subyBkcm1fY2xpZW50Lm8KIAogZHJtLSQoQ09O RklHX0RSTV9MSUJfUkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCiBkcm0tJChDT05GSUdfRFJN X1ZNKSArPSBkcm1fdm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi45YzliOGFjN2FlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2NsaWVudC5jCkBAIC0wLDAgKzEsMjg5IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAyMDE4IE5vcmFsZiBUcsO4bm5l cworICovCisKKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXgu aD4KKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K KworI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1Z2Zz Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5o PgorI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKworI2luY2x1 ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCisjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCisKKy8q KgorICogRE9DOiBvdmVydmlldworICoKKyAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBzdXBwb3J0 IGZvciBjbGllbnRzIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCBsaWtlIGZiZGV2IGFuZCBib290c3Bs YXNoLgorICogQ3VycmVudGx5IGl0J3Mgb25seSBwYXJ0aWFsbHkgaW1wbGVtZW50ZWQsIGp1c3Qg ZW5vdWdoIHRvIHN1cHBvcnQgZmJkZXYuCisgKgorICogR0VNIGRyaXZlcnMgd2hpY2ggcHJvdmlk ZSBhIEdFTSBiYXNlZCBkdW1iIGJ1ZmZlciB3aXRoIGEgdmlydHVhbCBhZGRyZXNzIGFyZSBzdXBw b3J0ZWQuCisgKi8KKworc3RhdGljIGludCBkcm1fY2xpZW50X29wZW4oc3RydWN0IGRybV9jbGll bnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2 OworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKworCWZpbGUgPSBkcm1fZmlsZV9hbGxvYyhkZXYt PnByaW1hcnkpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZpbGUpOwor CisJbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CisJbGlzdF9hZGQoJmZpbGUtPmxo ZWFkLCAmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVs aXN0X211dGV4KTsKKworCWNsaWVudC0+ZmlsZSA9IGZpbGU7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgZHJtX2NsaWVudF9jbG9zZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisKKwltdXRleF9s b2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKKwlsaXN0X2RlbCgmY2xpZW50LT5maWxlLT5saGVh ZCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKKworCWRybV9maWxlX2Zy ZWUoY2xpZW50LT5maWxlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9jbG9zZSk7CisK Ky8qKgorICogZHJtX2NsaWVudF9uZXcgLSBDcmVhdGUgYSBEUk0gY2xpZW50CisgKiBAZGV2OiBE Uk0gZGV2aWNlCisgKiBAY2xpZW50OiBEUk0gY2xpZW50CisgKiBAbmFtZTogQ2xpZW50IG5hbWUK KyAqCisgKiBVc2UgZHJtX2NsaWVudF9wdXQoKSB0byBmcmVlIHRoZSBjbGllbnQuCisgKgorICog UmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCisgKi8KK2ludCBkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKKwkJICAgY29uc3QgY2hhciAqbmFtZSkKK3sK KwlpbnQgcmV0OworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01P REVTRVQpIHx8CisJICAgICFkZXYtPmRyaXZlci0+ZHVtYl9jcmVhdGUgfHwgIWRldi0+ZHJpdmVy LT5nZW1fcHJpbWVfdm1hcCkKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKworCWNsaWVudC0+ZGV2ID0g ZGV2OworCWNsaWVudC0+bmFtZSA9IG5hbWU7CisKKwlyZXQgPSBkcm1fY2xpZW50X29wZW4oY2xp ZW50KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZHJtX2Rldl9nZXQoZGV2KTsKKwor CXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X25ldyk7CisKKy8qKgorICog ZHJtX2NsaWVudF9yZWxlYXNlIC0gUmVsZWFzZSBEUk0gY2xpZW50IHJlc291cmNlcworICogQGNs aWVudDogRFJNIGNsaWVudAorICoKKyAqIFJlbGVhc2VzIHJlc291cmNlcyBieSBjbG9zaW5nIHRo ZSAmZHJtX2ZpbGUgdGhhdCB3YXMgb3BlbmVkIGJ5IGRybV9jbGllbnRfbmV3KCkuCisgKiBJdCBp cyBjYWxsZWQgYXV0b21hdGljYWxseSBpZiB0aGUgJmRybV9jbGllbnRfZnVuY3MudW5yZWdpc3Rl ciBjYWxsYmFjayBpcyBfbm90XyBzZXQuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25s eSBiZSBjYWxsZWQgZnJvbSB0aGUgdW5yZWdpc3RlciBjYWxsYmFjay4gQW4gZXhjZXB0aW9uCisg KiBpcyBmYmRldiB3aGljaCBjYW5ub3QgZnJlZSB0aGUgYnVmZmVyIGlmIHVzZXJzcGFjZSBoYXMg b3BlbiBmaWxlIGRlc2NyaXB0b3JzLgorICoKKyAqIE5vdGU6CisgKiBDbGllbnRzIGNhbm5vdCBp bml0aWF0ZSBhIHJlbGVhc2UgYnkgdGhlbXNlbHZlcy4gVGhpcyBpcyBkb25lIHRvIGtlZXAgdGhl IGNvZGUgc2ltcGxlLgorICogVGhlIGRyaXZlciBoYXMgdG8gYmUgdW5sb2FkZWQgYmVmb3JlIHRo ZSBjbGllbnQgY2FuIGJlIHVubG9hZGVkLgorICovCit2b2lkIGRybV9jbGllbnRfcmVsZWFzZShz dHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY2xpZW50LT5kZXY7CisKKwlEUk1fREVWX0RFQlVHX0tNUyhkZXYtPmRldiwgIiVzXG4iLCBj bGllbnQtPm5hbWUpOworCisJZHJtX2NsaWVudF9jbG9zZShjbGllbnQpOworCWRybV9kZXZfcHV0 KGRldik7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfcmVsZWFzZSk7CisKK3N0YXRpYyB2 b2lkIGRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1 ZmZlcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gYnVmZmVyLT5jbGllbnQtPmRldjsK KworCWlmIChidWZmZXItPnZhZGRyICYmIGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKQor CQlkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcChidWZmZXItPmdlbSwgYnVmZmVyLT52YWRk cik7CisKKwlpZiAoYnVmZmVyLT5nZW0pCisJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChi dWZmZXItPmdlbSk7CisKKwlkcm1fbW9kZV9kZXN0cm95X2R1bWIoZGV2LCBidWZmZXItPmhhbmRs ZSwgYnVmZmVyLT5jbGllbnQtPmZpbGUpOworCWtmcmVlKGJ1ZmZlcik7Cit9CisKK3N0YXRpYyBz dHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKgorZHJtX2NsaWVudF9idWZmZXJfY3JlYXRlKHN0cnVj dCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBmb3Jt YXQpCit7CisJc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIGR1bWJfYXJncyA9IHsgfTsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJc3RydWN0IGRybV9jbGllbnRf YnVmZmVyICpidWZmZXI7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJdm9pZCAqdmFk ZHI7CisJaW50IHJldDsKKworCWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwli dWZmZXItPmNsaWVudCA9IGNsaWVudDsKKworCWR1bWJfYXJncy53aWR0aCA9IHdpZHRoOworCWR1 bWJfYXJncy5oZWlnaHQgPSBoZWlnaHQ7CisJZHVtYl9hcmdzLmJwcCA9IGRybV9mb3JtYXRfcGxh bmVfY3BwKGZvcm1hdCwgMCkgKiA4OworCXJldCA9IGRybV9tb2RlX2NyZWF0ZV9kdW1iKGRldiwg JmR1bWJfYXJncywgY2xpZW50LT5maWxlKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlOwor CisJYnVmZmVyLT5oYW5kbGUgPSBkdW1iX2FyZ3MuaGFuZGxlOworCWJ1ZmZlci0+cGl0Y2ggPSBk dW1iX2FyZ3MucGl0Y2g7CisKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoY2xpZW50LT5m aWxlLCBkdW1iX2FyZ3MuaGFuZGxlKTsKKwlpZiAoIW9iaikgIHsKKwkJcmV0ID0gLUVOT0VOVDsK KwkJZ290byBlcnJfZGVsZXRlOworCX0KKworCWJ1ZmZlci0+Z2VtID0gb2JqOworCisJLyoKKwkg KiBGSVhNRTogVGhlIGRlcGVuZGVuY3kgb24gR0VNIGhlcmUgaXNuJ3QgcmVxdWlyZWQsIHdlIGNv dWxkCisJICogY29udmVydCB0aGUgZHJpdmVyIGhhbmRsZSB0byBhIGRtYS1idWYgaW5zdGVhZCBh bmQgdXNlIHRoZQorCSAqIGJhY2tlbmQtYWdub3N0aWMgZG1hLWJ1ZiB2bWFwIHN1cHBvcnQgaW5z dGVhZC4gVGhpcyB3b3VsZAorCSAqIHJlcXVpcmUgdGhhdCB0aGUgaGFuZGxlMmZkIHByaW1lIGlv Y3RsIGlzIHJld29ya2VkIHRvIHB1bGwgdGhlCisJICogZmRfaW5zdGFsbCBzdGVwIG91dCBvZiB0 aGUgZHJpdmVyIGJhY2tlbmQgaG9va3MsIHRvIG1ha2UgdGhhdAorCSAqIGZpbmFsIHN0ZXAgb3B0 aW9uYWwgZm9yIGludGVybmFsIHVzZXJzLgorCSAqLworCXZhZGRyID0gZGV2LT5kcml2ZXItPmdl bV9wcmltZV92bWFwKG9iaik7CisJaWYgKCF2YWRkcikgeworCQlyZXQgPSAtRU5PTUVNOworCQln b3RvIGVycl9kZWxldGU7CisJfQorCisJYnVmZmVyLT52YWRkciA9IHZhZGRyOworCisJcmV0dXJu IGJ1ZmZlcjsKKworZXJyX2RlbGV0ZToKKwlkcm1fY2xpZW50X2J1ZmZlcl9kZWxldGUoYnVmZmVy KTsKK2Vycl9mcmVlOgorCWtmcmVlKGJ1ZmZlcik7CisKKwlyZXR1cm4gRVJSX1BUUihyZXQpOwor fQorCitzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZlcl9ybWZiKHN0cnVjdCBkcm1fY2xpZW50 X2J1ZmZlciAqYnVmZmVyKQoreworCWludCByZXQ7CisKKwlpZiAoIWJ1ZmZlci0+ZmIpCisJCXJl dHVybjsKKworCXJldCA9IGRybV9tb2RlX3JtZmIoYnVmZmVyLT5jbGllbnQtPmRldiwgYnVmZmVy LT5mYi0+YmFzZS5pZCwgYnVmZmVyLT5jbGllbnQtPmZpbGUpOworCWlmIChyZXQpCisJCURSTV9E RVZfRVJST1IoYnVmZmVyLT5jbGllbnQtPmRldi0+ZGV2LAorCQkJICAgICAgIkVycm9yIHJlbW92 aW5nIEZCOiV1ICglZClcbiIsIGJ1ZmZlci0+ZmItPmJhc2UuaWQsIHJldCk7CisKKwlidWZmZXIt PmZiID0gTlVMTDsKK30KKworc3RhdGljIGludCBkcm1fY2xpZW50X2J1ZmZlcl9hZGRmYihzdHJ1 Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlciwKKwkJCQkgICB1MzIgd2lkdGgsIHUzMiBoZWln aHQsIHUzMiBmb3JtYXQpCit7CisJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQgPSBidWZm ZXItPmNsaWVudDsKKwlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kIGZiX3JlcSA9IHsgfTsKKwljb25z dCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvOworCWludCByZXQ7CisKKwlpbmZvID0gZHJt X2Zvcm1hdF9pbmZvKGZvcm1hdCk7CisJZmJfcmVxLmJwcCA9IGluZm8tPmNwcFswXSAqIDg7CisJ ZmJfcmVxLmRlcHRoID0gaW5mby0+ZGVwdGg7CisJZmJfcmVxLndpZHRoID0gd2lkdGg7CisJZmJf cmVxLmhlaWdodCA9IGhlaWdodDsKKwlmYl9yZXEuaGFuZGxlID0gYnVmZmVyLT5oYW5kbGU7CisJ ZmJfcmVxLnBpdGNoID0gYnVmZmVyLT5waXRjaDsKKworCXJldCA9IGRybV9tb2RlX2FkZGZiKGNs aWVudC0+ZGV2LCAmZmJfcmVxLCBjbGllbnQtPmZpbGUpOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwlidWZmZXItPmZiID0gZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChjbGllbnQtPmRldiwg YnVmZmVyLT5jbGllbnQtPmZpbGUsIGZiX3JlcS5mYl9pZCk7CisJaWYgKFdBUk5fT04oIWJ1ZmZl ci0+ZmIpKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCS8qIGRyb3AgdGhlIHJlZmVyZW5jZSB3ZSBw aWNrZWQgdXAgaW4gZnJhbWVidWZmZXIgbG9va3VwICovCisJZHJtX2ZyYW1lYnVmZmVyX3B1dChi dWZmZXItPmZiKTsKKworCXN0cnNjcHkoYnVmZmVyLT5mYi0+Y29tbSwgY2xpZW50LT5uYW1lLCBU QVNLX0NPTU1fTEVOKTsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIGRybV9jbGllbnRfZnJh bWVidWZmZXJfY3JlYXRlIC0gQ3JlYXRlIGEgY2xpZW50IGZyYW1lYnVmZmVyCisgKiBAY2xpZW50 OiBEUk0gY2xpZW50CisgKiBAd2lkdGg6IEZyYW1lYnVmZmVyIHdpZHRoCisgKiBAaGVpZ2h0OiBG cmFtZWJ1ZmZlciBoZWlnaHQKKyAqIEBmb3JtYXQ6IEJ1ZmZlciBmb3JtYXQKKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGNyZWF0ZXMgYSAmZHJtX2NsaWVudF9idWZmZXIgd2hpY2ggY29uc2lzdHMgb2Yg YQorICogJmRybV9mcmFtZWJ1ZmZlciBiYWNrZWQgYnkgYSBkdW1iIGJ1ZmZlci4KKyAqIENhbGwg ZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoKSB0byBmcmVlIHRoZSBidWZmZXIuCisgKgor ICogUmV0dXJuczoKKyAqIFBvaW50ZXIgdG8gYSBjbGllbnQgYnVmZmVyIG9yIGFuIGVycm9yIHBv aW50ZXIgb24gZmFpbHVyZS4KKyAqLworc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKK2RybV9j bGllbnRfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1 MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUzMiBmb3JtYXQpCit7CisJc3RydWN0IGRybV9jbGllbnRf YnVmZmVyICpidWZmZXI7CisJaW50IHJldDsKKworCWJ1ZmZlciA9IGRybV9jbGllbnRfYnVmZmVy X2NyZWF0ZShjbGllbnQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCk7CisJaWYgKElTX0VSUihidWZm ZXIpKQorCQlyZXR1cm4gYnVmZmVyOworCisJcmV0ID0gZHJtX2NsaWVudF9idWZmZXJfYWRkZmIo YnVmZmVyLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQpOworCWlmIChyZXQpIHsKKwkJZHJtX2NsaWVu dF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7CisJCXJldHVybiBFUlJfUFRSKHJldCk7CisJfQorCisJ cmV0dXJuIGJ1ZmZlcjsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9j cmVhdGUpOworCisvKioKKyAqIGRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlIC0gRGVsZXRl IGEgY2xpZW50IGZyYW1lYnVmZmVyCisgKiBAYnVmZmVyOiBEUk0gY2xpZW50IGJ1ZmZlciAoY2Fu IGJlIE5VTEwpCisgKi8KK3ZvaWQgZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoc3RydWN0 IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIpCit7CisJaWYgKCFidWZmZXIpCisJCXJldHVybjsK KworCWRybV9jbGllbnRfYnVmZmVyX3JtZmIoYnVmZmVyKTsKKwlkcm1fY2xpZW50X2J1ZmZlcl9k ZWxldGUoYnVmZmVyKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9k ZWxldGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHJ2LmMKaW5kZXggN2FmNzQ4ZWQxYzU4Li5lN2ZmMGIwMzMyOGIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcnYuYwpAQCAtNTA1LDYgKzUwNSw3IEBAIGludCBkcm1fZGV2X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlkZXYtPmRyaXZlciA9IGRyaXZlcjsKIAogCUlOSVRfTElTVF9IRUFEKCZk ZXYtPmZpbGVsaXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCk7 CiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y3R4bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+ dm1hbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+bWFwbGlzdCk7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY2xpZW50LmggYi9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzY2Zjk1ZDQ0MTQKLS0tIC9kZXYv bnVsbAorKysgYi9pbmNsdWRlL2RybS9kcm1fY2xpZW50LmgKQEAgLTAsMCArMSw3NiBAQAorLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKworI2lmbmRlZiBfRFJNX0NMSUVO VF9IXworI2RlZmluZSBfRFJNX0NMSUVOVF9IXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4K Kworc3RydWN0IGRybV9kZXZpY2U7CitzdHJ1Y3QgZHJtX2ZpbGU7CitzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyOworc3RydWN0IGRybV9nZW1fb2JqZWN0OworCisvKioKKyAqIHN0cnVjdCBkcm1fY2xp ZW50X2RldiAtIERSTSBjbGllbnQgaW5zdGFuY2UKKyAqLworc3RydWN0IGRybV9jbGllbnRfZGV2 IHsKKwkvKioKKwkgKiBAZGV2OiBEUk0gZGV2aWNlCisJICovCisJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKKworCS8qKgorCSAqIEBuYW1lOiBOYW1lIG9mIHRoZSBjbGllbnQuCisJICovCisJY29u c3QgY2hhciAqbmFtZTsKKworCS8qKgorCSAqIEBmaWxlOiBEUk0gZmlsZQorCSAqLworCXN0cnVj dCBkcm1fZmlsZSAqZmlsZTsKK307CisKK2ludCBkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKKwkJICAgY29uc3QgY2hh ciAqbmFtZSk7Cit2b2lkIGRybV9jbGllbnRfcmVsZWFzZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYg KmNsaWVudCk7CisKKy8qKgorICogc3RydWN0IGRybV9jbGllbnRfYnVmZmVyIC0gRFJNIGNsaWVu dCBidWZmZXIKKyAqLworc3RydWN0IGRybV9jbGllbnRfYnVmZmVyIHsKKwkvKioKKwkgKiBAY2xp ZW50OiBEUk0gY2xpZW50CisJICovCisJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7CisK KwkvKioKKwkgKiBAaGFuZGxlOiBCdWZmZXIgaGFuZGxlCisJICovCisJdTMyIGhhbmRsZTsKKwor CS8qKgorCSAqIEBwaXRjaDogQnVmZmVyIHBpdGNoCisJICovCisJdTMyIHBpdGNoOworCisJLyoq CisJICogQGdlbTogR0VNIG9iamVjdCBiYWNraW5nIHRoaXMgYnVmZmVyCisJICovCisJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW07CisKKwkvKioKKwkgKiBAdmFkZHI6IFZpcnR1YWwgYWRkcmVz cyBmb3IgdGhlIGJ1ZmZlcgorCSAqLworCXZvaWQgKnZhZGRyOworCisJLyoqCisJICogQGZiOiBE Uk0gZnJhbWVidWZmZXIKKwkgKi8KKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKK307CisK K3N0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqCitkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0 ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1 MzIgZm9ybWF0KTsKK3ZvaWQgZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUoc3RydWN0IGRy bV9jbGllbnRfYnVmZmVyICpidWZmZXIpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9kZXZpY2UuaCBiL2luY2x1ZGUvZHJtL2RybV9kZXZpY2UuaAppbmRleCA4NThiYTE5 YTNlMjkuLjllMjk5NzZkNGU5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RldmljZS5o CisrKyBiL2luY2x1ZGUvZHJtL2RybV9kZXZpY2UuaApAQCAtNzQsNiArNzQsMTMgQEAgc3RydWN0 IGRybV9kZXZpY2UgewogCXN0cnVjdCBtdXRleCBmaWxlbGlzdF9tdXRleDsKIAlzdHJ1Y3QgbGlz dF9oZWFkIGZpbGVsaXN0OwogCisJLyoqCisJICogQGZpbGVsaXN0X2ludGVybmFsOgorCSAqCisJ ICogTGlzdCBvZiBvcGVuIERSTSBmaWxlcyBmb3IgaW4ta2VybmVsIGNsaWVudHMuIFByb3RlY3Rl ZCBieSBAZmlsZWxpc3RfbXV0ZXguCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBmaWxlbGlzdF9p bnRlcm5hbDsKKwogCS8qKiBcbmFtZSBNZW1vcnkgbWFuYWdlbWVudCAqLwogCS8qQHsgKi8KIAlz dHJ1Y3QgbGlzdF9oZWFkIG1hcGxpc3Q7CS8qKjwgTGlua2VkIGxpc3Qgb2YgcmVnaW9ucyAqLwot LSAKMi4xNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK