From mboxrd@z Thu Jan 1 00:00:00 1970 From: Varad Gautam Subject: [PATCH] drm/vc4: improve throughput by pipelining binning and rendering jobs Date: Wed, 17 Feb 2016 19:08:21 +0530 Message-ID: <1455716301-14586-1-git-send-email-varadgautam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id CACDA6E9AF for ; Wed, 17 Feb 2016 13:38:35 +0000 (UTC) Received: by mail-pa0-f45.google.com with SMTP id yy13so11509859pab.3 for ; Wed, 17 Feb 2016 05:38:35 -0800 (PST) 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 VGhlIGhhcmR3YXJlIHByb3ZpZGVzIHVzIHdpdGggc2VwYXJhdGUgdGhyZWFkcyBmb3IgYmlubmlu ZyBhbmQKcmVuZGVyaW5nLCBhbmQgdGhlIGV4aXN0aW5nIG1vZGVsIHdhaXRzIGZvciB0aGVtIGJv dGggdG8gY29tcGxldGUKYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIG5leHQgam9iLgoKU3BsaXR0aW5n IHRoZSBiaW5uaW5nIGFuZCByZW5kZXJpbmcgc3VibWlzc2lvbnMgcmVkdWNlcyBpZGxlIHRpbWUK YW5kIGdpdmVzIHVzIGFwcHJveCAyMC0zMCUgc3BlZWR1cCB3aXRoIHNldmVyYWwgeDExcGVyZiB0 ZXN0cy4KClRoYW5rcyB0byBhbmhvbHQgZm9yIHN1Z2dlc3RpbmcgdGhpcy4KClNpZ25lZC1vZmYt Ynk6IFZhcmFkIEdhdXRhbSA8dmFyYWRnYXV0YW1AZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2Rydi5oIHwgIDM3ICsrKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfZ2VtLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9pcnEuYyB8ICA1OCArKysrKysrKysrKysr KysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAppbmRleCA0YzczNGQwLi45YzIzMDRiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9kcnYuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgdmM0X2RldiB7CiAJLyogUHJv dGVjdHMgYm9fY2FjaGUgYW5kIHRoZSBCTyBzdGF0cy4gKi8KIAlzdHJ1Y3QgbXV0ZXggYm9fbG9j azsKIAotCS8qIFNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGxhc3Qgam9iIHF1ZXVlZCBpbiBqb2Jf bGlzdC4KKwkvKiBTZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGpvYiBxdWV1ZWQgaW4gYmlu X2pvYl9saXN0LgogCSAqIFN0YXJ0cyBhdCAwIChubyBqb2JzIGVtaXR0ZWQpLgogCSAqLwogCXVp bnQ2NF90IGVtaXRfc2Vxbm87CkBAIC02MiwxMSArNjIsMTkgQEAgc3RydWN0IHZjNF9kZXYgewog CSAqLwogCXVpbnQ2NF90IGZpbmlzaGVkX3NlcW5vOwogCi0JLyogTGlzdCBvZiBhbGwgc3RydWN0 IHZjNF9leGVjX2luZm8gZm9yIGpvYnMgdG8gYmUgZXhlY3V0ZWQuCi0JICogVGhlIGZpcnN0IGpv YiBpbiB0aGUgbGlzdCBpcyB0aGUgb25lIGN1cnJlbnRseSBwcm9ncmFtbWVkCi0JICogaW50byBj dDBjYS9jdDFjYSBmb3IgZXhlY3V0aW9uLgorCS8qIExpc3Qgb2YgYWxsIHN0cnVjdCB2YzRfZXhl Y19pbmZvIGZvciBqb2JzIHRvIGJlIGV4ZWN1dGVkIGluCisJICogdGhlIGJpbm5lci4gIFRoZSBm aXJzdCBqb2IgaW4gdGhlIGxpc3QgaXMgdGhlIG9uZSBjdXJyZW50bHkKKwkgKiBwcm9ncmFtbWVk IGludG8gY3QwY2EgZm9yIGV4ZWN1dGlvbi4KIAkgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGpvYl9s aXN0OworCXN0cnVjdCBsaXN0X2hlYWQgYmluX2pvYl9saXN0OworCisJLyogTGlzdCBvZiBhbGwg c3RydWN0IHZjNF9leGVjX2luZm8gZm9yIGpvYnMgdGhhdCBoYXZlCisJICogY29tcGxldGVkIGJp bm5pbmcgYW5kIGFyZSByZWFkeSBmb3IgcmVuZGVyaW5nLiAgVGhlIGZpcnN0CisJICogam9iIGlu IHRoZSBsaXN0IGlzIHRoZSBvbmUgY3VycmVudGx5IHByb2dyYW1tZWQgaW50byBjdDFjYQorCSAq IGZvciBleGVjdXRpb24uCisJICovCisJc3RydWN0IGxpc3RfaGVhZCByZW5kZXJfam9iX2xpc3Q7 CisKIAkvKiBMaXN0IG9mIHRoZSBmaW5pc2hlZCB2YzRfZXhlY19pbmZvcyB3YWl0aW5nIHRvIGJl IGZyZWVkIGJ5CiAJICogam9iX2RvbmVfd29yay4KIAkgKi8KQEAgLTI3NiwxMSArMjg0LDIwIEBA IHN0cnVjdCB2YzRfZXhlY19pbmZvIHsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjNF9l eGVjX2luZm8gKgotdmM0X2ZpcnN0X2pvYihzdHJ1Y3QgdmM0X2RldiAqdmM0KQordmM0X2ZpcnN0 X2Jpbl9qb2Ioc3RydWN0IHZjNF9kZXYgKnZjNCkKK3sKKwlpZiAobGlzdF9lbXB0eSgmdmM0LT5i aW5fam9iX2xpc3QpKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeSgm dmM0LT5iaW5fam9iX2xpc3QsIHN0cnVjdCB2YzRfZXhlY19pbmZvLCBoZWFkKTsKK30KKworc3Rh dGljIGlubGluZSBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqCit2YzRfZmlyc3RfcmVuZGVyX2pvYihz dHJ1Y3QgdmM0X2RldiAqdmM0KQogewotCWlmIChsaXN0X2VtcHR5KCZ2YzQtPmpvYl9saXN0KSkK KwlpZiAobGlzdF9lbXB0eSgmdmM0LT5yZW5kZXJfam9iX2xpc3QpKQogCQlyZXR1cm4gTlVMTDsK LQlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeSgmdmM0LT5qb2JfbGlzdCwgc3RydWN0IHZjNF9leGVj X2luZm8sIGhlYWQpOworCXJldHVybiBsaXN0X2ZpcnN0X2VudHJ5KCZ2YzQtPnJlbmRlcl9qb2Jf bGlzdCwKKwkJCQlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbywgaGVhZCk7CiB9CiAKIC8qKgpAQCAtMzk0 LDcgKzQxMSw5IEBAIGludCB2YzRfd2FpdF9zZXFub19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIGludCB2 YzRfd2FpdF9ib19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkg ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Ci12b2lkIHZjNF9zdWJtaXRfbmV4dF9q b2Ioc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIHZjNF9zdWJtaXRfbmV4dF9iaW5fam9i KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCB2YzRfc3VibWl0X25leHRfcmVuZGVyX2pv YihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgdmM0X21vdmVfam9iX3RvX3JlbmRlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYyk7CiBpbnQg dmM0X3dhaXRfZm9yX3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQ2NF90IHNlcW5v LAogCQkgICAgICAgdWludDY0X3QgdGltZW91dF9ucywgYm9vbCBpbnRlcnJ1cHRpYmxlKTsKIHZv aWQgdmM0X2pvYl9oYW5kbGVfY29tcGxldGVkKHN0cnVjdCB2YzRfZGV2ICp2YzQpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9nZW0uYwppbmRleCA0OGNlMzBhLi5iMDhmNzRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYwpA QCAtMTQwLDEwICsxNDAsMTAgQEAgdmM0X3NhdmVfaGFuZ19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CiAJc3RydWN0 IGRybV92YzRfZ2V0X2hhbmdfc3RhdGUgKnN0YXRlOwogCXN0cnVjdCB2YzRfaGFuZ19zdGF0ZSAq a2VybmVsX3N0YXRlOwotCXN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjOworCXN0cnVjdCB2YzRf ZXhlY19pbmZvICpleGVjWzJdOwogCXN0cnVjdCB2YzRfYm8gKmJvOwogCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7Ci0JdW5zaWduZWQgaW50IGksIHVucmVmX2xpc3RfY291bnQ7CisJdW5zaWduZWQg aW50IGksIGosIHVucmVmX2xpc3RfY291bnQsIHByZXZfaWR4OwogCiAJa2VybmVsX3N0YXRlID0g a2NhbGxvYygxLCBzaXplb2YoKmtlcm5lbF9zdGF0ZSksIEdGUF9LRVJORUwpOwogCWlmICgha2Vy bmVsX3N0YXRlKQpAQCAtMTUyLDM3ICsxNTIsNTUgQEAgdmM0X3NhdmVfaGFuZ19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0YXRlID0gJmtlcm5lbF9zdGF0ZS0+dXNlcl9zdGF0ZTsK IAogCXNwaW5fbG9ja19pcnFzYXZlKCZ2YzQtPmpvYl9sb2NrLCBpcnFmbGFncyk7Ci0JZXhlYyA9 IHZjNF9maXJzdF9qb2IodmM0KTsKLQlpZiAoIWV4ZWMpIHsKKwlleGVjWzBdID0gdmM0X2ZpcnN0 X2Jpbl9qb2IodmM0KTsKKwlleGVjWzFdID0gdmM0X2ZpcnN0X3JlbmRlcl9qb2IodmM0KTsKKwlp ZiAoIWV4ZWNbMF0gJiYgIWV4ZWNbMV0pIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmM0 LT5qb2JfbG9jaywgaXJxZmxhZ3MpOwogCQlyZXR1cm47CiAJfQogCi0JdW5yZWZfbGlzdF9jb3Vu dCA9IDA7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShibywgJmV4ZWMtPnVucmVmX2xpc3QsIHVucmVm X2hlYWQpCi0JCXVucmVmX2xpc3RfY291bnQrKzsKKwkvKiBHZXQgdGhlIGJvcyBmcm9tIGJvdGgg YmlubmVyIGFuZCByZW5kZXJlciBpbnRvIGhhbmcgc3RhdGUuICovCisJc3RhdGUtPmJvX2NvdW50 ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCWlmICghZXhlY1tpXSkKKwkJCWNv bnRpbnVlOworCisJCXVucmVmX2xpc3RfY291bnQgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGJvLCAmZXhlY1tpXS0+dW5yZWZfbGlzdCwgdW5yZWZfaGVhZCkKKwkJCXVucmVmX2xpc3RfY291 bnQrKzsKKwkJc3RhdGUtPmJvX2NvdW50ICs9IGV4ZWNbaV0tPmJvX2NvdW50ICsgdW5yZWZfbGlz dF9jb3VudDsKKwl9CisKKwlrZXJuZWxfc3RhdGUtPmJvID0ga2NhbGxvYyhzdGF0ZS0+Ym9fY291 bnQsCisJCQkJICAgc2l6ZW9mKCprZXJuZWxfc3RhdGUtPmJvKSwgR0ZQX0FUT01JQyk7CiAKLQlz dGF0ZS0+Ym9fY291bnQgPSBleGVjLT5ib19jb3VudCArIHVucmVmX2xpc3RfY291bnQ7Ci0Ja2Vy bmVsX3N0YXRlLT5ibyA9IGtjYWxsb2Moc3RhdGUtPmJvX2NvdW50LCBzaXplb2YoKmtlcm5lbF9z dGF0ZS0+Ym8pLAotCQkJCSAgIEdGUF9BVE9NSUMpOwogCWlmICgha2VybmVsX3N0YXRlLT5ibykg ewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2YzQtPmpvYl9sb2NrLCBpcnFmbGFncyk7CiAJ CXJldHVybjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXhlYy0+Ym9fY291bnQ7IGkrKykgewot CQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJmV4ZWMtPmJvW2ldLT5iYXNlKTsKLQkJa2VybmVs X3N0YXRlLT5ib1tpXSA9ICZleGVjLT5ib1tpXS0+YmFzZTsKLQl9CisJcHJldl9pZHggPSAwOwor CWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJaWYgKCFleGVjW2ldKQorCQkJY29udGludWU7 CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmZXhlYy0+dW5yZWZfbGlzdCwgdW5yZWZfaGVh ZCkgewotCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJmJvLT5iYXNlLmJhc2UpOwotCQlrZXJu ZWxfc3RhdGUtPmJvW2ldID0gJmJvLT5iYXNlLmJhc2U7Ci0JCWkrKzsKKwkJZm9yIChqID0gMDsg aiA8IGV4ZWNbaV0tPmJvX2NvdW50OyBqKyspIHsKKwkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5j ZSgmZXhlY1tpXS0+Ym9bal0tPmJhc2UpOworCQkJa2VybmVsX3N0YXRlLT5ib1tqICsgcHJldl9p ZHhdID0gJmV4ZWNbaV0tPmJvW2pdLT5iYXNlOworCQl9CisKKwkJbGlzdF9mb3JfZWFjaF9lbnRy eShibywgJmV4ZWNbaV0tPnVucmVmX2xpc3QsIHVucmVmX2hlYWQpIHsKKwkJCWRybV9nZW1fb2Jq ZWN0X3JlZmVyZW5jZSgmYm8tPmJhc2UuYmFzZSk7CisJCQlrZXJuZWxfc3RhdGUtPmJvW2ogKyBw cmV2X2lkeF0gPSAmYm8tPmJhc2UuYmFzZTsKKwkJCWorKzsKKwkJfQorCQlwcmV2X2lkeCA9IGog KyAxOwogCX0KIAotCXN0YXRlLT5zdGFydF9iaW4gPSBleGVjLT5jdDBjYTsKLQlzdGF0ZS0+c3Rh cnRfcmVuZGVyID0gZXhlYy0+Y3QxY2E7CisJaWYgKGV4ZWNbMF0pCisJCXN0YXRlLT5zdGFydF9i aW4gPSBleGVjWzBdLT5jdDBjYTsKKwlpZiAoZXhlY1sxXSkKKwkJc3RhdGUtPnN0YXJ0X3JlbmRl ciA9IGV4ZWNbMV0tPmN0MWNhOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmM0LT5qb2Jf bG9jaywgaXJxZmxhZ3MpOwogCkBAIC0yNTksNyArMjc3LDcgQEAgdmM0X2hhbmdjaGVja19lbGFw c2VkKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAl1aW50MzJfdCBjdDBjYSwgY3QxY2E7CiAKIAkvKiBJ ZiBpZGxlLCB3ZSBjYW4gc3RvcCB3YXRjaGluZyBmb3IgaGFuZ3MuICovCi0JaWYgKGxpc3RfZW1w dHkoJnZjNC0+am9iX2xpc3QpKQorCWlmIChsaXN0X2VtcHR5KCZ2YzQtPmJpbl9qb2JfbGlzdCkg JiYgbGlzdF9lbXB0eSgmdmM0LT5yZW5kZXJfam9iX2xpc3QpKQogCQlyZXR1cm47CiAKIAljdDBj YSA9IFYzRF9SRUFEKFYzRF9DVE5DQSgwKSk7CkBAIC0zNzMsMTEgKzM5MSwxMyBAQCB2YzRfZmx1 c2hfY2FjaGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAgKiBUaGUgam9iX2xvY2sgc2hvdWxk IGJlIGhlbGQgZHVyaW5nIHRoaXMuCiAgKi8KIHZvaWQKLXZjNF9zdWJtaXRfbmV4dF9qb2Ioc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKK3ZjNF9zdWJtaXRfbmV4dF9iaW5fam9iKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsK LQlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYyA9IHZjNF9maXJzdF9qb2IodmM0KTsKKwlzdHJ1 Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYzsKIAorYWdhaW46CisJZXhlYyA9IHZjNF9maXJzdF9iaW5f am9iKHZjNCk7CiAJaWYgKCFleGVjKQogCQlyZXR1cm47CiAKQEAgLTM4NywxMSArNDA3LDQwIEBA IHZjNF9zdWJtaXRfbmV4dF9qb2Ioc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlWM0RfV1JJVEUo VjNEX0JQT0EsIDApOwogCVYzRF9XUklURShWM0RfQlBPUywgMCk7CiAKLQlpZiAoZXhlYy0+Y3Qw Y2EgIT0gZXhlYy0+Y3QwZWEpCisJLyogRWl0aGVyIHB1dCB0aGUgam9iIGluIHRoZSBiaW5uZXIg aWYgaXQgdXNlcyB0aGUgYmlubmVyLCBvcgorCSAqIGltbWVkaWF0ZWx5IG1vdmUgaXQgdG8gdGhl IHRvLWJlLXJlbmRlcmVkIHF1ZXVlLgorCSAqLworCWlmIChleGVjLT5jdDBjYSAhPSBleGVjLT5j dDBlYSkgewogCQlzdWJtaXRfY2woZGV2LCAwLCBleGVjLT5jdDBjYSwgZXhlYy0+Y3QwZWEpOwor CX0gZWxzZSB7CisJCXZjNF9tb3ZlX2pvYl90b19yZW5kZXIoZGV2LCBleGVjKTsKKwkJZ290byBh Z2FpbjsKKwl9Cit9CisKK3ZvaWQKK3ZjNF9zdWJtaXRfbmV4dF9yZW5kZXJfam9iKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2 KTsKKwlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYyA9IHZjNF9maXJzdF9yZW5kZXJfam9iKHZj NCk7CisKKwlpZiAoIWV4ZWMpCisJCXJldHVybjsKKwogCXN1Ym1pdF9jbChkZXYsIDEsIGV4ZWMt PmN0MWNhLCBleGVjLT5jdDFlYSk7CiB9CiAKK3ZvaWQKK3ZjNF9tb3ZlX2pvYl90b19yZW5kZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHZjNF9leGVjX2luZm8gKmV4ZWMpCit7CisJ c3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKKwlib29sIHdhc19lbXB0eSA9 IGxpc3RfZW1wdHkoJnZjNC0+cmVuZGVyX2pvYl9saXN0KTsKKworCWxpc3RfbW92ZV90YWlsKCZl eGVjLT5oZWFkLCAmdmM0LT5yZW5kZXJfam9iX2xpc3QpOworCWlmICh3YXNfZW1wdHkpCisJCXZj NF9zdWJtaXRfbmV4dF9yZW5kZXJfam9iKGRldik7Cit9CisKIHN0YXRpYyB2b2lkCiB2YzRfdXBk YXRlX2JvX3NlcW5vcyhzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYywgdWludDY0X3Qgc2Vxbm8p CiB7CkBAIC00MzAsMTQgKzQ3OSwxNCBAQCB2YzRfcXVldWVfc3VibWl0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCB2YzRfZXhlY19pbmZvICpleGVjKQogCWV4ZWMtPnNlcW5vID0gc2Vx bm87CiAJdmM0X3VwZGF0ZV9ib19zZXFub3MoZXhlYywgc2Vxbm8pOwogCi0JbGlzdF9hZGRfdGFp bCgmZXhlYy0+aGVhZCwgJnZjNC0+am9iX2xpc3QpOworCWxpc3RfYWRkX3RhaWwoJmV4ZWMtPmhl YWQsICZ2YzQtPmJpbl9qb2JfbGlzdCk7CiAKIAkvKiBJZiBubyBqb2Igd2FzIGV4ZWN1dGluZywg a2ljayBvdXJzIG9mZi4gIE90aGVyd2lzZSwgaXQnbGwKLQkgKiBnZXQgc3RhcnRlZCB3aGVuIHRo ZSBwcmV2aW91cyBqb2IncyBmcmFtZSBkb25lIGludGVycnVwdAorCSAqIGdldCBzdGFydGVkIHdo ZW4gdGhlIHByZXZpb3VzIGpvYidzIGZsdXNoIGRvbmUgaW50ZXJydXB0CiAJICogb2NjdXJzLgog CSAqLwotCWlmICh2YzRfZmlyc3Rfam9iKHZjNCkgPT0gZXhlYykgewotCQl2YzRfc3VibWl0X25l eHRfam9iKGRldik7CisJaWYgKHZjNF9maXJzdF9iaW5fam9iKHZjNCkgPT0gZXhlYykgeworCQl2 YzRfc3VibWl0X25leHRfYmluX2pvYihkZXYpOwogCQl2YzRfcXVldWVfaGFuZ2NoZWNrKGRldik7 CiAJfQogCkBAIC04MjgsNyArODc3LDggQEAgdmM0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiB7CiAJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKIAotCUlO SVRfTElTVF9IRUFEKCZ2YzQtPmpvYl9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmdmM0LT5iaW5f am9iX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZ2YzQtPnJlbmRlcl9qb2JfbGlzdCk7CiAJSU5J VF9MSVNUX0hFQUQoJnZjNC0+am9iX2RvbmVfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJnZjNC0+ c2Vxbm9fY2JfbGlzdCk7CiAJc3Bpbl9sb2NrX2luaXQoJnZjNC0+am9iX2xvY2spOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9pcnEuYwppbmRleCBiNjgwNjBlLi5iMDJlNzI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9pcnEuYwpA QCAtMzAsNiArMzAsMTAgQEAKICAqIGRpc2FibGVzIHRoYXQgc3BlY2lmaWMgaW50ZXJydXB0LCBh bmQgMHMgd3JpdHRlbiBhcmUgaWdub3JlZAogICogKHJlYWRpbmcgZWl0aGVyIG9uZSByZXR1cm5z IHRoZSBzZXQgb2YgZW5hYmxlZCBpbnRlcnJ1cHRzKS4KICAqCisgKiBXaGVuIHdlIHRha2UgYSBi aW5uaW5nIGZsdXNoIGRvbmUgaW50ZXJydXB0LCB3ZSBuZWVkIHRvIHN1Ym1pdCB0aGUKKyAqIG5l eHQgZnJhbWUgZm9yIGJpbm5pbmcgYW5kIG1vdmUgdGhlIGZpbmlzaGVkIGZyYW1lIHRvIHRoZSBy ZW5kZXIKKyAqIHRocmVhZC4KKyAqCiAgKiBXaGVuIHdlIHRha2UgYSByZW5kZXIgZnJhbWUgaW50 ZXJydXB0LCB3ZSBuZWVkIHRvIHdha2UgdGhlCiAgKiBwcm9jZXNzZXMgd2FpdGluZyBmb3Igc29t ZSBmcmFtZSB0byBiZSBkb25lLCBhbmQgZ2V0IHRoZSBuZXh0IGZyYW1lCiAgKiBzdWJtaXR0ZWQg QVNBUCAoc28gdGhlIGhhcmR3YXJlIGRvZXNuJ3Qgc2l0IGlkbGUgd2hlbiB0aGVyZSdzIHdvcmsK QEAgLTQ0LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJ2YzRfcmVncy5oIgogCiAjZGVmaW5lIFYzRF9E UklWRVJfSVJRUyAoVjNEX0lOVF9PVVRPTUVNIHwgXAorCQkJIFYzRF9JTlRfRkxET05FIHwgXAog CQkJIFYzRF9JTlRfRlJET05FKQogCiBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChyZW5kZXJfd2Fp dCk7CkBAIC03Nyw3ICs4Miw3IEBAIHZjNF9vdmVyZmxvd19tZW1fd29yayhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCiAJCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKIAkJc3Bpbl9sb2NrX2ly cXNhdmUoJnZjNC0+am9iX2xvY2ssIGlycWZsYWdzKTsKLQkJY3VycmVudF9leGVjID0gdmM0X2Zp cnN0X2pvYih2YzQpOworCQljdXJyZW50X2V4ZWMgPSB2YzRfZmlyc3RfYmluX2pvYih2YzQpOwog CQlpZiAoY3VycmVudF9leGVjKSB7CiAJCQl2YzQtPm92ZXJmbG93X21lbS0+c2Vxbm8gPSB2YzQt PmZpbmlzaGVkX3NlcW5vICsgMTsKIAkJCWxpc3RfYWRkX3RhaWwoJnZjNC0+b3ZlcmZsb3dfbWVt LT51bnJlZl9oZWFkLApAQCAtOTgsMTcgKzEwMyw0MyBAQCB2YzRfb3ZlcmZsb3dfbWVtX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogfQogCiBzdGF0aWMgdm9pZAotdmM0X2lycV9maW5p c2hfam9iKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit2YzRfaXJxX2ZpbmlzaF9iaW5fam9iKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9k ZXYoZGV2KTsKKwlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYyA9IHZjNF9maXJzdF9iaW5fam9i KHZjNCk7CisKKwlpZiAoIWV4ZWMpCisJCXJldHVybjsKKworCXZjNF9tb3ZlX2pvYl90b19yZW5k ZXIoZGV2LCBleGVjKTsKKwl2YzRfc3VibWl0X25leHRfYmluX2pvYihkZXYpOworfQorCitzdGF0 aWMgdm9pZAordmM0X2NhbmNlbF9iaW5fam9iKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKKwlzdHJ1Y3QgdmM0X2V4ZWNf aW5mbyAqZXhlYyA9IHZjNF9maXJzdF9iaW5fam9iKHZjNCk7CisKKwlpZiAoIWV4ZWMpCisJCXJl dHVybjsKKworCWxpc3RfbW92ZV90YWlsKCZleGVjLT5oZWFkLCAmdmM0LT5iaW5fam9iX2xpc3Qp OworCXZjNF9zdWJtaXRfbmV4dF9iaW5fam9iKGRldik7Cit9CisKK3N0YXRpYyB2b2lkCit2YzRf aXJxX2ZpbmlzaF9yZW5kZXJfam9iKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0 IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKLQlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAq ZXhlYyA9IHZjNF9maXJzdF9qb2IodmM0KTsKKwlzdHJ1Y3QgdmM0X2V4ZWNfaW5mbyAqZXhlYyA9 IHZjNF9maXJzdF9yZW5kZXJfam9iKHZjNCk7CiAKIAlpZiAoIWV4ZWMpCiAJCXJldHVybjsKIAog CXZjNC0+ZmluaXNoZWRfc2Vxbm8rKzsKIAlsaXN0X21vdmVfdGFpbCgmZXhlYy0+aGVhZCwgJnZj NC0+am9iX2RvbmVfbGlzdCk7Ci0JdmM0X3N1Ym1pdF9uZXh0X2pvYihkZXYpOworCXZjNF9zdWJt aXRfbmV4dF9yZW5kZXJfam9iKGRldik7CiAKIAl3YWtlX3VwX2FsbCgmdmM0LT5qb2Jfd2FpdF9x dWV1ZSk7CiAJc2NoZWR1bGVfd29yaygmdmM0LT5qb2JfZG9uZV93b3JrKTsKQEAgLTEyNSw5ICsx NTYsMTAgQEAgdmM0X2lycShpbnQgaXJxLCB2b2lkICphcmcpCiAJYmFycmllcigpOwogCWludGN0 bCA9IFYzRF9SRUFEKFYzRF9JTlRDVEwpOwogCi0JLyogQWNrbm93bGVkZ2UgdGhlIGludGVycnVw dHMgd2UncmUgaGFuZGxpbmcgaGVyZS4gVGhlIHJlbmRlcgotCSAqIGZyYW1lIGRvbmUgaW50ZXJy dXB0IHdpbGwgYmUgY2xlYXJlZCwgd2hpbGUgT1VUT01FTSB3aWxsCi0JICogc3RheSBoaWdoIHVu dGlsIHRoZSB1bmRlcmx5aW5nIGNhdXNlIGlzIGNsZWFyZWQuCisJLyogQWNrbm93bGVkZ2UgdGhl IGludGVycnVwdHMgd2UncmUgaGFuZGxpbmcgaGVyZS4gVGhlIGJpbm5lcgorCSAqIGxhc3QgZmx1 c2ggLyByZW5kZXIgZnJhbWUgZG9uZSBpbnRlcnJ1cHQgd2lsbCBiZSBjbGVhcmVkLAorCSAqIHdo aWxlIE9VVE9NRU0gd2lsbCBzdGF5IGhpZ2ggdW50aWwgdGhlIHVuZGVybHlpbmcgY2F1c2UgaXMK KwkgKiBjbGVhcmVkLgogCSAqLwogCVYzRF9XUklURShWM0RfSU5UQ1RMLCBpbnRjdGwpOwogCkBA IC0xMzgsOSArMTcwLDE2IEBAIHZjNF9pcnEoaW50IGlycSwgdm9pZCAqYXJnKQogCQlzdGF0dXMg PSBJUlFfSEFORExFRDsKIAl9CiAKKwlpZiAoaW50Y3RsICYgVjNEX0lOVF9GTERPTkUpIHsKKwkJ c3Bpbl9sb2NrKCZ2YzQtPmpvYl9sb2NrKTsKKwkJdmM0X2lycV9maW5pc2hfYmluX2pvYihkZXYp OworCQlzcGluX3VubG9jaygmdmM0LT5qb2JfbG9jayk7CisJCXN0YXR1cyA9IElSUV9IQU5ETEVE OworCX0KKwogCWlmIChpbnRjdGwgJiBWM0RfSU5UX0ZSRE9ORSkgewogCQlzcGluX2xvY2soJnZj NC0+am9iX2xvY2spOwotCQl2YzRfaXJxX2ZpbmlzaF9qb2IoZGV2KTsKKwkJdmM0X2lycV9maW5p c2hfcmVuZGVyX2pvYihkZXYpOwogCQlzcGluX3VubG9jaygmdmM0LT5qb2JfbG9jayk7CiAJCXN0 YXR1cyA9IElSUV9IQU5ETEVEOwogCX0KQEAgLTIwNSw2ICsyNDQsNyBAQCB2b2lkIHZjNF9pcnFf cmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlWM0RfV1JJVEUoVjNEX0lOVEVOQSwgVjNE X0RSSVZFUl9JUlFTKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZ2YzQtPmpvYl9sb2NrLCBpcnFm bGFncyk7Ci0JdmM0X2lycV9maW5pc2hfam9iKGRldik7CisJdmM0X2NhbmNlbF9iaW5fam9iKGRl dik7CisJdmM0X2lycV9maW5pc2hfcmVuZGVyX2pvYihkZXYpOwogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnZjNC0+am9iX2xvY2ssIGlycWZsYWdzKTsKIH0KLS0gCjIuNi4yCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK