From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH v2 2/9] drm/vc4: Add a BO cache. Date: Tue, 8 Dec 2015 10:30:11 -0800 Message-ID: <1449599418-20780-3-git-send-email-eric@anholt.net> References: <1449599418-20780-1-git-send-email-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1449599418-20780-1-git-send-email-eric@anholt.net> 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: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org V2UgbmVlZCB0byBhbGxvY2F0ZSBuZXcgQk9zIGluIHRoZSBrZXJuZWwgYXMgcGFydCBvZiBlYWNo IGZyYW1lLCBidXQKdGhlIENNQSBhbGxvY2F0b3IgaXMgd2F5IHRvbyBzbG93IGZvciB0aGF0LiAg QXMgYW4gb3B0aW1pemF0aW9uLCBrZWVwCnRyYWNrIG9mIHJlY2VudGx5LWZyZWVkIEJPcyBhbmQg cmV1c2UgdGhlbSwgd2l0aCBhIDEgc2Vjb25kIHRpbWVvdXQgdG8KZnVsbHkgZnJlZSB0aGVtIGJh Y2sgdG8gdGhlIHN5c3RlbS4KClRoaXMgaW1wcm92ZXMgM0QgcGVyZm9ybWFuY2UgYnkgYWJvdXQg MTUlLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jICAgICAgfCAzMzYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2RlYnVnZnMuYyB8 ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYyAgICAgfCAgIDYgKy0KIGRyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICAgICB8ICA0OSArKysrKy0KIDQgZmlsZXMgY2hhbmdl ZCwgMzg0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfYm8uYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMKaW5k ZXggYWI5ZjUxMC4uMThmYWE1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf Ym8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCkBAIC0xMiwxOSArMTIsMjI5 IEBACiAgKiBhY2Nlc3MgdG8gc3lzdGVtIG1lbW9yeSB3aXRoIG5vIE1NVSBpbiBiZXR3ZWVuLiAg VG8gc3VwcG9ydCBpdCwgd2UKICAqIHVzZSB0aGUgR0VNIENNQSBoZWxwZXIgZnVuY3Rpb25zIHRv IGFsbG9jYXRlIGNvbnRpZ3VvdXMgcmFuZ2VzIG9mCiAgKiBwaHlzaWNhbCBtZW1vcnkgZm9yIG91 ciBCT3MuCisgKgorICogU2luY2UgdGhlIENNQSBhbGxvY2F0b3IgaXMgdmVyeSBzbG93LCB3ZSBr ZWVwIGEgY2FjaGUgb2YgcmVjZW50bHkKKyAqIGZyZWVkIEJPcyBhcm91bmQgc28gdGhhdCB0aGUg a2VybmVsJ3MgYWxsb2NhdGlvbiBvZiBvYmplY3RzIGZvciAzRAorICogcmVuZGVyaW5nIGNhbiBy ZXR1cm4gcXVpY2tseS4KICAqLwogCiAjaW5jbHVkZSAidmM0X2Rydi5oIgogCi1zdHJ1Y3QgdmM0 X2JvICp2YzRfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQor c3RhdGljIHZvaWQgdmM0X2JvX3N0YXRzX2R1bXAoc3RydWN0IHZjNF9kZXYgKnZjNCkKK3sKKwlE Uk1fSU5GTygibnVtIGJvcyBhbGxvY2F0ZWQ6ICVkXG4iLAorCQkgdmM0LT5ib19zdGF0cy5udW1f YWxsb2NhdGVkKTsKKwlEUk1fSU5GTygic2l6ZSBib3MgYWxsb2NhdGVkOiAlZGtiXG4iLAorCQkg dmM0LT5ib19zdGF0cy5zaXplX2FsbG9jYXRlZCAvIDEwMjQpOworCURSTV9JTkZPKCJudW0gYm9z IHVzZWQ6ICVkXG4iLAorCQkgdmM0LT5ib19zdGF0cy5udW1fYWxsb2NhdGVkIC0gdmM0LT5ib19z dGF0cy5udW1fY2FjaGVkKTsKKwlEUk1fSU5GTygic2l6ZSBib3MgdXNlZDogJWRrYlxuIiwKKwkJ ICh2YzQtPmJvX3N0YXRzLnNpemVfYWxsb2NhdGVkIC0KKwkJICB2YzQtPmJvX3N0YXRzLnNpemVf Y2FjaGVkKSAvIDEwMjQpOworCURSTV9JTkZPKCJudW0gYm9zIGNhY2hlZDogJWRcbiIsCisJCSB2 YzQtPmJvX3N0YXRzLm51bV9jYWNoZWQpOworCURSTV9JTkZPKCJzaXplIGJvcyBjYWNoZWQ6ICVk a2JcbiIsCisJCSB2YzQtPmJvX3N0YXRzLnNpemVfY2FjaGVkIC8gMTAyNCk7Cit9CisKKyNpZmRl ZiBDT05GSUdfREVCVUdfRlMKK2ludCB2YzRfYm9fc3RhdHNfZGVidWdmcyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKK3sKKwlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IChz dHJ1Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG5vZGUtPm1pbm9yLT5kZXY7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYo ZGV2KTsKKwlzdHJ1Y3QgdmM0X2JvX3N0YXRzIHN0YXRzOworCisJLyogVGFrZSBhIHNuYXBzaG90 IG9mIHRoZSBjdXJyZW50IHN0YXRzIHdpdGggdGhlIGxvY2sgaGVsZC4gKi8KKwltdXRleF9sb2Nr KCZ2YzQtPmJvX2xvY2spOworCXN0YXRzID0gdmM0LT5ib19zdGF0czsKKwltdXRleF91bmxvY2so JnZjNC0+Ym9fbG9jayk7CisKKwlzZXFfcHJpbnRmKG0sICJudW0gYm9zIGFsbG9jYXRlZDogJWRc biIsCisJCSAgIHN0YXRzLm51bV9hbGxvY2F0ZWQpOworCXNlcV9wcmludGYobSwgInNpemUgYm9z IGFsbG9jYXRlZDogJWRrYlxuIiwKKwkJICAgc3RhdHMuc2l6ZV9hbGxvY2F0ZWQgLyAxMDI0KTsK KwlzZXFfcHJpbnRmKG0sICJudW0gYm9zIHVzZWQ6ICVkXG4iLAorCQkgICBzdGF0cy5udW1fYWxs b2NhdGVkIC0gc3RhdHMubnVtX2NhY2hlZCk7CisJc2VxX3ByaW50ZihtLCAic2l6ZSBib3MgdXNl ZDogJWRrYlxuIiwKKwkJICAgKHN0YXRzLnNpemVfYWxsb2NhdGVkIC0gc3RhdHMuc2l6ZV9jYWNo ZWQpIC8gMTAyNCk7CisJc2VxX3ByaW50ZihtLCAibnVtIGJvcyBjYWNoZWQ6ICVkXG4iLAorCQkg ICBzdGF0cy5udW1fY2FjaGVkKTsKKwlzZXFfcHJpbnRmKG0sICJzaXplIGJvcyBjYWNoZWQ6ICVk a2JcbiIsCisJCSAgIHN0YXRzLnNpemVfY2FjaGVkIC8gMTAyNCk7CisKKwlyZXR1cm4gMDsKK30K KyNlbmRpZgorCitzdGF0aWMgdWludDMyX3QgYm9fcGFnZV9pbmRleChzaXplX3Qgc2l6ZSkKK3sK KwlyZXR1cm4gKHNpemUgLyBQQUdFX1NJWkUpIC0gMTsKK30KKworLyogTXVzdCBiZSBjYWxsZWQg d2l0aCBib19sb2NrIGhlbGQuICovCitzdGF0aWMgdm9pZCB2YzRfYm9fZGVzdHJveShzdHJ1Y3Qg dmM0X2JvICpibykKIHsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZiby0+YmFzZS5i YXNlOworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KG9iai0+ZGV2KTsKKworCXZj NC0+Ym9fc3RhdHMubnVtX2FsbG9jYXRlZC0tOworCXZjNC0+Ym9fc3RhdHMuc2l6ZV9hbGxvY2F0 ZWQgLT0gb2JqLT5zaXplOworCWRybV9nZW1fY21hX2ZyZWVfb2JqZWN0KG9iaik7Cit9CisKKy8q IE11c3QgYmUgY2FsbGVkIHdpdGggYm9fbG9jayBoZWxkLiAqLworc3RhdGljIHZvaWQgdmM0X2Jv X3JlbW92ZV9mcm9tX2NhY2hlKHN0cnVjdCB2YzRfYm8gKmJvKQoreworCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqID0gJmJvLT5iYXNlLmJhc2U7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRv X3ZjNF9kZXYob2JqLT5kZXYpOworCisJdmM0LT5ib19zdGF0cy5udW1fY2FjaGVkLS07CisJdmM0 LT5ib19zdGF0cy5zaXplX2NhY2hlZCAtPSBvYmotPnNpemU7CisKKwlsaXN0X2RlbCgmYm8tPnVu cmVmX2hlYWQpOworCWxpc3RfZGVsKCZiby0+c2l6ZV9oZWFkKTsKK30KKworc3RhdGljIHN0cnVj dCBsaXN0X2hlYWQgKnZjNF9nZXRfY2FjaGVfbGlzdF9mb3Jfc2l6ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQkJCQkJICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0 ID0gdG9fdmM0X2RldihkZXYpOworCXVpbnQzMl90IHBhZ2VfaW5kZXggPSBib19wYWdlX2luZGV4 KHNpemUpOworCisJaWYgKHZjNC0+Ym9fY2FjaGUuc2l6ZV9saXN0X3NpemUgPD0gcGFnZV9pbmRl eCkgeworCQl1aW50MzJfdCBuZXdfc2l6ZSA9IG1heCh2YzQtPmJvX2NhY2hlLnNpemVfbGlzdF9z aXplICogMiwKKwkJCQkJcGFnZV9pbmRleCArIDEpOworCQlzdHJ1Y3QgbGlzdF9oZWFkICpuZXdf bGlzdDsKKwkJdWludDMyX3QgaTsKKworCQluZXdfbGlzdCA9IGttYWxsb2NfYXJyYXkobmV3X3Np emUsIHNpemVvZihzdHJ1Y3QgbGlzdF9oZWFkKSwKKwkJCQkJIEdGUF9LRVJORUwpOworCQlpZiAo IW5ld19saXN0KQorCQkJcmV0dXJuIE5VTEw7CisKKwkJLyogUmViYXNlIHRoZSBvbGQgY2FjaGVk IEJPIGxpc3RzIHRvIHRoZWlyIG5ldyBsaXN0CisJCSAqIGhlYWQgbG9jYXRpb25zLgorCQkgKi8K KwkJZm9yIChpID0gMDsgaSA8IHZjNC0+Ym9fY2FjaGUuc2l6ZV9saXN0X3NpemU7IGkrKykgewor CQkJc3RydWN0IGxpc3RfaGVhZCAqb2xkX2xpc3QgPQorCQkJCSZ2YzQtPmJvX2NhY2hlLnNpemVf bGlzdFtpXTsKKworCQkJaWYgKGxpc3RfZW1wdHkob2xkX2xpc3QpKQorCQkJCUlOSVRfTElTVF9I RUFEKCZuZXdfbGlzdFtpXSk7CisJCQllbHNlCisJCQkJbGlzdF9yZXBsYWNlKG9sZF9saXN0LCAm bmV3X2xpc3RbaV0pOworCQl9CisJCS8qIEFuZCBpbml0aWFsaXplIHRoZSBicmFuZCBuZXcgQk8g bGlzdCBoZWFkcy4gKi8KKwkJZm9yIChpID0gdmM0LT5ib19jYWNoZS5zaXplX2xpc3Rfc2l6ZTsg aSA8IG5ld19zaXplOyBpKyspCisJCQlJTklUX0xJU1RfSEVBRCgmbmV3X2xpc3RbaV0pOworCisJ CWtmcmVlKHZjNC0+Ym9fY2FjaGUuc2l6ZV9saXN0KTsKKwkJdmM0LT5ib19jYWNoZS5zaXplX2xp c3QgPSBuZXdfbGlzdDsKKwkJdmM0LT5ib19jYWNoZS5zaXplX2xpc3Rfc2l6ZSA9IG5ld19zaXpl OworCX0KKworCXJldHVybiAmdmM0LT5ib19jYWNoZS5zaXplX2xpc3RbcGFnZV9pbmRleF07Cit9 CisKK3ZvaWQgdmM0X2JvX2NhY2hlX3B1cmdlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKKworCW11dGV4X2xvY2soJnZj NC0+Ym9fbG9jayk7CisJd2hpbGUgKCFsaXN0X2VtcHR5KCZ2YzQtPmJvX2NhY2hlLnRpbWVfbGlz dCkpIHsKKwkJc3RydWN0IHZjNF9ibyAqYm8gPSBsaXN0X2xhc3RfZW50cnkoJnZjNC0+Ym9fY2Fj aGUudGltZV9saXN0LAorCQkJCQkJICAgIHN0cnVjdCB2YzRfYm8sIHVucmVmX2hlYWQpOworCQl2 YzRfYm9fcmVtb3ZlX2Zyb21fY2FjaGUoYm8pOworCQl2YzRfYm9fZGVzdHJveShibyk7CisJfQor CW11dGV4X3VubG9jaygmdmM0LT5ib19sb2NrKTsKK30KKworc3RhdGljIHN0cnVjdCB2YzRfYm8g KnZjNF9ib19nZXRfZnJvbV9jYWNoZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkgICAg dWludDMyX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYp OworCXVpbnQzMl90IHBhZ2VfaW5kZXggPSBib19wYWdlX2luZGV4KHNpemUpOworCXN0cnVjdCB2 YzRfYm8gKmJvID0gTlVMTDsKKworCXNpemUgPSByb3VuZHVwKHNpemUsIFBBR0VfU0laRSk7CisK KwltdXRleF9sb2NrKCZ2YzQtPmJvX2xvY2spOworCWlmIChwYWdlX2luZGV4ID49IHZjNC0+Ym9f Y2FjaGUuc2l6ZV9saXN0X3NpemUpCisJCWdvdG8gb3V0OworCisJaWYgKGxpc3RfZW1wdHkoJnZj NC0+Ym9fY2FjaGUuc2l6ZV9saXN0W3BhZ2VfaW5kZXhdKSkKKwkJZ290byBvdXQ7CisKKwlibyA9 IGxpc3RfZmlyc3RfZW50cnkoJnZjNC0+Ym9fY2FjaGUuc2l6ZV9saXN0W3BhZ2VfaW5kZXhdLAor CQkJICAgICAgc3RydWN0IHZjNF9ibywgc2l6ZV9oZWFkKTsKKwl2YzRfYm9fcmVtb3ZlX2Zyb21f Y2FjaGUoYm8pOworCWtyZWZfaW5pdCgmYm8tPmJhc2UuYmFzZS5yZWZjb3VudCk7CisKK291dDoK KwltdXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7CisJcmV0dXJuIGJvOworfQorCisvKioKKyAq IHZjNF9nZW1fY3JlYXRlX29iamVjdCAtIEltcGxlbWVudGF0aW9uIG9mIGRyaXZlci0+Z2VtX2Ny ZWF0ZV9vYmplY3QuCisgKgorICogVGhpcyBsZXRzIHRoZSBDTUEgaGVscGVycyBhbGxvY2F0ZSBv YmplY3Qgc3RydWN0cyBmb3IgdXMsIGFuZCBrZWVwCisgKiBvdXIgQk8gc3RhdHMgY29ycmVjdC4K KyAqLworc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2YzRfY3JlYXRlX29iamVjdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9f dmM0X2RldihkZXYpOworCXN0cnVjdCB2YzRfYm8gKmJvOworCisJYm8gPSBremFsbG9jKHNpemVv ZigqYm8pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJvKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKKworCW11dGV4X2xvY2soJnZjNC0+Ym9fbG9jayk7CisJdmM0LT5ib19zdGF0cy5udW1fYWxs b2NhdGVkKys7CisJdmM0LT5ib19zdGF0cy5zaXplX2FsbG9jYXRlZCArPSBzaXplOworCW11dGV4 X3VubG9jaygmdmM0LT5ib19sb2NrKTsKKworCXJldHVybiAmYm8tPmJhc2UuYmFzZTsKK30KKwor c3RydWN0IHZjNF9ibyAqdmM0X2JvX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXpl X3QgdW5hbGlnbmVkX3NpemUsCisJCQkgICAgIGJvb2wgZnJvbV9jYWNoZSkKK3sKKwlzaXplX3Qg c2l6ZSA9IHJvdW5kdXAodW5hbGlnbmVkX3NpemUsIFBBR0VfU0laRSk7CisJc3RydWN0IHZjNF9k ZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKIAlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpj bWFfb2JqOwogCi0JY21hX29iaiA9IGRybV9nZW1fY21hX2NyZWF0ZShkZXYsIHNpemUpOwotCWlm IChJU19FUlIoY21hX29iaikpCisJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIE5VTEw7Ci0JZWxz ZQotCQlyZXR1cm4gdG9fdmM0X2JvKCZjbWFfb2JqLT5iYXNlKTsKKworCS8qIEZpcnN0LCB0cnkg dG8gZ2V0IGEgdmM0X2JvIGZyb20gdGhlIGtlcm5lbCBCTyBjYWNoZS4gKi8KKwlpZiAoZnJvbV9j YWNoZSkgeworCQlzdHJ1Y3QgdmM0X2JvICpibyA9IHZjNF9ib19nZXRfZnJvbV9jYWNoZShkZXYs IHNpemUpOworCisJCWlmIChibykKKwkJCXJldHVybiBibzsKKwl9CisKKwljbWFfb2JqID0gZHJt X2dlbV9jbWFfY3JlYXRlKGRldiwgc2l6ZSk7CisJaWYgKElTX0VSUihjbWFfb2JqKSkgeworCQkv KgorCQkgKiBJZiB3ZSd2ZSBydW4gb3V0IG9mIENNQSBtZW1vcnksIGtpbGwgdGhlIGNhY2hlIG9m CisJCSAqIENNQSBhbGxvY2F0aW9ucyB3ZSd2ZSBnb3QgbGF5aW5nIGFyb3VuZCBhbmQgdHJ5IGFn YWluLgorCQkgKi8KKwkJdmM0X2JvX2NhY2hlX3B1cmdlKGRldik7CisKKwkJY21hX29iaiA9IGRy bV9nZW1fY21hX2NyZWF0ZShkZXYsIHNpemUpOworCQlpZiAoSVNfRVJSKGNtYV9vYmopKSB7CisJ CQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBmcm9tIENNQTpcbiIpOworCQkJdmM0X2Jv X3N0YXRzX2R1bXAodmM0KTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJfQorCisJcmV0dXJuIHRv X3ZjNF9ibygmY21hX29iai0+YmFzZSk7CiB9CiAKIGludCB2YzRfZHVtYl9jcmVhdGUoc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYsCkBAIC00MSw3ICsyNTEsNyBAQCBpbnQgdmM0X2R1bWJfY3Jl YXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCWlmIChhcmdzLT5zaXplIDwgYXJncy0+ cGl0Y2ggKiBhcmdzLT5oZWlnaHQpCiAJCWFyZ3MtPnNpemUgPSBhcmdzLT5waXRjaCAqIGFyZ3Mt PmhlaWdodDsKIAotCWJvID0gdmM0X2JvX2NyZWF0ZShkZXYsIHJvdW5kdXAoYXJncy0+c2l6ZSwg UEFHRV9TSVpFKSk7CisJYm8gPSB2YzRfYm9fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwgZmFsc2Up OwogCWlmICghYm8pCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC01MCwzICsyNjAsMTE3IEBAIGlu dCB2YzRfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAKIAlyZXR1cm4g cmV0OwogfQorCisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGJvX2xvY2sgaGVsZC4gKi8KK3N0YXRp YyB2b2lkIHZjNF9ib19jYWNoZV9mcmVlX29sZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorewor CXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CisJdW5zaWduZWQgbG9uZyBl eHBpcmVfdGltZSA9IGppZmZpZXMgLSBtc2Vjc190b19qaWZmaWVzKDEwMDApOworCisJd2hpbGUg KCFsaXN0X2VtcHR5KCZ2YzQtPmJvX2NhY2hlLnRpbWVfbGlzdCkpIHsKKwkJc3RydWN0IHZjNF9i byAqYm8gPSBsaXN0X2xhc3RfZW50cnkoJnZjNC0+Ym9fY2FjaGUudGltZV9saXN0LAorCQkJCQkJ ICAgIHN0cnVjdCB2YzRfYm8sIHVucmVmX2hlYWQpOworCQlpZiAodGltZV9iZWZvcmUoZXhwaXJl X3RpbWUsIGJvLT5mcmVlX3RpbWUpKSB7CisJCQltb2RfdGltZXIoJnZjNC0+Ym9fY2FjaGUudGlt ZV90aW1lciwKKwkJCQkgIHJvdW5kX2ppZmZpZXNfdXAoamlmZmllcyArCisJCQkJCQkgICBtc2Vj c190b19qaWZmaWVzKDEwMDApKSk7CisJCQlyZXR1cm47CisJCX0KKworCQl2YzRfYm9fcmVtb3Zl X2Zyb21fY2FjaGUoYm8pOworCQl2YzRfYm9fZGVzdHJveShibyk7CisJfQorfQorCisvKiBDYWxs ZWQgb24gdGhlIGxhc3QgdXNlcnNwYWNlL2tlcm5lbCB1bnJlZmVyZW5jZSBvZiB0aGUgQk8uICBS ZXR1cm5zCisgKiBpdCB0byB0aGUgQk8gY2FjaGUgaWYgcG9zc2libGUsIG90aGVyd2lzZSBmcmVl cyBpdC4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgc3RydWN0X211 dGV4IGhlbGQuCisgKi8KK3ZvaWQgdmM0X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZ2VtX2JvKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBnZW1fYm8tPmRldjsKKwlz dHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOworCXN0cnVjdCB2YzRfYm8gKmJv ID0gdG9fdmM0X2JvKGdlbV9ibyk7CisJc3RydWN0IGxpc3RfaGVhZCAqY2FjaGVfbGlzdDsKKwor CW11dGV4X2xvY2soJnZjNC0+Ym9fbG9jayk7CisJLyogSWYgdGhlIG9iamVjdCByZWZlcmVuY2Vz IHNvbWVvbmUgZWxzZSdzIG1lbW9yeSwgd2UgY2FuJ3QgY2FjaGUgaXQuCisJICovCisJaWYgKGdl bV9iby0+aW1wb3J0X2F0dGFjaCkgeworCQl2YzRfYm9fZGVzdHJveShibyk7CisJCWdvdG8gb3V0 OworCX0KKworCS8qIERvbid0IGNhY2hlIGlmIGl0IHdhcyBwdWJsaWNseSBuYW1lZC4gKi8KKwlp ZiAoZ2VtX2JvLT5uYW1lKSB7CisJCXZjNF9ib19kZXN0cm95KGJvKTsKKwkJZ290byBvdXQ7CisJ fQorCisJY2FjaGVfbGlzdCA9IHZjNF9nZXRfY2FjaGVfbGlzdF9mb3Jfc2l6ZShkZXYsIGdlbV9i by0+c2l6ZSk7CisJaWYgKCFjYWNoZV9saXN0KSB7CisJCXZjNF9ib19kZXN0cm95KGJvKTsKKwkJ Z290byBvdXQ7CisJfQorCisJYm8tPmZyZWVfdGltZSA9IGppZmZpZXM7CisJbGlzdF9hZGQoJmJv LT5zaXplX2hlYWQsIGNhY2hlX2xpc3QpOworCWxpc3RfYWRkKCZiby0+dW5yZWZfaGVhZCwgJnZj NC0+Ym9fY2FjaGUudGltZV9saXN0KTsKKworCXZjNC0+Ym9fc3RhdHMubnVtX2NhY2hlZCsrOwor CXZjNC0+Ym9fc3RhdHMuc2l6ZV9jYWNoZWQgKz0gZ2VtX2JvLT5zaXplOworCisJdmM0X2JvX2Nh Y2hlX2ZyZWVfb2xkKGRldik7CisKK291dDoKKwltdXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7 Cit9CisKK3N0YXRpYyB2b2lkIHZjNF9ib19jYWNoZV90aW1lX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQoreworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPQorCQljb250YWluZXJfb2Yod29y aywgc3RydWN0IHZjNF9kZXYsIGJvX2NhY2hlLnRpbWVfd29yayk7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHZjNC0+ZGV2OworCisJbXV0ZXhfbG9jaygmdmM0LT5ib19sb2NrKTsKKwl2YzRf Ym9fY2FjaGVfZnJlZV9vbGQoZGV2KTsKKwltdXRleF91bmxvY2soJnZjNC0+Ym9fbG9jayk7Cit9 CisKK3N0YXRpYyB2b2lkIHZjNF9ib19jYWNoZV90aW1lX3RpbWVyKHVuc2lnbmVkIGxvbmcgZGF0 YSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gKHN0cnVjdCBkcm1fZGV2aWNlICopZGF0 YTsKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOworCisJc2NoZWR1bGVf d29yaygmdmM0LT5ib19jYWNoZS50aW1lX3dvcmspOworfQorCit2b2lkIHZjNF9ib19jYWNoZV9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRv X3ZjNF9kZXYoZGV2KTsKKworCW11dGV4X2luaXQoJnZjNC0+Ym9fbG9jayk7CisKKwlJTklUX0xJ U1RfSEVBRCgmdmM0LT5ib19jYWNoZS50aW1lX2xpc3QpOworCisJSU5JVF9XT1JLKCZ2YzQtPmJv X2NhY2hlLnRpbWVfd29yaywgdmM0X2JvX2NhY2hlX3RpbWVfd29yayk7CisJc2V0dXBfdGltZXIo JnZjNC0+Ym9fY2FjaGUudGltZV90aW1lciwKKwkJICAgIHZjNF9ib19jYWNoZV90aW1lX3RpbWVy LAorCQkgICAgKHVuc2lnbmVkIGxvbmcpZGV2KTsKK30KKwordm9pZCB2YzRfYm9fY2FjaGVfZGVz dHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0 b192YzRfZGV2KGRldik7CisKKwlkZWxfdGltZXIoJnZjNC0+Ym9fY2FjaGUudGltZV90aW1lcik7 CisJY2FuY2VsX3dvcmtfc3luYygmdmM0LT5ib19jYWNoZS50aW1lX3dvcmspOworCisJdmM0X2Jv X2NhY2hlX3B1cmdlKGRldik7CisKKwlpZiAodmM0LT5ib19zdGF0cy5udW1fYWxsb2NhdGVkKSB7 CisJCURSTV9FUlJPUigiRGVzdHJveWluZyBCTyBjYWNoZSB3aGlsZSBCT3Mgc3RpbGwgYWxsb2Nh dGVkOlxuIik7CisJCXZjNF9ib19zdGF0c19kdW1wKHZjNCk7CisJfQorfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfZGVidWdmcy5jCmluZGV4IDQyOTdiMGE1Li42YmNmOTZlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf ZGVidWdmcy5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAidmM0X3JlZ3MuaCIKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0IHZjNF9kZWJ1Z2ZzX2xpc3RbXSA9IHsKKwl7 ImJvX3N0YXRzIiwgdmM0X2JvX3N0YXRzX2RlYnVnZnMsIDB9LAogCXsiaGRtaV9yZWdzIiwgdmM0 X2hkbWlfZGVidWdmc19yZWdzLCAwfSwKIAl7Imh2c19yZWdzIiwgdmM0X2h2c19kZWJ1Z2ZzX3Jl Z3MsIDB9LAogCXsiY3J0YzBfcmVncyIsIHZjNF9jcnRjX2RlYnVnZnNfcmVncywgMCwgKHZvaWQg KikodWludHB0cl90KTB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYwppbmRleCA2ZTczMDYwLi5kYTA0MWZh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kcnYuYwpAQCAtOTIsNyArOTIsOCBAQCBzdGF0aWMgc3RydWN0IGRy bV9kcml2ZXIgdmM0X2RybV9kcml2ZXIgPSB7CiAJLmRlYnVnZnNfY2xlYW51cCA9IHZjNF9kZWJ1 Z2ZzX2NsZWFudXAsCiAjZW5kaWYKIAotCS5nZW1fZnJlZV9vYmplY3QgPSBkcm1fZ2VtX2NtYV9m cmVlX29iamVjdCwKKwkuZ2VtX2NyZWF0ZV9vYmplY3QgPSB2YzRfY3JlYXRlX29iamVjdCwKKwku Z2VtX2ZyZWVfb2JqZWN0ID0gdmM0X2ZyZWVfb2JqZWN0LAogCS5nZW1fdm1fb3BzID0gJmRybV9n ZW1fY21hX3ZtX29wcywKIAogCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3ByaW1lX2hh bmRsZV90b19mZCwKQEAgLTE3MCw2ICsxNzEsOCBAQCBzdGF0aWMgaW50IHZjNF9kcm1fYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlkcm1fZGV2X3NldF91bmlxdWUoZHJtLCBkZXZfbmFtZShk ZXYpKTsKIAorCXZjNF9ib19jYWNoZV9pbml0KGRybSk7CisKIAlkcm1fbW9kZV9jb25maWdfaW5p dChkcm0pOwogCWlmIChyZXQpCiAJCWdvdG8gdW5yZWY7CkBAIC0yMDIsNiArMjA1LDcgQEAgdW5i aW5kX2FsbDoKIAljb21wb25lbnRfdW5iaW5kX2FsbChkZXYsIGRybSk7CiB1bnJlZjoKIAlkcm1f ZGV2X3VucmVmKGRybSk7CisJdmM0X2JvX2NhY2hlX2Rlc3Ryb3koZHJtKTsKIAlyZXR1cm4gcmV0 OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCmluZGV4IGZkODMxOWYuLjM5YTFmZjUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2Rydi5oCkBAIC0xNyw2ICsxNywzNyBAQCBzdHJ1Y3QgdmM0X2RldiB7CiAJc3RydWN0 IHZjNF9jcnRjICpjcnRjWzNdOwogCiAJc3RydWN0IGRybV9mYmRldl9jbWEgKmZiZGV2OworCisJ LyogVGhlIGtlcm5lbC1zcGFjZSBCTyBjYWNoZS4gIFRyYWNrcyBidWZmZXJzIHRoYXQgaGF2ZSBi ZWVuCisJICogdW5yZWZlcmVuY2VkIGJ5IGFsbCBvdGhlciB1c2VycyAocmVmY291bnRzIG9mIDAh KSBidXQgbm90CisJICogeWV0IGZyZWVkLCBzbyB3ZSBjYW4gZG8gY2hlYXAgYWxsb2NhdGlvbnMu CisJICovCisJc3RydWN0IHZjNF9ib19jYWNoZSB7CisJCS8qIEFycmF5IG9mIGxpc3QgaGVhZHMg Zm9yIGVudHJpZXMgaW4gdGhlIEJPIGNhY2hlLAorCQkgKiBiYXNlZCBvbiBudW1iZXIgb2YgcGFn ZXMsIHNvIHdlIGNhbiBkbyBPKDEpIGxvb2t1cHMKKwkJICogaW4gdGhlIGNhY2hlIHdoZW4gYWxs b2NhdGluZy4KKwkJICovCisJCXN0cnVjdCBsaXN0X2hlYWQgKnNpemVfbGlzdDsKKwkJdWludDMy X3Qgc2l6ZV9saXN0X3NpemU7CisKKwkJLyogTGlzdCBvZiBhbGwgQk9zIGluIHRoZSBjYWNoZSwg b3JkZXJlZCBieSBhZ2UsIHNvIHdlCisJCSAqIGNhbiBkbyBPKDEpIGxvb2t1cHMgd2hlbiB0cnlp bmcgdG8gZnJlZSBvbGQKKwkJICogYnVmZmVycy4KKwkJICovCisJCXN0cnVjdCBsaXN0X2hlYWQg dGltZV9saXN0OworCQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdGltZV93b3JrOworCQlzdHJ1Y3QgdGlt ZXJfbGlzdCB0aW1lX3RpbWVyOworCX0gYm9fY2FjaGU7CisKKwlzdHJ1Y3QgdmM0X2JvX3N0YXRz IHsKKwkJdTMyIG51bV9hbGxvY2F0ZWQ7CisJCXUzMiBzaXplX2FsbG9jYXRlZDsKKwkJdTMyIG51 bV9jYWNoZWQ7CisJCXUzMiBzaXplX2NhY2hlZDsKKwl9IGJvX3N0YXRzOworCisJLyogUHJvdGVj dHMgYm9fY2FjaGUgYW5kIHRoZSBCTyBzdGF0cy4gKi8KKwlzdHJ1Y3QgbXV0ZXggYm9fbG9jazsK IH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZjNF9kZXYgKgpAQCAtMjcsNiArNTgsMTcgQEAg dG9fdmM0X2RldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdHJ1Y3QgdmM0X2JvIHsKIAlz dHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0IGJhc2U7CisKKwkvKiBMaXN0IGVudHJ5IGZvciB0aGUg Qk8ncyBwb3NpdGlvbiBpbiBlaXRoZXIKKwkgKiB2YzRfZXhlY19pbmZvLT51bnJlZl9saXN0IG9y IHZjNF9kZXYtPmJvX2NhY2hlLnRpbWVfbGlzdAorCSAqLworCXN0cnVjdCBsaXN0X2hlYWQgdW5y ZWZfaGVhZDsKKworCS8qIFRpbWUgaW4gamlmZmllcyB3aGVuIHRoZSBCTyB3YXMgcHV0IGluIHZj NC0+Ym9fY2FjaGUuICovCisJdW5zaWduZWQgbG9uZyBmcmVlX3RpbWU7CisKKwkvKiBMaXN0IGVu dHJ5IGZvciB0aGUgQk8ncyBwb3NpdGlvbiBpbiB2YzRfZGV2LT5ib19jYWNoZS5zaXplX2xpc3Qg Ki8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHNpemVfaGVhZDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3Ry dWN0IHZjNF9ibyAqCkBAIC0xMDQsMTMgKzE0NiwxOCBAQCB0b192YzRfZW5jb2RlcihzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpCiAjZGVmaW5lIHdhaXRfZm9yKENPTkQsIE1TKSBfd2FpdF9m b3IoQ09ORCwgTVMsIDEpCiAKIC8qIHZjNF9iby5jICovCitzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KnZjNF9jcmVhdGVfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKTsK IHZvaWQgdmM0X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaik7Ci1z dHJ1Y3QgdmM0X2JvICp2YzRfYm9fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVf dCBzaXplKTsKK3N0cnVjdCB2YzRfYm8gKnZjNF9ib19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc2l6ZV90IHNpemUsCisJCQkgICAgIGJvb2wgZnJvbV9jYWNoZSk7CiBpbnQgdmM0X2R1 bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCQkgICAgc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7CiBz dHJ1Y3QgZG1hX2J1ZiAqdmM0X3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCSBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKTsKK3ZvaWQgdmM0X2Jv X2NhY2hlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIHZjNF9ib19jYWNoZV9k ZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworaW50IHZjNF9ib19zdGF0c19kZWJ1Z2Zz KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKTsKIAogLyogdmM0X2NydGMuYyAqLwogZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdmM0X2NydGNfZHJpdmVyOwotLSAKMi42LjIKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==