From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: [PATCH RFC 14/19] drm/bridge: Add the necessary bits to support bus format negotiation Date: Thu, 8 Aug 2019 17:11:45 +0200 Message-ID: <20190808151150.16336-15-boris.brezillon@collabora.com> References: <20190808151150.16336-1-boris.brezillon@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CD5D6E872 for ; Thu, 8 Aug 2019 15:12:09 +0000 (UTC) In-Reply-To: <20190808151150.16336-1-boris.brezillon@collabora.com> 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: Jernej Skrabec , Laurent Pinchart , Neil Armstrong , Jonas Karlman , Seung-Woo Kim , Kyungmin Park , Thierry Reding , Chris Healy , Boris Brezillon , kernel@collabora.com, Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org VGhpcyB0YWtlcyB0aGUgZm9ybSBvZiB2YXJpb3VzIGhlbHBlcnMsIHBsdXMgdGhlIGFkZGl0aW9u IG9mIDIgbmV3CnN0cnVjdHM6CiogZHJtX2J1c19jYXBzOiBkZXNjcmliZSB0aGUgYnVzIGNhcGFi aWxpdGllcyBvZiBhIGJyaWRnZS9lbmNvZGVyLiBGb3IKICBicmlkZ2VzIHdlIGhhdmUgb25lIGZv ciB0aGUgaW5wdXQgcG9ydCBhbmQgb25lIGZvciB0aGUgb3V0cHV0IHBvcnQuCiAgRW5jb2RlcnMg anVzdCBoYXZlIG9uZSBvdXRwdXQgcG9ydC4KKiBkcm1fYnVzX2NmZzogYWRkZWQgdG8gdGhlIGRy bV9icmlkZ2Vfc3RhdGUuIEl0J3Mgc3VwcG9zZWQgdG8gc3RvcmUKICBidXMgY29uZmlndXJhdGlv biBpbmZvcm1hdGlvbi4gRm9yIG5vdyB3ZSBqdXN0IGhhdmUgZm9ybWF0IGFuZCBmbGFncwogIGJ1 dCBtb3JlIGZpZWxkcyBtaWdodCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLiBBZ2FpbiwgZWFjaAog IGRybV9icmlkZ2Vfc3RhdGUgY29udGFpbnMgMiBkcm1fYnVzX2NmZyBlbGVtZW50czogb25lIGZv ciB0aGUgb3V0cHV0CiAgcG9ydCBhbmQgb25lIGZvciB0aGUgaW5wdXQgcG9ydAoKSGVscGVycyBj YW4gYmUgdXNlZCBmcm9tIGJyaWRnZSBkcml2ZXJzJyAtPmF0b21pY19jaGVjaygpIGltcGxlbWVu dGF0aW9uCnRvIG5lZ290aWF0ZSB0aGUgYnVzIGZvcm1hdCB0byB1c2UuIE5lZ290aWF0aW9uIGhh cHBlbnMgaW4gcmVzZXJ2ZSBvcmRlciwKc3RhcnRpbmcgZnJvbSB0aGUgbGFzdCBlbGVtZW50IG9m IHRoZSBicmlkZ2UgY2hhaW4gKHRoZSBvbmUgZGlyZWN0bHkKY29ubmVjdGVkIHRvIHRoZSBkaXNw bGF5KSB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgY2hhaW4gKHRoZSBvbmUKY29ubmVjdGVk IHRvIHRoZSBlbmNvZGVyKS4KCk5lZ290aWF0aW9uIHVzdWFsbHkgdGFrZXMgcGxhY2UgaW4gMiBz dGVwczoKKiBtYWtlIHN1cmUgdGhlIGlucHV0IGVuZCBvZiB0aGUgbmV4dCBlbGVtZW50IGluIHRo ZSBjaGFpbiBwaWNrZWQgYQogIGZvcm1hdCB0aGF0J3Mgc3VwcG9ydGVkIGJ5IHRoZSBvdXRwdXQg ZW5kIG9mIG91ciBicmlkZ2UuIFRoYXQncyBkb25lCiAgd2l0aCBkcm1fYXRvbWljX2JyaWRnZV9j aG9vc2Vfb3V0cHV0X2J1c19jZmcoKS4KKiBjaG9vc2UgYSBmb3JtYXQgZm9yIHRoZSBpbnB1dCBl bmQgb2Ygb3VyIGJyaWRnZSBiYXNlZCBvbiB3aGF0J3MKICBzdXBwb3J0ZWQgYnkgdGhlIHByZXZp b3VzIGJyaWRnZSBpbiB0aGUgY2hhaW4uIFRoaXMgaXMgYWNoaWV2ZWQgYnkKICBjYWxsaW5nIGRy bV9hdG9taWNfYnJpZGdlX2Nob29zZV9pbnB1dF9idXNfY2ZnKCkKCk5vdGUgdGhhdCB0aG9zZSBo ZWxwZXJzIGFyZSBhIGJpdCBsYXggd2hlbiBpdCBjb21lcyB0byB1bml0aWFsaXplZApidXMgZm9y bWF0IHZhbGlkYXRpb24uIFRoYXQncyBpbnRlbnRpb25hbC4gSWYgd2UgZG9uJ3QgZG8gdGhhdCB3 ZSdsbApiYXNpY2FsbHkgYnJlYWsgdGhpbmdzIGlmIHdlIHN0YXJ0IGFkZGluZyBzdXBwb3J0IGZv ciBidXMgZm9ybWF0Cm5lZ290aWF0aW9uIHRvIHNvbWUgZWxlbWVudHMgb2YgdGhlIHBpcGVsaW5l IGxlYXZpbmcgb3RoZXJzIG9uIHRoZQpzaWRlLCBhbmQgdGhhdCdzIGxpa2VseSB0byBoYXBwZW4g Zm9yIGFsbCBleHRlcm5hbCBicmlkZ2VzIHNpbmNlIHdlCmNhbid0IG5lY2Vzc2FyaWx5IHRlbGwg d2hlcmUgdGhleSBhcmUgdXNlZC4KClNpZ25lZC1vZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9y aXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9icmlk Z2UuYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oICAgICB8ICA0NiArKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9lbmNv ZGVyLmggICAgfCAgIDYgKysKIDMgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9icmlkZ2UuYwppbmRleCA5ZWZiMjcwODdlNzAuLmVmMDcyZGY0MjQyMiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2JyaWRnZS5jCkBAIC02MDIsNiArNjAyLDE5MyBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2No YWluX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiB9CiBFWFBPUlRfU1lNQk9M KGRybV9hdG9taWNfYnJpZGdlX2NoYWluX2VuYWJsZSk7CiAKK2ludCBkcm1fZmluZF9iZXN0X2J1 c19mb3JtYXQoY29uc3Qgc3RydWN0IGRybV9idXNfY2FwcyAqYSwKKwkJCSAgICAgY29uc3Qgc3Ry dWN0IGRybV9idXNfY2FwcyAqYiwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCisJCQkgICAgIHUzMiAqc2VsZWN0ZWRfYnVzX2ZtdCkKK3sKKwl1bnNpZ25lZCBp bnQgaSwgajsKKworCS8qCisJICogU29tZSBkcm1fYnJpZGdlL2RybV9lbmNvZGVyIGRvbid0IGNh cmUgYWJvdXQgdGhlIGlucHV0L291dHB1dCBidXMKKwkgKiBmb3JtYXQsIGxldCdzIHNldCB0aGUg Zm9ybWF0IHRvIHplcm8gaW4gdGhhdCBjYXNlICh0aGlzIGlzIG9ubHkKKwkgKiB2YWxpZCBpZiBi b3RoIHNpZGUgb2YgdGhlIGxpbmsgZG9uJ3QgY2FyZSkuCisJICovCisJaWYgKCFhLT5udW1fc3Vw cG9ydGVkX2ZtdHMgJiYgIWItPm51bV9zdXBwb3J0ZWRfZm10cykgeworCQkqc2VsZWN0ZWRfYnVz X2ZtdCA9IDA7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoYi0+bnVtX3N1cHBvcnRlZF9mbXRz ID4gMSAmJiBiLT5zdXBwb3J0ZWRfZm10cykgeworCQkqc2VsZWN0ZWRfYnVzX2ZtdCA9IGItPnN1 cHBvcnRlZF9mbXRzWzBdOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKGEtPm51bV9zdXBwb3J0 ZWRfZm10cyA+IDEgJiYgYS0+c3VwcG9ydGVkX2ZtdHMpIHsKKwkJKnNlbGVjdGVkX2J1c19mbXQg PSBhLT5zdXBwb3J0ZWRfZm10c1swXTsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmICghYS0+bnVt X3N1cHBvcnRlZF9mbXRzIHx8ICFhLT5zdXBwb3J0ZWRfZm10cyB8fAorCQkgICAhYi0+bnVtX3N1 cHBvcnRlZF9mbXRzIHx8ICFiLT5zdXBwb3J0ZWRfZm10cykgeworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwkvKgorCSAqIFRPRE86CisJICogRHVtbXkgYWxnbyBwaWNraW5nIHRoZSBmaXJzdCBt YXRjaC4gV2UgcHJvYmFibHkgd2FudCBzb21ldGhpbmcKKwkgKiBzbWFydGVyIHdoZXJlIHRoZSBu YXJyb3dlc3QgZm9ybWF0IChpbiB0ZXJtIG9mIGJ1cyB3aWR0aCkgdGhhdAorCSAqIGRvZXMgbm90 IGluY3VyIGRhdGEgbG9zcyBpcyBwaWNrZWQsIGFuZCBpZiBhbGwgcG9zc2libGUgZm9ybWF0cwor CSAqIGFyZSBsb3NzeSwgcGljayB0aGUgb25lIHRoYXQncyBsZXNzIGxvc3N5IGFtb25nIGFsbCB0 aGUgY2hvaWNlcworCSAqIHdlIGhhdmUuIEluIG9yZGVyIHRvIGRvIHRoYXQgd2UnZCBuZWVkIHRv IGNvbnZlcnQgTUVESUFfQlVTX0ZNVF8KKwkgKiBtb2RlcyBpbnRvIHNvbWV0aGluZyBsaWtlIGRy bV9mb3JtYXRfaW5mby4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYS0+bnVtX3N1cHBvcnRlZF9m bXRzOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IGItPm51bV9zdXBwb3J0ZWRfZm10czsgaisr KSB7CisJCQlpZiAoYS0+c3VwcG9ydGVkX2ZtdHNbaV0gPT0gYi0+c3VwcG9ydGVkX2ZtdHNbal0p IHsKKwkJCQkqc2VsZWN0ZWRfYnVzX2ZtdCA9IGEtPnN1cHBvcnRlZF9mbXRzW2ldOworCQkJCXJl dHVybiAwOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CitFWFBPUlRfU1lN Qk9MKGRybV9maW5kX2Jlc3RfYnVzX2Zvcm1hdCk7CisKKy8qKgorICogZHJtX2F0b21pY19icmlk Z2VfY2hvb3NlX2lucHV0X2J1c19jZmcoKSAtIENob29zZSBidXMgY29uZmlnIGZvciB0aGUgaW5w dXQKKyAqCQkJCQkgICAgICBlbmQKKyAqIEBicmlkZ2Vfc3RhdGU6IGJyaWRnZSBzdGF0ZQorICog QGNydGNfc3RhdGU6IENSVEMgc3RhdGUKKyAqIEBjb25uX3N0YXRlOiBjb25uZWN0b3Igc3RhdGUK KyAqCisgKiBDaG9vc2UgYSBidXMgZm9ybWF0IGZvciB0aGUgaW5wdXQgc2lkZSBvZiBhIGJyaWRn ZSBiYXNlZCBvbiB3aGF0IHRoZQorICogcHJldmlvdXMgYnJpZGdlIGluIHRoZSBjaGFpbiBhbmQg dGhpcyBicmlkZ2Ugc3VwcG9ydC4gQ2FuIGJlIGNhbGxlZCBmcm9tCisgKiBicmlkZ2UgZHJpdmVy cycgJmRybV9icmlkZ2VfZnVuY3MuYXRvbWljX2NoZWNrKCkgaW1wbGVtZW50YXRpb24uCisgKgor ICogUkVUVVJOUzoKKyAqIDAgaWYgYSBtYXRjaGluZyBmb3JtYXQgd2FzIGZvdW5kLCBhIG5lZ2F0 aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisgKi8KK2ludAorZHJtX2F0b21pY19icmlkZ2VfY2hv b3NlX2lucHV0X2J1c19jZmcoc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9zdGF0ZSwK KwkJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJt X2JyaWRnZSAqc2VsZiA9IGJyaWRnZV9zdGF0ZS0+YnJpZGdlOworCXN0cnVjdCBkcm1fYnVzX2Nh cHMgKnByZXZfb3V0cHV0X2J1c19jYXBzOworCXN0cnVjdCBkcm1fYnJpZGdlICpwcmV2OworCWlu dCByZXQ7CisKKwlwcmV2ID0gZHJtX2JyaWRnZV9jaGFpbl9nZXRfcHJldl9icmlkZ2Uoc2VsZik7 CisJaWYgKCFwcmV2KQorCQlwcmV2X291dHB1dF9idXNfY2FwcyA9ICZzZWxmLT5lbmNvZGVyLT5v dXRwdXRfYnVzX2NhcHM7CisJZWxzZQorCQlwcmV2X291dHB1dF9idXNfY2FwcyA9ICZwcmV2LT5v dXRwdXRfYnVzX2NhcHM7CisKKwlyZXQgPSBkcm1fZmluZF9iZXN0X2J1c19mb3JtYXQocHJldl9v dXRwdXRfYnVzX2NhcHMsCisJCQkJICAgICAgICZzZWxmLT5pbnB1dF9idXNfY2FwcywgJmNydGNf c3RhdGUtPm1vZGUsCisJCQkJICAgICAgICZicmlkZ2Vfc3RhdGUtPmlucHV0X2J1c19jZmcuZm10 KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBUT0RPOgorCSAqIFNob3Vs ZCB3ZSBmaWxsL2NoZWNrIHRoZSAtPmZsYWcgZmllbGQgdG9vPworCSAqLworCXJldHVybiAwOwor fQorRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2VfaW5wdXRfYnVzX2NmZyk7 CisKKy8qKgorICogZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX291dHB1dF9idXNfY2ZnKCkgLSBD aG9vc2UgYnVzIGNvbmZpZyBmb3IgdGhlIG91dHB1dAorICoJCQkJCSAgICAgICBlbmQKKyAqIEBi cmlkZ2Vfc3RhdGU6IGJyaWRnZSBzdGF0ZQorICogQGNydGNfc3RhdGU6IENSVEMgc3RhdGUKKyAq IEBjb25uX3N0YXRlOiBjb25uZWN0b3Igc3RhdGUKKyAqCisgKiBDaG9vc2UgYSBidXMgZm9ybWF0 IGZvciB0aGUgb3V0cHV0IHNpZGUgb2YgYSBicmlkZ2UgYmFzZWQgb24gd2hhdCB0aGUgbmV4dAor ICogYnJpZGdlIGluIHRoZSBjaGFpbiBhbmQgdGhpcyBicmlkZ2Ugc3VwcG9ydC4gQ2FuIGJlIGNh bGxlZCBmcm9tIGJyaWRnZQorICogZHJpdmVycycgJmRybV9icmlkZ2VfZnVuY3MuYXRvbWljX2No ZWNrKCkgaW1wbGVtZW50YXRpb24uCisgKgorICogUkVUVVJOUzoKKyAqIDAgaWYgYSBtYXRjaGlu ZyBmb3JtYXQgd2FzIGZvdW5kLCBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisgKi8K K2ludAorZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX291dHB1dF9idXNfY2ZnKHN0cnVjdCBkcm1f YnJpZGdlX3N0YXRlICpicmlkZ2Vfc3RhdGUsCisJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUp Cit7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7 CisJc3RydWN0IGRybV9icmlkZ2UgKnNlbGYgPSBicmlkZ2Vfc3RhdGUtPmJyaWRnZTsKKwlzdHJ1 Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqbmV4dF9icmlkZ2Vfc3RhdGU7CisJc3RydWN0IGRybV9icmlk Z2UgKm5leHQ7CisJdTMyIGZtdDsKKworCW5leHQgPSBkcm1fYnJpZGdlX2NoYWluX2dldF9uZXh0 X2JyaWRnZShzZWxmKTsKKwlpZiAoIW5leHQpIHsKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm4gPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7CisJCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpk aSA9ICZjb25uLT5kaXNwbGF5X2luZm87CisKKwkJLyoKKwkJICogRklYTUU6CisJCSAqIFdlIGN1 cnJlbnRseSBwaWNrIHRoZSBmaXJzdCBzdXBwb3J0ZWQgZm9ybWF0CisJCSAqIHVuY29uZGl0aW9u YWxseS4gSXQgc2VlbXMgdG8gZml0IGFsbCBjdXJyZW50IHVzZSBjYXNlcyBidXQKKwkJICogbWln aHQgYmUgdG9vIGxpbWl0ZWQgZm9yIHBhbmVscy9kaXNwbGF5cyB0aGF0IGNhbiBjb25maWd1cmUK KwkJICogdGhlIGJ1cyBmb3JtYXQgZHluYW1pY2FsbHkuCisJCSAqLworCQlpZiAoZGktPm51bV9i dXNfZm9ybWF0cyAmJiBkaS0+YnVzX2Zvcm1hdHMpCisJCQlicmlkZ2Vfc3RhdGUtPm91dHB1dF9i dXNfY2ZnLmZtdCA9IGRpLT5idXNfZm9ybWF0c1swXTsKKwkJZWxzZQorCQkJYnJpZGdlX3N0YXRl LT5vdXRwdXRfYnVzX2NmZy5mbXQgPSAwOworCisJCWJyaWRnZV9zdGF0ZS0+b3V0cHV0X2J1c19j ZmcuZmxhZ3MgPSBkaS0+YnVzX2ZsYWdzOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKgorCSAqIFdl IGV4cGVjdCBvdXRwdXRfYnVzX2NhcHMgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgZm9ybWF0LiBO b3RlCisJICogdGhhdCBkb24ndCBjYXJlIGFib3V0IGJ1cyBmb3JtYXQgbmVnb3RpYXRpb24gY2Fu IHNpbXBseSBub3QKKwkgKiBjYWxsIHRoaXMgaGVscGVyLgorCSAqLworCWlmICghc2VsZi0+b3V0 cHV0X2J1c19jYXBzLm51bV9zdXBwb3J0ZWRfZm10cyB8fCEKKwkgICAgIXNlbGYtPm91dHB1dF9i dXNfY2Fwcy5zdXBwb3J0ZWRfZm10cykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwluZXh0X2JyaWRn ZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19icmlkZ2Vfc3RhdGUoc3RhdGUsIG5leHQpOwor CisJLyoKKwkgKiBUaGUgbmV4dCBicmlkZ2UgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBjYWxsZWQKKwkg KiAmZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX2lucHV0X2J1c19jZmcoKSBhcyBwYXJ0IG9mIGl0 cworCSAqICZkcm1fYnJpZGdlX2Z1bmNzLmF0b21pY19jaGVjaygpIGltcGxlbWVudGF0aW9uLCBi dXQgdGhpcyBob29rIGlzCisJICogb3B0aW9uYWwsIGFuZCBldmVuIGlmIGl0J3MgaW1wbGVtZW50 ZWQsIGNhbGxpbmcKKwkgKiAmZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX2lucHV0X2J1c19jZmco KSBpcyBub3QgbWFuZGF0ZWQuCisJICogSWYgZm10IGlzIHplcm8sIHRoYXQgbWVhbnMgdGhlIG5l eHQgZWxlbWVudCBpbiB0aGUgY2hhaW4gZG9lc24ndAorCSAqIGNhcmUgYWJvdXQgYnVzIGZvcm1h dCBuZWdvdGlhdGlvbiAocHJvYmFibHkgYmVjYXVzZSB0aGVyZSdzIG9ubHkKKwkgKiBvbmUgcG9z c2libGUgc2V0dGluZykuIEluIHRoYXQgY2FzZSwgd2Ugc3RpbGwgaGF2ZSB0byBzZWxlY3Qgb25l CisJICogYnVzIGZvcm1hdCBmb3IgdGhlIG91dHB1dCBwb3J0IG9mIG91ciBicmlkZ2UsIGFuZCB0 aGlzIGlzIG9ubHkKKwkgKiBwb3NzaWJsZSBpZiB0aGUgYnJpZGdlIHN1cHBvcnRzIG9ubHkgb25l IGZvcm1hdC4KKwkgKi8KKwlmbXQgPSBuZXh0X2JyaWRnZV9zdGF0ZS0+aW5wdXRfYnVzX2NmZy5m bXQ7CisJaWYgKGZtdCkgeworCQl1bnNpZ25lZCBpbnQgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwg c2VsZi0+b3V0cHV0X2J1c19jYXBzLm51bV9zdXBwb3J0ZWRfZm10czsgaSsrKSB7CisJCQlpZiAo c2VsZi0+b3V0cHV0X2J1c19jYXBzLnN1cHBvcnRlZF9mbXRzW2ldID09IGZtdCkKKwkJCQlicmVh azsKKwkJfQorCisJCWlmIChpID09IHNlbGYtPm91dHB1dF9idXNfY2Fwcy5udW1fc3VwcG9ydGVk X2ZtdHMpCisJCQlyZXR1cm4gLUVOT1RTVVBQOworCX0gZWxzZSBpZiAoc2VsZi0+b3V0cHV0X2J1 c19jYXBzLm51bV9zdXBwb3J0ZWRfZm10cyA9PSAxKSB7CisJCWZtdCA9IHNlbGYtPm91dHB1dF9i dXNfY2Fwcy5zdXBwb3J0ZWRfZm10c1swXTsKKwl9IGVsc2UgeworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwkvKgorCSAqIFRPRE86CisJICogU2hvdWxkIHdlIGZpbGwvY2hlY2sgdGhlIC0+Zmxh ZyBmaWVsZCB0b28/CisJICovCisJYnJpZGdlX3N0YXRlLT5vdXRwdXRfYnVzX2NmZy5mbXQgPSBm bXQ7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfYnJpZGdlX2Nob29z ZV9vdXRwdXRfYnVzX2NmZyk7CisKIHN0YXRpYyBpbnQgZHJtX2F0b21pY19icmlkZ2VfY2hlY2so c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKIAkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCQkJICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmggYi9pbmNsdWRlL2RybS9k cm1fYnJpZGdlLmgKaW5kZXggMmY2OWFkYjdiMGYzLi5jNTc4ODAwYTA1ZTAgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgK QEAgLTMzLDE1ICszMyw0NSBAQCBzdHJ1Y3QgZHJtX2JyaWRnZTsKIHN0cnVjdCBkcm1fYnJpZGdl X3RpbWluZ3M7CiBzdHJ1Y3QgZHJtX3BhbmVsOwogCisvKioKKyAqIHN0cnVjdCBkcm1fYnVzX2Nm ZyAtIGJ1cyBjb25maWd1cmF0aW9uCisgKiBAZm10OiBmb3JtYXQgdXNlZCBvbiB0aGlzIGJ1cwor ICogQGZsYWdzOiBEUk1fQlVTXyBmbGFncyB1c2VkIG9uIHRoaXMgYnVzCisgKgorICogRW5jb2Rl cyB0aGUgYnVzIGZvcm1hdCBhbmQgYnVzIGZsYWdzIHVzZWQgYnkgb25lIGVuZCBvZiB0aGUgYnJp ZGdlIG9yCisgKiBieSB0aGUgZW5jb2RlciBvdXRwdXQuCisgKi8KK3N0cnVjdCBkcm1fYnVzX2Nm ZyB7CisJdTMyIGZtdDsKKwl1MzIgZmxhZ3M7Cit9OworCisvKioKKyAqIHN0cnVjdCBkcm1fYnVz X2NhcHMgLSBidXMgY2FwYWJpbGl0aWVzCisgKiBAc3VwcG9ydGVkX2ZtdHM6IGFycmF5IG9mIE1F RElBX0JVU19GTVRfIGZvcm1hdHMKKyAqIEBudW1fc3VwcG9ydGVkX2ZtdHM6IHNpemUgb2YgdGhl IHN1cHBvcnRlZF9mbXRzIGFycmF5CisgKgorICogVXNlZCBieSB0aGUgY29yZSB0byBuZWdvdGlh dGUgdGhlIGJ1cyBmb3JtYXQgYXQgcnVudGltZS4KKyAqLworc3RydWN0IGRybV9idXNfY2FwcyB7 CisJY29uc3QgdTMyICpzdXBwb3J0ZWRfZm10czsKKwl1bnNpZ25lZCBpbnQgbnVtX3N1cHBvcnRl ZF9mbXRzOworfTsKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAtIEF0b21pYyBi cmlkZ2Ugc3RhdGUgb2JqZWN0CiAgKiBAYmFzZTogaW5oZXJpdCBmcm9tICZkcm1fcHJpdmF0ZV9z dGF0ZQogICogQGJyaWRnZTogdGhlIGJyaWRnZSB0aGlzIHN0YXRlIHJlZmVycyB0bworICogQGlu cHV0X2J1c19pbmZvOiBpbnB1dCBidXMgaW5mb3JtYXRpb24KKyAqIEBvdXRwdXRfYnVzX2luZm86 IG91dHB1dCBidXMgaW5mb3JtYXRpb24KICAqLwogc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgewog CXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNlOwogCiAJc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZTsKKworCXN0cnVjdCBkcm1fYnVzX2NmZyBpbnB1dF9idXNfY2ZnOworCXN0cnVjdCBkcm1f YnVzX2NmZyBvdXRwdXRfYnVzX2NmZzsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9i cmlkZ2Vfc3RhdGUgKgpAQCAtNDY1LDYgKzQ5NSw5IEBAIHN0cnVjdCBkcm1fYnJpZGdlIHsKIAlj b25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAqZnVuY3M7CiAJLyoqIEBkcml2ZXJfcHJpdmF0 ZTogcG9pbnRlciB0byB0aGUgYnJpZGdlIGRyaXZlcidzIGludGVybmFsIGNvbnRleHQgKi8KIAl2 b2lkICpkcml2ZXJfcHJpdmF0ZTsKKworCXN0cnVjdCBkcm1fYnVzX2NhcHMgaW5wdXRfYnVzX2Nh cHM7CisJc3RydWN0IGRybV9idXNfY2FwcyBvdXRwdXRfYnVzX2NhcHM7CiB9OwogCiBzdGF0aWMg aW5saW5lIHN0cnVjdCBkcm1fYnJpZGdlICoKQEAgLTQ3OSw2ICs1MTIsMTQgQEAgc3RydWN0IGRy bV9icmlkZ2UgKm9mX2RybV9maW5kX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTsKIGlu dCBkcm1fYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UsCiAJCSAgICAgIHN0cnVjdCBkcm1fYnJpZGdlICpwcmV2aW91cyk7 CiAKK2ludAorZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX2lucHV0X2J1c19jZmcoc3RydWN0IGRy bV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9zdGF0ZSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSk7CitpbnQKK2RybV9hdG9taWNfYnJpZGdlX2Nob29zZV9vdXRwdXRfYnVz X2NmZyhzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqYnJpZGdlX3N0YXRlLAorCQkJCQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKTsKIHN0cnVjdCBkcm1fYnJpZGdlICoKIGRybV9icmlkZ2VfY2hhaW5f Z2V0X2ZpcnN0X2JyaWRnZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwogc3RydWN0IGRy bV9icmlkZ2UgKgpAQCAtNTYyLDYgKzYwMywxMSBAQCBkcm1fYXRvbWljX2dldF9uZXdfYnJpZGdl X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlyZXR1cm4gZHJtX3ByaXZf dG9fYnJpZGdlX3N0YXRlKG9ial9zdGF0ZSk7CiB9CiAKK2ludCBkcm1fZmluZF9iZXN0X2J1c19m b3JtYXQoY29uc3Qgc3RydWN0IGRybV9idXNfY2FwcyAqYSwKKwkJCSAgICAgY29uc3Qgc3RydWN0 IGRybV9idXNfY2FwcyAqYiwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUsCisJCQkgICAgIHUzMiAqc2VsZWN0ZWRfYnVzX2ZtdCk7CisKICNpZmRlZiBDT05GSUdf RFJNX1BBTkVMX0JSSURHRQogc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRk KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLAogCQkJCQl1MzIgY29ubmVjdG9yX3R5cGUpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2VuY29kZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9lbmNv ZGVyLmgKaW5kZXggMDg5OWY3ZjM0ZTNhLi5lODkxOTIxYjNhZWQgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZHJtL2RybV9lbmNvZGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2VuY29kZXIuaApAQCAt MjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4 L2N0eXBlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4KICNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KICNpbmNsdWRlIDxkcm0vZHJtX21v ZGVfb2JqZWN0Lmg+CkBAIC0xODQsNiArMTg1LDExIEBAIHN0cnVjdCBkcm1fZW5jb2RlciB7CiAJ ICogZnVuY3Rpb25zIGFzIHBhcnQgb2YgaXRzIGVuY29kZXIgZW5hYmxlL2Rpc2FibGUgaGFuZGxp bmcuCiAJICovCiAJdWludDMyX3QgY3VzdG9tX2JyaWRnZV9lbmFibGVfZGlzYWJsZV9zZXEgOiAx OworCisJLyoqCisJICogQG91dHB1dF9idXNfY2FwczogU3VwcG9ydGVkIG91dHB1dCBidXMgY2Fw cworCSAqLworCXN0cnVjdCBkcm1fYnVzX2NhcHMgb3V0cHV0X2J1c19jYXBzOwogfTsKIAogI2Rl ZmluZSBvYmpfdG9fZW5jb2Rlcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGRybV9lbmNvZGVy LCBiYXNlKQotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw=