From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 5/5] drm/radeon: rework page flip handling v3 Date: Tue, 27 May 2014 16:49:22 +0200 Message-ID: <1401202162-1925-5-git-send-email-deathsimple@vodafone.de> References: <1401202162-1925-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id 3F11E6E6FE for ; Tue, 27 May 2014 07:49:38 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id AE83E2613ED for ; Tue, 27 May 2014 16:49:37 +0200 (CEST) Received: from pegasos-out.vodafone.de ([127.0.0.1]) by localhost (rohrpostix1.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z-38xEP+sGK2 for ; Tue, 27 May 2014 16:49:32 +0200 (CEST) Received: from smtp-03.vodafone.de (smtp-03.vodafone.de [10.215.254.38]) by pegasos-out.vodafone.de (Rohrpostix1 Daemon) with ESMTP id 238F62613EE for ; Tue, 27 May 2014 16:49:32 +0200 (CEST) Received: from smtp-03.vodafone.de ([127.0.0.1]) by localhost (xsmail-dmz7.prod.vfnet.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Wd9LAkJSJaKr for ; Tue, 27 May 2014 16:49:25 +0200 (CEST) In-Reply-To: <1401202162-1925-1-git-send-email-deathsimple@vodafone.de> 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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKSW5zdGVh ZCBvZiB0cnlpbmcgdG8gZmxpcCBpbnNpZGUgdGhlIHZibGFuayBwZXJpb2Qgd2hlbgp0aGUgYnVm ZmVyIGlzIGlkbGUsIG9mZmxvYWQgYmxvY2tpbmcgZm9yIGlkbGUgdG8gYSBrZXJuZWwKdGhyZWFk IGFuZCBwcm9ncmFtIHRoZSBmbGlwIGRpcmVjdGx5IGludG8gdGhlIGhhcmR3YXJlLgoKdjI6IGFk ZCBlcnJvciBoYW5kbGluZywgZml4IEVCVVNZIGhhbmRsaW5nCnYzOiBhZGQgcHJvcGVyIGV4Y2x1 c2l2ZV9sb2NrIGhhbmRsaW5nCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJp c3RpYW4ua29lbmlnQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24u aCAgICAgICAgIHwgIDE2ICsrLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxh eS5jIHwgMjQ1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9tb2RlLmggICAgfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTUw IGluc2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbi5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApp bmRleCA0YWUzMDRkLi43MzZiZmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY3Niwx NCArNjc2LDE2IEBAIHZvaWQgcmFkZW9uX2Rvb3JiZWxsX2ZyZWUoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIHUzMiBkb29yYmVsbCk7CiAgKiBJUlFTLgogICovCiAKLXN0cnVjdCByYWRlb25f dW5waW5fd29yayB7Ci0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Ci0Jc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXY7Ci0JaW50IGNydGNfaWQ7Ci0Jc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2U7 CitzdHJ1Y3QgcmFkZW9uX2ZsaXBfd29yayB7CisJc3RydWN0IHdvcmtfc3RydWN0CQlmbGlwX3dv cms7CisJc3RydWN0IHdvcmtfc3RydWN0CQl1bnBpbl93b3JrOworCXN0cnVjdCByYWRlb25fZGV2 aWNlCQkqcmRldjsKKwlpbnQJCQkJY3J0Y19pZDsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyCQkq ZmI7CiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Ci0Jc3RydWN0IHJh ZGVvbl9ibyAqb2xkX3JibzsKLQl1NjQgbmV3X2NydGNfYmFzZTsKKwlzdHJ1Y3QgcmFkZW9uX2Jv CQkqb2xkX3JibzsKKwlzdHJ1Y3QgcmFkZW9uX2JvCQkqbmV3X3JibzsKKwlzdHJ1Y3QgcmFkZW9u X2ZlbmNlCQkqZmVuY2U7CiB9OwogCiBzdHJ1Y3QgcjUwMF9pcnFfc3RhdF9yZWdzIHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYwppbmRleCA4OGUzY2JlLi42YjNkZTVjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxheS5jCkBAIC0yNDksMTYgKzI0OSwy MSBAQCBzdGF0aWMgdm9pZCByYWRlb25fY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIAlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFkZW9uX2NydGMoY3J0 Yyk7CiAKIAlkcm1fY3J0Y19jbGVhbnVwKGNydGMpOworCWRlc3Ryb3lfd29ya3F1ZXVlKHJhZGVv bl9jcnRjLT5mbGlwX3F1ZXVlKTsKIAlrZnJlZShyYWRlb25fY3J0Yyk7CiB9CiAKLS8qCi0gKiBI YW5kbGUgdW5waW4gZXZlbnRzIG91dHNpZGUgdGhlIGludGVycnVwdCBoYW5kbGVyIHByb3Blci4K Ky8qKgorICogcmFkZW9uX3VucGluX3dvcmtfZnVuYyAtIHVucGluIG9sZCBidWZmZXIgb2JqZWN0 CisgKgorICogQF9fd29yayAtIGtlcm5lbCB3b3JrIGl0ZW0KKyAqCisgKiBVbnBpbiB0aGUgb2xk IGZyYW1lIGJ1ZmZlciBvYmplY3Qgb3V0c2lkZSBvZiB0aGUgaW50ZXJydXB0IGhhbmRsZXIKICAq Lwogc3RhdGljIHZvaWQgcmFkZW9uX3VucGluX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg Kl9fd29yaykKIHsKLQlzdHJ1Y3QgcmFkZW9uX3VucGluX3dvcmsgKndvcmsgPQotCQljb250YWlu ZXJfb2YoX193b3JrLCBzdHJ1Y3QgcmFkZW9uX3VucGluX3dvcmssIHdvcmspOworCXN0cnVjdCBy YWRlb25fZmxpcF93b3JrICp3b3JrID0KKwkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IHJh ZGVvbl9mbGlwX3dvcmssIHVucGluX3dvcmspOwogCWludCByOwogCiAJLyogdW5waW4gb2YgdGhl IG9sZCBidWZmZXIgKi8KQEAgLTI3OSwzMCArMjg0LDE5IEBAIHN0YXRpYyB2b2lkIHJhZGVvbl91 bnBpbl93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiB2b2lkIHJhZGVvbl9j cnRjX2hhbmRsZV92Ymxhbmsoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjX2lk KQogewogCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2luZm8u Y3J0Y3NbY3J0Y19pZF07Ci0Jc3RydWN0IHJhZGVvbl91bnBpbl93b3JrICp3b3JrOworCXN0cnVj dCByYWRlb25fZmxpcF93b3JrICp3b3JrOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMyIHVw ZGF0ZV9wZW5kaW5nOwogCWludCB2cG9zLCBocG9zOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnJk ZXYtPmRkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQl3b3JrID0gcmFkZW9uX2NydGMtPnVucGlu X3dvcms7Ci0JaWYgKHdvcmsgPT0gTlVMTCB8fAotCSAgICAod29yay0+ZmVuY2UgJiYgIXJhZGVv bl9mZW5jZV9zaWduYWxlZCh3b3JrLT5mZW5jZSkpKSB7CisJd29yayA9IHJhZGVvbl9jcnRjLT5m bGlwX3dvcms7CisJaWYgKHdvcmsgPT0gTlVMTCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZyZGV2LT5kZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9Ci0JLyogTmV3 IHBhZ2VmbGlwLCBvciBqdXN0IGNvbXBsZXRpb24gb2YgYSBwcmV2aW91cyBvbmU/ICovCi0JaWYg KCFyYWRlb25fY3J0Yy0+ZGVmZXJyZWRfZmxpcF9jb21wbGV0aW9uKSB7Ci0JCS8qIGRvIHRoZSBm bGlwIChtbWlvKSAqLwotCQlyYWRlb25fcGFnZV9mbGlwKHJkZXYsIGNydGNfaWQsIHdvcmstPm5l d19jcnRjX2Jhc2UpOwotCQl1cGRhdGVfcGVuZGluZyA9IHJhZGVvbl9wYWdlX2ZsaXBfcGVuZGlu ZyhyZGV2LCBjcnRjX2lkKTsKLQl9IGVsc2UgewotCQkvKiBUaGlzIGlzIGp1c3QgYSBjb21wbGV0 aW9uIG9mIGEgZmxpcCBxdWV1ZWQgaW4gY3J0YwotCQkgKiBhdCBsYXN0IGludm9jYXRpb24uIE1h a2Ugc3VyZSB3ZSBnbyBkaXJlY3RseSB0bwotCQkgKiBjb21wbGV0aW9uIHJvdXRpbmUuCi0JCSAq LwotCQl1cGRhdGVfcGVuZGluZyA9IDA7Ci0JfQorCisJdXBkYXRlX3BlbmRpbmcgPSByYWRlb25f cGFnZV9mbGlwX3BlbmRpbmcocmRldiwgY3J0Y19pZCk7CiAKIAkvKiBIYXMgdGhlIHBhZ2VmbGlw IGFscmVhZHkgY29tcGxldGVkIGluIGNydGMsIG9yIGlzIGl0IGNlcnRhaW4KIAkgKiB0byBjb21w bGV0ZSBpbiB0aGlzIHZibGFuaz8KQEAgLTMyMCwxOSArMzE0LDkgQEAgdm9pZCByYWRlb25fY3J0 Y19oYW5kbGVfdmJsYW5rKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCkK IAkJICovCiAJCXVwZGF0ZV9wZW5kaW5nID0gMDsKIAl9Ci0JaWYgKHVwZGF0ZV9wZW5kaW5nKSB7 Ci0JCS8qIGNydGMgZGlkbid0IGZsaXAgaW4gdGhpcyB0YXJnZXQgdmJsYW5rIGludGVydmFsLAot CQkgKiBidXQgZmxpcCBpcyBwZW5kaW5nIGluIGNydGMuIEl0IHdpbGwgY29tcGxldGUgaXQKLQkJ ICogaW4gbmV4dCB2YmxhbmsgaW50ZXJ2YWwsIHNvIGNvbXBsZXRlIHRoZSBmbGlwIGF0Ci0JCSAq IG5leHQgdmJsYW5rIGlycS4KLQkJICovCi0JCXJhZGVvbl9jcnRjLT5kZWZlcnJlZF9mbGlwX2Nv bXBsZXRpb24gPSAxOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5kZGV2LT5ldmVu dF9sb2NrLCBmbGFncyk7Ci0JCXJldHVybjsKLQl9IGVsc2UgewotCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZyZGV2LT5kZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcmRldi0+ZGRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCWlmICghdXBkYXRlX3Bl bmRpbmcpCiAJCXJhZGVvbl9jcnRjX2hhbmRsZV9mbGlwKHJkZXYsIGNydGNfaWQpOwotCX0KIH0K IAogLyoqCkBAIC0zNDYsNyArMzMwLDcgQEAgdm9pZCByYWRlb25fY3J0Y19oYW5kbGVfdmJsYW5r KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgY3J0Y19pZCkKIHZvaWQgcmFkZW9uX2Ny dGNfaGFuZGxlX2ZsaXAoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjX2lkKQog ewogCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2RlX2luZm8uY3J0 Y3NbY3J0Y19pZF07Ci0Jc3RydWN0IHJhZGVvbl91bnBpbl93b3JrICp3b3JrOworCXN0cnVjdCBy YWRlb25fZmxpcF93b3JrICp3b3JrOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAkvKiB0aGlz IGNhbiBoYXBwZW4gYXQgaW5pdCAqLwpAQCAtMzU0LDE1ICszMzgsMTQgQEAgdm9pZCByYWRlb25f Y3J0Y19oYW5kbGVfZmxpcChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGNydGNfaWQp CiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZyZGV2LT5kZGV2LT5ldmVudF9sb2Nr LCBmbGFncyk7Ci0Jd29yayA9IHJhZGVvbl9jcnRjLT51bnBpbl93b3JrOworCXdvcmsgPSByYWRl b25fY3J0Yy0+ZmxpcF93b3JrOwogCWlmICh3b3JrID09IE5VTEwpIHsKIAkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcmRldi0+ZGRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwogCQlyZXR1cm47CiAJ fQogCi0JLyogUGFnZWZsaXAgKHdpbGwgYmUpIGNlcnRhaW5seSBjb21wbGV0ZWQgaW4gdGhpcyB2 YmxhbmsuIENsZWFuIHVwLiAqLwotCXJhZGVvbl9jcnRjLT51bnBpbl93b3JrID0gTlVMTDsKLQly YWRlb25fY3J0Yy0+ZGVmZXJyZWRfZmxpcF9jb21wbGV0aW9uID0gMDsKKwkvKiBQYWdlZmxpcCBj b21wbGV0ZWQuIENsZWFuIHVwLiAqLworCXJhZGVvbl9jcnRjLT5mbGlwX3dvcmsgPSBOVUxMOwog CiAJLyogd2FrZXVwIHVzZXJzcGFjZSAqLwogCWlmICh3b3JrLT5ldmVudCkKQEAgLTM3Miw4MyAr MzU1LDY5IEBAIHZvaWQgcmFkZW9uX2NydGNfaGFuZGxlX2ZsaXAoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIGludCBjcnRjX2lkKQogCiAJcmFkZW9uX2ZlbmNlX3VucmVmKCZ3b3JrLT5mZW5j ZSk7CiAJcmFkZW9uX2lycV9rbXNfcGZsaXBfaXJxX2dldChyZGV2LCB3b3JrLT5jcnRjX2lkKTsK LQlzY2hlZHVsZV93b3JrKCZ3b3JrLT53b3JrKTsKKwlxdWV1ZV93b3JrKHJhZGVvbl9jcnRjLT5m bGlwX3F1ZXVlLCAmd29yay0+dW5waW5fd29yayk7CiB9CiAKLXN0YXRpYyBpbnQgcmFkZW9uX2Ny dGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCi0JCQkJIHN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50 LAotCQkJCSB1aW50MzJfdCBwYWdlX2ZsaXBfZmxhZ3MpCisvKioKKyAqIHJhZGVvbl9mbGlwX3dv cmtfZnVuYyAtIHBhZ2UgZmxpcCBmcmFtZWJ1ZmZlcgorICoKKyAqIEB3b3JrIC0ga2VybmVsIHdv cmsgaXRlbQorICoKKyAqIFdhaXQgZm9yIHRoZSBidWZmZXIgb2JqZWN0IHRvIGJlY29tZSBpZGxl IGFuZCBkbyB0aGUgYWN0dWFsIHBhZ2UgZmxpcAorICovCitzdGF0aWMgdm9pZCByYWRlb25fZmxp cF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IGRl di0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IHJhZGVvbl9jcnRjICpyYWRlb25fY3J0YyA9IHRvX3Jh ZGVvbl9jcnRjKGNydGMpOwotCXN0cnVjdCByYWRlb25fZnJhbWVidWZmZXIgKm9sZF9yYWRlb25f ZmI7Ci0Jc3RydWN0IHJhZGVvbl9mcmFtZWJ1ZmZlciAqbmV3X3JhZGVvbl9mYjsKLQlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgcmFkZW9uX2JvICpyYm87Ci0Jc3RydWN0IHJh ZGVvbl91bnBpbl93b3JrICp3b3JrOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdTMyIHRpbGlu Z19mbGFncywgcGl0Y2hfcGl4ZWxzOwotCXU2NCBiYXNlOwotCWludCByOworCXN0cnVjdCByYWRl b25fZmxpcF93b3JrICp3b3JrID0KKwkJY29udGFpbmVyX29mKF9fd29yaywgc3RydWN0IHJhZGVv bl9mbGlwX3dvcmssIGZsaXBfd29yayk7CisJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSB3 b3JrLT5yZGV2OworCXN0cnVjdCByYWRlb25fY3J0YyAqcmFkZW9uX2NydGMgPSByZGV2LT5tb2Rl X2luZm8uY3J0Y3Nbd29yay0+Y3J0Y19pZF07CiAKLQl3b3JrID0ga3phbGxvYyhzaXplb2YgKndv cmssIEdGUF9LRVJORUwpOwotCWlmICh3b3JrID09IE5VTEwpCi0JCXJldHVybiAtRU5PTUVNOwor CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZyYWRlb25fY3J0Yy0+YmFzZTsKKwlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHdvcmstPmZiOwogCi0Jd29yay0+ZXZlbnQgPSBldmVudDsKLQl3 b3JrLT5yZGV2ID0gcmRldjsKLQl3b3JrLT5jcnRjX2lkID0gcmFkZW9uX2NydGMtPmNydGNfaWQ7 Ci0Jb2xkX3JhZGVvbl9mYiA9IHRvX3JhZGVvbl9mcmFtZWJ1ZmZlcihjcnRjLT5wcmltYXJ5LT5m Yik7Ci0JbmV3X3JhZGVvbl9mYiA9IHRvX3JhZGVvbl9mcmFtZWJ1ZmZlcihmYik7Ci0JLyogc2No ZWR1bGUgdW5waW4gb2YgdGhlIG9sZCBidWZmZXIgKi8KLQlvYmogPSBvbGRfcmFkZW9uX2ZiLT5v Ymo7Ci0JLyogdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIG9iamVjdCAqLwotCWRybV9nZW1f b2JqZWN0X3JlZmVyZW5jZShvYmopOwotCXJibyA9IGdlbV90b19yYWRlb25fYm8ob2JqKTsKLQl3 b3JrLT5vbGRfcmJvID0gcmJvOwotCW9iaiA9IG5ld19yYWRlb25fZmItPm9iajsKLQlyYm8gPSBn ZW1fdG9fcmFkZW9uX2JvKG9iaik7CisJdWludDMyX3QgdGlsaW5nX2ZsYWdzLCBwaXRjaF9waXhl bHM7CisJdWludDY0X3QgYmFzZTsKIAotCXNwaW5fbG9jaygmcmJvLT50Ym8uYmRldi0+ZmVuY2Vf bG9jayk7Ci0JaWYgKHJiby0+dGJvLnN5bmNfb2JqKQotCQl3b3JrLT5mZW5jZSA9IHJhZGVvbl9m ZW5jZV9yZWYocmJvLT50Ym8uc3luY19vYmopOwotCXNwaW5fdW5sb2NrKCZyYm8tPnRiby5iZGV2 LT5mZW5jZV9sb2NrKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCByOwogCi0JSU5JVF9X T1JLKCZ3b3JrLT53b3JrLCByYWRlb25fdW5waW5fd29ya19mdW5jKTsKKyAgICAgICAgZG93bl9y ZWFkKCZyZGV2LT5leGNsdXNpdmVfbG9jayk7CisJd2hpbGUgKHdvcmstPmZlbmNlKSB7CisJCXIg PSByYWRlb25fZmVuY2Vfd2FpdCh3b3JrLT5mZW5jZSwgZmFsc2UpOworCQlpZiAociA9PSAtRURF QURMSykgeworCQkJdXBfcmVhZCgmcmRldi0+ZXhjbHVzaXZlX2xvY2spOworCQkJciA9IHJhZGVv bl9ncHVfcmVzZXQocmRldik7CisJCQlkb3duX3JlYWQoJnJkZXYtPmV4Y2x1c2l2ZV9sb2NrKTsK KwkJfQogCi0JLyogV2UgYm9ycm93IHRoZSBldmVudCBzcGluIGxvY2sgZm9yIHByb3RlY3Rpbmcg dW5waW5fd29yayAqLwotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdz KTsKLQlpZiAocmFkZW9uX2NydGMtPnVucGluX3dvcmspIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigi ZmxpcCBxdWV1ZTogY3J0YyBhbHJlYWR5IGJ1c3lcbiIpOwotCQlyID0gLUVCVVNZOwotCQlnb3Rv IHVubG9ja19mcmVlOworCQlpZiAocikgeworCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gd2FpdCBv biBwYWdlIGZsaXAgZmVuY2UgKCVkKSFcbiIsCisJCQkJICByKTsKKwkJCWdvdG8gY2xlYW51cDsK KwkJfSBlbHNlCisJCQlyYWRlb25fZmVuY2VfdW5yZWYoJndvcmstPmZlbmNlKTsKIAl9Ci0JcmFk ZW9uX2NydGMtPnVucGluX3dvcmsgPSB3b3JrOwotCXJhZGVvbl9jcnRjLT5kZWZlcnJlZF9mbGlw X2NvbXBsZXRpb24gPSAwOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9j aywgZmxhZ3MpOwogCiAJLyogcGluIHRoZSBuZXcgYnVmZmVyICovCiAJRFJNX0RFQlVHX0RSSVZF UigiZmxpcC1pb2N0bCgpIGN1cl9mYm8gPSAlcCwgY3VyX2JibyA9ICVwXG4iLAotCQkJIHdvcmst Pm9sZF9yYm8sIHJibyk7CisJCQkgd29yay0+b2xkX3Jibywgd29yay0+bmV3X3Jibyk7CiAKLQly ID0gcmFkZW9uX2JvX3Jlc2VydmUocmJvLCBmYWxzZSk7CisJciA9IHJhZGVvbl9ib19yZXNlcnZl KHdvcmstPm5ld19yYm8sIGZhbHNlKTsKIAlpZiAodW5saWtlbHkociAhPSAwKSkgewogCQlEUk1f RVJST1IoImZhaWxlZCB0byByZXNlcnZlIG5ldyByYm8gYnVmZmVyIGJlZm9yZSBmbGlwXG4iKTsK LQkJZ290byBwZmxpcF9jbGVhbnVwOworCQlnb3RvIGNsZWFudXA7CiAJfQogCS8qIE9ubHkgMjcg Yml0IG9mZnNldCBmb3IgbGVnYWN5IENSVEMgKi8KLQlyID0gcmFkZW9uX2JvX3Bpbl9yZXN0cmlj dGVkKHJibywgUkFERU9OX0dFTV9ET01BSU5fVlJBTSwKKwlyID0gcmFkZW9uX2JvX3Bpbl9yZXN0 cmljdGVkKHdvcmstPm5ld19yYm8sIFJBREVPTl9HRU1fRE9NQUlOX1ZSQU0sCiAJCQkJICAgICBB U0lDX0lTX0FWSVZPKHJkZXYpID8gMCA6IDEgPDwgMjcsICZiYXNlKTsKIAlpZiAodW5saWtlbHko ciAhPSAwKSkgewotCQlyYWRlb25fYm9fdW5yZXNlcnZlKHJibyk7CisJCXJhZGVvbl9ib191bnJl c2VydmUod29yay0+bmV3X3Jibyk7CiAJCXIgPSAtRUlOVkFMOwogCQlEUk1fRVJST1IoImZhaWxl ZCB0byBwaW4gbmV3IHJibyBidWZmZXIgYmVmb3JlIGZsaXBcbiIpOwotCQlnb3RvIHBmbGlwX2Ns ZWFudXA7CisJCWdvdG8gY2xlYW51cDsKIAl9Ci0JcmFkZW9uX2JvX2dldF90aWxpbmdfZmxhZ3Mo cmJvLCAmdGlsaW5nX2ZsYWdzLCBOVUxMKTsKLQlyYWRlb25fYm9fdW5yZXNlcnZlKHJibyk7CisJ cmFkZW9uX2JvX2dldF90aWxpbmdfZmxhZ3Mod29yay0+bmV3X3JibywgJnRpbGluZ19mbGFncywg TlVMTCk7CisJcmFkZW9uX2JvX3VucmVzZXJ2ZSh3b3JrLT5uZXdfcmJvKTsKIAogCWlmICghQVNJ Q19JU19BVklWTyhyZGV2KSkgewogCQkvKiBjcnRjIG9mZnNldCBpcyBmcm9tIGRpc3BsYXkgYmFz ZSBhZGRyIG5vdCBGQiBsb2NhdGlvbiAqLwpAQCAtNDg2LDI4ICs0NTUsOTEgQEAgc3RhdGljIGlu dCByYWRlb25fY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQliYXNlICY9 IH43OwogCX0KIAotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsK LQl3b3JrLT5uZXdfY3J0Y19iYXNlID0gYmFzZTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQotCS8qIHVwZGF0ZSBjcnRjIGZiICovCi0JY3J0Yy0+ cHJpbWFyeS0+ZmIgPSBmYjsKKwkvKiBXZSBib3Jyb3cgdGhlIGV2ZW50IHNwaW4gbG9jayBmb3Ig cHJvdGVjdGluZyBmbGlwX3dvcmsgKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmY3J0Yy0+ZGV2LT5l dmVudF9sb2NrLCBmbGFncyk7CiAKIAkvKiBzZXQgdGhlIHByb3BlciBpbnRlcnJ1cHQgKi8KIAly YWRlb25faXJxX2ttc19wZmxpcF9pcnFfZ2V0KHJkZXYsIHJhZGVvbl9jcnRjLT5jcnRjX2lkKTsK IAotCXJldHVybiAwOworCS8qIGRvIHRoZSBmbGlwIChtbWlvKSAqLworCXJhZGVvbl9wYWdlX2Zs aXAocmRldiwgcmFkZW9uX2NydGMtPmNydGNfaWQsIGJhc2UpOwogCi1wZmxpcF9jbGVhbnVwOgot CXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQlyYWRlb25fY3J0 Yy0+dW5waW5fd29yayA9IE5VTEw7Ci11bmxvY2tfZnJlZToKLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZV91bmxvY2tlZChvbGRfcmFkZW9uX2ZiLT5vYmopOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmNydGMtPmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCXVwX3JlYWQoJnJkZXYtPmV4Y2x1c2l2 ZV9sb2NrKTsKKworCXJldHVybjsKKworY2xlYW51cDoKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVy ZW5jZV91bmxvY2tlZCgmd29yay0+b2xkX3Jiby0+Z2VtX2Jhc2UpOwogCXJhZGVvbl9mZW5jZV91 bnJlZigmd29yay0+ZmVuY2UpOwogCWtmcmVlKHdvcmspOworCXVwX3JlYWQoJnJkZXYtPmV4Y2x1 c2l2ZV9sb2NrKTsKK30KKworc3RhdGljIGludCByYWRlb25fY3J0Y19wYWdlX2ZsaXAoc3RydWN0 IGRybV9jcnRjICpjcnRjLAorCQkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCQkg c3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQsCisJCQkJIHVpbnQzMl90IHBh Z2VfZmxpcF9mbGFncykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owor CXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qg cmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFkZW9uX2NydGMoY3J0Yyk7CisJc3RydWN0 IHJhZGVvbl9mcmFtZWJ1ZmZlciAqb2xkX3JhZGVvbl9mYjsKKwlzdHJ1Y3QgcmFkZW9uX2ZyYW1l YnVmZmVyICpuZXdfcmFkZW9uX2ZiOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0 cnVjdCByYWRlb25fZmxpcF93b3JrICp3b3JrOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwl3 b3JrID0ga3phbGxvYyhzaXplb2YgKndvcmssIEdGUF9LRVJORUwpOworCWlmICh3b3JrID09IE5V TEwpCisJCXJldHVybiAtRU5PTUVNOworCisJSU5JVF9XT1JLKCZ3b3JrLT5mbGlwX3dvcmssIHJh ZGVvbl9mbGlwX3dvcmtfZnVuYyk7CisJSU5JVF9XT1JLKCZ3b3JrLT51bnBpbl93b3JrLCByYWRl b25fdW5waW5fd29ya19mdW5jKTsKIAotCXJldHVybiByOworCXdvcmstPnJkZXYgPSByZGV2Owor CXdvcmstPmNydGNfaWQgPSByYWRlb25fY3J0Yy0+Y3J0Y19pZDsKKwl3b3JrLT5mYiA9IGZiOwor CXdvcmstPmV2ZW50ID0gZXZlbnQ7CisKKwkvKiBzY2hlZHVsZSB1bnBpbiBvZiB0aGUgb2xkIGJ1 ZmZlciAqLworCW9sZF9yYWRlb25fZmIgPSB0b19yYWRlb25fZnJhbWVidWZmZXIoY3J0Yy0+cHJp bWFyeS0+ZmIpOworCW9iaiA9IG9sZF9yYWRlb25fZmItPm9iajsKKworCS8qIHRha2UgYSByZWZl cmVuY2UgdG8gdGhlIG9sZCBvYmplY3QgKi8KKwlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2Jq KTsKKwl3b3JrLT5vbGRfcmJvID0gZ2VtX3RvX3JhZGVvbl9ibyhvYmopOworCisJbmV3X3JhZGVv bl9mYiA9IHRvX3JhZGVvbl9mcmFtZWJ1ZmZlcihmYik7CisJb2JqID0gbmV3X3JhZGVvbl9mYi0+ b2JqOworCXdvcmstPm5ld19yYm8gPSBnZW1fdG9fcmFkZW9uX2JvKG9iaik7CisKKwlzcGluX2xv Y2soJndvcmstPm5ld19yYm8tPnRiby5iZGV2LT5mZW5jZV9sb2NrKTsKKwlpZiAod29yay0+bmV3 X3Jiby0+dGJvLnN5bmNfb2JqKQorCQl3b3JrLT5mZW5jZSA9IHJhZGVvbl9mZW5jZV9yZWYod29y ay0+bmV3X3Jiby0+dGJvLnN5bmNfb2JqKTsKKwlzcGluX3VubG9jaygmd29yay0+bmV3X3Jiby0+ dGJvLmJkZXYtPmZlbmNlX2xvY2spOworCisJLyogdXBkYXRlIGNydGMgZmIgKi8KKwljcnRjLT5w cmltYXJ5LT5mYiA9IGZiOworCisJLyogV2UgYm9ycm93IHRoZSBldmVudCBzcGluIGxvY2sgZm9y IHByb3RlY3RpbmcgZmxpcF93b3JrICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNydGMtPmRldi0+ ZXZlbnRfbG9jaywgZmxhZ3MpOworCisJaWYgKHJhZGVvbl9jcnRjLT5mbGlwX3dvcmspIHsKKwkJ RFJNX0RFQlVHX0RSSVZFUigiZmxpcCBxdWV1ZTogY3J0YyBhbHJlYWR5IGJ1c3lcbiIpOworCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwkJ ZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoJndvcmstPm9sZF9yYm8tPmdlbV9i YXNlKTsKKwkJcmFkZW9uX2ZlbmNlX3VucmVmKCZ3b3JrLT5mZW5jZSk7CisJCWtmcmVlKHdvcmsp OworCQlyZXR1cm4gLUVCVVNZOworCX0KKwlyYWRlb25fY3J0Yy0+ZmxpcF93b3JrID0gd29yazsK KworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNydGMtPmRldi0+ZXZlbnRfbG9jaywgZmxhZ3Mp OworCisJcXVldWVfd29yayhyYWRlb25fY3J0Yy0+ZmxpcF9xdWV1ZSwgJndvcmstPmZsaXBfd29y ayk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtNTc3LDYgKzYwOSw3IEBAIHN0 YXRpYyB2b2lkIHJhZGVvbl9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGlu ZGV4KQogCiAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmcmFkZW9uX2NydGMtPmJhc2Us IDI1Nik7CiAJcmFkZW9uX2NydGMtPmNydGNfaWQgPSBpbmRleDsKKwlyYWRlb25fY3J0Yy0+Zmxp cF9xdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJyYWRlb24tY3J0YyIpOwog CXJkZXYtPm1vZGVfaW5mby5jcnRjc1tpbmRleF0gPSByYWRlb25fY3J0YzsKIAogCWlmIChyZGV2 LT5mYW1pbHkgPj0gQ0hJUF9CT05BSVJFKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9tb2RlLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2Rl LmgKaW5kZXggNzE4YmUxYS4uZWE3MmFkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fbW9kZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21v ZGUuaApAQCAtMzI1LDggKzMyNSw4IEBAIHN0cnVjdCByYWRlb25fY3J0YyB7CiAJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgbmF0aXZlX21vZGU7CiAJaW50IHBsbF9pZDsKIAkvKiBwYWdlIGZsaXBw aW5nICovCi0Jc3RydWN0IHJhZGVvbl91bnBpbl93b3JrICp1bnBpbl93b3JrOwotCWludCBkZWZl cnJlZF9mbGlwX2NvbXBsZXRpb247CisJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmZsaXBfcXVl dWU7CisJc3RydWN0IHJhZGVvbl9mbGlwX3dvcmsgKmZsaXBfd29yazsKIAkvKiBwbGwgc2hhcmlu ZyAqLwogCXN0cnVjdCByYWRlb25fYXRvbV9zcyBzczsKIAlib29sIHNzX2VuYWJsZWQ7Ci0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK