From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH] drm/fb-helper: Support deferred setup Date: Wed, 28 Jun 2017 13:32:01 +0200 Message-ID: <20170628113201.27383-1-daniel.vetter@ffwll.ch> References: <20170627145936.18983-11-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170627145936.18983-11-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , Thierry Reding , John Stultz , Liviu Dudau List-Id: dri-devel@lists.freedesktop.org RkIgaGVscGVyIGNvZGUgZmFsbHMgYmFjayB0byBhIDEwMjR4NzY4IG1vZGUgaWYgbm8gb3V0cHV0 cyBhcmUgY29ubmVjdGVkCm9yIGRvbid0IHJlcG9ydCBiYWNrIGFueSBtb2RlcyB1cG9uIGluaXRp YWxpemF0aW9uLiBUaGlzIGNhbiBiZSBhbm5veWluZwpiZWNhdXNlIG91dHB1dHMgdGhhdCBhcmUg YWRkZWQgdG8gRkIgaGVscGVyIGxhdGVyIG9uIGNhbid0IGJlIHVzZWQgd2l0aApGQiBoZWxwZXIg aWYgdGhleSBkb24ndCBzdXBwb3J0IGEgbWF0Y2hpbmcgbW9kZS4KClRoZSBmYWxsYmFjayBpcyBp biBwbGFjZSBiZWNhdXNlIFZHQSBjb25uZWN0b3JzIGNhbiBoYXBwZW4gdG8gcmVwb3J0IGFuCnVu a25vd24gY29ubmVjdGlvbiBzdGF0dXMgZXZlbiB3aGVuIHRoZXkgYXJlIGluIGZhY3QgY29ubmVj dGVkLgoKU29tZSBkcml2ZXJzIGhhdmUgY3VzdG9tIHNvbHV0aW9ucyBpbiBwbGFjZSB0byBkZWZl ciBGQiBoZWxwZXIgc2V0dXAKdW50aWwgYXQgbGVhc3Qgb25lIG91dHB1dCBpcyBjb25uZWN0ZWQu IEJ1dCB0aGUgbG9naWMgYmVoaW5kIHRoZXNlCnNvbHV0aW9ucyBpcyBhbHdheXMgdGhlIHNhbWUg YW5kIHRoZXJlIGlzIG5vdGhpbmcgZHJpdmVyLXNwZWNpZmljIGFib3V0Cml0LCBzbyBhIGJldHRl ciBhbHRlcmF0aXZlIGlzIHRvIGZpeCB0aGUgRkIgaGVscGVyIGNvcmUgYW5kIGFkZCBzdXBwb3J0 CmZvciBhbGwgZHJpdmVycyBhdXRvbWF0aWNhbGx5LgoKVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg Zm9yIGRlZmVycmVkIEZCIGhlbHBlciBzZXR1cC4gSXQgY2hlY2tzIGFsbCB0aGUKY29ubmVjdG9y cyBmb3IgdGhlaXIgY29ubmVjdGlvbiBzdGF0dXMsIGFuZCBpZiBhbGwgb2YgdGhlbSByZXBvcnQg dG8gYmUKZGlzY29ubmVjdGVkIG1hcmtzIHRoZSBGQiBoZWxwZXIgYXMgbmVlZGluZyBkZWZlcnJl ZCBzZXR1cC4gV2hldCBzZXR1cAppcyBkZWZlcnJlZCwgdGhlIEZCIGhlbHBlciBjb3JlIHdpbGwg YXV0b21hdGljYWxseSByZXRyeSBzZXR1cCBhZnRlciBhCmhvdHBsdWcgZXZlbnQsIGFuZCBpdCB3 aWxsIGtlZXAgdHJ5aW5nIHVudGlsIGl0IHN1Y2NlZWRzLgoKdjI6IFJlYmFzZSBvbnRvIG15IGVu dGlyZWx5IHJld29ya2VkIGZiZGV2IGhlbHBlciBsb2NraW5nLiBPbmUgYmlnCmRpZmZlcmVuY2Ug aXMgdGhhdCB0aGlzIHZlcnNpb24gYWdhaW4gZHJvcHMmcmVhY3F1aXJlcyB0aGUgZmJkZXYgbG9j awood2hpY2ggaXMgbm93IGZiX2hlbHBlci0+bG9jaywgYnV0IGJlZm9yZSB0aGlzIHBhdGNoIHNl cmllcyBpdCB3YXMKbW9kZV9jb25maWctPm11dGV4KSwgYmVjYXVzZSByZWdpc3Rlcl9mcmFtZWJ1 ZmZlciBtdXN0IGJlIGFibGUgdG8KcmVjdXJzZSBiYWNrIGludG8gZmJkZXYgaGVscGVyIGNvZGUg Zm9yIHRoZSBpbml0aWFsIHNjcmVlbiBzZXR1cC4KCnYzOiBfX2RybV9mYl9oZWxwZXJfaW5pdGlh bF9jb25maWcgbXVzdCBob2xkIGZiX2hlbHBlci0+bG9jayB1cG9uCnJldHVybiwgSSd2ZSBmdW1i bGVkIHRoYXQgaW4gdGhlIGRlZmVycmVkIHNldHVwIGNhc2UgKExpdml1KS4KCnY0OiBJIHdhcyBi bGluZCwgcmVkbyB0aGlzIGFsbC4gX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnCnNob3Vs ZG4ndCBuZWVkIHRvIHJlYWNxdWlyZSBmYl9oZWxwZXItPmxvY2ssIHRoYXQganVzdCBjb25mdXNl cwpjYWxsZXJzLiBJIG15c2VsZiBnb3QgY29uZnVzZWQgYnkga2VybmVsX2ZiX2hlbHBlcl9sb2Nr IGFuZCBzb21laG93CnRob3VnaHQgaXQncyB0aGUgc2FtZSBhcyBmYl9oZWxwZXItPmxvY2suIFRz ay4KCkFsc28gc2ltcGxpZnkgdGhlIGxvZ2ljIGEgYml0ICh3ZSBkb24ndCBuZWVkIHR3byBmdW5j dGlvbnMgdG8gcHJvYmUKY29ubmVjdG9ycyksIHdlIGNhbiBzdGljayBtdWNoIGNsb3NlciB0byB0 aGUgZXhpc3RpbmcgY29kZS4gQW5kIHVwZGF0ZQpzb21lIGNvbW1lbnRzIEkndmUgc3BvdHRlZCB0 aGF0IGFyZSBvdXRkYXRlZC4KCnY1OiBEb24ndCBwYXNzIC1FQUdBSU4gdG8gZHJpdmVycywgaXQn cyBqdXN0IGFuIGludGVybmFsIGVycm9yIGNvZGUKKExpdml1KS4KCkNjOiBMaXZpdSBEdWRhdSA8 bGl2aXVAZHVkYXUuY28udWs+CkNjOiBKb2huIFN0dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9y Zz4KQ2M6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ICh2MSkKVGVzdGVkLWJ5 OiBKb2huIFN0dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KU2lnbmVkLW9mZi1ieTogVGhp ZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4gKHYxKQpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fZmJfaGVscGVyLmMgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oICAgICB8ICAyMyArKysrKysrKysKIDIg ZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZmJfaGVscGVyLmMKaW5kZXggYmJkNGM2ZDAzNzhkLi5lNDliYWUxMGYwZWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYwpAQCAtNTIxLDYgKzUyMSw5IEBAIGludCBkcm1fZmJfaGVscGVyX3Jl c3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy KQogCWlmICghZHJtX2ZiZGV2X2VtdWxhdGlvbikKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlpZiAo UkVBRF9PTkNFKGZiX2hlbHBlci0+ZGVmZXJyZWRfc2V0dXApKQorCQlyZXR1cm4gMDsKKwogCW11 dGV4X2xvY2soJmZiX2hlbHBlci0+bG9jayk7CiAJcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlKGZi X2hlbHBlcik7CiAKQEAgLTE2OTUsOCArMTY5OCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hl bHBlcl9wYW5fZGlzcGxheSk7CiAKIC8qCiAgKiBBbGxvY2F0ZXMgdGhlIGJhY2tpbmcgc3RvcmFn ZSBhbmQgc2V0cyB1cCB0aGUgZmJkZXYgaW5mbyBzdHJ1Y3R1cmUgdGhyb3VnaAotICogdGhlIC0+ ZmJfcHJvYmUgY2FsbGJhY2sgYW5kIHRoZW4gcmVnaXN0ZXJzIHRoZSBmYmRldiBhbmQgc2V0cyB1 cCB0aGUgcGFuaWMKLSAqIG5vdGlmaWVyLgorICogdGhlIC0+ZmJfcHJvYmUgY2FsbGJhY2suCiAg Ki8KIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCQkJIGludCBwcmVmZXJyZWRfYnBwKQpAQCAtMTc5NCwx MyArMTc5Niw4IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAl9CiAKIAlpZiAoY3J0Y19jb3VudCA9PSAw IHx8IHNpemVzLmZiX3dpZHRoID09IC0xIHx8IHNpemVzLmZiX2hlaWdodCA9PSAtMSkgewotCQkv KgotCQkgKiBobW0gZXZlcnlvbmUgd2VudCBhd2F5IC0gYXNzdW1lIFZHQSBjYWJsZSBqdXN0IGZl bGwgb3V0Ci0JCSAqIGFuZCB3aWxsIGNvbWUgYmFjayBsYXRlci4KLQkJICovCi0JCURSTV9JTkZP KCJDYW5ub3QgZmluZCBhbnkgY3J0YyBvciBzaXplcyAtIGdvaW5nIDEwMjR4NzY4XG4iKTsKLQkJ c2l6ZXMuZmJfd2lkdGggPSBzaXplcy5zdXJmYWNlX3dpZHRoID0gMTAyNDsKLQkJc2l6ZXMuZmJf aGVpZ2h0ID0gc2l6ZXMuc3VyZmFjZV9oZWlnaHQgPSA3Njg7CisJCURSTV9JTkZPKCJDYW5ub3Qg ZmluZCBhbnkgY3J0YyBvciBzaXplc1xuIik7CisJCXJldHVybiAtRUFHQUlOOwogCX0KIAogCS8q IEhhbmRsZSBvdXIgb3ZlcmFsbG9jYXRpb24gKi8KQEAgLTI0MjksNiArMjQyNiw1OCBAQCBzdGF0 aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwK IAlrZnJlZShlbmFibGVkKTsKIH0KIAorLyogTm90ZTogRHJvcHMgZmJfaGVscGVyLT5sb2NrIGJl Zm9yZSByZXR1cm5pbmcuICovCitzdGF0aWMgaW50IF9fZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2Nv bmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAorCQkJCQkgIGludCBicHBfc2Vs KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbzsKKwl1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodDsKKwlpbnQgcmV0Owor CisJd2lkdGggPSBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aDsKKwloZWlnaHQgPSBkZXYtPm1v ZGVfY29uZmlnLm1heF9oZWlnaHQ7CisKKwlkcm1fc2V0dXBfY3J0Y3MoZmJfaGVscGVyLCB3aWR0 aCwgaGVpZ2h0KTsKKwlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShmYl9oZWxw ZXIsIGJwcF9zZWwpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChyZXQgPT0gLUVBR0FJTikgewor CQkJZmJfaGVscGVyLT5wcmVmZXJyZWRfYnBwID0gYnBwX3NlbDsKKwkJCWZiX2hlbHBlci0+ZGVm ZXJyZWRfc2V0dXAgPSB0cnVlOworCQkJcmV0ID0gMDsKKwkJfQorCQltdXRleF91bmxvY2soJmZi X2hlbHBlci0+bG9jayk7CisKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmYl9oZWxwZXItPmRlZmVy cmVkX3NldHVwID0gZmFsc2U7CisKKwlpbmZvID0gZmJfaGVscGVyLT5mYmRldjsKKwlpbmZvLT52 YXIucGl4Y2xvY2sgPSAwOworCisJLyogTmVlZCB0byBkcm9wIGxvY2tzIHRvIGF2b2lkIHJlY3Vy c2l2ZSBkZWFkbG9jayBpbgorCSAqIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyLiBUaGlzIGlzIG9rIGJl Y2F1c2UgdGhlIG9ubHkgdGhpbmcgbGVmdCB0byBkbyBpcworCSAqIHJlZ2lzdGVyIHRoZSBmYmRl diBlbXVsYXRpb24gaW5zdGFuY2UgaW4ga2VybmVsX2ZiX2hlbHBlcl9saXN0LiAqLworCW11dGV4 X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKKworCXJldCA9IHJlZ2lzdGVyX2ZyYW1lYnVmZmVy KGluZm8pOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZGV2X2luZm8oZGV2LT5k ZXYsICJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2aWNlXG4iLAorCQkgaW5mby0+bm9kZSwgaW5m by0+Zml4LmlkKTsKKworCW11dGV4X2xvY2soJmtlcm5lbF9mYl9oZWxwZXJfbG9jayk7CisJaWYg KGxpc3RfZW1wdHkoJmtlcm5lbF9mYl9oZWxwZXJfbGlzdCkpCisJCXJlZ2lzdGVyX3N5c3JxX2tl eSgndicsICZzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3ApOworCisJbGlzdF9hZGQoJmZi X2hlbHBlci0+a2VybmVsX2ZiX2xpc3QsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QpOworCW11dGV4 X3VubG9jaygma2VybmVsX2ZiX2hlbHBlcl9sb2NrKTsKKworCXJldHVybiAwOworfQorCiAvKioK ICAqIGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcgLSBzZXR1cCBhIHNhbmUgaW5pdGlhbCBj b25uZWN0b3IgY29uZmlndXJhdGlvbgogICogQGZiX2hlbHBlcjogZmJfaGVscGVyIGRldmljZSBz dHJ1Y3QKQEAgLTI0NzMsMzkgKzI1MjIsMTUgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAgKi8KIGludCBkcm1fZmJfaGVscGVy X2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGludCBicHBf c2VsKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKLQlzdHJ1 Y3QgZmJfaW5mbyAqaW5mbzsKIAlpbnQgcmV0OwogCiAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9u KQogCQlyZXR1cm4gMDsKIAogCW11dGV4X2xvY2soJmZiX2hlbHBlci0+bG9jayk7Ci0JZHJtX3Nl dHVwX2NydGNzKGZiX2hlbHBlciwKLQkJCWRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoLAotCQkJ ZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKLQlyZXQgPSBkcm1fZmJfaGVscGVyX3Npbmds ZV9mYl9wcm9iZShmYl9oZWxwZXIsIGJwcF9zZWwpOwotCW11dGV4X3VubG9jaygmZmJfaGVscGVy LT5sb2NrKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJldCA9IF9fZHJtX2ZiX2hlbHBl cl9pbml0aWFsX2NvbmZpZyhmYl9oZWxwZXIsIGJwcF9zZWwpOwogCi0JaW5mbyA9IGZiX2hlbHBl ci0+ZmJkZXY7Ci0JaW5mby0+dmFyLnBpeGNsb2NrID0gMDsKLQlyZXQgPSByZWdpc3Rlcl9mcmFt ZWJ1ZmZlcihpbmZvKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKLQotCWRldl9pbmZv KGRldi0+ZGV2LCAiZmIlZDogJXMgZnJhbWUgYnVmZmVyIGRldmljZVxuIiwKLQkJIGluZm8tPm5v ZGUsIGluZm8tPmZpeC5pZCk7Ci0KLQltdXRleF9sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2sp OwotCWlmIChsaXN0X2VtcHR5KCZrZXJuZWxfZmJfaGVscGVyX2xpc3QpKQotCQlyZWdpc3Rlcl9z eXNycV9rZXkoJ3YnLCAmc3lzcnFfZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX29wKTsKLQotCWxpc3Rf YWRkKCZmYl9oZWxwZXItPmtlcm5lbF9mYl9saXN0LCAma2VybmVsX2ZiX2hlbHBlcl9saXN0KTsK LQltdXRleF91bmxvY2soJmtlcm5lbF9mYl9oZWxwZXJfbG9jayk7Ci0KLQlyZXR1cm4gMDsKKwly ZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmln KTsKIApAQCAtMjUzOCw2ICsyNTYzLDEyIEBAIGludCBkcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZl bnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAkJcmV0dXJuIDA7CiAKIAltdXRl eF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOworCWlmIChmYl9oZWxwZXItPmRlZmVycmVkX3NldHVw KSB7CisJCWVyciA9IF9fZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhmYl9oZWxwZXIsCisJ CQkJCQkgICAgIGZiX2hlbHBlci0+cHJlZmVycmVkX2JwcCk7CisJCXJldHVybiBlcnI7CisJfQor CiAJaWYgKCFmYl9oZWxwZXItPmZiIHx8ICFkcm1fZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hlbHBl cikpIHsKIAkJZmJfaGVscGVyLT5kZWxheWVkX2hvdHBsdWcgPSB0cnVlOwogCQltdXRleF91bmxv Y2soJmZiX2hlbHBlci0+bG9jayk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVs cGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKaW5kZXggZWExNzBiOTZlODhkLi5h NWVhNmZmZGZlY2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAorKysg Yi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKQEAgLTIzMiw2ICsyMzIsMjkgQEAgc3RydWN0 IGRybV9mYl9oZWxwZXIgewogCSAqIG5lZWRzIHRvIGJlIHJlcHJvYmUgd2hlbiBmYmRldiBpcyBp biBjb250cm9sIGFnYWluLgogCSAqLwogCWJvb2wgZGVsYXllZF9ob3RwbHVnOworCisJLyoqCisJ ICogQGRlZmVycmVkX3NldHVwOgorCSAqCisJICogSWYgbm8gb3V0cHV0cyBhcmUgY29ubmVjdGVk IChkaXNjb25uZWN0ZWQgb3IgdW5rbm93bikgdGhlIEZCIGhlbHBlcgorCSAqIGNvZGUgd2lsbCBk ZWZlciBzZXR1cCB1bnRpbCBhdCBsZWFzdCBvbmUgb2YgdGhlIG91dHB1dHMgc2hvd3MgdXAuCisJ ICogVGhpcyBmaWVsZCBrZWVwcyB0cmFjayBvZiB0aGUgc3RhdHVzIHNvIHRoYXQgc2V0dXAgY2Fu IGJlIHJldHJpZWQKKwkgKiBhdCBldmVyeSBob3RwbHVnIGV2ZW50IHVudGlsIGl0IHN1Y2NlZWRz IGV2ZW50dWFsbHkuCisJICoKKwkgKiBQcm90ZWN0ZWQgYnkgQGxvY2suCisJICovCisJYm9vbCBk ZWZlcnJlZF9zZXR1cDsKKworCS8qKgorCSAqIEBwcmVmZXJyZWRfYnBwOgorCSAqCisJICogVGVt cG9yYXJ5IHN0b3JhZ2UgZm9yIHRoZSBkcml2ZXIncyBwcmVmZXJyZWQgQlBQIHNldHRpbmcgcGFz c2VkIHRvCisJICogRkIgaGVscGVyIGluaXRpYWxpemF0aW9uLiBUaGlzIG5lZWRzIHRvIGJlIHRy YWNrZWQgc28gdGhhdCBkZWZlcnJlZAorCSAqIEZCIGhlbHBlciBzZXR1cCBjYW4gcGFzcyB0aGlz IG9uLgorCSAqCisJICogU2VlIGFsc286IEBkZWZlcnJlZF9zZXR1cAorCSAqLworCWludCBwcmVm ZXJyZWRfYnBwOwogfTsKIAogLyoqCi0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=