From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC v4 12/25] drm/i915: Add drm_driver->initial_client_display callback Date: Thu, 12 Apr 2018 18:12:24 +0200 Message-ID: <20180412161237.9314-1-noralf@tronnes.org> 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: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, mstaudt@suse.de List-Id: dri-devel@lists.freedesktop.org QXMgcGFydCBvZiBtb3ZpbmcgdGhlIG1vZGVzZXR0aW5nIGNvZGUgb3V0IG9mIGRybV9mYl9oZWxw ZXIgYW5kIGludG8KZHJtX2NsaWVudCwgdGhlIGRybV9mYl9oZWxwZXJfZnVuY3MtPmluaXRpYWxf Y29uZmlnIGNhbGxiYWNrIG5lZWRzIHRvIGdvLgpSZXBsYWNlIGl0IHdpdGggYSBkcm1fZHJpdmVy LT5pbml0aWFsX2NsaWVudF9kaXNwbGF5IGNhbGxiYWNrIHRoYXQgY2FuCndvcmsgZm9yIGFsbCBp bi1rZXJuZWwgY2xpZW50cy4KClRPRE86Ci0gQWRkIGEgcGF0Y2ggdGhhdCBtb3ZlcyB0aGUgZnVu Y3Rpb24gb3V0IG9mIGludGVsX2ZiZGV2LmMgc2luY2UgaXQncyBub3QKICBmYmRldiBzcGVjaWZp YyBhbnltb3JlLgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5l cy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyAgICB8ICAxOSArKysr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgIHwgICAxICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgfCAgMTEgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJkZXYuYyB8IDExMyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiBpbmNsdWRlL2RybS9kcm1fZHJ2LmggICAgICAgICAgICAgIHwgIDIxICsrKysrKysKIDUg ZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jCmluZGV4IGI5OTJmNTlkYWQzMC4uNTQwN2JmNmRjOGMwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKQEAgLTIxMDMsNiArMjEwMywyMCBAQCBzdGF0aWMgdm9pZCBkcm1f c2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkvKiBwcmV2ZW50 IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIG9mIGNvbm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICov CiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVscGVyLT5sb2NrKTsKIAorCW11dGV4X2xvY2so JmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5l Y3Rvcl9tb2RlcyhmYl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCisJCURSTV9ERUJVR19L TVMoIk5vIGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOworCisJ aWYgKGRldi0+ZHJpdmVyLT5pbml0aWFsX2NsaWVudF9kaXNwbGF5KSB7CisJCWRpc3BsYXkgPSBk ZXYtPmRyaXZlci0+aW5pdGlhbF9jbGllbnRfZGlzcGxheShkZXYsIHdpZHRoLCBoZWlnaHQpOwor CQlpZiAoZGlzcGxheSkgeworCQkJZHJtX2NsaWVudF9kaXNwbGF5X2ZyZWUoZmJfaGVscGVyLT5k aXNwbGF5KTsKKwkJCWZiX2hlbHBlci0+ZGlzcGxheSA9IGRpc3BsYXk7CisJCQltdXRleF91bmxv Y2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCQkJcmV0dXJuOworCQl9CisJfQorCiAJY3J0 Y3MgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LAogCQkJc2l6ZW9mKHN0cnVj dCBkcm1fZmJfaGVscGVyX2NydGMgKiksIEdGUF9LRVJORUwpOwogCW1vZGVzID0ga2NhbGxvYyhm Yl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwKQEAgLTIxMjAsOSArMjEzNCw2IEBAIHN0YXRpYyB2 b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWlm IChJU19FUlIoZGlzcGxheSkpCiAJCWdvdG8gb3V0OwogCi0JbXV0ZXhfbG9jaygmZmJfaGVscGVy LT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKLQlpZiAoZHJtX2ZiX2hlbHBlcl9wcm9iZV9jb25u ZWN0b3JfbW9kZXMoZmJfaGVscGVyLCB3aWR0aCwgaGVpZ2h0KSA9PSAwKQotCQlEUk1fREVCVUdf S01TKCJObyBjb25uZWN0b3JzIHJlcG9ydGVkIGNvbm5lY3RlZCB3aXRoIG1vZGVzXG4iKTsKIAlk cm1fZW5hYmxlX2Nvbm5lY3RvcnMoZmJfaGVscGVyLCBlbmFibGVkKTsKIAogCWlmICghKGZiX2hl bHBlci0+ZnVuY3MtPmluaXRpYWxfY29uZmlnICYmCkBAIC0yMTQ0LDcgKzIxNTUsNiBAQCBzdGF0 aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwK IAogCQlkcm1fcGlja19jcnRjcyhmYl9oZWxwZXIsIGNydGNzLCBtb2RlcywgMCwgd2lkdGgsIGhl aWdodCk7CiAJfQotCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11 dGV4KTsKIAogCS8qIG5lZWQgdG8gc2V0IHRoZSBtb2Rlc2V0cyB1cCBoZXJlIGZvciB1c2UgbGF0 ZXIgKi8KIAkvKiBmaWxsIG91dCB0aGUgY29ubmVjdG9yPC0+Y3J0YyBtYXBwaW5ncyBpbnRvIHRo ZSBtb2Rlc2V0cyAqLwpAQCAtMjE4Miw2ICsyMTkyLDcgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVw X2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJZHJtX2NsaWVudF9kaXNw bGF5X2ZyZWUoZmJfaGVscGVyLT5kaXNwbGF5KTsKIAlmYl9oZWxwZXItPmRpc3BsYXkgPSBkaXNw bGF5Owogb3V0OgorCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAJa2Zy ZWUoY3J0Y3MpOwogCWtmcmVlKG1vZGVzKTsKIAlrZnJlZShvZmZzZXRzKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCmluZGV4IDA3YzA3ZDU1Mzk4Yi4uYjc0NmMwY2JhYTRiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKQEAgLTI4NTcsNiArMjg1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZl ciBkcml2ZXIgPSB7CiAKIAkuZHVtYl9jcmVhdGUgPSBpOTE1X2dlbV9kdW1iX2NyZWF0ZSwKIAku ZHVtYl9tYXBfb2Zmc2V0ID0gaTkxNV9nZW1fbW1hcF9ndHQsCisJLmluaXRpYWxfY2xpZW50X2Rp c3BsYXkgPSBpOTE1X2luaXRpYWxfY2xpZW50X2Rpc3BsYXksCiAJLmlvY3RscyA9IGk5MTVfaW9j dGxzLAogCS5udW1faW9jdGxzID0gQVJSQVlfU0laRShpOTE1X2lvY3RscyksCiAJLmZvcHMgPSAm aTkxNV9kcml2ZXJfZm9wcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggZDQzNjg1ODli MzU1Li5mNzdmNTEwNjE3YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzIwLDYg KzE3MjAsOSBAQCBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9maW5pKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpbnRlbF9mYmRldl9zZXRfc3VzcGVuZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc3RhdGUsIGJvb2wgc3luY2hyb25vdXMpOwogZXh0 ZXJuIHZvaWQgaW50ZWxfZmJkZXZfb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX2ZiZGV2X3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKK3N0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKgoraTkxNV9pbml0aWFs X2NsaWVudF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB3aWR0 aCwKKwkJCSAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0KTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGlu dCBpbnRlbF9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CkBAIC0xNzQ5LDYg KzE3NTIsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2ZiZGV2X291dHB1dF9wb2xsX2No YW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9m YmRldl9yZXN0b3JlX21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIH0KKworc3RhdGlj IGlubGluZSBzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5ICoKK2k5MTVfaW5pdGlhbF9jbGllbnRf ZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgd2lkdGgsCisJCQkg ICAgdW5zaWduZWQgaW50IGhlaWdodCkKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwogI2VuZGlmCiAK IC8qIGludGVsX2ZiYy5jICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCBhNGFi ODU3NWE3MmUuLmI3ZjQ0Yzk0NzVhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJkZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCkBA IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8bGludXgvdmdhX3N3aXRjaGVyb28uaD4KIAogI2lu Y2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KICNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgogI2luY2x1 ZGUgImludGVsX2Rydi5oIgpAQCAtMjg3LDE4ICsyODgsNiBAQCBzdGF0aWMgaW50IGludGVsZmJf Y3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAJcmV0dXJuIHJldDsKIH0KIAot c3RhdGljIHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKgotaW50ZWxfZmJfaGVscGVyX2NydGMo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgc3RydWN0IGRybV9jcnRjICpjcnRjKQot ewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsr KQotCQlpZiAoZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQuY3J0YyA9PSBjcnRjKQot CQkJcmV0dXJuICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXTsKLQotCXJldHVybiBOVUxMOwotfQot CiAvKgogICogVHJ5IHRvIHJlYWQgdGhlIEJJT1MgZGlzcGxheSBjb25maWd1cmF0aW9uIGFuZCB1 c2UgaXQgZm9yIHRoZSBpbml0aWFsCiAgKiBmYiBjb25maWd1cmF0aW9uLgpAQCAtMzI2LDQ0ICsz MTUsNDggQEAgaW50ZWxfZmJfaGVscGVyX2NydGMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwgc3RydWN0IGRybV9jcnRjICpjcnRjKQogICogaXMgaW4gVkdBIG1vZGUgd2UgbmVlZCB0 byByZWNhbGN1bGF0ZSB3YXRlcm1hcmtzIGFuZCBzZXQgYSBuZXcgaGlnaC1yZXMKICAqIGZyYW1l YnVmZmVyIGFueXdheS4KICAqLwotc3RhdGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWco c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKLQkJCQkgICAgc3RydWN0IGRybV9mYl9o ZWxwZXJfY3J0YyAqKmNydGNzLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1v ZGVzLAotCQkJCSAgICBzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0cywKLQkJCQkgICAgYm9v bCAqZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorc3RydWN0IGRybV9jbGllbnRfZGlz cGxheSAqCitpOTE1X2luaXRpYWxfY2xpZW50X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHdpZHRoLAorCQkJICAgIHVuc2lnbmVkIGludCBoZWlnaHQpCiB7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShmYl9oZWxwZXItPmRl dik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwog CXVuc2lnbmVkIGxvbmcgY29ubl9jb25maWd1cmVkLCBjb25uX3NlcSwgbWFzazsKLQl1bnNpZ25l ZCBpbnQgY291bnQgPSBtaW4oZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsIEJJVFNfUEVSX0xP TkcpOwotCWludCBpLCBqOwotCWJvb2wgKnNhdmVfZW5hYmxlZDsKLQlib29sIGZhbGxiYWNrID0g dHJ1ZSwgcmV0ID0gdHJ1ZTsKKwlib29sIGZhbGxiYWNrID0gdHJ1ZSwgKmVuYWJsZWQgPSBOVUxM OworCXN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXk7CisJc3RydWN0IGRybV9jb25u ZWN0b3IgKipjb25uZWN0b3JzOworCWludCBpLCBjb25uZWN0b3JfY291bnQ7CisJdW5zaWduZWQg aW50IGNvdW50OwogCWludCBudW1fY29ubmVjdG9yc19lbmFibGVkID0gMDsKIAlpbnQgbnVtX2Nv bm5lY3RvcnNfZGV0ZWN0ZWQgPSAwOwogCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBj dHg7CiAKLQlzYXZlX2VuYWJsZWQgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoYm9vbCksIEdGUF9L RVJORUwpOwotCWlmICghc2F2ZV9lbmFibGVkKQotCQlyZXR1cm4gZmFsc2U7CisJZGlzcGxheSA9 IGRybV9jbGllbnRfZGlzcGxheV9jcmVhdGUoZGV2KTsKKwlpZiAoSVNfRVJSKGRpc3BsYXkpKQor CQlyZXR1cm4gTlVMTDsKIAogCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKIAot CXdoaWxlIChkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZmJfaGVscGVyLT5kZXYsICZjdHgpICE9 IDApCisJd2hpbGUgKGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpICE9IDApCiAJ CWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7CiAKLQltZW1jcHkoc2F2ZV9lbmFibGVkLCBlbmFi bGVkLCBjb3VudCk7CisJY29ubmVjdG9yX2NvdW50ID0gZHJtX2Nvbm5lY3Rvcl9nZXRfYWxsKGRl diwgJmNvbm5lY3RvcnMpOworCWlmIChjb25uZWN0b3JfY291bnQgPCAxKQorCQlnb3RvIGJhaWw7 CisKKwllbmFibGVkID0gZHJtX2Nvbm5lY3Rvcl9nZXRfZW5hYmxlZF9zdGF0dXMoY29ubmVjdG9y cywgY29ubmVjdG9yX2NvdW50KTsKKwlpZiAoIWVuYWJsZWQpCisJCWdvdG8gYmFpbDsKKworCWNv dW50ID0gbWluKGNvbm5lY3Rvcl9jb3VudCwgQklUU19QRVJfTE9ORyk7CiAJbWFzayA9IEdFTk1B U0soY291bnQgLSAxLCAwKTsKIAljb25uX2NvbmZpZ3VyZWQgPSAwOwogcmV0cnk6CiAJY29ubl9z ZXEgPSBjb25uX2NvbmZpZ3VyZWQ7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQkJ c3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9jb25uOwotCQlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yOworCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g Y29ubmVjdG9yc1tpXTsKKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CisJCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsK LQkJc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqbmV3X2NydGM7Ci0KLQkJZmJfY29ubiA9IGZi X2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07Ci0JCWNvbm5lY3RvciA9IGZiX2Nvbm4tPmNvbm5l Y3RvcjsKIAogCQlpZiAoY29ubl9jb25maWd1cmVkICYgQklUKGkpKQogCQkJY29udGludWU7CkBA IC00MDIsMTYgKzM5NSwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyhz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCiAJCW51bV9jb25uZWN0b3JzX2VuYWJs ZWQrKzsKIAotCQluZXdfY3J0YyA9IGludGVsX2ZiX2hlbHBlcl9jcnRjKGZiX2hlbHBlciwKLQkJ CQkJCWNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwotCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB3ZSdy ZSBub3QgdHJ5aW5nIHRvIGRyaXZlIG11bHRpcGxlIGNvbm5lY3RvcnMKIAkJICogd2l0aCBhIHNp bmdsZSBDUlRDLCBzaW5jZSBvdXIgY2xvbmluZyBzdXBwb3J0IG1heSBub3QKIAkJICogbWF0Y2gg dGhlIEJJT1MuCiAJCSAqLwotCQlmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykgewotCQkJaWYg KGNydGNzW2pdID09IG5ld19jcnRjKSB7CisJCWRybV9jbGllbnRfZGlzcGxheV9mb3JfZWFjaF9t b2Rlc2V0KG1vZGVzZXQsIGRpc3BsYXkpIHsKKwkJCWlmIChtb2Rlc2V0LT5jb25uZWN0b3JzWzBd ID09IGNvbm5lY3RvcikgewogCQkJCURSTV9ERUJVR19LTVMoImZhbGxiYWNrOiBjbG9uZWQgY29u ZmlndXJhdGlvblxuIik7CiAJCQkJZ290byBiYWlsOwogCQkJfQpAQCAtNDIxLDI4ICs0MTEsMjYg QEAgc3RhdGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlciwKIAkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7CiAKIAkJLyogZ28gZm9y IGNvbW1hbmQgbGluZSBtb2RlIGZpcnN0ICovCi0JCW1vZGVzW2ldID0gZHJtX2Nvbm5lY3Rvcl9w aWNrX2NtZGxpbmVfbW9kZShjb25uZWN0b3IpOworCQltb2RlID0gZHJtX2Nvbm5lY3Rvcl9waWNr X2NtZGxpbmVfbW9kZShjb25uZWN0b3IpOwogCiAJCS8qIHRyeSBmb3IgcHJlZmVycmVkIG5leHQg Ki8KLQkJaWYgKCFtb2Rlc1tpXSkgeworCQlpZiAoIW1vZGUpIHsKIAkJCURSTV9ERUJVR19LTVMo Imxvb2tpbmcgZm9yIHByZWZlcnJlZCBtb2RlIG9uIGNvbm5lY3RvciAlcyAlZFxuIiwKIAkJCQkg ICAgICBjb25uZWN0b3ItPm5hbWUsIGNvbm5lY3Rvci0+aGFzX3RpbGUpOwotCQkJbW9kZXNbaV0g PSBkcm1fY29ubmVjdG9yX2hhc19wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsCi0JCQkJCQkJCSAg ICB3aWR0aCwKLQkJCQkJCQkJICAgIGhlaWdodCk7CisJCQltb2RlID0gZHJtX2Nvbm5lY3Rvcl9o YXNfcHJlZmVycmVkX21vZGUoY29ubmVjdG9yLAorCQkJCQkJCQl3aWR0aCwgaGVpZ2h0KTsKIAkJ fQogCiAJCS8qIE5vIHByZWZlcnJlZCBtb2RlIG1hcmtlZCBieSB0aGUgRURJRD8gQXJlIHRoZXJl IGFueSBtb2Rlcz8gKi8KLQkJaWYgKCFtb2Rlc1tpXSAmJiAhbGlzdF9lbXB0eSgmY29ubmVjdG9y LT5tb2RlcykpIHsKKwkJaWYgKCFtb2RlICYmICFsaXN0X2VtcHR5KCZjb25uZWN0b3ItPm1vZGVz KSkgewogCQkJRFJNX0RFQlVHX0tNUygidXNpbmcgZmlyc3QgbW9kZSBsaXN0ZWQgb24gY29ubmVj dG9yICVzXG4iLAogCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Ci0JCQltb2Rlc1tpXSA9IGxp c3RfZmlyc3RfZW50cnkoJmNvbm5lY3Rvci0+bW9kZXMsCi0JCQkJCQkgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUsCi0JCQkJCQkgICAgaGVhZCk7CisJCQltb2RlID0gbGlzdF9maXJzdF9lbnRy eSgmY29ubmVjdG9yLT5tb2RlcywKKwkJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlLCBoZWFk KTsKIAkJfQogCiAJCS8qIGxhc3QgcmVzb3J0OiB1c2UgY3VycmVudCBtb2RlICovCi0JCWlmICgh bW9kZXNbaV0pIHsKKwkJaWYgKCFtb2RlKSB7CiAJCQkvKgogCQkJICogSU1QT1JUQU5UOiBXZSB3 YW50IHRvIHVzZSB0aGUgYWRqdXN0ZWQgbW9kZSAoaS5lLgogCQkJICogYWZ0ZXIgdGhlIHBhbmVs IGZpdHRlciB1cHNjYWxpbmcpIGFzIHRoZSBpbml0aWFsCkBAIC00NTgsMTYgKzQ0NiwyNiBAQCBz dGF0aWMgYm9vbCBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyLAogCQkJICovCiAJCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50 IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAogCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Ci0J CQltb2Rlc1tpXSA9ICZjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5tb2RlOworCQkJbW9kZSA9ICZj b25uZWN0b3ItPnN0YXRlLT5jcnRjLT5tb2RlOwogCQl9Ci0JCWNydGNzW2ldID0gbmV3X2NydGM7 CisKKwkJbW9kZXNldCA9IGRybV9jbGllbnRfZGlzcGxheV9maW5kX21vZGVzZXQoZGlzcGxheSwg Y29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yyk7CisJCWlmIChXQVJOX09OKCFtb2Rlc2V0KSkKKwkJCWdv dG8gYmFpbDsKKworCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgbW9k ZSk7CisJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7CisJCW1vZGVzZXQtPmNvbm5lY3Rv cnNbMF0gPSBjb25uZWN0b3I7CisJCW1vZGVzZXQtPm51bV9jb25uZWN0b3JzID0gMTsKKwkJbW9k ZXNldC0+eCA9IDA7CisJCW1vZGVzZXQtPnkgPSAwOwogCiAJCURSTV9ERUJVR19LTVMoImNvbm5l Y3RvciAlcyBvbiBbQ1JUQzolZDolc106ICVkeCVkJXNcbiIsCiAJCQkgICAgICBjb25uZWN0b3It Pm5hbWUsCiAJCQkgICAgICBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5iYXNlLmlkLAogCQkJICAg ICAgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+bmFtZSwKLQkJCSAgICAgIG1vZGVzW2ldLT5oZGlz cGxheSwgbW9kZXNbaV0tPnZkaXNwbGF5LAotCQkJICAgICAgbW9kZXNbaV0tPmZsYWdzICYgRFJN X01PREVfRkxBR19JTlRFUkxBQ0UgPyAiaSIgOiIiKTsKKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5 LCBtb2RlLT52ZGlzcGxheSwKKwkJCSAgICAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19J TlRFUkxBQ0UgPyAiaSIgOiAiIik7CiAKIAkJZmFsbGJhY2sgPSBmYWxzZTsKIAkJY29ubl9jb25m aWd1cmVkIHw9IEJJVChpKTsKQEAgLTQ5MiwxOSArNDkwLDIwIEBAIHN0YXRpYyBib29sIGludGVs X2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJaWYg KGZhbGxiYWNrKSB7CiBiYWlsOgogCQlEUk1fREVCVUdfS01TKCJOb3QgdXNpbmcgZmlybXdhcmUg Y29uZmlndXJhdGlvblxuIik7Ci0JCW1lbWNweShlbmFibGVkLCBzYXZlX2VuYWJsZWQsIGNvdW50 KTsKLQkJcmV0ID0gZmFsc2U7CisJCWRybV9jbGllbnRfZGlzcGxheV9mcmVlKGRpc3BsYXkpOwor CQlkaXNwbGF5ID0gTlVMTDsKIAl9CiAKIAlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwog CWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKIAotCWtmcmVlKHNhdmVfZW5hYmxlZCk7 Ci0JcmV0dXJuIHJldDsKKwlkcm1fY29ubmVjdG9yX3B1dF9hbGwoY29ubmVjdG9ycywgY29ubmVj dG9yX2NvdW50KTsKKwlrZnJlZShlbmFibGVkKTsKKworCXJldHVybiBkaXNwbGF5OwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3MgaW50ZWxfZmJfaGVscGVyX2Z1 bmNzID0gewotCS5pbml0aWFsX2NvbmZpZyA9IGludGVsX2ZiX2luaXRpYWxfY29uZmlnLAogCS5m Yl9wcm9iZSA9IGludGVsZmJfY3JlYXRlLAogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2Rydi5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCmluZGV4IDdlNTQ1ZjVmOTRkMy4uMTMz NTZlNmZkNDBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2Rydi5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlIDxkcm0vZHJtX2Rl dmljZS5oPgogCitzdHJ1Y3QgZHJtX2NsaWVudF9kaXNwbGF5Owogc3RydWN0IGRybV9maWxlOwog c3RydWN0IGRybV9nZW1fb2JqZWN0Owogc3RydWN0IGRybV9tYXN0ZXI7CkBAIC01NTMsNiArNTU0 LDI2IEBAIHN0cnVjdCBkcm1fZHJpdmVyIHsKIAkJCSAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJICAgIHVpbnQzMl90IGhhbmRsZSk7CiAKKwkvKioKKwkgKiBAaW5pdGlhbF9jbGllbnRf Y29uZmlnOgorCSAqCisJICogRHJpdmVyIGNhbGxiYWNrIHRvIHNldHVwIGFuIGluaXRpYWwgZmJk ZXYgZGlzcGxheSBjb25maWd1cmF0aW9uLgorCSAqIERyaXZlcnMgY2FuIHVzZSB0aGlzIGNhbGxi YWNrIHRvIHRlbGwgdGhlIGZiZGV2IGVtdWxhdGlvbiB3aGF0IHRoZQorCSAqIHByZWZlcnJlZCBp bml0aWFsIGNvbmZpZ3VyYXRpb24gaXMuIFRoaXMgaXMgdXNlZnVsIHRvIGltcGxlbWVudAorCSAq IHNtb290aCBib290aW5nIHdoZXJlIHRoZSBmYmRldiAoYW5kIHN1YnNlcXVlbnRseSBhbGwgdXNl cnNwYWNlKSBuZXZlcgorCSAqIGNoYW5nZXMgdGhlIG1vZGUsIGJ1dCBhbHdheXMgaW5oZXJpdHMg dGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uCisJICoKKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9w dGlvbmFsLgorCSAqCisJICogUkVUVVJOUzoKKwkgKgorCSAqIFRoZSBkcml2ZXIgc2hvdWxkIHJl dHVybiB0cnVlIGlmIGEgc3VpdGFibGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIGhhcworCSAqIGJl ZW4gZmlsbGVkIG91dCBhbmQgZmFsc2Ugd2hlbiB0aGUgZmJkZXYgaGVscGVyIHNob3VsZCBmYWxs IGJhY2sgdG8KKwkgKiB0aGUgZGVmYXVsdCBwcm9iaW5nIGxvZ2ljLgorCSAqLworCXN0cnVjdCBk cm1fY2xpZW50X2Rpc3BsYXkgKigqaW5pdGlhbF9jbGllbnRfZGlzcGxheSkoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJCQkJdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0 KTsKKwogCS8qKgogCSAqIEBnZW1fdm1fb3BzOiBEcml2ZXIgcHJpdmF0ZSBvcHMgZm9yIHRoaXMg b2JqZWN0CiAJICovCi0tIAoyLjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=