From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [RFC PATCH 38/42] drm/i915: treat shmem as a region Date: Thu, 14 Feb 2019 14:57:36 +0000 Message-ID: <20190214145740.14521-39-matthew.auld@intel.com> References: <20190214145740.14521-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9BB1B6E938 for ; Thu, 14 Feb 2019 14:58:31 +0000 (UTC) In-Reply-To: <20190214145740.14521-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 U2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpDYzog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogQWJk aWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDg5ICsrKysrKysrKysrKysrLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8IDExICsrLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIHwgIDkgKysrCiA0IGZp bGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IDgxODVlYTEyNjc1Mi4uMjNmMDRlNWE0Yjc2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTI4MzMsNiArMjgzMyw4IEBAIGludCBpOTE1X2dlbV9vYmplY3Rf bWlncmF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICAgZW51bSBpbnRlbF9yZWdpb25faWQgaWQpOwog CitzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqaTkxNV9nZW1fc2V0dXBfc21lbShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9k cmFpbl9mcmVlZF9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCWlm ICghYXRvbWljX3JlYWQoJmk5MTUtPm1tLmZyZWVfY291bnQpKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKaW5kZXggMzg3ZWFlOTk4ZmJmLi4zYzg2OTA5ZDU1YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwpAQCAtMjU3Niw2ICsyNTc2LDcgQEAgYm9vbCBpOTE1X3NnX3RyaW0oc3RydWN0IHNnX3Rh YmxlICpvcmlnX3N0KQogc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisJc3RydWN0IGludGVsX21l bW9yeV9yZWdpb24gKm1lbSA9IG9iai0+bWVtb3J5X3JlZ2lvbjsKIAljb25zdCB1bnNpZ25lZCBs b25nIHBhZ2VfY291bnQgPSBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsKIAl1bnNpZ25lZCBs b25nIGk7CiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CkBAIC0yNjAyLDcgKzI2MDMs NyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJICogSWYgdGhlcmUncyBubyBjaGFuY2Ugb2YgYWxsb2Nh dGluZyBlbm91Z2ggcGFnZXMgZm9yIHRoZSB3aG9sZQogCSAqIG9iamVjdCwgYmFpbCBlYXJseS4K IAkgKi8KLQlpZiAocGFnZV9jb3VudCA+IHRvdGFscmFtX3BhZ2VzKCkpCisJaWYgKG9iai0+YmFz ZS5zaXplID4gcmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pKQogCQlyZXR1cm4gLUVOT01FTTsK IAogCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CkBAIC00NDM3LDExICs0 NDM4LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkx NV9nZW1fb2JqZWN0X29wcyA9IHsKIAogCS5wd3JpdGUgPSBpOTE1X2dlbV9vYmplY3RfcHdyaXRl X2d0dCwKIAkudm1mX2ZpbGxfcGFnZXMgPSBpOTE1X2dlbV92bWZfZmlsbF9wYWdlc19jcHUsCisK KwkucmVsZWFzZSA9IGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX21lbW9yeV9yZWdpb24sCiB9Owog Ci1zdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKLQkJCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJCXNpemVfdCBz aXplKQorc3RhdGljIGludCBfX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKKwkJCQkJICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJ ICByZXNvdXJjZV9zaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHRvX2k5MTUoZGV2KTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gVk1fTk9SRVNFUlZFOwpA QCAtNDQ2MywzMSArNDQ2NiwyMiBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c2htZW0oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQorc3RhdGljIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoKK2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oc3RydWN0IGludGVsX21l bW9yeV9yZWdpb24gKm1lbSwKKwkJCSAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCisJCQkgICAg IHVuc2lnbmVkIGZsYWdzKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IG1lbS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nOwotCXVuc2lnbmVkIGludCBjYWNoZV9sZXZlbDsKIAlnZnBf dCBtYXNrOwogCWludCByZXQ7CiAKLQkvKiBUaGVyZSBpcyBhIHByZXZhbGVuY2Ugb2YgdGhlIGFz c3VtcHRpb24gdGhhdCB3ZSBmaXQgdGhlIG9iamVjdCdzCi0JICogcGFnZSBjb3VudCBpbnNpZGUg YSAzMmJpdCBfc2lnbmVkXyB2YXJpYWJsZS4gTGV0J3MgZG9jdW1lbnQgdGhpcyBhbmQKLQkgKiBj YXRjaCBpZiB3ZSBldmVyIG5lZWQgdG8gZml4IGl0LiBJbiB0aGUgbWVhbnRpbWUsIGlmIHlvdSBk byBzcG90Ci0JICogc3VjaCBhIGxvY2FsIHZhcmlhYmxlLCBwbGVhc2UgY29uc2lkZXIgZml4aW5n IQotCSAqLwotCWlmIChzaXplID4+IFBBR0VfU0hJRlQgPiBJTlRfTUFYKQotCQlyZXR1cm4gRVJS X1BUUigtRTJCSUcpOwotCi0JaWYgKG92ZXJmbG93c190eXBlKHNpemUsIG9iai0+YmFzZS5zaXpl KSkKLQkJcmV0dXJuIEVSUl9QVFIoLUUyQklHKTsKLQogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9h bGxvYyhkZXZfcHJpdik7CiAJaWYgKG9iaiA9PSBOVUxMKQogCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oJmRldl9wcml2LT5k cm0sICZvYmotPmJhc2UsIHNpemUpOworCXJldCA9IF9faTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9z aG1lbSgmZGV2X3ByaXYtPmRybSwgJm9iai0+YmFzZSwgc2l6ZSk7CiAJaWYgKHJldCkKIAkJZ290 byBmYWlsOwogCkBAIC00NTIwLDEzICs0NTE0LDkgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXplKQogCQkgKiBIb3dldmVy LCB3ZSBtYWludGFpbiB0aGUgZGlzcGxheSBwbGFuZXMgYXMgVUMsIGFuZCBzbwogCQkgKiBuZWVk IHRvIHJlYmluZCB3aGVuIGZpcnN0IHVzZWQgYXMgc3VjaC4KIAkJICovCi0JCWNhY2hlX2xldmVs ID0gSTkxNV9DQUNIRV9MTEM7CisJCW9iai0+Y2FjaGVfbGV2ZWwgPSBJOTE1X0NBQ0hFX0xMQzsK IAllbHNlCi0JCWNhY2hlX2xldmVsID0gSTkxNV9DQUNIRV9OT05FOwotCi0JaTkxNV9nZW1fb2Jq ZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBjYWNoZV9sZXZlbCk7Ci0KLQl0cmFjZV9pOTE1 X2dlbV9vYmplY3RfY3JlYXRlKG9iaik7CisJCW9iai0+Y2FjaGVfbGV2ZWwgPSBJOTE1X0NBQ0hF X05PTkU7CiAKIAlyZXR1cm4gb2JqOwogCkBAIC00NTM1LDYgKzQ1MjUsNDkgQEAgaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXpl KQogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICoKK2k5MTVfZ2VtX29iamVjdF9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IHU2NCBzaXplKQoreworCXJldHVybiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihpOTE1 LT5yZWdpb25zW0lOVEVMX01FTU9SWV9TTUVNXSwKKwkJCQkJICAgICBzaXplLCAwKTsKK30KKwor c3RhdGljIGludCBpOTE1X3JlZ2lvbl9zbWVtX2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKm1lbSkKK3sKKwlpbnQgZXJyOworCisJZXJyID0gaTkxNV9nZW1mc19pbml0KG1lbS0+aTkx NSk7CisJaWYgKGVycikKKwkJRFJNX05PVEUoIlVuYWJsZSB0byBjcmVhdGUgYSBwcml2YXRlIHRt cGZzIG1vdW50LCBodWdlcGFnZSBzdXBwb3J0IHdpbGwgYmUgZGlzYWJsZWQoJWQpLlxuIiwgZXJy KTsKKworCXJldHVybiAwOyAvKiBEb24ndCBlcnJvciwgd2UgY2FuIHNpbXBseSBmYWxsYmFjayB0 byB0aGUga2VybmVsIG1udCAqLworfQorCitzdGF0aWMgdm9pZCBpOTE1X3JlZ2lvbl9zbWVtX3Jl bGVhc2Uoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKK3sKKwlpOTE1X2dlbWZzX2Zp bmkobWVtLT5pOTE1KTsKK30KKworLyoKKyAqIFhYWDogYWxsIG9mIHRoaXMgbG9va3MgbXVjaCBj bGVhbmVyIHdoZW4gd2UgbW92ZSBhbGwgdGhlIHNobWVtIHN0dWZmIHRvCisgKiBpOTE1X2dlbWZz LltjaF0gb3Igc2ltaWxhciwgYW5kIGFsc28gdGlkeSB1cCB0aGUgcHJlYWQvcHdyaXRlIHN0dWZm IHdpdGgKKyAqIHByb3BlciB2ZnVuY3MsIGJ1dCB3ZSB3YW50IHRvIGF2b2lkIGRvaW5nIHRoYXQg b24gaW50ZXJuYWwsIHNpbmNlIHRoZQorICogY29uZmxpY3RzIHdpbGwgYmUgaHVnZSBsYXRlci4u LgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fb3BzIGk5MTVf cmVnaW9uX3NtZW1fb3BzID0geworCS5pbml0ID0gaTkxNV9yZWdpb25fc21lbV9pbml0LAorCS5y ZWxlYXNlID0gaTkxNV9yZWdpb25fc21lbV9yZWxlYXNlLAorCS5vYmplY3RfY3JlYXRlID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zaG1lbSwKK307CisKK3N0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICppOTE1X2dlbV9zZXR1cF9zbWVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQor eworCXJldHVybiBpbnRlbF9tZW1vcnlfcmVnaW9uX2NyZWF0ZShpOTE1LCAwLAorCQkJCQkgIHRv dGFscmFtX3BhZ2VzKCkgPDwgUEFHRV9TSElGVCwKKwkJCQkJICBJOTE1X0dUVF9QQUdFX1NJWkVf NEssIDAsCisJCQkJCSAgJmk5MTVfcmVnaW9uX3NtZW1fb3BzKTsKK30KKwogc3RhdGljIGJvb2wg ZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IHsKIAkvKiBJZiB3ZSBhcmUgdGhlIGxhc3QgdXNlciBvZiB0aGUgYmFja2luZyBzdG9yYWdlIChi ZSBpdCBzaG1lbWZzCkBAIC02MDE5LDEwICs2MDUyLDYgQEAgaW50IGk5MTVfZ2VtX2luaXRfZWFy bHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJc3Bpbl9sb2NrX2luaXQo JmRldl9wcml2LT5mYl90cmFja2luZy5sb2NrKTsKIAotCWVyciA9IGk5MTVfZ2VtZnNfaW5pdChk ZXZfcHJpdik7Ci0JaWYgKGVycikKLQkJRFJNX05PVEUoIlVuYWJsZSB0byBjcmVhdGUgYSBwcml2 YXRlIHRtcGZzIG1vdW50LCBodWdlcGFnZSBzdXBwb3J0IHdpbGwgYmUgZGlzYWJsZWQoJWQpLlxu IiwgZXJyKTsKLQogCXJldHVybiAwOwogCiBlcnJfZGVwZW5kZW5jaWVzOgpAQCAtNjA1Nyw4ICs2 MDg2LDYgQEAgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAogCS8qIEFuZCBlbnN1cmUgdGhhdCBvdXIgREVTVFJPWV9CWV9SQ1Ug c2xhYnMgYXJlIHRydWx5IGRlc3Ryb3llZCAqLwogCXJjdV9iYXJyaWVyKCk7Ci0KLQlpOTE1X2dl bWZzX2ZpbmkoZGV2X3ByaXYpOwogfQogCiBpbnQgaTkxNV9nZW1fZnJlZXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5k ZXggZTBhOGU5MGIxNDgwLi44NGIyZmE1NjA4ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCkBAIC0yODM3LDcgKzI4MzcsOCBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2luaXRfbWVt b3J5X3JlZ2lvbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAkJdHlwZSA9IE1F TU9SWV9UWVBFX0ZST01fUkVHSU9OKGludGVsX3JlZ2lvbl9tYXBbaV0pOwogCQlzd2l0Y2ggKHR5 cGUpIHsKLQkJZGVmYXVsdDoKKwkJY2FzZSBJTlRFTF9TTUVNOgorCQkJbWVtID0gaTkxNV9nZW1f c2V0dXBfc21lbShpOTE1KTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTI4NDcsMTEgKzI4NDgsOSBA QCBzdGF0aWMgaW50IGk5MTVfZ2VtX2luaXRfbWVtb3J5X3JlZ2lvbnMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiAJCQlnb3RvIG91dF9jbGVhbnVwOwogCQl9CiAKLQkJaWYgKG1lbSkg ewotCQkJbWVtLT5pZCA9IGludGVsX3JlZ2lvbl9tYXBbaV07Ci0JCQltZW0tPnR5cGUgPSB0eXBl OwotCQkJbWVtLT5pbnN0YW5jZSA9IE1FTU9SWV9JTlNUQU5DRV9GUk9NX1JFR0lPTihpbnRlbF9y ZWdpb25fbWFwW2ldKTsKLQkJfQorCQltZW0tPmlkID0gaW50ZWxfcmVnaW9uX21hcFtpXTsKKwkJ bWVtLT50eXBlID0gdHlwZTsKKwkJbWVtLT5pbnN0YW5jZSA9IE1FTU9SWV9JTlNUQU5DRV9GUk9N X1JFR0lPTihpbnRlbF9yZWdpb25fbWFwW2ldKTsKIAogCQlpOTE1LT5yZWdpb25zW2ldID0gbWVt OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdp b24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwppbmRleCA1 NTMxZWQ5NGJkYWIuLjE3YWY1YjRmMGExYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X21lbW9yeV9yZWdpb24uYwpAQCAtMTk3LDYgKzE5NywxMyBAQCBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlX3JlZ2lvbihzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCUdFTV9CVUdfT04o IXNpemUpOwogCUdFTV9CVUdfT04oIUlTX0FMSUdORUQoc2l6ZSwgSTkxNV9HVFRfTUlOX0FMSUdO TUVOVCkpOwogCisJLyoKKwkgKiBUaGVyZSBpcyBhIHByZXZhbGVuY2Ugb2YgdGhlIGFzc3VtcHRp b24gdGhhdCB3ZSBmaXQgdGhlIG9iamVjdCdzCisJICogcGFnZSBjb3VudCBpbnNpZGUgYSAzMmJp dCBfc2lnbmVkXyB2YXJpYWJsZS4gTGV0J3MgZG9jdW1lbnQgdGhpcyBhbmQKKwkgKiBjYXRjaCBp ZiB3ZSBldmVyIG5lZWQgdG8gZml4IGl0LiBJbiB0aGUgbWVhbnRpbWUsIGlmIHlvdSBkbyBzcG90 CisJICogc3VjaCBhIGxvY2FsIHZhcmlhYmxlLCBwbGVhc2UgY29uc2lkZXIgZml4aW5nIQorCSAq LworCiAJaWYgKHNpemUgPj4gUEFHRV9TSElGVCA+IElOVF9NQVgpCiAJCXJldHVybiBFUlJfUFRS KC1FMkJJRyk7CiAKQEAgLTIyMiw2ICsyMjksOCBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3Jl Z2lvbihzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCiAJaTkxNV9nZW1fb2JqZWN0 X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBvYmotPmNhY2hlX2xldmVsKTsKIAorCXRyYWNlX2k5 MTVfZ2VtX29iamVjdF9jcmVhdGUob2JqKTsKKwogCXJldHVybiBvYmo7CiB9CiAKLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4