From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH 53/72] drm: implement page flipping support for planes Date: Fri, 31 Oct 2014 15:54:36 -0700 Message-ID: <1414796095-10107-54-git-send-email-steve_longerbeam@mentor.com> References: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f49.google.com (mail-pa0-f49.google.com [209.85.220.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 56A636E849 for ; Fri, 31 Oct 2014 15:57:32 -0700 (PDT) Received: by mail-pa0-f49.google.com with SMTP id lj1so8529261pab.22 for ; Fri, 31 Oct 2014 15:57:32 -0700 (PDT) In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> 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: Dmitry Eremin-Solenikov List-Id: dri-devel@lists.freedesktop.org UGxhbmVzIGxpa2UgY3J0Y3Mgd291bGQgYmVuZWZpdCBmcm9tIGhhdmluZyBwYWdlIGZsaXAgZXZl bnQgc3VwcG9ydC4KV2l0aCBwbGFuZXMgcGFnZSBmbGlwIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBz eW5jaHJvbml6ZSBjaGFuZ2luZyBhCmZyYW1lYnVmZmVyIHVzZWQgYnkgYW4gb3ZlcmxheSAob3Ig ZXZlbiBjdXJzb3IpIHBsYW5lIHdpdGggdmVydGljYWwKc3luYyBldmVudHMuCgpBIHBhZ2UgZmxp cCBpbiB0aGUgcHJpbWFyeSBwbGFuZSBpcyBlcXVpdmFsZW50IHRvIGEgY3J0YyBwYWdlIGZsaXAs CndoaWNoIHN1Z2dlc3RzIHRoaXMgaW9jdGwgY291bGQgZGVwcmVjYXRlIHRoZSBjcnRjIHBhZ2Ug ZmxpcCBpb2N0bAphdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuCgpTaWduZWQtb2ZmLWJ5OiBT dGV2ZSBMb25nZXJiZWFtIDxzdGV2ZV9sb25nZXJiZWFtQG1lbnRvci5jb20+ClNpZ25lZC1vZmYt Ynk6IERtaXRyeSBFcmVtaW4tU29sZW5pa292IDxkbWl0cnlfZXJlbWluQG1lbnRvci5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgIHwgIDI0MSArKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMgfCAg ICAxICsKIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICB8ICAgMTEgKysKIGluY2x1ZGUvdWFw aS9kcm0vZHJtLmggICAgICB8ICAgIDEgKwogaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIHwg ICAgOCArKwogNSBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2NydGMuYwppbmRleCBlNzljOGQzLi41M2I1Zjg3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwpA QCAtMjQ0NSw2ICsyNDQ1LDE0MiBAQCBpbnQgZHJtX21vZGVfc2V0cGxhbmUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgcGxhbmVfcmVxLT5zcmNfdywgcGxhbmVfcmVx LT5zcmNfaCk7CiB9CiAKK2ludCBkcm1fbW9kZV9wbGFuZV9wYWdlX2ZsaXBfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdikKK3sKKwlzdHJ1Y3QgZHJtX21vZGVfcGxhbmVfcGFnZV9mbGlwICpwYWdlX2ZsaXAg PSBkYXRhOworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IE5VTEw7CisJc3RydWN0IGRybV9wZW5k aW5nX3ZibGFua19ldmVudCAqZSA9IE5VTEw7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlib29s IGlzX3ByaW1hcnk7CisJaW50IHJldDsKKworCWlmIChwYWdlX2ZsaXAtPmZsYWdzICYgfkRSTV9N T0RFX1BBR0VfRkxJUF9GTEFHUyB8fAorCSAgICBwYWdlX2ZsaXAtPnJlc2VydmVkICE9IDApCisJ CXJldHVybiAtRUlOVkFMOworCisJaWYgKChwYWdlX2ZsaXAtPmZsYWdzICYgRFJNX01PREVfUEFH RV9GTElQX0FTWU5DKSAmJgorCSAgICAhZGV2LT5tb2RlX2NvbmZpZy5hc3luY19wYWdlX2ZsaXAp CisJCXJldHVybiAtRUlOVkFMOworCisJcGxhbmUgPSBkcm1fcGxhbmVfZmluZChkZXYsIHBhZ2Vf ZmxpcC0+cGxhbmVfaWQpOworCWlmICghcGxhbmUpCisJCXJldHVybiAtRU5PRU5UOworCisJaXNf cHJpbWFyeSA9IChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKworCWRy bV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7CisKKwlpZiAocGxhbmUtPmNydGMgPT0gTlVMTCB8fCBw bGFuZS0+ZmIgPT0gTlVMTCkgeworCQkvKiBUaGUgY3J0YyBhbmQvb3IgZnJhbWVidWZmZXIgaXMg Y3VycmVudGx5IHVuYm91bmQsCisJCSAqIHByZXN1bWFibHkgZHVlIHRvIGEgaG90cGx1ZyBldmVu dCwgdGhhdCB1c2Vyc3BhY2UKKwkJICogaGFzIG5vdCB5ZXQgZGlzY292ZXJlZC4KKwkJICovCisJ CXJldCA9IC1FQlVTWTsKKwkJZ290byBvdXQ7CisJfQorCWNydGMgPSBwbGFuZS0+Y3J0YzsKKwor CWlmICgoaXNfcHJpbWFyeSAmJiBjcnRjLT5mdW5jcy0+cGFnZV9mbGlwID09IE5VTEwpIHx8CisJ ICAgIHBsYW5lLT5mdW5jcy0+cGFnZV9mbGlwID09IE5VTEwpIHsKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZ290byBvdXQ7CisJfQorCisJZmIgPSBkcm1fZnJhbWVidWZmZXJfbG9va3VwKGRldiwgcGFn ZV9mbGlwLT5mYl9pZCk7CisJaWYgKCFmYikgeworCQlyZXQgPSAtRU5PRU5UOworCQlnb3RvIG91 dDsKKwl9CisKKwkvKgorCSAqIElmIHRoaXMgaXMgdGhlIHByaW1hcnkgcGxhbmUgKGVxdWl2YWxl bnQgdG8gYSBjcnRjIHBhZ2UgZmxpcCksCisJICogdmVyaWZ5IHRoYXQgdGhlIGZiIGlzIHZhbGlk IGZvciB0aGUgYm91bmQgY3J0YydzIHZpZXdwb3J0LgorCSAqIEZvciBvdmVybGF5IG9yIGN1cnNv ciBwbGFuZXMsIHRoZSBwbGFuZSdzIHBhZ2VfZmxpcCBvcCBzaG91bGQKKwkgKiBjaGVjayB0aGF0 IHRoZSBmYiBpcyB2YWxpZC4KKwkgKi8KKwlpZiAoaXNfcHJpbWFyeSkgeworCQlyZXQgPSBkcm1f Y3J0Y19jaGVja192aWV3cG9ydChjcnRjLCBjcnRjLT54LCBjcnRjLT55LAorCQkJCQkgICAgICAm Y3J0Yy0+bW9kZSwgZmIpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJfQorCisJaWYgKHBs YW5lLT5mYi0+cGl4ZWxfZm9ybWF0ICE9IGZiLT5waXhlbF9mb3JtYXQpIHsKKwkJRFJNX0RFQlVH X0tNUygiUGFnZSBmbGlwIGlzIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSBmcmFtZSBidWZmZXIgZm9y bWF0LlxuIik7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChwYWdl X2ZsaXAtPmZsYWdzICYgRFJNX01PREVfUEFHRV9GTElQX0VWRU5UKSB7CisJCXJldCA9IC1FTk9N RU07CisJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwkJaWYg KGZpbGVfcHJpdi0+ZXZlbnRfc3BhY2UgPCBzaXplb2YoZS0+ZXZlbnQpKSB7CisJCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwkJCWdvdG8gb3V0Owor CQl9CisJCWZpbGVfcHJpdi0+ZXZlbnRfc3BhY2UgLT0gc2l6ZW9mKGUtPmV2ZW50KTsKKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CisKKwkJZSA9IGt6 YWxsb2Moc2l6ZW9mKCplKSwgR0ZQX0tFUk5FTCk7CisJCWlmIChlID09IE5VTEwpIHsKKwkJCXNw aW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwkJCWZpbGVfcHJpdi0+ ZXZlbnRfc3BhY2UgKz0gc2l6ZW9mKGUtPmV2ZW50KTsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCQkJZ290byBvdXQ7CisJCX0KKworCQllLT5l dmVudC5iYXNlLnR5cGUgPSBEUk1fRVZFTlRfRkxJUF9DT01QTEVURTsKKwkJZS0+ZXZlbnQuYmFz ZS5sZW5ndGggPSBzaXplb2YoZS0+ZXZlbnQpOworCQllLT5ldmVudC51c2VyX2RhdGEgPSBwYWdl X2ZsaXAtPnVzZXJfZGF0YTsKKwkJZS0+YmFzZS5ldmVudCA9ICZlLT5ldmVudC5iYXNlOworCQll LT5iYXNlLmZpbGVfcHJpdiA9IGZpbGVfcHJpdjsKKwkJZS0+YmFzZS5kZXN0cm95ID0KKwkJCSh2 b2lkICgqKSAoc3RydWN0IGRybV9wZW5kaW5nX2V2ZW50ICopKSBrZnJlZTsKKwl9CisKKwlwbGFu ZS0+b2xkX2ZiID0gcGxhbmUtPmZiOworCisJLyogZm9yIG5vdyB1c2UgY3J0YyBwYWdlX2ZsaXAg b3AsIGlmIHRoaXMgaXMgdGhlIHByaW1hcnkgcGxhbmUgKi8KKwlpZiAoaXNfcHJpbWFyeSkKKwkJ cmV0ID0gY3J0Yy0+ZnVuY3MtPnBhZ2VfZmxpcChjcnRjLCBmYiwgZSwgcGFnZV9mbGlwLT5mbGFn cyk7CisJZWxzZQorCQlyZXQgPSBwbGFuZS0+ZnVuY3MtPnBhZ2VfZmxpcChwbGFuZSwgZmIsIGUs IHBhZ2VfZmxpcC0+ZmxhZ3MpOworCisJaWYgKHJldCkgeworCQlpZiAocGFnZV9mbGlwLT5mbGFn cyAmIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCkgeworCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmRl di0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCQkJZmlsZV9wcml2LT5ldmVudF9zcGFjZSArPSBzaXpl b2YoZS0+ZXZlbnQpOworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2Nr LCBmbGFncyk7CisJCQlrZnJlZShlKTsKKwkJfQorCQkvKiBLZWVwIHRoZSBvbGQgZmIsIGRvbid0 IHVucmVmIGl0LiAqLworCQlwbGFuZS0+b2xkX2ZiID0gTlVMTDsKKwl9IGVsc2UgeworCQkvKgor CQkgKiBXYXJuIGlmIHRoZSBkcml2ZXIgaGFzbid0IHByb3Blcmx5IHVwZGF0ZWQgdGhlIHBsYW5l LT5mYgorCQkgKiBmaWVsZCB0byByZWZsZWN0IHRoYXQgdGhlIG5ldyBmcmFtZWJ1ZmZlciBpcyBu b3cgdXNlZC4KKwkJICogRmFpbGluZyB0byBkbyBzbyB3aWxsIHNjcmV3IHdpdGggdGhlIHJlZmVy ZW5jZSBjb3VudGluZworCQkgKiBvbiBmcmFtZWJ1ZmZlcnMuCisJCSAqLworCQlXQVJOX09OKHBs YW5lLT5mYiAhPSBmYik7CisJCS8qIFVucmVmIG9ubHkgdGhlIG9sZCBmcmFtZWJ1ZmZlci4gKi8K KwkJZmIgPSBOVUxMOworCX0KKworb3V0OgorCWlmIChmYikKKwkJZHJtX2ZyYW1lYnVmZmVyX3Vu cmVmZXJlbmNlKGZiKTsKKwlpZiAocGxhbmUtPm9sZF9mYikKKwkJZHJtX2ZyYW1lYnVmZmVyX3Vu cmVmZXJlbmNlKHBsYW5lLT5vbGRfZmIpOworCXBsYW5lLT5vbGRfZmIgPSBOVUxMOworCWRybV9t b2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKIC8qKgogICogZHJt X21vZGVfc2V0X2NvbmZpZ19pbnRlcm5hbCAtIGhlbHBlciB0byBjYWxsIC0+c2V0X2NvbmZpZwog ICogQHNldDogbW9kZXNldCBjb25maWcgdG8gc2V0CkBAIC00NTgyLDExMSArNDcxOCwyMCBAQCBp bnQgZHJtX21vZGVfcGFnZV9mbGlwX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkg ICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCBk cm1fbW9kZV9jcnRjX3BhZ2VfZmxpcCAqcGFnZV9mbGlwID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX21v ZGVfcGxhbmVfcGFnZV9mbGlwIHByaW1hcnlfcGYgPSB7MH07CiAJc3RydWN0IGRybV9jcnRjICpj cnRjOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX3Bl bmRpbmdfdmJsYW5rX2V2ZW50ICplID0gTlVMTDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWlu dCByZXQgPSAtRUlOVkFMOwotCi0JaWYgKHBhZ2VfZmxpcC0+ZmxhZ3MgJiB+RFJNX01PREVfUEFH RV9GTElQX0ZMQUdTIHx8Ci0JICAgIHBhZ2VfZmxpcC0+cmVzZXJ2ZWQgIT0gMCkKLQkJcmV0dXJu IC1FSU5WQUw7Ci0KLQlpZiAoKHBhZ2VfZmxpcC0+ZmxhZ3MgJiBEUk1fTU9ERV9QQUdFX0ZMSVBf QVNZTkMpICYmICFkZXYtPm1vZGVfY29uZmlnLmFzeW5jX3BhZ2VfZmxpcCkKLQkJcmV0dXJuIC1F SU5WQUw7CiAKIAljcnRjID0gZHJtX2NydGNfZmluZChkZXYsIHBhZ2VfZmxpcC0+Y3J0Y19pZCk7 CiAJaWYgKCFjcnRjKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWRybV9tb2Rlc2V0X2xvY2tfY3J0 YyhjcnRjKTsKLQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIgPT0gTlVMTCkgewotCQkvKiBUaGUgZnJh bWVidWZmZXIgaXMgY3VycmVudGx5IHVuYm91bmQsIHByZXN1bWFibHkKLQkJICogZHVlIHRvIGEg aG90cGx1ZyBldmVudCwgdGhhdCB1c2Vyc3BhY2UgaGFzIG5vdAotCQkgKiB5ZXQgZGlzY292ZXJl ZC4KLQkJICovCi0JCXJldCA9IC1FQlVTWTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JaWYgKGNydGMt PmZ1bmNzLT5wYWdlX2ZsaXAgPT0gTlVMTCkKLQkJZ290byBvdXQ7Ci0KLQlmYiA9IGRybV9mcmFt ZWJ1ZmZlcl9sb29rdXAoZGV2LCBwYWdlX2ZsaXAtPmZiX2lkKTsKLQlpZiAoIWZiKSB7Ci0JCXJl dCA9IC1FTk9FTlQ7Ci0JCWdvdG8gb3V0OwotCX0KLQotCXJldCA9IGRybV9jcnRjX2NoZWNrX3Zp ZXdwb3J0KGNydGMsIGNydGMtPngsIGNydGMtPnksICZjcnRjLT5tb2RlLCBmYik7Ci0JaWYgKHJl dCkKLQkJZ290byBvdXQ7Ci0KLQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmItPnBpeGVsX2Zvcm1hdCAh PSBmYi0+cGl4ZWxfZm9ybWF0KSB7Ci0JCURSTV9ERUJVR19LTVMoIlBhZ2UgZmxpcCBpcyBub3Qg YWxsb3dlZCB0byBjaGFuZ2UgZnJhbWUgYnVmZmVyIGZvcm1hdC5cbiIpOwotCQlyZXQgPSAtRUlO VkFMOwotCQlnb3RvIG91dDsKLQl9Ci0KLQlpZiAocGFnZV9mbGlwLT5mbGFncyAmIERSTV9NT0RF X1BBR0VfRkxJUF9FVkVOVCkgewotCQlyZXQgPSAtRU5PTUVNOwotCQlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Ci0JCWlmIChmaWxlX3ByaXYtPmV2ZW50X3NwYWNl IDwgc2l6ZW9mIGUtPmV2ZW50KSB7Ci0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2 ZW50X2xvY2ssIGZsYWdzKTsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JCWZpbGVfcHJpdi0+ZXZlbnRf c3BhY2UgLT0gc2l6ZW9mIGUtPmV2ZW50OwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYt PmV2ZW50X2xvY2ssIGZsYWdzKTsKLQotCQllID0ga3phbGxvYyhzaXplb2YgKmUsIEdGUF9LRVJO RUwpOwotCQlpZiAoZSA9PSBOVUxMKSB7Ci0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVu dF9sb2NrLCBmbGFncyk7Ci0JCQlmaWxlX3ByaXYtPmV2ZW50X3NwYWNlICs9IHNpemVvZiBlLT5l dmVudDsKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3Mp OwotCQkJZ290byBvdXQ7Ci0JCX0KLQotCQllLT5ldmVudC5iYXNlLnR5cGUgPSBEUk1fRVZFTlRf RkxJUF9DT01QTEVURTsKLQkJZS0+ZXZlbnQuYmFzZS5sZW5ndGggPSBzaXplb2YgZS0+ZXZlbnQ7 Ci0JCWUtPmV2ZW50LnVzZXJfZGF0YSA9IHBhZ2VfZmxpcC0+dXNlcl9kYXRhOwotCQllLT5iYXNl LmV2ZW50ID0gJmUtPmV2ZW50LmJhc2U7Ci0JCWUtPmJhc2UuZmlsZV9wcml2ID0gZmlsZV9wcml2 OwotCQllLT5iYXNlLmRlc3Ryb3kgPQotCQkJKHZvaWQgKCopIChzdHJ1Y3QgZHJtX3BlbmRpbmdf ZXZlbnQgKikpIGtmcmVlOwotCX0KLQotCWNydGMtPnByaW1hcnktPm9sZF9mYiA9IGNydGMtPnBy aW1hcnktPmZiOwotCXJldCA9IGNydGMtPmZ1bmNzLT5wYWdlX2ZsaXAoY3J0YywgZmIsIGUsIHBh Z2VfZmxpcC0+ZmxhZ3MpOwotCWlmIChyZXQpIHsKLQkJaWYgKHBhZ2VfZmxpcC0+ZmxhZ3MgJiBE Uk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpIHsKLQkJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2 ZW50X2xvY2ssIGZsYWdzKTsKLQkJCWZpbGVfcHJpdi0+ZXZlbnRfc3BhY2UgKz0gc2l6ZW9mIGUt PmV2ZW50OwotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFn cyk7Ci0JCQlrZnJlZShlKTsKLQkJfQotCQkvKiBLZWVwIHRoZSBvbGQgZmIsIGRvbid0IHVucmVm IGl0LiAqLwotCQljcnRjLT5wcmltYXJ5LT5vbGRfZmIgPSBOVUxMOwotCX0gZWxzZSB7Ci0JCS8q Ci0JCSAqIFdhcm4gaWYgdGhlIGRyaXZlciBoYXNuJ3QgcHJvcGVybHkgdXBkYXRlZCB0aGUgY3J0 Yy0+ZmIKLQkJICogZmllbGQgdG8gcmVmbGVjdCB0aGF0IHRoZSBuZXcgZnJhbWVidWZmZXIgaXMg bm93IHVzZWQuCi0JCSAqIEZhaWxpbmcgdG8gZG8gc28gd2lsbCBzY3JldyB3aXRoIHRoZSByZWZl cmVuY2UgY291bnRpbmcKLQkJICogb24gZnJhbWVidWZmZXJzLgotCQkgKi8KLQkJV0FSTl9PTihj cnRjLT5wcmltYXJ5LT5mYiAhPSBmYik7Ci0JCS8qIFVucmVmIG9ubHkgdGhlIG9sZCBmcmFtZWJ1 ZmZlci4gKi8KLQkJZmIgPSBOVUxMOwotCX0KKwlwcmltYXJ5X3BmLnBsYW5lX2lkICA9IGNydGMt PnByaW1hcnktPmJhc2UuaWQ7CisJcHJpbWFyeV9wZi5mYl9pZCAgICAgPSBwYWdlX2ZsaXAtPmZi X2lkOworCXByaW1hcnlfcGYuZmxhZ3MgICAgID0gcGFnZV9mbGlwLT5mbGFnczsKKwlwcmltYXJ5 X3BmLnVzZXJfZGF0YSA9IHBhZ2VfZmxpcC0+dXNlcl9kYXRhOwogCi1vdXQ6Ci0JaWYgKGZiKQot CQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoZmIpOwotCWlmIChjcnRjLT5wcmltYXJ5LT5v bGRfZmIpCi0JCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShjcnRjLT5wcmltYXJ5LT5vbGRf ZmIpOwotCWNydGMtPnByaW1hcnktPm9sZF9mYiA9IE5VTEw7Ci0JZHJtX21vZGVzZXRfdW5sb2Nr X2NydGMoY3J0Yyk7Ci0KLQlyZXR1cm4gcmV0OworCXJldHVybiBkcm1fbW9kZV9wbGFuZV9wYWdl X2ZsaXBfaW9jdGwoZGV2LCAodm9pZCAqKSZwcmltYXJ5X3BmLAorCQkJCQkgICAgICBmaWxlX3By aXYpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwppbmRleCAwMDU4N2ExLi4yZTYwZWUzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9pb2N0bC5jCkBAIC02MjAsNiArNjIwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9E RV9PQkpfR0VUUFJPUEVSVElFUywgZHJtX21vZGVfb2JqX2dldF9wcm9wZXJ0aWVzX2lvY3RsLCBE Uk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RM X01PREVfT0JKX1NFVFBST1BFUlRZLCBkcm1fbW9kZV9vYmpfc2V0X3Byb3BlcnR5X2lvY3RsLCBE Uk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RF RihEUk1fSU9DVExfTU9ERV9DVVJTT1IyLCBkcm1fbW9kZV9jdXJzb3IyX2lvY3RsLCBEUk1fTUFT VEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCisJRFJNX0lPQ1RMX0RFRihEUk1f SU9DVExfTU9ERV9QTEFORV9QQUdFX0ZMSVAsIGRybV9tb2RlX3BsYW5lX3BhZ2VfZmxpcF9pb2N0 bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogfTsKIAogI2Rl ZmluZSBEUk1fQ09SRV9JT0NUTF9DT1VOVAlBUlJBWV9TSVpFKCBkcm1faW9jdGxzICkKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmlu ZGV4IGM0MDA3MGEuLjI2ZDg1OWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgK KysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaApAQCAtNTcxLDYgKzU3MSw3IEBAIHN0cnVjdCBk cm1fY29ubmVjdG9yIHsKICAqIEBkaXNhYmxlX3BsYW5lOiBzaHV0IGRvd24gdGhlIHBsYW5lCiAg KiBAZGVzdHJveTogY2xlYW4gdXAgcGxhbmUgcmVzb3VyY2VzCiAgKiBAc2V0X3Byb3BlcnR5OiBj YWxsZWQgd2hlbiBhIHByb3BlcnR5IGlzIGNoYW5nZWQKKyAqIEBwYWdlX2ZsaXA6IGluaXRpYXRl IGEgcGFnZSBmbGlwCiAgKi8KIHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgewogCWludCAoKnVwZGF0 ZV9wbGFuZSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCkBAIC01ODUsNiArNTg2LDE0IEBAIHN0 cnVjdCBkcm1fcGxhbmVfZnVuY3MgewogCiAJaW50ICgqc2V0X3Byb3BlcnR5KShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwgdWlu dDY0X3QgdmFsKTsKKworCS8qCisJICogU2VlIGNvbW1lbnQgYXQgZHJtX2NydGNfZnVuY3MucGFn ZV9mbGlwCisJICovCisJaW50ICgqcGFnZV9mbGlwKShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK KwkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSBzdHJ1Y3QgZHJtX3BlbmRpbmdf dmJsYW5rX2V2ZW50ICpldmVudCwKKwkJCSB1aW50MzJfdCBmbGFncyk7CiB9OwogCiBlbnVtIGRy bV9wbGFuZV90eXBlIHsKQEAgLTExMDUsNiArMTExNCw4IEBAIGV4dGVybiBib29sIGRybV9kZXRl Y3RfbW9uaXRvcl9hdWRpbyhzdHJ1Y3QgZWRpZCAqZWRpZCk7CiBleHRlcm4gYm9vbCBkcm1fcmdi X3F1YW50X3JhbmdlX3NlbGVjdGFibGUoc3RydWN0IGVkaWQgKmVkaWQpOwogZXh0ZXJuIGludCBk cm1fbW9kZV9wYWdlX2ZsaXBfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAg dm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworZXh0ZXJuIGludCBkcm1f bW9kZV9wbGFuZV9wYWdlX2ZsaXBfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkg ICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCBk cm1fYWRkX21vZGVzX25vZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJ CWludCBoZGlzcGxheSwgaW50IHZkaXNwbGF5KTsKIGV4dGVybiB2b2lkIGRybV9zZXRfcHJlZmVy cmVkX21vZGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCmluZGV4IGIwYjg1 NTYuLjQ4ZDlkYTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIvaW5j bHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzc3LDYgKzc3Nyw3IEBAIHN0cnVjdCBkcm1fcHJpbWVf aGFuZGxlIHsKICNkZWZpbmUgRFJNX0lPQ1RMX01PREVfT0JKX0dFVFBST1BFUlRJRVMJRFJNX0lP V1IoMHhCOSwgc3RydWN0IGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllcykKICNkZWZpbmUgRFJN X0lPQ1RMX01PREVfT0JKX1NFVFBST1BFUlRZCURSTV9JT1dSKDB4QkEsIHN0cnVjdCBkcm1fbW9k ZV9vYmpfc2V0X3Byb3BlcnR5KQogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9DVVJTT1IyCQlEUk1f SU9XUigweEJCLCBzdHJ1Y3QgZHJtX21vZGVfY3Vyc29yMikKKyNkZWZpbmUgRFJNX0lPQ1RMX01P REVfUExBTkVfUEFHRV9GTElQCURSTV9JT1dSKDB4QkMsIHN0cnVjdCBkcm1fbW9kZV9wbGFuZV9w YWdlX2ZsaXApCiAKIC8qKgogICogRGV2aWNlIHNwZWNpZmljIGlvY3RscyBzaG91bGQgb25seSBi ZSBpbiB0aGVpciByZXNwZWN0aXZlIGhlYWRlcnMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAppbmRleCBhMGRiMmQ0 YS4uOGQ5OGNkMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaApAQCAtNDg4LDYgKzQ4OCwxNCBAQCBzdHJ1Y3Qg ZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXAgewogCV9fdTY0IHVzZXJfZGF0YTsKIH07CiAKK3N0cnVj dCBkcm1fbW9kZV9wbGFuZV9wYWdlX2ZsaXAgeworCV9fdTMyIHBsYW5lX2lkOworCV9fdTMyIGZi X2lkOworCV9fdTMyIGZsYWdzOworCV9fdTMyIHJlc2VydmVkOworCV9fdTY0IHVzZXJfZGF0YTsK K307CisKIC8qIGNyZWF0ZSBhIGR1bWIgc2Nhbm91dCBidWZmZXIgKi8KIHN0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfZHVtYiB7CiAJdWludDMyX3QgaGVpZ2h0OwotLSAKMS43LjkuNQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK