From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 21/33] drm/i915: Use VMA for scratch page tracking Date: Sun, 7 Aug 2016 15:45:29 +0100 Message-ID: <1470581141-14432-22-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 703766E2EC for ; Sun, 7 Aug 2016 14:46:13 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id q128so11080079wma.1 for ; Sun, 07 Aug 2016 07:46:13 -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 U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICB8ICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMTcgKysrKystLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgNTkgKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggfCAxMCArKy0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgNzEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDVk NDJmZWU3NTQ2NC4uMTVlZWQ4OTdiNDk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCkBAIC02NjAsNyArNjYwLDcgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAkJCQkJTUlfU1RPUkVfUkVHSVNU RVJfTUVNIHwKIAkJCQkJTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKIAkJCWludGVsX3JpbmdfZW1p dF9yZWcocmluZywgbGFzdF9yZWcpOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGVuZ2luZS0+ c2NyYXRjaC5ndHRfb2Zmc2V0KTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBlbmdpbmUtPnNj cmF0Y2gtPm5vZGUuc3RhcnQpOwogCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwog CQl9CiAJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJM RSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCAwOWMzYWUwYzI4MmEu LjJkOTNhZjBiYjc5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC0x MDc1LDcgKzEwNzUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRfcmluZ3Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJaWYgKEhBU19CUk9LRU5fQ1NfVExCKGRl dl9wcml2KSkKIAkJCQllZS0+d2FfYmF0Y2hidWZmZXIgPQogCQkJCQlpOTE1X2Vycm9yX2dndHRf b2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKLQkJCQkJCQkJICAgICAgZW5naW5lLT5zY3JhdGNoLm9i aik7CisJCQkJCQkJCSAgICAgIGVuZ2luZS0+c2NyYXRjaC0+b2JqKTsKIAogCQkJaWYgKHJlcXVl c3QtPmN0eC0+ZW5naW5lW2ldLnN0YXRlKSB7CiAJCQkJZWUtPmN0eCA9IGk5MTVfZXJyb3JfZ2d0 dF9vYmplY3RfY3JlYXRlKGRldl9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CmluZGV4IDljYmY1NDMxYzFlMy4uM2RlZWUwMzA2ZTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0xMTMyNSw3ICsxMTMyNSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2Vu N19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKIAkJCQkJICAgICAgTUlfU1JNX0xSTV9HTE9C QUxfR1RUKTsKIAkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBERVJSTVIpOwotCQlpbnRlbF9y aW5nX2VtaXQocmluZywgcmVxLT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDI1Nik7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCAr IDI1Nik7CiAJCWlmIChJU19HRU44KGRldikpIHsKIAkJCWludGVsX3JpbmdfZW1pdChyaW5nLCAw KTsKIAkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMGRkM2QxZGUxOGFhLi4xZGVjMzU0NDFhYjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0xOTUsNiArMTk1LDU0IEBAIHZv aWQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZSwgJmVuZ2luZS0+YmF0Y2hfcG9v bCk7CiB9CiAKK2ludCBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCWludCByZXQ7CisKKwlXQVJOX09OKGVu Z2luZS0+c2NyYXRjaCk7CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbigm ZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOworCWlmICghb2JqKQorCQlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7CisJaWYgKElTX0VSUihvYmop KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggcGFnZVxuIik7CisJ CXJldHVybiBQVFJfRVJSKG9iaik7CisJfQorCisJdm1hID0gaTkxNV92bWFfY3JlYXRlKG9iaiwg JmVuZ2luZS0+aTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJ cmV0ID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycl91bnJlZjsKKwl9CisKKwlyZXQgPSBpOTE1 X3ZtYV9waW4odm1hLCAwLCA0MDk2LCBQSU5fR0xPQkFMIHwgUElOX0hJR0gpOworCWlmIChyZXQp CisJCWdvdG8gZXJyX3VucmVmOworCisJZW5naW5lLT5zY3JhdGNoID0gdm1hOworCURSTV9ERUJV R19EUklWRVIoIiVzIHBpcGUgY29udHJvbCBvZmZzZXQ6IDB4JTA4bGx4XG4iLAorCQkJIGVuZ2lu ZS0+bmFtZSwgdm1hLT5ub2RlLnN0YXJ0KTsKKwlyZXR1cm4gMDsKKworZXJyX3VucmVmOgorCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBp bnRlbF9lbmdpbmVfY2xlYW51cF9zY3JhdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKK3sKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKworCXZtYSA9IG51bGxpZnkoJmVuZ2luZS0+ c2NyYXRjaCk7CisJaWYgKCF2bWEpCisJCXJldHVybjsKKworCWk5MTVfdm1hX3VucGluKHZtYSk7 CisJaTkxNV9nZW1fb2JqZWN0X3B1dCh2bWEtPm9iaik7Cit9CisKIC8qKgogICogaW50ZWxfZW5n aW5lc19pbml0X2NvbW1vbiAtIGluaXRpYWxpemUgY2VuZ2luZSBzdGF0ZSB3aGljaCBtaWdodCBy ZXF1aXJlIGh3IGFjY2VzcwogICogQGVuZ2luZTogRW5naW5lIHRvIGluaXRpYWxpemUuCkBAIC0y MjYsNiArMjc0LDggQEAgaW50IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAgKi8KIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlpbnRlbF9lbmdpbmVfY2xlYW51 cF9zY3JhdGNoKGVuZ2luZSk7CisKIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9jbWRfcGFyc2VyKGVu Z2luZSk7CiAJaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoZW5naW5lKTsKIAlpOTE1X2dl bV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCmluZGV4IDE5OGQ1OWIyNzJiMi4uMDk2ZWI4YzJkYTE3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwpAQCAtOTE0LDcgKzkxNCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdlbjhfZW1p dF9mbHVzaF9jb2hlcmVudGwzX3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAl3 YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIChNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8CiAJ CQkJICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKSk7CiAJd2FfY3R4X2VtaXRfcmVnKGJhdGNoLCBp bmRleCwgR0VOOF9MM1NRQ1JFRzQpOwotCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgZW5naW5l LT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyNTYpOworCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwg ZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMjU2KTsKIAl3YV9jdHhfZW1pdChiYXRjaCwg aW5kZXgsIDApOwogCiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKSk7CkBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0 X2ZsdXNoX2NvaGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXdh X2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgKE1JX0xPQURfUkVHSVNURVJfTUVNX0dFTjggfAogCQkJ CSAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCkpOwogCXdhX2N0eF9lbWl0X3JlZyhiYXRjaCwgaW5k ZXgsIEdFTjhfTDNTUUNSRUc0KTsKLQl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIGVuZ2luZS0+ c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMjU2KTsKKwl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIGVu Z2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDI1Nik7CiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCAwKTsKIAogCXJldHVybiBpbmRleDsKQEAgLTk5Myw3ICs5OTMsNyBAQCBzdGF0aWMgaW50 IGdlbjhfaW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAKIAkvKiBXYUNsZWFyU2xtU3BhY2VBdENvbnRleHRTd2l0Y2g6YmR3LGNodiAqLwogCS8qIEFj dHVhbCBzY3JhdGNoIGxvY2F0aW9uIGlzIGF0IDEyOCBieXRlcyBvZmZzZXQgKi8KLQlzY3JhdGNo X2FkZHIgPSBlbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIqQ0FDSEVMSU5FX0JZVEVTOwor CXNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDIqQ0FDSEVMSU5F X0JZVEVTOwogCiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBHRlhfT1BfUElQRV9DT05UUk9M KDYpKTsKIAl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIChQSVBFX0NPTlRST0xfRkxVU0hfTDMg fApAQCAtMTA3Miw4ICsxMDcyLDggQEAgc3RhdGljIGludCBnZW45X2luaXRfaW5kaXJlY3RjdHhf YmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCS8qIFdhQ2xlYXJTbG1TcGFjZUF0 Q29udGV4dFN3aXRjaDprYmwgKi8KIAkvKiBBY3R1YWwgc2NyYXRjaCBsb2NhdGlvbiBpcyBhdCAx MjggYnl0ZXMgb2Zmc2V0ICovCiAJaWYgKElTX0tCTF9SRVZJRChkZXZfcHJpdiwgMCwgS0JMX1JF VklEX0EwKSkgewotCQl1aW50MzJfdCBzY3JhdGNoX2FkZHIKLQkJCT0gZW5naW5lLT5zY3JhdGNo Lmd0dF9vZmZzZXQgKyAyKkNBQ0hFTElORV9CWVRFUzsKKwkJdWludDMyX3Qgc2NyYXRjaF9hZGRy ID0KKwkJCWVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDIqQ0FDSEVMSU5FX0JZVEVTOwog CiAJCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7CiAJ CXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgKFBJUEVfQ09OVFJPTF9GTFVTSF9MMyB8CkBAIC0x MjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJfQogCiAJLyogc29tZSBXQSBwZXJmb3JtIHdy aXRlcyB0byBzY3JhdGNoIHBhZ2UsIGVuc3VyZSBpdCBpcyB2YWxpZCAqLwotCWlmIChlbmdpbmUt PnNjcmF0Y2gub2JqID09IE5VTEwpIHsKKwlpZiAoIWVuZ2luZS0+c2NyYXRjaCkgewogCQlEUk1f RVJST1IoInNjcmF0Y2ggcGFnZSBub3QgYWxsb2NhdGVkIGZvciAlc1xuIiwgZW5naW5lLT5uYW1l KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgc3RhdGljIGlu dCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCwKIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwotCXUzMiBzY3Jh dGNoX2FkZHIgPSBlbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllU RVM7CisJdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDIg KiBDQUNIRUxJTkVfQllURVM7CiAJYm9vbCB2Zl9mbHVzaF93YSA9IGZhbHNlLCBkY19mbHVzaF93 YSA9IGZhbHNlOwogCXUzMiBmbGFncyA9IDA7CiAJaW50IHJldDsKQEAgLTE4NDQsMTEgKzE4NDQs MTAgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiAJZWxzZQogCQllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVyX3Jp bmc7CiAJZW5naW5lLT5pbml0X2NvbnRleHQgPSBnZW44X2luaXRfcmNzX2NvbnRleHQ7Ci0JZW5n aW5lLT5jbGVhbnVwID0gaW50ZWxfZmluaV9waXBlX2NvbnRyb2w7CiAJZW5naW5lLT5lbWl0X2Zs dXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3JlbmRlcjsKIAllbmdpbmUtPmVtaXRfcmVxdWVzdCA9IGdl bjhfZW1pdF9yZXF1ZXN0X3JlbmRlcjsKIAotCXJldCA9IGludGVsX2luaXRfcGlwZV9jb250cm9s KGVuZ2luZSwgNDA5Nik7CisJcmV0ID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKGVuZ2lu ZSwgNDA5Nik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGNmZjk5MzVmZTM2Zi4uYWYyZDgxYWUzZTdkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0xNzYsNyArMTc2LDcgQEAg aW50ZWxfZW1pdF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1 MzIgc2NyYXRjaF9hZGRyID0KLQkJcmVxLT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIg KiBDQUNIRUxJTkVfQllURVM7CisJCXJlcS0+ZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsg MiAqIENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDYpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewogCXN0cnVjdCBpbnRl bF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQotCQlyZXEtPmVu Z2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKKwkJcmVxLT5l bmdpbmUtPnNjcmF0Y2gtPm5vZGUuc3RhcnQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCXUzMiBm bGFncyA9IDA7CiAJaW50IHJldDsKIApAQCAtMjg2LDcgKzI4Niw3IEBAIGdlbjdfcmVuZGVyX3Jp bmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewog CXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIg PQotCQlyZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRF UzsKKwkJcmVxLT5lbmdpbmUtPnNjcmF0Y2gtPm5vZGUuc3RhcnQgKyAyICogQ0FDSEVMSU5FX0JZ VEVTOwogCXUzMiBmbGFncyA9IDA7CiAJaW50IHJldDsKIApAQCAtMzcwLDcgKzM3MCw4IEBAIGdl bjhfZW1pdF9waXBlX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiBz dGF0aWMgaW50CiBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgbW9kZSkKIHsKLQl1MzIgc2NyYXRjaF9hZGRyID0gcmVxLT5lbmdpbmUt PnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJdTMyIHNjcmF0Y2hf YWRkciA9CisJCXJlcS0+ZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMiAqIENBQ0hFTElO RV9CWVRFUzsKIAl1MzIgZmxhZ3MgPSAwOwogCWludCByZXQ7CiAKQEAgLTYxMiw0OCArNjEzLDYg QEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLXZvaWQgaW50ZWxfZmluaV9waXBlX2NvbnRyb2wo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCWlmIChlbmdpbmUtPnNjcmF0Y2gu b2JqID09IE5VTEwpCi0JCXJldHVybjsKLQotCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGVu Z2luZS0+c2NyYXRjaC5vYmopOwotCWk5MTVfZ2VtX29iamVjdF9wdXQoZW5naW5lLT5zY3JhdGNo Lm9iaik7Ci0JZW5naW5lLT5zY3JhdGNoLm9iaiA9IE5VTEw7Ci19Ci0KLWludCBpbnRlbF9pbml0 X3BpcGVfY29udHJvbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzaXplKQot ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0JaW50IHJldDsKLQotCVdBUk5f T04oZW5naW5lLT5zY3JhdGNoLm9iaik7Ci0KLQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbigmZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOwotCWlmICghb2JqKQotCQlvYmogPSBp OTE1X2dlbV9vYmplY3RfY3JlYXRlKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7Ci0JaWYgKElT X0VSUihvYmopKSB7Ci0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggcGFn ZVxuIik7Ci0JCXJldCA9IFBUUl9FUlIob2JqKTsKLQkJZ290byBlcnI7Ci0JfQotCi0JcmV0ID0g aTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgNDA5NiwgUElOX0hJR0gpOwot CWlmIChyZXQpCi0JCWdvdG8gZXJyX3VucmVmOwotCi0JZW5naW5lLT5zY3JhdGNoLm9iaiA9IG9i ajsKLQllbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNl dChvYmopOwotCURSTV9ERUJVR19EUklWRVIoIiVzIHBpcGUgY29udHJvbCBvZmZzZXQ6IDB4JTA4 eFxuIiwKLQkJCSBlbmdpbmUtPm5hbWUsIGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0KTsKLQly ZXR1cm4gMDsKLQotZXJyX3VucmVmOgotCWk5MTVfZ2VtX29iamVjdF9wdXQoZW5naW5lLT5zY3Jh dGNoLm9iaik7Ci1lcnI6Ci0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGludCBpbnRlbF9yaW5n X3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJ c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CkBAIC0xMzA0LDggKzEyNjMsNiBA QCBzdGF0aWMgdm9pZCByZW5kZXJfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChkZXZfcHJpdi0+c2VtYXBob3JlX29iaik7 CiAJCWRldl9wcml2LT5zZW1hcGhvcmVfb2JqID0gTlVMTDsKIAl9Ci0KLQlpbnRlbF9maW5pX3Bp cGVfY29udHJvbChlbmdpbmUpOwogfQogCiBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKQEAgLTE3NjMsNyArMTcyMCw3IEBAIGk4MzBf ZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgdW5z aWduZWQgaW50IGRpc3BhdGNoX2ZsYWdzKQogewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0g cmVxLT5yaW5nOwotCXUzMiBjc19vZmZzZXQgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zm c2V0OworCXUzMiBjc19vZmZzZXQgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydDsK IAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwpAQCAtMjc5MCwx MSArMjc0NywxMSBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1cm4gcmV0OwogCiAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNikgewotCQlyZXQgPSBpbnRlbF9pbml0X3BpcGVfY29udHJvbChlbmdpbmUs IDQwOTYpOworCQlyZXQgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goZW5naW5lLCA0MDk2 KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfSBlbHNlIGlmIChIQVNfQlJPS0VOX0NT X1RMQihkZXZfcHJpdikpIHsKLQkJcmV0ID0gaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woZW5naW5l LCBJODMwX1dBX1NJWkUpOworCQlyZXQgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goZW5n aW5lLCBJODMwX1dBX1NJWkUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMzVlMmI4N2FiMTdhLi45ZTNh YjgxMjk3MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTE5 OCw2ICsxOTgsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAogCXN0cnVjdCBpbnRlbF9o d19zdGF0dXNfcGFnZSBzdGF0dXNfcGFnZTsKIAlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMg d2FfY3R4OworCXN0cnVjdCBpOTE1X3ZtYSAqc2NyYXRjaDsKIAogCXUzMiAgICAgICAgICAgICBp cnFfa2VlcF9tYXNrOyAvKiBhbHdheXMga2VlcCB0aGVzZSBpbnRlcnJ1cHRzICovCiAJdTMyCQlp cnFfZW5hYmxlX21hc2s7IC8qIGJpdG1hc2sgdG8gZW5hYmxlIHJpbmcgaW50ZXJydXB0ICovCkBA IC0zMjAsMTEgKzMyMSw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCiAJc3RydWN0IGlu dGVsX2VuZ2luZV9oYW5nY2hlY2sgaGFuZ2NoZWNrOwogCi0Jc3RydWN0IHsKLQkJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQkJdTMyIGd0dF9vZmZzZXQ7Ci0JfSBzY3JhdGNoOwot CiAJYm9vbCBuZWVkc19jbWRfcGFyc2VyOwogCiAJLyoKQEAgLTQ3NiwxMSArNDcyLDkgQEAgdm9p ZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyk7CiAKIHZv aWQgaW50ZWxfZW5naW5lX2luaXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LCB1MzIgc2Vxbm8pOwogCi1pbnQgaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSk7Ci12b2lkIGludGVsX2ZpbmlfcGlwZV9jb250 cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0KIHZvaWQgaW50ZWxfZW5naW5l X3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogaW50IGludGVs X2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworaW50 IGludGVsX2VuZ2luZV9jcmVhdGVfc2NyYXRjaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGludCBzaXplKTsKIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2VuZ2lu ZV9pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLS0gCjIuOC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK