From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 03/13] drm/i915: Implement a non-blocking GPU synchronization mechanism for atomic page flips Date: Fri, 16 Nov 2012 16:22:15 +0200 Message-ID: <1353075745-30115-4-git-send-email-ville.syrjala@linux.intel.com> References: <1353075745-30115-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1353075745-30115-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFm dGVyIHRoZSBhdG9taWMgZmxpcCBoYXMgYmVlbiBzcGxpdCB1cCBpbnRvIGluZGl2aWR1YWwgZmxp cCByZXF1ZXN0cwpmb3IgZWFjaCBzY2Fub3V0IGVuZ2luZSwgcHV0IGVhY2ggc3VjaCByZXF1ZXN0 IGludG8gYSBGSUZPLiBUaGVuIGZvcgplYWNoIGZsaXAgcmVxdWVzdCBhZGQgbmV3IHJlcXVlc3Qg dG8gdGhlIHJpbmcocykgaW4gb3JkZXIgdG8gZ2V0IGFuCmludGVycnVwdCBvbmNlIHRoZSBHUFUg aGFzIGZpbmlzaGVkIHdoYXRldmVyIGl0IHdhcyBkb2luZyB3aXRoIHRoZQpuZXcgZnJvbnQgYnVm ZmVyLiBPbmNlIHRoZSBmbGlwIHJlcXVlc3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZQphdG9t aWMgZmxpcCBhbmQgdGhlIHNhbWUgcGlwZSBhdCB0aGUgaGVhZCBvZiB0aGUgcXVldWUgYXJlIHJl YWR5LApwdWxsIHRoZW0gZnJvbSB0aGUgcXVldWUgYW5kIGlzc3VlIHRoZSBmbGlwcyB0byB0aGUg aGFyZHdhcmUuCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg IHwgICAgOCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgfCAgICAyICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIHwgIDIzMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg ICAgfCAgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMjQwIGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODgwNWEwNy4uOGFhZjBjZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC05MjAsNiArOTIwLDE0IEBAIHR5cGVkZWYgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBpOTE1X2RyaTFfc3RhdGUgZHJpMTsKIAogCXN0 cnVjdCBkcm1fZmxpcF9kcml2ZXIgZmxpcF9kcml2ZXI7CisKKwlzdHJ1Y3QgeworCQlzdHJ1Y3Qg bGlzdF9oZWFkIGxpc3Q7CisJCXNwaW5sb2NrX3QgbG9jazsKKwkJc3RydWN0IHdvcmtfc3RydWN0 IHdvcms7CisJCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKKwkJdW5zaWduZWQgaW50IG5l eHRfZmxpcF9zZXE7CisJfSBmbGlwOwogfSBkcm1faTkxNV9wcml2YXRlX3Q7CiAKIC8qIEl0ZXJh dGUgb3ZlciBpbml0aWFsaXNlZCByaW5ncyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXgg NzRiNmY1Zi4uNDQxMzA2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0zNDgsNiArMzQ4 LDggQEAgc3RhdGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CisJaW50ZWxfYXRvbWljX25vdGlmeV9yaW5nKGRldiwgcmluZyk7CisKIAlpZiAocmluZy0+b2Jq ID09IE5VTEwpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwppbmRl eCAzMzM1N2VjLi4wNGEyMGM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwpAQCAt MzAsNiArMzAsMTAgQEAKIAogI2luY2x1ZGUgImludGVsX2Rydi5oIgogCisjZGVmaW5lIFVTRV9X UklURV9TRVFOTworI2RlZmluZSBVU0VfT0xSCisvLyNkZWZpbmUgRk9SQ0VfQ0FDSEVfRkxVU0gK Kwogc3RydWN0IGludGVsX2ZsaXAgewogCXN0cnVjdCBkcm1fZmxpcCBiYXNlOwogCXUzMiB2Ymxf Y291bnQ7CkBAIC00Miw2ICs0Niw5IEBAIHN0cnVjdCBpbnRlbF9mbGlwIHsKIAlzdHJ1Y3QgZHJt X3BlbmRpbmdfYXRvbWljX2V2ZW50ICpldmVudDsKIAl1aW50MzJfdCBvbGRfZmJfaWQ7CiAJc3Ry dWN0IGxpc3RfaGVhZCBwZW5kaW5nX2hlYWQ7CisJc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpy aW5nOworCXUzMiBzZXFubzsKKwl1bnNpZ25lZCBpbnQgZmxpcF9zZXE7CiB9OwogCiBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgewpAQCAtODAxLDYgKzgwOCw3IEBAIHN0YXRpYyBpbnQgcGluX2Zi cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzKQogewogCWludCBpLCByZXQ7CisJYm9vbCBub25ibG9jayA9IHMtPmZsYWdzICYgRFJNX01P REVfQVRPTUlDX05PTkJMT0NLOwogCiAJZm9yIChpID0gMDsgaSA8IGRldi0+bW9kZV9jb25maWcu bnVtX2NydGM7IGkrKykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3QgPSAmcy0+Y3J0 Y1tpXTsKQEAgLTgxNiw3ICs4MjQsNyBAQCBzdGF0aWMgaW50IHBpbl9mYnMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJb2JqID0gdG9faW50ZWxfZnJhbWVidWZmZXIoY3J0Yy0+ZmIpLT5vYmo7 CiAKIAkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlyZXQgPSBpbnRlbF9waW5f YW5kX2ZlbmNlX2ZiX29iaihkZXYsIG9iaiwgTlVMTCk7CisJCXJldCA9IGludGVsX3Bpbl9hbmRf ZmVuY2VfZmJfb2JqKGRldiwgb2JqLCBub25ibG9jayA/IG9iai0+cmluZyA6IE5VTEwpOwogCQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCQlpZiAocmV0KQpAQCAtODM5LDcg Kzg0Nyw3IEBAIHN0YXRpYyBpbnQgcGluX2ZicyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlv YmogPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihwbGFuZS0+ZmIpLT5vYmo7CiAKIAkJbXV0ZXhfbG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29i aihkZXYsIG9iaiwgTlVMTCk7CisJCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGRl diwgb2JqLCBub25ibG9jayA/IG9iai0+cmluZyA6IE5VTEwpOwogCQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKIAogCQlpZiAocmV0KQpAQCAtMjA0MCw2ICsyMDQ4LDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZmxpcF9kcml2ZXJfZnVuY3MgaW50ZWxfZmxpcF9kcml2ZXJf ZnVuY3MgPSB7CiAJLmZsdXNoID0gaW50ZWxfZmxpcF9kcml2ZXJfZmx1c2gsCiB9OwogCitzdGF0 aWMgdm9pZCBpbnRlbF9hdG9taWNfcHJvY2Vzc19mbGlwc193b3JrKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yayk7CisKIHN0YXRpYyB2b2lkIGludGVsX2ZsaXBfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CkBAIC0yMDU4LDYgKzIwNjgsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmxpcF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9w bGFuZSwgJmRldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCwgYmFzZS5oZWFkKQogCQlkcm1fZmxp cF9oZWxwZXJfaW5pdCgmaW50ZWxfcGxhbmUtPmZsaXBfaGVscGVyLAogCQkJCSAgICAgJmRldl9w cml2LT5mbGlwX2RyaXZlciwgJmludGVsX2ZsaXBfZnVuY3MpOworCisJSU5JVF9MSVNUX0hFQUQo JmRldl9wcml2LT5mbGlwLmxpc3QpOworCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+ZmxpcC5s b2NrKTsKKwlJTklUX1dPUksoJmRldl9wcml2LT5mbGlwLndvcmssIGludGVsX2F0b21pY19wcm9j ZXNzX2ZsaXBzX3dvcmspOworCWRldl9wcml2LT5mbGlwLndxID0gY3JlYXRlX3NpbmdsZXRocmVh ZF93b3JrcXVldWUoImludGVsX2ZsaXAiKTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfZmxpcF9m aW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCkBAIC0yMDc1LDYgKzIwOTAsNDYgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZmxpcF9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZHJtX2ZsaXBf ZHJpdmVyX2ZpbmkoJmRldl9wcml2LT5mbGlwX2RyaXZlcik7CiB9CiAKK3N0YXRpYyBib29sIGlu dGVsX2F0b21pY19wb3N0cG9uZV9mbGlwKHN0cnVjdCBpbnRlbF9mbGlwICppbnRlbF9mbGlwKQor eworCXN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZyA9IGludGVsX2ZsaXAtPnJpbmc7CisJ aW50IHJldDsKKworI2lmZGVmIEZPUkNFX0NBQ0hFX0ZMVVNICisJLyogVW5jb25kaXRpb25hbGx5 IGZvcmNlIGFkZF9yZXF1ZXN0IHRvIGVtaXQgYSBmdWxsIGZsdXNoLiAqLworCXJpbmctPmdwdV9j YWNoZXNfZGlydHkgPSB0cnVlOworI2VuZGlmCisKKyNpZmRlZiBVU0VfT0xSCisJcmV0ID0gaTkx NV9nZW1fY2hlY2tfb2xyKHJpbmcsIGludGVsX2ZsaXAtPnNlcW5vKTsKKwlpZiAoV0FSTl9PTihy ZXQpKSB7CisJCWludGVsX2ZsaXAtPnJpbmcgPSBOVUxMOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHJpbmctPmdldF9zZXFubyhyaW5nLCB0cnVlKSwgaW50 ZWxfZmxpcC0+c2Vxbm8pKSB7CisJCWludGVsX2ZsaXAtPnJpbmcgPSBOVUxMOworCQlyZXR1cm4g ZmFsc2U7CisJfQorI2VuZGlmCisKKwlpZiAoV0FSTl9PTighcmluZy0+aXJxX2dldChyaW5nKSkp IHsKKwkJaW50ZWxfZmxpcC0+cmluZyA9IE5VTEw7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKyNp Zm5kZWYgVVNFX09MUgorCXJldCA9IGk5MTVfYWRkX3JlcXVlc3QocmluZywgTlVMTCwgJmludGVs X2ZsaXAtPnNlcW5vKTsKKwlpZiAoV0FSTl9PTihyZXQpKSB7CisJCXJpbmctPmlycV9wdXQocmlu Zyk7CisJCWludGVsX2ZsaXAtPnJpbmcgPSBOVUxMOworCQlyZXR1cm4gZmFsc2U7CisJfQorI2Vu ZGlmCisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NjaGVk dWxlX2ZsaXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCQkJCXN0cnVjdCBsaXN0X2hlYWQgKmZsaXBzKQpA QCAtMjA5NSwxNSArMjE1MCwxMjAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NjaGVkdWxl X2ZsaXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlsb2NhbF9pcnFfZW5h YmxlKCk7CiB9CiAKK3N0YXRpYyAgYm9vbCBpbnRlbF9hdG9taWNfZmxpcHNfcmVhZHkoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGZsaXBfc2VxKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVs X2ZsaXAgKmludGVsX2ZsaXA7CisKKwkvKiBjaGVjayBpZiBhbGwgZmxpcHMgdy8gc2FtZSBmbGlw X3NlcSBhcmUgcmVhZHkgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2ZsaXAsICZkZXZf cHJpdi0+ZmxpcC5saXN0LCBiYXNlLmxpc3QpIHsKKwkJaWYgKGludGVsX2ZsaXAtPmZsaXBfc2Vx ICE9IGZsaXBfc2VxKQorCQkJYnJlYWs7CisKKwkJaWYgKGludGVsX2ZsaXAtPnJpbmcpCisJCQly ZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIGludGVs X2F0b21pY19wcm9jZXNzX2ZsaXBzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgZmxpcC53b3JrKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZGV2X3ByaXYtPmRldjsKKworCWZvciAoOzspIHsKKwkJc3RydWN0IGludGVsX2ZsaXAg KmludGVsX2ZsaXAsICpuZXh0OworCQl1bnNpZ25lZCBpbnQgZmxpcF9zZXE7CisJCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjOworCQlMSVNUX0hFQUQoZmxpcHMpOworCQl1bnNpZ25lZCBs b25nIGZsYWdzOworCisJCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+ZmxpcC5saXN0KSkKKwkJ CXJldHVybjsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmZsaXAubG9jaywgZmxh Z3MpOworCisJCWludGVsX2ZsaXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZkZXZfcHJpdi0+ZmxpcC5s aXN0LCBzdHJ1Y3QgaW50ZWxfZmxpcCwgYmFzZS5saXN0KTsKKwkJZmxpcF9zZXEgPSBpbnRlbF9m bGlwLT5mbGlwX3NlcTsKKwkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoaW50ZWxfZmxpcC0+ Y3J0Yyk7CisKKwkJaWYgKGludGVsX2F0b21pY19mbGlwc19yZWFkeShkZXYsIGZsaXBfc2VxKSkg eworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGludGVsX2ZsaXAsIG5leHQsICZkZXZfcHJp di0+ZmxpcC5saXN0LCBiYXNlLmxpc3QpIHsKKwkJCQlpZiAoaW50ZWxfZmxpcC0+ZmxpcF9zZXEg IT0gZmxpcF9zZXEpCisJCQkJCWJyZWFrOworCQkJCWxpc3RfbW92ZV90YWlsKCZpbnRlbF9mbGlw LT5iYXNlLmxpc3QsICZmbGlwcyk7CisJCQl9CisJCX0KKworCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXZfcHJpdi0+ZmxpcC5sb2NrLCBmbGFncyk7CisKKwkJaWYgKGxpc3RfZW1wdHkoJmZs aXBzKSkKKwkJCXJldHVybjsKKworCQltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4 KTsKKwkJaW50ZWxfYXRvbWljX3NjaGVkdWxlX2ZsaXBzKGRldl9wcml2LCBpbnRlbF9jcnRjLCAm ZmxpcHMpOworCQltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOworCX0KK30K Kworc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NoZWNrX2ZsaXBzX3JlYWR5KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZmxpcCAqaW50ZWxfZmxpcDsKKworCWlmIChs aXN0X2VtcHR5KCZkZXZfcHJpdi0+ZmxpcC5saXN0KSkKKwkJcmV0dXJuOworCisJaW50ZWxfZmxp cCA9IGxpc3RfZmlyc3RfZW50cnkoJmRldl9wcml2LT5mbGlwLmxpc3QsIHN0cnVjdCBpbnRlbF9m bGlwLCBiYXNlLmxpc3QpOworCWlmIChpbnRlbF9hdG9taWNfZmxpcHNfcmVhZHkoZGV2LCBpbnRl bF9mbGlwLT5mbGlwX3NlcSkpCisJCXF1ZXVlX3dvcmsoZGV2X3ByaXYtPmZsaXAud3EsICZkZXZf cHJpdi0+ZmxpcC53b3JrKTsKK30KKwordm9pZCBpbnRlbF9hdG9taWNfbm90aWZ5X3Jpbmcoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAq cmluZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOworCXN0cnVjdCBpbnRlbF9mbGlwICppbnRlbF9mbGlwOworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisJdTMyIHNlcW5vOworCisJaWYgKGxpc3RfZW1wdHkoJmRldl9wcml2LT5mbGlwLmxp c3QpKQorCQlyZXR1cm47CisKKwlzZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5nLCBmYWxzZSk7 CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmZsaXAubG9jaywgZmxhZ3MpOworCisJ bGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9mbGlwLCAmZGV2X3ByaXYtPmZsaXAubGlzdCwgYmFz ZS5saXN0KSB7CisJCWlmIChyaW5nICE9IGludGVsX2ZsaXAtPnJpbmcpCisJCQljb250aW51ZTsK KworCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIGludGVsX2ZsaXAtPnNlcW5vKSkgewor CQkJaW50ZWxfZmxpcC0+cmluZyA9IE5VTEw7CisJCQlyaW5nLT5pcnFfcHV0KHJpbmcpOworCQl9 CisJfQorCisJaW50ZWxfYXRvbWljX2NoZWNrX2ZsaXBzX3JlYWR5KGRldik7CisKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ZmxpcC5sb2NrLCBmbGFncyk7Cit9CisKIHN0YXRp YyB2b2lkIGF0b21pY19waXBlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAg ICAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICAgICAgIGludCBwaXBl KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gc3RhdGUtPmZp bGUtPmRyaXZlcl9wcml2OwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXYsIHBpcGUpKTsKIAlMSVNUX0hFQUQo ZmxpcHMpOwogCWludCBpOworCS8qIEZJWE1FIHRyZWF0IGZsaXBzIGZvciBhbGwgcGlwZXMgYXMg b25lIHNldCBmb3IgR1BVIHN5bmMgKi8KKwl1bnNpZ25lZCBpbnQgZmxpcF9zZXEgPSBkZXZfcHJp di0+ZmxpcC5uZXh0X2ZsaXBfc2VxKys7CisJc3RydWN0IGludGVsX2ZsaXAgKmludGVsX2ZsaXAs ICpuZXh0OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGludGVsX3JpbmdfYnVmZmVy ICpyaW5nOworCXVuc2lnbmVkIGludCByaW5nc19tYXNrID0gMDsKIAogCWZvciAoaSA9IDA7IGkg PCBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOyBpKyspIHsKIAkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnN0ID0gJnN0YXRlLT5jcnRjW2ldOwpAQCAtMjEyMiw2ICsyMjgyLDggQEAgc3RhdGlj IHZvaWQgYXRvbWljX3BpcGVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkJZHJt X2ZsaXBfaW5pdCgmaW50ZWxfZmxpcC0+YmFzZSwgJmludGVsX2NydGMtPmZsaXBfaGVscGVyKTsK IAorCQlpbnRlbF9mbGlwLT5mbGlwX3NlcSA9IGZsaXBfc2VxOworCiAJCWlmIChzdC0+ZXZlbnQp IHsKIAkJCWludGVsX2ZsaXAtPmV2ZW50ID0gc3QtPmV2ZW50OwogCQkJc3QtPmV2ZW50ID0gTlVM TDsKQEAgLTIxMzQsNiArMjI5NiwxOSBAQCBzdGF0aWMgdm9pZCBhdG9taWNfcGlwZV9jb21taXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCQlpbnRlbF9mbGlwLT5jcnRjID0gY3J0YzsKIAor CQlpZiAoY3J0Yy0+ZmIpIHsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0 b19pbnRlbF9mcmFtZWJ1ZmZlcihjcnRjLT5mYiktPm9iajsKKworCQkJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOworI2lmZGVmIFVTRV9XUklURV9TRVFOTworCQkJaW50ZWxfZmxpcC0+ c2Vxbm8gPSBvYmotPmxhc3Rfd3JpdGVfc2Vxbm87CisjZWxzZQorCQkJaW50ZWxfZmxpcC0+c2Vx bm8gPSBvYmotPmxhc3RfcmVhZF9zZXFubzsKKyNlbmRpZgorCQkJaW50ZWxfZmxpcC0+cmluZyA9 IG9iai0+cmluZzsKKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCQl9CisK IAkJLyogdXBkYXRlIHByaW1hcnlfZGlzYWJsZWQgYmVmb2VyIGNhbGNfcGxhbmUoKSAqLwogCQlp bnRlbF9jcnRjLT5wcmltYXJ5X2Rpc2FibGVkID0gc3QtPnByaW1hcnlfZGlzYWJsZWQ7CiAKQEAg LTIxNzcsNiArMjM1Miw4IEBAIHN0YXRpYyB2b2lkIGF0b21pY19waXBlX2NvbW1pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCiAJCWRybV9mbGlwX2luaXQoJmludGVsX2ZsaXAtPmJhc2UsICZp bnRlbF9wbGFuZS0+ZmxpcF9oZWxwZXIpOwogCisJCWludGVsX2ZsaXAtPmZsaXBfc2VxID0gZmxp cF9zZXE7CisKIAkJaWYgKHN0LT5ldmVudCkgewogCQkJaW50ZWxfZmxpcC0+ZXZlbnQgPSBzdC0+ ZXZlbnQ7CiAJCQlzdC0+ZXZlbnQgPSBOVUxMOwpAQCAtMjE5MCw2ICsyMzY3LDE5IEBAIHN0YXRp YyB2b2lkIGF0b21pY19waXBlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpbnRl bF9mbGlwLT5jcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2LCBwaXBlKTsKIAkJaW50 ZWxfZmxpcC0+cGxhbmUgPSBwbGFuZTsKIAorCQlpZiAocGxhbmUtPmZiKSB7CisJCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfZnJhbWVidWZmZXIocGxhbmUtPmZi KS0+b2JqOworCisJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisjaWZkZWYgVVNF X1dSSVRFX1NFUU5PCisJCQlpbnRlbF9mbGlwLT5zZXFubyA9IG9iai0+bGFzdF93cml0ZV9zZXFu bzsKKyNlbHNlCisJCQlpbnRlbF9mbGlwLT5zZXFubyA9IG9iai0+bGFzdF9yZWFkX3NlcW5vOwor I2VuZGlmCisJCQlpbnRlbF9mbGlwLT5yaW5nID0gb2JqLT5yaW5nOworCQkJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CisJCX0KKwogCQlpbnRlbF9wbGFuZS0+Y2FsYyhwbGFuZSwg cGxhbmUtPmZiLCAmc3QtPmNvb3Jkcyk7CiAKIAkJaWYgKHN0LT5vbGQuZmIpCkBAIC0yMjA5LDcg KzIzOTksNDIgQEAgc3RhdGljIHZvaWQgYXRvbWljX3BpcGVfY29tbWl0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJaWYgKGxpc3RfZW1wdHkoJmZsaXBzKSkKIAkJcmV0dXJuOwogCi0JaW50ZWxf YXRvbWljX3NjaGVkdWxlX2ZsaXBzKGRldl9wcml2LCBpbnRlbF9jcnRjLCAmZmxpcHMpOworCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50 ZWxfZmxpcCwgJmZsaXBzLCBiYXNlLmxpc3QpIHsKKwkJc3RydWN0IGludGVsX3JpbmdfYnVmZmVy ICpyaW5nID0gaW50ZWxfZmxpcC0+cmluZzsKKworCQlpZiAoIXJpbmcpCisJCQljb250aW51ZTsK KworCQlpZiAoaW50ZWxfYXRvbWljX3Bvc3Rwb25lX2ZsaXAoaW50ZWxfZmxpcCkpCisJCQlyaW5n c19tYXNrIHw9IGludGVsX3JpbmdfZmxhZyhyaW5nKTsKKwl9CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPmZsaXAubG9jaywgZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGludGVsX2ZsaXAsIG5leHQsICZmbGlwcywgYmFzZS5saXN0KQorCQlsaXN0X21vdmVfdGFp bCgmaW50ZWxfZmxpcC0+YmFzZS5saXN0LCAmZGV2X3ByaXYtPmZsaXAubGlzdCk7CisKKwkvKiBp ZiBubyByaW5ncyBhcmUgaW52b2x2ZWQsIHdlIGNhbiBhdm9pZCBjaGVja2luZyBzZXFub3MgKi8K KwlpZiAocmluZ3NfbWFzayA9PSAwKQorCQlpbnRlbF9hdG9taWNfY2hlY2tfZmxpcHNfcmVhZHko ZGV2KTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5mbGlwLmxvY2ssIGZs YWdzKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKHJpbmdz X21hc2sgPT0gMCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBEb3VibGUgY2hlY2sgdG8gY2F0Y2gg Y2FzZXMgd2hlcmUgdGhlIGlycQorCSAqIGZpcmVkIGJlZm9yZSB0aGUgZmxpcCB3YXMgcGxhY2Vk IG9udG8gZmxpcC5saXN0LgorCSAqLworCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkp IHsKKwkJaWYgKHJpbmdzX21hc2sgJiBpbnRlbF9yaW5nX2ZsYWcocmluZykpCisJCQlpbnRlbF9h dG9taWNfbm90aWZ5X3JpbmcoZGV2LCByaW5nKTsKKwl9CiB9CiAKIHZvaWQgaW50ZWxfYXRvbWlj X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IDhlYWJmNDAuLjMxOWFhYzggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCkBAIC03MjIsNiArNzIyLDcgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfYXRvbWljX2Zp bmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gdm9pZCBpbnRlbF9hdG9taWNfZnJl ZV9ldmVudHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsK IGV4dGVybiB2b2lkIGludGVsX2F0b21pY19oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBwaXBlKTsKIGV4dGVybiB2b2lkIGludGVsX2F0b21pY19jbGVhcl9mbGlwcyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOworZXh0ZXJuIHZvaWQgaW50ZWxfYXRvbWljX25vdGlmeV9y aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmlu Zyk7CiAKIGV4dGVybiB2b2lkIGludGVsX2VuYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAq Y3J0Yyk7CiBleHRlcm4gdm9pZCBpbnRlbF9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKLS0gCjEuNy44LjYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==