From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tina Zhang Subject: [RFC PATCH 2/7] drm/i915/gvt: Use meta fbs to stand for vGPU's planes Date: Mon, 3 Dec 2018 15:35:17 +0800 Message-ID: <1543822522-3413-3-git-send-email-tina.zhang@intel.com> References: <1543822522-3413-1-git-send-email-tina.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1543822522-3413-1-git-send-email-tina.zhang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Cc: intel-gfx@lists.freedesktop.org, kalyan.kondapally@intel.com, intel-gvt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q3JlYXRlIGFuZCBpbml0aWFsaXplIHZHUFUgbWV0YSBmcmFtZWJ1ZmZlcnMgZHVyaW5nIHZHUFUn cyBjcmVhdGlvbi4KRWFjaCBtZXRhIGZyYW1lYnVmZmVyIGlzIGFuIGludGVsX2ZyYW1lYnVmZmVy LiBVc2Vyc3BhY2UgY2FuIGdldCB0aGUKdXNlcnNwYWNlIHZpc2libGUgaWRlbnRpZmllciBvZiB0 aGF0IG1ldGEgZnJhbWVidWZmZXIgYnkgYWNjZXNzaW5nCnBsYW5lX2lkX2luZGV4IGF0dHJpYnV0 ZS4KCkZvciBleGFtcGxlOgpJbiAiL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MDBcOjAyLjAv JHZHUFVfaWQvaW50ZWxfdmdwdS8iIGRpcmVjdG9yeSwKCiAgIC8qIHBsYW5lX2lkX2luZGV4OiBw aXBlIyhiaXQxNjo4KSBhbmQgcGxhbmUjKGJpdDc6MCkqLwogICBlY2hvICIweDEwIiA+IHBsYW5l X2luZGV4X2lkIC8vU2V0IHRoZSBpbmRleCB0byB0aGUgcGxhbmUgMCBvZiBwaXBlIDEKCiAgIC8q CiAgICAqIER1bXAgdXNlcnNwYWNlIHZpc2libGUgaWRlbnRpZmllciBvZiB0aGUgbWV0YSBmcmFt ZWJ1ZmZlcgogICAgKiBzdGFuZGluZyBmb3IgdGhlIHByaW1hcnkgcGxhbmUgb2YgdGhlIHZHUFUn cyBwaXBlIG9uZQogICAgKi8KICAgY2F0IHBsYW5lX2luZGV4X2lkIC8vZHVtcCB0aGUgaWQgZm9y IHBsYW5lIDAgb2YgcGlwZSAxCgpUaGVuIHVzZXJzcGFjZSBjYW4gdXNlIHRoaXMgaWQgd2l0aCB0 aGUgZXhzdGluZyBLTVMgSU9DVEwsIGUuZy4KZHJtTW9kZVNldFBsYW5lLCB0byBhc3NpZ24gYSBw aHlzaWNhbCBwbGFuZSB0byB0aGlzIHZpcnR1YWwgcGxhbmUuCgpTaWduZWQtb2ZmLWJ5OiBUaW5h IFpoYW5nIDx0aW5hLnpoYW5nQGludGVsLmNvbT4KQ2M6IFpoZW55dSBXYW5nIDx6aGVueXV3QGxp bnV4LmludGVsLmNvbT4KQ2M6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jIHwgMTUwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICAg fCAgMTYgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMgICB8ICA0NiArKysr KysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2Rpc3BsYXkuYwppbmRleCBkZjFlMTQxLi5hOTE3NmExIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9kaXNwbGF5LmMKQEAgLTQ0Miw2ICs0NDIsMTUyIEBAIHZvaWQgaW50ZWxfZ3Z0X2VtdWxh dGVfdmJsYW5rKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCkKIAltdXRleF91bmxvY2soJmd2dC0+bG9j ayk7CiB9CiAKK3N0cnVjdCBpbnRlbF92Z3B1X2ZiX21ldGFfZGF0YSB7CisJdTMyIHZncHVfcGxh bmVfaWQ7IC8qIHZncHVfaWQoMjM6MTYpOnZncHVfcGlwZSgxNTo4KTp2Z3B1X3BsYW5lKDc6MCkq LworCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1OyAvLyB0aGUgdkdQVSB0aGlzIG1ldGFfZmIgYmVs b25ncyB0bworfTsKKworc3RhdGljIHZvaWQgbWV0YV9mYl9kZXN0cm95KHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiKQoreworCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPSB0 b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7CisKKwlpZiAoaW50ZWxfZmItPm1ldGFfZmIudHlwZV9p ZCAhPSBJTlRFTF9NRVRBX0ZCX1ZHUFUpCisJCXJldHVybjsKKworCWtmcmVlKGludGVsX2ZiLT5t ZXRhX2ZiLnByaXZhdGUpOworCWludGVsX2ZiLT5tZXRhX2ZiLnByaXZhdGUgPSBOVUxMOworCisJ ZHJtX2ZyYW1lYnVmZmVyX2NsZWFudXAoZmIpOworCWtmcmVlKGludGVsX2ZiKTsKK30KKworc3Rh dGljIHZvaWQgY2xlYW5fbWV0YV9mYihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKK3sKKwllbnVt IHBpcGUgcGlwZTsKKwllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOworCXN0cnVjdCBpbnRlbF9mcmFt ZWJ1ZmZlciAqaW50ZWxfZmI7CisKKwlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgSTkxNV9NQVhfUElQ RVM7IHBpcGUrKykgeworCQlmb3IgKHBsYW5lX2lkID0gMDsgcGxhbmVfaWQgPCBJOTE1X01BWF9Q TEFORVM7IHBsYW5lX2lkKyspIHsKKwkJCWludGVsX2ZiID0gdmdwdS0+ZGlzcGxheS5tZXRhX2Zi cy5tZXRhX2ZiW3BpcGVdW3BsYW5lX2lkXTsKKwkJCWlmICghaW50ZWxfZmIpCisJCQkJZHJtX2Zy YW1lYnVmZmVyX3B1dCgmaW50ZWxfZmItPmJhc2UpOworCisJCQlpbnRlbF9mYiA9IE5VTEw7CisJ CX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgbWV0YV9mYl9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLAorCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCQkJIHVuc2ln bmVkIGludCAqaGFuZGxlKQoreworCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgaW50IG1l dGFfZmJfZGlydHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgc3RydWN0IGRybV9m aWxlICpmaWxlLAorCQkJIHVuc2lnbmVkIGludCBmbGFncywKKwkJCSB1bnNpZ25lZCBpbnQgY29s b3IsCisJCQkgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAorCQkJIHVuc2lnbmVkIGludCBu dW1fY2xpcHMpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyX2Z1bmNzIG1ldGFfZmJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBtZXRhX2ZiX2Rl c3Ryb3ksCisJLmNyZWF0ZV9oYW5kbGUgPSBtZXRhX2ZiX2NyZWF0ZV9oYW5kbGUsCisJLmRpcnR5 ID0gbWV0YV9mYl9kaXJ0eSwKK307CisKK3N0YXRpYyB2b2lkIG1ldGFfZmJfdXBkYXRlKHN0cnVj dCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCisJCQkgICBlbnVtIHBpcGUgcGlwZSwgZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfdmdwdV9mYl9tZXRhX2RhdGEg Km1ldGFfZGF0YTsKKwlzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQ7CisKKwlpZiAoIWludGVsX2ZiIHx8 IGludGVsX2ZiLT5tZXRhX2ZiLnR5cGVfaWQgIT0gSU5URUxfTUVUQV9GQl9WR1BVKQorCQlyZXR1 cm47CisKKwltZXRhX2RhdGEgPSBpbnRlbF9mYi0+bWV0YV9mYi5wcml2YXRlOworCWd2dCA9IG1l dGFfZGF0YS0+dmdwdS0+Z3Z0OworCisJaWYgKGd2dC0+YXNzaWduZWRfcGxhbmVbcGlwZV1bcGxh bmVfaWRdLnZncHVfcGxhbmVfaWQgIT0KKwkJCQkJCW1ldGFfZGF0YS0+dmdwdV9wbGFuZV9pZCkg eworCQlndnQtPmFzc2lnbmVkX3BsYW5lW3BpcGVdW3BsYW5lX2lkXS52Z3B1X3BsYW5lX2lkID0K KwkJCQkJCW1ldGFfZGF0YS0+dmdwdV9wbGFuZV9pZDsKKwkJZ3Z0LT5hc3NpZ25lZF9wbGFuZVtw aXBlXVtwbGFuZV9pZF0uZnJhbWVidWZmZXJfaWQgPQorCQkJCQkJaW50ZWxfZmItPmJhc2UuYmFz ZS5pZDsKKwkJaW50ZWxfZmItPm1ldGFfZmIuZ2d0dF9vZmZzZXQgPSAwOworCQlpbnRlbF9mYi0+ bWV0YV9mYi5zaG91bGRfYmVfb2Zmc2NyZWVuID0gdHJ1ZTsKKwl9IGVsc2UgaWYgKCFpbnRlbF9m Yi0+bWV0YV9mYi5nZ3R0X29mZnNldCkgeworCQlpbnRlbF9mYi0+bWV0YV9mYi5zaG91bGRfYmVf b2Zmc2NyZWVuID0gdHJ1ZTsKKwl9IGVsc2UgeworCQlpbnRlbF9mYi0+bWV0YV9mYi5zaG91bGRf YmVfb2Zmc2NyZWVuID0gZmFsc2U7CisJfQorfQorCitzdGF0aWMgaW50IGluaXRfbWV0YV9mYihz dHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB2Z3B1LT5ndnQtPmRldl9wcml2OworCXN0cnVjdCBpbnRlbF92Z3B1X2ZiX21ldGFf ZGF0YSAqbWV0YV9kYXRhOworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIG1vZGVfY21kOworCXN0 cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmI7CisJZW51bSBwaXBlIHBpcGU7CisJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZDsKKwlpbnQgcmV0ID0gMDsKKworCWZvciAocGlwZSA9IDA7IHBp cGUgPCBJOTE1X01BWF9QSVBFUzsgcGlwZSsrKSB7CisJCWZvciAocGxhbmVfaWQgPSAwOyBwbGFu ZV9pZCA8IEk5MTVfTUFYX1BMQU5FUzsgcGxhbmVfaWQrKykgeworCQkJaW50ZWxfZmIgPSBremFs bG9jKHNpemVvZigqaW50ZWxfZmIpLCBHRlBfS0VSTkVMKTsKKwkJCWlmICghaW50ZWxfZmIpCisJ CQkJcmV0dXJuIC1FTk9NRU07CisKKwkJCS8qCisJCQkgKiBDcmVhdGUgYSBkcm1fZnJhbWVidWZm ZXIgd2l0aCBkZWZhdWx0cy4KKwkJCSAqLworCQkJbW9kZV9jbWQucGl4ZWxfZm9ybWF0ID0gRFJN X0ZPUk1BVF9YUkdCODg4ODsKKwkJCW1vZGVfY21kLndpZHRoID0gZGV2X3ByaXYtPmRybS5tb2Rl X2NvbmZpZy5tYXhfd2lkdGg7CisJCQltb2RlX2NtZC5oZWlnaHQgPSBkZXZfcHJpdi0+ZHJtLm1v ZGVfY29uZmlnLm1heF9oZWlnaHQ7CisJCQltb2RlX2NtZC5mbGFncyA9IERSTV9NT0RFX0ZCX01P RElGSUVSUzsKKwkJCW1vZGVfY21kLmhhbmRsZXNbMF0gPSAwOworCQkJbW9kZV9jbWQucGl0Y2hl c1swXSA9IG1vZGVfY21kLndpZHRoICogNDsKKwkJCW1vZGVfY21kLm9mZnNldHNbMF0gPSAwOwor CQkJbW9kZV9jbWQubW9kaWZpZXJbMF0gPSBEUk1fRk9STUFUX01PRF9MSU5FQVI7CisKKwkJCWRy bV9oZWxwZXJfbW9kZV9maWxsX2ZiX3N0cnVjdCgmZGV2X3ByaXYtPmRybSwKKwkJCQkJCSAgICAg ICAmaW50ZWxfZmItPmJhc2UsICZtb2RlX2NtZCk7CisKKwkJCXJldCA9IGRybV9mcmFtZWJ1ZmZl cl9pbml0KCZkZXZfcHJpdi0+ZHJtLAorCQkJCQkJICAgJmludGVsX2ZiLT5iYXNlLCAmbWV0YV9m Yl9mdW5jcyk7CisJCQlpZiAocmV0KSB7CisJCQkJRFJNX0VSUk9SKCIlczogZnJhbWVidWZmZXIg aW5pdCBmYWlsZWQgJWRcbiIsCisJCQkJCSAgX19mdW5jX18sIHJldCk7CisJCQkJa2ZyZWUoaW50 ZWxfZmIpOworCQkJCXJldHVybiByZXQ7CisJCQl9CisKKwkJCW1ldGFfZGF0YSA9IGttYWxsb2Mo c2l6ZW9mKHN0cnVjdCBpbnRlbF92Z3B1X2ZiX21ldGFfZGF0YSksCisJCQkJCSAgICBHRlBfS0VS TkVMKTsKKwkJCWlmICh1bmxpa2VseSghbWV0YV9kYXRhKSkgeworCQkJCXJldHVybiAtRU5PTUVN OworCQkJfQorCisJCQltZXRhX2RhdGEtPnZncHVfcGxhbmVfaWQgPSAodmdwdS0+aWQgPDwgMTYp IHwKKwkJCQkocGlwZSA8PCA4KSB8IHBsYW5lX2lkOworCQkJbWV0YV9kYXRhLT52Z3B1ID0gdmdw dTsKKworCQkJaW50ZWxfZmItPm1ldGFfZmIucHJpdmF0ZSA9IG1ldGFfZGF0YTsKKwkJCWludGVs X2ZiLT5tZXRhX2ZiLnVwZGF0ZSA9IG1ldGFfZmJfdXBkYXRlOworCQkJaW50ZWxfZmItPm1ldGFf ZmIudHlwZV9pZCA9IElOVEVMX01FVEFfRkJfVkdQVTsKKworCQkJdmdwdS0+ZGlzcGxheS5tZXRh X2Zicy5tZXRhX2ZiW3BpcGVdW3BsYW5lX2lkXSA9IGludGVsX2ZiOworCQl9CisJfQorCXJldHVy biAwOworfQorCiAvKioKICAqIGludGVsX3ZncHVfY2xlYW5fZGlzcGxheSAtIGNsZWFuIHZHUFUg dmlydHVhbCBkaXNwbGF5IGVtdWxhdGlvbgogICogQHZncHU6IGEgdkdQVQpAQCAtNDU3LDYgKzYw Myw4IEBAIHZvaWQgaW50ZWxfdmdwdV9jbGVhbl9kaXNwbGF5KHN0cnVjdCBpbnRlbF92Z3B1ICp2 Z3B1KQogCQljbGVhbl92aXJ0dWFsX2RwX21vbml0b3IodmdwdSwgUE9SVF9EKTsKIAllbHNlCiAJ CWNsZWFuX3ZpcnR1YWxfZHBfbW9uaXRvcih2Z3B1LCBQT1JUX0IpOworCisJY2xlYW5fbWV0YV9m Yih2Z3B1KTsKIH0KIAogLyoqCkBAIC00NzYsNiArNjI0LDggQEAgaW50IGludGVsX3ZncHVfaW5p dF9kaXNwbGF5KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB1NjQgcmVzb2x1dGlvbikKIAogCWlu dGVsX3ZncHVfaW5pdF9pMmNfZWRpZCh2Z3B1KTsKIAorCWluaXRfbWV0YV9mYih2Z3B1KTsKKwog CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCiAJCXJl dHVybiBzZXR1cF92aXJ0dWFsX2RwX21vbml0b3IodmdwdSwgUE9SVF9ELCBHVlRfRFBfRCwKIAkJ CQkJCXJlc29sdXRpb24pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2 dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCmluZGV4IDMxZjZjZGIuLjBhYjEw YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKQEAgLTEzMSwxMCArMTMxLDE2IEBAIHN0cnVjdCBp bnRlbF92Z3B1X29wcmVnaW9uIHsKIAogI2RlZmluZSB2Z3B1X29wcmVnaW9uKHZncHUpICgmKHZn cHUtPm9wcmVnaW9uKSkKIAorc3RydWN0IGludGVsX3ZncHVfbWV0YV9mYnMgeworCXN0cnVjdCBp bnRlbF9mcmFtZWJ1ZmZlciAqbWV0YV9mYltJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVT XTsKKwl1MzIgcGxhbmVfaWRfaW5kZXg7Cit9OworCiBzdHJ1Y3QgaW50ZWxfdmdwdV9kaXNwbGF5 IHsKIAlzdHJ1Y3QgaW50ZWxfdmdwdV9pMmNfZWRpZCBpMmNfZWRpZDsKIAlzdHJ1Y3QgaW50ZWxf dmdwdV9wb3J0IHBvcnRzW0k5MTVfTUFYX1BPUlRTXTsKIAlzdHJ1Y3QgaW50ZWxfdmdwdV9zYmkg c2JpOworCXN0cnVjdCBpbnRlbF92Z3B1X21ldGFfZmJzIG1ldGFfZmJzOwogfTsKIAogc3RydWN0 IHZncHVfc2NoZWRfY3RsIHsKQEAgLTMwMSw2ICszMDcsMTMgQEAgc3RydWN0IGludGVsX3ZncHVf dHlwZSB7CiAJZW51bSBpbnRlbF92Z3B1X2VkaWQgcmVzb2x1dGlvbjsKIH07CiAKK3N0cnVjdCBh c3NpZ25lZF9wbGFuZSB7CisJdTMyIHZncHVfcGxhbmVfaWQ7CisKKwkvKiB1c2Vyc3BhY2Ugdmlz aWJsZSBpZGVudGlmaWVyICovCisJaW50IGZyYW1lYnVmZmVyX2lkOworfTsKKwogc3RydWN0IGlu dGVsX2d2dCB7CiAJLyogR1ZUIHNjb3BlIGxvY2ssIHByb3RlY3QgR1ZUIGl0c2VsZiwgYW5kIGFs bCByZXNvdXJjZSBjdXJyZW50bHkKIAkgKiBub3QgeWV0IHByb3RlY3RlZCBieSBzcGVjaWFsIGxv Y2tzKHZncHUgYW5kIHNjaGVkdWxlciBsb2NrKS4KQEAgLTM0MCw2ICszNTMsOSBAQCBzdHJ1Y3Qg aW50ZWxfZ3Z0IHsKIAl9IGVuZ2luZV9tbWlvX2xpc3Q7CiAKIAlzdHJ1Y3QgZGVudHJ5ICpkZWJ1 Z2ZzX3Jvb3Q7CisKKwkvKiB2R1BVIHBsYW5lIGFzc2lnbm1lbnQgKi8KKwlzdHJ1Y3QgYXNzaWdu ZWRfcGxhbmUgYXNzaWduZWRfcGxhbmVbSTkxNV9NQVhfUElQRVNdW0k5MTVfTUFYX1BMQU5FU107 CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9ndnQgKnRvX2d2dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9rdm1ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKaW5kZXggYzEwNzIx NC4uN2Y0NzA0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKQEAgLTE0MjAsMTIgKzE0MjAs NTggQEAgaHdfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIlxuIik7CiB9CiAKK3N0YXRpYyBzc2l6 ZV90CitwbGFuZV9pZF9pbmRleF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCisJIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYgPSBtZGV2X2Zyb21fZGV2KGRldik7CisKKwlpZiAobWRldikgeworCQlzdHJ1Y3QgaW50 ZWxfdmdwdSAqdmdwdSA9IChzdHJ1Y3QgaW50ZWxfdmdwdSAqKQorCQkJbWRldl9nZXRfZHJ2ZGF0 YShtZGV2KTsKKwkJZW51bSBwaXBlIHBpcGUgPSB2Z3B1LT5kaXNwbGF5Lm1ldGFfZmJzLnBsYW5l X2lkX2luZGV4ICYKKwkJCTB4MDAwMDAwRjA7CisJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB2 Z3B1LT5kaXNwbGF5Lm1ldGFfZmJzLnBsYW5lX2lkX2luZGV4ICYKKwkJCTB4MDAwMDAwMEY7CisK KwkJaWYgKChwaXBlIDwgSTkxNV9NQVhfUElQRVMgfHwgcGxhbmVfaWQgPCBJOTE1X01BWF9QTEFO RVMpICYmCisJCQl2Z3B1LT5kaXNwbGF5Lm1ldGFfZmJzLm1ldGFfZmJbcGlwZV1bcGxhbmVfaWRd KSB7CisJCQlyZXR1cm4gc3ByaW50ZihidWYsICIldVxuIiwKKwkJCSAgICAgICB2Z3B1LT5kaXNw bGF5Lm1ldGFfZmJzLm1ldGFfZmJbcGlwZV1bcGxhbmVfaWRdLT5iYXNlLmJhc2UuaWQpOworCQl9 CisJfQorCXJldHVybiBzcHJpbnRmKGJ1ZiwgIlxuIik7Cit9CisKK3N0YXRpYyBzc2l6ZV90Citw bGFuZV9pZF9pbmRleF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAorCQkJICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBuKQoreworCXN0 cnVjdCBtZGV2X2RldmljZSAqbWRldiA9IG1kZXZfZnJvbV9kZXYoZGV2KTsKKwlzc2l6ZV90IHJl dDsKKwl1MzIgdmFsOworCisJcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChtZGV2KSB7CisJCXN0cnVjdCBpbnRlbF92Z3B1ICp2 Z3B1ID0gKHN0cnVjdCBpbnRlbF92Z3B1ICopCisJCQltZGV2X2dldF9kcnZkYXRhKG1kZXYpOwor CQl2Z3B1LT5kaXNwbGF5Lm1ldGFfZmJzLnBsYW5lX2lkX2luZGV4ID0gdmFsOworCX0KKworCXJl dHVybiBuOworfQorCiBzdGF0aWMgREVWSUNFX0FUVFJfUk8odmdwdV9pZCk7CiBzdGF0aWMgREVW SUNFX0FUVFJfUk8oaHdfaWQpOworc3RhdGljIERFVklDRV9BVFRSX1JXKHBsYW5lX2lkX2luZGV4 KTsKIAogc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmludGVsX3ZncHVfYXR0cnNbXSA9IHsKIAkm ZGV2X2F0dHJfdmdwdV9pZC5hdHRyLAogCSZkZXZfYXR0cl9od19pZC5hdHRyLAorCSZkZXZfYXR0 cl9wbGFuZV9pZF9pbmRleC5hdHRyLAogCU5VTEwKIH07CiAKLS0gCjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK