From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v3 5/9] drm/komeda: Add komeda_format_caps for format handling Date: Fri, 21 Dec 2018 10:00:01 +0000 Message-ID: <20181221095757.15510-6-james.qian.wang@arm.com> References: <20181221095757.15510-1-james.qian.wang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181221095757.15510-1-james.qian.wang@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: Mark Rutland , "linux-doc@vger.kernel.org" , "maxime.ripard@bootlin.com" , "Jonathan Chai (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "yamada.masahiro@socionext.com" , "Yiqi Kang (Arm Technology China)" , "mchehab+samsung@kernel.org" , "Tiannan Zhu (Arm Technology China)" , "corbet@lwn.net" , "airlied@linux.ie" , "malidp@foss.arm.com" , "thomas Sun (Arm Technology China)" , Ayan Halder , devicetree List-Id: devicetree@vger.kernel.org a29tZWRhX2Zvcm1hdF9jYXBzIGlzIGZvciBkZXNjcmliaW5nIEFSTSBkaXNwbGF5IHNwZWNpZmlj IGZlYXR1cmVzIGFuZApsaW1pdGF0aW9ucyBvZiBhIHNwZWNpZmljIGZvcm1hdCwgYW5kIGZvcm1h dF9jYXBzIHdpbGwgYmUgbGlua2VkIGludG8KJmtvbWVkYV9mcmFtZWJ1ZmZlciBsaWtlIGEgZXh0 ZW5zaW9uIG9mICZkcm1fZm9ybWF0X2luZm8uCkFuZCBrb21lZF9mb3JtYXRfY2Fwc190YWJsZSB3 aWxsIGJlIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgZW51bV9yZXNvdXJjZXMsCnNpbmNlIHRoZSBs YXllciBmZWF0dXJlcyBkZXNjcmlwdGlvbiBkZXBlbmQgb24gdGhpcyBmb3JtYXRfY2FwcyB0YWJs ZSwgc28Kd2UnZCBiZXR0ZXIgaW5pdGlhbGl6ZSB0aGUgdGFibGUgZmlyc3QuCgpDaGFuZ2VzIGlu IHYzOgotIEZpeGVkIHN0eWxlIHByb2JsZW0gZm91bmQgYnkgY2hlY2twYXRjaC5wbCAtLXN0cmlj dC4KClNpZ25lZC1vZmYtYnk6IEphbWVzIChRaWFuKSBXYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJt LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlICAg fCAgMSArCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcxL2Q3MV9kZXYuYyAgfCA3 OCArKysrKysrKysrKysrKysrCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X2Rldi5jICAgfCAgMiArCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rl di5oICAgfCAxMSArKy0KIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Zvcm1hdF9jYXBz LmMgICB8IDc1ICsrKysrKysrKysrKysrKysKIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X2Zvcm1hdF9jYXBzLmggICB8IDg5ICsrKysrKysrKysrKysrKysrKysKIC4uLi9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oICB8ICAxICsKIDcgZmlsZXMgY2hhbmdlZCwg MjU2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mb3JtYXRfY2Fwcy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf Zm9ybWF0X2NhcHMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2Vm aWxlCmluZGV4IGMwM2Q2ODc2ZWY3NS4uMzk0ZmMyYWE0MzRhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUKQEAgLTcsNiArNyw3IEBAIGNjZmxhZ3MteSA6 PSBcCiBrb21lZGEteSA6PSBcCiAJa29tZWRhX2Rydi5vIFwKIAlrb21lZGFfZGV2Lm8gXAorCWtv bWVkYV9mb3JtYXRfY2Fwcy5vIFwKIAlrb21lZGFfcGlwZWxpbmUubwogCiBrb21lZGEteSArPSBc CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFf ZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfZGV2LmMK aW5kZXggYWYzZGFiYjQ5OWNkLi5lZGJmOWRhYTE1NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEvZDcxL2Q3MV9kZXYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfZGV2LmMKQEAgLTEzLDcgKzEzLDg1IEBAIHN0 YXRpYyBpbnQgZDcxX2VudW1fcmVzb3VyY2VzKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQogCXJl dHVybiAtMTsKIH0KIAorI2RlZmluZSBfX0hXX0lEKF9fZ3JvdXAsIF9fZm9ybWF0KSBcCisJKCgo KF9fZ3JvdXApICYgMHg3KSA8PCAzKSB8ICgoX19mb3JtYXQpICYgMHg3KSkKKworI2RlZmluZSBS SUNICQlLT01FREFfRk1UX1JJQ0hfTEFZRVIKKyNkZWZpbmUgU0lNUExFCQlLT01FREFfRk1UX1NJ TVBMRV9MQVlFUgorI2RlZmluZSBSSUNIX1NJTVBMRQkoS09NRURBX0ZNVF9SSUNIX0xBWUVSIHwg S09NRURBX0ZNVF9TSU1QTEVfTEFZRVIpCisjZGVmaW5lIFJJQ0hfV0IJCShLT01FREFfRk1UX1JJ Q0hfTEFZRVIgfCBLT01FREFfRk1UX1dCX0xBWUVSKQorI2RlZmluZSBSSUNIX1NJTVBMRV9XQgko UklDSF9TSU1QTEUgfCBLT01FREFfRk1UX1dCX0xBWUVSKQorCisjZGVmaW5lIFJvdF8wCQlEUk1f TU9ERV9ST1RBVEVfMAorI2RlZmluZSBGbGlwX0hfVgkoRFJNX01PREVfUkVGTEVDVF9YIHwgRFJN X01PREVfUkVGTEVDVF9ZIHwgUm90XzApCisjZGVmaW5lIFJvdF9BTExfSF9WCShEUk1fTU9ERV9S T1RBVEVfTUFTSyB8IEZsaXBfSF9WKQorCisjZGVmaW5lIExZVF9OTQkJQklUKEFGQkNfRk9STUFU X01PRF9CTE9DS19TSVpFXzE2eDE2KQorI2RlZmluZSBMWVRfV0IJCUJJVChBRkJDX0ZPUk1BVF9N T0RfQkxPQ0tfU0laRV8zMng4KQorI2RlZmluZSBMWVRfTk1fV0IJKExZVF9OTSB8IExZVF9XQikK KworI2RlZmluZSBBRkJfVEgJCUFGQkMoX1RJTEVEIHwgX1NQQVJTRSkKKyNkZWZpbmUgQUZCX1RI X1NDX1lUUglBRkJDKF9USUxFRCB8IF9TQyB8IF9TUEFSU0UgfCBfWVRSKQorI2RlZmluZSBBRkJf VEhfU0NfWVRSX0JTIEFGQkMoX1RJTEVEIHwgX1NDIHwgX1NQQVJTRSB8IF9ZVFIgfCBfU1BMSVQp CisKK3N0YXRpYyBzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzIGQ3MV9mb3JtYXRfY2Fwc190YWJs ZVtdID0geworCS8qICAgSFdfSUQgICAgfCAgICAgICAgZm91cmNjICAgICAgICB8IHRpbGVfc3og fCAgIGxheWVyX3R5cGVzIHwgICByb3RzICAgIHwgYWZiY19sYXlvdXRzIHwgYWZiY19mZWF0dXJl cyAqLworCS8qIEFCR1JfMjEwMTAxMCovCisJe19fSFdfSUQoMCwgMCksCURSTV9GT1JNQVRfQVJH QjIxMDEwMTAsCTEsCVJJQ0hfU0lNUExFX1dCLAlGbGlwX0hfViwJCTAsIDB9LAorCXtfX0hXX0lE KDAsIDEpLAlEUk1fRk9STUFUX0FCR1IyMTAxMDEwLAkxLAlSSUNIX1NJTVBMRV9XQiwJRmxpcF9I X1YsCQkwLCAwfSwKKwl7X19IV19JRCgwLCAxKSwJRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMCwJMSwJ UklDSF9TSU1QTEUsCVJvdF9BTExfSF9WLAlMWVRfTk1fV0IsIEFGQl9USF9TQ19ZVFJfQlN9LCAv KiBhZmJjICovCisJe19fSFdfSUQoMCwgMiksCURSTV9GT1JNQVRfUkdCQTEwMTAxMDIsCTEsCVJJ Q0hfU0lNUExFX1dCLAlGbGlwX0hfViwJCTAsIDB9LAorCXtfX0hXX0lEKDAsIDMpLAlEUk1fRk9S TUFUX0JHUkExMDEwMTAyLAkxLAlSSUNIX1NJTVBMRV9XQiwJRmxpcF9IX1YsCQkwLCAwfSwKKwkv KiBBQkdSXzg4ODgqLworCXtfX0hXX0lEKDEsIDApLAlEUk1fRk9STUFUX0FSR0I4ODg4LAkxLAlS SUNIX1NJTVBMRV9XQiwJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCgxLCAxKSwJRFJNX0ZP Uk1BVF9BQkdSODg4OCwJMSwJUklDSF9TSU1QTEVfV0IsCUZsaXBfSF9WLAkJMCwgMH0sCisJe19f SFdfSUQoMSwgMSksCURSTV9GT1JNQVRfQUJHUjg4ODgsCTEsCVJJQ0hfU0lNUExFLAlSb3RfQUxM X0hfViwJTFlUX05NX1dCLCBBRkJfVEhfU0NfWVRSX0JTfSwgLyogYWZiYyAqLworCXtfX0hXX0lE KDEsIDIpLAlEUk1fRk9STUFUX1JHQkE4ODg4LAkxLAlSSUNIX1NJTVBMRV9XQiwJRmxpcF9IX1Ys CQkwLCAwfSwKKwl7X19IV19JRCgxLCAzKSwJRFJNX0ZPUk1BVF9CR1JBODg4OCwJMSwJUklDSF9T SU1QTEVfV0IsCUZsaXBfSF9WLAkJMCwgMH0sCisJLyogWEJHQl84ODg4ICovCisJe19fSFdfSUQo MiwgMCksCURSTV9GT1JNQVRfWFJHQjg4ODgsCTEsCVJJQ0hfU0lNUExFX1dCLAlGbGlwX0hfViwJ CTAsIDB9LAorCXtfX0hXX0lEKDIsIDEpLAlEUk1fRk9STUFUX1hCR1I4ODg4LAkxLAlSSUNIX1NJ TVBMRV9XQiwJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCgyLCAyKSwJRFJNX0ZPUk1BVF9S R0JYODg4OCwJMSwJUklDSF9TSU1QTEVfV0IsCUZsaXBfSF9WLAkJMCwgMH0sCisJe19fSFdfSUQo MiwgMyksCURSTV9GT1JNQVRfQkdSWDg4ODgsCTEsCVJJQ0hfU0lNUExFX1dCLAlGbGlwX0hfViwJ CTAsIDB9LAorCS8qIEJHUl84ODggKi8gLyogbm9uZS1hZmJjIFJHQjg4OCBkb2Vzbid0IHN1cHBv cnQgcm90YXRpb24gYW5kIGZsaXAgKi8KKwl7X19IV19JRCgzLCAwKSwJRFJNX0ZPUk1BVF9SR0I4 ODgsCTEsCVJJQ0hfU0lNUExFX1dCLAlSb3RfMCwJCQkwLCAwfSwKKwl7X19IV19JRCgzLCAxKSwJ RFJNX0ZPUk1BVF9CR1I4ODgsCTEsCVJJQ0hfU0lNUExFX1dCLAlSb3RfMCwJCQkwLCAwfSwKKwl7 X19IV19JRCgzLCAxKSwJRFJNX0ZPUk1BVF9CR1I4ODgsCTEsCVJJQ0hfU0lNUExFLAlSb3RfQUxM X0hfViwJTFlUX05NX1dCLCBBRkJfVEhfU0NfWVRSX0JTfSwgLyogYWZiYyAqLworCS8qIEJHUiAx NmJwcCAqLworCXtfX0hXX0lEKDQsIDApLAlEUk1fRk9STUFUX1JHQkE1NTUxLAkxLAlSSUNIX1NJ TVBMRSwJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCg0LCAxKSwJRFJNX0ZPUk1BVF9BQkdS MTU1NSwJMSwJUklDSF9TSU1QTEUsCUZsaXBfSF9WLAkJMCwgMH0sCisJe19fSFdfSUQoNCwgMSks CURSTV9GT1JNQVRfQUJHUjE1NTUsCTEsCVJJQ0hfU0lNUExFLAlSb3RfQUxMX0hfViwJTFlUX05N X1dCLCBBRkJfVEhfU0NfWVRSfSwgLyogYWZiYyAqLworCXtfX0hXX0lEKDQsIDIpLAlEUk1fRk9S TUFUX1JHQjU2NSwJMSwJUklDSF9TSU1QTEUsCUZsaXBfSF9WLAkJMCwgMH0sCisJe19fSFdfSUQo NCwgMyksCURSTV9GT1JNQVRfQkdSNTY1LAkxLAlSSUNIX1NJTVBMRSwJRmxpcF9IX1YsCQkwLCAw fSwKKwl7X19IV19JRCg0LCAzKSwJRFJNX0ZPUk1BVF9CR1I1NjUsCTEsCVJJQ0hfU0lNUExFLAlS b3RfQUxMX0hfViwJTFlUX05NX1dCLCBBRkJfVEhfU0NfWVRSfSwgLyogYWZiYyAqLworCXtfX0hX X0lEKDQsIDQpLCBEUk1fRk9STUFUX1I4LAkJMSwJU0lNUExFLAkJUm90XzAsCQkJMCwgMH0sCisJ LyogWVVWIDQ0NC80MjIvNDIwIDhiaXQgICovCisJe19fSFdfSUQoNSwgMCksCTAgLypYWVVWODg4 OCovLAkJMSwJMCwJCTAsCQkJMCwgMH0sCisJLyogWFlVViB1bnN1cHBvcnRlZCovCisJe19fSFdf SUQoNSwgMSksCURSTV9GT1JNQVRfWVVZViwJMSwJUklDSCwJCVJvdF9BTExfSF9WLAlMWVRfTk0s IEFGQl9USH0sIC8qIGFmYmMgKi8KKwl7X19IV19JRCg1LCAyKSwJRFJNX0ZPUk1BVF9ZVVlWLAkx LAlSSUNILAkJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCg1LCAzKSwJRFJNX0ZPUk1BVF9V WVZZLAkxLAlSSUNILAkJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCg1LCA0KSwJMCwgLypY MEwwICovCQkyLAkJMCwJCQkwLCAwfSwgLyogWTBMMCB1bnN1cHBvcnRlZCAqLworCXtfX0hXX0lE KDUsIDYpLAlEUk1fRk9STUFUX05WMTIsCTEsCVJJQ0gsCQlGbGlwX0hfViwJCTAsIDB9LAorCXtf X0hXX0lEKDUsIDYpLAkwLypEUk1fRk9STUFUX1lVVjQyMF84QklUKi8sCTEsCVJJQ0gsCVJvdF9B TExfSF9WLAlMWVRfTk0sIEFGQl9USH0sIC8qIGFmYmMgKi8KKwl7X19IV19JRCg1LCA3KSwJRFJN X0ZPUk1BVF9ZVVY0MjAsCTEsCVJJQ0gsCQlGbGlwX0hfViwJCTAsIDB9LAorCS8qIFlVViAxMGJp dCovCisJe19fSFdfSUQoNiwgMCksCTAsLypYVllVMjEwMTAxMCovCTEsCTAsCQkwLAkJCTAsIDB9 LC8qIFZZVjMwIHVuc3VwcG9ydGVkICovCisJe19fSFdfSUQoNiwgNiksCTAvKkRSTV9GT1JNQVRf WDBMMiovLAkyLAlSSUNILAkJRmxpcF9IX1YsCQkwLCAwfSwKKwl7X19IV19JRCg2LCA3KSwJMC8q RFJNX0ZPUk1BVF9QMDEwKi8sCTEsCVJJQ0gsCQlGbGlwX0hfViwJCTAsIDB9LAorCXtfX0hXX0lE KDYsIDcpLAkwLypEUk1fRk9STUFUX1lVVjQyMF8xMEJJVCovLCAxLAlSSUNILAlSb3RfQUxMX0hf ViwJTFlUX05NLCBBRkJfVEh9LAorfTsKKworc3RhdGljIHZvaWQgZDcxX2luaXRfZm10X3RibChz dHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzX3Rh YmxlICp0YWJsZSA9ICZtZGV2LT5mbXRfdGJsOworCisJdGFibGUtPmZvcm1hdF9jYXBzID0gZDcx X2Zvcm1hdF9jYXBzX3RhYmxlOworCXRhYmxlLT5uX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKGQ3MV9m b3JtYXRfY2Fwc190YWJsZSk7Cit9CisKIHN0YXRpYyBzdHJ1Y3Qga29tZWRhX2Rldl9mdW5jcyBk NzFfY2hpcF9mdW5jcyA9IHsKKwkuaW5pdF9mb3JtYXRfdGFibGUgPSBkNzFfaW5pdF9mbXRfdGJs LAogCS5lbnVtX3Jlc291cmNlcwk9IGQ3MV9lbnVtX3Jlc291cmNlcywKIAkuY2xlYW51cAk9IE5V TEwsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9k ZXYuYwppbmRleCBkMGNjNGY3NTgwNzcuLjJmOGY0Njg1ZWI2MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmMKQEAgLTEzOCw2ICsxMzgsOCBA QCBzdHJ1Y3Qga29tZWRhX2RldiAqa29tZWRhX2Rldl9jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2 KQogCQkgTUFMSURQX0NPUkVfSURfTUFKT1IobWRldi0+Y2hpcC5jb3JlX2lkKSwKIAkJIE1BTElE UF9DT1JFX0lEX01JTk9SKG1kZXYtPmNoaXAuY29yZV9pZCkpOwogCisJbWRldi0+ZnVuY3MtPmlu aXRfZm9ybWF0X3RhYmxlKG1kZXYpOworCiAJZXJyID0gbWRldi0+ZnVuY3MtPmVudW1fcmVzb3Vy Y2VzKG1kZXYpOwogCWlmIChlcnIpIHsKIAkJRFJNX0VSUk9SKCJlbnVtZXJhdGUgZGlzcGxheSBy ZXNvdXJjZSBmYWlsZWQuXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2Rldi5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfZGV2LmgKaW5kZXggNGEyN2E0NGUyZWM2Li41NTU1MTBiZTY2ZjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oCkBAIC0x MSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSAia29t ZWRhX3BpcGVsaW5lLmgiCiAjaW5jbHVkZSAibWFsaWRwX3Byb2R1Y3QuaCIKKyNpbmNsdWRlICJr b21lZGFfZm9ybWF0X2NhcHMuaCIKIAogLyogbWFsaWRwIGRldmljZSBpZCAqLwogZW51bSB7CkBA IC00NCw2ICs0NSwxMyBAQCBzdHJ1Y3Qga29tZWRhX2RldjsKICAqIFN1cHBsaWVkIGJ5IGNoaXAg bGV2ZWwgYW5kIHJldHVybmVkIGJ5IHRoZSBjaGlwIGVudHJ5IGZ1bmN0aW9uIHh4eF9pZGVudGlm eSwKICAqLwogc3RydWN0IGtvbWVkYV9kZXZfZnVuY3MgeworCS8qKgorCSAqIEBpbml0X2Zvcm1h dF90YWJsZToKKwkgKgorCSAqIGluaXRpYWxpemUgJmtvbWVkYV9kZXYtPmZvcm1hdF90YWJsZSwg dGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkCisJICogYmVmb3JlIHRoZSAmZW51bV9yZXNv dXJjZQorCSAqLworCXZvaWQgKCppbml0X2Zvcm1hdF90YWJsZSkoc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYpOwogCS8qKgogCSAqIEBlbnVtX3Jlc291cmNlczoKIAkgKgpAQCAtNjYsNyArNzQsOCBA QCBzdHJ1Y3Qga29tZWRhX2RldiB7CiAJdTMyIF9faW9tZW0gICAqcmVnX2Jhc2U7CiAKIAlzdHJ1 Y3Qga29tZWRhX2NoaXBfaW5mbyBjaGlwOwotCisJLyoqIEBmbXRfdGJsOiBpbml0aWFsaXplZCBi eSAma29tZWRhX2Rldl9mdW5jcy0+aW5pdF9mb3JtYXRfdGFibGUgKi8KKwlzdHJ1Y3Qga29tZWRh X2Zvcm1hdF9jYXBzX3RhYmxlIGZtdF90Ymw7CiAJLyoqIEBwY2xrOiBBUEIgY2xvY2sgZm9yIHJl Z2lzdGVyIGFjY2VzcyAqLwogCXN0cnVjdCBjbGsgKnBjbGs7CiAJLyoqIEBtY2s6IEhXIG1haW4g ZW5naW5lIGNsayAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfZm9ybWF0X2NhcHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEva29tZWRhX2Zvcm1hdF9jYXBzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4xZTE3YmQ2MTA3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mb3JtYXRfY2Fwcy5jCkBAIC0wLDAgKzEsNzUg QEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogKEMpIENPUFlS SUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQXV0aG9yOiBK YW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgorICoKKyAqLworCisjaW5j bHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgImtvbWVkYV9mb3JtYXRfY2Fwcy5oIgorI2lu Y2x1ZGUgIm1hbGlkcF91dGlscy5oIgorCitjb25zdCBzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBz ICoKK2tvbWVkYV9nZXRfZm9ybWF0X2NhcHMoc3RydWN0IGtvbWVkYV9mb3JtYXRfY2Fwc190YWJs ZSAqdGFibGUsCisJCSAgICAgICB1MzIgZm91cmNjLCB1NjQgbW9kaWZpZXIpCit7CisJY29uc3Qg c3RydWN0IGtvbWVkYV9mb3JtYXRfY2FwcyAqY2FwczsKKwl1NjQgYWZiY19mZWF0dXJlcyA9IG1v ZGlmaWVyICYgfihBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tfU0laRV9NQVNLKTsKKwl1MzIgYWZiY19s YXlvdXQgPSBtb2RpZmllciAmIEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFX01BU0s7CisJaW50 IGlkOworCisJZm9yIChpZCA9IDA7IGlkIDwgdGFibGUtPm5fZm9ybWF0czsgaWQrKykgeworCQlj YXBzID0gJnRhYmxlLT5mb3JtYXRfY2Fwc1tpZF07CisKKwkJaWYgKGZvdXJjYyAhPSBjYXBzLT5m b3VyY2MpCisJCQljb250aW51ZTsKKworCQlpZiAoKG1vZGlmaWVyID09IDBVTEwpICYmIChjYXBz LT5zdXBwb3J0ZWRfYWZiY19sYXlvdXRzID09IDApKQorCQkJcmV0dXJuIGNhcHM7CisKKwkJaWYg KGhhc19iaXRzKGFmYmNfZmVhdHVyZXMsIGNhcHMtPnN1cHBvcnRlZF9hZmJjX2ZlYXR1cmVzKSAm JgorCQkgICAgaGFzX2JpdChhZmJjX2xheW91dCwgY2Fwcy0+c3VwcG9ydGVkX2FmYmNfbGF5b3V0 cykpCisJCQlyZXR1cm4gY2FwczsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwordTMyICprb21l ZGFfZ2V0X2xheWVyX2ZvdXJjY19saXN0KHN0cnVjdCBrb21lZGFfZm9ybWF0X2NhcHNfdGFibGUg KnRhYmxlLAorCQkJCSAgdTMyIGxheWVyX3R5cGUsIHUzMiAqbl9mbXRzKQoreworCWNvbnN0IHN0 cnVjdCBrb21lZGFfZm9ybWF0X2NhcHMgKmNhcDsKKwl1MzIgKmZtdHM7CisJaW50IGksIGosIG4g PSAwOworCisJZm10cyA9IGtjYWxsb2ModGFibGUtPm5fZm9ybWF0cywgc2l6ZW9mKHUzMiksIEdG UF9LRVJORUwpOworCWlmICghZm10cykKKwkJcmV0dXJuIE5VTEw7CisKKwlmb3IgKGkgPSAwOyBp IDwgdGFibGUtPm5fZm9ybWF0czsgaSsrKSB7CisJCWNhcCA9ICZ0YWJsZS0+Zm9ybWF0X2NhcHNb aV07CisJCWlmICghKGxheWVyX3R5cGUgJiBjYXAtPnN1cHBvcnRlZF9sYXllcl90eXBlcykgfHwK KwkJICAgIChjYXAtPmZvdXJjYyA9PSAwKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIG9uZSBmb3Vy Y2MgbWF5IGhhcyB0d28gY2FwcyBpdGVtcyBpbiB0YWJsZSAoYWZiYy9ub25lLWFmYmMpLAorCQkg KiBzbyBjaGVjayB0aGUgZXhpc3RpbmcgbGlzdCB0byBhdm9pZCBhZGRpbmcgYSBkdXBsaWNhdGVk IG9uZS4KKwkJICovCisJCWZvciAoaiA9IG4gLSAxOyBqID49IDA7IGotLSkKKwkJCWlmIChmbXRz W2pdID09IGNhcC0+Zm91cmNjKQorCQkJCWJyZWFrOworCisJCWlmIChqIDwgMCkKKwkJCWZtdHNb bisrXSA9IGNhcC0+Zm91cmNjOworCX0KKworCWlmIChuX2ZtdHMpCisJCSpuX2ZtdHMgPSBuOwor CisJcmV0dXJuIGZtdHM7Cit9CisKK3ZvaWQga29tZWRhX3B1dF9mb3VyY2NfbGlzdCh1MzIgKmZv dXJjY19saXN0KQoreworCWtmcmVlKGZvdXJjY19saXN0KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Zvcm1hdF9jYXBzLmggYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mb3JtYXRfY2Fwcy5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjBmMzllNzdiMDk4Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZm9y bWF0X2NhcHMuaApAQCAtMCwwICsxLDg5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCAqLworLyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndh bmdAYXJtLmNvbT4KKyAqCisgKi8KKworI2lmbmRlZiBfS09NRURBX0ZPUk1BVF9DQVBTX0hfCisj ZGVmaW5lIF9LT01FREFfRk9STUFUX0NBUFNfSF8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisjaW5jbHVkZSA8dWFwaS9kcm0vZHJtX2ZvdXJjYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fZm91 cmNjLmg+CisKKyNkZWZpbmUgQUZCQyh4KQkJRFJNX0ZPUk1BVF9NT0RfQVJNX0FGQkMoeCkKKwor LyogYWZiYyBsYXllcm91dCAqLworI2RlZmluZSBBRkJDXzE2eDE2KHgpCUFGQkMoQUZCQ19GT1JN QVRfTU9EX0JMT0NLX1NJWkVfMTZ4MTYgfCAoeCkpCisjZGVmaW5lIEFGQkNfMzJ4OCh4KQlBRkJD KEFGQkNfRk9STUFUX01PRF9CTE9DS19TSVpFXzMyeDggfCAoeCkpCisKKy8qIGFmYmMgZmVhdHVy ZXMgKi8KKyNkZWZpbmUgX1lUUgkJQUZCQ19GT1JNQVRfTU9EX1lUUgorI2RlZmluZSBfU1BMSVQJ CUFGQkNfRk9STUFUX01PRF9TUExJVAorI2RlZmluZSBfU1BBUlNFCQlBRkJDX0ZPUk1BVF9NT0Rf U1BBUlNFCisjZGVmaW5lIF9DQlIJCUFGQkNfRk9STUFUX01PRF9DQlIKKyNkZWZpbmUgX1RJTEVE CQlBRkJDX0ZPUk1BVF9NT0RfVElMRUQKKyNkZWZpbmUgX1NDCQlBRkJDX0ZPUk1BVF9NT0RfU0MK KworLyogbGF5ZXJfdHlwZSAqLworI2RlZmluZSBLT01FREFfRk1UX1JJQ0hfTEFZRVIJCUJJVCgw KQorI2RlZmluZSBLT01FREFfRk1UX1NJTVBMRV9MQVlFUgkJQklUKDEpCisjZGVmaW5lIEtPTUVE QV9GTVRfV0JfTEFZRVIJCUJJVCgyKQorCisjZGVmaW5lIEFGQkNfVEhfTEFZT1VUX0FMSUdOTUVO VAk4CisjZGVmaW5lIEFGQkNfSEVBREVSX1NJWkUJCTE2CisjZGVmaW5lIEFGQkNfU1VQRVJCTEtf QUxJR05NRU5UCQkxMjgKKyNkZWZpbmUgQUZCQ19TVVBFUkJMS19QSVhFTFMJCTI1NgorI2RlZmlu ZSBBRkJDX0JPRFlfU1RBUlRfQUxJR05NRU5UCTEwMjQKKyNkZWZpbmUgQUZCQ19USF9CT0RZX1NU QVJUX0FMSUdOTUVOVAk0MDk2CisKKy8qKgorICogc3RydWN0IGtvbWVkYV9mb3JtYXRfY2Fwcwor ICoKKyAqIGtvbWVkYV9mb3JtYXRfY2FwcyBpcyBmb3IgZGVzY3JpYmluZyBBUk0gZGlzcGxheSBz cGVjaWZpYyBmZWF0dXJlcyBhbmQKKyAqIGxpbWl0YXRpb25zIGZvciBhIHNwZWNpZmljIGZvcm1h dCwgYW5kIGZvcm1hdF9jYXBzIHdpbGwgYmUgbGlua2VkIGludG8KKyAqICZrb21lZGFfZnJhbWVi dWZmZXIgbGlrZSBhIGV4dGVuc2lvbiBvZiAmZHJtX2Zvcm1hdF9pbmZvLgorICoKKyAqIE5PVEU6 IG9uZSBmb3VyY2MgbWF5IGhhcyB0d28gZGlmZmVyZW50IGZvcm1hdF9jYXBzIGl0ZW1zIGZvciBm b3VyY2MgYW5kCisgKiBmb3VyY2MrbW9kaWZpZXIKKyAqCisgKiBAaHdfaWQ6IGh3IGZvcm1hdCBp ZCwgaHcgc3BlY2lmaWMgdmFsdWUuCisgKiBAZm91cmNjOiBkcm0gZm91cmNjIGZvcm1hdC4KKyAq IEB0aWxlX3NpemU6IGZvcm1hdCB0aWxlZCBzaXplLCB1c2VkIGJ5IEFSTSBmb3JtYXQgWDBMMC9Y MEwyCisgKiBAc3VwcG9ydGVkX2xheWVyX3R5cGVzOiBpbmRpY2F0ZSB3aGljaCBsYXllciBzdXBw b3J0cyB0aGlzIGZvcm1hdAorICogQHN1cHBvcnRlZF9yb3RzOiBhbGxvd2VkIHJvdGF0aW9ucyBm b3IgdGhpcyBmb3JtYXQKKyAqIEBzdXBwb3J0ZWRfYWZiY19sYXlvdXRzOiBzdXBwb3J0ZWQgYWZi YyBsYXllcm91dAorICogQHN1cHBvcnRlZF9hZmJjX2ZlYXR1cmVzOiBzdXBwb3J0ZWQgYWZiYyBm ZWF0dXJlcworICovCitzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzIHsKKwl1MzIgaHdfaWQ7CisJ dTMyIGZvdXJjYzsKKwl1MzIgdGlsZV9zaXplOworCXUzMiBzdXBwb3J0ZWRfbGF5ZXJfdHlwZXM7 CisJdTMyIHN1cHBvcnRlZF9yb3RzOworCXUzMiBzdXBwb3J0ZWRfYWZiY19sYXlvdXRzOworCXU2 NCBzdXBwb3J0ZWRfYWZiY19mZWF0dXJlczsKK307CisKKy8qKgorICogc3RydWN0IGtvbWVkYV9m b3JtYXRfY2Fwc190YWJsZSAtIGZvcm1hdF9jYXBzIG1hbmFuZ2VyCisgKgorICogQG5fZm9ybWF0 czogdGhlIHNpemUgb2YgZm9ybWF0X2NhcHMgbGlzdC4KKyAqIEBmb3JtYXRfY2FwczogZm9ybWF0 X2NhcHMgbGlzdC4KKyAqLworc3RydWN0IGtvbWVkYV9mb3JtYXRfY2Fwc190YWJsZSB7CisJdTMy IG5fZm9ybWF0czsKKwljb25zdCBzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzICpmb3JtYXRfY2Fw czsKK307CisKK2NvbnN0IHN0cnVjdCBrb21lZGFfZm9ybWF0X2NhcHMgKgora29tZWRhX2dldF9m b3JtYXRfY2FwcyhzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzX3RhYmxlICp0YWJsZSwKKwkJICAg ICAgIHUzMiBmb3VyY2MsIHU2NCBtb2RpZmllcik7CisKK3UzMiAqa29tZWRhX2dldF9sYXllcl9m b3VyY2NfbGlzdChzdHJ1Y3Qga29tZWRhX2Zvcm1hdF9jYXBzX3RhYmxlICp0YWJsZSwKKwkJCQkg IHUzMiBsYXllcl90eXBlLCB1MzIgKm5fZm10cyk7CisKK3ZvaWQga29tZWRhX3B1dF9mb3VyY2Nf bGlzdCh1MzIgKmZvdXJjY19saXN0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaAppbmRleCBkMWUwYzExNDAy NzMuLjJkNjhmZmVhZTI1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oCkBAIC0yMTMsNiArMjEzLDcgQEAgc3RhdGljIGlu bGluZSB1MTYgY29tcG9uZW50X2NoYW5nZWRfaW5wdXRzKHN0cnVjdCBrb21lZGFfY29tcG9uZW50 X3N0YXRlICpzdCkKIHN0cnVjdCBrb21lZGFfbGF5ZXIgewogCXN0cnVjdCBrb21lZGFfY29tcG9u ZW50IGJhc2U7CiAJLyogbGF5ZXIgc3BlY2lmaWMgZmVhdHVyZXMgYW5kIGNhcHMgKi8KKwlpbnQg bGF5ZXJfdHlwZTsgLyogUklDSCwgU0lNUExFIG9yIFdCICovCiB9OwogCiBzdHJ1Y3Qga29tZWRh X2xheWVyX3N0YXRlIHsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==