From mboxrd@z Thu Jan 1 00:00:00 1970 From: Varad Gautam Subject: [PATCH 13/14] drm/cirrus: implement atomic hardware cursor support Date: Fri, 18 Aug 2017 21:19:18 +0530 Message-ID: <20170818154919.18607-14-varadgautam@gmail.com> References: <20170818154919.18607-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 786546E760 for ; Fri, 18 Aug 2017 15:51:00 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id y129so15633858pgy.3 for ; Fri, 18 Aug 2017 08:51:00 -0700 (PDT) In-Reply-To: <20170818154919.18607-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 w6lwaGFuZSBNYXJjaGVzaW4gPG1hcmNoZXVAY2hyb21pdW0ub3JnPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9jaXJydXMvY2lycnVzX2Rydi5oICB8ICAxMyArKwogZHJpdmVycy9ncHUvZHJtL2NpcnJ1 cy9jaXJydXNfbWFpbi5jIHwgIDEzICsrCiBkcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19t b2RlLmMgfCAyODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMjk3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2Np cnJ1cy9jaXJydXNfZHJ2LmgKaW5kZXggZDY4MDgxNWYyM2U2Li5mYmQ3NmM0ZTZkNTcgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9jaXJydXMvY2lycnVzX2Rydi5oCkBAIC01MCw2ICs1MCwxNyBAQAogCQlXUkVHOChT RVFfREFUQSwgdik7CQkJCVwKIAl9IHdoaWxlICgwKQkJCQkJCVwKIAorI2RlZmluZSBQQUxfQURE UiA4CisjZGVmaW5lIFBBTF9EQVRBIDkKKworI2RlZmluZSBXUkVHX1BBTChhZGRyLCByLCBnLCBi KQkJCQlcCisJZG8gewkJCQkJCQlcCisJCVdSRUc4KFBBTF9BRERSLCBhZGRyKTsJCQkJXAorCQlX UkVHOChQQUxfREFUQSwgcik7CQkJCVwKKwkJV1JFRzgoUEFMX0RBVEEsIGcpOwkJCQlcCisJCVdS RUc4KFBBTF9EQVRBLCBiKTsJCQkJXAorCX0gd2hpbGUgKDApCQkJCQkJXAorCiAjZGVmaW5lIENS VF9JTkRFWCAweDE0CiAjZGVmaW5lIENSVF9EQVRBIDB4MTUKIApAQCAtMTM3LDYgKzE0OCw4IEBA IHN0cnVjdCBjaXJydXNfZGV2aWNlIHsKIAl2b2lkIF9faW9tZW0JCQkqcm1taW87CiAKIAlzdHJ1 Y3QgY2lycnVzX21jCQkJbWM7CisJcmVzb3VyY2Vfc2l6ZV90CQkJY3Vyc29yX3JhbV9zaXplOwor CXZvaWQgX19pb21lbQkJCSpjdXJzb3JfaW9tZW07CiAJc3RydWN0IGNpcnJ1c19tb2RlX2luZm8J CW1vZGVfaW5mbzsKIAogCWludAkJCQludW1fY3J0YzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9jaXJydXMvY2lycnVzX21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVz X21haW4uYwppbmRleCA3ZDA0MzFiYmM2ZTMuLjIwMjI5YjEzZDZkMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9j aXJydXMvY2lycnVzX21haW4uYwpAQCAtOTQsNiArOTQsOCBAQCBzdGF0aWMgdm9pZCBjaXJydXNf dnJhbV9maW5pKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjZGV2KQogCWNkZXYtPnJtbWlvID0gTlVM TDsKIAlpZiAoY2Rldi0+bWMudnJhbV9iYXNlKQogCQlyZWxlYXNlX21lbV9yZWdpb24oY2Rldi0+ bWMudnJhbV9iYXNlLCBjZGV2LT5tYy52cmFtX3NpemUpOworCWlmIChjZGV2LT5jdXJzb3JfaW9t ZW0pCisJCWlvdW5tYXAoY2Rldi0+Y3Vyc29yX2lvbWVtKTsKIH0KIAogLyogTWFwIHRoZSBmcmFt ZWJ1ZmZlciBmcm9tIHRoZSBjYXJkIGFuZCBjb25maWd1cmUgdGhlIGNvcmUgKi8KQEAgLTEwNywx MiArMTA5LDIzIEBAIHN0YXRpYyBpbnQgY2lycnVzX3ZyYW1faW5pdChzdHJ1Y3QgY2lycnVzX2Rl dmljZSAqY2RldikKIAkgKiBmaW5kIHRoZSBjdXJzb3IgZGF0YSBhdCB0aGUgNE0gLSAxNksgcG9p bnQuCiAJICovCiAJY2Rldi0+bWMudnJhbV9zaXplID0gNCAqIDEwMjQgKiAxMDI0OworCS8qIFRo ZSBsYXN0IDE2SyBvZiBWUkFNIGlzIGZvciBjdXJzb3IgKi8KKwljZGV2LT5jdXJzb3JfcmFtX3Np emUgPSAxNiAqIDEwMjQ7CiAKIAlpZiAoIXJlcXVlc3RfbWVtX3JlZ2lvbihjZGV2LT5tYy52cmFt X2Jhc2UsIGNkZXYtPm1jLnZyYW1fc2l6ZSwKIAkJCQkiY2lycnVzZHJtZmJfdnJhbSIpKSB7CiAJ CURSTV9FUlJPUigiY2FuJ3QgcmVzZXJ2ZSBWUkFNXG4iKTsKIAkJcmV0dXJuIC1FTlhJTzsKIAl9 CisJY2Rldi0+Y3Vyc29yX2lvbWVtID0gaW9yZW1hcF9ub2NhY2hlKGNkZXYtPm1jLnZyYW1fYmFz ZSArCisJCQkJCSAgICAgY2Rldi0+bWMudnJhbV9zaXplIC0KKwkJCQkJICAgICBjZGV2LT5jdXJz b3JfcmFtX3NpemUsCisJCQkJCSAgICAgY2Rldi0+Y3Vyc29yX3JhbV9zaXplKTsKKwlpZiAoIWNk ZXYtPmN1cnNvcl9pb21lbSkgeworCQlyZWxlYXNlX21lbV9yZWdpb24oY2Rldi0+bWMudnJhbV9i YXNlLCBjZGV2LT5tYy52cmFtX3NpemUpOworCQlEUk1fRVJST1IoImNhbid0IGlvcmVtYXAgY3Vy c29yIFZSQU1cbiIpOworCQlyZXR1cm4gLUVOWElPOworCX0KIAogCXJldHVybiAwOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5jIGIvZHJpdmVycy9n cHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5jCmluZGV4IDM5YmVhMzlhNTY1ZS4uOTE1MDI4MTU5 OTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19tb2RlLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfbW9kZS5jCkBAIC0yNTQsNiArMjU0LDIz MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBjaXJydXNfaGVs cGVyX2Z1bmNzID0gewogCS5hdG9taWNfZmx1c2ggPSBjaXJydXNfY3J0Y19hdG9taWNfZmx1c2gs CiB9OwogCitzdGF0aWMgdm9pZCBjaXJydXNfYXJnYl90b19jdXJzb3Iodm9pZCAqc3JjICwgdm9p ZCBfX2lvbWVtICpkc3QsCisJCQkJICB1aW50MzJfdCBjdXJzb3Jfc2l6ZSkKK3sKKwl1aW50OF90 ICpwaXhlbCA9ICh1aW50OF90ICopc3JjOworCWNvbnN0IHVpbnQzMl90IHJvd19zaXplID0gY3Vy c29yX3NpemUgLyA4OworCWNvbnN0IHVpbnQzMl90IHBsYW5lX3NpemUgPSByb3dfc2l6ZSAqIGN1 cnNvcl9zaXplOworCXVpbnQzMl90IHJvd19za2lwOworCXZvaWQgX19pb21lbSAqcGxhbmVfMCA9 IGRzdDsKKwl2b2lkIF9faW9tZW0gKnBsYW5lXzE7CisJdWludDMyX3QgeDsKKwl1aW50MzJfdCB5 OworCisJc3dpdGNoIChjdXJzb3Jfc2l6ZSkgeworCWNhc2UgMzI6CisJCXJvd19za2lwID0gMDsK KwkJcGxhbmVfMSA9IHBsYW5lXzAgKyBwbGFuZV9zaXplOworCQlicmVhazsKKwljYXNlIDY0Ogor CQlyb3dfc2tpcCA9IHJvd19zaXplOworCQlwbGFuZV8xID0gcGxhbmVfMCArIHJvd19zaXplOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUcoIkN1cnNvciBwbGFuZSBmb3JtYXQgaXMg dW5kZWZpbmVkIGZvciBnaXZlbiBzaXplIik7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKHkgPSAw OyB5IDwgY3Vyc29yX3NpemU7IHkrKykgeworCQl1aW50OF90IGJpdHNfMCA9IDA7CisJCXVpbnQ4 X3QgYml0c18xID0gMDsKKworCQlmb3IgKHggPSAwOyB4IDwgY3Vyc29yX3NpemU7IHgrKykgewor CQkJdWludDhfdCBhbHBoYSA9IHBpeGVsWzNdOworCQkJaW50IGludGVuc2l0eSA9IHBpeGVsWzBd ICsgcGl4ZWxbMV0gKyBwaXhlbFsyXTsKKworCQkJaW50ZW5zaXR5IC89IDM7CisJCQliaXRzXzAg PDw9IDE7CisJCQliaXRzXzEgPDw9IDE7CisJCQlpZiAoYWxwaGEgPiAweDdmKSB7CisJCQkJYml0 c18xIHw9IDE7CisJCQkJaWYgKGludGVuc2l0eSA+IDB4N2YpCisJCQkJCWJpdHNfMCB8PSAxOwor CQkJfQorCQkJaWYgKCh4ICUgOCkgPT0gNykgeworCQkJCWlvd3JpdGU4KGJpdHNfMCwgcGxhbmVf MCk7CisJCQkJaW93cml0ZTgoYml0c18xLCBwbGFuZV8xKTsKKwkJCQlwbGFuZV8wKys7CisJCQkJ cGxhbmVfMSsrOworCQkJCWJpdHNfMCA9IDA7CisJCQkJYml0c18xID0gMDsKKwkJCX0KKwkJCXBp eGVsICs9IDQ7CisJCX0KKwkJcGxhbmVfMCArPSByb3dfc2tpcDsKKwkJcGxhbmVfMSArPSByb3df c2tpcDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY2lycnVzX2JvX3RvX2N1cnNvcihzdHJ1Y3QgY2ly cnVzX2RldmljZSAqY2RldiwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK KwkJCSAgICAgICB1aW50MzJfdCBjdXJzb3Jfc2l6ZSwgdWludDMyX3QgY3Vyc29yX2luZGV4KQor eworCWNvbnN0IHVpbnQzMl90IHBpeGVsX2NvdW50ID0gY3Vyc29yX3NpemUgKiBjdXJzb3Jfc2l6 ZTsKKwljb25zdCB1aW50MzJfdCBwbGFuZV9zaXplID0gcGl4ZWxfY291bnQgLyA4OworCWNvbnN0 IHVpbnQzMl90IGN1cnNvcl9vZmZzZXQgPSBjdXJzb3JfaW5kZXggKiBwbGFuZV9zaXplICogMjsK KwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2Rldi0+ZGV2OworCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBjaXJydXNfYm8gKmJvOworCXN0cnVj dCB0dG1fYm9fa21hcF9vYmogYm9fa21hcDsKKwlib29sIGlzX2lvbWVtOworCXN0cnVjdCB0dG1f dHQgKnR0bTsKKwl2b2lkICpib19wdHI7CisKKwlpZiAoKGN1cnNvcl9zaXplID09IDMyICYmIGN1 cnNvcl9pbmRleCA+PSA2NCkgfHwKKwkgICAgKGN1cnNvcl9zaXplID09IDY0ICYmIGN1cnNvcl9p bmRleCA+PSAxNikpIHsKKwkJRFJNX0VSUk9SKCJDdXJzb3IgaW5kZXggaXMgb3V0IG9mIGJvdW5k c1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKKwlvYmogPSB0b19jaXJydXNfZnJhbWVidWZmZXIoZmIpLT5vYmo7CisJaWYgKG9i aiA9PSBOVUxMKSB7CisJCXJldCA9IC1FTk9FTlQ7CisJCURSTV9FUlJPUigiQnVmZmVyIGhhbmRs ZSBmb3IgY3Vyc29yIGlzIGludmFsaWRcbiIpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJ Ym8gPSBnZW1fdG9fY2lycnVzX2JvKG9iaik7CisJdHRtID0gYm8tPmJvLnR0bTsKKworCXJldCA9 IHR0bV9ib19rbWFwKCZiby0+Ym8sIDAsIGJvLT5iby5udW1fcGFnZXMsICZib19rbWFwKTsKKwlp ZiAocmV0KSB7CisJCURSTV9FUlJPUigiQ3Vyc29yIGZhaWxlZCBrbWFwIG9mIGJ1ZmZlciBvYmpl Y3RcbiIpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJYm9fcHRyID0gdHRtX2ttYXBfb2Jq X3ZpcnR1YWwoJmJvX2ttYXAsICZpc19pb21lbSk7CisKKwljaXJydXNfYXJnYl90b19jdXJzb3Io Ym9fcHRyLCBjZGV2LT5jdXJzb3JfaW9tZW0gKyBjdXJzb3Jfb2Zmc2V0LAorCQkJICAgICAgY3Vy c29yX3NpemUpOworCisJdHRtX2JvX2t1bm1hcCgmYm9fa21hcCk7CitvdXRfdW5sb2NrOgorCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKKworaW50 IGNpcnJ1c19jdXJzb3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJ ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJc3Ry dWN0IGNpcnJ1c19ibyAqYm87CisJdWludDMyX3QgcGl4ZWxfY291bnQ7CisJdWludDMyX3QgZXhw ZWN0ZWRfcGFnZXM7CisKKwlpZiAoIWZiKQorCQlyZXR1cm4gMDsKKwlpZiAoZmItPndpZHRoICE9 IGZiLT5oZWlnaHQpIHsKKwkJRFJNX0RFQlVHKCJDdXJzb3JzIGFyZSBleHBlY3RlZCB0byBoYXZl IHNxdWFyZSBkaW1lbnNpb25zXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKCEo ZmItPndpZHRoID09IDMyIHx8IGZiLT53aWR0aCA9PSA2NCkpIHsKKwkJRFJNX0VSUk9SKCJDdXJz b3IgZGltZW5zaW9uIGFyZSBleHBlY3RlZCB0byBiZSAzMiBvciA2NFxuIik7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCW9iaiA9IHRvX2NpcnJ1c19mcmFtZWJ1ZmZlcihmYiktPm9iajsKKwlp ZiAob2JqID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJCdWZmZXIgaGFuZGxlIGZvciBjdXJzb3Ig aXMgaW52YWxpZFxuIik7CisJCXJldHVybiAtRU5PRU5UOworCX0KKwlibyA9IGdlbV90b19jaXJy dXNfYm8ob2JqKTsKKwlwaXhlbF9jb3VudCA9IGZiLT53aWR0aCAqIGZiLT53aWR0aDsKKwlleHBl Y3RlZF9wYWdlcyA9IERJVl9ST1VORF9VUChwaXhlbF9jb3VudCAqIDQsIFBBR0VfU0laRSk7CisJ aWYgKGJvLT5iby5udW1fcGFnZXMgPCBleHBlY3RlZF9wYWdlcykgeworCQlEUk1fRVJST1IoIkJ1 ZmZlciBvYmplY3QgZm9yIGN1cnNvciBpcyB0b28gc21hbGxcbiIpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY2lycnVzX2N1cnNvcl9hdG9t aWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcGxhbmUtPnN0YXRlLT5jcnRjLT5kZXY7CisJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNk ZXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmUtPnN0YXRlLT5mYjsKKwl1aW50OF90IGN1cnNvcl9pbmRleCA9IDA7CisJaW50IHdpZHRoLCB4 LCB5OworCWludCBzcjEwLCBzcjEwX2luZGV4OworCWludCBzcjExLCBzcjExX2luZGV4OworCWlu dCBzcjEyLCBzcjEzOworCisJd2lkdGggPSBmYi0+d2lkdGg7CisJaWYgKGZiICE9IG9sZF9zdGF0 ZS0+ZmIpIHsKKwkJV1JFRzgoU0VRX0lOREVYLCAweDEyKTsKKwkJc3IxMiA9IFJSRUc4KFNFUV9E QVRBKTsKKwkJc3IxMiAmPSAweGZlOworCQlXUkVHX1NFUSgweDEyLCBzcjEyKTsKKworCQkvKiBU aGlzIG1heSBzdGlsbCBmYWlsIGlmIHRoZSBibyByZXNlcnZhdGlvbiBmYWlscy4gKi8KKwkJcmV0 ID0gY2lycnVzX2JvX3RvX2N1cnNvcihjZGV2LCBmYiwgd2lkdGgsIGN1cnNvcl9pbmRleCk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm47CisKKwkJV1JFRzgoU0VRX0lOREVYLCAweDEyKTsKKwkJc3Ix MiA9IFJSRUc4KFNFUV9EQVRBKTsKKwkJc3IxMiAmPSAweGZhOworCQlzcjEyIHw9IDB4MDM7IC8q IGVuYWJsZXMgY3Vyc29yIGFuZCB3cml0ZSB0byBleHRyYSBEQUMgTFVUICovCisJCWlmICh3aWR0 aCA9PSA2NCkKKwkJCXNyMTIgfD0gMHgwNDsKKwkJV1JFR19TRVEoMHgxMiwgc3IxMik7CisKKwkJ LyogQmFja2dyb3VuZCBzZXQgdG8gYmxhY2ssIGZvcmVncm91bmQgc2V0IHRvIHdoaXRlICovCisJ CVdSRUdfUEFMKDB4MDAsIDAsIDAsIDApOworCQlXUkVHX1BBTCgweDBmLCAyNTUsIDI1NSwgMjU1 KTsKKworCQlzcjEyICY9IH4weDI7IC8qIERpc2FibGVzIHdyaXRlcyB0byB0aGUgZXh0cmEgTFVU ICovCisJCVdSRUdfU0VRKDB4MTIsIHNyMTIpOworCisJCXNyMTMgPSAwOworCQlpZiAod2lkdGgg PT0gNjQpCisJCQlzcjEzIHw9IChjdXJzb3JfaW5kZXggJiAweDBmKSA8PCAyOworCQllbHNlCisJ CQlzcjEzIHw9IGN1cnNvcl9pbmRleCAmIDB4M2Y7CisJCVdSRUdfU0VRKDB4MTMsIHNyMTMpOwor CX0KKworCXggPSBwbGFuZS0+c3RhdGUtPmNydGNfeCArIGZiLT5ob3RfeDsKKwl5ID0gcGxhbmUt PnN0YXRlLT5jcnRjX3kgKyBmYi0+aG90X3k7CisJaWYgKHggPCAwKQorCQl4ID0gMDsKKwlpZiAo eCA+IDB4N2ZmKQorCQl4ID0gMHg3ZmY7CisJaWYgKHkgPCAwKQorCQl5ID0gMDsKKwlpZiAoeSA+ IDB4N2ZmKQorCQl5ID0gMHg3ZmY7CisKKwlzcjEwID0gKHggPj4gMykgJiAweGZmOworCXNyMTBf aW5kZXggPSAweDEwOworCXNyMTBfaW5kZXggfD0gKHggJiAweDA3KSA8PCA1OworCVdSRUdfU0VR KHNyMTBfaW5kZXgsIHNyMTApOworCXNyMTEgPSAoeSA+PiAzKSAmIDB4ZmY7CisJc3IxMV9pbmRl eCA9IDB4MTE7CisJc3IxMV9pbmRleCB8PSAoeSAmIDB4MDcpIDw8IDU7CisJV1JFR19TRVEoc3Ix MV9pbmRleCwgc3IxMSk7Cit9CisKK3ZvaWQgY2lycnVzX2N1cnNvcl9hdG9taWNfZGlzYWJsZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNkZXYgPSBwbGFuZS0+ZGV2 LT5kZXZfcHJpdmF0ZTsKKwlpbnQgc3IxMjsKKworCVdSRUc4KFNFUV9JTkRFWCwgMHgxMik7CisJ c3IxMiA9IChSUkVHOChTRVFfREFUQSkgfCAweDA0KSAmIDB4ZmU7CisJV1JFRzgoU0VRX0RBVEEs IHNyMTIpOworfQorCiBzdGF0aWMgY29uc3QgdWludDMyX3QgY2lycnVzX3BsYW5lX2Zvcm1hdHNb XSA9IHsKIAlEUk1fRk9STUFUX1hSR0I4ODg4LAogCURSTV9GT1JNQVRfQVJHQjg4ODgsCkBAIC00 NTEsNiArNjc2LDI2IEBAIHN0YXRpYyB2b2lkIGNpcnJ1c19wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCW91dGIoMHgyMCwgMHgzYzApOwogfQogCitzdGF0aWMg Y29uc3QgdWludDMyX3QgY2lycnVzX2N1cnNvcl9mb3JtYXRzW10gPSB7CisJRFJNX0ZPUk1BVF9B UkdCODg4OCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGNpcnJ1 c19jdXJzb3JfcGxhbmVfZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZQk9IGRybV9hdG9taWNfaGVs cGVyX3VwZGF0ZV9wbGFuZSwKKwkuZGlzYWJsZV9wbGFuZQk9IGRybV9hdG9taWNfaGVscGVyX2Rp c2FibGVfcGxhbmUsCisJLmRlc3Ryb3kJPSBkcm1fcHJpbWFyeV9oZWxwZXJfZGVzdHJveSwKKwku cmVzZXQJCT0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQsCisJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCisJLmF0 b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0 ZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBjaXJy dXNfY3Vyc29yX2hlbHBlcl9mdW5jcyA9IHsKKwkuYXRvbWljX2NoZWNrID0gY2lycnVzX2N1cnNv cl9hdG9taWNfY2hlY2ssCisJLmF0b21pY191cGRhdGUgPSBjaXJydXNfY3Vyc29yX2F0b21pY191 cGRhdGUsCisJLmF0b21pY19kaXNhYmxlID0gY2lycnVzX2N1cnNvcl9hdG9taWNfZGlzYWJsZSwK KwkucHJlcGFyZV9mYiA9IGNpcnJ1c19wbGFuZV9wcmVwYXJlX2ZiLAorCS5jbGVhbnVwX2ZiID0g Y2lycnVzX3BsYW5lX2NsZWFudXBfZmIsCit9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w bGFuZV9oZWxwZXJfZnVuY3MgY2lycnVzX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKIAkucHJlcGFy ZV9mYiA9IGNpcnJ1c19wbGFuZV9wcmVwYXJlX2ZiLApAQCAtNDY1LDcgKzcxMCw3IEBAIHN0YXRp YyB2b2lkIGNpcnJ1c19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1 Y3QgY2lycnVzX2RldmljZSAqY2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGNpcnJ1 c19jcnRjICpjaXJydXNfY3J0YzsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5OworCXN0cnVj dCBkcm1fcGxhbmUgKnByaW1hcnksICpjdXJzb3I7CiAJaW50IGksIHJldDsKIAogCWNpcnJ1c19j cnRjID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNpcnJ1c19jcnRjKSArCkBAIC00ODEsMTcgKzcy NiwzMCBAQCBzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAKIAlkcm1fcGxhbmVfaGVscGVyX2FkZChwcmltYXJ5LCAmY2lycnVzX3BsYW5lX2hlbHBl cl9mdW5jcyk7CiAJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwg MSwKLQkJCQkgICAgICAgJmNpcnJ1c19wbGFuZV9mdW5jcywKLQkJCQkgICAgICAgY2lycnVzX3Bs YW5lX2Zvcm1hdHMsCi0JCQkJICAgICAgIEFSUkFZX1NJWkUoY2lycnVzX3BsYW5lX2Zvcm1hdHMp LAotCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLCBOVUxMKTsKKwkJCQkmY2lycnVz X3BsYW5lX2Z1bmNzLAorCQkJCWNpcnJ1c19wbGFuZV9mb3JtYXRzLAorCQkJCUFSUkFZX1NJWkUo Y2lycnVzX3BsYW5lX2Zvcm1hdHMpLAorCQkJCURSTV9QTEFORV9UWVBFX1BSSU1BUlksIE5VTEwp OworCWlmIChyZXQpCisJCWdvdG8gY2xlYW51cF9wcmltYXJ5OworCisJY3Vyc29yID0ga3phbGxv YyhzaXplb2YoKmN1cnNvciksIEdGUF9LRVJORUwpOworCWlmIChjdXJzb3IgPT0gTlVMTCkKKwkJ Z290byBjbGVhbnVwX3ByaW1hcnk7CisKKwlkcm1fcGxhbmVfaGVscGVyX2FkZChjdXJzb3IsICZj aXJydXNfY3Vyc29yX2hlbHBlcl9mdW5jcyk7CisJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9p bml0KGRldiwgY3Vyc29yLCAxLAorCQkJCSZjaXJydXNfY3Vyc29yX3BsYW5lX2Z1bmNzLAorCQkJ CWNpcnJ1c19jdXJzb3JfZm9ybWF0cywKKwkJCQlBUlJBWV9TSVpFKGNpcnJ1c19jdXJzb3JfZm9y bWF0cyksCisJCQkJRFJNX1BMQU5FX1RZUEVfQ1VSU09SLCBOVUxMKTsKIAlpZiAocmV0KQotCQln b3RvIGNsZWFudXA7CisJCWdvdG8gY2xlYW51cF9jdXJzb3I7CiAKLQlyZXQgPSBkcm1fY3J0Y19p bml0X3dpdGhfcGxhbmVzKGRldiwgJmNpcnJ1c19jcnRjLT5iYXNlLCBwcmltYXJ5LCBOVUxMLAot CQkJCQkmY2lycnVzX2NydGNfZnVuY3MsIE5VTEwpOworCXJldCA9IGRybV9jcnRjX2luaXRfd2l0 aF9wbGFuZXMoZGV2LCAmY2lycnVzX2NydGMtPmJhc2UsIHByaW1hcnksIGN1cnNvciwKKwkJCQkg ICAgICAmY2lycnVzX2NydGNfZnVuY3MsIE5VTEwpOwogCWlmIChyZXQpCi0JCWdvdG8gY2xlYW51 cDsKKwkJZ290byBjbGVhbnVwX2N1cnNvcjsKIAlkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXpl KCZjaXJydXNfY3J0Yy0+YmFzZSwgQ0lSUlVTX0xVVF9TSVpFKTsKIAljZGV2LT5tb2RlX2luZm8u Y3J0YyA9IGNpcnJ1c19jcnRjOwogCkBAIC01MDQsNyArNzYyLDEwIEBAIHN0YXRpYyB2b2lkIGNp cnJ1c19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlkcm1fY3J0Y19oZWxwZXJf YWRkKCZjaXJydXNfY3J0Yy0+YmFzZSwgJmNpcnJ1c19oZWxwZXJfZnVuY3MpOwogCXJldHVybjsK IAotY2xlYW51cDoKK2NsZWFudXBfY3Vyc29yOgorCWRybV9wbGFuZV9jbGVhbnVwKGN1cnNvcik7 CisJa2ZyZWUoY3Vyc29yKTsKK2NsZWFudXBfcHJpbWFyeToKIAlkcm1fcGxhbmVfY2xlYW51cChw cmltYXJ5KTsKIAlrZnJlZShwcmltYXJ5KTsKIGNsZWFudXBfY3J0YzoKLS0gCjIuMTMuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==