From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v2 03/22] drm/i915/region: support contiguous allocations Date: Thu, 3 Oct 2019 20:24:25 +0100 Message-ID: <20191003192444.10113-4-matthew.auld@intel.com> References: <20191003192444.10113-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5F9D6EA54 for ; Thu, 3 Oct 2019 19:24:55 +0000 (UTC) In-Reply-To: <20191003192444.10113-1-matthew.auld@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 U29tZSBrZXJuZWwgaW50ZXJuYWwgb2JqZWN0cyBtYXkgbmVlZCB0byBiZSBhbGxvY2F0ZWQgYXMg YSBjb250aWd1b3VzCmJsb2NrLCBhbHNvIHRoaW5raW5nIGFoZWFkIHRoZSB2YXJpb3VzIGtlcm5l bCBpb19tYXBwaW5nIGludGVyZmFjZXMgc2VlbQp0byBleHBlY3QgaXQsIGFsdGhvdWdoIHRoaXMg aXMgcHVyZWx5IGEgbGltaXRhdGlvbiBpbiB0aGUga2VybmVsCkFQSS4uLnNvIHBlcmhhcHMgc29t ZXRoaW5nIHRvIGJlIGltcHJvdmVkLgoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0 aGV3LmF1bGRAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5A bGludXguaW50ZWwuY29tPgpDYzogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGlu dXguaW50ZWwuY29tPgpDYzogTWljaGFlbCBKIFJ1aGwgPG1pY2hhZWwuai5ydWhsQGludGVsLmNv bT4KLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCAgfCAg IDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jICAgIHwgIDE1 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmggICAgfCAgIDMg Ky0KIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgICB8ICA2MyAr KysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgICAgfCAg IDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaCAgICB8ICAg MyArLQogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgMTY1 ICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf cmVnaW9uLmMgIHwgICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDIyOSBpbnNlcnRpb25zKCspLCAz NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0X3R5cGVzLmgKaW5kZXggY2ZmNTI3ZTc5NjYxLi4yOTYwYWEwYzc5ZjQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKQEAgLTEx OCw2ICsxMTgsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCiAJSTkxNV9TRUxG VEVTVF9ERUNMQVJFKHN0cnVjdCBsaXN0X2hlYWQgc3RfbGluayk7CiAKKwl1bnNpZ25lZCBsb25n IGZsYWdzOworI2RlZmluZSBJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMgQklUKDApCisjZGVmaW5l IEk5MTVfQk9fQUxMT0NfRkxBR1MgKEk5MTVfQk9fQUxMT0NfQ09OVElHVU9VUykKKwogCS8qCiAJ ICogSXMgdGhlIG9iamVjdCB0byBiZSBtYXBwZWQgYXMgcmVhZC1vbmx5IHRvIHRoZSBHUFUKIAkg KiBPbmx5IGhvbm91cmVkIGlmIGhhcmR3YXJlIGhhcyByZWxldmFudCBwdGUgYml0CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmMKaW5kZXggNWZjNmU0NTQwZjgyLi4w NGNiOWY3Mjk0NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9u LmMKQEAgLTIzLDEwICsyMywxMCBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2J1ZGR5KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGludGVsX21lbW9yeV9y ZWdpb24gKm1lbSA9IG9iai0+bW0ucmVnaW9uOwogCXN0cnVjdCBsaXN0X2hlYWQgKmJsb2NrcyA9 ICZvYmotPm1tLmJsb2NrczsKLQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBJOTE1X0FMTE9DX01JTl9Q QUdFX1NJWkU7CiAJcmVzb3VyY2Vfc2l6ZV90IHNpemUgPSBvYmotPmJhc2Uuc2l6ZTsKIAlyZXNv dXJjZV9zaXplX3QgcHJldl9lbmQ7CiAJc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOwor CXVuc2lnbmVkIGludCBmbGFnczsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnN0OwogCXN0cnVjdCBzY2F0 dGVybGlzdCAqc2c7CiAJdW5zaWduZWQgaW50IHNnX3BhZ2Vfc2l6ZXM7CkBAIC00Miw2ICs0Miwx MCBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2J1ZGR5KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAorCWZsYWdzID0gSTkxNV9BTExP Q19NSU5fUEFHRV9TSVpFOworCWlmIChvYmotPmZsYWdzICYgSTkxNV9CT19BTExPQ19DT05USUdV T1VTKQorCQlmbGFncyB8PSBJOTE1X0FMTE9DX0NPTlRJR1VPVVM7CisKIAlyZXQgPSBfX2ludGVs X21lbW9yeV9yZWdpb25fZ2V0X3BhZ2VzX2J1ZGR5KG1lbSwgc2l6ZSwgZmxhZ3MsIGJsb2Nrcyk7 CiAJaWYgKHJldCkKIAkJZ290byBlcnJfZnJlZV9zZzsKQEAgLTU2LDcgKzYwLDggQEAgaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19idWRkeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ssIGJsb2NrcywgbGluaykgewogCQl1NjQgYmxv Y2tfc2l6ZSwgb2Zmc2V0OwogCi0JCWJsb2NrX3NpemUgPSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUo Jm1lbS0+bW0sIGJsb2NrKTsKKwkJYmxvY2tfc2l6ZSA9IG1pbl90KHU2NCwgc2l6ZSwKKwkJCQkg ICBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1lbS0+bW0sIGJsb2NrKSk7CiAJCW9mZnNldCA9IGk5 MTVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsKIAogCQlHRU1fQlVHX09OKG92ZXJmbG93c190 eXBlKGJsb2NrX3NpemUsIHNnLT5sZW5ndGgpKTsKQEAgLTk4LDEwICsxMDMsMTIgQEAgaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19idWRkeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogfQogCiB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0X21lbW9yeV9yZWdpb24oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24g Km1lbSkKKwkJCQkJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKKwkJCQkJdW5zaWdu ZWQgbG9uZyBmbGFncykKIHsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5tbS5ibG9ja3MpOwogCW9i ai0+bW0ucmVnaW9uID0gaW50ZWxfbWVtb3J5X3JlZ2lvbl9nZXQobWVtKTsKKwlvYmotPmZsYWdz ID0gZmxhZ3M7CiB9CiAKIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbWVtb3J5X3JlZ2lv bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQpAQCAtMTE2LDYgKzEyMyw4IEBAIGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfcmVnaW9uKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICpt ZW0sCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAorCUdFTV9CVUdfT04o ZmxhZ3MgJiB+STkxNV9CT19BTExPQ19GTEFHUyk7CisKIAlpZiAoIW1lbSkKIAkJcmV0dXJuIEVS Ul9QVFIoLUVOT0RFVik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9yZWdpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9yZWdp b24uaAppbmRleCBlYmRkYzg2ZDc4ZjcuLmYyZmY2ZjhiZmY3NCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9yZWdpb24uaApAQCAtMTcsNyArMTcsOCBAQCB2b2lkIGk5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXNfYnVkZHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJCQkgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwogCiB2b2lkIGk5MTVfZ2VtX29i amVjdF9pbml0X21lbW9yeV9yZWdpb24oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK LQkJCQkJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7CisJCQkJCXN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogdm9pZCBp OTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopOwogCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCmluZGV4IDEzMTNjN2Y5 M2VmOC4uMjU0OWMyMzM0NjVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2Vs ZnRlc3RzL2h1Z2VfcGFnZXMuYwpAQCAtNDUxLDYgKzQ1MSw3IEBAIHN0YXRpYyBpbnQgaWd0X21v Y2tfZXhoYXVzdF9kZXZpY2Vfc3VwcG9ydGVkX3BhZ2VzKHZvaWQgKmFyZykKIAogc3RhdGljIGlu dCBpZ3RfbW9ja19tZW1vcnlfcmVnaW9uX2h1Z2VfcGFnZXModm9pZCAqYXJnKQogeworCWNvbnN0 IHVuc2lnbmVkIGludCBmbGFnc1tdID0geyAwLCBJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMgfTsK IAlzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQgPSBhcmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBwcGd0dC0+dm0uaTkxNTsKIAl1bnNpZ25lZCBsb25nIHN1cHBvcnRlZCA9IElO VEVMX0lORk8oaTkxNSktPnBhZ2Vfc2l6ZXM7CkBAIC00NjksNDEgKzQ3MCw0NyBAQCBzdGF0aWMg aW50IGlndF9tb2NrX21lbW9yeV9yZWdpb25faHVnZV9wYWdlcyh2b2lkICphcmcpCiAJZm9yX2Vh Y2hfc2V0X2JpdChiaXQsICZzdXBwb3J0ZWQsIGlsb2cyKEk5MTVfR1RUX01BWF9QQUdFX1NJWkUp ICsgMSkgewogCQl1bnNpZ25lZCBpbnQgcGFnZV9zaXplID0gQklUKGJpdCk7CiAJCXJlc291cmNl X3NpemVfdCBwaHlzOworCQlpbnQgaTsKIAotCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X3JlZ2lvbihtZW0sIHBhZ2Vfc2l6ZSwgMCk7Ci0JCWlmIChJU19FUlIob2JqKSkgewotCQkJZXJy ID0gUFRSX0VSUihvYmopOwotCQkJZ290byBvdXRfcmVnaW9uOwotCQl9CisJCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGZsYWdzKTsgKytpKSB7CisJCQlvYmogPSBpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3JlZ2lvbihtZW0sIHBhZ2Vfc2l6ZSwKKwkJCQkJCQkgICAgZmxhZ3NbaV0pOworCQkJ aWYgKElTX0VSUihvYmopKSB7CisJCQkJZXJyID0gUFRSX0VSUihvYmopOworCQkJCWdvdG8gb3V0 X3JlZ2lvbjsKKwkJCX0KIAotCQl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZwcGd0dC0+ dm0sIE5VTEwpOwotCQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJCWVyciA9IFBUUl9FUlIodm1hKTsK LQkJCWdvdG8gb3V0X3B1dDsKLQkJfQorCQkJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAm cHBndHQtPnZtLCBOVUxMKTsKKwkJCWlmIChJU19FUlIodm1hKSkgeworCQkJCWVyciA9IFBUUl9F UlIodm1hKTsKKwkJCQlnb3RvIG91dF9wdXQ7CisJCQl9CiAKLQkJZXJyID0gaTkxNV92bWFfcGlu KHZtYSwgMCwgMCwgUElOX1VTRVIpOwotCQlpZiAoZXJyKQotCQkJZ290byBvdXRfY2xvc2U7CisJ CQllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7CisJCQlpZiAoZXJyKQor CQkJCWdvdG8gb3V0X2Nsb3NlOwogCi0JCXBoeXMgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9h ZGRyZXNzKG9iaiwgMCk7Ci0JCWlmICghSVNfQUxJR05FRChwaHlzLCBwYWdlX3NpemUpKSB7Ci0J CQlwcl9lcnIoIm1lbW9yeSByZWdpb24gbWlzYWxpZ25lZCglcGEpXG4iLCAmcGh5cyk7Ci0JCQll cnIgPSAtRUlOVkFMOwotCQkJZ290byBvdXRfY2xvc2U7Ci0JCX0KKwkJCXBoeXMgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNzKG9iaiwgMCk7CisJCQlpZiAoIUlTX0FMSUdORUQocGh5 cywgcGFnZV9zaXplKSkgeworCQkJCXByX2VycigibWVtb3J5IHJlZ2lvbiBtaXNhbGlnbmVkKCVw YSkgZmxhZ3M9JXVcbiIsCisJCQkJICAgICAgICZwaHlzLCBmbGFnc1tpXSk7CisJCQkJZXJyID0g LUVJTlZBTDsKKwkJCQlnb3RvIG91dF9jbG9zZTsKKwkJCX0KIAotCQlpZiAodm1hLT5wYWdlX3Np emVzLmd0dCAhPSBwYWdlX3NpemUpIHsKLQkJCXByX2VycigicGFnZV9zaXplcy5ndHQ9JXUsIGV4 cGVjdGVkPSV1XG4iLAotCQkJICAgICAgIHZtYS0+cGFnZV9zaXplcy5ndHQsIHBhZ2Vfc2l6ZSk7 Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBvdXRfdW5waW47Ci0JCX0KKwkJCWlmICh2bWEt PnBhZ2Vfc2l6ZXMuZ3R0ICE9IHBhZ2Vfc2l6ZSkgeworCQkJCXByX2VycigicGFnZV9zaXplcy5n dHQ9JXUsIGV4cGVjdGVkPSV1IGZsYWdzPSV1XG4iLAorCQkJCSAgICAgICB2bWEtPnBhZ2Vfc2l6 ZXMuZ3R0LCBwYWdlX3NpemUsIGZsYWdzW2ldKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJCWdv dG8gb3V0X3VucGluOworCQkJfQogCi0JCWk5MTVfdm1hX3VucGluKHZtYSk7Ci0JCWk5MTVfdm1h X2Nsb3NlKHZtYSk7CisJCQlpOTE1X3ZtYV91bnBpbih2bWEpOworCQkJaTkxNV92bWFfY2xvc2Uo dm1hKTsKIAotCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJCQlfX2k5MTVfZ2VtX29iamVj dF9wdXRfcGFnZXMob2JqLCBJOTE1X01NX05PUk1BTCk7CisJCQlpOTE1X2dlbV9vYmplY3RfcHV0 KG9iaik7CisJCX0KIAl9CiAKIAlnb3RvIG91dF9yZWdpb247CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXggMmVmNjdjMzk3ZmNhLi45ODAwNjYxOGU4NzEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKQEAgLTQ3LDgg KzQ3LDggQEAgX19pbnRlbF9tZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRkeShzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywKIAkJ CQkgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MpCiB7Ci0JdW5zaWduZWQgbG9uZyBuX3Bh Z2VzID0gc2l6ZSA+PiBpbG9nMihtZW0tPm1tLmNodW5rX3NpemUpOwogCXVuc2lnbmVkIGludCBt aW5fb3JkZXIgPSAwOworCXVuc2lnbmVkIGxvbmcgbl9wYWdlczsKIAogCUdFTV9CVUdfT04oIUlT X0FMSUdORUQoc2l6ZSwgbWVtLT5tbS5jaHVua19zaXplKSk7CiAJR0VNX0JVR19PTighbGlzdF9l bXB0eShibG9ja3MpKTsKQEAgLTU4LDYgKzU4LDEzIEBAIF9faW50ZWxfbWVtb3J5X3JlZ2lvbl9n ZXRfcGFnZXNfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAkJCSAgICBp bG9nMihtZW0tPm1tLmNodW5rX3NpemUpOwogCX0KIAorCWlmIChmbGFncyAmIEk5MTVfQUxMT0Nf Q09OVElHVU9VUykgeworCQlzaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKHNpemUpOworCQltaW5f b3JkZXIgPSBpbG9nMihzaXplKSAtIGlsb2cyKG1lbS0+bW0uY2h1bmtfc2l6ZSk7CisJfQorCisJ bl9wYWdlcyA9IHNpemUgPj4gaWxvZzIobWVtLT5tbS5jaHVua19zaXplKTsKKwogCW11dGV4X2xv Y2soJm1lbS0+bW1fbG9jayk7CiAKIAlkbyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9t ZW1vcnlfcmVnaW9uLmgKaW5kZXggZWIzMDRhM2VkNmFkLi4wNWYyODk5NTNjOGIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmgKQEAgLTE4LDcgKzE4LDggQEAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7CiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbjsK IHN0cnVjdCBzZ190YWJsZTsKIAotI2RlZmluZSBJOTE1X0FMTE9DX01JTl9QQUdFX1NJWkUgICBC SVQoMCkKKyNkZWZpbmUgSTkxNV9BTExPQ19NSU5fUEFHRV9TSVpFICBCSVQoMCkKKyNkZWZpbmUg STkxNV9BTExPQ19DT05USUdVT1VTICAgICBCSVQoMSkKIAogc3RydWN0IGludGVsX21lbW9yeV9y ZWdpb25fb3BzIHsKIAl1bnNpZ25lZCBpbnQgZmxhZ3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwppbmRleCA0MmRhZDYwNjdj NDcuLjVlZWZiZWFhNjc0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX21lbW9yeV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRl ICJnZW0vaTkxNV9nZW1fcmVnaW9uLmgiCiAjaW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9tb2NrX2Nv bnRleHQuaCIKKyNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9yYW5kb20uaCIKIAogc3RhdGljIHZv aWQgY2xvc2Vfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJICBz dHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzKQpAQCAtODcsMTAgKzg4LDE3NCBAQCBzdGF0aWMgaW50 IGlndF9tb2NrX2ZpbGwodm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCitpZ3Rfb2JqZWN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkgIHN0cnVjdCBsaXN0X2hlYWQgKm9iamVjdHMsCisJCSAg dTY0IHNpemUsCisJCSAgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CisJaW50IGVycjsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGVfcmVnaW9uKG1lbSwgc2l6ZSwgZmxhZ3MpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJu IG9iajsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKKwlpZiAoZXJy KQorCQlnb3RvIHB1dDsKKworCWxpc3RfYWRkKCZvYmotPnN0X2xpbmssIG9iamVjdHMpOworCXJl dHVybiBvYmo7CisKK3B1dDoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIEVS Ul9QVFIoZXJyKTsKK30KKwordm9pZCBpZ3Rfb2JqZWN0X3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsK KwlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqLCBJOTE1X01NX05PUk1BTCk7CisJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOworCWxpc3RfZGVsKCZvYmotPnN0X2xpbmspOworfQorCitz dGF0aWMgaW50IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAqYXJnKQoreworCXN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICptZW0gPSBhcmc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKwl1bnNpZ25lZCBsb25nIG5fb2JqZWN0czsKKwlMSVNUX0hFQUQob2JqZWN0cyk7CisJ TElTVF9IRUFEKGhvbGVzKTsKKwlJOTE1X1JORF9TVEFURShwcm5nKTsKKwlyZXNvdXJjZV9zaXpl X3QgdGFyZ2V0OworCXJlc291cmNlX3NpemVfdCB0b3RhbDsKKwlyZXNvdXJjZV9zaXplX3QgbWlu OworCWludCBlcnIgPSAwOworCisJdG90YWwgPSByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbik7 CisKKwkvKiBNaW4gc2l6ZSAqLworCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVj dHMsIG1lbS0+bW0uY2h1bmtfc2l6ZSwKKwkJCQlJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpOwor CWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKKworCWlmIChvYmotPm1t LnBhZ2VzLT5uZW50cyAhPSAxKSB7CisJCXByX2VycigiJXMgbWluIG9iamVjdCBzcGFucyBtdWx0 aXBsZSBzZyBlbnRyaWVzXG4iLCBfX2Z1bmNfXyk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8g ZXJyX2Nsb3NlX29iamVjdHM7CisJfQorCisJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisKKwkv KiBNYXggc2l6ZSAqLworCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHRv dGFsLCBJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0 dXJuIFBUUl9FUlIob2JqKTsKKworCWlmIChvYmotPm1tLnBhZ2VzLT5uZW50cyAhPSAxKSB7CisJ CXByX2VycigiJXMgbWF4IG9iamVjdCBzcGFucyBtdWx0aXBsZSBzZyBlbnRyaWVzXG4iLCBfX2Z1 bmNfXyk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX2Nsb3NlX29iamVjdHM7CisJfQor CisJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisKKwkvKiBJbnRlcm5hbCBmcmFnbWVudGF0aW9u IHNob3VsZCBub3QgYmxlZWQgaW50byB0aGUgb2JqZWN0IHNpemUgKi8KKwl0YXJnZXQgPSByb3Vu ZF91cChwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZykgJSB0b3RhbCwgUEFHRV9TSVpFKTsKKwl0YXJn ZXQgPSBtYXhfdCh1NjQsIFBBR0VfU0laRSwgdGFyZ2V0KTsKKworCW9iaiA9IGlndF9vYmplY3Rf Y3JlYXRlKG1lbSwgJm9iamVjdHMsIHRhcmdldCwKKwkJCQlJOTE1X0JPX0FMTE9DX0NPTlRJR1VP VVMpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKKworCWlmIChv YmotPmJhc2Uuc2l6ZSAhPSB0YXJnZXQpIHsKKwkJcHJfZXJyKCIlcyBvYmotPmJhc2Uuc2l6ZSgl bGx4KSAhPSB0YXJnZXQoJWxseClcbiIsIF9fZnVuY19fLAorCQkgICAgICAgKHU2NClvYmotPmJh c2Uuc2l6ZSwgKHU2NCl0YXJnZXQpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIGVycl9jbG9z ZV9vYmplY3RzOworCX0KKworCWlmIChvYmotPm1tLnBhZ2VzLT5uZW50cyAhPSAxKSB7CisJCXBy X2VycigiJXMgb2JqZWN0IHNwYW5zIG11bHRpcGxlIHNnIGVudHJpZXNcbiIsIF9fZnVuY19fKTsK KwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBlcnJfY2xvc2Vfb2JqZWN0czsKKwl9CisKKwlpZ3Rf b2JqZWN0X3JlbGVhc2Uob2JqKTsKKworCS8qCisJICogVHJ5IHRvIGZyYWdtZW50IHRoZSBhZGRy ZXNzIHNwYWNlLCBzdWNoIHRoYXQgaGFsZiBvZiBpdCBpcyBmcmVlLCBidXQKKwkgKiB0aGUgbWF4 IGNvbnRpZ3VvdXMgYmxvY2sgc2l6ZSBpcyBTWl82NEsuCisJICovCisKKwl0YXJnZXQgPSBTWl82 NEs7CisJbl9vYmplY3RzID0gZGl2NjRfdTY0KHRvdGFsLCB0YXJnZXQpOworCisJd2hpbGUgKG5f b2JqZWN0cy0tKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7CisKKwkJaWYgKG5fb2JqZWN0 cyAlIDIpCisJCQlsaXN0ID0gJmhvbGVzOworCQllbHNlCisJCQlsaXN0ID0gJm9iamVjdHM7CisK KwkJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCBsaXN0LCB0YXJnZXQsCisJCQkJCUk5MTVf Qk9fQUxMT0NfQ09OVElHVU9VUyk7CisJCWlmIChJU19FUlIob2JqKSkgeworCQkJZXJyID0gUFRS X0VSUihvYmopOworCQkJZ290byBlcnJfY2xvc2Vfb2JqZWN0czsKKwkJfQorCX0KKworCWNsb3Nl X29iamVjdHMobWVtLCAmaG9sZXMpOworCisJbWluID0gdGFyZ2V0OworCXRhcmdldCA9IHRvdGFs ID4+IDE7CisKKwkvKiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIGFsbG9jYXRlIGFsbCB0aGUgZnJh Z21lbnRlZCBzcGFjZSAqLworCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMs IHRhcmdldCwgMCk7CisJaWYgKElTX0VSUihvYmopKSB7CisJCWVyciA9IFBUUl9FUlIob2JqKTsK KwkJZ290byBlcnJfY2xvc2Vfb2JqZWN0czsKKwl9CisKKwlpZ3Rfb2JqZWN0X3JlbGVhc2Uob2Jq KTsKKworCS8qCisJICogRXZlbiB0aG91Z2ggd2UgaGF2ZSBlbm91Z2ggZnJlZSBzcGFjZSwgd2Ug ZG9uJ3QgaGF2ZSBhIGJpZyBlbm91Z2gKKwkgKiBjb250aWd1b3VzIGJsb2NrLiBNYWtlIHN1cmUg dGhhdCBob2xkcyB0cnVlLgorCSAqLworCisJZG8geworCQlib29sIHNob3VsZF9mYWlsID0gdGFy Z2V0ID4gbWluOworCisJCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHRh cmdldCwKKwkJCQkJSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKKwkJaWYgKHNob3VsZF9mYWls ICE9IElTX0VSUihvYmopKSB7CisJCQlwcl9lcnIoIiVzIHRhcmdldCBhbGxvY2F0aW9uKCVsbHgp IG1pc21hdGNoXG4iLAorCQkJICAgICAgIF9fZnVuY19fLCAodTY0KXRhcmdldCk7CisJCQllcnIg PSAtRUlOVkFMOworCQkJZ290byBlcnJfY2xvc2Vfb2JqZWN0czsKKwkJfQorCisJCXRhcmdldCA+ Pj0gMTsKKwl9IHdoaWxlICh0YXJnZXQgPj0gbWVtLT5tbS5jaHVua19zaXplKTsKKworZXJyX2Ns b3NlX29iamVjdHM6CisJbGlzdF9zcGxpY2VfdGFpbCgmaG9sZXMsICZvYmplY3RzKTsKKwljbG9z ZV9vYmplY3RzKG1lbSwgJm9iamVjdHMpOworCXJldHVybiBlcnI7Cit9CisKIGludCBpbnRlbF9t ZW1vcnlfcmVnaW9uX21vY2tfc2VsZnRlc3RzKHZvaWQpCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKIAkJU1VCVEVTVChpZ3RfbW9ja19maWxsKSwKKwkJ U1VCVEVTVChpZ3RfbW9ja19jb250aWd1b3VzKSwKIAl9OwogCXN0cnVjdCBpbnRlbF9tZW1vcnlf cmVnaW9uICptZW07CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jCmluZGV4IDBlOWE1NzVlZGUzYi4u N2IwYzk5ZGRjMmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19y ZWdpb24uYwpAQCAtMzYsNyArMzYsNyBAQCBtb2NrX29iamVjdF9jcmVhdGUoc3RydWN0IGludGVs X21lbW9yeV9yZWdpb24gKm1lbSwKIAogCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfY29oZXJl bmN5KG9iaiwgSTkxNV9DQUNIRV9OT05FKTsKIAotCWk5MTVfZ2VtX29iamVjdF9pbml0X21lbW9y eV9yZWdpb24ob2JqLCBtZW0pOworCWk5MTVfZ2VtX29iamVjdF9pbml0X21lbW9yeV9yZWdpb24o b2JqLCBtZW0sIGZsYWdzKTsKIAogCXJldHVybiBvYmo7CiB9Ci0tIAoyLjIwLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==