From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 20/33] drm/i915: Use VMA for ringbuffer tracking Date: Sun, 7 Aug 2016 15:45:28 +0100 Message-ID: <1470581141-14432-21-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DA786E302 for ; Sun, 7 Aug 2016 14:46:12 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id x83so11038978wma.3 for ; Sun, 07 Aug 2016 07:46:12 -0700 (PDT) In-Reply-To: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> 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 VXNlIHRoZSBHR1RUIFZNQSBhcyB0aGUgcHJpbWFyeSBjb29raWUgZm9yIGhhbmRpbmcgcmluZyBv YmplY3RzIGFzCnRoZSBtb3N0IGNvbW1vbiBhY3Rpb24gdXBvbiB0aGUgcmluZyBpcyBtYXBwaW5n IGFuZCB1bm1hcHBpbmcgd2hpY2ggYWN0CnVwb24gdGhlIFZNQSBpdHNlbGYuIEJ5IHJlc3RydWN0 dXJpbmcgdGhlIGNvZGUgdG8gd29yayB3aXRoIHRoZSByaW5nClZNQSwgd2UgY2FuIHNocmluayB0 aGUgY29kZSBhbmQgcmVtb3ZlIGEgZmV3IGN5Y2xlcyBmcm9tIGNvbnRleHQgcGlubmluZy4KClNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgIHwgICA0ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgMTggKy0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgMTcgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICB8IDI0NSArKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgIDE0 ICstCiA2IGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxNjEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA2YTAzZmE3YjYyNjQuLjA5YjFk MDVkMDAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTM1Niw3ICszNTYs NyBAQCBzdGF0aWMgaW50IHBlcl9maWxlX2N0eF9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9p ZCAqZGF0YSkKIAkJaWYgKGN0eC0+ZW5naW5lW25dLnN0YXRlKQogCQkJcGVyX2ZpbGVfc3RhdHMo MCwgY3R4LT5lbmdpbmVbbl0uc3RhdGUtPm9iaiwgZGF0YSk7CiAJCWlmIChjdHgtPmVuZ2luZVtu XS5yaW5nKQotCQkJcGVyX2ZpbGVfc3RhdHMoMCwgY3R4LT5lbmdpbmVbbl0ucmluZy0+b2JqLCBk YXRhKTsKKwkJCXBlcl9maWxlX3N0YXRzKDAsIGN0eC0+ZW5naW5lW25dLnJpbmctPnZtYS0+b2Jq LCBkYXRhKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCmluZGV4IDIxYTRkMDIyMGMxNy4uMDljM2FlMGMyODJhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTExMDIsMTIgKzExMDIsMTIgQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ CWVlLT5jcHVfcmluZ190YWlsID0gcmluZy0+dGFpbDsKIAkJCWVlLT5yaW5nYnVmZmVyID0KIAkJ CQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKLQkJCQkJCQkgICAgICBy aW5nLT5vYmopOworCQkJCQkJCSAgICAgIHJpbmctPnZtYS0+b2JqKTsKIAkJfQogCiAJCWVlLT5o d3NfcGFnZSA9CiAJCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKLQkJ CQkJCSAgICAgIGVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqKTsKKwkJCQkJCSAgICAgIGVuZ2luZS0+ c3RhdHVzX3BhZ2Uudm1hLT5vYmopOwogCiAJCWVlLT53YV9jdHggPSBpOTE1X2Vycm9yX2dndHRf b2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKIAkJCQkJCQkgICBlbmdpbmUtPndhX2N0eC5vYmopOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDAzYTRkMmFl NzFkYi4uNzYxMjAxZmY2YjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3Vi bWlzc2lvbi5jCkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfY3R4X2Rl c2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9w cml2KSB7CiAJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtlbmdpbmUt PmlkXTsKIAkJc3RydWN0IGd1Y19leGVjbGlzdF9jb250ZXh0ICpscmMgPSAmZGVzYy5scmNbZW5n aW5lLT5ndWNfaWRdOwotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCQlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKIAogCQkvKiBUT0RPOiBXZSBoYXZlIGEgZGVzaWduIGlzc3VlIHRv IGJlIHNvbHZlZCBoZXJlLiBPbmx5IHdoZW4gd2UKIAkJICogcmVjZWl2ZSB0aGUgZmlyc3QgYmF0 Y2gsIHdlIGtub3cgd2hpY2ggZW5naW5lIGlzIHVzZWQgYnkgdGhlCkBAIC0zNTgsMTcgKzM1OCwx NSBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs CiAJCWxyYy0+Y29udGV4dF9kZXNjID0gbG93ZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2MpOwogCiAJ CS8qIFRoZSBzdGF0ZSBwYWdlIGlzIGFmdGVyIFBQSFdTUCAqLwotCQlnZnhfYWRkciA9IGNlLT5z dGF0ZS0+bm9kZS5zdGFydDsKLQkJbHJjLT5yaW5nX2xjcmEgPSBnZnhfYWRkciArIExSQ19TVEFU RV9QTiAqIFBBR0VfU0laRTsKKwkJdm1hID0gY2UtPnN0YXRlOworCQlscmMtPnJpbmdfbGNyYSA9 IHZtYS0+bm9kZS5zdGFydCArIExSQ19TVEFURV9QTiAqIFBBR0VfU0laRTsKIAkJbHJjLT5jb250 ZXh0X2lkID0gKGNsaWVudC0+Y3R4X2luZGV4IDw8IEdVQ19FTENfQ1RYSURfT0ZGU0VUKSB8CiAJ CQkJKGVuZ2luZS0+Z3VjX2lkIDw8IEdVQ19FTENfRU5HSU5FX09GRlNFVCk7CiAKLQkJb2JqID0g Y2UtPnJpbmctPm9iajsKLQkJZ2Z4X2FkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2Jq KTsKLQotCQlscmMtPnJpbmdfYmVnaW4gPSBnZnhfYWRkcjsKLQkJbHJjLT5yaW5nX2VuZCA9IGdm eF9hZGRyICsgb2JqLT5iYXNlLnNpemUgLSAxOwotCQlscmMtPnJpbmdfbmV4dF9mcmVlX2xvY2F0 aW9uID0gZ2Z4X2FkZHI7CisJCXZtYSA9IGNlLT5yaW5nLT52bWE7CisJCWxyYy0+cmluZ19iZWdp biA9IHZtYS0+bm9kZS5zdGFydDsKKwkJbHJjLT5yaW5nX2VuZCA9IHZtYS0+bm9kZS5zdGFydCAr IHZtYS0+bm9kZS5zaXplIC0gMTsKKwkJbHJjLT5yaW5nX25leHRfZnJlZV9sb2NhdGlvbiA9IGxy Yy0+cmluZ19iZWdpbjsKIAkJbHJjLT5yaW5nX2N1cnJlbnRfdGFpbF9wb2ludGVyX3ZhbHVlID0g MDsKIAogCQlkZXNjLmVuZ2luZXNfdXNlZCB8PSAoMSA8PCBlbmdpbmUtPmd1Y19pZCk7CkBAIC05 MjUsNyArOTIzLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9hZHMoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQogCSAqIHRvIGZpbmQgaXQuCiAJICovCiAJZW5naW5lID0gJmRldl9wcml2LT5lbmdp bmVbUkNTXTsKLQlhZHMtPmdvbGRlbl9jb250ZXh0X2xyY2EgPSBlbmdpbmUtPnN0YXR1c19wYWdl LmdmeF9hZGRyOworCWFkcy0+Z29sZGVuX2NvbnRleHRfbHJjYSA9IGVuZ2luZS0+c3RhdHVzX3Bh Z2UuZ2d0dF9vZmZzZXQ7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikKIAkJ YWRzLT5lbmdfc3RhdGVfc2l6ZVtlbmdpbmUtPmd1Y19pZF0gPSBpbnRlbF9scl9jb250ZXh0X3Np emUoZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggNzRjMDhiZjVkMTM2Li4x OThkNTliMjcyYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xMjczLDcgKzEyNzMs NyBAQCBzdGF0aWMgdm9pZCBscmNfaW5pdF9od3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsK IAogCUk5MTVfV1JJVEUoUklOR19IV1NfUEdBKGVuZ2luZS0+bW1pb19iYXNlKSwKLQkJICAgKHUz MillbmdpbmUtPnN0YXR1c19wYWdlLmdmeF9hZGRyKTsKKwkJICAgZW5naW5lLT5zdGF0dXNfcGFn ZS5nZ3R0X29mZnNldCk7CiAJUE9TVElOR19SRUFEKFJJTkdfSFdTX1BHQShlbmdpbmUtPm1taW9f YmFzZSkpOwogfQogCkBAIC0xNjk1LDkgKzE2OTUsOSBAQCB2b2lkIGludGVsX2xvZ2ljYWxfcmlu Z19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWludGVsX2VuZ2lu ZV9jbGVhbnVwX2NvbW1vbihlbmdpbmUpOwogCi0JaWYgKGVuZ2luZS0+c3RhdHVzX3BhZ2Uub2Jq KSB7Ci0JCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5lLT5zdGF0dXNfcGFnZS5vYmop OwotCQllbmdpbmUtPnN0YXR1c19wYWdlLm9iaiA9IE5VTEw7CisJaWYgKGVuZ2luZS0+c3RhdHVz X3BhZ2Uudm1hKSB7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5lLT5zdGF0dXNf cGFnZS52bWEtPm9iaik7CisJCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0gTlVMTDsKIAl9CiAJ aW50ZWxfbHJfY29udGV4dF91bnBpbihkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7 CiAKQEAgLTE3NDQsMTYgKzE3NDQsMTcgQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50CiBscmNfc2V0dXBfaHdzKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7Cisj ZGVmaW5lIEhXU19PRkZTRVQgKExSQ19QUEhXU1BfUE4gKiBQQUdFX1NJWkUpCiAJdm9pZCAqaHdz OwogCiAJLyogVGhlIEhXU1AgaXMgcGFydCBvZiB0aGUgZGVmYXVsdCBjb250ZXh0IG9iamVjdCBp biBMUkMgbW9kZS4gKi8KLQllbmdpbmUtPnN0YXR1c19wYWdlLmdmeF9hZGRyID0KLQkJdm1hLT5u b2RlLnN0YXJ0ICsgTFJDX1BQSFdTUF9QTiAqIFBBR0VfU0laRTsKIAlod3MgPSBpOTE1X2dlbV9v YmplY3RfcGluX21hcCh2bWEtPm9iaik7CiAJaWYgKElTX0VSUihod3MpKQogCQlyZXR1cm4gUFRS X0VSUihod3MpOwotCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0gaHdzICsgTFJDX1BQ SFdTUF9QTiAqIFBBR0VfU0laRTsKLQllbmdpbmUtPnN0YXR1c19wYWdlLm9iaiA9IHZtYS0+b2Jq OworCisJZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHIgPSBod3MgKyBIV1NfT0ZGU0VUOwor CWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2d0dF9vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQgKyBIV1Nf T0ZGU0VUOworCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0gdm1hOwogCiAJcmV0dXJuIDA7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggZjI0ZTRlODNhZmQ3 Li5jZmY5OTM1ZmUzNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK QEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19w YWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJbW1pbyA9IFJJTkdfSFdTX1BH QShlbmdpbmUtPm1taW9fYmFzZSk7CiAJfQogCi0JSTkxNV9XUklURShtbWlvLCAodTMyKWVuZ2lu ZS0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIpOworCUk5MTVfV1JJVEUobW1pbywgZW5naW5lLT5zdGF0 dXNfcGFnZS5nZ3R0X29mZnNldCk7CiAJUE9TVElOR19SRUFEKG1taW8pOwogCiAJLyoKQEAgLTUz MSw3ICs1MzEsNiBAQCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IGVuZ2luZS0+YnVmZmVy OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSByaW5nLT5vYmo7CiAJaW50IHJl dCA9IDA7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7CkBAIC01NzEsNyArNTcwLDcgQEAgc3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiByZWdpc3RlcnMgd2l0aCB0aGUgYWJv dmUgc2VxdWVuY2UgKHRoZSByZWFkYmFjayBvZiB0aGUgSEVBRCByZWdpc3RlcnMKIAkgKiBhbHNv IGVuZm9yY2VzIG9yZGVyaW5nKSwgb3RoZXJ3aXNlIHRoZSBodyBtaWdodCBsb3NlIHRoZSBuZXcg cmluZwogCSAqIHJlZ2lzdGVyIHZhbHVlcy4gKi8KLQlJOTE1X1dSSVRFX1NUQVJUKGVuZ2luZSwg aTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikpOworCUk5MTVfV1JJVEVfU1RBUlQoZW5naW5l LCByaW5nLT52bWEtPm5vZGUuc3RhcnQpOwogCiAJLyogV2FDbGVhclJpbmdCdWZIZWFkUmVnQXRJ bml0OmN0ZyxlbGsgKi8KIAlpZiAoSTkxNV9SRUFEX0hFQUQoZW5naW5lKSkKQEAgLTU4NiwxNiAr NTg1LDE2IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAKIAkvKiBJZiB0aGUgaGVhZCBpcyBzdGlsbCBub3QgemVybywgdGhlIHJp bmcgaXMgZGVhZCAqLwogCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEX0NUTChlbmdpbmUpICYgUklO R19WQUxJRCkgIT0gMCAmJgotCQkgICAgIEk5MTVfUkVBRF9TVEFSVChlbmdpbmUpID09IGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChvYmopICYmCisJCSAgICAgSTkxNV9SRUFEX1NUQVJUKGVuZ2lu ZSkgPT0gcmluZy0+dm1hLT5ub2RlLnN0YXJ0ICYmCiAJCSAgICAgKEk5MTVfUkVBRF9IRUFEKGVu Z2luZSkgJiBIRUFEX0FERFIpID09IDAsIDUwKSkgewogCQlEUk1fRVJST1IoIiVzIGluaXRpYWxp emF0aW9uIGZhaWxlZCAiCi0JCQkgICJjdGwgJTA4eCAodmFsaWQ/ICVkKSBoZWFkICUwOHggdGFp bCAlMDh4IHN0YXJ0ICUwOHggW2V4cGVjdGVkICUwOGx4XVxuIiwKKwkJCSAgImN0bCAlMDh4ICh2 YWxpZD8gJWQpIGhlYWQgJTA4eCB0YWlsICUwOHggc3RhcnQgJTA4eCBbZXhwZWN0ZWQgJTA4bGx4 XVxuIiwKIAkJCSAgZW5naW5lLT5uYW1lLAogCQkJICBJOTE1X1JFQURfQ1RMKGVuZ2luZSksCiAJ CQkgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSAmIFJJTkdfVkFMSUQsCiAJCQkgIEk5MTVfUkVBRF9I RUFEKGVuZ2luZSksIEk5MTVfUkVBRF9UQUlMKGVuZ2luZSksCiAJCQkgIEk5MTVfUkVBRF9TVEFS VChlbmdpbmUpLAotCQkJICAodW5zaWduZWQgbG9uZylpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSk7CisJCQkgIHJpbmctPnZtYS0+bm9kZS5zdGFydCk7CiAJCXJldCA9IC1FSU87CiAJCWdv dG8gb3V0OwogCX0KQEAgLTE4NTMsNzkgKzE4NTIsNzggQEAgc3RhdGljIHZvaWQgY2xlYW51cF9w aHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGlj IHZvaWQgY2xlYW51cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKIAotCW9iaiA9IGVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqOwotCWlmIChvYmogPT0gTlVM TCkKKwl2bWEgPSBudWxsaWZ5KCZlbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7CisJaWYgKCF2bWEp CiAJCXJldHVybjsKIAotCWt1bm1hcChzZ19wYWdlKG9iai0+cGFnZXMtPnNnbCkpOwotCWk5MTVf Z2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Ci0JaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwot CWVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqID0gTlVMTDsKKwlpOTE1X3ZtYV91bnBpbih2bWEpOwor CWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAodm1hLT5vYmopOworCWk5MTVfZ2VtX29iamVjdF9w dXQodm1hLT5vYmopOwogfQogCiBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmogPSBlbmdpbmUtPnN0YXR1c19wYWdlLm9iajsKLQotCWlmIChvYmogPT0gTlVMTCkgewotCQl1 bnNpZ25lZCBmbGFnczsKLQkJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXVuc2lnbmVkIGZsYWdzOworCWludCByZXQ7 CiAKLQkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIDQw OTYpOwotCQlpZiAoSVNfRVJSKG9iaikpIHsKLQkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9j YXRlIHN0YXR1cyBwYWdlXG4iKTsKLQkJCXJldHVybiBQVFJfRVJSKG9iaik7Ci0JCX0KKwlvYmog PSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKCZlbmdpbmUtPmk5MTUtPmRybSwgNDA5Nik7CisJaWYg KElTX0VSUihvYmopKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBw YWdlXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKKwl9CiAKLQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIEk5MTVfQ0FDSEVfTExDKTsKLQkJaWYgKHJldCkK LQkJCWdvdG8gZXJyX3VucmVmOwotCi0JCWZsYWdzID0gMDsKLQkJaWYgKCFIQVNfTExDKGVuZ2lu ZS0+aTkxNSkpCi0JCQkvKiBPbiBnMzMsIHdlIGNhbm5vdCBwbGFjZSBIV1MgYWJvdmUgMjU2TWlC LCBzbwotCQkJICogcmVzdHJpY3QgaXRzIHBpbm5pbmcgdG8gdGhlIGxvdyBtYXBwYWJsZSBhcmVu YS4KLQkJCSAqIFRob3VnaCB0aGlzIHJlc3RyaWN0aW9uIGlzIG5vdCBkb2N1bWVudGVkIGZvcgot CQkJICogZ2VuNCwgZ2VuNSwgb3IgYnl0LCB0aGV5IGFsc28gYmVoYXZlIHNpbWlsYXJseQotCQkJ ICogYW5kIGhhbmcgaWYgdGhlIEhXUyBpcyBwbGFjZWQgYXQgdGhlIHRvcCBvZiB0aGUKLQkJCSAq IEdUVC4gVG8gZ2VuZXJhbGlzZSwgaXQgYXBwZWFycyB0aGF0IGFsbCAhbGxjCi0JCQkgKiBwbGF0 Zm9ybXMgaGF2ZSBpc3N1ZXMgd2l0aCB1cyBwbGFjaW5nIHRoZSBIV1MKLQkJCSAqIGFib3ZlIHRo ZSBtYXBwYWJsZSByZWdpb24gKGV2ZW4gdGhvdWdoIHdlIG5ldmVyCi0JCQkgKiBhY3R1YWx5IG1h cCBpdCkuCi0JCQkgKi8KLQkJCWZsYWdzIHw9IFBJTl9NQVBQQUJMRTsKLQkJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgNDA5NiwgZmxhZ3MpOwotCQlpZiAocmV0 KSB7Ci1lcnJfdW5yZWY6Ci0JCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci0JCQlyZXR1cm4g cmV0OwotCQl9CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIEk5 MTVfQ0FDSEVfTExDKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl91bnJlZjsKIAotCQllbmdpbmUt PnN0YXR1c19wYWdlLm9iaiA9IG9iajsKKwl2bWEgPSBpOTE1X3ZtYV9jcmVhdGUob2JqLCAmZW5n aW5lLT5pOTE1LT5nZ3R0LmJhc2UsIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkgeworCQlyZXQg PSBQVFJfRVJSKHZtYSk7CisJCWdvdG8gZXJyX3VucmVmOwogCX0KIAotCWVuZ2luZS0+c3RhdHVz X3BhZ2UuZ2Z4X2FkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKLQllbmdpbmUt PnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9IGttYXAoc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wpKTsK LQltZW1zZXQoZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHIsIDAsIFBBR0VfU0laRSk7CisJ ZmxhZ3MgPSBQSU5fR0xPQkFMOworCWlmICghSEFTX0xMQyhlbmdpbmUtPmk5MTUpKQorCQkvKiBP biBnMzMsIHdlIGNhbm5vdCBwbGFjZSBIV1MgYWJvdmUgMjU2TWlCLCBzbworCQkgKiByZXN0cmlj dCBpdHMgcGlubmluZyB0byB0aGUgbG93IG1hcHBhYmxlIGFyZW5hLgorCQkgKiBUaG91Z2ggdGhp cyByZXN0cmljdGlvbiBpcyBub3QgZG9jdW1lbnRlZCBmb3IKKwkJICogZ2VuNCwgZ2VuNSwgb3Ig Ynl0LCB0aGV5IGFsc28gYmVoYXZlIHNpbWlsYXJseQorCQkgKiBhbmQgaGFuZyBpZiB0aGUgSFdT IGlzIHBsYWNlZCBhdCB0aGUgdG9wIG9mIHRoZQorCQkgKiBHVFQuIFRvIGdlbmVyYWxpc2UsIGl0 IGFwcGVhcnMgdGhhdCBhbGwgIWxsYworCQkgKiBwbGF0Zm9ybXMgaGF2ZSBpc3N1ZXMgd2l0aCB1 cyBwbGFjaW5nIHRoZSBIV1MKKwkJICogYWJvdmUgdGhlIG1hcHBhYmxlIHJlZ2lvbiAoZXZlbiB0 aG91Z2ggd2UgbmV2ZXIKKwkJICogYWN0dWFseSBtYXAgaXQpLgorCQkgKi8KKwkJZmxhZ3MgfD0g UElOX01BUFBBQkxFOworCXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDQwOTYsIGZsYWdzKTsK KwlpZiAocmV0KQorCQlnb3RvIGVycl91bnJlZjsKIAotCURSTV9ERUJVR19EUklWRVIoIiVzIGh3 cyBvZmZzZXQ6IDB4JTA4eFxuIiwKLQkJCWVuZ2luZS0+bmFtZSwgZW5naW5lLT5zdGF0dXNfcGFn ZS5nZnhfYWRkcik7CisJZW5naW5lLT5zdGF0dXNfcGFnZS52bWEgPSB2bWE7CisJZW5naW5lLT5z dGF0dXNfcGFnZS5nZ3R0X29mZnNldCA9IHZtYS0+bm9kZS5zdGFydDsKKwllbmdpbmUtPnN0YXR1 c19wYWdlLnBhZ2VfYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaik7CiAKKwlEUk1f REVCVUdfRFJJVkVSKCIlcyBod3Mgb2Zmc2V0OiAweCUwOGxseFxuIiwKKwkJCSBlbmdpbmUtPm5h bWUsIHZtYS0+bm9kZS5zdGFydCk7CiAJcmV0dXJuIDA7CisKK2Vycl91bnJlZjoKKwlpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBpbml0X3Bo eXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIAotCWlmICghZGV2 X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpIHsKLQkJZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgg PQotCQkJZHJtX3BjaV9hbGxvYygmZGV2X3ByaXYtPmRybSwgUEFHRV9TSVpFLCBQQUdFX1NJWkUp OwotCQlpZiAoIWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoKQotCQkJcmV0dXJuIC1FTk9NRU07 Ci0JfQorCWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoID0KKwkJZHJtX3BjaV9hbGxvYygmZGV2 X3ByaXYtPmRybSwgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghZGV2X3ByaXYtPnN0YXR1 c19wYWdlX2RtYWgpCisJCXJldHVybiAtRU5PTUVNOwogCiAJZW5naW5lLT5zdGF0dXNfcGFnZS5w YWdlX2FkZHIgPSBkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+dmFkZHI7CiAJbWVtc2V0KGVu Z2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyLCAwLCBQQUdFX1NJWkUpOwpAQCAtMTkzNSw1NSAr MTkzMywzMSBAQCBzdGF0aWMgaW50IGluaXRfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAKIGludCBpbnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5l bmdpbmUtPmk5MTU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHJpbmctPm9i ajsKIAkvKiBSaW5nIHdyYXBhcm91bmQgYXQgb2Zmc2V0IDAgc29tZXRpbWVzIGhhbmdzLiBObyBp ZGVhIHdoeS4gKi8KLQl1bnNpZ25lZCBmbGFncyA9IFBJTl9PRkZTRVRfQklBUyB8IDQwOTY7CisJ dW5zaWduZWQgaW50IGZsYWdzID0gUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklBUyB8IDQwOTY7 CiAJdm9pZCAqYWRkcjsKIAlpbnQgcmV0OwogCi0JaWYgKEhBU19MTEMoZGV2X3ByaXYpICYmICFv YmotPnN0b2xlbikgewotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxM LCAwLCBQQUdFX1NJWkUsIGZsYWdzKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7Ci0JCWlm IChyZXQpCi0JCQlnb3RvIGVycl91bnBpbjsKLQotCQlhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAob2JqKTsKLQkJaWYgKElTX0VSUihhZGRyKSkgewotCQkJcmV0ID0gUFRSX0VSUihhZGRy KTsKLQkJCWdvdG8gZXJyX3VucGluOwotCQl9Ci0JfSBlbHNlIHsKLQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgUEFHRV9TSVpFLAotCQkJCQkgICAgICAgZmxh Z3MgfCBQSU5fTUFQUEFCTEUpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKKwlHRU1fQlVH X09OKHJpbmctPnZhZGRyKTsKIAotCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9k b21haW4ob2JqLCB0cnVlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyX3VucGluOworCWlmIChy aW5nLT52bWFwKQorCQlmbGFncyB8PSBQSU5fTUFQUEFCTEU7CiAKLQkJLyogQWNjZXNzIHRocm91 Z2ggdGhlIEdUVCByZXF1aXJlcyB0aGUgZGV2aWNlIHRvIGJlIGF3YWtlLiAqLwotCQlhc3NlcnRf cnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYpOworCXJldCA9IGk5MTVfdm1hX3BpbihyaW5nLT52 bWEsIDAsIFBBR0VfU0laRSwgZmxhZ3MpOworCWlmICh1bmxpa2VseShyZXQpKQorCQlyZXR1cm4g cmV0OwogCi0JCWFkZHIgPSAodm9pZCBfX2ZvcmNlICopCi0JCQlpOTE1X3ZtYV9waW5faW9tYXAo aTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKSk7Ci0JCWlmIChJU19FUlIoYWRkcikpIHsKLQkJCXJl dCA9IFBUUl9FUlIoYWRkcik7Ci0JCQlnb3RvIGVycl91bnBpbjsKLQkJfQorCWlmIChyaW5nLT52 bWFwKQorCQlhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAocmluZy0+dm1hLT5vYmopOwor CWVsc2UKKwkJYWRkciA9ICh2b2lkIF9fZm9yY2UgKilpOTE1X3ZtYV9waW5faW9tYXAocmluZy0+ dm1hKTsKKwlpZiAoSVNfRVJSKGFkZHIpKSB7CisJCWk5MTVfdm1hX3VucGluKHJpbmctPnZtYSk7 CisJCXJldHVybiBQVFJfRVJSKGFkZHIpOwogCX0KIAogCXJpbmctPnZhZGRyID0gYWRkcjsKLQly aW5nLT52bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOwogCXJldHVybiAwOwotCi1lcnJf dW5waW46Ci0JaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4ob2JqKTsKLQlyZXR1cm4gcmV0Owog fQogCiB2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCkBAIC0x OTkxLDYwICsxOTY1LDY2IEBAIHZvaWQgaW50ZWxfcmluZ191bnBpbihzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZykKIAlHRU1fQlVHX09OKCFyaW5nLT52bWEpOwogCUdFTV9CVUdfT04oIXJpbmctPnZh ZGRyKTsKIAotCWlmIChIQVNfTExDKHJpbmctPmVuZ2luZS0+aTkxNSkgJiYgIXJpbmctPm9iai0+ c3RvbGVuKQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHJpbmctPm9iaik7CisJaWYgKHJp bmctPnZtYXApCisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAocmluZy0+dm1hLT5vYmopOwog CWVsc2UKIAkJaTkxNV92bWFfdW5waW5faW9tYXAocmluZy0+dm1hKTsKIAlyaW5nLT52YWRkciA9 IE5VTEw7CiAKLQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihyaW5nLT5vYmopOwotCXJpbmct PnZtYSA9IE5VTEw7CisJaTkxNV92bWFfdW5waW4ocmluZy0+dm1hKTsKIH0KIAotc3RhdGljIHZv aWQgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykK LXsKLQlpOTE1X2dlbV9vYmplY3RfcHV0KHJpbmctPm9iaik7Ci0JcmluZy0+b2JqID0gTlVMTDsK LX0KLQotc3RhdGljIGludCBpbnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQorc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqCitpbnRlbF9yaW5nX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCWludCByZXQ7CiAKLQlvYmogPSBOVUxM OwotCWlmICghSEFTX0xMQyhkZXYpKQotCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbihkZXYsIHJpbmctPnNpemUpOwotCWlmIChvYmogPT0gTlVMTCkKLQkJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZShkZXYsIHJpbmctPnNpemUpOworCW9iaiA9IEVSUl9QVFIoLUVOT0RF Vik7CisJaWYgKCFIQVNfTExDKGRldl9wcml2KSkKKwkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oJmRldl9wcml2LT5kcm0sIHNpemUpOwogCWlmIChJU19FUlIob2JqKSkKLQkJ cmV0dXJuIFBUUl9FUlIob2JqKTsKKwkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZGV2 X3ByaXYtPmRybSwgc2l6ZSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gRVJSX0NBU1Qo b2JqKTsKIAogCS8qIG1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRl IGJ5IGRlZmF1bHQgKi8KIAlvYmotPmd0X3JvID0gMTsKIAotCXJpbmctPm9iaiA9IG9iajsKKwlp ZiAoSEFTX0xMQyhkZXZfcHJpdikgJiYgIW9iai0+c3RvbGVuKQorCQlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKTsKKwllbHNlCisJCXJldCA9IGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOworCWlmIChyZXQpIHsKKwkJ dm1hID0gRVJSX1BUUihyZXQpOworCQlnb3RvIGVycjsKKwl9CiAKLQlyZXR1cm4gMDsKKwl2bWEg PSBpOTE1X3ZtYV9jcmVhdGUob2JqLCAmZGV2X3ByaXYtPmdndHQuYmFzZSwgTlVMTCk7CisJaWYg KElTX0VSUih2bWEpKQorCQlnb3RvIGVycjsKKworCXJldHVybiB2bWE7CisKK2VycjoKKwlpOTE1 X2dlbV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIHZtYTsKIH0KIAogc3RydWN0IGludGVsX3Jp bmcgKgogaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgaW50IHNpemUpCiB7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Ci0JaW50IHJldDsK KwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAogCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoc2l6 ZSkpOwogCiAJcmluZyA9IGt6YWxsb2Moc2l6ZW9mKCpyaW5nKSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KHJpbmcgPT0gTlVMTCkgewotCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUg cmluZ2J1ZmZlciAlc1xuIiwKLQkJCQkgZW5naW5lLT5uYW1lKTsKKwlpZiAoIXJpbmcpCiAJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCX0KIAogCXJpbmctPmVuZ2luZSA9IGVuZ2luZTsKLQls aXN0X2FkZCgmcmluZy0+bGluaywgJmVuZ2luZS0+YnVmZmVycyk7CiAKIAlJTklUX0xJU1RfSEVB RCgmcmluZy0+cmVxdWVzdF9saXN0KTsKIApAQCAtMjA2MCwyMiArMjA0MCwyMyBAQCBpbnRlbF9l bmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6 ZSkKIAlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOwogCWludGVsX3JpbmdfdXBkYXRlX3Nw YWNlKHJpbmcpOwogCi0JcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooJmVuZ2luZS0+ aTkxNS0+ZHJtLCByaW5nKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIkZhaWxl ZCB0byBhbGxvY2F0ZSByaW5nYnVmZmVyICVzOiAlZFxuIiwKLQkJCQkgZW5naW5lLT5uYW1lLCBy ZXQpOwotCQlsaXN0X2RlbCgmcmluZy0+bGluayk7CisJdm1hID0gaW50ZWxfcmluZ19jcmVhdGVf dm1hKGVuZ2luZS0+aTkxNSwgc2l6ZSk7CisJaWYgKElTX0VSUih2bWEpKSB7CiAJCWtmcmVlKHJp bmcpOwotCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCQlyZXR1cm4gRVJSX0NBU1Qodm1hKTsKIAl9 CisJcmluZy0+dm1hID0gdm1hOworCWlmIChIQVNfTExDKGVuZ2luZS0+aTkxNSkgJiYgIXZtYS0+ b2JqLT5zdG9sZW4pCisJCXJpbmctPnZtYXAgPSB0cnVlOwogCisJbGlzdF9hZGQoJnJpbmctPmxp bmssICZlbmdpbmUtPmJ1ZmZlcnMpOwogCXJldHVybiByaW5nOwogfQogCiB2b2lkCiBpbnRlbF9y aW5nX2ZyZWUoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCiB7Ci0JaW50ZWxfZGVzdHJveV9yaW5n YnVmZmVyX29iaihyaW5nKTsKKwlpOTE1X2dlbV9vYmplY3RfcHV0KHJpbmctPnZtYS0+b2JqKTsK IAlsaXN0X2RlbCgmcmluZy0+bGluayk7CiAJa2ZyZWUocmluZyk7CiB9CkBAIC0yMTY5LDcgKzIx NTAsNiBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCQlyZXQgPSBQVFJfRVJSKHJpbmcpOwogCQlnb3RvIGVycm9yOwog CX0KLQllbmdpbmUtPmJ1ZmZlciA9IHJpbmc7CiAKIAlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZGV2 X3ByaXYpKSB7CiAJCXJldCA9IGluaXRfc3RhdHVzX3BhZ2UoZW5naW5lKTsKQEAgLTIxODQsMTEg KzIxNjQsMTAgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCXJldCA9IGludGVsX3JpbmdfcGluKHJpbmcpOwogCWlm IChyZXQpIHsKLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcGluIGFuZCBtYXAgcmluZ2J1ZmZlciAl czogJWRcbiIsCi0JCQkJZW5naW5lLT5uYW1lLCByZXQpOwotCQlpbnRlbF9kZXN0cm95X3Jpbmdi dWZmZXJfb2JqKHJpbmcpOworCQlpbnRlbF9yaW5nX2ZyZWUocmluZyk7CiAJCWdvdG8gZXJyb3I7 CiAJfQorCWVuZ2luZS0+YnVmZmVyID0gcmluZzsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggNjZkYzkzNDY5MDc2Li4zNWUyYjg3YWIx N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTI2LDEwICsy NiwxMCBAQAogICovCiAjZGVmaW5lIEk5MTVfUklOR19GUkVFX1NQQUNFIDY0CiAKLXN0cnVjdCAg aW50ZWxfaHdfc3RhdHVzX3BhZ2UgewotCXUzMgkJKnBhZ2VfYWRkcjsKLQl1bnNpZ25lZCBpbnQJ Z2Z4X2FkZHI7Ci0Jc3RydWN0CQlkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CitzdHJ1Y3QgaW50 ZWxfaHdfc3RhdHVzX3BhZ2UgeworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXUzMiAqcGFnZV9h ZGRyOworCXUzMiBnZ3R0X29mZnNldDsKIH07CiAKICNkZWZpbmUgSTkxNV9SRUFEX1RBSUwoZW5n aW5lKSBJOTE1X1JFQUQoUklOR19UQUlMKChlbmdpbmUpLT5tbWlvX2Jhc2UpKQpAQCAtODMsOSAr ODMsOCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayB7CiB9OwogCiBzdHJ1Y3QgaW50 ZWxfcmluZyB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQl2b2lkICp2YWRk cjsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl2b2lkICp2YWRkcjsKIAogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CkBAIC05Nyw2ICs5 Niw3IEBAIHN0cnVjdCBpbnRlbF9yaW5nIHsKIAlpbnQgc3BhY2U7CiAJaW50IHNpemU7CiAJaW50 IGVmZmVjdGl2ZV9zaXplOworCWJvb2wgdm1hcDsKIAogCS8qKiBXZSB0cmFjayB0aGUgcG9zaXRp b24gb2YgdGhlIHJlcXVlc3RzIGluIHRoZSByaW5nIGJ1ZmZlciwgYW5kCiAJICogd2hlbiBlYWNo IGlzIHJldGlyZWQgd2UgaW5jcmVtZW50IGxhc3RfcmV0aXJlZF9oZWFkIGFzIHRoZSBHUFUKQEAg LTUxNiw3ICs1MTYsNyBAQCBpbnQgaW5pdF93b3JrYXJvdW5kc19yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7CiAKIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX2h3c19zZXFub19h ZGRyZXNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlyZXR1cm4gZW5naW5l LT5zdGF0dXNfcGFnZS5nZnhfYWRkciArIEk5MTVfR0VNX0hXU19JTkRFWF9BRERSOworCXJldHVy biBlbmdpbmUtPnN0YXR1c19wYWdlLmdndHRfb2Zmc2V0ICsgSTkxNV9HRU1fSFdTX0lOREVYX0FE RFI7CiB9CiAKIC8qIGludGVsX2JyZWFkY3J1bWJzLmMgLS0gdXNlciBpbnRlcnJ1cHQgYm90dG9t LWhhbGYgZm9yIHdhaXRlcnMgKi8KLS0gCjIuOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK