From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m=20=28VMware=29?= Subject: [PATCH v5 5/9] drm/ttm: TTM fault handler helpers Date: Wed, 12 Jun 2019 08:42:39 +0200 Message-ID: <20190612064243.55340-6-thellstrom@vmwopensource.org> References: <20190612064243.55340-1-thellstrom@vmwopensource.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pio-pvt-msa2.bahnhof.se (pio-pvt-msa2.bahnhof.se [79.136.2.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D7DF8922B for ; Wed, 12 Jun 2019 06:43:08 +0000 (UTC) In-Reply-To: <20190612064243.55340-1-thellstrom@vmwopensource.org> 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: Thomas Hellstrom , pv-drivers@vmware.com, linux-kernel@vger.kernel.org, linux-graphics-maintainer@vmware.com, nadav.amit@gmail.com, =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgoKV2l0aCB0aGUg dm13Z2Z4IGRpcnR5IHRyYWNraW5nLCB0aGUgZGVmYXVsdCBUVE0gZmF1bHQgaGFuZGxlciBpcyBu b3QKY29tcGxldGVseSBzdWZmaWNpZW50ICh2bXdnZnggbmVlZCB0byBtb2RpZnkgdGhlIHZtYS0+ dm1fZmxhZ3MgbWVtYmVyLAphbmQgYWxzbyBuZWVkcyB0byByZXN0cmljdCB0aGUgbnVtYmVyIG9m IHByZWZhdWx0cykuCgpXZSBhbHNvIHdhbnQgdG8gcmVwbGljYXRlIHRoZSBuZXcgdHRtX2JvX3Zt X3Jlc2VydmUoKSBmdW5jdGlvbmFsaXR5CgpTbyBzdGFydCB0dXJuaW5nIHRoZSBUVE0gdm0gY29k ZSBpbnRvIGhlbHBlcnM6IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCgpCmFuZCB0dG1fYm9fdm1f cmVzZXJ2ZSgpLCBhbmQgcHJvdmlkZSBhIGRlZmF1bHQgVFRNIGZhdWx0IGhhbmRsZXIgZm9yIG90 aGVyCmRyaXZlcnMgdG8gdXNlLgoKQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtv ZW5pZ0BhbWQuY29tPgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJv bUB2bXdhcmUuY29tPgpSZXZpZXdlZC1ieTogIkNocmlzdGlhbiBLw7ZuaWciIDxjaHJpc3RpYW4u a29lbmlnQGFtZC5jb20+ICN2MQotLS0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMg fCAxNzUgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvZHJtL3R0bS90 dG1fYm9fYXBpLmggICAgfCAgMTAgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMo KyksIDcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCmluZGV4IDE5NmUxM2Ew YWRhZC4uMmQ5ODYyZmNmNmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i b192bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKQEAgLTQyLDggKzQy LDYgQEAKICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvbWVtX2Vu Y3J5cHQuaD4KIAotI2RlZmluZSBUVE1fQk9fVk1fTlVNX1BSRUZBVUxUIDE2Ci0KIHN0YXRpYyB2 bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdF9pZGxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq Ym8sCiAJCQkJc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiB7CkBAIC0xMDYsMzEgKzEwNCwzMCBAQCBz dGF0aWMgdW5zaWduZWQgbG9uZyB0dG1fYm9faW9fbWVtX3BmbihzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKmJvLAogCQkrIHBhZ2Vfb2Zmc2V0OwogfQogCi1zdGF0aWMgdm1fZmF1bHRfdCB0dG1f Ym9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCisvKioKKyAqIHR0bV9ib192bV9yZXNl cnZlIC0gUmVzZXJ2ZSBhIGJ1ZmZlciBvYmplY3QgaW4gYSByZXRyeWFibGUgdm0gY2FsbGJhY2sK KyAqIEBibzogVGhlIGJ1ZmZlciBvYmplY3QKKyAqIEB2bWY6IFRoZSBmYXVsdCBzdHJ1Y3R1cmUg aGFuZGVkIHRvIHRoZSBjYWxsYmFjaworICoKKyAqIHZtIGNhbGxiYWNrcyBsaWtlIGZhdWx0KCkg YW5kICpfbWt3cml0ZSgpIGFsbG93IGZvciB0aGUgbW1fc2VtIHRvIGJlIGRyb3BwZWQKKyAqIGR1 cmluZyBsb25nIHdhaXRzLCBhbmQgYWZ0ZXIgdGhlIHdhaXQgdGhlIGNhbGxiYWNrIHdpbGwgYmUg cmVzdGFydGVkLiBUaGlzCisgKiBpcyB0byBhbGxvdyBvdGhlciB0aHJlYWRzIHVzaW5nIHRoZSBz YW1lIHZpcnR1YWwgbWVtb3J5IHNwYWNlIGNvbmN1cnJlbnQKKyAqIGFjY2VzcyB0byBtYXAoKSwg dW5tYXAoKSBjb21wbGV0ZWx5IHVucmVsYXRlZCBidWZmZXIgb2JqZWN0cy4gVFRNIGJ1ZmZlcgor ICogb2JqZWN0IHJlc2VydmF0aW9ucyBzb21ldGltZXMgd2FpdCBmb3IgR1BVIGFuZCBzaG91bGQg dGhlcmVmb3JlIGJlCisgKiBjb25zaWRlcmVkIGxvbmcgd2FpdHMuIFRoaXMgZnVuY3Rpb24gcmVz ZXJ2ZXMgdGhlIGJ1ZmZlciBvYmplY3QgaW50ZXJydXB0aWJseQorICogdGFraW5nIHRoaXMgaW50 byBhY2NvdW50LiBTdGFydmF0aW9uIGlzIGF2b2lkZWQgYnkgdGhlIHZtIHN5c3RlbSBub3QKKyAq IGFsbG93aW5nIHRvbyBtYW55IHJlcGVhdGVkIHJlc3RhcnRzLgorICogVGhpcyBmdW5jdGlvbiBp cyBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGN1c3RvbWl6ZWQgZmF1bHQoKSBhbmQgX21rd3JpdGUo KQorICogaGFuZGxlcnMuCisgKgorICogUmV0dXJuOgorICogICAgMCBvbiBzdWNjZXNzIGFuZCB0 aGUgYm8gd2FzIHJlc2VydmVkLgorICogICAgVk1fRkFVTFRfUkVUUlkgaWYgYmxvY2tpbmcgd2Fp dC4KKyAqICAgIFZNX0ZBVUxUX05PUEFHRSBpZiBibG9ja2luZyB3YWl0IGFuZCByZXRyeWluZyB3 YXMgbm90IGFsbG93ZWQuCisgKi8KK3ZtX2ZhdWx0X3QgdHRtX2JvX3ZtX3Jlc2VydmUoc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibywKKwkJCSAgICAgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiB7 Ci0Jc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsKLQlzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKmJvID0gKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqKQotCSAgICB2bWEt PnZtX3ByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiA9IGJvLT5iZGV2 OwotCXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7Ci0JdW5zaWduZWQgbG9uZyBwYWdlX2xhc3Q7 Ci0JdW5zaWduZWQgbG9uZyBwZm47Ci0Jc3RydWN0IHR0bV90dCAqdHRtID0gTlVMTDsKLQlzdHJ1 Y3QgcGFnZSAqcGFnZTsKLQlpbnQgZXJyOwotCWludCBpOwotCXZtX2ZhdWx0X3QgcmV0ID0gVk1f RkFVTFRfTk9QQUdFOwotCXVuc2lnbmVkIGxvbmcgYWRkcmVzcyA9IHZtZi0+YWRkcmVzczsKLQlz dHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbiA9Ci0JCSZiZGV2LT5tYW5bYm8tPm1lbS5t ZW1fdHlwZV07Ci0Jc3RydWN0IHZtX2FyZWFfc3RydWN0IGN2bWE7Ci0KLQkvKgotCSAqIFdvcmsg YXJvdW5kIGxvY2tpbmcgb3JkZXIgcmV2ZXJzYWwgaW4gZmF1bHQgLyBub3BmbgotCSAqIGJldHdl ZW4gbW1hcF9zZW0gYW5kIGJvX3Jlc2VydmU6IFBlcmZvcm0gYSB0cnlsb2NrIG9wZXJhdGlvbgot CSAqIGZvciByZXNlcnZlLCBhbmQgaWYgaXQgZmFpbHMsIHJldHJ5IHRoZSBmYXVsdCBhZnRlciB3 YWl0aW5nCi0JICogZm9yIHRoZSBidWZmZXIgdG8gYmVjb21lIHVucmVzZXJ2ZWQuCi0JICovCiAJ aWYgKHVubGlrZWx5KCFyZXNlcnZhdGlvbl9vYmplY3RfdHJ5bG9jayhiby0+cmVzdikpKSB7CiAJ CWlmICh2bWYtPmZsYWdzICYgRkFVTFRfRkxBR19BTExPV19SRVRSWSkgewogCQkJaWYgKCEodm1m LT5mbGFncyAmIEZBVUxUX0ZMQUdfUkVUUllfTk9XQUlUKSkgewpAQCAtMTUxLDE0ICsxNDgsNTUg QEAgc3RhdGljIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1m KQogCQlyZXR1cm4gVk1fRkFVTFRfTk9QQUdFOwogCX0KIAorCXJldHVybiAwOworfQorRVhQT1JU X1NZTUJPTCh0dG1fYm9fdm1fcmVzZXJ2ZSk7CisKKy8qKgorICogdHRtX2JvX3ZtX2ZhdWx0X3Jl c2VydmVkIC0gVFRNIGZhdWx0IGhlbHBlcgorICogQHZtZjogVGhlIHN0cnVjdCB2bV9mYXVsdCBn aXZlbiBhcyBhcmd1bWVudCB0byB0aGUgZmF1bHQgY2FsbGJhY2sKKyAqIEBwcm90OiBUaGUgcGFn ZSBwcm90ZWN0aW9uIHRvIGJlIHVzZWQgZm9yIHRoaXMgbWVtb3J5IGFyZWEuCisgKiBAbnVtX3By ZWZhdWx0OiBNYXhpbXVtIG51bWJlciBvZiBwcmVmYXVsdCBwYWdlcy4gVGhlIGNhbGxlciBtYXkg d2FudCB0bworICogc3BlY2lmeSB0aGlzIGJhc2VkIG9uIG1hZHZpY2Ugc2V0dGluZ3MgYW5kIHRo ZSBzaXplIG9mIHRoZSBHUFUgb2JqZWN0CisgKiBiYWNrZWQgYnkgdGhlIG1lbW9yeS4KKyAqCisg KiBUaGlzIGZ1bmN0aW9uIGluc2VydHMgb25lIG9yIG1vcmUgcGFnZSB0YWJsZSBlbnRyaWVzIHBv aW50aW5nIHRvIHRoZQorICogbWVtb3J5IGJhY2tpbmcgdGhlIGJ1ZmZlciBvYmplY3QsIGFuZCB0 aGVuIHJldHVybnMgYSByZXR1cm4gY29kZQorICogaW5zdHJ1Y3RpbmcgdGhlIGNhbGxlciB0byBy ZXRyeSB0aGUgcGFnZSBhY2Nlc3MuCisgKgorICogUmV0dXJuOgorICogICBWTV9GQVVMVF9OT1BB R0Ugb24gc3VjY2VzcyBvciBwZW5kaW5nIHNpZ25hbAorICogICBWTV9GQVVMVF9TSUdCVVMgb24g dW5zcGVjaWZpZWQgZXJyb3IKKyAqICAgVk1fRkFVTFRfT09NIG9uIG91dC1vZi1tZW1vcnkKKyAq ICAgVk1fRkFVTFRfUkVUUlkgaWYgcmV0cnlhYmxlIHdhaXQKKyAqLwordm1fZmF1bHRfdCB0dG1f Ym9fdm1fZmF1bHRfcmVzZXJ2ZWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsCisJCQkJICAgIHBncHJv dF90IHByb3QsCisJCQkJICAgIHBnb2ZmX3QgbnVtX3ByZWZhdWx0KQoreworCXN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0IGN2bWEg PSAqdm1hOworCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICopCisJICAgIHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCXN0cnVjdCB0dG1fYm9f ZGV2aWNlICpiZGV2ID0gYm8tPmJkZXY7CisJdW5zaWduZWQgbG9uZyBwYWdlX29mZnNldDsKKwl1 bnNpZ25lZCBsb25nIHBhZ2VfbGFzdDsKKwl1bnNpZ25lZCBsb25nIHBmbjsKKwlzdHJ1Y3QgdHRt X3R0ICp0dG0gPSBOVUxMOworCXN0cnVjdCBwYWdlICpwYWdlOworCWludCBlcnI7CisJcGdvZmZf dCBpOworCXZtX2ZhdWx0X3QgcmV0ID0gVk1fRkFVTFRfTk9QQUdFOworCXVuc2lnbmVkIGxvbmcg YWRkcmVzcyA9IHZtZi0+YWRkcmVzczsKKwlzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1h biA9CisJCSZiZGV2LT5tYW5bYm8tPm1lbS5tZW1fdHlwZV07CisKIAkvKgogCSAqIFJlZnVzZSB0 byBmYXVsdCBpbXBvcnRlZCBwYWdlcy4gVGhpcyBzaG91bGQgYmUgaGFuZGxlZAogCSAqIChpZiBh dCBhbGwpIGJ5IHJlZGlyZWN0aW5nIG1tYXAgdG8gdGhlIGV4cG9ydGVyLgogCSAqLwotCWlmIChi by0+dHRtICYmIChiby0+dHRtLT5wYWdlX2ZsYWdzICYgVFRNX1BBR0VfRkxBR19TRykpIHsKLQkJ cmV0ID0gVk1fRkFVTFRfU0lHQlVTOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQorCWlmIChiby0+ dHRtICYmIChiby0+dHRtLT5wYWdlX2ZsYWdzICYgVFRNX1BBR0VfRkxBR19TRykpCisJCXJldHVy biBWTV9GQVVMVF9TSUdCVVM7CiAKIAlpZiAoYmRldi0+ZHJpdmVyLT5mYXVsdF9yZXNlcnZlX25v dGlmeSkgewogCQlzdHJ1Y3QgZG1hX2ZlbmNlICptb3ZpbmcgPSBkbWFfZmVuY2VfZ2V0KGJvLT5t b3ZpbmcpOwpAQCAtMTY5LDExICsyMDcsOSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0dG1fYm9fdm1f ZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCQlicmVhazsKIAkJY2FzZSAtRUJVU1k6CiAJ CWNhc2UgLUVSRVNUQVJUU1lTOgotCQkJcmV0ID0gVk1fRkFVTFRfTk9QQUdFOwotCQkJZ290byBv dXRfdW5sb2NrOworCQkJcmV0dXJuIFZNX0ZBVUxUX05PUEFHRTsKIAkJZGVmYXVsdDoKLQkJCXJl dCA9IFZNX0ZBVUxUX1NJR0JVUzsKLQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCXJldHVybiBWTV9G QVVMVF9TSUdCVVM7CiAJCX0KIAogCQlpZiAoYm8tPm1vdmluZyAhPSBtb3ZpbmcpIHsKQEAgLTE4 OSwyNiArMjI1LDE1IEBAIHN0YXRpYyB2bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qg dm1fZmF1bHQgKnZtZikKIAkgKiBtb3ZlLgogCSAqLwogCXJldCA9IHR0bV9ib192bV9mYXVsdF9p ZGxlKGJvLCB2bWYpOwotCWlmICh1bmxpa2VseShyZXQgIT0gMCkpIHsKLQkJaWYgKHJldCA9PSBW TV9GQVVMVF9SRVRSWSAmJgotCQkgICAgISh2bWYtPmZsYWdzICYgRkFVTFRfRkxBR19SRVRSWV9O T1dBSVQpKSB7Ci0JCQkvKiBUaGUgQk8gaGFzIGFscmVhZHkgYmVlbiB1bnJlc2VydmVkLiAqLwot CQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCWdvdG8gb3V0X3VubG9jazsKLQl9CisJaWYgKHVubGlr ZWx5KHJldCAhPSAwKSkKKwkJcmV0dXJuIHJldDsKIAogCWVyciA9IHR0bV9tZW1faW9fbG9jayht YW4sIHRydWUpOwotCWlmICh1bmxpa2VseShlcnIgIT0gMCkpIHsKLQkJcmV0ID0gVk1fRkFVTFRf Tk9QQUdFOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQorCWlmICh1bmxpa2VseShlcnIgIT0gMCkp CisJCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CiAJZXJyID0gdHRtX21lbV9pb19yZXNlcnZlX3Zt KGJvKTsKLQlpZiAodW5saWtlbHkoZXJyICE9IDApKSB7Ci0JCXJldCA9IFZNX0ZBVUxUX1NJR0JV UzsKLQkJZ290byBvdXRfaW9fdW5sb2NrOwotCX0KKwlpZiAodW5saWtlbHkoZXJyICE9IDApKQor CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwogCiAJcGFnZV9vZmZzZXQgPSAoKGFkZHJlc3MgLSB2 bWEtPnZtX3N0YXJ0KSA+PiBQQUdFX1NISUZUKSArCiAJCXZtYS0+dm1fcGdvZmYgLSBkcm1fdm1h X25vZGVfc3RhcnQoJmJvLT52bWFfbm9kZSk7CkBAIC0yMjAsMTggKzI0NSw4IEBAIHN0YXRpYyB2 bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJZ290byBv dXRfaW9fdW5sb2NrOwogCX0KIAotCS8qCi0JICogTWFrZSBhIGxvY2FsIHZtYSBjb3B5IHRvIG1v ZGlmeSB0aGUgcGFnZV9wcm90IG1lbWJlcgotCSAqIGFuZCB2bV9mbGFncyBpZiBuZWNlc3Nhcnku IFRoZSB2bWEgcGFyYW1ldGVyIGlzIHByb3RlY3RlZAotCSAqIGJ5IG1tYXBfc2VtIGluIHdyaXRl IG1vZGUuCi0JICovCi0JY3ZtYSA9ICp2bWE7Ci0JY3ZtYS52bV9wYWdlX3Byb3QgPSB2bV9nZXRf cGFnZV9wcm90KGN2bWEudm1fZmxhZ3MpOwotCi0JaWYgKGJvLT5tZW0uYnVzLmlzX2lvbWVtKSB7 Ci0JCWN2bWEudm1fcGFnZV9wcm90ID0gdHRtX2lvX3Byb3QoYm8tPm1lbS5wbGFjZW1lbnQsCi0J CQkJCQljdm1hLnZtX3BhZ2VfcHJvdCk7Ci0JfSBlbHNlIHsKKwljdm1hLnZtX3BhZ2VfcHJvdCA9 IHR0bV9pb19wcm90KGJvLT5tZW0ucGxhY2VtZW50LCBwcm90KTsKKwlpZiAoIWJvLT5tZW0uYnVz LmlzX2lvbWVtKSB7CiAJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7CiAJCQkuaW50 ZXJydXB0aWJsZSA9IGZhbHNlLAogCQkJLm5vX3dhaXRfZ3B1ID0gZmFsc2UsCkBAIC0yNDAsMjQg KzI1NSwyMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHQoc3RydWN0IHZtX2Zh dWx0ICp2bWYpCiAJCX07CiAKIAkJdHRtID0gYm8tPnR0bTsKLQkJY3ZtYS52bV9wYWdlX3Byb3Qg PSB0dG1faW9fcHJvdChiby0+bWVtLnBsYWNlbWVudCwKLQkJCQkJCWN2bWEudm1fcGFnZV9wcm90 KTsKLQotCQkvKiBBbGxvY2F0ZSBhbGwgcGFnZSBhdCBvbmNlLCBtb3N0IGNvbW1vbiB1c2FnZSAq LwotCQlpZiAodHRtX3R0X3BvcHVsYXRlKHR0bSwgJmN0eCkpIHsKKwkJaWYgKHR0bV90dF9wb3B1 bGF0ZShiby0+dHRtLCAmY3R4KSkgewogCQkJcmV0ID0gVk1fRkFVTFRfT09NOwogCQkJZ290byBv dXRfaW9fdW5sb2NrOwogCQl9CisJfSBlbHNlIHsKKwkJLyogSW9tZW0gc2hvdWxkIG5vdCBiZSBt YXJrZWQgZW5jcnlwdGVkICovCisJCWN2bWEudm1fcGFnZV9wcm90ID0gcGdwcm90X2RlY3J5cHRl ZChjdm1hLnZtX3BhZ2VfcHJvdCk7CiAJfQogCiAJLyoKIAkgKiBTcGVjdWxhdGl2ZWx5IHByZWZh dWx0IGEgbnVtYmVyIG9mIHBhZ2VzLiBPbmx5IGVycm9yIG9uCiAJICogZmlyc3QgcGFnZS4KIAkg Ki8KLQlmb3IgKGkgPSAwOyBpIDwgVFRNX0JPX1ZNX05VTV9QUkVGQVVMVDsgKytpKSB7CisJZm9y IChpID0gMDsgaSA8IG51bV9wcmVmYXVsdDsgKytpKSB7CiAJCWlmIChiby0+bWVtLmJ1cy5pc19p b21lbSkgewotCQkJLyogSW9tZW0gc2hvdWxkIG5vdCBiZSBtYXJrZWQgZW5jcnlwdGVkICovCi0J CQljdm1hLnZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZWNyeXB0ZWQoY3ZtYS52bV9wYWdlX3Byb3Qp OwogCQkJcGZuID0gdHRtX2JvX2lvX21lbV9wZm4oYm8sIHBhZ2Vfb2Zmc2V0KTsKIAkJfSBlbHNl IHsKIAkJCXBhZ2UgPSB0dG0tPnBhZ2VzW3BhZ2Vfb2Zmc2V0XTsKQEAgLTI5NSw3ICszMDcsMjYg QEAgc3RhdGljIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1m KQogCXJldCA9IFZNX0ZBVUxUX05PUEFHRTsKIG91dF9pb191bmxvY2s6CiAJdHRtX21lbV9pb191 bmxvY2sobWFuKTsKLW91dF91bmxvY2s6CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0wo dHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKTsKKworc3RhdGljIHZtX2ZhdWx0X3QgdHRtX2JvX3Zt X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hID0gdm1mLT52bWE7CisJcGdwcm90X3QgcHJvdDsKKwlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKmJvID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJdm1fZmF1bHRfdCByZXQ7CisKKwlyZXQg PSB0dG1fYm9fdm1fcmVzZXJ2ZShibywgdm1mKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJcHJvdCA9IHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncyk7CisJcmV0ID0gdHRtX2Jv X3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgVFRNX0JPX1ZNX05VTV9QUkVGQVVMVCk7CisJ aWYgKHJldCA9PSBWTV9GQVVMVF9SRVRSWSAmJiAhKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1JF VFJZX05PV0FJVCkpCisJCXJldHVybiByZXQ7CisKIAlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2Nr KGJvLT5yZXN2KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRt L3R0bV9ib19hcGkuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKaW5kZXggNDlkOWNk ZmM1OGYyLi40MzVkMDJmNzE5YTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9f YXBpLmgKKysrIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaApAQCAtNzY4LDQgKzc2OCwx NCBAQCBpbnQgdHRtX2JvX3N3YXBvdXQoc3RydWN0IHR0bV9ib19nbG9iYWwgKmdsb2IsCiAJCQlz dHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCk7CiB2b2lkIHR0bV9ib19zd2Fwb3V0X2FsbChz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldik7CiBpbnQgdHRtX2JvX3dhaXRfdW5yZXNlcnZlZChz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKKworLyogRGVmYXVsdCBudW1iZXIgb2YgcHJl LWZhdWx0ZWQgcGFnZXMgaW4gdGhlIFRUTSBmYXVsdCBoYW5kbGVyICovCisjZGVmaW5lIFRUTV9C T19WTV9OVU1fUFJFRkFVTFQgMTYKKwordm1fZmF1bHRfdCB0dG1fYm9fdm1fcmVzZXJ2ZShzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAorCQkJICAgICBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7 CisKK3ZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAq dm1mLAorCQkJCSAgICBwZ3Byb3RfdCBwcm90LAorCQkJCSAgICBwZ29mZl90IG51bV9wcmVmYXVs dCk7CiAjZW5kaWYKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVs