From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Pietrasiewicz Subject: [PATCHv2 4/4] drm/rockchip: Add support for afbc Date: Mon, 4 Nov 2019 23:12:28 +0100 Message-ID: <20191104221228.3588-5-andrzej.p@collabora.com> References: <2485717.1SzL54aMiy@e123338-lin> <20191104221228.3588-1-andrzej.p@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191104221228.3588-1-andrzej.p@collabora.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: Ayan Halder , kernel@collabora.com, David Airlie , Liviu Dudau , linux-rockchip@lists.infradead.org, James Wang , Mihail Atanassov , Sean Paul , Mark Yao List-Id: linux-rockchip.vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGFmYmMgaGFuZGxpbmcuIGFmYmMgaXMgYSBjb21w cmVzc2VkIGZvcm1hdAp3aGljaCByZWR1Y2VzIHRoZSBuZWNlc3NhcnkgbWVtb3J5IGJhbmR3aWR0 aC4KCkNvLWRldmVsb3BlZC1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29tPgpT aWduZWQtb2ZmLWJ5OiBNYXJrIFlhbyA8bWFyay55YW9Acm9jay1jaGlwcy5jb20+ClNpZ25lZC1v ZmYtYnk6IEFuZHJ6ZWogUGlldHJhc2lld2ljeiA8YW5kcnplai5wQGNvbGxhYm9yYS5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL0tjb25maWcgICAgICAgICAgICB8ICAgMSArCiBk cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgIHwgIDQyICsrKysrKwog ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyB8IDE0MSArKysrKysr KysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3Au aCB8ICAxMiArKwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYyB8 ICA4NCArKysrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjc2IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvS2NvbmZpZwppbmRleCA2ZjQyMjJmOGJlZWIu LmZmNDkxZWZjNTJhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL0tjb25m aWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL0tjb25maWcKQEAgLTUsNiArNSw3IEBA IGNvbmZpZyBEUk1fUk9DS0NISVAKIAlzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSCiAJc2VsZWN0 IERSTV9LTVNfSEVMUEVSCiAJc2VsZWN0IERSTV9QQU5FTAorCXNlbGVjdCBEUk1fQUZCQwogCXNl bGVjdCBWSURFT01PREVfSEVMUEVSUwogCXNlbGVjdCBEUk1fQU5BTE9HSVhfRFAgaWYgUk9DS0NI SVBfQU5BTE9HSVhfRFAKIAlzZWxlY3QgRFJNX0RXX0hETUkgaWYgUk9DS0NISVBfRFdfSERNSQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jCmluZGV4IGNhMDEyMzRj MDM3Yy4uMGFhYzNlNTk2ZGYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9mYi5jCkBAIC04LDYgKzgsNyBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybS5oPgogI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hZmJjLmg+CiAjaW5jbHVk ZSA8ZHJtL2RybV9kYW1hZ2VfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIu aD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgpAQCAtMTgsNiArMTksOCBAQAogI2luY2x1 ZGUgInJvY2tjaGlwX2RybV9mYi5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9nZW0uaCIKIAor I2RlZmluZSBST0NLQ0hJUF9NQVhfQUZCQ19XSURUSAkyNTYwCisKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIHJvY2tjaGlwX2RybV9mYl9mdW5jcyA9IHsKIAkuZGVz dHJveSAgICAgICA9IGRybV9nZW1fZmJfZGVzdHJveSwKIAkuY3JlYXRlX2hhbmRsZSA9IGRybV9n ZW1fZmJfY3JlYXRlX2hhbmRsZSwKQEAgLTI5LDkgKzMyLDQ4IEBAIHJvY2tjaGlwX2ZiX2FsbG9j KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpt b2RlX2NtCiAJCSAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqb2JqLCB1bnNpZ25lZCBpbnQgbnVt X3BsYW5lcykKIHsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwl1MzIgdywgaDsKIAlp bnQgcmV0OwogCWludCBpOwogCisJaWYgKG1vZGVfY21kLT5tb2RpZmllclswXSkgeworCQljb25z dCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvOworCQlpbnQgYnBwOworCisJCWlmICghZHJt X2FmYmNfY2hlY2tfb2Zmc2V0KGRldiwgbW9kZV9jbWQpKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7CisKKwkJaWYgKCFkcm1fYWZiY19nZXRfc3VwZXJibGtfd2gobW9kZV9jbWQtPm1vZGlm aWVyWzBdLCAmdywgJmgpKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwkJaWYgKHcg IT0gMTYgfHwgaCAhPSAxNikgeworCQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwKKwkJCQkiVW5z dXBwb3J0ZWQgYWZiYyB0aWxlIHcvaCBbJWQvJWRdXG4iLCB3LCBoKTsKKwkJCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOworCQl9CisKKwkJaWYgKCFkcm1fYWZiY19jaGVja19zaXplX2FsaWduKGRl diwgbW9kZV9jbWQpKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwkJaWYgKG1vZGVf Y21kLT53aWR0aCA+IFJPQ0tDSElQX01BWF9BRkJDX1dJRFRIKSB7CisJCQlEUk1fREVWX0VSUk9S KGRldi0+ZGV2LAorCQkJCSAgICAgICJVbnN1cHBvcnRlZCB3aWR0aCAlZD4lZFxuIiwKKwkJCQkg ICAgICBtb2RlX2NtZC0+d2lkdGgsCisJCQkJICAgICAgUk9DS0NISVBfTUFYX0FGQkNfV0lEVEgK KwkJCSk7CisKKwkJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCQl9CisKKwkJaW5mbyA9IGRy bV9nZXRfZm9ybWF0X2luZm8oZGV2LCBtb2RlX2NtZCk7CisJCWJwcCA9IGluZm8tPmNwcFswXSAq IDg7CisKKwkJaWYgKCFkcm1fYWZiY19jaGVja19mYl9zaXplKG1vZGVfY21kLT5waXRjaGVzWzBd LCBicHAsCisJCSAgICBtb2RlX2NtZC0+d2lkdGgsIG1vZGVfY21kLT5oZWlnaHQsIHcsIGgsIG9i alswXS0+c2l6ZSwKKwkJCW1vZGVfY21kLT5vZmZzZXRzWzBdLCBBRkJDX1NVUEVSQkxLX0FMSUdO TUVOVCkpCisJCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKIAlmYiA9IGt6YWxsb2Mo c2l6ZW9mKCpmYiksIEdGUF9LRVJORUwpOwogCWlmICghZmIpCiAJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKaW5k ZXggZDA0YjM0OTJiZGFjLi5lOWJhNzJhNGM0YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV92b3AuYwpAQCAtOTEsOSArOTEsMjIgQEAKICNkZWZpbmUgVk9QX1dJ Tl9UT19JTkRFWCh2b3Bfd2luKSBcCiAJKCh2b3Bfd2luKSAtICh2b3Bfd2luKS0+dm9wLT53aW4p CiAKKyNkZWZpbmUgVk9QX0FGQkNfU0VUKHZvcCwgbmFtZSwgdikgXAorCWRvIHsgXAorCQlpZiAo KHZvcCktPmRhdGEtPmFmYmMpIFwKKwkJCXZvcF9yZWdfc2V0KCh2b3ApLCAmKHZvcCktPmRhdGEt PmFmYmMtPm5hbWUsIFwKKwkJCQkwLCB+MCwgdiwgI25hbWUpOyBcCisJfSB3aGlsZSAoMCkKKwog I2RlZmluZSB0b192b3AoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB2b3AsIGNydGMpCiAjZGVm aW5lIHRvX3ZvcF93aW4oeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB2b3Bfd2luLCBiYXNlKQog CisjZGVmaW5lIEFGQkNfRk1UX1JHQjU2NQkJMHgwCisjZGVmaW5lIEFGQkNfRk1UX1U4VThVOFU4 CTB4NQorI2RlZmluZSBBRkJDX0ZNVF9VOFU4VTgJCTB4NAorCisjZGVmaW5lIEFGQkNfVElMRV8x NngxNgkJQklUKDQpCisKIC8qCiAgKiBUaGUgY29lZmZpY2llbnRzIG9mIHRoZSBmb2xsb3dpbmcg bWF0cml4IGFyZSBhbGwgZml4ZWQgcG9pbnRzLgogICogVGhlIGZvcm1hdCBpcyBTMi4xMCBmb3Ig dGhlIDN4MyBwYXJ0IG9mIHRoZSBtYXRyaXgsIGFuZCBTOS4xMiBmb3IgdGhlIG9mZnNldHMuCkBA IC0xNjYsNiArMTc5LDcgQEAgc3RydWN0IHZvcCB7CiAJLyogb3B0aW9uYWwgaW50ZXJuYWwgcmdi IGVuY29kZXIgKi8KIAlzdHJ1Y3Qgcm9ja2NoaXBfcmdiICpyZ2I7CiAKKwlzdHJ1Y3Qgdm9wX3dp biAqYWZiY193aW47CiAJc3RydWN0IHZvcF93aW4gd2luW107CiB9OwogCkBAIC0yNzQsNiArMjg4 LDI4IEBAIHN0YXRpYyBlbnVtIHZvcF9kYXRhX2Zvcm1hdCB2b3BfY29udmVydF9mb3JtYXQodWlu dDMyX3QgZm9ybWF0KQogCX0KIH0KIAorc3RhdGljIGludCB2b3BfY29udmVydF9hZmJjX2Zvcm1h dCh1aW50MzJfdCBmb3JtYXQpCit7CisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1JN QVRfWFJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4OgorCWNhc2UgRFJNX0ZPUk1B VF9YQkdSODg4ODoKKwljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6CisJCXJldHVybiBBRkJDX0ZN VF9VOFU4VThVODsKKwljYXNlIERSTV9GT1JNQVRfUkdCODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9C R1I4ODg6CisJCXJldHVybiBBRkJDX0ZNVF9VOFU4VTg7CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2 NToKKwljYXNlIERSTV9GT1JNQVRfQkdSNTY1OgorCQlyZXR1cm4gQUZCQ19GTVRfUkdCNTY1Owor CS8qIGVpdGhlciBvZiB0aGUgYmVsb3cgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUgKi8KKwlkZWZh dWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKwogc3Rh dGljIHVpbnQxNl90IHNjbF92b3BfY2FsX3NjYWxlKGVudW0gc2NhbGVfbW9kZSBtb2RlLCB1aW50 MzJfdCBzcmMsCiAJCQkJICB1aW50MzJfdCBkc3QsIGJvb2wgaXNfaG9yaXpvbnRhbCwKIAkJCQkg IGludCB2c3VfbW9kZSwgaW50ICp2c2tpcGxpbmVzKQpAQCAtNTk4LDYgKzYzNCwxNSBAQCBzdGF0 aWMgaW50IHZvcF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm9sZF9zdGF0ZSkKIAkJCXZvcF93aW5fZGlzYWJsZSh2b3AsIHZvcF93aW4pOwogCQl9 CiAJfQorCisJaWYgKHZvcC0+ZGF0YS0+YWZiYykgeworCQkvKgorCQkgKiBEaXNhYmxlIEFGQkMg YW5kIGZvcmdldCB0aGVyZSB3YXMgYSB2b3Agd2luZG93IHdpdGggQUZCQworCQkgKi8KKwkJVk9Q X0FGQkNfU0VUKHZvcCwgZW5hYmxlLCAwKTsKKwkJdm9wLT5hZmJjX3dpbiA9IE5VTEw7CisJfQor CiAJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xvY2spOwogCiAJdm9wX2NmZ19kb25lKHZvcCk7CkBA IC03MTAsNiArNzU1LDM0IEBAIHN0YXRpYyB2b2lkIHZvcF9wbGFuZV9kZXN0cm95KHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKQogCWRybV9wbGFuZV9jbGVhbnVwKHBsYW5lKTsKIH0KIAorc3RhdGlj IGJvb2wgcm9ja2NoaXBfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJ CQkgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCit7CisJY29uc3Qgc3RydWN0IGRybV9mb3Jt YXRfaW5mbyAqaW5mbzsKKworCWlmIChXQVJOX09OKG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9E X0lOVkFMSUQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAobW9kaWZpZXIgPT0gRFJNX0ZPUk1B VF9NT0RfTElORUFSKQorCQlyZXR1cm4gdHJ1ZTsKKworCWlmIChtb2RpZmllciAhPQorCQlEUk1f Rk9STUFUX01PRF9BUk1fQUZCQyhBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8xNngxNiB8CisJ CUFGQkNfRk9STUFUX01PRF9TUEFSU0UpKSB7CisJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVk IGZvcm1hdCBtb2RpZmVyIDB4JWxseFxuIiwgbW9kaWZpZXIpOworCisJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlpbmZvID0gZHJtX2Zvcm1hdF9pbmZvKGZvcm1hdCk7CisJaWYgKGluZm8tPm51bV9w bGFuZXMgIT0gMSkgeworCQlEUk1fREVCVUdfS01TKCJBRkJDIGJ1ZmZlcnMgZXhwZWN0IG9uZSBw bGFuZVxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3Rh dGljIGludCB2b3BfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CQkJICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7CkBAIC03NTgsNiArODMxLDM0 IEBAIHN0YXRpYyBpbnQgdm9wX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJaWYgKGZiLT5tb2RpZmllciA9PQorCQlE Uk1fRk9STUFUX01PRF9BUk1fQUZCQyhBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV8xNngxNiB8 CisJCUFGQkNfRk9STUFUX01PRF9TUEFSU0UpKSB7CisJCXN0cnVjdCB2b3AgKnZvcCA9IHRvX3Zv cChjcnRjKTsKKworCQlpZiAoIXZvcC0+ZGF0YS0+YWZiYykgeworCQkJRFJNX0VSUk9SKCJ2b3Ag ZG9lcyBub3Qgc3VwcG9ydCBBRkJDXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJ cmV0ID0gdm9wX2NvbnZlcnRfYWZiY19mb3JtYXQoZmItPmZvcm1hdC0+Zm9ybWF0KTsKKwkJaWYg KHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCWlmIChzdGF0ZS0+c3JjLngxIHx8IHN0YXRl LT5zcmMueTEpIHsKKwkJCURSTV9FUlJPUigiYWZiYyBkb2VzIG5vdCBzdXBwb3J0IG9mZnNldCBk aXNwbGF5XG4iKTsKKwkJCURSTV9FUlJPUigieHBvcz0lZCwgeXBvcz0lZCwgb2Zmc2V0PSVkXG4i LAorCQkJCSAgc3RhdGUtPnNyYy54MSwgc3RhdGUtPnNyYy55MSwgZmItPm9mZnNldHNbMF0pOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlpZiAoc3RhdGUtPnJvdGF0aW9uICYmIHN0YXRl LT5yb3RhdGlvbiAhPSBEUk1fTU9ERV9ST1RBVEVfMCkgeworCQkJRFJNX0VSUk9SKCJhZmJjIGRv ZXMgbm90IHN1cHBvcnQgcm90YXRpb25cbiIpOworCQkJRFJNX0VSUk9SKCJyb3RhdGlvbj0lZFxu Iiwgc3RhdGUtPnJvdGF0aW9uKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCiAJcmV0 dXJuIDA7CiB9CiAKQEAgLTc3Myw2ICs4NzQsMTEgQEAgc3RhdGljIHZvaWQgdm9wX3BsYW5lX2F0 b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXNwaW5fbG9jaygmdm9wLT5y ZWdfbG9jayk7CiAKIAl2b3Bfd2luX2Rpc2FibGUodm9wLCB2b3Bfd2luKTsKKwkvKgorCSAqIEZv cmdldCBhYm91dCB0aGUgQUZCQyB3aW5kb3cgaWYgaXQgaXMgYmVpbmcgZGlzYWJsZWQKKwkgKi8K KwlpZiAodm9wX3dpbiA9PSB2b3AtPmFmYmNfd2luKQorCQl2b3AtPmFmYmNfd2luID0gTlVMTDsK IAogCXNwaW5fdW5sb2NrKCZ2b3AtPnJlZ19sb2NrKTsKIH0KQEAgLTgxMiw2ICs5MTgsMTMgQEAg c3RhdGljIHZvaWQgdm9wX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJaWYgKFdBUk5fT04oIXZvcC0+aXNfZW5hYmxlZCkpCiAJCXJldHVybjsKIAorCS8qCisJ ICogSWYgdXBkYXRpbmcgdGhlIEFGQkMgd2luZG93IHRoZW4gYXNzdW1lIHRoYXQKKwkgKiBhZnRl ciB0aGUgdXBkYXRlIHRoZXJlIHdpbGwgYmUgbm8gQUZCQyB3aW5kb3cuCisJICovCisJaWYgKHZv cF93aW4gPT0gdm9wLT5hZmJjX3dpbikKKwkJdm9wLT5hZmJjX3dpbiA9IE5VTEw7CisKIAlpZiAo IXN0YXRlLT52aXNpYmxlKSB7CiAJCXZvcF9wbGFuZV9hdG9taWNfZGlzYWJsZShwbGFuZSwgb2xk X3N0YXRlKTsKIAkJcmV0dXJuOwpAQCAtODQ2LDYgKzk1OSwyMyBAQCBzdGF0aWMgdm9pZCB2b3Bf cGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCXNwaW5fbG9j aygmdm9wLT5yZWdfbG9jayk7CiAKKwlpZiAoZmItPm1vZGlmaWVyID09CisJCURSTV9GT1JNQVRf TU9EX0FSTV9BRkJDKEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzE2eDE2IHwKKwkJQUZCQ19G T1JNQVRfTU9EX1NQQVJTRSkpIHsKKwkJaW50IGFmYmNfZm9ybWF0ID0gdm9wX2NvbnZlcnRfYWZi Y19mb3JtYXQoZmItPmZvcm1hdC0+Zm9ybWF0KTsKKworCQlWT1BfQUZCQ19TRVQodm9wLCBmb3Jt YXQsIGFmYmNfZm9ybWF0IHwgQUZCQ19USUxFXzE2eDE2KTsKKwkJVk9QX0FGQkNfU0VUKHZvcCwg aHJlZ19ibG9ja19zcGxpdCwgMCk7CisJCVZPUF9BRkJDX1NFVCh2b3AsIHdpbl9zZWwsIFZPUF9X SU5fVE9fSU5ERVgodm9wX3dpbikpOworCQlWT1BfQUZCQ19TRVQodm9wLCBoZHJfcHRyLCBkbWFf YWRkcik7CisJCVZPUF9BRkJDX1NFVCh2b3AsIHBpY19zaXplLCBhY3RfaW5mbyk7CisKKwkJLyoK KwkJICogVGhlIHdpbmRvdyBiZWluZyB1ZGF0ZWQgYmVjb21lcyB0aGUgQUZCQyB3aW5kb3cKKwkJ ICovCisJCXZvcC0+YWZiY193aW4gPSB2b3Bfd2luOworCX0KKwogCVZPUF9XSU5fU0VUKHZvcCwg d2luLCBmb3JtYXQsIGZvcm1hdCk7CiAJVk9QX1dJTl9TRVQodm9wLCB3aW4sIHlyZ2JfdmlyLCBE SVZfUk9VTkRfVVAoZmItPnBpdGNoZXNbMF0sIDQpKTsKIAlWT1BfV0lOX1NFVCh2b3AsIHdpbiwg eXJnYl9tc3QsIGRtYV9hZGRyKTsKQEAgLTEwMDEsNiArMTEzMSw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZvcF9wbGFuZV9mdW5jcyA9IHsKIAkucmVzZXQgPSBkcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCwKIAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKIAkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAorCS5mb3JtYXRf bW9kX3N1cHBvcnRlZCA9IHJvY2tjaGlwX21vZF9zdXBwb3J0ZWQsCiB9OwogCiBzdGF0aWMgaW50 IHZvcF9jcnRjX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQpAQCAtMTM0MCw2 ICsxNDcxLDEwIEBAIHN0YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAKIAlzcGluX2xvY2soJnZvcC0+cmVnX2xvY2spOwogCisJLyoKKwkgKiBF bmFibGUgQUZCQyBpZiB0aGVyZSBpcyBzb21lIEFGQkMgd2luZG93LCBkaXNhYmxlIG90aGVyd2lz ZQorCSAqLworCVZPUF9BRkJDX1NFVCh2b3AsIGVuYWJsZSwgdm9wLT5hZmJjX3dpbiAhPSBOVUxM KTsKIAl2b3BfY2ZnX2RvbmUodm9wKTsKIAogCXNwaW5fdW5sb2NrKCZ2b3AtPnJlZ19sb2NrKTsK QEAgLTE2MzQsNyArMTc2OSw4IEBAIHN0YXRpYyBpbnQgdm9wX2NyZWF0ZV9jcnRjKHN0cnVjdCB2 b3AgKnZvcCkKIAkJCQkJICAgICAgIDAsICZ2b3BfcGxhbmVfZnVuY3MsCiAJCQkJCSAgICAgICB3 aW5fZGF0YS0+cGh5LT5kYXRhX2Zvcm1hdHMsCiAJCQkJCSAgICAgICB3aW5fZGF0YS0+cGh5LT5u Zm9ybWF0cywKLQkJCQkJICAgICAgIE5VTEwsIHdpbl9kYXRhLT50eXBlLCBOVUxMKTsKKwkJCQkJ ICAgICAgIHdpbl9kYXRhLT5waHktPmZvcm1hdF9tb2RpZmllcnMsCisJCQkJCSAgICAgICB3aW5f ZGF0YS0+dHlwZSwgTlVMTCk7CiAJCWlmIChyZXQpIHsKIAkJCURSTV9ERVZfRVJST1Iodm9wLT5k ZXYsICJmYWlsZWQgdG8gaW5pdCBwbGFuZSAlZFxuIiwKIAkJCQkgICAgICByZXQpOwpAQCAtMTY3 OCw3ICsxODE0LDggQEAgc3RhdGljIGludCB2b3BfY3JlYXRlX2NydGMoc3RydWN0IHZvcCAqdm9w KQogCQkJCQkgICAgICAgJnZvcF9wbGFuZV9mdW5jcywKIAkJCQkJICAgICAgIHdpbl9kYXRhLT5w aHktPmRhdGFfZm9ybWF0cywKIAkJCQkJICAgICAgIHdpbl9kYXRhLT5waHktPm5mb3JtYXRzLAot CQkJCQkgICAgICAgTlVMTCwgd2luX2RhdGEtPnR5cGUsIE5VTEwpOworCQkJCQkgICAgICAgd2lu X2RhdGEtPnBoeS0+Zm9ybWF0X21vZGlmaWVycywKKwkJCQkJICAgICAgIHdpbl9kYXRhLT50eXBl LCBOVUxMKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0RFVl9FUlJPUih2b3AtPmRldiwgImZhaWxl ZCB0byBpbml0IG92ZXJsYXkgJWRcbiIsCiAJCQkJICAgICAgcmV0KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmggYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCmluZGV4IDBiM2QxOGM0NTdiMi4uM2Y0ZTg4 YTc4M2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X3ZvcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgK QEAgLTM0LDYgKzM0LDE2IEBAIHN0cnVjdCB2b3BfcmVnIHsKIAlib29sIHJlbGF4ZWQ7CiB9Owog CitzdHJ1Y3Qgdm9wX2FmYmMgeworCXN0cnVjdCB2b3BfcmVnIGVuYWJsZTsKKwlzdHJ1Y3Qgdm9w X3JlZyB3aW5fc2VsOworCXN0cnVjdCB2b3BfcmVnIGZvcm1hdDsKKwlzdHJ1Y3Qgdm9wX3JlZyBo cmVnX2Jsb2NrX3NwbGl0OworCXN0cnVjdCB2b3BfcmVnIHBpY19zaXplOworCXN0cnVjdCB2b3Bf cmVnIGhkcl9wdHI7CisJc3RydWN0IHZvcF9yZWcgcnN0bjsKK307CisKIHN0cnVjdCB2b3BfbW9k ZXNldCB7CiAJc3RydWN0IHZvcF9yZWcgaHRvdGFsX3B3OwogCXN0cnVjdCB2b3BfcmVnIGhhY3Rf c3RfZW5kOwpAQCAtMTM0LDYgKzE0NCw3IEBAIHN0cnVjdCB2b3Bfd2luX3BoeSB7CiAJY29uc3Qg c3RydWN0IHZvcF9zY2xfcmVncyAqc2NsOwogCWNvbnN0IHVpbnQzMl90ICpkYXRhX2Zvcm1hdHM7 CiAJdWludDMyX3QgbmZvcm1hdHM7CisJY29uc3QgdWludDY0X3QgKmZvcm1hdF9tb2RpZmllcnM7 CiAKIAlzdHJ1Y3Qgdm9wX3JlZyBlbmFibGU7CiAJc3RydWN0IHZvcF9yZWcgZ2F0ZTsKQEAgLTE3 Myw2ICsxODQsNyBAQCBzdHJ1Y3Qgdm9wX2RhdGEgewogCWNvbnN0IHN0cnVjdCB2b3BfbWlzYyAq bWlzYzsKIAljb25zdCBzdHJ1Y3Qgdm9wX21vZGVzZXQgKm1vZGVzZXQ7CiAJY29uc3Qgc3RydWN0 IHZvcF9vdXRwdXQgKm91dHB1dDsKKwljb25zdCBzdHJ1Y3Qgdm9wX2FmYmMgKmFmYmM7CiAJY29u c3Qgc3RydWN0IHZvcF93aW5feXV2Mnl1dl9kYXRhICp3aW5feXV2Mnl1djsKIAljb25zdCBzdHJ1 Y3Qgdm9wX3dpbl9kYXRhICp3aW47CiAJdW5zaWduZWQgaW50IHdpbl9zaXplOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKaW5kZXggN2E5ZDk3OWM4ZDVkLi5m MGNmMWIwNDU5MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF92b3BfcmVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9y ZWcuYwpAQCAtNTAsNiArNTAsMTggQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGZvcm1hdHNfd2lu X2Z1bGxbXSA9IHsKIAlEUk1fRk9STUFUX05WMjQsCiB9OwogCitzdGF0aWMgY29uc3QgdWludDY0 X3QgZm9ybWF0X21vZGlmaWVyc193aW5fZnVsbFtdID0geworCURSTV9GT1JNQVRfTU9EX0xJTkVB UiwKKwlEUk1fRk9STUFUX01PRF9JTlZBTElELAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ2NF90 IGZvcm1hdF9tb2RpZmllcnNfd2luX2Z1bGxfYWZiY1tdID0geworCURSTV9GT1JNQVRfTU9EX0FS TV9BRkJDKEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzE2eDE2IHwKKwkJCQlBRkJDX0ZPUk1B VF9NT0RfU1BBUlNFKSwKKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJRFJNX0ZPUk1BVF9NT0Rf SU5WQUxJRCwKK307CisKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmb3JtYXRzX3dpbl9saXRlW10g PSB7CiAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKIAlEUk1fRk9STUFUX0FSR0I4ODg4LApAQCAtNjEs NiArNzMsMTEgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGZvcm1hdHNfd2luX2xpdGVbXSA9IHsK IAlEUk1fRk9STUFUX0JHUjU2NSwKIH07CiAKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBmb3JtYXRf bW9kaWZpZXJzX3dpbl9saXRlW10gPSB7CisJRFJNX0ZPUk1BVF9NT0RfTElORUFSLAorCURSTV9G T1JNQVRfTU9EX0lOVkFMSUQsCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9zY2xfcmVn cyByazMwMzZfd2luX3NjbCA9IHsKIAkuc2NhbGVfeXJnYl94ID0gVk9QX1JFRyhSSzMwMzZfV0lO MF9TQ0xfRkFDVE9SX1lSR0IsIDB4ZmZmZiwgMHgwKSwKIAkuc2NhbGVfeXJnYl95ID0gVk9QX1JF RyhSSzMwMzZfV0lOMF9TQ0xfRkFDVE9SX1lSR0IsIDB4ZmZmZiwgMTYpLApAQCAtNzIsNiArODks NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzAzNl93aW4wX2RhdGEgPSB7 CiAJLnNjbCA9ICZyazMwMzZfd2luX3NjbCwKIAkuZGF0YV9mb3JtYXRzID0gZm9ybWF0c193aW5f ZnVsbCwKIAkubmZvcm1hdHMgPSBBUlJBWV9TSVpFKGZvcm1hdHNfd2luX2Z1bGwpLAorCS5mb3Jt YXRfbW9kaWZpZXJzID0gZm9ybWF0X21vZGlmaWVyc193aW5fZnVsbCwKIAkuZW5hYmxlID0gVk9Q X1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMCksCiAJLmZvcm1hdCA9IFZPUF9SRUcoUkszMDM2 X1NZU19DVFJMLCAweDcsIDMpLAogCS5yYl9zd2FwID0gVk9QX1JFRyhSSzMwMzZfU1lTX0NUUkws IDB4MSwgMTUpLApAQCAtODcsNiArMTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2lu X3BoeSByazMwMzZfd2luMF9kYXRhID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3Bo eSByazMwMzZfd2luMV9kYXRhID0gewogCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9saXRl LAogCS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCisJLmZvcm1hdF9t b2RpZmllcnMgPSBmb3JtYXRfbW9kaWZpZXJzX3dpbl9saXRlLAogCS5lbmFibGUgPSBWT1BfUkVH KFJLMzAzNl9TWVNfQ1RSTCwgMHgxLCAxKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMwMzZfU1lT X0NUUkwsIDB4NywgNiksCiAJLnJiX3N3YXAgPSBWT1BfUkVHKFJLMzAzNl9TWVNfQ1RSTCwgMHgx LCAxOSksCkBAIC0xNTMsNiArMTcyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfZGF0YSBy azMwMzZfdm9wID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3BoeSByazMxMjZfd2lu MV9kYXRhID0gewogCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9saXRlLAogCS5uZm9ybWF0 cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCisJLmZvcm1hdF9tb2RpZmllcnMgPSBm b3JtYXRfbW9kaWZpZXJzX3dpbl9saXRlLAogCS5lbmFibGUgPSBWT1BfUkVHKFJLMzAzNl9TWVNf Q1RSTCwgMHgxLCAxKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4Nywg NiksCiAJLnJiX3N3YXAgPSBWT1BfUkVHKFJLMzAzNl9TWVNfQ1RSTCwgMHgxLCAxOSksCkBAIC0y MzQsNiArMjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3BoeSBweDMwX3dpbjBf ZGF0YSA9IHsKIAkuc2NsID0gJnB4MzBfd2luX3NjbCwKIAkuZGF0YV9mb3JtYXRzID0gZm9ybWF0 c193aW5fZnVsbCwKIAkubmZvcm1hdHMgPSBBUlJBWV9TSVpFKGZvcm1hdHNfd2luX2Z1bGwpLAor CS5mb3JtYXRfbW9kaWZpZXJzID0gZm9ybWF0X21vZGlmaWVyc193aW5fZnVsbCwKIAkuZW5hYmxl ID0gVk9QX1JFRyhQWDMwX1dJTjBfQ1RSTDAsIDB4MSwgMCksCiAJLmZvcm1hdCA9IFZPUF9SRUco UFgzMF9XSU4wX0NUUkwwLCAweDcsIDEpLAogCS5yYl9zd2FwID0gVk9QX1JFRyhQWDMwX1dJTjBf Q1RSTDAsIDB4MSwgMTIpLApAQCAtMjQ5LDYgKzI3MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dm9wX3dpbl9waHkgcHgzMF93aW4wX2RhdGEgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93 aW5fcGh5IHB4MzBfd2luMV9kYXRhID0gewogCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9s aXRlLAogCS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCisJLmZvcm1h dF9tb2RpZmllcnMgPSBmb3JtYXRfbW9kaWZpZXJzX3dpbl9saXRlLAogCS5lbmFibGUgPSBWT1Bf UkVHKFBYMzBfV0lOMV9DVFJMMCwgMHgxLCAwKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhQWDMwX1dJ TjFfQ1RSTDAsIDB4NywgNCksCiAJLnJiX3N3YXAgPSBWT1BfUkVHKFBYMzBfV0lOMV9DVFJMMCwg MHgxLCAxMiksCkBAIC0yNjEsNiArMjgzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2lu X3BoeSBweDMwX3dpbjFfZGF0YSA9IHsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkg cHgzMF93aW4yX2RhdGEgPSB7CiAJLmRhdGFfZm9ybWF0cyA9IGZvcm1hdHNfd2luX2xpdGUsCiAJ Lm5mb3JtYXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9saXRlKSwKKwkuZm9ybWF0X21vZGlm aWVycyA9IGZvcm1hdF9tb2RpZmllcnNfd2luX2xpdGUsCiAJLmdhdGUgPSBWT1BfUkVHKFBYMzBf V0lOMl9DVFJMMCwgMHgxLCA0KSwKIAkuZW5hYmxlID0gVk9QX1JFRyhQWDMwX1dJTjJfQ1RSTDAs IDB4MSwgMCksCiAJLmZvcm1hdCA9IFZPUF9SRUcoUFgzMF9XSU4yX0NUUkwwLCAweDMsIDUpLApA QCAtMzE2LDYgKzMzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkgcmszMDY2 X3dpbjBfZGF0YSA9IHsKIAkuc2NsID0gJnJrMzA2Nl93aW5fc2NsLAogCS5kYXRhX2Zvcm1hdHMg PSBmb3JtYXRzX3dpbl9mdWxsLAogCS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5f ZnVsbCksCisJLmZvcm1hdF9tb2RpZmllcnMgPSBmb3JtYXRfbW9kaWZpZXJzX3dpbl9mdWxsLAog CS5lbmFibGUgPSBWT1BfUkVHKFJLMzA2Nl9TWVNfQ1RSTDEsIDB4MSwgMCksCiAJLmZvcm1hdCA9 IFZPUF9SRUcoUkszMDY2X1NZU19DVFJMMCwgMHg3LCA0KSwKIAkucmJfc3dhcCA9IFZPUF9SRUco UkszMDY2X1NZU19DVFJMMCwgMHgxLCAxOSksCkBAIC0zMzIsNiArMzU2LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB2b3Bfd2luX3BoeSByazMwNjZfd2luMV9kYXRhID0gewogCS5zY2wgPSAmcmsz MDY2X3dpbl9zY2wsCiAJLmRhdGFfZm9ybWF0cyA9IGZvcm1hdHNfd2luX2Z1bGwsCiAJLm5mb3Jt YXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9mdWxsKSwKKwkuZm9ybWF0X21vZGlmaWVycyA9 IGZvcm1hdF9tb2RpZmllcnNfd2luX2Z1bGwsCiAJLmVuYWJsZSA9IFZPUF9SRUcoUkszMDY2X1NZ U19DVFJMMSwgMHgxLCAxKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMwNjZfU1lTX0NUUkwwLCAw eDcsIDcpLAogCS5yYl9zd2FwID0gVk9QX1JFRyhSSzMwNjZfU1lTX0NUUkwwLCAweDEsIDIzKSwK QEAgLTM0Nyw2ICszNzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzA2 Nl93aW4xX2RhdGEgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzA2Nl93 aW4yX2RhdGEgPSB7CiAJLmRhdGFfZm9ybWF0cyA9IGZvcm1hdHNfd2luX2xpdGUsCiAJLm5mb3Jt YXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9saXRlKSwKKwkuZm9ybWF0X21vZGlmaWVycyA9 IGZvcm1hdF9tb2RpZmllcnNfd2luX2xpdGUsCiAJLmVuYWJsZSA9IFZPUF9SRUcoUkszMDY2X1NZ U19DVFJMMSwgMHgxLCAyKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMwNjZfU1lTX0NUUkwwLCAw eDcsIDEwKSwKIAkucmJfc3dhcCA9IFZPUF9SRUcoUkszMDY2X1NZU19DVFJMMCwgMHgxLCAyNyks CkBAIC00MjYsNiArNDUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3BoeSByazMx ODhfd2luMF9kYXRhID0gewogCS5zY2wgPSAmcmszMTg4X3dpbl9zY2wsCiAJLmRhdGFfZm9ybWF0 cyA9IGZvcm1hdHNfd2luX2Z1bGwsCiAJLm5mb3JtYXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dp bl9mdWxsKSwKKwkuZm9ybWF0X21vZGlmaWVycyA9IGZvcm1hdF9tb2RpZmllcnNfd2luX2Z1bGws CiAJLmVuYWJsZSA9IFZPUF9SRUcoUkszMTg4X1NZU19DVFJMLCAweDEsIDApLAogCS5mb3JtYXQg PSBWT1BfUkVHKFJLMzE4OF9TWVNfQ1RSTCwgMHg3LCAzKSwKIAkucmJfc3dhcCA9IFZPUF9SRUco UkszMTg4X1NZU19DVFJMLCAweDEsIDE1KSwKQEAgLTQ0MCw2ICs0NjcsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzE4OF93aW4wX2RhdGEgPSB7CiBzdGF0aWMgY29uc3Qg c3RydWN0IHZvcF93aW5fcGh5IHJrMzE4OF93aW4xX2RhdGEgPSB7CiAJLmRhdGFfZm9ybWF0cyA9 IGZvcm1hdHNfd2luX2xpdGUsCiAJLm5mb3JtYXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9s aXRlKSwKKwkuZm9ybWF0X21vZGlmaWVycyA9IGZvcm1hdF9tb2RpZmllcnNfd2luX2xpdGUsCiAJ LmVuYWJsZSA9IFZPUF9SRUcoUkszMTg4X1NZU19DVFJMLCAweDEsIDEpLAogCS5mb3JtYXQgPSBW T1BfUkVHKFJLMzE4OF9TWVNfQ1RSTCwgMHg3LCA2KSwKIAkucmJfc3dhcCA9IFZPUF9SRUcoUksz MTg4X1NZU19DVFJMLCAweDEsIDE5KSwKQEAgLTU0NSw2ICs1NzMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHZvcF93aW5fcGh5IHJrMzI4OF93aW4wMV9kYXRhID0gewogCS5zY2wgPSAmcmszMjg4 X3dpbl9mdWxsX3NjbCwKIAkuZGF0YV9mb3JtYXRzID0gZm9ybWF0c193aW5fZnVsbCwKIAkubmZv cm1hdHMgPSBBUlJBWV9TSVpFKGZvcm1hdHNfd2luX2Z1bGwpLAorCS5mb3JtYXRfbW9kaWZpZXJz ID0gZm9ybWF0X21vZGlmaWVyc193aW5fZnVsbCwKIAkuZW5hYmxlID0gVk9QX1JFRyhSSzMyODhf V0lOMF9DVFJMMCwgMHgxLCAwKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMyODhfV0lOMF9DVFJM MCwgMHg3LCAxKSwKIAkucmJfc3dhcCA9IFZPUF9SRUcoUkszMjg4X1dJTjBfQ1RSTDAsIDB4MSwg MTIpLApAQCAtNTYzLDYgKzU5Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkg cmszMjg4X3dpbjAxX2RhdGEgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJr MzI4OF93aW4yM19kYXRhID0gewogCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9saXRlLAog CS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCisJLmZvcm1hdF9tb2Rp ZmllcnMgPSBmb3JtYXRfbW9kaWZpZXJzX3dpbl9saXRlLAogCS5lbmFibGUgPSBWT1BfUkVHKFJL MzI4OF9XSU4yX0NUUkwwLCAweDEsIDQpLAogCS5nYXRlID0gVk9QX1JFRyhSSzMyODhfV0lOMl9D VFJMMCwgMHgxLCAwKSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMyODhfV0lOMl9DVFJMMCwgMHg3 LCAxKSwKQEAgLTY3Nyw2ICs3MDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5 IHJrMzM2OF93aW4wMV9kYXRhID0gewogCS5zY2wgPSAmcmszMjg4X3dpbl9mdWxsX3NjbCwKIAku ZGF0YV9mb3JtYXRzID0gZm9ybWF0c193aW5fZnVsbCwKIAkubmZvcm1hdHMgPSBBUlJBWV9TSVpF KGZvcm1hdHNfd2luX2Z1bGwpLAorCS5mb3JtYXRfbW9kaWZpZXJzID0gZm9ybWF0X21vZGlmaWVy c193aW5fZnVsbCwKIAkuZW5hYmxlID0gVk9QX1JFRyhSSzMzNjhfV0lOMF9DVFJMMCwgMHgxLCAw KSwKIAkuZm9ybWF0ID0gVk9QX1JFRyhSSzMzNjhfV0lOMF9DVFJMMCwgMHg3LCAxKSwKIAkucmJf c3dhcCA9IFZPUF9SRUcoUkszMzY4X1dJTjBfQ1RSTDAsIDB4MSwgMTIpLApAQCAtNjk3LDYgKzcy OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkgcmszMzY4X3dpbjAxX2RhdGEg PSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF93aW5fcGh5IHJrMzM2OF93aW4yM19kYXRhID0g ewogCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9saXRlLAogCS5uZm9ybWF0cyA9IEFSUkFZ X1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCisJLmZvcm1hdF9tb2RpZmllcnMgPSBmb3JtYXRfbW9k aWZpZXJzX3dpbl9saXRlLAogCS5nYXRlID0gVk9QX1JFRyhSSzMzNjhfV0lOMl9DVFJMMCwgMHgx LCAwKSwKIAkuZW5hYmxlID0gVk9QX1JFRyhSSzMzNjhfV0lOMl9DVFJMMCwgMHgxLCA0KSwKIAku Zm9ybWF0ID0gVk9QX1JFRyhSSzMzNjhfV0lOMl9DVFJMMCwgMHgzLCA1KSwKQEAgLTgxNyw2ICs4 NDksNTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3l1djJ5dXZfZGF0YSByazMzOTlf dm9wX2JpZ193aW5feXV2Mnl1dl9kYXRhW10gPSB7CiAJICAueTJyX2VuID0gVk9QX1JFRyhSSzMz OTlfWVVWMllVVl9XSU4sIDB4MSwgOSkgfSwKIAl7IC5iYXNlID0gMHhDMCwgLnBoeSA9ICZyazMz OTlfeXV2Mnl1dl93aW4yM19kYXRhIH0sCiAJeyAuYmFzZSA9IDB4MTIwLCAucGh5ID0gJnJrMzM5 OV95dXYyeXV2X3dpbjIzX2RhdGEgfSwKKworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bf d2luX3BoeSByazMzOTlfd2luMDFfZGF0YSA9IHsKKwkuc2NsID0gJnJrMzI4OF93aW5fZnVsbF9z Y2wsCisJLmRhdGFfZm9ybWF0cyA9IGZvcm1hdHNfd2luX2Z1bGwsCisJLm5mb3JtYXRzID0gQVJS QVlfU0laRShmb3JtYXRzX3dpbl9mdWxsKSwKKwkuZm9ybWF0X21vZGlmaWVycyA9IGZvcm1hdF9t b2RpZmllcnNfd2luX2Z1bGxfYWZiYywKKwkuZW5hYmxlID0gVk9QX1JFRyhSSzMyODhfV0lOMF9D VFJMMCwgMHgxLCAwKSwKKwkuZm9ybWF0ID0gVk9QX1JFRyhSSzMyODhfV0lOMF9DVFJMMCwgMHg3 LCAxKSwKKwkucmJfc3dhcCA9IFZPUF9SRUcoUkszMjg4X1dJTjBfQ1RSTDAsIDB4MSwgMTIpLAor CS55X21pcl9lbiA9IFZPUF9SRUcoUkszMjg4X1dJTjBfQ1RSTDAsIDB4MSwgMjIpLAorCS5hY3Rf aW5mbyA9IFZPUF9SRUcoUkszMjg4X1dJTjBfQUNUX0lORk8sIDB4MWZmZjFmZmYsIDApLAorCS5k c3BfaW5mbyA9IFZPUF9SRUcoUkszMjg4X1dJTjBfRFNQX0lORk8sIDB4MGZmZjBmZmYsIDApLAor CS5kc3Bfc3QgPSBWT1BfUkVHKFJLMzI4OF9XSU4wX0RTUF9TVCwgMHgxZmZmMWZmZiwgMCksCisJ LnlyZ2JfbXN0ID0gVk9QX1JFRyhSSzMyODhfV0lOMF9ZUkdCX01TVCwgMHhmZmZmZmZmZiwgMCks CisJLnV2X21zdCA9IFZPUF9SRUcoUkszMjg4X1dJTjBfQ0JSX01TVCwgMHhmZmZmZmZmZiwgMCks CisJLnlyZ2JfdmlyID0gVk9QX1JFRyhSSzMyODhfV0lOMF9WSVIsIDB4M2ZmZiwgMCksCisJLnV2 X3ZpciA9IFZPUF9SRUcoUkszMjg4X1dJTjBfVklSLCAweDNmZmYsIDE2KSwKKwkuc3JjX2FscGhh X2N0bCA9IFZPUF9SRUcoUkszMjg4X1dJTjBfU1JDX0FMUEhBX0NUUkwsIDB4ZmYsIDApLAorCS5k c3RfYWxwaGFfY3RsID0gVk9QX1JFRyhSSzMyODhfV0lOMF9EU1RfQUxQSEFfQ1RSTCwgMHhmZiwg MCksCit9OworCisvKgorICogcmszMzk5IHZvcCBiaWcgd2luZG93cyByZWdpc3RlciBsYXlvdXQg aXMgc2FtZSBhcyByazMyODgsIGJ1dCB3ZQorICogaGF2ZSBhIHNlcGFyYXRlIHJrMzM5OSB3aW4g ZGF0YSBhcnJheSBoZXJlIHNvIHRoYXQgd2UgY2FuIGFkdmVydGlzZQorICogQUZCQyBvbiB0aGUg cHJpbWFyeSBwbGFuZS4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX2RhdGEgcmsz Mzk5X3ZvcF93aW5fZGF0YVtdID0geworCXsgLmJhc2UgPSAweDAwLCAucGh5ID0gJnJrMzM5OV93 aW4wMV9kYXRhLAorCSAgLnR5cGUgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZIH0sCisJeyAuYmFz ZSA9IDB4NDAsIC5waHkgPSAmcmszMjg4X3dpbjAxX2RhdGEsCisJICAudHlwZSA9IERSTV9QTEFO RV9UWVBFX09WRVJMQVkgfSwKKwl7IC5iYXNlID0gMHgwMCwgLnBoeSA9ICZyazMyODhfd2luMjNf ZGF0YSwKKwkgIC50eXBlID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSB9LAorCXsgLmJhc2UgPSAw eDUwLCAucGh5ID0gJnJrMzI4OF93aW4yM19kYXRhLAorCSAgLnR5cGUgPSBEUk1fUExBTkVfVFlQ RV9DVVJTT1IgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2FmYmMgcmszMzk5X3Zv cF9hZmJjID0geworCS5yc3RuID0gVk9QX1JFRyhSSzMzOTlfQUZCQ0QwX0NUUkwsIDB4MSwgMyks CisJLmVuYWJsZSA9IFZPUF9SRUcoUkszMzk5X0FGQkNEMF9DVFJMLCAweDEsIDApLAorCS53aW5f c2VsID0gVk9QX1JFRyhSSzMzOTlfQUZCQ0QwX0NUUkwsIDB4MywgMSksCisJLmZvcm1hdCA9IFZP UF9SRUcoUkszMzk5X0FGQkNEMF9DVFJMLCAweDFmLCAxNiksCisJLmhyZWdfYmxvY2tfc3BsaXQg PSBWT1BfUkVHKFJLMzM5OV9BRkJDRDBfQ1RSTCwgMHgxLCAyMSksCisJLmhkcl9wdHIgPSBWT1Bf UkVHKFJLMzM5OV9BRkJDRDBfSERSX1BUUiwgMHhmZmZmZmZmZiwgMCksCisJLnBpY19zaXplID0g Vk9QX1JFRyhSSzMzOTlfQUZCQ0QwX1BJQ19TSVpFLCAweGZmZmZmZmZmLCAwKSwKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2RhdGEgcmszMzk5X3ZvcF9iaWcgPSB7CkBAIC04MjYsOSAr OTA1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2RhdGEgcmszMzk5X3ZvcF9iaWcgPSB7 CiAJLmNvbW1vbiA9ICZyazMyODhfY29tbW9uLAogCS5tb2Rlc2V0ID0gJnJrMzI4OF9tb2Rlc2V0 LAogCS5vdXRwdXQgPSAmcmszMzk5X291dHB1dCwKKwkuYWZiYyA9ICZyazMzOTlfdm9wX2FmYmMs CiAJLm1pc2MgPSAmcmszMzY4X21pc2MsCi0JLndpbiA9IHJrMzM2OF92b3Bfd2luX2RhdGEsCi0J Lndpbl9zaXplID0gQVJSQVlfU0laRShyazMzNjhfdm9wX3dpbl9kYXRhKSwKKwkud2luID0gcmsz Mzk5X3ZvcF93aW5fZGF0YSwKKwkud2luX3NpemUgPSBBUlJBWV9TSVpFKHJrMzM5OV92b3Bfd2lu X2RhdGEpLAogCS53aW5feXV2Mnl1diA9IHJrMzM5OV92b3BfYmlnX3dpbl95dXYyeXV2X2RhdGEs CiB9OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA==