From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v6 03/10] drm: revocation check at drm subsystem Date: Thu, 2 May 2019 18:52:56 +0530 Message-ID: <20190502132303.27696-4-ramalingam.c@intel.com> References: <20190502132303.27696-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190502132303.27696-1-ramalingam.c@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, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, gwan-gyeong.mun@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gZXZlcnkgaGRjcCByZXZvY2F0aW9uIGNoZWNrIHJlcXVlc3QgU1JNIGlzIHJlYWQgZnJvbSBm dyBmaWxlCi9saWIvZmlybXdhcmUvZGlzcGxheV9oZGNwX3NybS5iaW4KClNSTSB0YWJsZSBpcyBw YXJzZWQgYW5kIHN0b3JlZCBhdCBkcm1faGRjcC5jLCB3aXRoIGZ1bmN0aW9ucyBleHBvcnRlZApm b3IgdGhlIHNlcnZpY2VzIGZvciByZXZvY2F0aW9uIGNoZWNrIGZyb20gZHJpdmVycyAod2hpY2gK aW1wbGVtZW50cyB0aGUgSERDUCBhdXRoZW50aWNhdGlvbikKClRoaXMgcGF0Y2ggaGFuZGxlcyB0 aGUgSERDUDEuNCBhbmQgMi4yIHZlcnNpb25zIG9mIFNSTSB0YWJsZS4KCnYyOgogIG1vdmVkIHRo ZSB1QVBJIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCkgW0RhbmllbF0KdjM6CiAga2RvYyBh ZGRlZC4gW0RhbmllbF0KICBzcm1faGVhZGVyIHVuaWZpZWQgYW5kIGJpdCBmaWVsZCBkZWZpbml0 aW9ucyBhcmUgcmVtb3ZlZC4gW0RhbmllbF0KICBsb2NraW5nIGltcHJvdmVkLiBbRGFuaWVsXQog IHZybCBsZW5ndGggdmlvbGF0aW9uIGlzIGZpeGVkLiBbRGFuaWVsXQoKU2lnbmVkLW9mZi1ieTog UmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgpTdWdnZXN0ZWQtYnk6IERhbmll bCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21z LWhlbHBlcnMucnN0IHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jICAgICAgICAgICAgfCAzNDIg KysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwu aCAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2RybV9zeXNmcy5jICAgICAgICAgICB8 ICAgMiArCiBpbmNsdWRlL2RybS9kcm1faGRjcC5oICAgICAgICAgICAgICAgIHwgIDI0ICsrCiA2 IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9oZGNwLmMKCmRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJt LWttcy1oZWxwZXJzLnJzdAppbmRleCAxNDEwMmFlMDM1ZGMuLjBmZTcyNmE2ZWU2NyAxMDA2NDQK LS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CkBAIC0xODEsNiArMTgxLDEyIEBAIFBhbmVs IEhlbHBlciBSZWZlcmVuY2UKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Bh bmVsX29yaWVudGF0aW9uX3F1aXJrcy5jCiAgICA6ZXhwb3J0OgogCitIRENQIEhlbHBlciBGdW5j dGlvbnMgUmVmZXJlbmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIGtl cm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2hkY3AuYworICAgOmV4cG9ydDoKKwogRGlz cGxheSBQb3J0IEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDcyZjUwMzZkOWJmYS4uZGQwMmU5 ZGVjODEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xNyw3ICsxNyw3IEBAIGRybS15ICAgICAgIDo9CWRybV9h dXRoLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRybV9w cmludC5vIFwKIAkJZHJtX2R1bWJfYnVmZmVycy5vIGRybV9tb2RlX2NvbmZpZy5vIGRybV92Ymxh bmsubyBcCiAJCWRybV9zeW5jb2JqLm8gZHJtX2xlYXNlLm8gZHJtX3dyaXRlYmFjay5vIGRybV9j bGllbnQubyBcCi0JCWRybV9hdG9taWNfdWFwaS5vCisJCWRybV9hdG9taWNfdWFwaS5vIGRybV9o ZGNwLm8KIAogZHJtLSQoQ09ORklHX0RSTV9MRUdBQ1kpICs9IGRybV9sZWdhY3lfbWlzYy5vIGRy bV9idWZzLm8gZHJtX2NvbnRleHQubyBkcm1fZG1hLm8gZHJtX3NjYXR0ZXIubyBkcm1fbG9jay5v CiBkcm0tJChDT05GSUdfRFJNX0xJQl9SQU5ET00pICs9IGxpYi9kcm1fcmFuZG9tLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9o ZGNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYzBlMTM0MDky MjEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2hkY3AuYwpAQCAtMCww ICsxLDM0MiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBD b3B5cmlnaHQgKEMpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogQXV0aG9yczoKKyAq IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgv Z2ZwLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5o PgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2hkY3Au aD4KKyNpbmNsdWRlIDxkcm0vZHJtX3N5c2ZzLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5o PgorI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CisKK3N0cnVjdCBoZGNwX3NybSB7CisJdTgg KnNybV9idWY7CisJc2l6ZV90IHJlY2VpdmVkX3NybV9zejsKKwl1MzIgcmV2b2tlZF9rc3ZfY250 OworCXU4ICpyZXZva2VkX2tzdl9saXN0OworCisJLyogTXV0ZXggdG8gcHJvdGVjdCBhYm92ZSBz dHJ1Y3QgbWVtYmVyICovCisJc3RydWN0IG11dGV4IG11dGV4OworfSAqc3JtX2RhdGE7CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBkcm1faGRjcF9wcmludF9rc3YoY29uc3QgdTggKmtzdikKK3sKKwlE Uk1fREVCVUcoIlx0JSMwMngsICUjMDJ4LCAlIzAyeCwgJSMwMngsICUjMDJ4XG4iLAorCQkgIGtz dlswXSwga3N2WzFdLCBrc3ZbMl0sIGtzdlszXSwga3N2WzRdKTsKK30KKworc3RhdGljIHUzMiBk cm1faGRjcF9nZXRfcmV2b2tlZF9rc3ZfY291bnQoY29uc3QgdTggKmJ1ZiwgdTMyIHZybHNfbGVu Z3RoKQoreworCXUzMiBwYXJzZWRfYnl0ZXMgPSAwLCBrc3ZfY291bnQgPSAwLCB2cmxfa3N2X2Nu dCwgdnJsX3N6OworCisJd2hpbGUgKHBhcnNlZF9ieXRlcyA8IHZybHNfbGVuZ3RoKSB7CisJCXZy bF9rc3ZfY250ID0gKmJ1ZjsKKwkJa3N2X2NvdW50ICs9IHZybF9rc3ZfY250OworCisJCXZybF9z eiA9ICh2cmxfa3N2X2NudCAqIERSTV9IRENQX0tTVl9MRU4pICsgMTsKKwkJYnVmICs9IHZybF9z ejsKKwkJcGFyc2VkX2J5dGVzICs9IHZybF9zejsKKwl9CisKKwkvKgorCSAqIFdoZW4gdnJscyBh cmUgbm90IHZhbGlkLCBrc3ZzIGFyZSBub3QgY29uc2lkZXJlZC4KKwkgKiBIZW5jZSBTUk0gd2ls bCBiZSBkaXNjYXJkZWQuCisJICovCisJaWYgKHBhcnNlZF9ieXRlcyAhPSB2cmxzX2xlbmd0aCkK KwkJa3N2X2NvdW50ID0gMDsKKworCXJldHVybiBrc3ZfY291bnQ7Cit9CisKK3N0YXRpYyB1MzIg ZHJtX2hkY3BfZ2V0X3Jldm9rZWRfa3N2cyhjb25zdCB1OCAqYnVmLCB1OCAqcmV2b2tlZF9rc3Zf bGlzdCwKKwkJCQkgICAgIHUzMiB2cmxzX2xlbmd0aCkKK3sKKwl1MzIgcGFyc2VkX2J5dGVzID0g MCwga3N2X2NvdW50ID0gMDsKKwl1MzIgdnJsX2tzdl9jbnQsIHZybF9rc3Zfc3osIHZybF9pZHgg PSAwOworCisJZG8geworCQl2cmxfa3N2X2NudCA9ICpidWY7CisJCXZybF9rc3Zfc3ogPSB2cmxf a3N2X2NudCAqIERSTV9IRENQX0tTVl9MRU47CisKKwkJYnVmKys7CisKKwkJRFJNX0RFQlVHKCJ2 cmw6ICVkLCBSZXZva2VkIEtTVnM6ICVkXG4iLCB2cmxfaWR4KyssCisJCQkgIHZybF9rc3ZfY250 KTsKKwkJbWVtY3B5KHJldm9rZWRfa3N2X2xpc3QsIGJ1ZiwgdnJsX2tzdl9zeik7CisKKwkJa3N2 X2NvdW50ICs9IHZybF9rc3ZfY250OworCQlyZXZva2VkX2tzdl9saXN0ICs9IHZybF9rc3Zfc3o7 CisJCWJ1ZiArPSB2cmxfa3N2X3N6OworCisJCXBhcnNlZF9ieXRlcyArPSAodnJsX2tzdl9zeiAr IDEpOworCX0gd2hpbGUgKHBhcnNlZF9ieXRlcyA8IHZybHNfbGVuZ3RoKTsKKworCXJldHVybiBr c3ZfY291bnQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGdldF92cmxfbGVuZ3RoKGNvbnN0IHU4 ICpidWYpCit7CisJcmV0dXJuICh1MzIpKGJ1ZlswXSA8PCAxNiB8IGJ1ZlsxXSA8PCA4IHwgYnVm WzJdKTsKK30KKworc3RhdGljIGludCBkcm1faGRjcF9wYXJzZV9oZGNwMV9zcm0oY29uc3QgdTgg KmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBoZGNwX3NybV9oZWFkZXIgKmhlYWRlcjsK Kwl1MzIgdnJsX2xlbmd0aCwga3N2X2NvdW50OworCisJaWYgKGNvdW50IDwgKHNpemVvZihzdHJ1 Y3QgaGRjcF9zcm1faGVhZGVyKSArCisJICAgIERSTV9IRENQXzFfNF9WUkxfTEVOR1RIX1NJWkUg KyBEUk1fSERDUF8xXzRfRENQX1NJR19TSVpFKSkgeworCQlEUk1fRVJST1IoIkludmFsaWQgYmxv YiBsZW5ndGhcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwloZWFkZXIgPSAoc3RydWN0 IGhkY3Bfc3JtX2hlYWRlciAqKWJ1ZjsKKwlEUk1fREVCVUcoIlNSTSBJRDogMHgleCwgU1JNIFZl cjogMHgleCwgU1JNIEdlbiBObzogMHgleFxuIiwKKwkJICBoZWFkZXItPnNybV9pZCwKKwkJICBf X3N3YWIxNihoZWFkZXItPnNybV92ZXJzaW9uKSwgaGVhZGVyLT5zcm1fZ2VuX25vKTsKKworCVdB Uk5fT04oaGVhZGVyLT5yZXNlcnZlZCk7CisKKwlidWYgPSBidWYgKyBzaXplb2YoKmhlYWRlcik7 CisJdnJsX2xlbmd0aCA9IGdldF92cmxfbGVuZ3RoKGJ1Zik7CisJaWYgKGNvdW50IDwgKHNpemVv ZihzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyKSArIHZybF9sZW5ndGgpIHx8CisJICAgIHZybF9sZW5n dGggPCAoRFJNX0hEQ1BfMV80X1ZSTF9MRU5HVEhfU0laRSArCisJCQkgIERSTV9IRENQXzFfNF9E Q1BfU0lHX1NJWkUpKSB7CisJCURSTV9FUlJPUigiSW52YWxpZCBibG9iIGxlbmd0aCBvciB2cmwg bGVuZ3RoXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogTGVuZ3RoIG9mIHRoZSBh bGwgdnJscyBjb21iaW5lZCAqLworCXZybF9sZW5ndGggLT0gKERSTV9IRENQXzFfNF9WUkxfTEVO R1RIX1NJWkUgKworCQkgICAgICAgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSk7CisKKwlpZiAo IXZybF9sZW5ndGgpIHsKKwkJRFJNX0VSUk9SKCJObyB2cmwgZm91bmRcbiIpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlidWYgKz0gRFJNX0hEQ1BfMV80X1ZSTF9MRU5HVEhfU0laRTsKKwlr c3ZfY291bnQgPSBkcm1faGRjcF9nZXRfcmV2b2tlZF9rc3ZfY291bnQoYnVmLCB2cmxfbGVuZ3Ro KTsKKwlpZiAoIWtzdl9jb3VudCkgeworCQlEUk1fREVCVUcoIlJldm9rZWQgS1NWIGNvdW50IGlz IDBcbiIpOworCQlyZXR1cm4gY291bnQ7CisJfQorCisJa2ZyZWUoc3JtX2RhdGEtPnJldm9rZWRf a3N2X2xpc3QpOworCXNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0ID0ga2NhbGxvYyhrc3ZfY291 bnQsIERSTV9IRENQX0tTVl9MRU4sCisJCQkJCSAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFzcm1f ZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCkgeworCQlEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlcbiIp OworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpZiAoZHJtX2hkY3BfZ2V0X3Jldm9rZWRfa3N2 cyhidWYsIHNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0LAorCQkJCSAgICAgIHZybF9sZW5ndGgp ICE9IGtzdl9jb3VudCkgeworCQlzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfY250ID0gMDsKKwkJa2Zy ZWUoc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3QpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK Kwlzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfY250ID0ga3N2X2NvdW50OworCXJldHVybiBjb3VudDsK K30KKworc3RhdGljIGludCBkcm1faGRjcF9wYXJzZV9oZGNwMl9zcm0oY29uc3QgdTggKmJ1Ziwg c2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBoZGNwX3NybV9oZWFkZXIgKmhlYWRlcjsKKwl1MzIg dnJsX2xlbmd0aCwga3N2X2NvdW50LCBrc3Zfc3o7CisKKwlpZiAoY291bnQgPCAoc2l6ZW9mKHN0 cnVjdCBoZGNwX3NybV9oZWFkZXIpICsKKwkgICAgRFJNX0hEQ1BfMl9WUkxfTEVOR1RIX1NJWkUg KyBEUk1fSERDUF8yX0RDUF9TSUdfU0laRSkpIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIGJsb2Ig bGVuZ3RoXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaGVhZGVyID0gKHN0cnVjdCBo ZGNwX3NybV9oZWFkZXIgKilidWY7CisJRFJNX0RFQlVHKCJTUk0gSUQ6IDB4JXgsIFNSTSBWZXI6 IDB4JXgsIFNSTSBHZW4gTm86IDB4JXhcbiIsCisJCSAgaGVhZGVyLT5zcm1faWQgJiBEUk1fSERD UF9TUk1fSURfTUFTSywKKwkJICBfX3N3YWIxNihoZWFkZXItPnNybV92ZXJzaW9uKSwgaGVhZGVy LT5zcm1fZ2VuX25vKTsKKworCWlmIChoZWFkZXItPnJlc2VydmVkKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWJ1ZiA9IGJ1ZiArIHNpemVvZigqaGVhZGVyKTsKKwl2cmxfbGVuZ3RoID0gZ2V0X3Zy bF9sZW5ndGgoYnVmKTsKKworCWlmIChjb3VudCA8IChzaXplb2Yoc3RydWN0IGhkY3Bfc3JtX2hl YWRlcikgKyB2cmxfbGVuZ3RoKSB8fAorCSAgICB2cmxfbGVuZ3RoIDwgKERSTV9IRENQXzJfVlJM X0xFTkdUSF9TSVpFICsKKwkgICAgRFJNX0hEQ1BfMl9EQ1BfU0lHX1NJWkUpKSB7CisJCURSTV9F UlJPUigiSW52YWxpZCBibG9iIGxlbmd0aCBvciB2cmwgbGVuZ3RoXG4iKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCisJLyogTGVuZ3RoIG9mIHRoZSBhbGwgdnJscyBjb21iaW5lZCAqLworCXZy bF9sZW5ndGggLT0gKERSTV9IRENQXzJfVlJMX0xFTkdUSF9TSVpFICsKKwkJICAgICAgIERSTV9I RENQXzJfRENQX1NJR19TSVpFKTsKKworCWlmICghdnJsX2xlbmd0aCkgeworCQlEUk1fRVJST1Io Ik5vIHZybCBmb3VuZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWJ1ZiArPSBEUk1f SERDUF8yX1ZSTF9MRU5HVEhfU0laRTsKKwlrc3ZfY291bnQgPSAoKmJ1ZiA8PCAyKSB8IERSTV9I RENQXzJfS1NWX0NPVU5UXzJfTFNCSVRTKCooYnVmICsgMSkpOworCWlmICgha3N2X2NvdW50KSB7 CisJCURSTV9ERUJVRygiUmV2b2tlZCBLU1YgY291bnQgaXMgMFxuIik7CisJCXJldHVybiBjb3Vu dDsKKwl9CisKKwlrZnJlZShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCk7CisJc3JtX2RhdGEt PnJldm9rZWRfa3N2X2xpc3QgPSBrY2FsbG9jKGtzdl9jb3VudCwgRFJNX0hEQ1BfS1NWX0xFTiwK KwkJCQkJICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0 KSB7CisJCURSTV9FUlJPUigiT3V0IG9mIE1lbW9yeVxuIik7CisJCXJldHVybiAtRU5PTUVNOwor CX0KKworCWtzdl9zeiA9IGtzdl9jb3VudCAqIERSTV9IRENQX0tTVl9MRU47CisJYnVmICs9IERS TV9IRENQXzJfTk9fT0ZfREVWX1BMVVNfUkVTRVJWRURfU1o7CisKKwlEUk1fREVCVUcoIlJldm9r ZWQgS1NWczogJWRcbiIsIGtzdl9jb3VudCk7CisJbWVtY3B5KHNybV9kYXRhLT5yZXZva2VkX2tz dl9saXN0LCBidWYsIGtzdl9zeik7CisKKwlzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfY250ID0ga3N2 X2NvdW50OworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzX3NybV92 ZXJzaW9uX2hkY3AxKGNvbnN0IHU4ICpidWYpCit7CisJcmV0dXJuICpidWYgPT0gKHU4KShEUk1f SERDUF8xXzRfU1JNX0lEIDw8IDQpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNfc3JtX3Zl cnNpb25faGRjcDIoY29uc3QgdTggKmJ1ZikKK3sKKwlyZXR1cm4gKmJ1ZiA9PSAodTgpKERSTV9I RENQXzJfU1JNX0lEIDw8IDQgfCBEUk1fSERDUF8yX0lORElDQVRPUik7Cit9CisKK3N0YXRpYyBz c2l6ZV90IGRybV9oZGNwX3NybV91cGRhdGUoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGNvdW50KQor eworCWlmIChpc19zcm1fdmVyc2lvbl9oZGNwMShidWYpKQorCQlyZXR1cm4gKHNzaXplX3QpZHJt X2hkY3BfcGFyc2VfaGRjcDFfc3JtKGJ1ZiwgY291bnQpOworCWVsc2UgaWYgKGlzX3NybV92ZXJz aW9uX2hkY3AyKGJ1ZikpCisJCXJldHVybiAoc3NpemVfdClkcm1faGRjcF9wYXJzZV9oZGNwMl9z cm0oYnVmLCBjb3VudCk7CisKKwlyZXR1cm4gKHNzaXplX3QpLUVJTlZBTDsKK30KKwordm9pZCBk cm1faGRjcF9yZXF1ZXN0X3NybShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldikKK3sKKwljaGFy IGZ3X25hbWVbMzZdID0gImRpc3BsYXlfaGRjcF9zcm0uYmluIjsKKwljb25zdCBzdHJ1Y3QgZmly bXdhcmUgKmZ3OworCisJaW50IHJldDsKKworCXJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0 KCZmdywgKGNvbnN0IGNoYXIgKilmd19uYW1lLAorCQkJCSAgICAgIGRybV9kZXYtPmRldik7CisJ aWYgKHJldCA8IDApCisJCWdvdG8gZXhpdDsKKworCWlmIChmdy0+c2l6ZSAmJiBmdy0+ZGF0YSkK KwkJZHJtX2hkY3Bfc3JtX3VwZGF0ZShmdy0+ZGF0YSwgZnctPnNpemUpOworCitleGl0OgorCXJl bGVhc2VfZmlybXdhcmUoZncpOworfQorCisvKioKKyAqIGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2 b2tlZCAtIENoZWNrIHRoZSByZXZva2VkIHN0YXR1cyBvZiB0aGUgSURzCisgKgorICogQGRybV9k ZXY6IGRybV9kZXZpY2UgZm9yIHdoaWNoIEhEQ1AgcmV2b2NhdGlvbiBjaGVjayBpcyByZXF1ZXN0 ZWQKKyAqIEBrc3ZzOiBMaXN0IG9mIEtTVnMgKEhEQ1AgcmVjZWl2ZXIgSURzKQorICogQGtzdl9j b3VudDogS1NWIGNvdW50IHBhc3NlZCBpbiB0aHJvdWdoIEBrc3ZzCisgKgorICogVGhpcyBmdW5j dGlvbiByZWFkcyB0aGUgSERDUCBTeXN0ZW0gcmVuZXdhYmlsaXR5IE1lc3NhZ2UoU1JNIFRhYmxl KQorICogZnJvbSB1c2Vyc3BhY2UgYXMgYSBmaXJtd2FyZSBhbmQgcGFyc2VzIGl0IGZvciB0aGUg cmV2b2tlZCBIRENQCisgKiBLU1ZzKFJlY2VpdmVyIElEcykgZGV0ZWN0ZWQgYnkgRENQIExMQy4g T25jZSB0aGUgcmV2b2tlZCBLU1ZzIGFyZSBrbm93biwKKyAqIHJldm9rZWQgc3RhdGUgb2YgdGhl IEtTVnMgaW4gdGhlIGxpc3QgcGFzc2VkIGluIGJ5IGRpc3BsYXkgZHJpdmVycyBhcmUKKyAqIGRl Y2lkZWQgYW5kIHJlc3BvbnNlIGlzIHNlbnQuCisgKgorICogU1JNIHNob3VsZCBiZSBwcmVzZW50 ZWQgaW4gdGhlIG5hbWUgb2YgImRpc3BsYXlfaGRjcF9zcm0uYmluIi4KKyAqCisgKiBSZXR1cm5z OgorICogVFJVRSBvbiBhbnkgb2YgdGhlIEtTViBpcyByZXZva2VkLCBlbHNlIEZBTFNFLgorICov Citib29sIGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2RldiwgdTggKmtzdnMsCisJCQkJIHUzMiBrc3ZfY291bnQpCit7CisJdTMyIHJldl9rc3ZfY250 LCBjbnQsIGksIGo7CisJdTggKnJldl9rc3ZfbGlzdDsKKworCWlmICghc3JtX2RhdGEpCisJCXJl dHVybiBmYWxzZTsKKworCW11dGV4X2xvY2soJnNybV9kYXRhLT5tdXRleCk7CisJZHJtX2hkY3Bf cmVxdWVzdF9zcm0oZHJtX2Rldik7CisKKwlyZXZfa3N2X2NudCA9IHNybV9kYXRhLT5yZXZva2Vk X2tzdl9jbnQ7CisJcmV2X2tzdl9saXN0ID0gc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3Q7CisK KwkvKiBJZiB0aGUgUmV2b2tlZCBrc3YgbGlzdCBpcyBlbXB0eSAqLworCWlmICghcmV2X2tzdl9j bnQgfHwgIXJldl9rc3ZfbGlzdCkgeworCQltdXRleF91bmxvY2soJnNybV9kYXRhLT5tdXRleCk7 CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlmb3IgIChjbnQgPSAwOyBjbnQgPCBrc3ZfY291bnQ7 IGNudCsrKSB7CisJCXJldl9rc3ZfbGlzdCA9IHNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0Owor CQlmb3IgKGkgPSAwOyBpIDwgcmV2X2tzdl9jbnQ7IGkrKykgeworCQkJZm9yIChqID0gMDsgaiA8 IERSTV9IRENQX0tTVl9MRU47IGorKykKKwkJCQlpZiAoa3N2c1tqXSAhPSByZXZfa3N2X2xpc3Rb al0pIHsKKwkJCQkJYnJlYWs7CisJCQkJfSBlbHNlIGlmIChqID09IChEUk1fSERDUF9LU1ZfTEVO IC0gMSkpIHsKKwkJCQkJRFJNX0RFQlVHKCJSZXZva2VkIEtTViBpcyAiKTsKKwkJCQkJZHJtX2hk Y3BfcHJpbnRfa3N2KGtzdnMpOworCQkJCQltdXRleF91bmxvY2soJnNybV9kYXRhLT5tdXRleCk7 CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCS8qIE1vdmUgdGhlIG9mZnNldCB0byBuZXh0 IEtTViBpbiB0aGUgcmV2b2tlZCBsaXN0ICovCisJCQlyZXZfa3N2X2xpc3QgKz0gRFJNX0hEQ1Bf S1NWX0xFTjsKKwkJfQorCisJCS8qIEl0ZXJhdGUgdG8gbmV4dCBrc3Zfb2Zmc2V0ICovCisJCWtz dnMgKz0gRFJNX0hEQ1BfS1NWX0xFTjsKKwl9CisJbXV0ZXhfdW5sb2NrKCZzcm1fZGF0YS0+bXV0 ZXgpOworCXJldHVybiBmYWxzZTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9oZGNwX2NoZWNr X2tzdnNfcmV2b2tlZCk7CisKK2ludCBkcm1fc2V0dXBfaGRjcF9zcm0oc3RydWN0IGNsYXNzICpk cm1fY2xhc3MpCit7CisJc3JtX2RhdGEgPSBremFsbG9jKHNpemVvZigqc3JtX2RhdGEpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIXNybV9kYXRhKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXNybV9kYXRh LT5zcm1fYnVmID0ga2NhbGxvYyhEUk1fSERDUF9TUk1fR0VOMV9NQVhfQllURVMsCisJCQkJICAg IHNpemVvZih1OCksIEdGUF9LRVJORUwpOworCWlmICghc3JtX2RhdGEtPnNybV9idWYpIHsKKwkJ a2ZyZWUoc3JtX2RhdGEpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJbXV0ZXhfaW5pdCgmc3Jt X2RhdGEtPm11dGV4KTsKKworCXJldHVybiAwOworfQorCit2b2lkIGRybV90ZWFyZG93bl9oZGNw X3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcykKK3sKKwlpZiAoc3JtX2RhdGEpIHsKKwkJa2Zy ZWUoc3JtX2RhdGEtPnNybV9idWYpOworCQlrZnJlZShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlz dCk7CisJCWtmcmVlKHNybV9kYXRhKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKaW5kZXgg ZTE5YWM3Y2E2MDJkLi40NzZhNDIyNDE0ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1faW50ZXJuYWwuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTIw MSwzICsyMDEsNyBAQCBpbnQgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIHZvaWQgZHJtX2ZyYW1lYnVmZmVyX3ByaW50X2luZm8oc3Ry dWN0IGRybV9wcmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAogCQkJCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKIGludCBkcm1fZnJhbWVidWZmZXJfZGVidWdmc19pbml0 KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKKworLyogZHJtX2hkY3AuYyAqLworaW50IGRybV9z ZXR1cF9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcyk7Cit2b2lkIGRybV90ZWFyZG93 bl9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKaW5kZXgg ZWNiN2IzMzAwMmJiLi4xOGIxYWM0NDI5OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3lzZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKQEAgLTc4LDYgKzc4 LDcgQEAgaW50IGRybV9zeXNmc19pbml0KHZvaWQpCiAJfQogCiAJZHJtX2NsYXNzLT5kZXZub2Rl ID0gZHJtX2Rldm5vZGU7CisJZHJtX3NldHVwX2hkY3Bfc3JtKGRybV9jbGFzcyk7CiAJcmV0dXJu IDA7CiB9CiAKQEAgLTkwLDYgKzkxLDcgQEAgdm9pZCBkcm1fc3lzZnNfZGVzdHJveSh2b2lkKQog ewogCWlmIChJU19FUlJfT1JfTlVMTChkcm1fY2xhc3MpKQogCQlyZXR1cm47CisJZHJtX3RlYXJk b3duX2hkY3Bfc3JtKGRybV9jbGFzcyk7CiAJY2xhc3NfcmVtb3ZlX2ZpbGUoZHJtX2NsYXNzLCAm Y2xhc3NfYXR0cl92ZXJzaW9uLmF0dHIpOwogCWNsYXNzX2Rlc3Ryb3koZHJtX2NsYXNzKTsKIAlk cm1fY2xhc3MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaCBiL2lu Y2x1ZGUvZHJtL2RybV9oZGNwLmgKaW5kZXggZjI0MzQwOGVjZjI2Li4yOTI5OThhMjQ5N2YgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9oZGNwLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2hk Y3AuaApAQCAtMjY1LDQgKzI2NSwyOCBAQCB2b2lkIGRybV9oZGNwMl91MzJfdG9fc2VxX251bSh1 OCBzZXFfbnVtW0hEQ1BfMl8yX1NFUV9OVU1fTEVOXSwgdTMyIHZhbCkKIAlzZXFfbnVtWzJdID0g dmFsOwogfQogCisjZGVmaW5lIERSTV9IRENQX1NSTV9HRU4xX01BWF9CWVRFUwkJKDUgKiAxMDI0 KQorI2RlZmluZSBEUk1fSERDUF8xXzRfU1JNX0lECQkJMHg4CisjZGVmaW5lIERSTV9IRENQX1NS TV9JRF9NQVNLCQkJKDB4RiA8PCA0KQorI2RlZmluZSBEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9T SVpFCQkzCisjZGVmaW5lIERSTV9IRENQXzFfNF9EQ1BfU0lHX1NJWkUJCTQwCisjZGVmaW5lIERS TV9IRENQXzJfU1JNX0lECQkJMHg5CisjZGVmaW5lIERSTV9IRENQXzJfSU5ESUNBVE9SCQkJMHgx CisjZGVmaW5lIERSTV9IRENQXzJfSU5ESUNBVE9SX01BU0sJCTB4RgorI2RlZmluZSBEUk1fSERD UF8yX1ZSTF9MRU5HVEhfU0laRQkJMworI2RlZmluZSBEUk1fSERDUF8yX0RDUF9TSUdfU0laRQkJ CTM4NAorI2RlZmluZSBEUk1fSERDUF8yX05PX09GX0RFVl9QTFVTX1JFU0VSVkVEX1NaCTQKKyNk ZWZpbmUgRFJNX0hEQ1BfMl9LU1ZfQ09VTlRfMl9MU0JJVFMoYnl0ZSkJKCgoYnl0ZSkgJiAweEMp ID4+IDYpCisKK3N0cnVjdCBoZGNwX3NybV9oZWFkZXIgeworCXU4IHNybV9pZDsKKwl1OCByZXNl cnZlZDsKKwl1MTYgc3JtX3ZlcnNpb247CisJdTggc3JtX2dlbl9ubzsKK30gX19wYWNrZWQ7CisK K3N0cnVjdCBkcm1fZGV2aWNlOworCitib29sIGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tlZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSB1OCAqa3N2cywgdTMyIGtzdl9jb3VudCk7CiAj ZW5kaWYKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4