From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 7/7] drm/udl: Move udl_handle_damage() into udl_modeset.c Date: Tue, 26 Nov 2019 14:47:07 +0100 Message-ID: <20191126134707.22385-8-tzimmermann@suse.de> References: <20191126134707.22385-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5008D6E3F0 for ; Tue, 26 Nov 2019 13:47:13 +0000 (UTC) In-Reply-To: <20191126134707.22385-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@redhat.com, daniel@ffwll.ch, sam@ravnborg.org, kraxel@redhat.com, emil.velikov@collabora.com, noralf@tronnes.org, zboszor@pr.hu Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIG9ubHkgY2FsbGVyIG9mIHVkbF9oYW5kbGVfZGFtYWdlKCkgaW4gdGhlIHBsYW5lLXVwZGF0 ZSBmdW5jdGlvbgppbiB1ZGxfbW9kZXNldC5jLiBNb3ZlIHVkbF9oYW5kbGVfZGFtYWdlKCkgdGhl cmUsIG1ha2UgaXQgc3RhdGljLCBhbmQKcmVtb3ZlIHNldmVyYWwgbGVmdC1vdmVyIG1hY3Jvcy4K ClNpZ25lZC1vZmYtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgot LS0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvTWFrZWZpbGUgICAgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL3VkbC91ZGxfZHJ2LmggICAgIHwgICAzIC0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRs X2ZiLmMgICAgICB8IDE0MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYyB8ICA4OCArKysrKysrKysrKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTQ2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2ZiLmMKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdWRsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3VkbC9NYWtlZmlsZQpp bmRleCAxNzdjZTc0ZjRjZjQuLmI1MDE3OWJiNGRlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3VkbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL01ha2VmaWxlCkBAIC0x LDQgKzEsNCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci11ZGwt eSA6PSB1ZGxfZHJ2Lm8gdWRsX21vZGVzZXQubyB1ZGxfY29ubmVjdG9yLm8gdWRsX21haW4ubyB1 ZGxfZmIubyB1ZGxfdHJhbnNmZXIubyB1ZGxfZ2VtLm8KK3VkbC15IDo9IHVkbF9kcnYubyB1ZGxf bW9kZXNldC5vIHVkbF9jb25uZWN0b3IubyB1ZGxfbWFpbi5vIHVkbF90cmFuc2Zlci5vIHVkbF9n ZW0ubwogCiBvYmotJChDT05GSUdfRFJNX1VETCkgOj0gdWRsLm8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZHJ2LmgK aW5kZXggZTU0MGY4ZTY0YWExLi5hYjYyYTZhZWNkMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5oCkBA IC05Myw5ICs5Myw2IEBAIGludCB1ZGxfcmVuZGVyX2hsaW5lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBsb2dfYnBwLCBzdHJ1Y3QgdXJiICoqdXJiX3B0ciwKIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqdWRsX2RyaXZlcl9nZW1fY3JlYXRlX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJCQkJICAgIHNpemVfdCBzaXplKTsKIAotaW50IHVkbF9oYW5kbGVfZGFtYWdlKHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHksCi0JCSAgICAgIGludCB3aWR0aCwg aW50IGhlaWdodCk7Ci0KIGludCB1ZGxfZHJvcF91c2Ioc3RydWN0IGRybV9kZXZpY2UgKmRldik7 CiAKICNkZWZpbmUgQ01EX1dSSVRFX1JBVzggICAiXHhBRlx4NjAiIC8qKjwgOCBiaXQgcmF3IHdy aXRlIGNvbW1hbmQuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9mYi5j IGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggM2Q4Y2Y2NzRkZmE1Li4wMDAwMDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfZmIuYworKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJl ZCBIYXQKLSAqCi0gKiBiYXNlZCBpbiBwYXJ0cyBvbiB1ZGxmYi5jOgotICogQ29weXJpZ2h0IChD KSAyMDA5IFJvYmVydG8gRGUgSW9yaXMgPHJvYmVydG9AdW5iaXQuaXQ+Ci0gKiBDb3B5cmlnaHQg KEMpIDIwMDkgSmF5YSBLdW1hciA8amF5YWt1bWFyLmxrbWxAZ21haWwuY29tPgotICogQ29weXJp Z2h0IChDKSAyMDA5IEJlcm5pZSBUaG9tcHNvbiA8YmVybmllQHBsdWdhYmxlLmNvbT4KLSAqLwot Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KLQotI2luY2x1ZGUgPGRybS9kcm1fZm91 cmNjLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmg+Ci0KLSNpbmNsdWRl ICJ1ZGxfZHJ2LmgiCi0KLSNkZWZpbmUgRExfQUxJR05fVVAoeCwgYSkgQUxJR04oeCwgYSkKLSNk ZWZpbmUgRExfQUxJR05fRE9XTih4LCBhKSBBTElHTl9ET1dOKHgsIGEpCi0KLS8qKiBSZWFkIHRo ZSByZWQgY29tcG9uZW50ICgwLi4yNTUpIG9mIGEgMzIgYnBwIGNvbG91ci4gKi8KLSNkZWZpbmUg RExPX1JHQl9HRVRSRUQoY29sKSAodWludDhfdCkoKGNvbCkgJiAweEZGKQotCi0vKiogUmVhZCB0 aGUgZ3JlZW4gY29tcG9uZW50ICgwLi4yNTUpIG9mIGEgMzIgYnBwIGNvbG91ci4gKi8KLSNkZWZp bmUgRExPX1JHQl9HRVRHUk4oY29sKSAodWludDhfdCkoKChjb2wpID4+IDgpICYgMHhGRikKLQot LyoqIFJlYWQgdGhlIGJsdWUgY29tcG9uZW50ICgwLi4yNTUpIG9mIGEgMzIgYnBwIGNvbG91ci4g Ki8KLSNkZWZpbmUgRExPX1JHQl9HRVRCTFUoY29sKSAodWludDhfdCkoKChjb2wpID4+IDE2KSAm IDB4RkYpCi0KLS8qKiBSZXR1cm4gcmVkL2dyZWVuIGNvbXBvbmVudCBvZiBhIDE2IGJwcCBjb2xv dXIgbnVtYmVyLiAqLwotI2RlZmluZSBETE9fUkcxNihyZWQsIGdybikgKHVpbnQ4X3QpKCgoKHJl ZCkgJiAweEY4KSB8ICgoZ3JuKSA+PiA1KSkgJiAweEZGKQotCi0vKiogUmV0dXJuIGdyZWVuL2Js dWUgY29tcG9uZW50IG9mIGEgMTYgYnBwIGNvbG91ciBudW1iZXIuICovCi0jZGVmaW5lIERMT19H QjE2KGdybiwgYmx1KSAodWludDhfdCkoKCgoKGdybikgJiAweDFDKSA8PCAzKSB8ICgoYmx1KSA+ PiAzKSkgJiAweEZGKQotCi0vKiogUmV0dXJuIDggYnBwIGNvbG91ciBudW1iZXIgZnJvbSByZWQs IGdyZWVuIGFuZCBibHVlIGNvbXBvbmVudHMuICovCi0jZGVmaW5lIERMT19SR0I4KHJlZCwgZ3Ju LCBibHUpICgoKChyZWQpIDw8IDUpIHwgKCgoZ3JuKSAmIDMpIDw8IDMpIHwgKChibHUpICYgNykp ICYgMHhGRikKLQotI2lmIDAKLXN0YXRpYyB1aW50OF90IHJnYjgodWludDMyX3QgY29sKQotewot CXVpbnQ4X3QgcmVkID0gRExPX1JHQl9HRVRSRUQoY29sKTsKLQl1aW50OF90IGdybiA9IERMT19S R0JfR0VUR1JOKGNvbCk7Ci0JdWludDhfdCBibHUgPSBETE9fUkdCX0dFVEJMVShjb2wpOwotCi0J cmV0dXJuIERMT19SR0I4KHJlZCwgZ3JuLCBibHUpOwotfQotCi1zdGF0aWMgdWludDE2X3Qgcmdi MTYodWludDMyX3QgY29sKQotewotCXVpbnQ4X3QgcmVkID0gRExPX1JHQl9HRVRSRUQoY29sKTsK LQl1aW50OF90IGdybiA9IERMT19SR0JfR0VUR1JOKGNvbCk7Ci0JdWludDhfdCBibHUgPSBETE9f UkdCX0dFVEJMVShjb2wpOwotCi0JcmV0dXJuIChETE9fUkcxNihyZWQsIGdybikgPDwgOCkgKyBE TE9fR0IxNihncm4sIGJsdSk7Ci19Ci0jZW5kaWYKLQotaW50IHVkbF9oYW5kbGVfZGFtYWdlKHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHksCi0JCSAgICAgIGludCB3aWR0 aCwgaW50IGhlaWdodCkKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmItPmRldjsKLQlz dHJ1Y3QgdWRsX2RldmljZSAqdWRsID0gdG9fdWRsKGRldik7Ci0JaW50IGksIHJldDsKLQljaGFy ICpjbWQ7Ci0JY3ljbGVzX3Qgc3RhcnRfY3ljbGVzLCBlbmRfY3ljbGVzOwotCWludCBieXRlc19z ZW50ID0gMDsKLQlpbnQgYnl0ZXNfaWRlbnRpY2FsID0gMDsKLQlzdHJ1Y3QgdXJiICp1cmI7Ci0J aW50IGFsaWduZWRfeDsKLQlpbnQgbG9nX2JwcDsKLQl2b2lkICp2YWRkcjsKLQotCWlmIChXQVJO X09OKCFpc19wb3dlcl9vZl8yKGZiLT5mb3JtYXQtPmNwcFswXSkpKQotCQlyZXR1cm4gLUVJTlZB TDsKLQotCWxvZ19icHAgPSBfX2ZmcyhmYi0+Zm9ybWF0LT5jcHBbMF0pOwotCi0JdmFkZHIgPSBk cm1fZ2VtX3NobWVtX3ZtYXAoZmItPm9ialswXSk7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gdm1hcCBmYlxuIik7Ci0JCXJldHVybiAwOwotCX0KLQotCWFs aWduZWRfeCA9IERMX0FMSUdOX0RPV04oeCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKLQl3aWR0 aCA9IERMX0FMSUdOX1VQKHdpZHRoICsgKHgtYWxpZ25lZF94KSwgc2l6ZW9mKHVuc2lnbmVkIGxv bmcpKTsKLQl4ID0gYWxpZ25lZF94OwotCi0JaWYgKCh3aWR0aCA8PSAwKSB8fAotCSAgICAoeCAr IHdpZHRoID4gZmItPndpZHRoKSB8fAotCSAgICAoeSArIGhlaWdodCA+IGZiLT5oZWlnaHQpKSB7 Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gZXJyX2RybV9nZW1fc2htZW1fdnVubWFwOwotCX0K LQotCXN0YXJ0X2N5Y2xlcyA9IGdldF9jeWNsZXMoKTsKLQotCXVyYiA9IHVkbF9nZXRfdXJiKGRl dik7Ci0JaWYgKCF1cmIpCi0JCWdvdG8gb3V0OwotCWNtZCA9IHVyYi0+dHJhbnNmZXJfYnVmZmVy OwotCi0JZm9yIChpID0geTsgaSA8IHkgKyBoZWlnaHQgOyBpKyspIHsKLQkJY29uc3QgaW50IGxp bmVfb2Zmc2V0ID0gZmItPnBpdGNoZXNbMF0gKiBpOwotCQljb25zdCBpbnQgYnl0ZV9vZmZzZXQg PSBsaW5lX29mZnNldCArICh4IDw8IGxvZ19icHApOwotCQljb25zdCBpbnQgZGV2X2J5dGVfb2Zm c2V0ID0gKGZiLT53aWR0aCAqIGkgKyB4KSA8PCBsb2dfYnBwOwotCQlpZiAodWRsX3JlbmRlcl9o bGluZShkZXYsIGxvZ19icHAsICZ1cmIsIChjaGFyICopdmFkZHIsCi0JCQkJICAgICAmY21kLCBi eXRlX29mZnNldCwgZGV2X2J5dGVfb2Zmc2V0LAotCQkJCSAgICAgd2lkdGggPDwgbG9nX2JwcCwK LQkJCQkgICAgICZieXRlc19pZGVudGljYWwsICZieXRlc19zZW50KSkKLQkJCWdvdG8gZXJyb3I7 Ci0JfQotCi0JaWYgKGNtZCA+IChjaGFyICopIHVyYi0+dHJhbnNmZXJfYnVmZmVyKSB7Ci0JCS8q IFNlbmQgcGFydGlhbCBidWZmZXIgcmVtYWluaW5nIGJlZm9yZSBleGl0aW5nICovCi0JCWludCBs ZW47Ci0JCWlmIChjbWQgPCAoY2hhciAqKSB1cmItPnRyYW5zZmVyX2J1ZmZlciArIHVyYi0+dHJh bnNmZXJfYnVmZmVyX2xlbmd0aCkKLQkJCSpjbWQrKyA9IDB4QUY7Ci0JCWxlbiA9IGNtZCAtIChj aGFyICopIHVyYi0+dHJhbnNmZXJfYnVmZmVyOwotCQlyZXQgPSB1ZGxfc3VibWl0X3VyYihkZXYs IHVyYiwgbGVuKTsKLQkJYnl0ZXNfc2VudCArPSBsZW47Ci0JfSBlbHNlCi0JCXVkbF91cmJfY29t cGxldGlvbih1cmIpOwotCi1lcnJvcjoKLQlhdG9taWNfYWRkKGJ5dGVzX3NlbnQsICZ1ZGwtPmJ5 dGVzX3NlbnQpOwotCWF0b21pY19hZGQoYnl0ZXNfaWRlbnRpY2FsLCAmdWRsLT5ieXRlc19pZGVu dGljYWwpOwotCWF0b21pY19hZGQoKHdpZHRoICogaGVpZ2h0KSA8PCBsb2dfYnBwLCAmdWRsLT5i eXRlc19yZW5kZXJlZCk7Ci0JZW5kX2N5Y2xlcyA9IGdldF9jeWNsZXMoKTsKLQlhdG9taWNfYWRk KCgodW5zaWduZWQgaW50KSAoKGVuZF9jeWNsZXMgLSBzdGFydF9jeWNsZXMpCi0JCSAgICA+PiAx MCkpLCAvKiBLY3ljbGVzICovCi0JCSAgICZ1ZGwtPmNwdV9rY3ljbGVzX3VzZWQpOwotCi1vdXQ6 Ci0JZHJtX2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgdmFkZHIpOwotCi0JcmV0dXJuIDA7 Ci0KLWVycl9kcm1fZ2VtX3NobWVtX3Z1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+ b2JqWzBdLCB2YWRkcik7Ci0JcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQu YwppbmRleCA4M2U4MDA4M2UwYjIuLjcxMDdjOTA2NzJhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21v ZGVzZXQuYwpAQCAtMTIsNyArMTIsOSBAQAogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBl ci5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJt X2RhbWFnZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgogI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X3NobWVtX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxl cy5oPgogI2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rLmg+CiAKQEAgLTI4Miw2ICsyODQsOTIgQEAg c3RhdGljIHZvaWQgdWRsX2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2Rl KQogCiB9CiAKK3N0YXRpYyBpbnQgdWRsX2hhbmRsZV9kYW1hZ2Uoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCB4LCBpbnQgeSwKKwkJCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor eworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYi0+ZGV2OworCXN0cnVjdCB1ZGxfZGV2aWNl ICp1ZGwgPSB0b191ZGwoZGV2KTsKKwlpbnQgaSwgcmV0OworCWNoYXIgKmNtZDsKKwljeWNsZXNf dCBzdGFydF9jeWNsZXMsIGVuZF9jeWNsZXM7CisJaW50IGJ5dGVzX3NlbnQgPSAwOworCWludCBi eXRlc19pZGVudGljYWwgPSAwOworCXN0cnVjdCB1cmIgKnVyYjsKKwlpbnQgYWxpZ25lZF94Owor CWludCBsb2dfYnBwOworCXZvaWQgKnZhZGRyOworCisJaWYgKFdBUk5fT04oIWlzX3Bvd2VyX29m XzIoZmItPmZvcm1hdC0+Y3BwWzBdKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJbG9nX2JwcCA9 IF9fZmZzKGZiLT5mb3JtYXQtPmNwcFswXSk7CisKKwl2YWRkciA9IGRybV9nZW1fc2htZW1fdm1h cChmYi0+b2JqWzBdKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlEUk1fRVJST1IoImZhaWxl ZCB0byB2bWFwIGZiXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJYWxpZ25lZF94ID0gQUxJR05f RE9XTih4LCBzaXplb2YodW5zaWduZWQgbG9uZykpOworCXdpZHRoID0gQUxJR04od2lkdGggKyAo eC1hbGlnbmVkX3gpLCBzaXplb2YodW5zaWduZWQgbG9uZykpOworCXggPSBhbGlnbmVkX3g7CisK KwlpZiAoKHdpZHRoIDw9IDApIHx8CisJICAgICh4ICsgd2lkdGggPiBmYi0+d2lkdGgpIHx8CisJ ICAgICh5ICsgaGVpZ2h0ID4gZmItPmhlaWdodCkpIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290 byBlcnJfZHJtX2dlbV9zaG1lbV92dW5tYXA7CisJfQorCisJc3RhcnRfY3ljbGVzID0gZ2V0X2N5 Y2xlcygpOworCisJdXJiID0gdWRsX2dldF91cmIoZGV2KTsKKwlpZiAoIXVyYikKKwkJZ290byBv dXQ7CisJY21kID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CisKKwlmb3IgKGkgPSB5OyBpIDwgeSAr IGhlaWdodCA7IGkrKykgeworCQljb25zdCBpbnQgbGluZV9vZmZzZXQgPSBmYi0+cGl0Y2hlc1sw XSAqIGk7CisJCWNvbnN0IGludCBieXRlX29mZnNldCA9IGxpbmVfb2Zmc2V0ICsgKHggPDwgbG9n X2JwcCk7CisJCWNvbnN0IGludCBkZXZfYnl0ZV9vZmZzZXQgPSAoZmItPndpZHRoICogaSArIHgp IDw8IGxvZ19icHA7CisKKwkJaWYgKHVkbF9yZW5kZXJfaGxpbmUoZGV2LCBsb2dfYnBwLCAmdXJi LCAoY2hhciAqKXZhZGRyLAorCQkJCSAgICAgJmNtZCwgYnl0ZV9vZmZzZXQsIGRldl9ieXRlX29m ZnNldCwKKwkJCQkgICAgIHdpZHRoIDw8IGxvZ19icHAsCisJCQkJICAgICAmYnl0ZXNfaWRlbnRp Y2FsLCAmYnl0ZXNfc2VudCkpCisJCQlnb3RvIGVycm9yOworCX0KKworCWlmIChjbWQgPiAoY2hh ciAqKSB1cmItPnRyYW5zZmVyX2J1ZmZlcikgeworCQkvKiBTZW5kIHBhcnRpYWwgYnVmZmVyIHJl bWFpbmluZyBiZWZvcmUgZXhpdGluZyAqLworCQlpbnQgbGVuOworCQlpZiAoY21kIDwgKGNoYXIg KikgdXJiLT50cmFuc2Zlcl9idWZmZXIgKyB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgpCisJ CQkqY21kKysgPSAweEFGOworCQlsZW4gPSBjbWQgLSAoY2hhciAqKSB1cmItPnRyYW5zZmVyX2J1 ZmZlcjsKKwkJcmV0ID0gdWRsX3N1Ym1pdF91cmIoZGV2LCB1cmIsIGxlbik7CisJCWJ5dGVzX3Nl bnQgKz0gbGVuOworCX0gZWxzZQorCQl1ZGxfdXJiX2NvbXBsZXRpb24odXJiKTsKKworZXJyb3I6 CisJYXRvbWljX2FkZChieXRlc19zZW50LCAmdWRsLT5ieXRlc19zZW50KTsKKwlhdG9taWNfYWRk KGJ5dGVzX2lkZW50aWNhbCwgJnVkbC0+Ynl0ZXNfaWRlbnRpY2FsKTsKKwlhdG9taWNfYWRkKCh3 aWR0aCAqIGhlaWdodCkgPDwgbG9nX2JwcCwgJnVkbC0+Ynl0ZXNfcmVuZGVyZWQpOworCWVuZF9j eWNsZXMgPSBnZXRfY3ljbGVzKCk7CisJYXRvbWljX2FkZCgoKHVuc2lnbmVkIGludCkgKChlbmRf Y3ljbGVzIC0gc3RhcnRfY3ljbGVzKQorCQkgICAgPj4gMTApKSwgLyogS2N5Y2xlcyAqLworCQkg ICAmdWRsLT5jcHVfa2N5Y2xlc191c2VkKTsKKworb3V0OgorCWRybV9nZW1fc2htZW1fdnVubWFw KGZiLT5vYmpbMF0sIHZhZGRyKTsKKworCXJldHVybiAwOworCitlcnJfZHJtX2dlbV9zaG1lbV92 dW5tYXA6CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgdmFkZHIpOworCXJldHVy biByZXQ7Cit9CisKIC8qCiAgKiBTaW1wbGUgZGlzcGxheSBwaXBlbGluZQogICovCi0tIAoyLjIz LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==