From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v3 09/16] drm/i915/gen9: Drop re-allocation of DDB at atomic commit (v2) Date: Thu, 21 Apr 2016 16:17:03 -0700 Message-ID: <1461280630-7477-10-git-send-email-matthew.d.roper@intel.com> References: <1461280630-7477-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id C9B5E6EDCF for ; Thu, 21 Apr 2016 23:18:45 +0000 (UTC) In-Reply-To: <1461280630-7477-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Tm93IHRoYXQgd2UncmUgcHJvcGVybHkgcHJlLWFsbG9jYXRpbmcgdGhlIEREQiBkdXJpbmcgdGhl IGF0b21pYyBjaGVjawpwaGFzZSBhbmQgd2UgdHJ1c3QgdGhhdCB0aGUgYWxsb2NhdGlvbiBpcyBh cHByb3ByaWF0ZSwgbGV0J3MgYWN0dWFsbHkKdXNlIHRoZSBhbGxvY2F0aW9uIGNvbXB1dGVkIGFu ZCBub3QgZHVwbGljYXRlIHRoYXQgd29yayBkdXJpbmcgdGhlCmNvbW1pdCBwaGFzZS4KCnYyOgog LSBTaWduaWZpY2FudCByZWJhc2luZyBub3cgdGhhdCB3ZSBjYW4gdXNlIGNhY2hlZCBkYXRhIHJh dGVzIGFuZAogICBtaW5pbXVtIGJsb2NrIGFsbG9jYXRpb25zIHRvIGF2b2lkIGdyYWJiaW5nIGFk ZGl0aW9uYWwgcGxhbmUgc3RhdGVzLgoKU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhl dy5kLnJvcGVyQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFy dGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgIDE0ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyAgICAgIHwgMjI0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVz IGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDE3MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYzk3MGUzZS4uODBkOGY3NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTM1OTksNiArMTM1OTksNyBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWRybV9hdG9t aWNfaGVscGVyX3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSk7CiAJZGV2X3ByaXYtPndtLmNvbmZpZyA9 IGludGVsX3N0YXRlLT53bV9jb25maWc7CisJZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzLmRkYiA9 IGludGVsX3N0YXRlLT5kZGI7CiAJaW50ZWxfc2hhcmVkX2RwbGxfY29tbWl0KHN0YXRlKTsKIAog CWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkgewpAQCAtMTM3MTYsMTkgKzEzNzE3LDYgQEAgc3Rh dGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlu dGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoY3J0Yywgb2xkX2NydGNfc3RhdGUsIGNydGMtPnN0YXRl KTsKIAl9CiAKLQkvKgotCSAqIFRlbXBvcmFyeSBzYW5pdHkgY2hlY2s6IG1ha2Ugc3VyZSBvdXIg cHJlLWNvbXB1dGVkIEREQiBtYXRjaGVzIHRoZQotCSAqIG9uZSB3ZSBhY3R1YWxseSB3aW5kIHVw IHByb2dyYW1taW5nLgotCSAqCi0JICogTm90IGEgZ3JlYXQgcGxhY2UgdG8gcHV0IHRoaXMsIGJ1 dCB0aGUgZWFzaWVzdCBwbGFjZSB3ZSBoYXZlIGFjY2VzcwotCSAqIHRvIGJvdGggdGhlIHByZS1j b21wdXRlZCBhbmQgZmluYWwgRERCJ3M7IHdlJ2xsIGJlIHJlbW92aW5nIHRoaXMKLQkgKiBjaGVj ayBpbiB0aGUgbmV4dCBwYXRjaCBhbnl3YXkuCi0JICovCi0JV0FSTihJU19HRU45KGRldikgJiYK LQkgICAgIG1lbWNtcCgmaW50ZWxfc3RhdGUtPmRkYiwgJmRldl9wcml2LT53bS5za2xfcmVzdWx0 cy5kZGIsCi0JCSAgICBzaXplb2YoaW50ZWxfc3RhdGUtPmRkYikpLAotCSAgICAgIlByZS1jb21w dXRlZCBEREIgZG9lcyBub3QgbWF0Y2ggZmluYWwgRERCIVxuIik7Ci0KIAlpZiAoaW50ZWxfc3Rh dGUtPm1vZGVzZXQpCiAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9E T01BSU5fTU9ERVNFVCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGZjYTQ0ZjguLmYy OGZkMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMjg0OSw3ICsyODQ5LDYgQEAgc2ts X3dtX3BsYW5lX2lkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCiBzdGF0aWMgdm9p ZAogc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCi0JCQkJ ICAgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAogCQkJCSAgIHN0cnVjdCBza2xfZGRi X2VudHJ5ICphbGxvYywgLyogb3V0ICovCiAJCQkJICAgaW50ICpudW1fYWN0aXZlIC8qIG91dCAq LykKIHsKQEAgLTI4NTcsMjQgKzI4NTYsMjIgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9u X2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9j cnRjICpmb3JfY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKIAl1bnNpZ25lZCBpbnQgcGlwZV9zaXplLCBkZGJfc2l6ZTsKIAlpbnQgbnRoX2FjdGl2ZV9w aXBlOwogCWludCBwaXBlID0gdG9faW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7CiAKLQlpZiAo aW50ZWxfc3RhdGUgJiYgaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpCi0JCSpudW1f YWN0aXZlID0gaHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpOwotCWVsc2UgaWYg KGludGVsX3N0YXRlKQotCQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZl X2NydGNzKTsKLQllbHNlCi0JCSpudW1fYWN0aXZlID0gY29uZmlnLT5udW1fcGlwZXNfYWN0aXZl OwotCi0JaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJaWYgKFdBUk5fT04oIXN0YXRlKSB8 fCAhY3N0YXRlLT5iYXNlLmFjdGl2ZSkgewogCQlhbGxvYy0+c3RhcnQgPSAwOwogCQlhbGxvYy0+ ZW5kID0gMDsKKwkJKm51bV9hY3RpdmUgPSBod2VpZ2h0MzIoZGV2X3ByaXYtPmFjdGl2ZV9jcnRj cyk7CiAJCXJldHVybjsKIAl9CiAKKwlpZiAoaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5n ZXMpCisJCSpudW1fYWN0aXZlID0gaHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3Mp OworCWVsc2UKKwkJKm51bV9hY3RpdmUgPSBod2VpZ2h0MzIoZGV2X3ByaXYtPmFjdGl2ZV9jcnRj cyk7CisKIAlpZiAoSVNfQlJPWFRPTihkZXYpKQogCQlkZGJfc2l6ZSA9IEJYVF9EREJfU0laRTsK IAllbHNlCkBAIC0yODgzLDUwICsyODgwLDIzIEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlv bl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlkZGJfc2l6ZSAtPSA0OyAvKiA0IGJs b2NrcyBmb3IgYnlwYXNzIHBhdGggYWxsb2NhdGlvbiAqLwogCiAJLyoKLQkgKiBGSVhNRTogQXQg dGhlIG1vbWVudCB3ZSBtYXkgYmUgY2FsbGVkIG9uIGVpdGhlciBpbi1mbGlnaHQgb3IgZnVsbHkK LQkgKiBjb21taXR0ZWQgY3N0YXRlJ3MuICBPbmNlIHdlIGZ1bGx5IG1vdmUgRERCIGFsbG9jYXRp b24gaW4gdGhlIGNoZWNrCi0JICogcGhhc2UsIHdlJ2xsIG9ubHkgYmUgY2FsbGVkIG9uIGluLWZs aWdodCBzdGF0ZXMgYW5kIHRoZSAnZWxzZScKLQkgKiBicmFuY2ggaGVyZSB3aWxsIGdvIGF3YXku Ci0JICoKLQkgKiBUaGUgJ2Vsc2UnIGJyYW5jaCBpcyBzbGlnaHRseSByYWN5IGhlcmUsIGJ1dCBp dCB3YXMgcmFjeSB0byBiZWdpbgotCSAqIHdpdGg7IHNpbmNlIGl0J3MgZ29pbmcgYXdheSBzb29u LCBubyBlZmZvcnQgaXMgbWFkZSB0byBhZGRyZXNzIHRoYXQuCisJICogSWYgdGhlIHN0YXRlIGRv ZXNuJ3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzLCB0aGVuIHRoZXJlJ3MKKwkgKiBubyBuZWVk IHRvIHJlY2FsY3VsYXRlOyB0aGUgZXhpc3RpbmcgcGlwZSBhbGxvY2F0aW9uIGxpbWl0cworCSAq IHNob3VsZCByZW1haW4gdW5jaGFuZ2VkLiAgTm90ZSB0aGF0IHdlJ3JlIHNhZmUgZnJvbSByYWNp bmcKKwkgKiBjb21taXRzIHNpbmNlIGFueSByYWNpbmcgY29tbWl0IHRoYXQgY2hhbmdlcyB0aGUg YWN0aXZlIENSVEMKKwkgKiBsaXN0IHdvdWxkIG5lZWQgdG8gZ3JhYiBfYWxsXyBjcnRjIGxvY2tz LCBpbmNsdWRpbmcgdGhlIG9uZQorCSAqIHdlIGN1cnJlbnRseSBob2xkLgogCSAqLwotCWlmIChz dGF0ZSkgewotCQkvKgotCQkgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFjdGl2 ZSBDUlRDJ3MsIHRoZW4gdGhlcmUncwotCQkgKiBubyBuZWVkIHRvIHJlY2FsY3VsYXRlOyB0aGUg ZXhpc3RpbmcgcGlwZSBhbGxvY2F0aW9uIGxpbWl0cwotCQkgKiBzaG91bGQgcmVtYWluIHVuY2hh bmdlZC4gIE5vdGUgdGhhdCB3ZSdyZSBzYWZlIGZyb20gcmFjaW5nCi0JCSAqIGNvbW1pdHMgc2lu Y2UgYW55IHJhY2luZyBjb21taXQgdGhhdCBjaGFuZ2VzIHRoZSBhY3RpdmUgQ1JUQwotCQkgKiBs aXN0IHdvdWxkIG5lZWQgdG8gZ3JhYiBfYWxsXyBjcnRjIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9u ZQotCQkgKiB3ZSBjdXJyZW50bHkgaG9sZC4KLQkJICovCi0JCWlmICghaW50ZWxfc3RhdGUtPmFj dGl2ZV9waXBlX2NoYW5nZXMpIHsKLQkJCSphbGxvYyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRi LnBpcGVbcGlwZV07Ci0JCQlyZXR1cm47Ci0JCX0KLQotCQludGhfYWN0aXZlX3BpcGUgPSBod2Vp Z2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcyAmCi0JCQkJCSAgICAoZHJtX2NydGNfbWFz ayhmb3JfY3J0YykgLSAxKSk7Ci0JCXBpcGVfc2l6ZSA9IGRkYl9zaXplIC8gaHdlaWdodDMyKGlu dGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpOwotCQlhbGxvYy0+c3RhcnQgPSBudGhfYWN0aXZlX3Bp cGUgKiBkZGJfc2l6ZSAvICpudW1fYWN0aXZlOwotCQlhbGxvYy0+ZW5kID0gYWxsb2MtPnN0YXJ0 ICsgcGlwZV9zaXplOwotCX0gZWxzZSB7Ci0JCW50aF9hY3RpdmVfcGlwZSA9IDA7Ci0JCWZvcl9l YWNoX2NydGMoZGV2LCBjcnRjKSB7Ci0JCQlpZiAoIXRvX2ludGVsX2NydGMoY3J0YyktPmFjdGl2 ZSkKLQkJCQljb250aW51ZTsKLQotCQkJaWYgKGNydGMgPT0gZm9yX2NydGMpCi0JCQkJYnJlYWs7 Ci0KLQkJCW50aF9hY3RpdmVfcGlwZSsrOwotCQl9Ci0KLQkJcGlwZV9zaXplID0gZGRiX3NpemUg LyBjb25maWctPm51bV9waXBlc19hY3RpdmU7Ci0JCWFsbG9jLT5zdGFydCA9IG50aF9hY3RpdmVf cGlwZSAqIGRkYl9zaXplIC8KLQkJCWNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZTsKLQkJYWxsb2Mt PmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVfc2l6ZTsKKwlpZiAoIWludGVsX3N0YXRlLT5hY3Rp dmVfcGlwZV9jaGFuZ2VzKSB7CisJCSphbGxvYyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRiLnBp cGVbcGlwZV07CisJCXJldHVybjsKIAl9CisKKwludGhfYWN0aXZlX3BpcGUgPSBod2VpZ2h0MzIo aW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcyAmCisJCQkJICAgIChkcm1fY3J0Y19tYXNrKGZvcl9j cnRjKSAtIDEpKTsKKwlwaXBlX3NpemUgPSBkZGJfc2l6ZSAvIGh3ZWlnaHQzMihpbnRlbF9zdGF0 ZS0+YWN0aXZlX2NydGNzKTsKKwlhbGxvYy0+c3RhcnQgPSBudGhfYWN0aXZlX3BpcGUgKiBkZGJf c2l6ZSAvICpudW1fYWN0aXZlOworCWFsbG9jLT5lbmQgPSBhbGxvYy0+c3RhcnQgKyBwaXBlX3Np emU7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGludCBu dW1fYWN0aXZlKQpAQCAtMzAyNSw2MiArMjk5NSwzMyBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZl X2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlKQogCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+Y3J0YzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAljb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBz dGF0ZTsKIAl1bnNpZ25lZCBpbnQgcmF0ZSwgdG90YWxfZGF0YV9yYXRlID0gMDsKIAlpbnQgaWQ7 CisJaW50IGk7CisKKwlpZiAoV0FSTl9PTighc3RhdGUpKQorCQlyZXR1cm4gMDsKIAogCS8qIENh bGN1bGF0ZSBhbmQgY2FjaGUgZGF0YSByYXRlIGZvciBlYWNoIHBsYW5lICovCi0JLyoKLQkgKiBG SVhNRTogQXQgdGhlIG1vbWVudCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgb24gZWl0aGVy IGFuCi0JICogaW4tZmxpZ2h0IG9yIGEgY29tbWl0dGVkIHN0YXRlIG9iamVjdC4gIElmIGl0J3Mg aW4tZmxpZ2h0IHRoZW4gd2UKLQkgKiBvbmx5IHdhbnQgdG8gcmUtY2FsY3VsYXRlIHRoZSBwbGFu ZSBkYXRhIHJhdGUgZm9yIHBsYW5lcyB0aGF0IGFyZQotCSAqIHBhcnQgb2YgdGhlIHRyYW5zYWN0 aW9uIChpLmUuLCB3ZSBkb24ndCB3YW50IHRvIGdyYWIgYW55IGFkZGl0aW9uYWwKLQkgKiBwbGFu ZSBzdGF0ZXMgaWYgd2UgZG9uJ3QgaGF2ZSB0bykuICBJZiB3ZSdyZSBvcGVyYXRpbmcgb24gY29t bWl0dGVkCi0JICogc3RhdGUsIHdlJ2xsIGp1c3QgZ28gYWhlYWQgYW5kIHJlY2FsY3VsYXRlIHRo ZSBwbGFuZSBkYXRhIHJhdGUgZm9yCi0JICogYWxsIHBsYW5lcy4KLQkgKgotCSAqIE9uY2Ugd2Ug ZmluaXNoIG1vdmluZyBvdXIgRERCIGFsbG9jYXRpb24gdG8gdGhlIGF0b21pYyBjaGVjayBwaGFz ZSwKLQkgKiB3ZSdsbCBvbmx5IGJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBvbiBpbi1mbGlnaHQg c3RhdGUgb2JqZWN0cywgc28KLQkgKiB0aGUgJ2Vsc2UnIGJyYW5jaCBoZXJlIHdpbGwgZ28gYXdh eS4KLQkgKi8KLQlpZiAoc3RhdGUpIHsKLQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0JCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKLQkJaW50IGk7Ci0KLQkJZm9yX2VhY2hfcGxh bmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwc3RhdGUsIGkpIHsKLQkJCWludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwotCQkJaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxh bmUpOwotCi0JCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gaW50ZWxfY3J0Yy0+cGlwZSkKLQkJ CQljb250aW51ZTsKLQotCQkJLyogcGFja2VkL3V2ICovCi0JCQlyYXRlID0gc2tsX3BsYW5lX3Jl bGF0aXZlX2RhdGFfcmF0ZShpbnRlbF9jc3RhdGUsCi0JCQkJCQkJICAgIHBzdGF0ZSwgMCk7Ci0J CQlpbnRlbF9jc3RhdGUtPndtLnNrbC5wbGFuZV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKLQotCQkJ LyogeS1wbGFuZSAqLwotCQkJcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50 ZWxfY3N0YXRlLAotCQkJCQkJCSAgICBwc3RhdGUsIDEpOwotCQkJaW50ZWxfY3N0YXRlLT53bS5z a2wucGxhbmVfeV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKLQkJfQotCX0gZWxzZSB7Ci0JCWZvcl9l YWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewot CQkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0KLQkJCQlpbnRlbF9wbGFu ZS0+YmFzZS5zdGF0ZTsKLQkJCWludCBpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7 CisJZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwc3RhdGUsIGkpIHsKKwkJ aWQgPSBza2xfd21fcGxhbmVfaWQodG9faW50ZWxfcGxhbmUocGxhbmUpKTsKKwkJaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAKLQkJCS8qIHBhY2tlZC91diAqLwotCQkJcmF0 ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRlLAotCQkJCQkJCSAg ICBwc3RhdGUsIDApOwotCQkJaW50ZWxfY3N0YXRlLT53bS5za2wucGxhbmVfZGF0YV9yYXRlW2lk XSA9IHJhdGU7CisJCWlmIChpbnRlbF9wbGFuZS0+cGlwZSAhPSBpbnRlbF9jcnRjLT5waXBlKQor CQkJY29udGludWU7CiAKLQkJCS8qIHktcGxhbmUgKi8KLQkJCXJhdGUgPSBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKLQkJCQkJCQkgICAgcHN0YXRlLCAxKTsKLQkJ CWludGVsX2NzdGF0ZS0+d20uc2tsLnBsYW5lX3lfZGF0YV9yYXRlW2lkXSA9IHJhdGU7Ci0JCX0K KwkJLyogcGFja2VkL3V2ICovCisJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRl KGludGVsX2NzdGF0ZSwKKwkJCQkJCSAgICBwc3RhdGUsIDApOworCQlpbnRlbF9jc3RhdGUtPndt LnNrbC5wbGFuZV9kYXRhX3JhdGVbaWRdID0gcmF0ZTsKKworCQkvKiB5LXBsYW5lICovCisJCXJh dGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKKwkJCQkJCSAg ICBwc3RhdGUsIDEpOworCQlpbnRlbF9jc3RhdGUtPndtLnNrbC5wbGFuZV95X2RhdGFfcmF0ZVtp ZF0gPSByYXRlOwogCX0KIAogCS8qIENhbGN1bGF0ZSBDUlRDJ3MgdG90YWwgZGF0YSByYXRlIGZy b20gY2FjaGVkIHZhbHVlcyAqLwpAQCAtMzEwNCw4ICszMDQ1LDYgQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwotCXN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZyA9ICZkZXZfcHJpdi0+d20uY29uZmln OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwpAQCAtMzExOSw2ICszMDU4LDkgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJaW50IG51bV9hY3RpdmU7CiAJaW50IGlkLCBpOwog CisJaWYgKFdBUk5fT04oIXN0YXRlKSkKKwkJcmV0dXJuIDA7CisKIAlpZiAoIWNzdGF0ZS0+YmFz ZS5hY3RpdmUpIHsKIAkJZGRiLT5waXBlW3BpcGVdLnN0YXJ0ID0gZGRiLT5waXBlW3BpcGVdLmVu ZCA9IDA7CiAJCW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtw aXBlXSkpOwpAQCAtMzEyNiw4ICszMDY4LDcgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCXJldHVybiAwOwogCX0KIAotCXNrbF9kZGJf Z2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoZGV2LCBjc3RhdGUsIGNvbmZpZywgYWxsb2MsCi0J CQkJCSAgICZudW1fYWN0aXZlKTsKKwlza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRz KGRldiwgY3N0YXRlLCBhbGxvYywgJm51bV9hY3RpdmUpOwogCWFsbG9jX3NpemUgPSBza2xfZGRi X2VudHJ5X3NpemUoYWxsb2MpOwogCWlmIChhbGxvY19zaXplID09IDApIHsKIAkJbWVtc2V0KGRk Yi0+cGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnBsYW5lW3BpcGVdKSk7CkBAIC0zMTM5LDUz ICszMDgwLDMxIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlLAogCWRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ ZW5kOwogCiAJYWxsb2Nfc2l6ZSAtPSBjdXJzb3JfYmxvY2tzOwotCWFsbG9jLT5lbmQgLT0gY3Vy c29yX2Jsb2NrczsKIAogCS8qIDEuIEFsbG9jYXRlIHRoZSBtaW5pbnVtIHJlcXVpcmVkIGJsb2Nr cyBmb3IgZWFjaCBhY3RpdmUgcGxhbmUgKi8KLQkvKgotCSAqIFRPRE86IFJlbW92ZSBzdXBwb3J0 IGZvciBhbHJlYWR5LWNvbW1pdHRlZCBzdGF0ZSBvbmNlIHdlCi0JICogb25seSBhbGxvY2F0ZSBE REIgb24gaW4tZmxpZ2h0IHN0YXRlcy4KLQkgKi8KLQlpZiAoc3RhdGUpIHsKLQkJZm9yX2VhY2hf cGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwc3RhdGUsIGkpIHsKLQkJCWludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwotCQkJaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxf cGxhbmUpOwotCi0JCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gcGlwZSkKLQkJCQljb250aW51 ZTsKLQotCQkJaWYgKCF0b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpLT52aXNpYmxlKSB7Ci0J CQkJbWluaW11bVtpZF0gPSAwOwotCQkJCXlfbWluaW11bVtpZF0gPSAwOwotCQkJCWNvbnRpbnVl OwotCQkJfQotCQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewot CQkJCW1pbmltdW1baWRdID0gMDsKLQkJCQl5X21pbmltdW1baWRdID0gMDsKLQkJCQljb250aW51 ZTsKLQkJCX0KLQotCQkJbWluaW11bVtpZF0gPSA4OwotCQkJaWYgKHBzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpCi0JCQkJeV9taW5pbXVtW2lkXSA9IDg7Ci0JCQll bHNlCi0JCQkJeV9taW5pbXVtW2lkXSA9IDA7Ci0JCX0KLQl9IGVsc2UgewotCQlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKLQkJCXN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJmludGVsX3BsYW5lLT5iYXNlOwotCQkJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwotCQkJaW50IGlkID0gc2tsX3dt X3BsYW5lX2lkKGludGVsX3BsYW5lKTsKLQotCQkJaWYgKCF0b19pbnRlbF9wbGFuZV9zdGF0ZShw bGFuZS0+c3RhdGUpLT52aXNpYmxlKQotCQkJCWNvbnRpbnVlOworCWZvcl9lYWNoX3BsYW5lX2lu X3N0YXRlKHN0YXRlLCBwbGFuZSwgcHN0YXRlLCBpKSB7CisJCWludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOworCQlpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CiAK LQkJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCi0JCQkJY29udGlu dWU7CisJCWlmIChpbnRlbF9wbGFuZS0+cGlwZSAhPSBwaXBlKQorCQkJY29udGludWU7CiAKLQkJ CW1pbmltdW1baWRdID0gODsKLQkJCXlfbWluaW11bVtpZF0gPSAoZmItPnBpeGVsX2Zvcm1hdCA9 PSBEUk1fRk9STUFUX05WMTIpID8gOCA6IDA7CisJCWlmICghdG9faW50ZWxfcGxhbmVfc3RhdGUo cHN0YXRlKS0+dmlzaWJsZSkgeworCQkJbWluaW11bVtpZF0gPSAwOworCQkJeV9taW5pbXVtW2lk XSA9IDA7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5F X1RZUEVfQ1VSU09SKSB7CisJCQltaW5pbXVtW2lkXSA9IDA7CisJCQl5X21pbmltdW1baWRdID0g MDsKKwkJCWNvbnRpbnVlOwogCQl9CisKKwkJbWluaW11bVtpZF0gPSA4OworCQlpZiAocHN0YXRl LT5mYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKKwkJCXlfbWluaW11bVtpZF0g PSA4OworCQllbHNlCisJCQl5X21pbmltdW1baWRdID0gMDsKIAl9CiAKIAlmb3IgKGkgPSAwOyBp IDwgUExBTkVfQ1VSU09SOyBpKyspIHsKQEAgLTM3MzYsNyArMzY1NSw2IEBAIHN0YXRpYyBib29s IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAot CVdBUk5fT04oc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKSAhPSAwKTsKIAlza2xf YnVpbGRfcGlwZV93bShjc3RhdGUsIGRkYiwgcGlwZV93bSk7CiAKIAlpZiAoIW1lbWNtcCgmaW50 ZWxfY3J0Yy0+d20uYWN0aXZlLnNrbCwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCkBAIC0z ODAwLDE2ICszNzE4LDYgQEAgc3RhdGljIHZvaWQgc2tsX2NsZWFyX3dtKHN0cnVjdCBza2xfd21f dmFsdWVzICp3YXRlcm1hcmtzLCBlbnVtIHBpcGUgcGlwZSkKIAltZW1zZXQod2F0ZXJtYXJrcy0+ cGxhbmVfdHJhbnNbcGlwZV0sCiAJICAgICAgIDAsIHNpemVvZih1aW50MzJfdCkgKiBJOTE1X01B WF9QTEFORVMpOwogCXdhdGVybWFya3MtPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl0g PSAwOwotCi0JLyogQ2xlYXIgZGRiIGVudHJpZXMgZm9yIHBpcGUgKi8KLQltZW1zZXQoJndhdGVy bWFya3MtPmRkYi5waXBlW3BpcGVdLCAwLCBzaXplb2Yoc3RydWN0IHNrbF9kZGJfZW50cnkpKTsK LQltZW1zZXQoJndhdGVybWFya3MtPmRkYi5wbGFuZVtwaXBlXSwgMCwKLQkgICAgICAgc2l6ZW9m KHN0cnVjdCBza2xfZGRiX2VudHJ5KSAqIEk5MTVfTUFYX1BMQU5FUyk7Ci0JbWVtc2V0KCZ3YXRl cm1hcmtzLT5kZGIueV9wbGFuZVtwaXBlXSwgMCwKLQkgICAgICAgc2l6ZW9mKHN0cnVjdCBza2xf ZGRiX2VudHJ5KSAqIEk5MTVfTUFYX1BMQU5FUyk7Ci0JbWVtc2V0KCZ3YXRlcm1hcmtzLT5kZGIu cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSwgMCwKLQkgICAgICAgc2l6ZW9mKHN0cnVjdCBza2xf ZGRiX2VudHJ5KSk7Ci0KIH0KIAogc3RhdGljIGludAotLSAKMi4xLjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=