From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v2 7/9] drm/mgag200: Rewrite cursor handling Date: Tue, 11 Jun 2019 15:03:42 +0200 Message-ID: <20190611130344.18988-8-tzimmermann@suse.de> References: <20190611130344.18988-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 64A96891C1 for ; Tue, 11 Jun 2019 13:03:51 +0000 (UTC) In-Reply-To: <20190611130344.18988-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 c2ltcGx5IHBpbm5lZCBhbmQgdW5waW5uZWQgaW4gdmlkZW8KUkFNLgoKU2lnbmVkLW9mZi1ieTog VGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+CkFja2VkLWJ5OiBHZXJkIEhv ZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9t Z2FnMjAwX2N1cnNvci5jIHwgMTY1ICsrKysrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oICAgIHwgICAzIC0KIGRyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfbWFpbi5jICAgfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNjkgaW5z ZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfY3Vyc29yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2Fn MjAwX2N1cnNvci5jCmluZGV4IGRlOTRhNjUwMDc3Yi4uNWEyMmVmODI1NTg4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2N1cnNvci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfY3Vyc29yLmMKQEAgLTE5LDEwICsxOSw5IEBAIHN0YXRp YyB2b2lkIG1nYV9oaWRlX2N1cnNvcihzdHJ1Y3QgbWdhX2RldmljZSAqbWRldikKIHsKIAlXUkVH OChNR0FfQ1VSUE9TWEwsIDApOwogCVdSRUc4KE1HQV9DVVJQT1NYSCwgMCk7Ci0JaWYgKG1kZXYt PmN1cnNvci5waXhlbHNfMS0+cGluX2NvdW50KQotCQlkcm1fZ2VtX3ZyYW1fdW5waW5fbG9ja2Vk KG1kZXYtPmN1cnNvci5waXhlbHNfMSk7Ci0JaWYgKG1kZXYtPmN1cnNvci5waXhlbHNfMi0+cGlu X2NvdW50KQotCQlkcm1fZ2VtX3ZyYW1fdW5waW5fbG9ja2VkKG1kZXYtPmN1cnNvci5waXhlbHNf Mik7CisJaWYgKG1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCkKKwkJZHJtX2dlbV92cmFtX3Vu cGluKG1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCk7CisJbWRldi0+Y3Vyc29yLnBpeGVsc19j dXJyZW50ID0gTlVMTDsKIH0KIAogaW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9j cnRjICpjcnRjLApAQCAtMzYsNyArMzUsNyBAQCBpbnQgbWdhX2NydGNfY3Vyc29yX3NldChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc18x ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18xOwogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpw aXhlbHNfMiA9IG1kZXYtPmN1cnNvci5waXhlbHNfMjsKIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqcGl4ZWxzX2N1cnJlbnQgPSBtZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQ7Ci0Jc3Ry dWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19wcmV2ID0gbWRldi0+Y3Vyc29yLnBpeGVs c19wcmV2OworCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfbmV4dDsKIAlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2Jv ID0gTlVMTDsKIAlpbnQgcmV0ID0gMDsKQEAgLTQ5LDYgKzQ4LDcgQEAgaW50IG1nYV9jcnRjX2N1 cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWJvb2wgZm91bmQgPSBmYWxzZTsKIAlp bnQgY29sb3VyX2NvdW50ID0gMDsKIAlzNjQgZ3B1X2FkZHI7CisJdTY0IGRzdF9ncHU7CiAJdTgg cmVnX2luZGV4OwogCXU4IHRoaXNfcm93WzQ4XTsKIApAQCAtNTgsODAgKzU4LDY2IEBAIGludCBt Z2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJcmV0dXJuIC1FTk9U U1VQUDsgLyogRGlkbid0IGFsbG9jYXRlIHNwYWNlIGZvciBjdXJzb3JzICovCiAJfQogCi0JaWYg KCh3aWR0aCAhPSA2NCB8fCBoZWlnaHQgIT0gNjQpICYmIGhhbmRsZSkgewotCQlXUkVHOChNR0Ff Q1VSUE9TWEwsIDApOwotCQlXUkVHOChNR0FfQ1VSUE9TWEgsIDApOwotCQlyZXR1cm4gLUVJTlZB TDsKKwlpZiAoV0FSTl9PTihwaXhlbHNfY3VycmVudCAmJgorCQkgICAgcGl4ZWxzXzEgIT0gcGl4 ZWxzX2N1cnJlbnQgJiYKKwkJICAgIHBpeGVsc18yICE9IHBpeGVsc19jdXJyZW50KSkgeworCQly ZXR1cm4gLUVOT1RTVVBQOyAvKiBpbmNvbnNpc3RlbnQgc3RhdGUgKi8KIAl9CiAKLQlCVUdfT04o cGl4ZWxzXzEgIT0gcGl4ZWxzX2N1cnJlbnQgJiYgcGl4ZWxzXzEgIT0gcGl4ZWxzX3ByZXYpOwot CUJVR19PTihwaXhlbHNfMiAhPSBwaXhlbHNfY3VycmVudCAmJiBwaXhlbHNfMiAhPSBwaXhlbHNf cHJldik7Ci0JQlVHX09OKHBpeGVsc19jdXJyZW50ID09IHBpeGVsc19wcmV2KTsKLQogCWlmICgh aGFuZGxlIHx8ICFmaWxlX3ByaXYpIHsKIAkJbWdhX2hpZGVfY3Vyc29yKG1kZXYpOwogCQlyZXR1 cm4gMDsKIAl9CiAKLQlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZV9wcml2LCBoYW5k bGUpOwotCWlmICghb2JqKQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCXJldCA9IGRybV9nZW1fdnJh bV9sb2NrKHBpeGVsc18xLCB0cnVlKTsKLQlpZiAocmV0KSB7CisJaWYgKHdpZHRoICE9IDY0IHx8 IGhlaWdodCAhPSA2NCkgewogCQlXUkVHOChNR0FfQ1VSUE9TWEwsIDApOwogCQlXUkVHOChNR0Ff Q1VSUE9TWEgsIDApOwotCQlnb3RvIG91dF91bnJlZjsKLQl9Ci0JcmV0ID0gZHJtX2dlbV92cmFt X2xvY2socGl4ZWxzXzIsIHRydWUpOwotCWlmIChyZXQpIHsKLQkJV1JFRzgoTUdBX0NVUlBPU1hM LCAwKTsKLQkJV1JFRzgoTUdBX0NVUlBPU1hILCAwKTsKLQkJZHJtX2dlbV92cmFtX3VubG9jayhw aXhlbHNfMSk7Ci0JCWdvdG8gb3V0X3VubG9jazE7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAot CS8qIE1vdmUgY3Vyc29yIGJ1ZmZlcnMgaW50byBWUkFNIGlmIHRoZXkgYXJlbid0IGFscmVhZHkg Ki8KLQlpZiAoIXBpeGVsc18xLT5waW5fY291bnQpIHsKLQkJcmV0ID0gZHJtX2dlbV92cmFtX3Bp bl9sb2NrZWQocGl4ZWxzXzEsCi0JCQkJCSAgICAgIERSTV9HRU1fVlJBTV9QTF9GTEFHX1ZSQU0p OwotCQlpZiAocmV0KQotCQkJZ290byBvdXQxOwotCQlncHVfYWRkciA9IGRybV9nZW1fdnJhbV9v ZmZzZXQocGl4ZWxzXzEpOwotCQlpZiAoZ3B1X2FkZHIgPCAwKSB7Ci0JCQlkcm1fZ2VtX3ZyYW1f dW5waW5fbG9ja2VkKHBpeGVsc18xKTsKLQkJCWdvdG8gb3V0MTsKLQkJfQotCQltZGV2LT5jdXJz b3IucGl4ZWxzXzFfZ3B1X2FkZHIgPSBncHVfYWRkcjsKLQl9Ci0JaWYgKCFwaXhlbHNfMi0+cGlu X2NvdW50KSB7Ci0JCXJldCA9IGRybV9nZW1fdnJhbV9waW5fbG9ja2VkKHBpeGVsc18yLAotCQkJ CQkgICAgICBEUk1fR0VNX1ZSQU1fUExfRkxBR19WUkFNKTsKLQkJaWYgKHJldCkgewotCQkJZHJt X2dlbV92cmFtX3VucGluX2xvY2tlZChwaXhlbHNfMSk7Ci0JCQlnb3RvIG91dDE7Ci0JCX0KLQkJ Z3B1X2FkZHIgPSBkcm1fZ2VtX3ZyYW1fb2Zmc2V0KHBpeGVsc18yKTsKLQkJaWYgKGdwdV9hZGRy IDwgMCkgewotCQkJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChwaXhlbHNfMSk7Ci0JCQlkcm1f Z2VtX3ZyYW1fdW5waW5fbG9ja2VkKHBpeGVsc18yKTsKLQkJCWdvdG8gb3V0MTsKLQkJfQotCQlt ZGV2LT5jdXJzb3IucGl4ZWxzXzJfZ3B1X2FkZHIgPSBncHVfYWRkcjsKLQl9CisJaWYgKHBpeGVs c19jdXJyZW50ID09IHBpeGVsc18xKQorCQlwaXhlbHNfbmV4dCA9IHBpeGVsc18yOworCWVsc2UK KwkJcGl4ZWxzX25leHQgPSBwaXhlbHNfMTsKIAorCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1 cChmaWxlX3ByaXYsIGhhbmRsZSk7CisJaWYgKCFvYmopCisJCXJldHVybiAtRU5PRU5UOwogCWdi byA9IGRybV9nZW1fdnJhbV9vZl9nZW0ob2JqKTsKLQlyZXQgPSBkcm1fZ2VtX3ZyYW1fbG9jayhn Ym8sIHRydWUpOworCXJldCA9IGRybV9nZW1fdnJhbV9waW4oZ2JvLCBEUk1fR0VNX1ZSQU1fUExf RkxBR19TWVNURU0pOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsICJm YWlsZWQgdG8gbG9jayB1c2VyIGJvXG4iKTsKLQkJZ290byBvdXQxOworCQlnb3RvIGVycl9kcm1f Z2VtX29iamVjdF9wdXRfdW5sb2NrZWQ7CiAJfQogCXNyYyA9IGRybV9nZW1fdnJhbV9rbWFwKGdi bywgdHJ1ZSwgTlVMTCk7CiAJaWYgKElTX0VSUihzcmMpKSB7CiAJCXJldCA9IFBUUl9FUlIoc3Jj KTsKLQkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsICJmYWlsZWQgdG8ga21hcCB1c2VyIGJ1ZmZl ciB1cGRhdGVzXG4iKTsKLQkJZ290byBvdXQyOworCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwK KwkJCSJmYWlsZWQgdG8ga21hcCB1c2VyIGJ1ZmZlciB1cGRhdGVzXG4iKTsKKwkJZ290byBlcnJf ZHJtX2dlbV92cmFtX3VucGluX3NyYzsKKwl9CisKKwkvKiBQaW4gYW5kIG1hcCB1cC1jb21pbmcg YnVmZmVyIHRvIHdyaXRlIGNvbG91ciBpbmRpY2VzICovCisJcmV0ID0gZHJtX2dlbV92cmFtX3Bp bihwaXhlbHNfbmV4dCwgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfVlJBTSk7CisJaWYgKHJldCkKKwkJ ZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsCisJCQkiZmFpbGVkIHRvIHBpbiBjdXJzb3IgYnVmZmVy OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfZHJtX2dlbV92cmFtX2t1bm1hcF9zcmM7CisJZHN0 ID0gZHJtX2dlbV92cmFtX2ttYXAocGl4ZWxzX25leHQsIHRydWUsIE5VTEwpOworCWlmIChJU19F UlIoZHN0KSkgeworCQlyZXQgPSBQVFJfRVJSKGRzdCk7CisJCWRldl9lcnIoJmRldi0+cGRldi0+ ZGV2LAorCQkJImZhaWxlZCB0byBrbWFwIGN1cnNvciB1cGRhdGVzOiAlZFxuIiwgcmV0KTsKKwkJ Z290byBlcnJfZHJtX2dlbV92cmFtX3VucGluX2RzdDsKKwl9CisJZ3B1X2FkZHIgPSBkcm1fZ2Vt X3ZyYW1fb2Zmc2V0KHBpeGVsc18yKTsKKwlpZiAoZ3B1X2FkZHIgPCAwKSB7CisJCXJldCA9IChp bnQpZ3B1X2FkZHI7CisJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LAorCQkJImZhaWxlZCB0byBn ZXQgY3Vyc29yIHNjYW5vdXQgYWRkcmVzczogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2RybV9n ZW1fdnJhbV9rdW5tYXBfZHN0OwogCX0KKwlkc3RfZ3B1ID0gKHU2NClncHVfYWRkcjsKIAogCW1l bXNldCgmY29sb3VyX3NldFswXSwgMCwgc2l6ZW9mKHVpbnQzMl90KSoxNik7CiAJLyogd2lkdGgq aGVpZ2h0KjQgPSAxNjM4NCAqLwpAQCAtMTQ2LDcgKzEzMiw3IEBAIGludCBtZ2FfY3J0Y19jdXJz b3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQl3YXJuX3RyYW5zcGFyZW50ID0gZmFs c2U7IC8qIE9ubHkgdGVsbCB0aGUgdXNlciBvbmNlLiAqLwogCQkJfQogCQkJcmV0ID0gLUVJTlZB TDsKLQkJCWdvdG8gb3V0MzsKKwkJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV9rdW5tYXBfZHN0Owog CQl9CiAJCS8qIERvbid0IG5lZWQgdG8gc3RvcmUgdHJhbnNwYXJlbnQgcGl4ZWxzIGFzIGNvbG91 cnMgKi8KIAkJaWYgKHRoaXNfY29sb3VyPj4yNCA9PSAweDApCkBAIC0xNjgsNyArMTU0LDcgQEAg aW50IG1nYV9jcnRjX2N1cnNvcl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCXdhcm5f cGFsZXR0ZSA9IGZhbHNlOyAvKiBPbmx5IHRlbGwgdGhlIHVzZXIgb25jZS4gKi8KIAkJCX0KIAkJ CXJldCA9IC1FSU5WQUw7Ci0JCQlnb3RvIG91dDM7CisJCQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1f a3VubWFwX2RzdDsKIAkJfQogCQkqbmV4dF9zcGFjZSA9IHRoaXNfY29sb3VyOwogCQluZXh0X3Nw YWNlKys7CkBAIC0xODcsMTQgKzE3Myw2IEBAIGludCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAkJQlVHX09OKChjb2xvdXJfc2V0W2ldPj4yNCAmIDB4ZmYpICE9 IDB4ZmYpOwogCX0KIAotCS8qIE1hcCB1cC1jb21pbmcgYnVmZmVyIHRvIHdyaXRlIGNvbG91ciBp bmRpY2VzICovCi0JZHN0ID0gZHJtX2dlbV92cmFtX2ttYXAocGl4ZWxzX3ByZXYsIHRydWUsIE5V TEwpOwotCWlmIChJU19FUlIoZHN0KSkgewotCQlyZXQgPSBQVFJfRVJSKGRzdCk7Ci0JCWRldl9l cnIoJmRldi0+cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGttYXAgY3Vyc29yIHVwZGF0ZXNcbiIpOwot CQlnb3RvIG91dDM7Ci0JfQotCiAJLyogbm93IHdyaXRlIGNvbG91ciBpbmRpY2VzIGludG8gaGFy ZHdhcmUgY3Vyc29yIGJ1ZmZlciAqLwogCWZvciAocm93ID0gMDsgcm93IDwgNjQ7IHJvdysrKSB7 CiAJCW1lbXNldCgmdGhpc19yb3dbMF0sIDAsIDQ4KTsKQEAgLTIyMSw0MiArMTk5LDM1IEBAIGlu dCBtZ2FfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl9CiAKIAkvKiBQ cm9ncmFtIGdwdSBhZGRyZXNzIG9mIGN1cnNvciBidWZmZXIgKi8KLQlpZiAocGl4ZWxzX3ByZXYg PT0gcGl4ZWxzXzEpCi0JCWdwdV9hZGRyID0gbWRldi0+Y3Vyc29yLnBpeGVsc18xX2dwdV9hZGRy OwotCWVsc2UKLQkJZ3B1X2FkZHIgPSBtZGV2LT5jdXJzb3IucGl4ZWxzXzJfZ3B1X2FkZHI7Ci0J V1JFR19EQUMoTUdBMTA2NF9DVVJTT1JfQkFTRV9BRFJfTE9XLCAodTgpKChncHVfYWRkcj4+MTAp ICYgMHhmZikpOwotCVdSRUdfREFDKE1HQTEwNjRfQ1VSU09SX0JBU0VfQURSX0hJLCAodTgpKChn cHVfYWRkcj4+MTgpICYgMHgzZikpOworCVdSRUdfREFDKE1HQTEwNjRfQ1VSU09SX0JBU0VfQURS X0xPVywgKHU4KSgoZHN0X2dwdT4+MTApICYgMHhmZikpOworCVdSRUdfREFDKE1HQTEwNjRfQ1VS U09SX0JBU0VfQURSX0hJLCAodTgpKChkc3RfZ3B1Pj4xOCkgJiAweDNmKSk7CiAKIAkvKiBBZGp1 c3QgY3Vyc29yIGNvbnRyb2wgcmVnaXN0ZXIgdG8gdHVybiBvbiB0aGUgY3Vyc29yICovCiAJV1JF R19EQUMoTUdBMTA2NF9DVVJTT1JfQ1RMLCA0KTsgLyogMTYtY29sb3VyIHBhbGxldGl6ZWQgY3Vy c29yIG1vZGUgKi8KIAotCS8qIE5vdyBzd2FwIGludGVybmFsIGJ1ZmZlciBwb2ludGVycyAqLwot CWlmIChtZGV2LT5jdXJzb3IucGl4ZWxzXzEgPT0gbWRldi0+Y3Vyc29yLnBpeGVsc19wcmV2KSB7 Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfcHJldiA9IG1kZXYtPmN1cnNvci5waXhlbHNfMjsKLQkJ bWRldi0+Y3Vyc29yLnBpeGVsc19jdXJyZW50ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18xOwotCX0g ZWxzZSBpZiAobWRldi0+Y3Vyc29yLnBpeGVsc18xID09IG1kZXYtPmN1cnNvci5waXhlbHNfY3Vy cmVudCkgewotCQltZGV2LT5jdXJzb3IucGl4ZWxzX3ByZXYgPSBtZGV2LT5jdXJzb3IucGl4ZWxz XzE7Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IG1kZXYtPmN1cnNvci5waXhlbHNf MjsKLQl9IGVsc2UgewotCQlCVUcoKTsKLQl9Ci0JcmV0ID0gMDsKKwkvKiBOb3cgdXBkYXRlIGlu dGVybmFsIGJ1ZmZlciBwb2ludGVycyAqLworCWlmIChwaXhlbHNfY3VycmVudCkKKwkJZHJtX2dl bV92cmFtX3VucGluKHBpeGVsc19jdXJyZW50KTsKKwltZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJl bnQgPSBwaXhlbHNfbmV4dDsKIAotCWRybV9nZW1fdnJhbV9rdW5tYXAocGl4ZWxzX3ByZXYpOwot IG91dDM6CisJZHJtX2dlbV92cmFtX2t1bm1hcChwaXhlbHNfbmV4dCk7CisJZHJtX2dlbV92cmFt X3VucGluKHBpeGVsc19uZXh0KTsKIAlkcm1fZ2VtX3ZyYW1fa3VubWFwKGdibyk7Ci0gb3V0MjoK LQlkcm1fZ2VtX3ZyYW1fdW5sb2NrKGdibyk7Ci0gb3V0MToKLQlpZiAocmV0KQotCQltZ2FfaGlk ZV9jdXJzb3IobWRldik7Ci0JZHJtX2dlbV92cmFtX3VubG9jayhwaXhlbHNfMSk7Ci1vdXRfdW5s b2NrMToKLQlkcm1fZ2VtX3ZyYW1fdW5sb2NrKHBpeGVsc18yKTsKLW91dF91bnJlZjoKKwlkcm1f Z2VtX3ZyYW1fdW5waW4oZ2JvKTsKIAlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsK IAorCXJldHVybiAwOworCitlcnJfZHJtX2dlbV92cmFtX2t1bm1hcF9kc3Q6CisJZHJtX2dlbV92 cmFtX2t1bm1hcChwaXhlbHNfbmV4dCk7CitlcnJfZHJtX2dlbV92cmFtX3VucGluX2RzdDoKKwlk cm1fZ2VtX3ZyYW1fdW5waW4ocGl4ZWxzX25leHQpOworZXJyX2RybV9nZW1fdnJhbV9rdW5tYXBf c3JjOgorCWRybV9nZW1fdnJhbV9rdW5tYXAoZ2JvKTsKK2Vycl9kcm1fZ2VtX3ZyYW1fdW5waW5f c3JjOgorCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOworZXJyX2RybV9nZW1fb2JqZWN0X3B1dF91 bmxvY2tlZDoKKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKIAlyZXR1cm4gcmV0 OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaAppbmRleCBiOGY2NmRlMGQ3 OTcuLmM0NzY3MWNlNmM0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5oCkBA IC0xNTUsMTEgKzE1NSw4IEBAIHN0cnVjdCBtZ2FfY3Vyc29yIHsKIAkqLwogCXN0cnVjdCBkcm1f Z2VtX3ZyYW1fb2JqZWN0ICpwaXhlbHNfMTsKIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAq cGl4ZWxzXzI7Ci0JdTY0IHBpeGVsc18xX2dwdV9hZGRyLCBwaXhlbHNfMl9ncHVfYWRkcjsKIAkv KiBUaGUgY3VycmVudGx5IGRpc3BsYXllZCBpY29uLCB0aGlzIHBvaW50cyB0byBvbmUgb2YgcGl4 ZWxzXzEsIG9yIHBpeGVsc18yICovCiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVs c19jdXJyZW50OwotCS8qIFRoZSBwcmV2aW91c2x5IGRpc3BsYXllZCBpY29uICovCi0Jc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgKnBpeGVsc19wcmV2OwogfTsKIAogc3RydWN0IG1nYV9tYyB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21haW4uYyBiL2Ry aXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbWFpbi5jCmluZGV4IGJjOTVjM2ExODgyNC4u ZGQ2MWNjYzVhZjVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21haW4uYwpAQCAt MjM4LDEwICsyMzgsOCBAQCBpbnQgbWdhZzIwMF9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQogCQltZGV2LT5jdXJzb3IucGl4ZWxzXzIgPSBO VUxMOwogCQlkZXZfd2FybigmZGV2LT5wZGV2LT5kZXYsCiAJCQkiQ291bGQgbm90IGFsbG9jYXRl IHNwYWNlIGZvciBjdXJzb3JzLiBOb3QgZG9pbmcgaGFyZHdhcmUgY3Vyc29ycy5cbiIpOwotCX0g ZWxzZSB7Ci0JCW1kZXYtPmN1cnNvci5waXhlbHNfY3VycmVudCA9IG1kZXYtPmN1cnNvci5waXhl bHNfMTsKLQkJbWRldi0+Y3Vyc29yLnBpeGVsc19wcmV2ID0gbWRldi0+Y3Vyc29yLnBpeGVsc18y OwogCX0KKwltZGV2LT5jdXJzb3IucGl4ZWxzX2N1cnJlbnQgPSBOVUxMOwogCiAJcmV0dXJuIDA7 CiAKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs