From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 6/8] drm/mgag200: Rewrite cursor handling Date: Tue, 4 Jun 2019 17:41:59 +0200 Message-ID: <20190604154201.14460-7-tzimmermann@suse.de> References: <20190604154201.14460-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 3BCF489A5E for ; Tue, 4 Jun 2019 15:42:09 +0000 (UTC) In-Reply-To: <20190604154201.14460-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: kraxel@redhat.com, airlied@redhat.com, daniel@ffwll.ch, maarten.lankhorst@linux.intel.com, maxime.ripard@bootlin.com, sean@poorly.run, sam@ravnborg.org, christian.koenig@amd.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIGN1cnNvciBoYW5kbGluZyBpbiBtZ2FnMjAwIGlzIGNvbXBsaWNhdGVkIHRvIHVuZGVyc3Rh bmQuIEl0IHRvdWNoZXMgYQpudW1iZXIgb2YgZGlmZmVyZW50IEJPcywgYnV0IGRvZXNuJ3QgcmVh bGx5IHVzZSBhbGwgb2YgdGhlbS4KClJld3JpdGluZyB0aGUgY3Vyc29yIHVwZGF0ZSByZWR1Y2Vz IHRoZSBhbW91bnQgb2YgY3Vyc29yIHN0YXRlLiBUaGVyZSBhcmUKdHdvIEJPcyBmb3IgZG91Ymxl LWJ1ZmZlcmVkIEhXIHVwZGF0ZXMuIFRoZSBzb3VyY2UgQk8gdXBkYXRlcyB0aGUgb25lIHRoYXQK aXMgY3VycmVudGx5IG5vdCBkaXNwbGF5ZWQgYW5kIHRoZW4gc3dpdGNoZXMgYnVmZmVycy4gRXhw bGljaXQgQk8gbG9ja2luZwpoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvZGUuIEJPcyBhcmUg c2ltcGx5IHBpbm5lZCBhbmQgdW5waW5uZWQgaW4gdmlkZW8KUkFNLgoKU2lnbmVkLW9mZi1ieTog VGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3IuYyB8IDE2NSArKysrKysrKysrLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaCAgICB8ICAgMyAtCiBkcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21haW4uYyAgIHwgICA0ICstCiAzIGZpbGVzIGNo YW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDEwMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2N1cnNvci5jIGIvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9jdXJzb3IuYwppbmRleCAwNmE4YzA3NmNiMzMuLjE2NTg5NWQwMGZj YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3IuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2N1cnNvci5jCkBAIC0yMiwxMCAr MjIsOSBAQCBzdGF0aWMgdm9pZCBtZ2FfaGlkZV9jdXJzb3Ioc3RydWN0IG1nYV9kZXZpY2UgKm1k ZXYpCiB7CiAJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKIAlXUkVHOChNR0FfQ1VSUE9TWEgsIDAp OwotCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzXzEtPnBpbl9jb3VudCkKLQkJZHJtX2dlbV92cmFt X3VucGluX2xvY2tlZChtZGV2LT5jdXJzb3IucGl4ZWxzXzEpOwotCWlmIChtZGV2LT5jdXJzb3Iu cGl4ZWxzXzItPnBpbl9jb3VudCkKLQkJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChtZGV2LT5j dXJzb3IucGl4ZWxzXzIpOworCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQpCisJCWRy bV9nZW1fdnJhbV91bnBpbihtZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQpOworCW1kZXYtPmN1 cnNvci5waXhlbHNfY3VycmVudCA9IE5VTEw7CiB9CiAKIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKQEAgLTM5LDcgKzM4LDcgQEAgaW50IG1nYV9jcnRjX2N1 cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2Jq ZWN0ICpwaXhlbHNfMSA9IG1kZXYtPmN1cnNvci5waXhlbHNfMTsKIAlzdHJ1Y3QgZHJtX2dlbV92 cmFtX29iamVjdCAqcGl4ZWxzXzIgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzI7CiAJc3RydWN0IGRy bV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19jdXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc19j dXJyZW50OwotCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfcHJldiA9IG1kZXYt PmN1cnNvci5waXhlbHNfcHJldjsKKwlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxz X25leHQ7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibyA9IE5VTEw7CiAJaW50IHJldCA9IDA7CkBAIC01Miw2ICs1MSw3IEBAIGlu dCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlib29sIGZvdW5k ID0gZmFsc2U7CiAJaW50IGNvbG91cl9jb3VudCA9IDA7CiAJczY0IGdwdV9hZGRyOworCXU2NCBk c3RfZ3B1OwogCXU4IHJlZ19pbmRleDsKIAl1OCB0aGlzX3Jvd1s0OF07CiAKQEAgLTYxLDgwICs2 MSw2NiBAQCBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ CXJldHVybiAtRU5PVFNVUFA7IC8qIERpZG4ndCBhbGxvY2F0ZSBzcGFjZSBmb3IgY3Vyc29ycyAq LwogCX0KIAotCWlmICgod2lkdGggIT0gNjQgfHwgaGVpZ2h0ICE9IDY0KSAmJiBoYW5kbGUpIHsK LQkJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKLQkJV1JFRzgoTUdBX0NVUlBPU1hILCAwKTsKLQkJ cmV0dXJuIC1FSU5WQUw7CisJaWYgKFdBUk5fT04ocGl4ZWxzX2N1cnJlbnQgJiYKKwkJICAgIHBp eGVsc18xICE9IHBpeGVsc19jdXJyZW50ICYmCisJCSAgICBwaXhlbHNfMiAhPSBwaXhlbHNfY3Vy cmVudCkpIHsKKwkJcmV0dXJuIC1FTk9UU1VQUDsgLyogaW5jb25zaXN0ZW50IHN0YXRlICovCiAJ fQogCi0JQlVHX09OKHBpeGVsc18xICE9IHBpeGVsc19jdXJyZW50ICYmIHBpeGVsc18xICE9IHBp eGVsc19wcmV2KTsKLQlCVUdfT04ocGl4ZWxzXzIgIT0gcGl4ZWxzX2N1cnJlbnQgJiYgcGl4ZWxz XzIgIT0gcGl4ZWxzX3ByZXYpOwotCUJVR19PTihwaXhlbHNfY3VycmVudCA9PSBwaXhlbHNfcHJl dik7Ci0KIAlpZiAoIWhhbmRsZSB8fCAhZmlsZV9wcml2KSB7CiAJCW1nYV9oaWRlX2N1cnNvciht ZGV2KTsKIAkJcmV0dXJuIDA7CiAJfQogCi0Jb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZp bGVfcHJpdiwgaGFuZGxlKTsKLQlpZiAoIW9iaikKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQlyZXQg PSBkcm1fZ2VtX3ZyYW1fbG9jayhwaXhlbHNfMSwgdHJ1ZSk7Ci0JaWYgKHJldCkgeworCWlmICh3 aWR0aCAhPSA2NCB8fCBoZWlnaHQgIT0gNjQpIHsKIAkJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsK IAkJV1JFRzgoTUdBX0NVUlBPU1hILCAwKTsKLQkJZ290byBvdXRfdW5yZWY7Ci0JfQotCXJldCA9 IGRybV9nZW1fdnJhbV9sb2NrKHBpeGVsc18yLCB0cnVlKTsKLQlpZiAocmV0KSB7Ci0JCVdSRUc4 KE1HQV9DVVJQT1NYTCwgMCk7Ci0JCVdSRUc4KE1HQV9DVVJQT1NYSCwgMCk7Ci0JCWRybV9nZW1f dnJhbV91bmxvY2socGl4ZWxzXzEpOwotCQlnb3RvIG91dF91bmxvY2sxOworCQlyZXR1cm4gLUVJ TlZBTDsKIAl9CiAKLQkvKiBNb3ZlIGN1cnNvciBidWZmZXJzIGludG8gVlJBTSBpZiB0aGV5IGFy ZW4ndCBhbHJlYWR5ICovCi0JaWYgKCFwaXhlbHNfMS0+cGluX2NvdW50KSB7Ci0JCXJldCA9IGRy bV9nZW1fdnJhbV9waW5fbG9ja2VkKHBpeGVsc18xLAotCQkJCQkgICAgICBEUk1fR0VNX1ZSQU1f UExfRkxBR19WUkFNKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0MTsKLQkJZ3B1X2FkZHIgPSBk cm1fZ2VtX3ZyYW1fb2Zmc2V0KHBpeGVsc18xKTsKLQkJaWYgKGdwdV9hZGRyIDwgMCkgewotCQkJ ZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChwaXhlbHNfMSk7Ci0JCQlnb3RvIG91dDE7Ci0JCX0K LQkJbWRldi0+Y3Vyc29yLnBpeGVsc18xX2dwdV9hZGRyID0gZ3B1X2FkZHI7Ci0JfQotCWlmICgh cGl4ZWxzXzItPnBpbl9jb3VudCkgewotCQlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluX2xvY2tlZChw aXhlbHNfMiwKLQkJCQkJICAgICAgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfVlJBTSk7Ci0JCWlmIChy ZXQpIHsKLQkJCWRybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQocGl4ZWxzXzEpOwotCQkJZ290byBv dXQxOwotCQl9Ci0JCWdwdV9hZGRyID0gZHJtX2dlbV92cmFtX29mZnNldChwaXhlbHNfMik7Ci0J CWlmIChncHVfYWRkciA8IDApIHsKLQkJCWRybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQocGl4ZWxz XzEpOwotCQkJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChwaXhlbHNfMik7Ci0JCQlnb3RvIG91 dDE7Ci0JCX0KLQkJbWRldi0+Y3Vyc29yLnBpeGVsc18yX2dwdV9hZGRyID0gZ3B1X2FkZHI7Ci0J fQorCWlmIChwaXhlbHNfY3VycmVudCA9PSBwaXhlbHNfMSkKKwkJcGl4ZWxzX25leHQgPSBwaXhl bHNfMjsKKwllbHNlCisJCXBpeGVsc19uZXh0ID0gcGl4ZWxzXzE7CiAKKwlvYmogPSBkcm1fZ2Vt X29iamVjdF9sb29rdXAoZmlsZV9wcml2LCBoYW5kbGUpOworCWlmICghb2JqKQorCQlyZXR1cm4g LUVOT0VOVDsKIAlnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKG9iaik7Ci0JcmV0ID0gZHJtX2dl bV92cmFtX2xvY2soZ2JvLCB0cnVlKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdibywgRFJN X0dFTV9WUkFNX1BMX0ZMQUdfU1lTVEVNKTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoJmRldi0+ cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGxvY2sgdXNlciBib1xuIik7Ci0JCWdvdG8gb3V0MTsKKwkJ Z290byBlcnJfZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkOwogCX0KIAlzcmMgPSBkcm1fZ2Vt X3ZyYW1fa21hcChnYm8sIHRydWUsIE5VTEwpOwogCWlmIChJU19FUlIoc3JjKSkgewogCQlyZXQg PSBQVFJfRVJSKHNyYyk7Ci0JCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGtt YXAgdXNlciBidWZmZXIgdXBkYXRlc1xuIik7Ci0JCWdvdG8gb3V0MjsKKwkJZGV2X2VycigmZGV2 LT5wZGV2LT5kZXYsCisJCQkiZmFpbGVkIHRvIGttYXAgdXNlciBidWZmZXIgdXBkYXRlc1xuIik7 CisJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV91bnBpbl9zcmM7CisJfQorCisJLyogUGluIGFuZCBt YXAgdXAtY29taW5nIGJ1ZmZlciB0byB3cml0ZSBjb2xvdXIgaW5kaWNlcyAqLworCXJldCA9IGRy bV9nZW1fdnJhbV9waW4ocGl4ZWxzX25leHQsIERSTV9HRU1fVlJBTV9QTF9GTEFHX1ZSQU0pOwor CWlmIChyZXQpCisJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LAorCQkJImZhaWxlZCB0byBwaW4g Y3Vyc29yIGJ1ZmZlcjogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV9rdW5t YXBfc3JjOworCWRzdCA9IGRybV9nZW1fdnJhbV9rbWFwKHBpeGVsc19uZXh0LCB0cnVlLCBOVUxM KTsKKwlpZiAoSVNfRVJSKGRzdCkpIHsKKwkJcmV0ID0gUFRSX0VSUihkc3QpOworCQlkZXZfZXJy KCZkZXYtPnBkZXYtPmRldiwKKwkJCSJmYWlsZWQgdG8ga21hcCBjdXJzb3IgdXBkYXRlczogJWRc biIsIHJldCk7CisJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV91bnBpbl9kc3Q7CisJfQorCWdwdV9h ZGRyID0gZHJtX2dlbV92cmFtX29mZnNldChwaXhlbHNfMik7CisJaWYgKGdwdV9hZGRyIDwgMCkg eworCQlyZXQgPSAoaW50KWdwdV9hZGRyOworCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwKKwkJ CSJmYWlsZWQgdG8gZ2V0IGN1cnNvciBzY2Fub3V0IGFkZHJlc3M6ICVkXG4iLCByZXQpOworCQln b3RvIGVycl9kcm1fZ2VtX3ZyYW1fa3VubWFwX2RzdDsKIAl9CisJZHN0X2dwdSA9ICh1NjQpZ3B1 X2FkZHI7CiAKIAltZW1zZXQoJmNvbG91cl9zZXRbMF0sIDAsIHNpemVvZih1aW50MzJfdCkqMTYp OwogCS8qIHdpZHRoKmhlaWdodCo0ID0gMTYzODQgKi8KQEAgLTE0OSw3ICsxMzUsNyBAQCBpbnQg bWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJd2Fybl90cmFu c3BhcmVudCA9IGZhbHNlOyAvKiBPbmx5IHRlbGwgdGhlIHVzZXIgb25jZS4gKi8KIAkJCX0KIAkJ CXJldCA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDM7CisJCQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1f a3VubWFwX2RzdDsKIAkJfQogCQkvKiBEb24ndCBuZWVkIHRvIHN0b3JlIHRyYW5zcGFyZW50IHBp eGVscyBhcyBjb2xvdXJzICovCiAJCWlmICh0aGlzX2NvbG91cj4+MjQgPT0gMHgwKQpAQCAtMTcx LDcgKzE1Nyw3IEBAIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAkJCQl3YXJuX3BhbGV0dGUgPSBmYWxzZTsgLyogT25seSB0ZWxsIHRoZSB1c2VyIG9uY2Uu ICovCiAJCQl9CiAJCQlyZXQgPSAtRUlOVkFMOwotCQkJZ290byBvdXQzOworCQkJZ290byBlcnJf ZHJtX2dlbV92cmFtX2t1bm1hcF9kc3Q7CiAJCX0KIAkJKm5leHRfc3BhY2UgPSB0aGlzX2NvbG91 cjsKIAkJbmV4dF9zcGFjZSsrOwpAQCAtMTkwLDE0ICsxNzYsNiBAQCBpbnQgbWdhX2NydGNfY3Vy c29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCUJVR19PTigoY29sb3VyX3NldFtpXT4+ MjQgJiAweGZmKSAhPSAweGZmKTsKIAl9CiAKLQkvKiBNYXAgdXAtY29taW5nIGJ1ZmZlciB0byB3 cml0ZSBjb2xvdXIgaW5kaWNlcyAqLwotCWRzdCA9IGRybV9nZW1fdnJhbV9rbWFwKHBpeGVsc19w cmV2LCB0cnVlLCBOVUxMKTsKLQlpZiAoSVNfRVJSKGRzdCkpIHsKLQkJcmV0ID0gUFRSX0VSUihk c3QpOwotCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgImZhaWxlZCB0byBrbWFwIGN1cnNvciB1 cGRhdGVzXG4iKTsKLQkJZ290byBvdXQzOwotCX0KLQogCS8qIG5vdyB3cml0ZSBjb2xvdXIgaW5k aWNlcyBpbnRvIGhhcmR3YXJlIGN1cnNvciBidWZmZXIgKi8KIAlmb3IgKHJvdyA9IDA7IHJvdyA8 IDY0OyByb3crKykgewogCQltZW1zZXQoJnRoaXNfcm93WzBdLCAwLCA0OCk7CkBAIC0yMjQsNDIg KzIwMiwzNSBAQCBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJfQogCiAJLyogUHJvZ3JhbSBncHUgYWRkcmVzcyBvZiBjdXJzb3IgYnVmZmVyICovCi0JaWYg KHBpeGVsc19wcmV2ID09IHBpeGVsc18xKQotCQlncHVfYWRkciA9IG1kZXYtPmN1cnNvci5waXhl bHNfMV9ncHVfYWRkcjsKLQllbHNlCi0JCWdwdV9hZGRyID0gbWRldi0+Y3Vyc29yLnBpeGVsc18y X2dwdV9hZGRyOwotCVdSRUdfREFDKE1HQTEwNjRfQ1VSU09SX0JBU0VfQURSX0xPVywgKHU4KSgo Z3B1X2FkZHI+PjEwKSAmIDB4ZmYpKTsKLQlXUkVHX0RBQyhNR0ExMDY0X0NVUlNPUl9CQVNFX0FE Ul9ISSwgKHU4KSgoZ3B1X2FkZHI+PjE4KSAmIDB4M2YpKTsKKwlXUkVHX0RBQyhNR0ExMDY0X0NV UlNPUl9CQVNFX0FEUl9MT1csICh1OCkoKGRzdF9ncHU+PjEwKSAmIDB4ZmYpKTsKKwlXUkVHX0RB QyhNR0ExMDY0X0NVUlNPUl9CQVNFX0FEUl9ISSwgKHU4KSgoZHN0X2dwdT4+MTgpICYgMHgzZikp OwogCiAJLyogQWRqdXN0IGN1cnNvciBjb250cm9sIHJlZ2lzdGVyIHRvIHR1cm4gb24gdGhlIGN1 cnNvciAqLwogCVdSRUdfREFDKE1HQTEwNjRfQ1VSU09SX0NUTCwgNCk7IC8qIDE2LWNvbG91ciBw YWxsZXRpemVkIGN1cnNvciBtb2RlICovCiAKLQkvKiBOb3cgc3dhcCBpbnRlcm5hbCBidWZmZXIg cG9pbnRlcnMgKi8KLQlpZiAobWRldi0+Y3Vyc29yLnBpeGVsc18xID09IG1kZXYtPmN1cnNvci5w aXhlbHNfcHJldikgewotCQltZGV2LT5jdXJzb3IucGl4ZWxzX3ByZXYgPSBtZGV2LT5jdXJzb3Iu cGl4ZWxzXzI7Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IG1kZXYtPmN1cnNvci5w aXhlbHNfMTsKLQl9IGVsc2UgaWYgKG1kZXYtPmN1cnNvci5waXhlbHNfMSA9PSBtZGV2LT5jdXJz b3IucGl4ZWxzX2N1cnJlbnQpIHsKLQkJbWRldi0+Y3Vyc29yLnBpeGVsc19wcmV2ID0gbWRldi0+ Y3Vyc29yLnBpeGVsc18xOwotCQltZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQgPSBtZGV2LT5j dXJzb3IucGl4ZWxzXzI7Ci0JfSBlbHNlIHsKLQkJQlVHKCk7Ci0JfQotCXJldCA9IDA7CisJLyog Tm93IHVwZGF0ZSBpbnRlcm5hbCBidWZmZXIgcG9pbnRlcnMgKi8KKwlpZiAocGl4ZWxzX2N1cnJl bnQpCisJCWRybV9nZW1fdnJhbV91bnBpbihwaXhlbHNfY3VycmVudCk7CisJbWRldi0+Y3Vyc29y LnBpeGVsc19jdXJyZW50ID0gcGl4ZWxzX25leHQ7CiAKLQlkcm1fZ2VtX3ZyYW1fa3VubWFwKHBp eGVsc19wcmV2KTsKLSBvdXQzOgorCWRybV9nZW1fdnJhbV9rdW5tYXAocGl4ZWxzX25leHQpOwor CWRybV9nZW1fdnJhbV91bnBpbihwaXhlbHNfbmV4dCk7CiAJZHJtX2dlbV92cmFtX2t1bm1hcChn Ym8pOwotIG91dDI6Ci0JZHJtX2dlbV92cmFtX3VubG9jayhnYm8pOwotIG91dDE6Ci0JaWYgKHJl dCkKLQkJbWdhX2hpZGVfY3Vyc29yKG1kZXYpOwotCWRybV9nZW1fdnJhbV91bmxvY2socGl4ZWxz XzEpOwotb3V0X3VubG9jazE6Ci0JZHJtX2dlbV92cmFtX3VubG9jayhwaXhlbHNfMik7Ci1vdXRf dW5yZWY6CisJZHJtX2dlbV92cmFtX3VucGluKGdibyk7CiAJZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkKG9iaik7CiAKKwlyZXR1cm4gMDsKKworZXJyX2RybV9nZW1fdnJhbV9rdW5tYXBfZHN0 OgorCWRybV9nZW1fdnJhbV9rdW5tYXAocGl4ZWxzX25leHQpOworZXJyX2RybV9nZW1fdnJhbV91 bnBpbl9kc3Q6CisJZHJtX2dlbV92cmFtX3VucGluKHBpeGVsc19uZXh0KTsKK2Vycl9kcm1fZ2Vt X3ZyYW1fa3VubWFwX3NyYzoKKwlkcm1fZ2VtX3ZyYW1fa3VubWFwKGdibyk7CitlcnJfZHJtX2dl bV92cmFtX3VucGluX3NyYzoKKwlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKK2Vycl9kcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQ6CisJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7 CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAv bWdhZzIwMF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmgKaW5k ZXggNjE4MGFjYmNhN2NhLi5kMzlmMmE1NjdiM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9kcnYuaApAQCAtMTU4LDExICsxNTgsOCBAQCBzdHJ1Y3QgbWdhX2N1cnNvciB7CiAJKi8K IAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzXzE7CiAJc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKnBpeGVsc18yOwotCXU2NCBwaXhlbHNfMV9ncHVfYWRkciwgcGl4ZWxzXzJf Z3B1X2FkZHI7CiAJLyogVGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgaWNvbiwgdGhpcyBwb2ludHMg dG8gb25lIG9mIHBpeGVsc18xLCBvciBwaXhlbHNfMiAqLwogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1f b2JqZWN0ICpwaXhlbHNfY3VycmVudDsKLQkvKiBUaGUgcHJldmlvdXNseSBkaXNwbGF5ZWQgaWNv biAqLwotCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfcHJldjsKIH07CiAKIHN0 cnVjdCBtZ2FfbWMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIw MF9tYWluLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21haW4uYwppbmRleCBm MzY4N2ZlZDQwNzUuLjBkN2ZjMDBlNWQ4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21n YWcyMDAvbWdhZzIwMF9tYWluLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIw MF9tYWluLmMKQEAgLTI0MSwxMCArMjQxLDggQEAgaW50IG1nYWcyMDBfZHJpdmVyX2xvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAkJbWRldi0+Y3Vyc29y LnBpeGVsc18yID0gTlVMTDsKIAkJZGV2X3dhcm4oJmRldi0+cGRldi0+ZGV2LAogCQkJIkNvdWxk IG5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgY3Vyc29ycy4gTm90IGRvaW5nIGhhcmR3YXJlIGN1cnNv cnMuXG4iKTsKLQl9IGVsc2UgewotCQltZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQgPSBtZGV2 LT5jdXJzb3IucGl4ZWxzXzE7Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfcHJldiA9IG1kZXYtPmN1 cnNvci5waXhlbHNfMjsKIAl9CisJbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50ID0gTlVMTDsK IAogCXJldHVybiAwOwogCi0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA==