From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 04/12] drm: Begin an API for in-kernel clients Date: Mon, 18 Jun 2018 16:17:31 +0200 Message-ID: <20180618141739.48151-5-noralf@tronnes.org> References: <20180618141739.48151-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180618141739.48151-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 List-Id: intel-gfx@lists.freedesktop.org VGhpcyB0aGUgYmVnaW5uaW5nIG9mIGFuIEFQSSBmb3IgaW4ta2VybmVsIGNsaWVudHMuCkZpcnN0 IG91dCBpcyBhIHdheSB0byBnZXQgYSBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgYSBkdW1iIGJ1ZmZl ci4KCk9ubHkgR0VNIGRyaXZlcnMgYXJlIHN1cHBvcnRlZC4KVGhlIG9yaWdpbmFsIGlkZWEgb2Yg dXNpbmcgYW4gZXhwb3J0ZWQgZG1hLWJ1ZiB3YXMgZHJvcHBlZCBiZWNhdXNlIGl0CmFsc28gY3Jl YXRlcyBhbiBhbm9ub21vdXMgZmlsZSBkZXNjcmlwdG9yIHdoaWNoIGRvZXNuJ3Qgd29yayB3aGVu IHRoZQpidWZmZXIgaXMgY3JlYXRlZCBmcm9tIGEga2VybmVsIHRocmVhZC4gVGhlIGVhc3kgd2F5 IG91dCBpcyB0byB1c2UKZHJtX2RyaXZlci5nZW1fcHJpbWVfdm1hcCB0byBnZXQgdGhlIHZpcnR1 YWwgYWRkcmVzcywgd2hpY2ggcmVxdWlyZXMgYQpHRU0gb2JqZWN0LiBUaGlzIGV4Y2x1ZGVzIHRo ZSB2bXdnZnggZHJpdmVyIHdoaWNoIGlzIHRoZSBvbmx5IG5vbi1HRU0KZHJpdmVyIGFwYXJ0IGZy b20gdGhlIGxlZ2FjeSBvbmVzLiBBIHNvbHV0aW9uIGZvciB2bXdnZnggd2lsbCBoYXZlIHRvIGJl CndvcmtlZCBvdXQgbGF0ZXIgaWYgaXQgd2FudHMgdG8gc3VwcG9ydCB0aGUgY2xpZW50IEFQSSB3 aGljaCBpdCBwcm9iYWJseQp3aWxsIHdoZW4gd2UgaGF2ZSBhIGJvb3RzcGxhc2ggY2xpZW50LgoK U2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ClJldmll d2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KCkNoYW5n ZXMgc2luY2UgdmVyc2lvbiAxOgotIE1ha2UgaXQgcG9zc2libGUgdG8gZW1iZWQgc3RydWN0IGRy bV9jbGllbnRfZGV2IGFuZCBkcm9wIHRoZSBwcml2YXRlCiAgcG9pbnRlcgotIFVzZSBrcmVmIHJl ZmVyZW5jZSBjb3VudGluZyB0byBjb250cm9sIGNsaWVudCByZWxlYXNlIHNpbmNlIGJvdGggdGhl CiAgY2xpZW50IGFuZCB0aGUgZHJpdmVyIGNhbiByZWxlYXNlLgotIEFkZCBjb21tZW50IGFib3V0 IHVzaW5nIGRtYS1idWYgYXMgYSBwb3NzaWJpbGl0eSB3aXRoIHNvbWUgcmV3b3JrCi0gTW92ZSBi dWZmZXIgTlVMTCBjaGVjayB0byBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZSgpCi0gTW92 ZSBjbGllbnQgbmFtZSB0byBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYKLSBNb3ZlIHVwIGRybV9kZXZf Z2V0L3B1dCBjYWxscyB0byBtYWtlIHRoZW0gbW9yZSB2aXNpYmxlCi0gTW92ZSBkcm1fY2xpZW50 X2Rldi5saXN0IGRlZmluaXRpb24gdG8gbGF0ZXIgcGF0Y2ggdGhhdCBtYWtlcyB1c2Ugb2YgaXQK CgogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QgfCAgMTIgKysKIERvY3VtZW50YXRp b24vZ3B1L2luZGV4LnJzdCAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAg ICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jICAgICB8IDMxNiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9k cm1fZHJ2LmMgICAgICAgIHwgICAxICsKIGluY2x1ZGUvZHJtL2RybV9jbGllbnQuaCAgICAgICAg IHwgIDg3ICsrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fZGV2aWNlLmggICAgICAgICB8ICAg NyArCiA3IGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3QKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWNsaWVudC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tY2xpZW50LnJzdApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlNjcyMDYzZTdlYgotLS0g L2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0CkBAIC0wLDAg KzEsMTIgQEAKKz09PT09PT09PT09PT09PT09CitLZXJuZWwgY2xpZW50cworPT09PT09PT09PT09 PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKKyAg IDpkb2M6IG92ZXJ2aWV3CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fY2xpZW50 LmgKKyAgIDppbnRlcm5hbDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1f Y2xpZW50LmMKKyAgIDpleHBvcnQ6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pbmRl eC5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKaW5kZXggMDAyODhmMzRjNWE2Li4x ZmNmOGU4NTFlMTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2luZGV4LnJzdAorKysg Yi9Eb2N1bWVudGF0aW9uL2dwdS9pbmRleC5yc3QKQEAgLTEwLDYgKzEwLDcgQEAgTGludXggR1BV IERyaXZlciBEZXZlbG9wZXIncyBHdWlkZQogICAgZHJtLWttcwogICAgZHJtLWttcy1oZWxwZXJz CiAgICBkcm0tdWFwaQorICAgZHJtLWNsaWVudAogICAgZHJpdmVycwogICAgdmdhLXN3aXRjaGVy b28KICAgIHZnYWFyYml0ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCBlZjlmM2RhYjI4N2YuLjhjODA0NTE0NzQx NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5v IGRybV9idWZzLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fZW5jb2Rlci5vIGRybV9tb2RlX29iamVj dC5vIGRybV9wcm9wZXJ0eS5vIFwKIAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1f cHJpbnQubyBcCiAJCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubyBkcm1fdmJs YW5rLm8gXAotCQlkcm1fc3luY29iai5vIGRybV9sZWFzZS5vCisJCWRybV9zeW5jb2JqLm8gZHJt X2xlYXNlLm8gZHJtX2NsaWVudC5vCiAKIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRPTSkgKz0g bGliL2RybV9yYW5kb20ubwogZHJtLSQoQ09ORklHX0RSTV9WTSkgKz0gZHJtX3ZtLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2NsaWVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOThkZGE0 MGY1NDE2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwpA QCAtMCwwICsxLDMxNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8q CisgKiBDb3B5cmlnaHQgMjAxOCBOb3JhbGYgVHLDuG5uZXMKKyAqLworCisjaW5jbHVkZSA8bGlu dXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvc2Vx X2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2Ns aWVudC5oPgorI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Zp bGUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2Vt Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9tb2RlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5o PgorI2luY2x1ZGUgPGRybS9kcm1QLmg+CisKKyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5o IgorI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgorCisvKioKKyAqIERPQzogb3ZlcnZpZXcKKyAq CisgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY2xpZW50cyBydW5uaW5nIGlu IHRoZSBrZXJuZWwgbGlrZSBmYmRldiBhbmQgYm9vdHNwbGFzaC4KKyAqIEN1cnJlbnRseSBpdCdz IG9ubHkgcGFydGlhbGx5IGltcGxlbWVudGVkLCBqdXN0IGVub3VnaCB0byBzdXBwb3J0IGZiZGV2 LgorICoKKyAqIEdFTSBkcml2ZXJzIHdoaWNoIHByb3ZpZGUgYSBHRU0gYmFzZWQgZHVtYiBidWZm ZXIgd2l0aCBhIHZpcnR1YWwgYWRkcmVzcyBhcmUgc3VwcG9ydGVkLgorICovCisKK3N0YXRpYyBp bnQgZHJtX2NsaWVudF9vcGVuKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGU7CisKKwlmaWxlID0gZHJtX2ZpbGVfYWxsb2MoZGV2LT5wcmltYXJ5KTsKKwlpZiAoSVNfRVJS KGZpbGUpKQorCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKworCW11dGV4X2xvY2soJmRldi0+Zmls ZWxpc3RfbXV0ZXgpOworCWxpc3RfYWRkKCZmaWxlLT5saGVhZCwgJmRldi0+ZmlsZWxpc3RfaW50 ZXJuYWwpOworCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CisKKwljbGllbnQt PmZpbGUgPSBmaWxlOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX2NsaWVudF9jbG9z ZSAtIENsb3NlIHRoZSBjbGllbnQgRFJNIGZpbGUKKyAqIEBjbGllbnQ6IERSTSBjbGllbnQKKyAq CisgKiBDbG9zZSB0aGUgJmRybV9maWxlIHRoYXQgd2FzIG9wZW5lZCBieSBkcm1fY2xpZW50X25l dygpLiBJdCBpcyBjYWxsZWQKKyAqIGF1dG9tYXRpY2FsbHkgaWYgdGhlICZkcm1fY2xpZW50X2Z1 bmNzLnJlbGVhc2UgY2FsbGJhY2sgaXMgbm90IHNldC4KKyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxk IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIHJlbGVhc2UgY2FsbGJhY2suCisgKi8KK3ZvaWQgZHJt X2NsaWVudF9jbG9zZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisKKwltdXRleF9sb2NrKCZkZXYtPmZpbGVs aXN0X211dGV4KTsKKwlsaXN0X2RlbCgmY2xpZW50LT5maWxlLT5saGVhZCk7CisJbXV0ZXhfdW5s b2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKKworCWRybV9maWxlX2ZyZWUoY2xpZW50LT5maWxl KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9jbG9zZSk7CisKKy8qKgorICogZHJtX2Ns aWVudF9uZXcgLSBDcmVhdGUgYSBEUk0gY2xpZW50CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBA Y2xpZW50OiBEUk0gY2xpZW50CisgKiBAbmFtZTogQ2xpZW50IG5hbWUKKyAqCisgKiBVc2UgZHJt X2NsaWVudF9wdXQoKSB0byBmcmVlIHRoZSBjbGllbnQuCisgKgorICogUmV0dXJuczoKKyAqIFpl cm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2lu dCBkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudCwKKwkJICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlpbnQgcmV0OworCisJ aWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpIHx8CisJICAg ICFkZXYtPmRyaXZlci0+ZHVtYl9jcmVhdGUgfHwgIWRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1h cCkKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKworCWNsaWVudC0+ZGV2ID0gZGV2OworCWNsaWVudC0+ bmFtZSA9IG5hbWU7CisJa3JlZl9pbml0KCZjbGllbnQtPnJlZik7CisKKwlyZXQgPSBkcm1fY2xp ZW50X29wZW4oY2xpZW50KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZHJtX2Rldl9n ZXQoZGV2KTsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X25ldyk7 CisKK3N0YXRpYyB2b2lkIGRybV9jbGllbnRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKQorewor CXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0 IGRybV9jbGllbnRfZGV2LCByZWYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQt PmRldjsKKworCURSTV9ERVZfREVCVUdfS01TKGRldi0+ZGV2LCAiJXNcbiIsIGNsaWVudC0+bmFt ZSk7CisKKwlkcm1fY2xpZW50X2Nsb3NlKGNsaWVudCk7CisJa2ZyZWUoY2xpZW50KTsKKworCWRy bV9kZXZfcHV0KGRldik7Cit9CisKKy8qKgorICogZHJtX2NsaWVudF9nZXQgLSBUYWtlIGEgcmVm ZXJlbmNlIG9mIGEgRFJNIGNsaWVudAorICogQGNsaWVudDogRFJNIGNsaWVudCAoY2FuIGJlIE5V TEwpCisgKgorICogVGhpcyBpbmNyZWFzZXMgdGhlIHJlZi1jb3VudCBvZiBAY2xpZW50IGJ5IG9u ZS4gWW91ICptdXN0KiBhbHJlYWR5IG93biBhCisgKiByZWZlcmVuY2Ugd2hlbiBjYWxsaW5nIHRo aXMuIFVzZSBkcm1fY2xpZW50X3B1dCgpIHRvIGRyb3AgdGhpcyByZWZlcmVuY2UKKyAqIGFnYWlu LgorICovCit2b2lkIGRybV9jbGllbnRfZ2V0KHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50 KQoreworCWlmIChjbGllbnQpCisJCWtyZWZfZ2V0KCZjbGllbnQtPnJlZik7Cit9CitFWFBPUlRf U1lNQk9MKGRybV9jbGllbnRfZ2V0KTsKKworLyoqCisgKiBkcm1fY2xpZW50X3B1dCAtIERyb3Ag cmVmZXJlbmNlIG9mIGEgRFJNIGNsaWVudAorICogQGNsaWVudDogRFJNIGNsaWVudCAoY2FuIGJl IE5VTEwpCisgKgorICogVGhpcyBkZWNyZWFzZXMgdGhlIHJlZi1jb3VudCBvZiBAY2xpZW50IGJ5 IG9uZS4gVGhlIGNsaWVudCByZXNvdXJjZXMgYXJlCisgKiByZWxlYXNlZCBpZiB0aGUgcmVmLWNv dW50IGRyb3BzIHRvIHplcm8uCisgKi8KK3ZvaWQgZHJtX2NsaWVudF9wdXQoc3RydWN0IGRybV9j bGllbnRfZGV2ICpjbGllbnQpCit7CisJaWYgKGNsaWVudCkKKwkJa3JlZl9wdXQoJmNsaWVudC0+ cmVmLCBkcm1fY2xpZW50X3JlbGVhc2UpOworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X3B1 dCk7CisKK3N0YXRpYyB2b2lkIGRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2Ns aWVudF9idWZmZXIgKmJ1ZmZlcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCisJZGV2 ID0gYnVmZmVyLT5jbGllbnQtPmRldjsKKwlpZiAoYnVmZmVyLT52YWRkciAmJiBkZXYtPmRyaXZl ci0+Z2VtX3ByaW1lX3Z1bm1hcCkKKwkJZGV2LT5kcml2ZXItPmdlbV9wcmltZV92dW5tYXAoYnVm ZmVyLT5nZW0sIGJ1ZmZlci0+dmFkZHIpOworCisJaWYgKGJ1ZmZlci0+Z2VtKQorCQlkcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQoYnVmZmVyLT5nZW0pOworCisJZHJtX21vZGVfZGVzdHJveV9k dW1iKGRldiwgYnVmZmVyLT5oYW5kbGUsIGJ1ZmZlci0+Y2xpZW50LT5maWxlKTsKKwlrZnJlZShi dWZmZXIpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKK2RybV9jbGll bnRfYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRo LCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQoreworCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVt YiBkdW1iX2FyZ3MgPSB7IH07CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2 OworCXN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyOworCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqOworCXZvaWQgKnZhZGRyOworCWludCByZXQ7CisKKwlidWZmZXIgPSBremFsbG9j KHNpemVvZigqYnVmZmVyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFidWZmZXIpCisJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOworCisJYnVmZmVyLT5jbGllbnQgPSBjbGllbnQ7CisKKwlkdW1iX2Fy Z3Mud2lkdGggPSB3aWR0aDsKKwlkdW1iX2FyZ3MuaGVpZ2h0ID0gaGVpZ2h0OworCWR1bWJfYXJn cy5icHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3JtYXQsIDApICogODsKKwlyZXQgPSBkcm1f bW9kZV9jcmVhdGVfZHVtYihkZXYsICZkdW1iX2FyZ3MsIGNsaWVudC0+ZmlsZSk7CisJaWYgKHJl dCkKKwkJZ290byBlcnJfZnJlZTsKKworCWJ1ZmZlci0+aGFuZGxlID0gZHVtYl9hcmdzLmhhbmRs ZTsKKwlidWZmZXItPnBpdGNoID0gZHVtYl9hcmdzLnBpdGNoOworCisJb2JqID0gZHJtX2dlbV9v YmplY3RfbG9va3VwKGNsaWVudC0+ZmlsZSwgZHVtYl9hcmdzLmhhbmRsZSk7CisJaWYgKCFvYmop ICB7CisJCXJldCA9IC1FTk9FTlQ7CisJCWdvdG8gZXJyX2RlbGV0ZTsKKwl9CisKKwlidWZmZXIt PmdlbSA9IG9iajsKKworCS8qCisJICogRklYTUU6IFRoZSBkZXBlbmRlbmN5IG9uIEdFTSBoZXJl IGlzbid0IHJlcXVpcmVkLCB3ZSBjb3VsZAorCSAqIGNvbnZlcnQgdGhlIGRyaXZlciBoYW5kbGUg dG8gYSBkbWEtYnVmIGluc3RlYWQgYW5kIHVzZSB0aGUKKwkgKiBiYWNrZW5kLWFnbm9zdGljIGRt YS1idWYgdm1hcCBzdXBwb3J0IGluc3RlYWQuIFRoaXMgd291bGQKKwkgKiByZXF1aXJlIHRoYXQg dGhlIGhhbmRsZTJmZCBwcmltZSBpb2N0bCBpcyByZXdvcmtlZCB0byBwdWxsIHRoZQorCSAqIGZk X2luc3RhbGwgc3RlcCBvdXQgb2YgdGhlIGRyaXZlciBiYWNrZW5kIGhvb2tzLCB0byBtYWtlIHRo YXQKKwkgKiBmaW5hbCBzdGVwIG9wdGlvbmFsIGZvciBpbnRlcm5hbCB1c2Vycy4KKwkgKi8KKwl2 YWRkciA9IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcChvYmopOworCWlmICghdmFkZHIpIHsK KwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnJfZGVsZXRlOworCX0KKworCWJ1ZmZlci0+dmFk ZHIgPSB2YWRkcjsKKworCXJldHVybiBidWZmZXI7CisKK2Vycl9kZWxldGU6CisJZHJtX2NsaWVu dF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7CitlcnJfZnJlZToKKwlrZnJlZShidWZmZXIpOworCisJ cmV0dXJuIEVSUl9QVFIocmV0KTsKK30KKworc3RhdGljIHZvaWQgZHJtX2NsaWVudF9idWZmZXJf cm1mYihzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcikKK3sKKwlpbnQgcmV0OworCisJ aWYgKCFidWZmZXItPmZiKQorCQlyZXR1cm47CisKKwlyZXQgPSBkcm1fbW9kZV9ybWZiKGJ1ZmZl ci0+Y2xpZW50LT5kZXYsIGJ1ZmZlci0+ZmItPmJhc2UuaWQsIGJ1ZmZlci0+Y2xpZW50LT5maWxl KTsKKwlpZiAocmV0KQorCQlEUk1fREVWX0VSUk9SKGJ1ZmZlci0+Y2xpZW50LT5kZXYtPmRldiwK KwkJCSAgICAgICJFcnJvciByZW1vdmluZyBGQjoldSAoJWQpXG4iLCBidWZmZXItPmZiLT5iYXNl LmlkLCByZXQpOworCisJYnVmZmVyLT5mYiA9IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgZHJtX2Ns aWVudF9idWZmZXJfYWRkZmIoc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIsCisJCQkJ ICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQoreworCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50ID0gYnVmZmVyLT5jbGllbnQ7CisJc3RydWN0IGRybV9tb2RlX2ZiX2Nt ZCBmYl9yZXEgPSB7IH07CisJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKKwlp bnQgcmV0OworCisJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhmb3JtYXQpOworCWZiX3JlcS5icHAg PSBpbmZvLT5jcHBbMF0gKiA4OworCWZiX3JlcS5kZXB0aCA9IGluZm8tPmRlcHRoOworCWZiX3Jl cS53aWR0aCA9IHdpZHRoOworCWZiX3JlcS5oZWlnaHQgPSBoZWlnaHQ7CisJZmJfcmVxLmhhbmRs ZSA9IGJ1ZmZlci0+aGFuZGxlOworCWZiX3JlcS5waXRjaCA9IGJ1ZmZlci0+cGl0Y2g7CisKKwly ZXQgPSBkcm1fbW9kZV9hZGRmYihjbGllbnQtPmRldiwgJmZiX3JlcSwgY2xpZW50LT5maWxlKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJYnVmZmVyLT5mYiA9IGRybV9mcmFtZWJ1ZmZl cl9sb29rdXAoY2xpZW50LT5kZXYsIGJ1ZmZlci0+Y2xpZW50LT5maWxlLCBmYl9yZXEuZmJfaWQp OworCWlmIChXQVJOX09OKCFidWZmZXItPmZiKSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwkvKiBk cm9wIHRoZSByZWZlcmVuY2Ugd2UgcGlja2VkIHVwIGluIGZyYW1lYnVmZmVyIGxvb2t1cCAqLwor CWRybV9mcmFtZWJ1ZmZlcl9wdXQoYnVmZmVyLT5mYik7CisKKwlzdHJzY3B5KGJ1ZmZlci0+ZmIt PmNvbW0sIGNsaWVudC0+bmFtZSwgVEFTS19DT01NX0xFTik7CisKKwlyZXR1cm4gMDsKK30KKwor LyoqCisgKiBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0ZSAtIENyZWF0ZSBhIGNsaWVudCBm cmFtZWJ1ZmZlcgorICogQGNsaWVudDogRFJNIGNsaWVudAorICogQHdpZHRoOiBGcmFtZWJ1ZmZl ciB3aWR0aAorICogQGhlaWdodDogRnJhbWVidWZmZXIgaGVpZ2h0CisgKiBAZm9ybWF0OiBCdWZm ZXIgZm9ybWF0CisgKgorICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgJmRybV9jbGllbnRfYnVm ZmVyIHdoaWNoIGNvbnNpc3RzIG9mIGEKKyAqICZkcm1fZnJhbWVidWZmZXIgYmFja2VkIGJ5IGEg ZHVtYiBidWZmZXIuCisgKiBDYWxsIGRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKCkgdG8g ZnJlZSB0aGUgYnVmZmVyLgorICoKKyAqIFJldHVybnM6CisgKiBQb2ludGVyIHRvIGEgY2xpZW50 IGJ1ZmZlciBvciBhbiBlcnJvciBwb2ludGVyIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBkcm1f Y2xpZW50X2J1ZmZlciAqCitkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJt X2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQor eworCXN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyOworCWludCByZXQ7CisKKwlidWZm ZXIgPSBkcm1fY2xpZW50X2J1ZmZlcl9jcmVhdGUoY2xpZW50LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt YXQpOworCWlmIChJU19FUlIoYnVmZmVyKSkKKwkJcmV0dXJuIGJ1ZmZlcjsKKworCXJldCA9IGRy bV9jbGllbnRfYnVmZmVyX2FkZGZiKGJ1ZmZlciwgd2lkdGgsIGhlaWdodCwgZm9ybWF0KTsKKwlp ZiAocmV0KSB7CisJCWRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShidWZmZXIpOworCQlyZXR1cm4g RVJSX1BUUihyZXQpOworCX0KKworCXJldHVybiBidWZmZXI7Cit9CitFWFBPUlRfU1lNQk9MKGRy bV9jbGllbnRfZnJhbWVidWZmZXJfY3JlYXRlKTsKKworLyoqCisgKiBkcm1fY2xpZW50X2ZyYW1l YnVmZmVyX2RlbGV0ZSAtIERlbGV0ZSBhIGNsaWVudCBmcmFtZWJ1ZmZlcgorICogQGJ1ZmZlcjog RFJNIGNsaWVudCBidWZmZXIgKGNhbiBiZSBOVUxMKQorICovCit2b2lkIGRybV9jbGllbnRfZnJh bWVidWZmZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQoreworCWlm ICghYnVmZmVyKQorCQlyZXR1cm47CisKKwlkcm1fY2xpZW50X2J1ZmZlcl9ybWZiKGJ1ZmZlcik7 CisJZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7Cit9CitFWFBPUlRfU1lNQk9MKGRy bV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCmluZGV4IGY2OTEwZWJlNGQw ZS4uNjdhYzc5M2E3MTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKQEAgLTUwNSw2ICs1MDUsNyBAQCBpbnQgZHJt X2Rldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZGV2LT5kcml2ZXIgPSBkcml2ZXI7 CiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5maWxlbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmRl di0+ZmlsZWxpc3RfaW50ZXJuYWwpOwogCUlOSVRfTElTVF9IRUFEKCZkZXYtPmN0eGxpc3QpOwog CUlOSVRfTElTVF9IRUFEKCZkZXYtPnZtYWxpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZkZXYtPm1h cGxpc3QpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5jbHVkZS9k cm0vZHJtX2NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MTJhYzI2MTViMTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5o CkBAIC0wLDAgKzEsODcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICov CisKKyNpZm5kZWYgX0RSTV9DTElFTlRfSF8KKyNkZWZpbmUgX0RSTV9DTElFTlRfSF8KKworI2lu Y2x1ZGUgPGxpbnV4L2tyZWYuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCitzdHJ1Y3Qg ZHJtX2RldmljZTsKK3N0cnVjdCBkcm1fZnJhbWVidWZmZXI7CitzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3Q7CitzdHJ1Y3QgZHJtX21pbm9yOworCisvKioKKyAqIHN0cnVjdCBkcm1fY2xpZW50X2RldiAt IERSTSBjbGllbnQgaW5zdGFuY2UKKyAqLworc3RydWN0IGRybV9jbGllbnRfZGV2IHsKKwkvKioK KwkgKiBAZGV2OiBEUk0gZGV2aWNlCisJICovCisJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKKwor CS8qKgorCSAqIEBuYW1lOiBOYW1lIG9mIHRoZSBjbGllbnQuCisJICovCisJY29uc3QgY2hhciAq bmFtZTsKKworCS8qKgorCSAqIEByZWY6CisJICoKKwkgKiBSZWZlcmVuY2UgY291bnRpbmcuIFRo ZSBjbGllbnQgcmVzb3VyY2VzIGFyZSByZWxlYXNlZCB3aGVuIHRoaXMgZHJvcHMKKwkgKiB0byB6 ZXJvLgorCSAqLworCXN0cnVjdCBrcmVmIHJlZjsKKworCS8qKgorCSAqIEBmaWxlOiBEUk0gZmls ZQorCSAqLworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKK307CisKK3ZvaWQgZHJtX2NsaWVudF9j bG9zZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CitpbnQgZHJtX2NsaWVudF9uZXco c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsCisJ CSAgIGNvbnN0IGNoYXIgKm5hbWUpOwordm9pZCBkcm1fY2xpZW50X2dldChzdHJ1Y3QgZHJtX2Ns aWVudF9kZXYgKmNsaWVudCk7Cit2b2lkIGRybV9jbGllbnRfcHV0KHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50KTsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgLSBEUk0g Y2xpZW50IGJ1ZmZlcgorICovCitzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgeworCS8qKgorCSAq IEBjbGllbnQ6IERSTSBjbGllbnQKKwkgKi8KKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dDsKKworCS8qKgorCSAqIEBoYW5kbGU6IEJ1ZmZlciBoYW5kbGUKKwkgKi8KKwl1MzIgaGFuZGxl OworCisJLyoqCisJICogQHBpdGNoOiBCdWZmZXIgcGl0Y2gKKwkgKi8KKwl1MzIgcGl0Y2g7CisK KwkvKioKKwkgKiBAZ2VtOiBHRU0gb2JqZWN0IGJhY2tpbmcgdGhpcyBidWZmZXIKKwkgKi8KKwlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbTsKKworCS8qKgorCSAqIEB2YWRkcjogVmlydHVhbCBh ZGRyZXNzIGZvciB0aGUgYnVmZmVyCisJICovCisJdm9pZCAqdmFkZHI7CisKKwkvKioKKwkgKiBA ZmI6IERSTSBmcmFtZWJ1ZmZlcgorCSAqLworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwor fTsKKworc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKK2RybV9jbGllbnRfZnJhbWVidWZmZXJf Y3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWln aHQsIHUzMiBmb3JtYXQpOwordm9pZCBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShzdHJ1 Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2RldmljZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2RldmljZS5oCmluZGV4IDg1 OGJhMTlhM2UyOS4uOWUyOTk3NmQ0ZTk4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZGV2 aWNlLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RldmljZS5oCkBAIC03NCw2ICs3NCwxMyBAQCBz dHJ1Y3QgZHJtX2RldmljZSB7CiAJc3RydWN0IG11dGV4IGZpbGVsaXN0X211dGV4OwogCXN0cnVj dCBsaXN0X2hlYWQgZmlsZWxpc3Q7CiAKKwkvKioKKwkgKiBAZmlsZWxpc3RfaW50ZXJuYWw6CisJ ICoKKwkgKiBMaXN0IG9mIG9wZW4gRFJNIGZpbGVzIGZvciBpbi1rZXJuZWwgY2xpZW50cy4gUHJv dGVjdGVkIGJ5IEBmaWxlbGlzdF9tdXRleC4KKwkgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVs aXN0X2ludGVybmFsOworCiAJLyoqIFxuYW1lIE1lbW9yeSBtYW5hZ2VtZW50ICovCiAJLypAeyAq LwogCXN0cnVjdCBsaXN0X2hlYWQgbWFwbGlzdDsJLyoqPCBMaW5rZWQgbGlzdCBvZiByZWdpb25z ICovCi0tIAoyLjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=