From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 1/3] drm: Add the optional .fb_modifier() hook Date: Mon, 12 Mar 2018 22:40:33 +0200 Message-ID: <20180312204035.31387-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRv IG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZSBjb3JlIHRvIGNoZWNrIHRoZSBmYiBwaXhlbCBmb3Jt YXQgYW5kCm1vZGlmaWVyLCB3ZSBuZWVkIHRvIGZpcnN0IGFzayB0aGUgZHJpdmVyIHRvIGRlZHVj ZSB0aGUgbW9kaWZpZXIKd2hlbiB0aGUgcmVxdWVzdCBkb2VzIG5vdCBleHBsaWNpdGx5IHNwZWNp Znkgb25lLgoKQWRkIGEgbmV3IC5mYl9tb2RpZmllcigpIGhvb2sgZm9yIHRoYXQgcHVycG9zZSBh bmQgY29udmVydCBpOTE1CmFuZCB2YzQgdG8gbWFrZSB1c2UgaWYgaXQuIEFsbCBvdGhlciBkcml2 ZXJzIHNlZW0gdG8gY3VycmVudGx5CmFzc3VtZSBsaW5lYXIgd2hlbiB0aGUgcmVxdWVzdCBkb2Vz IG5vdCBzcGVjaWZ5IGFueXRoaW5nIGVsc2UsCmhlbmNlIHdlIG1ha2UgdGhlIGNvcmUgdXNlIHRo YXQgYXMgdGhlIGZhbGxiYWNrIHN0cmF0ZWd5IHdoZW4KdGhlIGhvb2sgaXMgbm90IHByb3ZpZGVk LgoKU2luY2UgdGhlIHR3byBob29rcyBhcmUgbm93IHNlcGFyYXRlIGl0IGlzIG9mIGNvdXJzZSBw b3NzaWJsZQp0byByYWNlIHNldF90aWxpbmcgYWdhaW5zdCBhZGRmYi4gQnV0IHNpbmNlIHRoYXQn cyBqdXN0IHVzZXJzcGFjZQppbnRlbnRpYWxseSBzaG9vdGluZyBpdHNlbGYgaW4gdGhlIGZvb3Qg SSBkb24ndCB0aGluayB3ZSBzaG91bGQKaHZlIHRvIHdvcnJ5IGFib3V0IGl0LiBUaGUgYWRkZmIg d2lsbCBzaW1wbHkgZmFpbCBpbiB0aGUKLmZiX2NyZWF0ZSgpIGhvb2sgaWYgdGhlIHRpbGluZyBo YXMgY2hhbmdlZCBzaW5jZQouZmJfbW9maWZpZXIoKSB3YXMgY2FsbGVkLiBXZWxsLCB0aGF0J3Mg dGhlIGNhc2UgZm9yIGk5MTUuCnZjNCBuZXZlciBkaWQgYW55IGNyb3NzIGNoZWNrcyBiZXR3ZWVu IHRoZSB0aWxpbmcgYW5kIG1vZGlmaWVyLgoKZnJhbWVidWZmZXJfY2hlY2soKSBub3cgY2hlY2tz IHRoZSByZXF1ZXN0IGFnYWluc3QgdGhlIGRlZHVjZWQKbW9kaWZpZXIsIGFuZCBzaW5jZSB3ZSBu b3cga25vdyB0aGUgZmluYWwgbW9kaWZpZXIgd2UgY2FuCmNvbnZlcnQgdGhlIHJlcXVlc3QgdG8g b25lIHdpdGggbW9kaWZpZXJzLiBUaGlzIG1lYW5zIHRoYXQgYQpkcml2ZXIgd2lsbCBuZXZlciBl dmVuIGhhdmUgdG8gbG9vayBhdCBhIHJlcXVlc3Qgd2l0aG91dAptb2RpZmllcnMgb3V0c2lkZSBv ZiB0aGUgLmZiX21vZGlmdWVyKCkgaG9vaywgc2hvdWxkIGl0IG5lZWQKdG8gcHJvdmlkZSBvbmUu CgpDYzogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KU2lnbmVkLW9mZi1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMgICAgfCA2MSArKysrKysrKysrKysrKysrKysrKystLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNzQgKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgIHwg IDIgKwogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMgICAgICAgIHwgNTcgKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCAgICAgICAg fCAyOSArKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwg NzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCmluZGV4IDdkZjAyNTY2 OTA2Ny4uMjFkM2Q1MWViMjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1l YnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCkBAIC0xNTMs NyArMTUzLDggQEAgc3RhdGljIGludCBmYl9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwKIH0KIAog c3RhdGljIGludCBmcmFtZWJ1ZmZlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJ ICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqcikKKwkJCSAgICAgc3RydWN0IGRy bV9tb2RlX2ZiX2NtZDIgKnIsCisJCQkgICAgIHU2NCBtb2RpZmllcikKIHsKIAljb25zdCBzdHJ1 Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvOwogCWludCBpOwpAQCAtMjEwLDE0ICsyMTEsMTQgQEAg c3RhdGljIGludCBmcmFtZWJ1ZmZlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9 CiAKIAkJaWYgKHItPmZsYWdzICYgRFJNX01PREVfRkJfTU9ESUZJRVJTICYmCi0JCSAgICByLT5t b2RpZmllcltpXSAhPSByLT5tb2RpZmllclswXSkgeworCQkgICAgci0+bW9kaWZpZXJbaV0gIT0g bW9kaWZpZXIpIHsKIAkJCURSTV9ERUJVR19LTVMoImJhZCBmYiBtb2RpZmllciAlbGx1IGZvciBw bGFuZSAlZFxuIiwKIAkJCQkgICAgICByLT5tb2RpZmllcltpXSwgaSk7CiAJCQlyZXR1cm4gLUVJ TlZBTDsKIAkJfQogCiAJCS8qIG1vZGlmaWVyIHNwZWNpZmljIGNoZWNrczogKi8KLQkJc3dpdGNo IChyLT5tb2RpZmllcltpXSkgeworCQlzd2l0Y2ggKG1vZGlmaWVyKSB7CiAJCWNhc2UgRFJNX0ZP Uk1BVF9NT0RfU0FNU1VOR182NF8zMl9USUxFOgogCQkJLyogTk9URTogdGhlIHBpdGNoIHJlc3Ry aWN0aW9uIG1heSBiZSBsaWZ0ZWQgbGF0ZXIgaWYgaXQgdHVybnMKIAkJCSAqIG91dCB0aGF0IG5v IGh3IGhhcyB0aGlzIHJlc3RyaWN0aW9uOgpAQCAtMjYxLDQ1ICsyNjIsNzMgQEAgc3RhdGljIGlu dCBmcmFtZWJ1ZmZlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAJfQogCisJ LyoKKwkgKiBGaW5hbGx5IGNvbnZlcnQgdGhlIHJlcXVlc3QgaW50byBvbmUgd2l0aAorCSAqIG1v ZGlmaWVycyB0byBtYWtlIGxpZmUgZWFzaWVyIGZvciBkcml2ZXJzLgorCSAqLworCWlmIChkZXYt Pm1vZGVfY29uZmlnLmFsbG93X2ZiX21vZGlmaWVycykgeworCQlyLT5mbGFncyB8PSBEUk1fTU9E RV9GQl9NT0RJRklFUlM7CisKKwkJZm9yIChpID0gMDsgaSA8IGluZm8tPm51bV9wbGFuZXM7IGkr KykKKwkJCXItPm1vZGlmaWVyW2ldID0gbW9kaWZpZXI7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAK IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgogZHJtX2ludGVybmFsX2ZyYW1lYnVmZmVyX2NyZWF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCWNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyICpyLAorCQkJCWNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICp1c2VyX3IsCiAJCQkJ c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CiAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAq Y29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgciA9 ICp1c2VyX3I7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CisJdTY0IG1vZGlmaWVyID0g MDsKIAlpbnQgcmV0OwogCi0JaWYgKHItPmZsYWdzICYgfihEUk1fTU9ERV9GQl9JTlRFUkxBQ0VE IHwgRFJNX01PREVfRkJfTU9ESUZJRVJTKSkgewotCQlEUk1fREVCVUdfS01TKCJiYWQgZnJhbWVi dWZmZXIgZmxhZ3MgMHglMDh4XG4iLCByLT5mbGFncyk7CisJaWYgKHIuZmxhZ3MgJiB+KERSTV9N T0RFX0ZCX0lOVEVSTEFDRUQgfCBEUk1fTU9ERV9GQl9NT0RJRklFUlMpKSB7CisJCURSTV9ERUJV R19LTVMoImJhZCBmcmFtZWJ1ZmZlciBmbGFncyAweCUwOHhcbiIsIHIuZmxhZ3MpOwogCQlyZXR1 cm4gRVJSX1BUUigtRUlOVkFMKTsKIAl9CiAKLQlpZiAoKGNvbmZpZy0+bWluX3dpZHRoID4gci0+ d2lkdGgpIHx8IChyLT53aWR0aCA+IGNvbmZpZy0+bWF4X3dpZHRoKSkgeworCWlmIChjb25maWct Pm1pbl93aWR0aCA+IHIud2lkdGggfHwgci53aWR0aCA+IGNvbmZpZy0+bWF4X3dpZHRoKSB7CiAJ CURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciB3aWR0aCAlZCwgc2hvdWxkIGJlID49ICVk ICYmIDw9ICVkXG4iLAotCQkJICByLT53aWR0aCwgY29uZmlnLT5taW5fd2lkdGgsIGNvbmZpZy0+ bWF4X3dpZHRoKTsKKwkJCSAgci53aWR0aCwgY29uZmlnLT5taW5fd2lkdGgsIGNvbmZpZy0+bWF4 X3dpZHRoKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAJfQotCWlmICgoY29uZmlnLT5t aW5faGVpZ2h0ID4gci0+aGVpZ2h0KSB8fCAoci0+aGVpZ2h0ID4gY29uZmlnLT5tYXhfaGVpZ2h0 KSkgeworCWlmIChjb25maWctPm1pbl9oZWlnaHQgPiByLmhlaWdodCB8fCByLmhlaWdodCA+IGNv bmZpZy0+bWF4X2hlaWdodCkgewogCQlEUk1fREVCVUdfS01TKCJiYWQgZnJhbWVidWZmZXIgaGVp Z2h0ICVkLCBzaG91bGQgYmUgPj0gJWQgJiYgPD0gJWRcbiIsCi0JCQkgIHItPmhlaWdodCwgY29u ZmlnLT5taW5faGVpZ2h0LCBjb25maWctPm1heF9oZWlnaHQpOworCQkJICByLmhlaWdodCwgY29u ZmlnLT5taW5faGVpZ2h0LCBjb25maWctPm1heF9oZWlnaHQpOwogCQlyZXR1cm4gRVJSX1BUUigt RUlOVkFMKTsKIAl9CiAKLQlpZiAoci0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9NT0RJRklFUlMgJiYK LQkgICAgIWRldi0+bW9kZV9jb25maWcuYWxsb3dfZmJfbW9kaWZpZXJzKSB7Ci0JCURSTV9ERUJV R19LTVMoImRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IGZiIG1vZGlmaWVyc1xuIik7Ci0JCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOworCWlmIChyLmZsYWdzICYgRFJNX01PREVfRkJfTU9ESUZJRVJT KSB7CisJCWlmICghZGV2LT5tb2RlX2NvbmZpZy5hbGxvd19mYl9tb2RpZmllcnMpIHsKKwkJCURS TV9ERUJVR19LTVMoImRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IGZiIG1vZGlmaWVyc1xuIik7CisJ CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJfQorCisJCW1vZGlmaWVyID0gci5tb2RpZmll clswXTsKKwl9IGVsc2UgeworCQlpZiAoZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+ZmJfbW9kaWZp ZXIpIHsKKwkJCXJldCA9IGRldi0+bW9kZV9jb25maWcuZnVuY3MtPmZiX21vZGlmaWVyKGRldiwg ZmlsZV9wcml2LAorCQkJCQkJCQkgICZyLCAmbW9kaWZpZXIpOworCQkJaWYgKHJldCkgeworCQkJ CURSTV9ERUJVR19LTVMoImRyaXZlciBkaWQgbm90IGRlZHVjZSB0aGUgZmIgbW9kaWZpZXJcbiIp OworCQkJCXJldHVybiBFUlJfUFRSKHJldCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiBhc3N1 bWUgbGluZWFyIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBzYXkgb3RoZXJ3aXNlICovCisJCQltb2Rp ZmllciA9IERSTV9GT1JNQVRfTU9EX0xJTkVBUjsKKwkJfQogCX0KIAotCXJldCA9IGZyYW1lYnVm ZmVyX2NoZWNrKGRldiwgcik7CisJcmV0ID0gZnJhbWVidWZmZXJfY2hlY2soZGV2LCAmciwgbW9k aWZpZXIpOwogCWlmIChyZXQpCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKLQlmYiA9IGRldi0+ bW9kZV9jb25maWcuZnVuY3MtPmZiX2NyZWF0ZShkZXYsIGZpbGVfcHJpdiwgcik7CisJZmIgPSBk ZXYtPm1vZGVfY29uZmlnLmZ1bmNzLT5mYl9jcmVhdGUoZGV2LCBmaWxlX3ByaXYsICZyKTsKIAlp ZiAoSVNfRVJSKGZiKSkgewogCQlEUk1fREVCVUdfS01TKCJjb3VsZCBub3QgY3JlYXRlIGZyYW1l YnVmZmVyXG4iKTsKIAkJcmV0dXJuIGZiOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CmluZGV4IDI5MzNhZDM4MDk0Zi4uNTFkOGQwYzQwNjc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNo X2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogc3RhdGljIGludCBpbnRlbF9m cmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaWZiLAogCQkJCSAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyICptb2RlX2NtZCk7CisJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9k ZV9jbWQpOwogc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMpOwogc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0Yyk7CiBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9zcmNf c2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yyk7CkBAIC05ODA3LDcgKzk4MDcsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbG9hZF9kZXRlY3RfbW9kZSA9 IHsKIAogc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCiBpbnRlbF9mcmFtZWJ1ZmZlcl9jcmVhdGUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCSBzdHJ1Y3QgZHJtX21vZGVfZmJf Y21kMiAqbW9kZV9jbWQpCisJCQkgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVf Y21kKQogewogCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmI7CiAJaW50IHJldDsK QEAgLTEzOTg1LDcgKzEzOTg1LDcgQEAgdTMyIGludGVsX2ZiX3BpdGNoX2xpbWl0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZl cl9pbml0KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCiAJCQkJICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJCSAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIg Km1vZGVfY21kKQorCQkJCSAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21k KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5i YXNlLmRldik7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAmaW50ZWxfZmItPmJhc2U7 CkBAIC0xMzk5NSwyOSArMTM5OTUsMjMgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9p bml0KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCiAJaW50IHJldCA9IC1FSU5W QUw7CiAJaW50IGk7CiAKKwlpZiAoV0FSTl9PTigobW9kZV9jbWQtPmZsYWdzICYgRFJNX01PREVf RkJfTU9ESUZJRVJTKSA9PSAwKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlpOTE1X2dlbV9vYmpl Y3RfbG9jayhvYmopOwogCW9iai0+ZnJhbWVidWZmZXJfcmVmZXJlbmNlcysrOwogCXRpbGluZyA9 IGk5MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7CiAJc3RyaWRlID0gaTkxNV9nZW1fb2Jq ZWN0X2dldF9zdHJpZGUob2JqKTsKIAlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAKLQlp ZiAobW9kZV9jbWQtPmZsYWdzICYgRFJNX01PREVfRkJfTU9ESUZJRVJTKSB7Ci0JCS8qCi0JCSAq IElmIHRoZXJlJ3MgYSBmZW5jZSwgZW5mb3JjZSB0aGF0Ci0JCSAqIHRoZSBmYiBtb2RpZmllciBh bmQgdGlsaW5nIG1vZGUgbWF0Y2guCi0JCSAqLwotCQlpZiAodGlsaW5nICE9IEk5MTVfVElMSU5H X05PTkUgJiYKLQkJICAgIHRpbGluZyAhPSBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcobW9k ZV9jbWQtPm1vZGlmaWVyWzBdKSkgewotCQkJRFJNX0RFQlVHX0tNUygidGlsaW5nX21vZGUgZG9l c24ndCBtYXRjaCBmYiBtb2RpZmllclxuIik7Ci0JCQlnb3RvIGVycjsKLQkJfQotCX0gZWxzZSB7 Ci0JCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkgewotCQkJbW9kZV9jbWQtPm1vZGlmaWVy WzBdID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7Ci0JCX0gZWxzZSBpZiAodGlsaW5nID09IEk5 MTVfVElMSU5HX1kpIHsKLQkJCURSTV9ERUJVR19LTVMoIk5vIFkgdGlsaW5nIGZvciBsZWdhY3kg YWRkZmJcbiIpOwotCQkJZ290byBlcnI7Ci0JCX0KKwkvKgorCSAqIElmIHRoZXJlJ3MgYSBmZW5j ZSwgZW5mb3JjZSB0aGF0CisJICogdGhlIGZiIG1vZGlmaWVyIGFuZCB0aWxpbmcgbW9kZSBtYXRj aC4KKwkgKi8KKwlpZiAodGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkUgJiYKKwkgICAgdGlsaW5n ICE9IGludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGluZyhtb2RlX2NtZC0+bW9kaWZpZXJbMF0pKSB7 CisJCURSTV9ERUJVR19LTVMoInRpbGluZ19tb2RlIGRvZXNuJ3QgbWF0Y2ggZmIgbW9kaWZpZXJc biIpOworCQlnb3RvIGVycjsKIAl9CiAKIAkvKiBQYXNzZWQgaW4gbW9kaWZpZXIgc2FuaXR5IGNo ZWNraW5nLiAqLwpAQCAtMTQxOTMsMjAgKzE0MTg3LDUxIEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJh bWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAogCXJldHVy biByZXQ7CiB9CiAKK3N0YXRpYyBpbnQKK2ludGVsX3VzZXJfZnJhbWVidWZmZXJfbW9kaWZpZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsCisJCQkJ Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAorCQkJCXU2NCAqbW9kaWZp ZXIpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwl1bnNpZ25lZCBpbnQg dGlsaW5nOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxwLCBtb2RlX2NtZC0+ aGFuZGxlc1swXSk7CisJaWYgKCFvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJaTkxNV9nZW1f b2JqZWN0X2xvY2sob2JqKTsKKwl0aWxpbmcgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3RpbGluZyhv YmopOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKKworCWk5MTVfZ2VtX29iamVjdF9w dXQob2JqKTsKKworCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkgeworCQlEUk1fREVCVUdf S01TKCJObyBZIHRpbGluZyBmb3IgbGVnYWN5IGFkZGZiXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJaWYgKHRpbGluZyA9PSBJOTE1X1RJTElOR19YKQorCQkqbW9kaWZpZXIgPSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRDsKKwllbHNlCisJCSptb2RpZmllciA9IERSTV9GT1JNQVRfTU9E X0xJTkVBUjsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqCiBpbnRlbF91c2VyX2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxwLAotCQkJICAgICAgY29uc3Qgc3RydWN0 IGRybV9tb2RlX2ZiX2NtZDIgKnVzZXJfbW9kZV9jbWQpCisJCQkgICAgICBjb25zdCBzdHJ1Y3Qg ZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCiB7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21vZGVf ZmJfY21kMiBtb2RlX2NtZCA9ICp1c2VyX21vZGVfY21kOwogCi0Jb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2xvb2t1cChmaWxwLCBtb2RlX2NtZC5oYW5kbGVzWzBdKTsKKwlvYmogPSBpOTE1X2dlbV9v YmplY3RfbG9va3VwKGZpbHAsIG1vZGVfY21kLT5oYW5kbGVzWzBdKTsKIAlpZiAoIW9iaikKIAkJ cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAKLQlmYiA9IGludGVsX2ZyYW1lYnVmZmVyX2NyZWF0 ZShvYmosICZtb2RlX2NtZCk7CisJZmIgPSBpbnRlbF9mcmFtZWJ1ZmZlcl9jcmVhdGUob2JqLCBt b2RlX2NtZCk7CiAJaWYgKElTX0VSUihmYikpCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsK IApAQCAtMTQyNTEsNiArMTQyNzYsNyBAQCBpbnRlbF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz IGludGVsX21vZGVfZnVuY3MgPSB7CisJLmZiX21vZGlmaWVyID0gaW50ZWxfdXNlcl9mcmFtZWJ1 ZmZlcl9tb2RpZmllciwKIAkuZmJfY3JlYXRlID0gaW50ZWxfdXNlcl9mcmFtZWJ1ZmZlcl9jcmVh dGUsCiAJLmdldF9mb3JtYXRfaW5mbyA9IGludGVsX2dldF9mb3JtYXRfaW5mbywKIAkub3V0cHV0 X3BvbGxfY2hhbmdlZCA9IGludGVsX2ZiZGV2X291dHB1dF9wb2xsX2NoYW5nZWQsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IGZjZTVkMzA3MmQ5Ny4uNjc4NzU1Mjk3ODE0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTUxNyw3ICsxNTE3LDcgQEAgaW50ZWxfcGluX2FuZF9m ZW5jZV9mYl9vYmooc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiB2b2lkIGludGVsX3VucGlu X2ZiX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CiBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICoKIGludGVsX2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2Rl X2NtZCk7CisJCQkgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKTsKIGlu dCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJICAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKTsKIHZvaWQgaW50ZWxfY2xlYW51cF9w bGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jCmluZGV4IDZmMTJhZGMwNjM2NS4uNzc3ZjViZmJlOGVmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiZGV2LmMKQEAgLTEzMSw2ICsxMzEsOCBAQCBzdGF0aWMgaW50IGludGVsZmJfYWxsb2Mo c3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIAkJCQkgICAgRElWX1JPVU5EX1VQKHNpemVz LT5zdXJmYWNlX2JwcCwgOCksIDY0KTsKIAltb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9k ZV9sZWdhY3lfZmJfZm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwKIAkJCQkJCQkgIHNpemVzLT5z dXJmYWNlX2RlcHRoKTsKKwltb2RlX2NtZC5tb2RpZmllclswXSA9IERSTV9GT1JNQVRfTU9EX0xJ TkVBUjsKKwltb2RlX2NtZC5mbGFncyA9IERSTV9NT0RFX0ZCX01PRElGSUVSUzsKIAogCXNpemUg PSBtb2RlX2NtZC5waXRjaGVzWzBdICogbW9kZV9jbWQuaGVpZ2h0OwogCXNpemUgPSBQQUdFX0FM SUdOKHNpemUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYwppbmRleCBiYTYwMTUzZGRkYjUuLmE4YWVkMTJk YjU3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKQEAgLTE0OCw1MCArMTQ4LDM5IEBAIHN0YXRpYyBp bnQgdmM0X2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKnZjNF9mYl9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKLQkJCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwK LQkJCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCitzdGF0 aWMgaW50IHZjNF9mYl9tb2RpZmllcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsCisJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJf Y21kMiAqbW9kZV9jbWQsCisJCQkgICB1NjQgKm1vZGlmaWVyKQogewotCXN0cnVjdCBkcm1fbW9k ZV9mYl9jbWQyIG1vZGVfY21kX2xvY2FsOwotCi0JLyogSWYgdGhlIHVzZXIgZGlkbid0IHNwZWNp ZnkgYSBtb2RpZmllciwgdXNlIHRoZQotCSAqIHZjNF9zZXRfdGlsaW5nX2lvY3RsKCkgc3RhdGUg Zm9yIHRoZSBCTy4KLQkgKi8KLQlpZiAoIShtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1fTU9ERV9GQl9N T0RJRklFUlMpKSB7Ci0JCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKLQkJc3RydWN0 IHZjNF9ibyAqYm87Ci0KLQkJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlX3By aXYsCi0JCQkJCQltb2RlX2NtZC0+aGFuZGxlc1swXSk7Ci0JCWlmICghZ2VtX29iaikgewotCQkJ RFJNX0RFQlVHKCJGYWlsZWQgdG8gbG9vayB1cCBHRU0gQk8gJWRcbiIsCi0JCQkJICBtb2RlX2Nt ZC0+aGFuZGxlc1swXSk7Ci0JCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKLQkJfQotCQlibyA9 IHRvX3ZjNF9ibyhnZW1fb2JqKTsKLQotCQltb2RlX2NtZF9sb2NhbCA9ICptb2RlX2NtZDsKLQot CQlpZiAoYm8tPnRfZm9ybWF0KSB7Ci0JCQltb2RlX2NtZF9sb2NhbC5tb2RpZmllclswXSA9Ci0J CQkJRFJNX0ZPUk1BVF9NT0RfQlJPQURDT01fVkM0X1RfVElMRUQ7Ci0JCX0gZWxzZSB7Ci0JCQlt b2RlX2NtZF9sb2NhbC5tb2RpZmllclswXSA9IERSTV9GT1JNQVRfTU9EX05PTkU7Ci0JCX0KKwlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7CisJc3RydWN0IHZjNF9ibyAqYm87CisKKwln ZW1fb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwKKwkJCQkJbW9kZV9jbWQt PmhhbmRsZXNbMF0pOworCWlmICghZ2VtX29iaikgeworCQlEUk1fREVCVUcoIkZhaWxlZCB0byBs b29rIHVwIEdFTSBCTyAlZFxuIiwKKwkJCSAgbW9kZV9jbWQtPmhhbmRsZXNbMF0pOworCQlyZXR1 cm4gLUVOT0VOVDsKKwl9CisJYm8gPSB0b192YzRfYm8oZ2VtX29iaik7CiAKLQkJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKGdlbV9vYmopOworCWlmIChiby0+dF9mb3JtYXQpCisJCSptb2Rp ZmllciA9IERSTV9GT1JNQVRfTU9EX0JST0FEQ09NX1ZDNF9UX1RJTEVEOworCWVsc2UKKwkJKm1v ZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfTElORUFSOwogCi0JCW1vZGVfY21kID0gJm1vZGVfY21k X2xvY2FsOwotCX0KKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoZ2VtX29iaik7CiAKLQly ZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGUoZGV2LCBmaWxlX3ByaXYsIG1vZGVfY21kKTsKKwlyZXR1 cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgdmM0 X21vZGVfZnVuY3MgPSB7CiAJLm91dHB1dF9wb2xsX2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291 dHB1dF9wb2xsX2NoYW5nZWQsCiAJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2No ZWNrLAogCS5hdG9taWNfY29tbWl0ID0gdmM0X2F0b21pY19jb21taXQsCi0JLmZiX2NyZWF0ZSA9 IHZjNF9mYl9jcmVhdGUsCisJLmZiX21vZGlmaWVyID0gdmM0X2ZiX21vZGlmaWVyLAorCS5mYl9j cmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZSwKIH07CiAKIGludCB2YzRfa21zX2xvYWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZp Zy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKaW5kZXggNzU2OWYyMmZmZWY2Li5j NzRhZWQyOTJiNTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCisr KyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCkBAIC00NSw2ICs0NSwzMCBAQCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZTsKICAqIGludm9sdmUgZHJpdmVycy4KICAqLwogc3RydWN0IGRy bV9tb2RlX2NvbmZpZ19mdW5jcyB7CisJLyoqCisJICogQGZiX21vZGlmaWVyOgorCSAqCisJICog RGVkdWNlIHRoZSBmb3JtYXQgbW9kaWZpZXIgdXNpbmcgYSBkcml2ZXIgc3BlY2lmaWMgbWV0aG9k LiBUaGlzCisJICogZ2V0cyBjYWxsZWQgd2hlbiB0aGUgcmVxdWVzdCBkb2VzIG5vdCBleHBsaWNp dGx5IHN0YXRlIHRoZQorCSAqIG1vZGlmaWVyLCBpZS4gKEBtb2RlX2NtZC0+ZmxhZ3MgJiBEUk1f TU9ERV9GQl9NT0RJRklFUlMpID09IDAuCisJICogVGhlIGRlZHVjZWQgbW9kaWZpZXIgaXMgcmV0 dXJuZWQgdmlhIEBtb2RpZmllci4KKwkgKgorCSAqIE9uY2UgdGhlIG1vZGlmaWVyIGlzIGtub3du IHNldmVyYWwgc2FuaXR5IGNoZWNrcyB3aWxsIGJlIHBlcmZvcm1lZAorCSAqIGFuZCBpZiBhbGwg aXMgZGVlbWVkIHZhbGlkIEBmYl9jcmVhdGUoKSB3aWxsIGJlIGNhbGxlZCB0byBoYXZlCisJICog dGhlIGRyaXZlciB0byBhY3R1YWxseSBjcmVhdGUgdGhlIGZyYW1lYnVmZmVyLgorCSAqCisJICog VGhpcyBob29rIGlzIG9wdGlvbmFsLiBUaGUgY29yZSB3aWxsIGFzc3VtZSBEUk1fRk9STUFUX01P RF9MSU5FQVIKKwkgKiBpZiB0aGUgaG9vayBpcyBub3QgcHJvdmlkZWQgYnkgdGhlIGRyaXZlci4K KwkgKgorCSAqIFJFVFVSTlM6CisJICoKKwkgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KKwkgKi8KKwlpbnQgKCpmYl9tb2RpZmllcikoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKKwkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJICAg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAorCQkJICAgdTY0ICptb2Rp Zmllcik7CisKIAkvKioKIAkgKiBAZmJfY3JlYXRlOgogCSAqCkBAIC01Miw2ICs3NiwxMSBAQCBz dHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIHsKIAkgKiByZXF1ZXN0ZWQgbWV0YWRhdGEsIGJ1 dCBtb3N0IG9mIHRoYXQgaXMgbGVmdCB0byB0aGUgZHJpdmVyLiBTZWUKIAkgKiAmc3RydWN0IGRy bV9tb2RlX2ZiX2NtZDIgZm9yIGRldGFpbHMuCiAJICoKKwkgKiBOb3RlIHRoYXQgZm9yIGRyaXZl cnMgdGhhdCBzdXBwb3J0IG1vZGlmaWVycywgdGhlIGNvcmUgd2lsbCBjb252ZXJ0CisJICogYWxs IHJlcXVlc3RzIHRvIG9uZSB3aXRoIG1vZGlmaWVycy4gU28gdGhlIGRyaXZlciBkb2VzIG5vdCBu ZWVkIHRvCisJICogd29ycnkgYWJvdXQgcmVxdWVzdHMgd2l0aG91dCBtb2RpZmllcnMgKGFwYXJ0 IGZyb20gaGF2aW5nIHRvIHByb3ZpZGUKKwkgKiB0aGUgQGZiX21vZGlmaWVyKCkgaG9vayBpZiBu ZWNlc3NhcnkpLgorCSAqCiAJICogSWYgdGhlIHBhcmFtZXRlcnMgYXJlIGRlZW1lZCB2YWxpZCBh bmQgdGhlIGJhY2tpbmcgc3RvcmFnZSBvYmplY3RzIGluCiAJICogdGhlIHVuZGVybHlpbmcgbWVt b3J5IG1hbmFnZXIgYWxsIGV4aXN0LCB0aGVuIHRoZSBkcml2ZXIgYWxsb2NhdGVzCiAJICogYSBu ZXcgJmRybV9mcmFtZWJ1ZmZlciBzdHJ1Y3R1cmUsIHN1YmNsYXNzZWQgdG8gY29udGFpbgotLSAK Mi4xNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK