From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v3 7/9] drm/mgag200: Rewrite cursor handling Date: Thu, 13 Jun 2019 09:30:39 +0200 Message-ID: <20190613073041.29350-8-tzimmermann@suse.de> References: <20190613073041.29350-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 137DF8970E for ; Thu, 13 Jun 2019 07:30:53 +0000 (UTC) In-Reply-To: <20190613073041.29350-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, dri-devel@lists.freedesktop.org Cc: Thomas Zimmermann List-Id: dri-devel@lists.freedesktop.org VGhlIGN1cnNvciBoYW5kbGluZyBpbiBtZ2FnMjAwIGlzIGNvbXBsaWNhdGVkIHRvIHVuZGVyc3Rh bmQuIEl0IHRvdWNoZXMgYQpudW1iZXIgb2YgZGlmZmVyZW50IEJPcywgYnV0IGRvZXNuJ3QgcmVh bGx5IHVzZSBhbGwgb2YgdGhlbS4KClJld3JpdGluZyB0aGUgY3Vyc29yIHVwZGF0ZSByZWR1Y2Vz IHRoZSBhbW91bnQgb2YgY3Vyc29yIHN0YXRlLiBUaGVyZSBhcmUKdHdvIEJPcyBmb3IgZG91Ymxl LWJ1ZmZlcmVkIEhXIHVwZGF0ZXMuIFRoZSBzb3VyY2UgQk8gdXBkYXRlcyB0aGUgb25lIHRoYXQK aXMgY3VycmVudGx5IG5vdCBkaXNwbGF5ZWQgYW5kIHRoZW4gc3dpdGNoZXMgYnVmZmVycy4gRXhw bGljaXQgQk8gbG9ja2luZwpoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvZGUuIEJPcyBhcmUg c2ltcGx5IHBpbm5lZCBhbmQgdW5waW5uZWQgaW4gdmlkZW8KUkFNLgoKdjI6CgkqIHBpbiBjdXJz b3IgQk9zIHRvIGN1cnJlbnQgbG9jYXRpb24KClNpZ25lZC1vZmYtYnk6IFRob21hcyBaaW1tZXJt YW5uIDx0emltbWVybWFubkBzdXNlLmRlPgpBY2tlZC1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVs QHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3Iu YyB8IDE2NSArKysrKysrKysrLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAv bWdhZzIwMF9kcnYuaCAgICB8ICAgMyAtCiBkcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X21haW4uYyAgIHwgICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDEw MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2Fn MjAwX2N1cnNvci5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3IuYwpp bmRleCBkZTk0YTY1MDA3N2IuLmYwYzYxYTkyMzUxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9jdXJzb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIw MC9tZ2FnMjAwX2N1cnNvci5jCkBAIC0xOSwxMCArMTksOSBAQCBzdGF0aWMgdm9pZCBtZ2FfaGlk ZV9jdXJzb3Ioc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpCiB7CiAJV1JFRzgoTUdBX0NVUlBPU1hM LCAwKTsKIAlXUkVHOChNR0FfQ1VSUE9TWEgsIDApOwotCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxz XzEtPnBpbl9jb3VudCkKLQkJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChtZGV2LT5jdXJzb3Iu cGl4ZWxzXzEpOwotCWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzXzItPnBpbl9jb3VudCkKLQkJZHJt X2dlbV92cmFtX3VucGluX2xvY2tlZChtZGV2LT5jdXJzb3IucGl4ZWxzXzIpOworCWlmIChtZGV2 LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQpCisJCWRybV9nZW1fdnJhbV91bnBpbihtZGV2LT5jdXJz b3IucGl4ZWxzX2N1cnJlbnQpOworCW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IE5VTEw7 CiB9CiAKIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKQEAg LTM2LDcgKzM1LDcgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpj cnRjLAogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfMSA9IG1kZXYtPmN1cnNv ci5waXhlbHNfMTsKIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzXzIgPSBtZGV2 LT5jdXJzb3IucGl4ZWxzXzI7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19j dXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50OwotCXN0cnVjdCBkcm1fZ2VtX3Zy YW1fb2JqZWN0ICpwaXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfcHJldjsKKwlzdHJ1 Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzX25leHQ7CiAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmo7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyA9IE5VTEw7CiAJaW50 IHJldCA9IDA7CkBAIC00OSw2ICs0OCw3IEBAIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAlib29sIGZvdW5kID0gZmFsc2U7CiAJaW50IGNvbG91cl9jb3Vu dCA9IDA7CiAJczY0IGdwdV9hZGRyOworCXU2NCBkc3RfZ3B1OwogCXU4IHJlZ19pbmRleDsKIAl1 OCB0aGlzX3Jvd1s0OF07CiAKQEAgLTU4LDgwICs1OCw2NiBAQCBpbnQgbWdhX2NydGNfY3Vyc29y X3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXJldHVybiAtRU5PVFNVUFA7IC8qIERpZG4n dCBhbGxvY2F0ZSBzcGFjZSBmb3IgY3Vyc29ycyAqLwogCX0KIAotCWlmICgod2lkdGggIT0gNjQg fHwgaGVpZ2h0ICE9IDY0KSAmJiBoYW5kbGUpIHsKLQkJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsK LQkJV1JFRzgoTUdBX0NVUlBPU1hILCAwKTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKFdBUk5f T04ocGl4ZWxzX2N1cnJlbnQgJiYKKwkJICAgIHBpeGVsc18xICE9IHBpeGVsc19jdXJyZW50ICYm CisJCSAgICBwaXhlbHNfMiAhPSBwaXhlbHNfY3VycmVudCkpIHsKKwkJcmV0dXJuIC1FTk9UU1VQ UDsgLyogaW5jb25zaXN0ZW50IHN0YXRlICovCiAJfQogCi0JQlVHX09OKHBpeGVsc18xICE9IHBp eGVsc19jdXJyZW50ICYmIHBpeGVsc18xICE9IHBpeGVsc19wcmV2KTsKLQlCVUdfT04ocGl4ZWxz XzIgIT0gcGl4ZWxzX2N1cnJlbnQgJiYgcGl4ZWxzXzIgIT0gcGl4ZWxzX3ByZXYpOwotCUJVR19P TihwaXhlbHNfY3VycmVudCA9PSBwaXhlbHNfcHJldik7Ci0KIAlpZiAoIWhhbmRsZSB8fCAhZmls ZV9wcml2KSB7CiAJCW1nYV9oaWRlX2N1cnNvcihtZGV2KTsKIAkJcmV0dXJuIDA7CiAJfQogCi0J b2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGVfcHJpdiwgaGFuZGxlKTsKLQlpZiAoIW9i aikKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQlyZXQgPSBkcm1fZ2VtX3ZyYW1fbG9jayhwaXhlbHNf MSwgdHJ1ZSk7Ci0JaWYgKHJldCkgeworCWlmICh3aWR0aCAhPSA2NCB8fCBoZWlnaHQgIT0gNjQp IHsKIAkJV1JFRzgoTUdBX0NVUlBPU1hMLCAwKTsKIAkJV1JFRzgoTUdBX0NVUlBPU1hILCAwKTsK LQkJZ290byBvdXRfdW5yZWY7Ci0JfQotCXJldCA9IGRybV9nZW1fdnJhbV9sb2NrKHBpeGVsc18y LCB0cnVlKTsKLQlpZiAocmV0KSB7Ci0JCVdSRUc4KE1HQV9DVVJQT1NYTCwgMCk7Ci0JCVdSRUc4 KE1HQV9DVVJQT1NYSCwgMCk7Ci0JCWRybV9nZW1fdnJhbV91bmxvY2socGl4ZWxzXzEpOwotCQln b3RvIG91dF91bmxvY2sxOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQkvKiBNb3ZlIGN1cnNv ciBidWZmZXJzIGludG8gVlJBTSBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5ICovCi0JaWYgKCFwaXhl bHNfMS0+cGluX2NvdW50KSB7Ci0JCXJldCA9IGRybV9nZW1fdnJhbV9waW5fbG9ja2VkKHBpeGVs c18xLAotCQkJCQkgICAgICBEUk1fR0VNX1ZSQU1fUExfRkxBR19WUkFNKTsKLQkJaWYgKHJldCkK LQkJCWdvdG8gb3V0MTsKLQkJZ3B1X2FkZHIgPSBkcm1fZ2VtX3ZyYW1fb2Zmc2V0KHBpeGVsc18x KTsKLQkJaWYgKGdwdV9hZGRyIDwgMCkgewotCQkJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChw aXhlbHNfMSk7Ci0JCQlnb3RvIG91dDE7Ci0JCX0KLQkJbWRldi0+Y3Vyc29yLnBpeGVsc18xX2dw dV9hZGRyID0gZ3B1X2FkZHI7Ci0JfQotCWlmICghcGl4ZWxzXzItPnBpbl9jb3VudCkgewotCQly ZXQgPSBkcm1fZ2VtX3ZyYW1fcGluX2xvY2tlZChwaXhlbHNfMiwKLQkJCQkJICAgICAgRFJNX0dF TV9WUkFNX1BMX0ZMQUdfVlJBTSk7Ci0JCWlmIChyZXQpIHsKLQkJCWRybV9nZW1fdnJhbV91bnBp bl9sb2NrZWQocGl4ZWxzXzEpOwotCQkJZ290byBvdXQxOwotCQl9Ci0JCWdwdV9hZGRyID0gZHJt X2dlbV92cmFtX29mZnNldChwaXhlbHNfMik7Ci0JCWlmIChncHVfYWRkciA8IDApIHsKLQkJCWRy bV9nZW1fdnJhbV91bnBpbl9sb2NrZWQocGl4ZWxzXzEpOwotCQkJZHJtX2dlbV92cmFtX3VucGlu X2xvY2tlZChwaXhlbHNfMik7Ci0JCQlnb3RvIG91dDE7Ci0JCX0KLQkJbWRldi0+Y3Vyc29yLnBp eGVsc18yX2dwdV9hZGRyID0gZ3B1X2FkZHI7Ci0JfQorCWlmIChwaXhlbHNfY3VycmVudCA9PSBw aXhlbHNfMSkKKwkJcGl4ZWxzX25leHQgPSBwaXhlbHNfMjsKKwllbHNlCisJCXBpeGVsc19uZXh0 ID0gcGl4ZWxzXzE7CiAKKwlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZV9wcml2LCBo YW5kbGUpOworCWlmICghb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKIAlnYm8gPSBkcm1fZ2VtX3Zy YW1fb2ZfZ2VtKG9iaik7Ci0JcmV0ID0gZHJtX2dlbV92cmFtX2xvY2soZ2JvLCB0cnVlKTsKKwly ZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdibywgMCk7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKCZk ZXYtPnBkZXYtPmRldiwgImZhaWxlZCB0byBsb2NrIHVzZXIgYm9cbiIpOwotCQlnb3RvIG91dDE7 CisJCWdvdG8gZXJyX2RybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZDsKIAl9CiAJc3JjID0gZHJt X2dlbV92cmFtX2ttYXAoZ2JvLCB0cnVlLCBOVUxMKTsKIAlpZiAoSVNfRVJSKHNyYykpIHsKIAkJ cmV0ID0gUFRSX0VSUihzcmMpOwotCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgImZhaWxlZCB0 byBrbWFwIHVzZXIgYnVmZmVyIHVwZGF0ZXNcbiIpOwotCQlnb3RvIG91dDI7CisJCWRldl9lcnIo JmRldi0+cGRldi0+ZGV2LAorCQkJImZhaWxlZCB0byBrbWFwIHVzZXIgYnVmZmVyIHVwZGF0ZXNc biIpOworCQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1fdW5waW5fc3JjOworCX0KKworCS8qIFBpbiBh bmQgbWFwIHVwLWNvbWluZyBidWZmZXIgdG8gd3JpdGUgY29sb3VyIGluZGljZXMgKi8KKwlyZXQg PSBkcm1fZ2VtX3ZyYW1fcGluKHBpeGVsc19uZXh0LCAwKTsKKwlpZiAocmV0KQorCQlkZXZfZXJy KCZkZXYtPnBkZXYtPmRldiwKKwkJCSJmYWlsZWQgdG8gcGluIGN1cnNvciBidWZmZXI6ICVkXG4i LCByZXQpOworCQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1fa3VubWFwX3NyYzsKKwlkc3QgPSBkcm1f Z2VtX3ZyYW1fa21hcChwaXhlbHNfbmV4dCwgdHJ1ZSwgTlVMTCk7CisJaWYgKElTX0VSUihkc3Qp KSB7CisJCXJldCA9IFBUUl9FUlIoZHN0KTsKKwkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsCisJ CQkiZmFpbGVkIHRvIGttYXAgY3Vyc29yIHVwZGF0ZXM6ICVkXG4iLCByZXQpOworCQlnb3RvIGVy cl9kcm1fZ2VtX3ZyYW1fdW5waW5fZHN0OworCX0KKwlncHVfYWRkciA9IGRybV9nZW1fdnJhbV9v ZmZzZXQocGl4ZWxzXzIpOworCWlmIChncHVfYWRkciA8IDApIHsKKwkJcmV0ID0gKGludClncHVf YWRkcjsKKwkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsCisJCQkiZmFpbGVkIHRvIGdldCBjdXJz b3Igc2Nhbm91dCBhZGRyZXNzOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfZHJtX2dlbV92cmFt X2t1bm1hcF9kc3Q7CiAJfQorCWRzdF9ncHUgPSAodTY0KWdwdV9hZGRyOwogCiAJbWVtc2V0KCZj b2xvdXJfc2V0WzBdLCAwLCBzaXplb2YodWludDMyX3QpKjE2KTsKIAkvKiB3aWR0aCpoZWlnaHQq NCA9IDE2Mzg0ICovCkBAIC0xNDYsNyArMTMyLDcgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCXdhcm5fdHJhbnNwYXJlbnQgPSBmYWxzZTsgLyog T25seSB0ZWxsIHRoZSB1c2VyIG9uY2UuICovCiAJCQl9CiAJCQlyZXQgPSAtRUlOVkFMOwotCQkJ Z290byBvdXQzOworCQkJZ290byBlcnJfZHJtX2dlbV92cmFtX2t1bm1hcF9kc3Q7CiAJCX0KIAkJ LyogRG9uJ3QgbmVlZCB0byBzdG9yZSB0cmFuc3BhcmVudCBwaXhlbHMgYXMgY29sb3VycyAqLwog CQlpZiAodGhpc19jb2xvdXI+PjI0ID09IDB4MCkKQEAgLTE2OCw3ICsxNTQsNyBAQCBpbnQgbWdh X2NydGNfY3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJd2Fybl9wYWxldHRl ID0gZmFsc2U7IC8qIE9ubHkgdGVsbCB0aGUgdXNlciBvbmNlLiAqLwogCQkJfQogCQkJcmV0ID0g LUVJTlZBTDsKLQkJCWdvdG8gb3V0MzsKKwkJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV9rdW5tYXBf ZHN0OwogCQl9CiAJCSpuZXh0X3NwYWNlID0gdGhpc19jb2xvdXI7CiAJCW5leHRfc3BhY2UrKzsK QEAgLTE4NywxNCArMTczLDYgQEAgaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCQlCVUdfT04oKGNvbG91cl9zZXRbaV0+PjI0ICYgMHhmZikgIT0gMHhmZik7 CiAJfQogCi0JLyogTWFwIHVwLWNvbWluZyBidWZmZXIgdG8gd3JpdGUgY29sb3VyIGluZGljZXMg Ki8KLQlkc3QgPSBkcm1fZ2VtX3ZyYW1fa21hcChwaXhlbHNfcHJldiwgdHJ1ZSwgTlVMTCk7Ci0J aWYgKElTX0VSUihkc3QpKSB7Ci0JCXJldCA9IFBUUl9FUlIoZHN0KTsKLQkJZGV2X2VycigmZGV2 LT5wZGV2LT5kZXYsICJmYWlsZWQgdG8ga21hcCBjdXJzb3IgdXBkYXRlc1xuIik7Ci0JCWdvdG8g b3V0MzsKLQl9Ci0KIAkvKiBub3cgd3JpdGUgY29sb3VyIGluZGljZXMgaW50byBoYXJkd2FyZSBj dXJzb3IgYnVmZmVyICovCiAJZm9yIChyb3cgPSAwOyByb3cgPCA2NDsgcm93KyspIHsKIAkJbWVt c2V0KCZ0aGlzX3Jvd1swXSwgMCwgNDgpOwpAQCAtMjIxLDQyICsxOTksMzUgQEAgaW50IG1nYV9j cnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0KIAogCS8qIFByb2dyYW0g Z3B1IGFkZHJlc3Mgb2YgY3Vyc29yIGJ1ZmZlciAqLwotCWlmIChwaXhlbHNfcHJldiA9PSBwaXhl bHNfMSkKLQkJZ3B1X2FkZHIgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzFfZ3B1X2FkZHI7Ci0JZWxz ZQotCQlncHVfYWRkciA9IG1kZXYtPmN1cnNvci5waXhlbHNfMl9ncHVfYWRkcjsKLQlXUkVHX0RB QyhNR0ExMDY0X0NVUlNPUl9CQVNFX0FEUl9MT1csICh1OCkoKGdwdV9hZGRyPj4xMCkgJiAweGZm KSk7Ci0JV1JFR19EQUMoTUdBMTA2NF9DVVJTT1JfQkFTRV9BRFJfSEksICh1OCkoKGdwdV9hZGRy Pj4xOCkgJiAweDNmKSk7CisJV1JFR19EQUMoTUdBMTA2NF9DVVJTT1JfQkFTRV9BRFJfTE9XLCAo dTgpKChkc3RfZ3B1Pj4xMCkgJiAweGZmKSk7CisJV1JFR19EQUMoTUdBMTA2NF9DVVJTT1JfQkFT RV9BRFJfSEksICh1OCkoKGRzdF9ncHU+PjE4KSAmIDB4M2YpKTsKIAogCS8qIEFkanVzdCBjdXJz b3IgY29udHJvbCByZWdpc3RlciB0byB0dXJuIG9uIHRoZSBjdXJzb3IgKi8KIAlXUkVHX0RBQyhN R0ExMDY0X0NVUlNPUl9DVEwsIDQpOyAvKiAxNi1jb2xvdXIgcGFsbGV0aXplZCBjdXJzb3IgbW9k ZSAqLwogCi0JLyogTm93IHN3YXAgaW50ZXJuYWwgYnVmZmVyIHBvaW50ZXJzICovCi0JaWYgKG1k ZXYtPmN1cnNvci5waXhlbHNfMSA9PSBtZGV2LT5jdXJzb3IucGl4ZWxzX3ByZXYpIHsKLQkJbWRl di0+Y3Vyc29yLnBpeGVsc19wcmV2ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18yOwotCQltZGV2LT5j dXJzb3IucGl4ZWxzX2N1cnJlbnQgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzE7Ci0JfSBlbHNlIGlm IChtZGV2LT5jdXJzb3IucGl4ZWxzXzEgPT0gbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50KSB7 Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfMTsKLQkJ bWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18yOwotCX0g ZWxzZSB7Ci0JCUJVRygpOwotCX0KLQlyZXQgPSAwOworCS8qIE5vdyB1cGRhdGUgaW50ZXJuYWwg YnVmZmVyIHBvaW50ZXJzICovCisJaWYgKHBpeGVsc19jdXJyZW50KQorCQlkcm1fZ2VtX3ZyYW1f dW5waW4ocGl4ZWxzX2N1cnJlbnQpOworCW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IHBp eGVsc19uZXh0OwogCi0JZHJtX2dlbV92cmFtX2t1bm1hcChwaXhlbHNfcHJldik7Ci0gb3V0MzoK Kwlkcm1fZ2VtX3ZyYW1fa3VubWFwKHBpeGVsc19uZXh0KTsKKwlkcm1fZ2VtX3ZyYW1fdW5waW4o cGl4ZWxzX25leHQpOwogCWRybV9nZW1fdnJhbV9rdW5tYXAoZ2JvKTsKLSBvdXQyOgotCWRybV9n ZW1fdnJhbV91bmxvY2soZ2JvKTsKLSBvdXQxOgotCWlmIChyZXQpCi0JCW1nYV9oaWRlX2N1cnNv cihtZGV2KTsKLQlkcm1fZ2VtX3ZyYW1fdW5sb2NrKHBpeGVsc18xKTsKLW91dF91bmxvY2sxOgot CWRybV9nZW1fdnJhbV91bmxvY2socGl4ZWxzXzIpOwotb3V0X3VucmVmOgorCWRybV9nZW1fdnJh bV91bnBpbihnYm8pOwogCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwogCisJcmV0 dXJuIDA7CisKK2Vycl9kcm1fZ2VtX3ZyYW1fa3VubWFwX2RzdDoKKwlkcm1fZ2VtX3ZyYW1fa3Vu bWFwKHBpeGVsc19uZXh0KTsKK2Vycl9kcm1fZ2VtX3ZyYW1fdW5waW5fZHN0OgorCWRybV9nZW1f dnJhbV91bnBpbihwaXhlbHNfbmV4dCk7CitlcnJfZHJtX2dlbV92cmFtX2t1bm1hcF9zcmM6CisJ ZHJtX2dlbV92cmFtX2t1bm1hcChnYm8pOworZXJyX2RybV9nZW1fdnJhbV91bnBpbl9zcmM6CisJ ZHJtX2dlbV92cmFtX3VucGluKGdibyk7CitlcnJfZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2Vk OgorCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwogCXJldHVybiByZXQ7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oCmluZGV4IGI4ZjY2ZGUwZDc5Ny4uYzQ3 NjcxY2U2YzQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmgKQEAgLTE1NSwx MSArMTU1LDggQEAgc3RydWN0IG1nYV9jdXJzb3IgewogCSovCiAJc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKnBpeGVsc18xOwogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNf MjsKLQl1NjQgcGl4ZWxzXzFfZ3B1X2FkZHIsIHBpeGVsc18yX2dwdV9hZGRyOwogCS8qIFRoZSBj dXJyZW50bHkgZGlzcGxheWVkIGljb24sIHRoaXMgcG9pbnRzIHRvIG9uZSBvZiBwaXhlbHNfMSwg b3IgcGl4ZWxzXzIgKi8KIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqcGl4ZWxzX2N1cnJl bnQ7Ci0JLyogVGhlIHByZXZpb3VzbHkgZGlzcGxheWVkIGljb24gKi8KLQlzdHJ1Y3QgZHJtX2dl bV92cmFtX29iamVjdCAqcGl4ZWxzX3ByZXY7CiB9OwogCiBzdHJ1Y3QgbWdhX21jIHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbWFpbi5jIGIvZHJpdmVycy9n cHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tYWluLmMKaW5kZXggYmM5NWMzYTE4ODI0Li5kZDYxY2Nj NWFmNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbWFpbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbWFpbi5jCkBAIC0yMzgsMTAg KzIzOCw4IEBAIGludCBtZ2FnMjAwX2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJCW1kZXYtPmN1cnNvci5waXhlbHNfMiA9IE5VTEw7CiAJ CWRldl93YXJuKCZkZXYtPnBkZXYtPmRldiwKIAkJCSJDb3VsZCBub3QgYWxsb2NhdGUgc3BhY2Ug Zm9yIGN1cnNvcnMuIE5vdCBkb2luZyBoYXJkd2FyZSBjdXJzb3JzLlxuIik7Ci0JfSBlbHNlIHsK LQkJbWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18xOwot CQltZGV2LT5jdXJzb3IucGl4ZWxzX3ByZXYgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzI7CiAJfQor CW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IE5VTEw7CiAKIAlyZXR1cm4gMDsKIAotLSAK Mi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=