From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 12/12] drm/client: Hack: Add bootsplash example Date: Sun, 7 Apr 2019 18:52:43 +0200 Message-ID: <20190407165243.54043-13-noralf@tronnes.org> References: <20190407165243.54043-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190407165243.54043-1-noralf@tronnes.org> 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: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW4gZXhhbXBsZSB0byBzaG93Y2FzZSB0aGUgY2xpZW50IEFQSS4KClRPRE86CkEgYm9vdHNwbGFz aCBjbGllbnQgbmVlZHMgYSB3YXkgdG8gdGVsbCBkcm1fZmJfaGVscGVyIHRvIHN0YXkgYXdheSwK b3RoZXJ3aXNlIGl0IHdpbGwgY2hpbWUgaW4gb24gc2V0dXAgYW5kIGhvdHBsdWcuCk1vc3QgRFJN IGRyaXZlcnMgcmVnaXN0ZXIgZmJkZXYgYmVmb3JlIGNhbGxpbmcgZHJtX2Rldl9yZWdpc3Rlcigp ICh0aGUKZ2VuZXJpYyBlbXVsYXRpb24gaXMgYW4gZXhjZXB0aW9uKS4gVGhpcyBoYXZlIHRvIGJl IHJldmVyc2VkIGZvcgpib290c3BsYXNoIHRvIGZlbmQgb2ZmIGZiZGV2LgoKU2lnbmVkLW9mZi1i eTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL0tjb25maWcgICAgICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2RybV9ib290c3BsYXNoLmMgfCAzNTkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQu YyAgICAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgICAgICAgfCAgIDQgKwog aW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oICAgICAgICAgfCAgIDMgKwogNiBmaWxlcyBjaGFuZ2Vk LCAzNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9k cm1fYm9vdHNwbGFzaC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCA5OGU5YWM4NDk4YzAuLmQ2MWRlODA0MDY4YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKQEAgLTY1LDYgKzY1LDExIEBAIGNvbmZpZyBEUk1fREVCVUdfU0VMRlRFU1QKIAog CSAgSWYgaW4gZG91YnQsIHNheSAiTiIuCiAKK2NvbmZpZyBEUk1fQ0xJRU5UX0JPT1RTUExBU0gK Kwlib29sICJEUk0gQm9vdHNwbGFzaCIKKwloZWxwCisJICBEUk0gQm9vdHNwbGFzaAorCiBjb25m aWcgRFJNX0tNU19IRUxQRVIKIAl0cmlzdGF0ZQogCWRlcGVuZHMgb24gRFJNCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5k ZXggMDhjNzdjMTBjY2JiLi5hZTQyYzlhOTFjNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTMyLDYgKzMyLDcg QEAgZHJtLSQoQ09ORklHX09GKSArPSBkcm1fb2YubwogZHJtLSQoQ09ORklHX0FHUCkgKz0gZHJt X2FncHN1cHBvcnQubwogZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vIGRy bV9kZWJ1Z2ZzX2NyYy5vCiBkcm0tJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRSkgKz0g ZHJtX2VkaWRfbG9hZC5vCitkcm0tJChDT05GSUdfRFJNX0NMSUVOVF9CT09UU1BMQVNIKSArPSBk cm1fYm9vdHNwbGFzaC5vCiAKIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8g ZHJtX2RwX2hlbHBlci5vIGRybV9kc2MubyBkcm1fcHJvYmVfaGVscGVyLm8gXAogCQlkcm1fcGxh bmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ib290c3BsYXNoLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2Jvb3RzcGxhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjM3ZjNhYzNmY2U5NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYm9vdHNwbGFzaC5jCkBAIC0wLDAgKzEsMzU5IEBACisvKiBEUk0gaW50ZXJuYWwgY2xpZW50 IGV4YW1wbGUgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgva2V5Ym9hcmQuaD4KKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIu aD4KKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fY2xp ZW50Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9t b2Rlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KKworLy8gZHJtX2xhc3RjbG9zZSgp CisjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCisKK3N0YXRpYyBib29sIGRybV9ib290c3BsYXNo X2VuYWJsZWQgPSB0cnVlOworbW9kdWxlX3BhcmFtX25hbWVkKGJvb3RzcGxhc2hfZW5hYmxlZCwg ZHJtX2Jvb3RzcGxhc2hfZW5hYmxlZCwgYm9vbCwgMDYwMCk7CitNT0RVTEVfUEFSTV9ERVNDKGJv b3RzcGxhc2hfZW5hYmxlZCwgIkVuYWJsZSBib290c3BsYXNoIGNsaWVudCBbZGVmYXVsdD10cnVl XSIpOworCitzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2ggeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiBj bGllbnQ7CisJc3RydWN0IG11dGV4IGxvY2s7CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcmtlcjsK Kwlib29sIHN0YXJ0ZWQ7CisJYm9vbCBzdG9wOworCisJdW5zaWduZWQgaW50IG1vZGVzZXRfbWFz azsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcnNbMl07Cit9OworCitzdGF0aWMg Ym9vbCBkcm1fYm9vdHNwbGFzaF9rZXlfcHJlc3NlZDsKKworc3RhdGljIGludCBkcm1fYm9vdHNw bGFzaF9rZXlib2FyZF9ub3RpZmllcl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqYmxrLAor CQkJCQkJIHVuc2lnbmVkIGxvbmcgY29kZSwgdm9pZCAqX3BhcmFtKQoreworCS8qIEFueSBrZXkg aXMgZ29vZCAqLworCWRybV9ib290c3BsYXNoX2tleV9wcmVzc2VkID0gdHJ1ZTsKKworCXJldHVy biBOT1RJRllfT0s7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgZHJtX2Jvb3Rz cGxhc2hfa2V5Ym9hcmRfbm90aWZpZXJfYmxvY2sgPSB7CisJLm5vdGlmaWVyX2NhbGwgPSBkcm1f Ym9vdHNwbGFzaF9rZXlib2FyZF9ub3RpZmllcl9jYWxsLAorfTsKKworc3RhdGljIHZvaWQgZHJt X2Jvb3RzcGxhc2hfYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2ggKnNwbGFzaCkK K3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJaWYg KCFJU19FUlJfT1JfTlVMTChzcGxhc2gtPmJ1ZmZlcnNbaV0pKQorCQkJZHJtX2NsaWVudF9mcmFt ZWJ1ZmZlcl9kZWxldGUoc3BsYXNoLT5idWZmZXJzW2ldKTsKKwkJc3BsYXNoLT5idWZmZXJzW2ld ID0gTlVMTDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgZHJtX2Jvb3RzcGxhc2hfYnVmZmVyX2NyZWF0 ZShzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2ggKnNwbGFzaCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQor eworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeworCQlzcGxh c2gtPmJ1ZmZlcnNbaV0gPSBkcm1fY2xpZW50X2ZyYW1lYnVmZmVyX2NyZWF0ZSgmc3BsYXNoLT5j bGllbnQsIHdpZHRoLCBoZWlnaHQsIERSTV9GT1JNQVRfWFJHQjg4ODgpOworCQlpZiAoSVNfRVJS KHNwbGFzaC0+YnVmZmVyc1tpXSkpIHsKKwkJCWRybV9ib290c3BsYXNoX2J1ZmZlcl9kZWxldGUo c3BsYXNoKTsKKwkJCXJldHVybiBQVFJfRVJSKHNwbGFzaC0+YnVmZmVyc1tpXSk7CisJCX0KKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fYm9vdHNwbGFzaF9kaXNwbGF5X3By b2JlKHN0cnVjdCBkcm1fYm9vdHNwbGFzaCAqc3BsYXNoKQoreworCXN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50ID0gJnNwbGFzaC0+Y2xpZW50OworCXVuc2lnbmVkIGludCB3aWR0aCA9IDAs IGhlaWdodCA9IDA7CisJdW5zaWduZWQgaW50IG51bV9ub25fdGlsZWQgPSAwLCBpOworCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisJYm9vbCB0aWxlZCA9IGZhbHNlOworCWludCByZXQ7 CisKKwlzcGxhc2gtPm1vZGVzZXRfbWFzayA9IDA7CisKKwlyZXQgPSBkcm1fY2xpZW50X21vZGVz ZXRfcHJvYmUoY2xpZW50LCAwLCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJbXV0 ZXhfbG9jaygmY2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKworCWRybV9jbGllbnRfZm9yX2VhY2hf bW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKKwkJaWYgKCFtb2Rlc2V0LT5tb2RlKQorCQkJY29u dGludWU7CisKKwkJaWYgKG1vZGVzZXQtPmNvbm5lY3RvcnNbMF0tPmhhc190aWxlKQorCQkJdGls ZWQgPSB0cnVlOworCQllbHNlCisJCQludW1fbm9uX3RpbGVkKys7CisJfQorCisJaWYgKCF0aWxl ZCAmJiAhbnVtX25vbl90aWxlZCkgeworCQlkcm1fYm9vdHNwbGFzaF9idWZmZXJfZGVsZXRlKHNw bGFzaCk7CisJCXJldCA9IC1FTk9FTlQ7CisJCWdvdG8gb3V0OworCX0KKworCS8qIEFzc3VtZSBv bmx5IG9uZSB0aWxlZCBtb25pdG9yIGlzIHBvc3NpYmxlICovCisJaWYgKHRpbGVkKSB7CisJCWlu dCBoZGlzcGxheSA9IDAsIHZkaXNwbGF5ID0gMDsKKworCQlpID0gMDsKKwkJZHJtX2NsaWVudF9m b3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNsaWVudCkgeworCQkJaSsrOworCQkJaWYgKCFtb2Rl c2V0LT5jb25uZWN0b3JzWzBdLT5oYXNfdGlsZSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKCFt b2Rlc2V0LT55KQorCQkJCWhkaXNwbGF5ICs9IG1vZGVzZXQtPm1vZGUtPmhkaXNwbGF5OworCQkJ aWYgKCFtb2Rlc2V0LT54KQorCQkJCXZkaXNwbGF5ICs9IG1vZGVzZXQtPm1vZGUtPnZkaXNwbGF5 OworCQkJc3BsYXNoLT5tb2Rlc2V0X21hc2sgfD0gQklUKGkgLSAxKTsKKwkJfQorCisJCXdpZHRo ID0gaGRpc3BsYXk7CisJCWhlaWdodCA9IHZkaXNwbGF5OworCisJCWdvdG8gdHJpbTsKKwl9CisK KwkvKiBUaGUgcmVzdCBoYXZlIG9uZSBkaXNwbGF5IHBlciBtb2Rlc2V0LCBwaWNrIHRoZSBsYXJn ZXN0ICovCisJaSA9IDA7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsIGNs aWVudCkgeworCQlpKys7CisJCWlmICghbW9kZXNldC0+bW9kZSB8fCBtb2Rlc2V0LT5jb25uZWN0 b3JzWzBdLT5oYXNfdGlsZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChtb2Rlc2V0LT5tb2RlLT5o ZGlzcGxheSAqIG1vZGVzZXQtPm1vZGUtPnZkaXNwbGF5ID4gd2lkdGggKiBoZWlnaHQpIHsKKwkJ CXdpZHRoID0gbW9kZXNldC0+bW9kZS0+aGRpc3BsYXk7CisJCQloZWlnaHQgPSBtb2Rlc2V0LT5t b2RlLT52ZGlzcGxheTsKKwkJCXNwbGFzaC0+bW9kZXNldF9tYXNrID0gQklUKGkgLSAxKTsKKwkJ fQorCX0KKwordHJpbToKKwkvKiBSZW1vdmUgdW51c2VkIG1vZGVzZXRzICh3YXJuaW5nIGluIF9f ZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZygpKSAqLworCWkgPSAwOworCWRybV9jbGllbnRf Zm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKKwkJdW5zaWduZWQgaW50IGo7CisK KwkJaWYgKHNwbGFzaC0+bW9kZXNldF9tYXNrICYgQklUKGkrKykpCisJCQljb250aW51ZTsKKwor CQlkcm1fbW9kZV9kZXN0cm95KGNsaWVudC0+ZGV2LCBtb2Rlc2V0LT5tb2RlKTsKKwkJbW9kZXNl dC0+bW9kZSA9IE5VTEw7CisKKwkJZm9yIChqID0gMDsgaiA8IG1vZGVzZXQtPm51bV9jb25uZWN0 b3JzOyBqKyspIHsKKwkJCWRybV9jb25uZWN0b3JfcHV0KG1vZGVzZXQtPmNvbm5lY3RvcnNbal0p OworCQkJbW9kZXNldC0+Y29ubmVjdG9yc1tqXSA9IE5VTEw7CisJCX0KKwkJbW9kZXNldC0+bnVt X2Nvbm5lY3RvcnMgPSAwOworCX0KKworCWlmICghc3BsYXNoLT5idWZmZXJzWzBdIHx8CisJICAg IHNwbGFzaC0+YnVmZmVyc1swXS0+ZmItPndpZHRoICE9IHdpZHRoIHx8IHNwbGFzaC0+YnVmZmVy c1swXS0+ZmItPmhlaWdodCAhPSBoZWlnaHQpIHsKKwkJZHJtX2Jvb3RzcGxhc2hfYnVmZmVyX2Rl bGV0ZShzcGxhc2gpOworCQlyZXQgPSBkcm1fYm9vdHNwbGFzaF9idWZmZXJfY3JlYXRlKHNwbGFz aCwgd2lkdGgsIGhlaWdodCk7CisJfQorCitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1v ZGVzZXRfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBkcm1fYm9vdHNw bGFzaF9kaXNwbGF5X2NvbW1pdF9idWZmZXIoc3RydWN0IGRybV9ib290c3BsYXNoICpzcGxhc2gs IHVuc2lnbmVkIGludCBudW0pCit7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKKwl1 bnNpZ25lZCBpbnQgaSA9IDA7CisKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNl dCwgJnNwbGFzaC0+Y2xpZW50KSB7CisJCWlmIChzcGxhc2gtPm1vZGVzZXRfbWFzayAmIEJJVChp KyspKQorCQkJbW9kZXNldC0+ZmIgPSBzcGxhc2gtPmJ1ZmZlcnNbbnVtXS0+ZmI7CisJfQorCisJ cmV0dXJuIGRybV9jbGllbnRfbW9kZXNldF9jb21taXQoJnNwbGFzaC0+Y2xpZW50KTsKK30KKwor c3RhdGljIHUzMiBkcm1fYm9vdHNwbGFzaF9jb2xvcl90YWJsZVszXSA9IHsKKwkweDAwZmYwMDAw LCAweDAwMDBmZjAwLCAweDAwMDAwMGZmLAorfTsKKworLyogRHJhdyBhIGJveCB3aXRoIGNoYW5n aW5nIGNvbG9ycyAqLworc3RhdGljIHZvaWQgZHJtX2Jvb3RzcGxhc2hfZHJhd19ib3goc3RydWN0 IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIsIHVuc2lnbmVkIGludCBzZXF1ZW5jZSkKK3sKKwl1 bnNpZ25lZCBpbnQgd2lkdGggPSBidWZmZXItPmZiLT53aWR0aDsKKwl1bnNpZ25lZCBpbnQgaGVp Z2h0ID0gYnVmZmVyLT5mYi0+aGVpZ2h0OworCXVuc2lnbmVkIGludCB4LCB5OworCXUzMiAqcGl4 OworCisJcGl4ID0gYnVmZmVyLT52YWRkcjsKKwlwaXggKz0gKChoZWlnaHQgLyAyKSAtIDUwKSAq IHdpZHRoOworCXBpeCArPSAod2lkdGggLyAyKSAtIDUwOworCisJZm9yICh5ID0gMDsgeSA8IDEw MDsgeSsrKSB7CisJCWZvciAoeCA9IDA7IHggPCAxMDA7IHgrKykKKwkJCSpwaXgrKyA9IGRybV9i b290c3BsYXNoX2NvbG9yX3RhYmxlW3NlcXVlbmNlXTsKKwkJcGl4ICs9IHdpZHRoIC0gMTAwOwor CX0KK30KKworc3RhdGljIGludCBkcm1fYm9vdHNwbGFzaF9kcmF3KHN0cnVjdCBkcm1fYm9vdHNw bGFzaCAqc3BsYXNoLCB1bnNpZ25lZCBpbnQgc2VxdWVuY2UsIHVuc2lnbmVkIGludCBidWZmZXJf bnVtKQoreworCWlmICghc3BsYXNoLT5idWZmZXJzW2J1ZmZlcl9udW1dKQorCQlyZXR1cm4gLUVO T0VOVDsKKworCURSTV9ERUJVR19LTVMoImRyYXc6IGJ1ZmZlcl9udW09JXUsIHNlcXVlbmNlPSV1 XG4iLCBidWZmZXJfbnVtLCBzZXF1ZW5jZSk7CisKKwlkcm1fYm9vdHNwbGFzaF9kcmF3X2JveChz cGxhc2gtPmJ1ZmZlcnNbYnVmZmVyX251bV0sIHNlcXVlbmNlKTsKKworCXJldHVybiBkcm1fYm9v dHNwbGFzaF9kaXNwbGF5X2NvbW1pdF9idWZmZXIoc3BsYXNoLCBidWZmZXJfbnVtKTsKK30KKwor c3RhdGljIHZvaWQgZHJtX2Jvb3RzcGxhc2hfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKK3sKKwlzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2ggKnNwbGFzaCA9IGNvbnRhaW5lcl9vZih3b3Jr LCBzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2gsIHdvcmtlcik7CisJc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQgPSAmc3BsYXNoLT5jbGllbnQ7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNs aWVudC0+ZGV2OworCXVuc2lnbmVkIGludCBidWZmZXJfbnVtID0gMCwgc2VxdWVuY2UgPSAwOwor CWJvb2wgc3RvcCA9IGZhbHNlOworCWludCByZXQgPSAwOworCisJd2hpbGUgKCFkcm1fYm9vdHNw bGFzaF9rZXlfcHJlc3NlZCkgeworCQltdXRleF9sb2NrKCZzcGxhc2gtPmxvY2spOworCisJCXN0 b3AgPSBzcGxhc2gtPnN0b3A7CisKKwkJYnVmZmVyX251bSA9ICFidWZmZXJfbnVtOworCisJCXJl dCA9IGRybV9ib290c3BsYXNoX2RyYXcoc3BsYXNoLCBzZXF1ZW5jZSwgYnVmZmVyX251bSk7CisK KwkJbXV0ZXhfdW5sb2NrKCZzcGxhc2gtPmxvY2spOworCisJCWlmIChzdG9wIHx8IHJldCA9PSAt RU5PRU5UIHx8IHJldCA9PSAtRUJVU1kpCisJCQlicmVhazsKKworCQlpZiAoKytzZXF1ZW5jZSA9 PSAzKQorCQkJc2VxdWVuY2UgPSAwOworCisJCW1zbGVlcCg1MDApOworCX0KKworCS8qIFJlc3Rv cmUgZmJkZXYgKG9yIG90aGVyKSBvbiBrZXkgcHJlc3MuICovCisJLyogVE9ETzogQ2hlY2sgaWYg aXQncyBPSyB0byBjYWxsIGRybV9sYXN0Y2xvc2UgaGVyZS4gKi8KKwlpZiAoZHJtX2Jvb3RzcGxh c2hfa2V5X3ByZXNzZWQgJiYgIXNwbGFzaC0+c3RvcCkKKwkJZHJtX2xhc3RjbG9zZShkZXYpOwor CisJZHJtX2Jvb3RzcGxhc2hfYnVmZmVyX2RlbGV0ZShzcGxhc2gpOworCisJRFJNX0RFVl9ERUJV R19LTVMoZGV2LT5kZXYsICJCb290c3BsYXNoIGhhcyBzdG9wcGVkIChrZXk9JXUgc3RvcD0ldSwg cmV0PSVkKS5cbiIsCisJCQkgIGRybV9ib290c3BsYXNoX2tleV9wcmVzc2VkLCBzcGxhc2gtPnN0 b3AsIHJldCk7Cit9CisKK3N0YXRpYyBpbnQgZHJtX2Jvb3RzcGxhc2hfY2xpZW50X2hvdHBsdWco c3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9ib290c3BsYXNo ICpzcGxhc2ggPSBjb250YWluZXJfb2YoY2xpZW50LCBzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2gsIGNs aWVudCk7CisJaW50IHJldCA9IDA7CisKKwlpZiAoZHJtX2Jvb3RzcGxhc2hfa2V5X3ByZXNzZWQp CisJCXJldHVybiAwOworCisJbXV0ZXhfbG9jaygmc3BsYXNoLT5sb2NrKTsKKworCWlmIChzcGxh c2gtPnN0b3ApCisJCWdvdG8gb3V0X3VubG9jazsKKworCXJldCA9IGRybV9ib290c3BsYXNoX2Rp c3BsYXlfcHJvYmUoc3BsYXNoKTsKKwlpZiAocmV0IDwgMCkgeworCQlpZiAoc3BsYXNoLT5zdGFy dGVkICYmIHJldCA9PSAtRU5PRU5UKQorCQkJc3BsYXNoLT5zdG9wID0gdHJ1ZTsKKwkJZ290byBv dXRfdW5sb2NrOworCX0KKworCS8qCisJICogVE9ETzogRGVhbCB3aXRoIHJvdGF0ZWQgcGFuZWxz LCBtaWdodCBoYXZlIHRvIHN3IHJvdGF0ZQorCWlmIChkcm1fY2xpZW50X3BhbmVsX3JvdGF0aW9u KC4uLikpCisJICovCisKKwlpZiAoIXNwbGFzaC0+c3RhcnRlZCkgeworCQlzcGxhc2gtPnN0YXJ0 ZWQgPSB0cnVlOworCQlzY2hlZHVsZV93b3JrKCZzcGxhc2gtPndvcmtlcik7CisJfQorCitvdXRf dW5sb2NrOgorCW11dGV4X3VubG9jaygmc3BsYXNoLT5sb2NrKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIGRybV9ib290c3BsYXNoX2NsaWVudF91bnJlZ2lzdGVyKHN0cnVjdCBk cm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fYm9vdHNwbGFzaCAqc3BsYXNo ID0gY29udGFpbmVyX29mKGNsaWVudCwgc3RydWN0IGRybV9ib290c3BsYXNoLCBjbGllbnQpOwor CisJRFJNX0RFQlVHX0tNUygiJXM6IElOXG4iLCBfX2Z1bmNfXyk7CisKKwltdXRleF9sb2NrKCZz cGxhc2gtPmxvY2spOworCXNwbGFzaC0+c3RvcCA9IHRydWU7CisJbXV0ZXhfdW5sb2NrKCZzcGxh c2gtPmxvY2spOworCisJZmx1c2hfd29yaygmc3BsYXNoLT53b3JrZXIpOworCisJZHJtX2NsaWVu dF9yZWxlYXNlKGNsaWVudCk7CisJa2ZyZWUoc3BsYXNoKTsKKworCXVucmVnaXN0ZXJfa2V5Ym9h cmRfbm90aWZpZXIoJmRybV9ib290c3BsYXNoX2tleWJvYXJkX25vdGlmaWVyX2Jsb2NrKTsKKwor CURSTV9ERUJVR19LTVMoIiVzOiBPVVRcbiIsIF9fZnVuY19fKTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fY2xpZW50X2Z1bmNzIGRybV9ib290c3BsYXNoX2NsaWVudF9mdW5jcyA9IHsK Kwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLnVucmVnaXN0ZXIJPSBkcm1fYm9vdHNwbGFzaF9j bGllbnRfdW5yZWdpc3RlciwKKwkuaG90cGx1Zwk9IGRybV9ib290c3BsYXNoX2NsaWVudF9ob3Rw bHVnLAorfTsKKwordm9pZCBkcm1fYm9vdHNwbGFzaF9jbGllbnRfcmVnaXN0ZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2Jvb3RzcGxhc2ggKnNwbGFzaDsKKwlpbnQg cmV0OworCisJaWYgKCFkcm1fYm9vdHNwbGFzaF9lbmFibGVkKQorCQlyZXR1cm47CisKKwlzcGxh c2ggPSBremFsbG9jKHNpemVvZigqc3BsYXNoKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzcGxhc2gp CisJCXJldHVybjsKKworCXJldCA9IGRybV9jbGllbnRfaW5pdChkZXYsICZzcGxhc2gtPmNsaWVu dCwgImJvb3RzcGxhc2giLCAmZHJtX2Jvb3RzcGxhc2hfY2xpZW50X2Z1bmNzKTsKKwlpZiAocmV0 KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LT5kZXYsICJGYWlsZWQgdG8gY3JlYXRlIGNsaWVudCwg cmV0PSVkXG4iLCByZXQpOworCQlrZnJlZShzcGxhc2gpOworCQlyZXR1cm47CisJfQorCisJLyog Rm9yIHRoaXMgc2ltcGxlIGV4YW1wbGUgb25seSBhbGxvdyB0aGUgZmlyc3QgKi8KKwlkcm1fYm9v dHNwbGFzaF9lbmFibGVkID0gZmFsc2U7CisKKwltdXRleF9pbml0KCZzcGxhc2gtPmxvY2spOwor CisJSU5JVF9XT1JLKCZzcGxhc2gtPndvcmtlciwgZHJtX2Jvb3RzcGxhc2hfd29ya2VyKTsKKwor CWRybV9jbGllbnRfYWRkKCZzcGxhc2gtPmNsaWVudCk7CisKKwlyZWdpc3Rlcl9rZXlib2FyZF9u b3RpZmllcigmZHJtX2Jvb3RzcGxhc2hfa2V5Ym9hcmRfbm90aWZpZXJfYmxvY2spOworCisJZHJt X2Jvb3RzcGxhc2hfY2xpZW50X2hvdHBsdWcoJnNwbGFzaC0+Y2xpZW50KTsKK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudC5jCmluZGV4IDNhZDViNTdjMTQxOS4uMWY5ZWIyOGEyN2U1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50 LmMKQEAgLTE2Miw2ICsxNjIsMTMgQEAgdm9pZCBkcm1fY2xpZW50X3JlbGVhc2Uoc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfcmVsZWFz ZSk7CiAKK3ZvaWQgZHJtX2NsaWVudF9kZXZfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKK3sKKyNpZiBDT05GSUdfRFJNX0NMSUVOVF9CT09UU1BMQVNICisJZHJtX2Jvb3RzcGxhc2hf Y2xpZW50X3JlZ2lzdGVyKGRldik7CisjZW5kaWYKK30KKwogdm9pZCBkcm1fY2xpZW50X2Rldl91 bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9jbGllbnRf ZGV2ICpjbGllbnQsICp0bXA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwppbmRleCA1MGQ4NDlkMWJjNmUuLmZiYmI1Zjk5 OGJhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jCkBAIC0xMDE4LDYgKzEwMTgsMTAgQEAgaW50IGRybV9kZXZfcmVn aXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAlkcm1f bWlub3JfdW5yZWdpc3RlcihkZXYsIERSTV9NSU5PUl9SRU5ERVIpOwogb3V0X3VubG9jazoKIAlt dXRleF91bmxvY2soJmRybV9nbG9iYWxfbXV0ZXgpOworCisJaWYgKCFyZXQpCisJCWRybV9jbGll bnRfZGV2X3JlZ2lzdGVyKGRldik7CisKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChk cm1fZGV2X3JlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaCBi L2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaAppbmRleCA1MTVmMGY3ODNmZjguLmFjNzJmYTUxNGU2 NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvZHJt L2RybV9jbGllbnQuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGludCBkcm1fY2xpZW50X2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsCiB2b2lk IGRybV9jbGllbnRfcmVsZWFzZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7CiB2b2lk IGRybV9jbGllbnRfYWRkKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKIAordm9pZCBk cm1fY2xpZW50X2Rldl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgZHJt X2NsaWVudF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgZHJt X2NsaWVudF9kZXZfaG90cGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgZHJtX2Ns aWVudF9kZXZfcmVzdG9yZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAgLTE4Miw0ICsxODMs NiBAQCBpbnQgZHJtX2NsaWVudF9tb2Rlc2V0X2RwbXMoc3RydWN0IGRybV9jbGllbnRfZGV2ICpj bGllbnQsIGludCBtb2RlKTsKIAogaW50IGRybV9jbGllbnRfZGVidWdmc19pbml0KHN0cnVjdCBk cm1fbWlub3IgKm1pbm9yKTsKIAordm9pZCBkcm1fYm9vdHNwbGFzaF9jbGllbnRfcmVnaXN0ZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CisKICNlbmRpZgotLSAKMi4yMC4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=