From mboxrd@z Thu Jan 1 00:00:00 1970 From: Varad Gautam Subject: [PATCH 11/12] drm/cirrus: implement atomic hardware cursor support Date: Fri, 8 Sep 2017 19:05:16 +0530 Message-ID: <20170908133517.18715-12-varadgautam@gmail.com> References: <20170908133517.18715-1-varadgautam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id B1E5F6EB92 for ; Fri, 8 Sep 2017 13:36:43 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id v82so1325762pgb.1 for ; Fri, 08 Sep 2017 06:36:43 -0700 (PDT) In-Reply-To: <20170908133517.18715-1-varadgautam@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: =?UTF-8?q?St=C3=A9phane=20Marchesin?= , Varad Gautam , Haixia Shi List-Id: dri-devel@lists.freedesktop.org RnJvbTogVmFyYWQgR2F1dGFtIDx2YXJhZC5nYXV0YW1AY29sbGFib3JhLmNvbT4KClRoaXMgZW5h YmxlcyBjdXJzb3IgcGxhbmUgb24gY2lycnVzLiBJdCBvbmx5IHN1cHBvcnRzIEFSR0IgOC1iaXQg Y3Vyc29ycwpmcm9tIHVzZXJzcGFjZSwgYW5kIGRvd25jb252ZXJ0cyB0aGVtIHRvIDEtYml0IGJs YWNrIGFuZCB3aGl0ZSB3aXRoCm1hc2tpbmcsIHdoaWNoIGlzIGFsbCBjaXJydXMgaGFyZHdhcmUg Y2FuIHN1cHBvcnQuIE9ubHkgY3Vyc29ycyB3aXRoCnNpemUgMzJ4MzIgb3IgNjR4NjQgd2lsbCB3 b3JrLgoKaW5pdGlhbCBub24tYXRvbWljIHZlcnNpb246ClJldmlld2VkLWF0OgpodHRwczovL2No cm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzMzNTU3OQpodHRwczovL2Nocm9taXVtLXJl dmlldy5nb29nbGVzb3VyY2UuY29tLzMzOTA5MQpTaWduZWQtb2ZmLWJ5OiBaYWNoIFJlaXpuZXIg PHphY2hyQGdvb2dsZS5jb20+CgpTaWduZWQtb2ZmLWJ5OiBWYXJhZCBHYXV0YW0gPHZhcmFkZ2F1 dGFtQGdtYWlsLmNvbT4KCkNDOiBIYWl4aWEgU2hpIDxoc2hpQGNocm9taXVtLm9yZz4KQ0M6IFN0 w6lwaGFuZSBNYXJjaGVzaW4gPG1hcmNoZXVAY2hyb21pdW0ub3JnPgoKdjI6IHJld29yayBmYXVs dHkgZXJyb3IgaGFuZGxpbmcgKGtyaXNtYW4gPGtyaXNtYW5AY29sbGFib3JhLmNvLnVrPikKLS0t CiBkcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19kcnYuaCAgfCAgMTMgKysKIGRyaXZlcnMv Z3B1L2RybS9jaXJydXMvY2lycnVzX21haW4uYyB8ICAxMyArKwogZHJpdmVycy9ncHUvZHJtL2Np cnJ1cy9jaXJydXNfbW9kZS5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiAzIGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZHJ2LmgKaW5kZXggMWRiMDg0OWI0YmNiLi42MzlhZjM4 YzAzNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oCkBAIC01MCw2ICs1MCwxNyBA QAogCQlXUkVHOChTRVFfREFUQSwgdik7CQkJCVwKIAl9IHdoaWxlICgwKQkJCQkJCVwKIAorI2Rl ZmluZSBQQUxfQUREUiA4CisjZGVmaW5lIFBBTF9EQVRBIDkKKworI2RlZmluZSBXUkVHX1BBTChh ZGRyLCByLCBnLCBiKQkJCQlcCisJZG8gewkJCQkJCQlcCisJCVdSRUc4KFBBTF9BRERSLCBhZGRy KTsJCQkJXAorCQlXUkVHOChQQUxfREFUQSwgcik7CQkJCVwKKwkJV1JFRzgoUEFMX0RBVEEsIGcp OwkJCQlcCisJCVdSRUc4KFBBTF9EQVRBLCBiKTsJCQkJXAorCX0gd2hpbGUgKDApCQkJCQkJXAor CiAjZGVmaW5lIENSVF9JTkRFWCAweDE0CiAjZGVmaW5lIENSVF9EQVRBIDB4MTUKIApAQCAtMTM2 LDYgKzE0Nyw4IEBAIHN0cnVjdCBjaXJydXNfZGV2aWNlIHsKIAl2b2lkIF9faW9tZW0JCQkqcm1t aW87CiAKIAlzdHJ1Y3QgY2lycnVzX21jCQkJbWM7CisJcmVzb3VyY2Vfc2l6ZV90CQkJY3Vyc29y X3JhbV9zaXplOworCXZvaWQgX19pb21lbQkJCSpjdXJzb3JfaW9tZW07CiAJc3RydWN0IGNpcnJ1 c19tb2RlX2luZm8JCW1vZGVfaW5mbzsKIAogCWludAkJCQludW1fY3J0YzsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9j aXJydXMvY2lycnVzX21haW4uYwppbmRleCBmMTQ2YTQxMjk3NDIuLmRlYjUzMWI2ZTNkYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbWFpbi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX21haW4uYwpAQCAtOTQsNiArOTQsOCBAQCBzdGF0aWMg dm9pZCBjaXJydXNfdnJhbV9maW5pKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjZGV2KQogCWNkZXYt PnJtbWlvID0gTlVMTDsKIAlpZiAoY2Rldi0+bWMudnJhbV9iYXNlKQogCQlyZWxlYXNlX21lbV9y ZWdpb24oY2Rldi0+bWMudnJhbV9iYXNlLCBjZGV2LT5tYy52cmFtX3NpemUpOworCWlmIChjZGV2 LT5jdXJzb3JfaW9tZW0pCisJCWlvdW5tYXAoY2Rldi0+Y3Vyc29yX2lvbWVtKTsKIH0KIAogLyog TWFwIHRoZSBmcmFtZWJ1ZmZlciBmcm9tIHRoZSBjYXJkIGFuZCBjb25maWd1cmUgdGhlIGNvcmUg Ki8KQEAgLTEwNywxMiArMTA5LDIzIEBAIHN0YXRpYyBpbnQgY2lycnVzX3ZyYW1faW5pdChzdHJ1 Y3QgY2lycnVzX2RldmljZSAqY2RldikKIAkgKiBmaW5kIHRoZSBjdXJzb3IgZGF0YSBhdCB0aGUg NE0gLSAxNksgcG9pbnQuCiAJICovCiAJY2Rldi0+bWMudnJhbV9zaXplID0gNCAqIDEwMjQgKiAx MDI0OworCS8qIFRoZSBsYXN0IDE2SyBvZiBWUkFNIGlzIGZvciBjdXJzb3IgKi8KKwljZGV2LT5j dXJzb3JfcmFtX3NpemUgPSAxNiAqIDEwMjQ7CiAKIAlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihj ZGV2LT5tYy52cmFtX2Jhc2UsIGNkZXYtPm1jLnZyYW1fc2l6ZSwKIAkJCQkiY2lycnVzZHJtZmJf dnJhbSIpKSB7CiAJCURSTV9FUlJPUigiY2FuJ3QgcmVzZXJ2ZSBWUkFNXG4iKTsKIAkJcmV0dXJu IC1FTlhJTzsKIAl9CisJY2Rldi0+Y3Vyc29yX2lvbWVtID0gaW9yZW1hcF9ub2NhY2hlKGNkZXYt Pm1jLnZyYW1fYmFzZSArCisJCQkJCSAgICAgY2Rldi0+bWMudnJhbV9zaXplIC0KKwkJCQkJICAg ICBjZGV2LT5jdXJzb3JfcmFtX3NpemUsCisJCQkJCSAgICAgY2Rldi0+Y3Vyc29yX3JhbV9zaXpl KTsKKwlpZiAoIWNkZXYtPmN1cnNvcl9pb21lbSkgeworCQlyZWxlYXNlX21lbV9yZWdpb24oY2Rl di0+bWMudnJhbV9iYXNlLCBjZGV2LT5tYy52cmFtX3NpemUpOworCQlEUk1fRVJST1IoImNhbid0 IGlvcmVtYXAgY3Vyc29yIFZSQU1cbiIpOworCQlyZXR1cm4gLUVOWElPOworCX0KIAogCXJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5j IGIvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5jCmluZGV4IGZiM2Q4MDhmZmI1 Zi4uNjZiMDc1MGViMzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1 c19tb2RlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5jCkBAIC0y NDMsNiArMjQzLDIzMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5j cyBjaXJydXNfaGVscGVyX2Z1bmNzID0gewogCS5hdG9taWNfZmx1c2ggPSBjaXJydXNfY3J0Y19h dG9taWNfZmx1c2gsCiB9OwogCitzdGF0aWMgdm9pZCBjaXJydXNfYXJnYl90b19jdXJzb3Iodm9p ZCAqc3JjICwgdm9pZCBfX2lvbWVtICpkc3QsCisJCQkJICB1aW50MzJfdCBjdXJzb3Jfc2l6ZSkK K3sKKwl1aW50OF90ICpwaXhlbCA9ICh1aW50OF90ICopc3JjOworCWNvbnN0IHVpbnQzMl90IHJv d19zaXplID0gY3Vyc29yX3NpemUgLyA4OworCWNvbnN0IHVpbnQzMl90IHBsYW5lX3NpemUgPSBy b3dfc2l6ZSAqIGN1cnNvcl9zaXplOworCXVpbnQzMl90IHJvd19za2lwOworCXZvaWQgX19pb21l bSAqcGxhbmVfMCA9IGRzdDsKKwl2b2lkIF9faW9tZW0gKnBsYW5lXzE7CisJdWludDMyX3QgeDsK Kwl1aW50MzJfdCB5OworCisJc3dpdGNoIChjdXJzb3Jfc2l6ZSkgeworCWNhc2UgMzI6CisJCXJv d19za2lwID0gMDsKKwkJcGxhbmVfMSA9IHBsYW5lXzAgKyBwbGFuZV9zaXplOworCQlicmVhazsK KwljYXNlIDY0OgorCQlyb3dfc2tpcCA9IHJvd19zaXplOworCQlwbGFuZV8xID0gcGxhbmVfMCAr IHJvd19zaXplOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUcoIkN1cnNvciBwbGFu ZSBmb3JtYXQgaXMgdW5kZWZpbmVkIGZvciBnaXZlbiBzaXplIik7CisJCXJldHVybjsKKwl9CisK Kwlmb3IgKHkgPSAwOyB5IDwgY3Vyc29yX3NpemU7IHkrKykgeworCQl1aW50OF90IGJpdHNfMCA9 IDA7CisJCXVpbnQ4X3QgYml0c18xID0gMDsKKworCQlmb3IgKHggPSAwOyB4IDwgY3Vyc29yX3Np emU7IHgrKykgeworCQkJdWludDhfdCBhbHBoYSA9IHBpeGVsWzNdOworCQkJaW50IGludGVuc2l0 eSA9IHBpeGVsWzBdICsgcGl4ZWxbMV0gKyBwaXhlbFsyXTsKKworCQkJaW50ZW5zaXR5IC89IDM7 CisJCQliaXRzXzAgPDw9IDE7CisJCQliaXRzXzEgPDw9IDE7CisJCQlpZiAoYWxwaGEgPiAweDdm KSB7CisJCQkJYml0c18xIHw9IDE7CisJCQkJaWYgKGludGVuc2l0eSA+IDB4N2YpCisJCQkJCWJp dHNfMCB8PSAxOworCQkJfQorCQkJaWYgKCh4ICUgOCkgPT0gNykgeworCQkJCWlvd3JpdGU4KGJp dHNfMCwgcGxhbmVfMCk7CisJCQkJaW93cml0ZTgoYml0c18xLCBwbGFuZV8xKTsKKwkJCQlwbGFu ZV8wKys7CisJCQkJcGxhbmVfMSsrOworCQkJCWJpdHNfMCA9IDA7CisJCQkJYml0c18xID0gMDsK KwkJCX0KKwkJCXBpeGVsICs9IDQ7CisJCX0KKwkJcGxhbmVfMCArPSByb3dfc2tpcDsKKwkJcGxh bmVfMSArPSByb3dfc2tpcDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY2lycnVzX2JvX3RvX2N1cnNv cihzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKKwkJCSAgICAgICB1aW50MzJfdCBjdXJzb3Jfc2l6ZSwgdWludDMyX3QgY3Vy c29yX2luZGV4KQoreworCWNvbnN0IHVpbnQzMl90IHBpeGVsX2NvdW50ID0gY3Vyc29yX3NpemUg KiBjdXJzb3Jfc2l6ZTsKKwljb25zdCB1aW50MzJfdCBwbGFuZV9zaXplID0gcGl4ZWxfY291bnQg LyA4OworCWNvbnN0IHVpbnQzMl90IGN1cnNvcl9vZmZzZXQgPSBjdXJzb3JfaW5kZXggKiBwbGFu ZV9zaXplICogMjsKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2Rl di0+ZGV2OworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBjaXJydXNfYm8g KmJvOworCXN0cnVjdCB0dG1fYm9fa21hcF9vYmogYm9fa21hcDsKKwlib29sIGlzX2lvbWVtOwor CXN0cnVjdCB0dG1fdHQgKnR0bTsKKwl2b2lkICpib19wdHI7CisKKwlpZiAoKGN1cnNvcl9zaXpl ID09IDMyICYmIGN1cnNvcl9pbmRleCA+PSA2NCkgfHwKKwkgICAgKGN1cnNvcl9zaXplID09IDY0 ICYmIGN1cnNvcl9pbmRleCA+PSAxNikpIHsKKwkJRFJNX0VSUk9SKCJDdXJzb3IgaW5kZXggaXMg b3V0IG9mIGJvdW5kc1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW11dGV4X2xvY2so JmRldi0+c3RydWN0X211dGV4KTsKKwlvYmogPSB0b19jaXJydXNfZnJhbWVidWZmZXIoZmIpLT5v Ymo7CisJaWYgKG9iaiA9PSBOVUxMKSB7CisJCXJldCA9IC1FTk9FTlQ7CisJCURSTV9FUlJPUigi QnVmZmVyIGhhbmRsZSBmb3IgY3Vyc29yIGlzIGludmFsaWRcbiIpOworCQlnb3RvIG91dF91bmxv Y2s7CisJfQorCisJYm8gPSBnZW1fdG9fY2lycnVzX2JvKG9iaik7CisJdHRtID0gYm8tPmJvLnR0 bTsKKworCXJldCA9IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5udW1fcGFnZXMsICZi b19rbWFwKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiQ3Vyc29yIGZhaWxlZCBrbWFwIG9m IGJ1ZmZlciBvYmplY3RcbiIpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJYm9fcHRyID0g dHRtX2ttYXBfb2JqX3ZpcnR1YWwoJmJvX2ttYXAsICZpc19pb21lbSk7CisKKwljaXJydXNfYXJn Yl90b19jdXJzb3IoYm9fcHRyLCBjZGV2LT5jdXJzb3JfaW9tZW0gKyBjdXJzb3Jfb2Zmc2V0LAor CQkJICAgICAgY3Vyc29yX3NpemUpOworCisJdHRtX2JvX2t1bm1hcCgmYm9fa21hcCk7CitvdXRf dW5sb2NrOgorCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiByZXQ7 Cit9CisKKworaW50IGNpcnJ1c19jdXJzb3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAorCQkJICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmo7CisJc3RydWN0IGNpcnJ1c19ibyAqYm87CisJdWludDMyX3QgcGl4ZWxfY291bnQ7CisJ dWludDMyX3QgZXhwZWN0ZWRfcGFnZXM7CisKKwlpZiAoIWZiKQorCQlyZXR1cm4gMDsKKwlpZiAo ZmItPndpZHRoICE9IGZiLT5oZWlnaHQpIHsKKwkJRFJNX0RFQlVHKCJDdXJzb3JzIGFyZSBleHBl Y3RlZCB0byBoYXZlIHNxdWFyZSBkaW1lbnNpb25zXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJaWYgKCEoZmItPndpZHRoID09IDMyIHx8IGZiLT53aWR0aCA9PSA2NCkpIHsKKwkJRFJN X0VSUk9SKCJDdXJzb3IgZGltZW5zaW9uIGFyZSBleHBlY3RlZCB0byBiZSAzMiBvciA2NFxuIik7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW9iaiA9IHRvX2NpcnJ1c19mcmFtZWJ1ZmZlcihm YiktPm9iajsKKwlpZiAob2JqID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJCdWZmZXIgaGFuZGxl IGZvciBjdXJzb3IgaXMgaW52YWxpZFxuIik7CisJCXJldHVybiAtRU5PRU5UOworCX0KKwlibyA9 IGdlbV90b19jaXJydXNfYm8ob2JqKTsKKwlwaXhlbF9jb3VudCA9IGZiLT53aWR0aCAqIGZiLT53 aWR0aDsKKwlleHBlY3RlZF9wYWdlcyA9IERJVl9ST1VORF9VUChwaXhlbF9jb3VudCAqIDQsIFBB R0VfU0laRSk7CisJaWYgKGJvLT5iby5udW1fcGFnZXMgPCBleHBlY3RlZF9wYWdlcykgeworCQlE Uk1fRVJST1IoIkJ1ZmZlciBvYmplY3QgZm9yIGN1cnNvciBpcyB0b28gc21hbGxcbiIpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY2lycnVz X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPnN0YXRlLT5jcnRjLT5kZXY7CisJc3RydWN0IGNpcnJ1 c19kZXZpY2UgKmNkZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5mYjsKKwl1aW50OF90IGN1cnNvcl9pbmRleCA9IDA7CisJ aW50IHdpZHRoLCB4LCB5OworCWludCBzcjEwLCBzcjEwX2luZGV4OworCWludCBzcjExLCBzcjEx X2luZGV4OworCWludCBzcjEyLCBzcjEzOworCisJd2lkdGggPSBmYi0+d2lkdGg7CisJaWYgKGZi ICE9IG9sZF9zdGF0ZS0+ZmIpIHsKKwkJV1JFRzgoU0VRX0lOREVYLCAweDEyKTsKKwkJc3IxMiA9 IFJSRUc4KFNFUV9EQVRBKTsKKwkJc3IxMiAmPSAweGZlOworCQlXUkVHX1NFUSgweDEyLCBzcjEy KTsKKworCQkvKiBUaGlzIG1heSBzdGlsbCBmYWlsIGlmIHRoZSBibyByZXNlcnZhdGlvbiBmYWls cy4gKi8KKwkJcmV0ID0gY2lycnVzX2JvX3RvX2N1cnNvcihjZGV2LCBmYiwgd2lkdGgsIGN1cnNv cl9pbmRleCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm47CisKKwkJV1JFRzgoU0VRX0lOREVYLCAw eDEyKTsKKwkJc3IxMiA9IFJSRUc4KFNFUV9EQVRBKTsKKwkJc3IxMiAmPSAweGZhOworCQlzcjEy IHw9IDB4MDM7IC8qIGVuYWJsZXMgY3Vyc29yIGFuZCB3cml0ZSB0byBleHRyYSBEQUMgTFVUICov CisJCWlmICh3aWR0aCA9PSA2NCkKKwkJCXNyMTIgfD0gMHgwNDsKKwkJV1JFR19TRVEoMHgxMiwg c3IxMik7CisKKwkJLyogQmFja2dyb3VuZCBzZXQgdG8gYmxhY2ssIGZvcmVncm91bmQgc2V0IHRv IHdoaXRlICovCisJCVdSRUdfUEFMKDB4MDAsIDAsIDAsIDApOworCQlXUkVHX1BBTCgweDBmLCAy NTUsIDI1NSwgMjU1KTsKKworCQlzcjEyICY9IH4weDI7IC8qIERpc2FibGVzIHdyaXRlcyB0byB0 aGUgZXh0cmEgTFVUICovCisJCVdSRUdfU0VRKDB4MTIsIHNyMTIpOworCisJCXNyMTMgPSAwOwor CQlpZiAod2lkdGggPT0gNjQpCisJCQlzcjEzIHw9IChjdXJzb3JfaW5kZXggJiAweDBmKSA8PCAy OworCQllbHNlCisJCQlzcjEzIHw9IGN1cnNvcl9pbmRleCAmIDB4M2Y7CisJCVdSRUdfU0VRKDB4 MTMsIHNyMTMpOworCX0KKworCXggPSBwbGFuZS0+c3RhdGUtPmNydGNfeCArIGZiLT5ob3RfeDsK Kwl5ID0gcGxhbmUtPnN0YXRlLT5jcnRjX3kgKyBmYi0+aG90X3k7CisJaWYgKHggPCAwKQorCQl4 ID0gMDsKKwlpZiAoeCA+IDB4N2ZmKQorCQl4ID0gMHg3ZmY7CisJaWYgKHkgPCAwKQorCQl5ID0g MDsKKwlpZiAoeSA+IDB4N2ZmKQorCQl5ID0gMHg3ZmY7CisKKwlzcjEwID0gKHggPj4gMykgJiAw eGZmOworCXNyMTBfaW5kZXggPSAweDEwOworCXNyMTBfaW5kZXggfD0gKHggJiAweDA3KSA8PCA1 OworCVdSRUdfU0VRKHNyMTBfaW5kZXgsIHNyMTApOworCXNyMTEgPSAoeSA+PiAzKSAmIDB4ZmY7 CisJc3IxMV9pbmRleCA9IDB4MTE7CisJc3IxMV9pbmRleCB8PSAoeSAmIDB4MDcpIDw8IDU7CisJ V1JFR19TRVEoc3IxMV9pbmRleCwgc3IxMSk7Cit9CisKK3ZvaWQgY2lycnVzX2N1cnNvcl9hdG9t aWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNkZXYg PSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgc3IxMjsKKworCVdSRUc4KFNFUV9JTkRF WCwgMHgxMik7CisJc3IxMiA9IChSUkVHOChTRVFfREFUQSkgfCAweDA0KSAmIDB4ZmU7CisJV1JF RzgoU0VRX0RBVEEsIHNyMTIpOworfQorCiBzdGF0aWMgY29uc3QgdWludDMyX3QgY2lycnVzX3Bs YW5lX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX1hSR0I4ODg4LAogCURSTV9GT1JNQVRfQVJH Qjg4ODgsCkBAIC00NDAsNiArNjY1LDI2IEBAIHN0YXRpYyB2b2lkIGNpcnJ1c19wbGFuZV9hdG9t aWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCW91dGIoMHgyMCwgMHgzYzApOwog fQogCitzdGF0aWMgY29uc3QgdWludDMyX3QgY2lycnVzX2N1cnNvcl9mb3JtYXRzW10gPSB7CisJ RFJNX0ZPUk1BVF9BUkdCODg4OCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2Z1bmNzIGNpcnJ1c19jdXJzb3JfcGxhbmVfZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZQk9IGRy bV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKKwkuZGlzYWJsZV9wbGFuZQk9IGRybV9hdG9t aWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCisJLmRlc3Ryb3kJPSBkcm1fcHJpbWFyeV9oZWxwZXJf ZGVzdHJveSwKKwkucmVzZXQJCT0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCisJLmF0 b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVf c3RhdGUsCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVf ZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBl cl9mdW5jcyBjaXJydXNfY3Vyc29yX2hlbHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2NoZWNrID0g Y2lycnVzX2N1cnNvcl9hdG9taWNfY2hlY2ssCisJLmF0b21pY191cGRhdGUgPSBjaXJydXNfY3Vy c29yX2F0b21pY191cGRhdGUsCisJLmF0b21pY19kaXNhYmxlID0gY2lycnVzX2N1cnNvcl9hdG9t aWNfZGlzYWJsZSwKKwkucHJlcGFyZV9mYiA9IGNpcnJ1c19wbGFuZV9wcmVwYXJlX2ZiLAorCS5j bGVhbnVwX2ZiID0gY2lycnVzX3BsYW5lX2NsZWFudXBfZmIsCit9OwogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgY2lycnVzX3BsYW5lX2hlbHBlcl9mdW5jcyA9 IHsKIAkucHJlcGFyZV9mYiA9IGNpcnJ1c19wbGFuZV9wcmVwYXJlX2ZiLApAQCAtNDU0LDcgKzY5 OSw3IEBAIHN0YXRpYyB2b2lkIGNpcnJ1c19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIHsKIAlzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJ c3RydWN0IGNpcnJ1c19jcnRjICpjaXJydXNfY3J0YzsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmlt YXJ5OworCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksICpjdXJzb3I7CiAJaW50IHJldDsKIAog CWNpcnJ1c19jcnRjID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNpcnJ1c19jcnRjKSArCkBAIC00 NzksMTcgKzcyNCwzNSBAQCBzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJCWdvdG8gY2xlYW51cF9jcnRjOwogCX0KIAotCXJldCA9IGRybV9jcnRj X2luaXRfd2l0aF9wbGFuZXMoZGV2LCAmY2lycnVzX2NydGMtPmJhc2UsIHByaW1hcnksIE5VTEws Ci0JCQkJCSZjaXJydXNfY3J0Y19mdW5jcywgTlVMTCk7CisJY3Vyc29yID0ga3phbGxvYyhzaXpl b2YoKmN1cnNvciksIEdGUF9LRVJORUwpOworCWlmIChjdXJzb3IgPT0gTlVMTCkKKwkJZ290byBj bGVhbnVwX3ByaW1hcnk7CisKKwlkcm1fcGxhbmVfaGVscGVyX2FkZChjdXJzb3IsICZjaXJydXNf Y3Vyc29yX2hlbHBlcl9mdW5jcyk7CisJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRl diwgY3Vyc29yLCAxLAorCQkJCSAgICAgICAmY2lycnVzX2N1cnNvcl9wbGFuZV9mdW5jcywKKwkJ CQkgICAgICAgY2lycnVzX2N1cnNvcl9mb3JtYXRzLAorCQkJCSAgICAgICBBUlJBWV9TSVpFKGNp cnJ1c19jdXJzb3JfZm9ybWF0cyksCisJCQkJICAgICAgIE5VTEwsIERSTV9QTEFORV9UWVBFX0NV UlNPUiwgTlVMTCk7CisJaWYgKHJldCkgeworCQlrZnJlZShjdXJzb3IpOworCQlnb3RvIGNsZWFu dXBfcHJpbWFyeTsKKwl9CisKKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwg JmNpcnJ1c19jcnRjLT5iYXNlLCBwcmltYXJ5LCBjdXJzb3IsCisJCQkJICAgICAgJmNpcnJ1c19j cnRjX2Z1bmNzLCBOVUxMKTsKIAlpZiAocmV0KQotCQlnb3RvIGNsZWFudXA7CisJCWdvdG8gY2xl YW51cF9jdXJzb3I7CiAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmY2lycnVzX2NydGMt PmJhc2UsIENJUlJVU19MVVRfU0laRSk7CiAJY2Rldi0+bW9kZV9pbmZvLmNydGMgPSBjaXJydXNf Y3J0YzsKIAogCWRybV9jcnRjX2hlbHBlcl9hZGQoJmNpcnJ1c19jcnRjLT5iYXNlLCAmY2lycnVz X2hlbHBlcl9mdW5jcyk7CiAJcmV0dXJuOwogCi1jbGVhbnVwOgorY2xlYW51cF9jdXJzb3I6CisJ ZHJtX3BsYW5lX2NsZWFudXAoY3Vyc29yKTsKKwlrZnJlZShjdXJzb3IpOworY2xlYW51cF9wcmlt YXJ5OgogCWRybV9wbGFuZV9jbGVhbnVwKHByaW1hcnkpOwogCWtmcmVlKHByaW1hcnkpOwogY2xl YW51cF9jcnRjOgotLSAKMi4xMy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK