From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 03/18] drm/radeon: rework fence handling, drop fence list v5 Date: Fri, 4 May 2012 18:43:44 -0400 Message-ID: <1336171439-7672-4-git-send-email-j.glisse@gmail.com> References: <1336171439-7672-1-git-send-email-j.glisse@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 551229EEF3 for ; Fri, 4 May 2012 15:44:19 -0700 (PDT) Received: by mail-qc0-f177.google.com with SMTP id u28so2491993qcs.36 for ; Fri, 04 May 2012 15:44:19 -0700 (PDT) In-Reply-To: <1336171439-7672-1-git-send-email-j.glisse@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Jerome Glisse , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogSmVyb21lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgoKVXNpbmcgNjRiaXRzIGZl bmNlIHNlcXVlbmNlIHdlIGNhbiBkaXJlY3RseSBjb21wYXJlIHNlcXVlbmNlCm51bWJlciB0byBr bm93IGlmIGEgZmVuY2UgaXMgc2lnbmFsZWQgb3Igbm90LiBUaHVzIHRoZSBmZW5jZQpsaXN0IGJl Y2FtZSB1c2VsZXNzLCBzbyBkb2VzIHRoZSBmZW5jZSBsb2NrIHRoYXQgbWFpbmx5CnByb3RlY3Rl ZCB0aGUgZmVuY2UgbGlzdC4KClRoaW5ncyBsaWtlIHJpbmcucmVhZHkgYXJlIG5vIGxvbmdlciBi ZWhpbmQgYSBsb2NrLCB0aGlzIHNob3VsZApiZSBvayBhcyByaW5nLnJlYWR5IGlzIGluaXRpYWxp emVkIG9uY2UgYW5kIHdpbGwgb25seSBjaGFuZ2UKd2hlbiBmYWNpbmcgbG9ja3VwLiBXb3JzdCBj YXNlIGlzIHRoYXQgd2UgcmV0dXJuIGFuIC1FQlVTWSBqdXN0CmFmdGVyIGEgc3VjY2Vzc2Z1bGwg R1BVIHJlc2V0LCBvciB3ZSBnbyBpbnRvIHdhaXQgc3RhdGUgaW5zdGVhZApvZiByZXR1cm5pbmcg LUVCVVNZICh0aHVzIGRlbGF5aW5nIHJlcG9ydGluZyAtRUJVU1kgdG8gZmVuY2UKd2FpdCBjYWxs ZXIpLgoKdjI6IFJlbW92ZSBsZWZ0IG92ZXIgY29tbWVudCwgZm9yY2UgdXNpbmcgd3JpdGViYWNr IG9uIGNheW1hbiBhbmQKICAgIG5ld2VyLCB0aHVzIG5vdCBoYXZpbmcgdG8gc3VmZmVyIGZyb20g cG9zc2libHkgc2NyYXRjaCByZWcKICAgIGV4aGF1c3Rpb24KdjM6IFJlYmFzZSBvbiB0b3Agb2Yg Y2hhbmdlIHRvIHVpbnQ2NCBmZW5jZSBwYXRjaAp2NDogQ2hhbmdlIERDRTUgdGVzdCB0byBmb3Jj ZSB3cml0ZSBiYWNrIG9uIGNheW1hbiBhbmQgbmV3ZXIgYnV0CiAgICBhbHNvIGFueSBBUFUgc3Vj aCBhcyBQQUxNIG9yIFNVTU8gZmFtaWx5CnY1OiBSZWJhc2Ugb24gdG9wIG9mIG5ldyB1aW50NjQg ZmVuY2UgcGF0Y2gKClNpZ25lZC1vZmYtYnk6IEplcm9tZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0 LmNvbT4KU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZv bmUuZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICAgICAgfCAgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYyB8ICAgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMgIHwgIDI4NyArKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwg MTc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCmluZGV4IDRkOWM0MzMuLjI5 MjgxMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtMjYzLDE1ICsyNjMsMTIgQEAgc3Ry dWN0IHJhZGVvbl9mZW5jZV9kcml2ZXIgewogCWF0b21pYzY0X3QJCQlsYXN0X3NlcTsKIAl1bnNp Z25lZCBsb25nCQkJbGFzdF9hY3Rpdml0eTsKIAl3YWl0X3F1ZXVlX2hlYWRfdAkJcXVldWU7Ci0J c3RydWN0IGxpc3RfaGVhZAkJZW1pdHRlZDsKLQlzdHJ1Y3QgbGlzdF9oZWFkCQlzaWduYWxlZDsK IAlib29sCQkJCWluaXRpYWxpemVkOwogfTsKIAogc3RydWN0IHJhZGVvbl9mZW5jZSB7CiAJc3Ry dWN0IHJhZGVvbl9kZXZpY2UJCSpyZGV2OwogCXN0cnVjdCBrcmVmCQkJa3JlZjsKLQlzdHJ1Y3Qg bGlzdF9oZWFkCQlsaXN0OwogCS8qIHByb3RlY3RlZCBieSByYWRlb25fZmVuY2UubG9jayAqLwog CXVpbnQ2NF90CQkJc2VxOwogCS8qIFJCLCBETUEsIGV0Yy4gKi8KQEAgLTI5MSw3ICsyODgsNyBA QCBpbnQgcmFkZW9uX2ZlbmNlX3dhaXRfbmV4dChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg aW50IHJpbmcpOwogaW50IHJhZGVvbl9mZW5jZV93YWl0X2VtcHR5KHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBpbnQgcmluZyk7CiBzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpyYWRlb25fZmVuY2Vf cmVmKHN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNlKTsKIHZvaWQgcmFkZW9uX2ZlbmNlX3VucmVm KHN0cnVjdCByYWRlb25fZmVuY2UgKipmZW5jZSk7Ci1pbnQgcmFkZW9uX2ZlbmNlX2NvdW50X2Vt aXR0ZWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5nKTsKK3Vuc2lnbmVkIHJh ZGVvbl9mZW5jZV9jb3VudF9lbWl0dGVkKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQg cmluZyk7CiAKIC8qCiAgKiBUaWxpbmcgcmVnaXN0ZXJzCkBAIC0xNTE2LDcgKzE1MTMsNiBAQCBz dHJ1Y3QgcmFkZW9uX2RldmljZSB7CiAJc3RydWN0IHJhZGVvbl9tb2RlX2luZm8JCW1vZGVfaW5m bzsKIAlzdHJ1Y3QgcmFkZW9uX3NjcmF0Y2gJCXNjcmF0Y2g7CiAJc3RydWN0IHJhZGVvbl9tbWFu CQltbWFuOwotCXJ3bG9ja190CQkJZmVuY2VfbG9jazsKIAlzdHJ1Y3QgcmFkZW9uX2ZlbmNlX2Ry aXZlcglmZW5jZV9kcnZbUkFERU9OX05VTV9SSU5HU107CiAJc3RydWN0IHJhZGVvbl9zZW1hcGhv cmVfZHJpdmVyCXNlbWFwaG9yZV9kcnY7CiAJc3RydWN0IG11dGV4CQkJcmluZ19sb2NrOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMgYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYwppbmRleCBhZDNhN2ZiLi5jYjRmOWMyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYwpAQCAtMjI1LDkgKzIyNSw5IEBA IGludCByYWRlb25fd2JfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAkvKiBkaXNh YmxlIGV2ZW50X3dyaXRlIGZlbmNlcyAqLwogCXJkZXYtPndiLnVzZV9ldmVudCA9IGZhbHNlOwog CS8qIGRpc2FibGVkIHZpYSBtb2R1bGUgcGFyYW0gKi8KLQlpZiAocmFkZW9uX25vX3diID09IDEp CisJaWYgKHJhZGVvbl9ub193YiA9PSAxKSB7CiAJCXJkZXYtPndiLmVuYWJsZWQgPSBmYWxzZTsK LQllbHNlIHsKKwl9IGVsc2UgewogCQlpZiAocmRldi0+ZmxhZ3MgJiBSQURFT05fSVNfQUdQKSB7 CiAJCQkvKiBvZnRlbiB1bnJlbGlhYmxlIG9uIEFHUCAqLwogCQkJcmRldi0+d2IuZW5hYmxlZCA9 IGZhbHNlOwpAQCAtMjM3LDggKzIzNyw5IEBAIGludCByYWRlb25fd2JfaW5pdChzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldikKIAkJfSBlbHNlIHsKIAkJCXJkZXYtPndiLmVuYWJsZWQgPSB0cnVl OwogCQkJLyogZXZlbnRfd3JpdGUgZmVuY2VzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiByNjAwKyAq LwotCQkJaWYgKHJkZXYtPmZhbWlseSA+PSBDSElQX1I2MDApCisJCQlpZiAocmRldi0+ZmFtaWx5 ID49IENISVBfUjYwMCkgewogCQkJCXJkZXYtPndiLnVzZV9ldmVudCA9IHRydWU7CisJCQl9CiAJ CX0KIAl9CiAJLyogYWx3YXlzIHVzZSB3cml0ZWJhY2svZXZlbnRzIG9uIE5JLCBBUFVzICovCkBA IC03MzEsNyArNzMyLDYgQEAgaW50IHJhZGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3QgcmFkZW9uX2Rl dmljZSAqcmRldiwKIAltdXRleF9pbml0KCZyZGV2LT5nZW0ubXV0ZXgpOwogCW11dGV4X2luaXQo JnJkZXYtPnBtLm11dGV4KTsKIAltdXRleF9pbml0KCZyZGV2LT52cmFtX211dGV4KTsKLQlyd2xv Y2tfaW5pdCgmcmRldi0+ZmVuY2VfbG9jayk7CiAJcndsb2NrX2luaXQoJnJkZXYtPnNlbWFwaG9y ZV9kcnYubG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJnJkZXYtPmdlbS5vYmplY3RzKTsKIAlpbml0 X3dhaXRxdWV1ZV9oZWFkKCZyZGV2LT5pcnEudmJsYW5rX3F1ZXVlKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9mZW5jZS5jCmluZGV4IDBkM2QyMjYuLjE2MTA2MDEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9yYWRlb25fZmVuY2UuYwpAQCAtNjMsMzAgKzYzLDE4IEBAIHN0YXRpYyB1MzIgcmFk ZW9uX2ZlbmNlX3JlYWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5nKQogCiBp bnQgcmFkZW9uX2ZlbmNlX2VtaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCBy YWRlb25fZmVuY2UgKmZlbmNlKQogewotCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwotCi0Jd3Jp dGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCS8qIHdlIGFy ZSBwcm90ZWN0ZWQgYnkgdGhlIHJpbmcgZW1pc3Npb24gbXV0ZXggKi8KIAlpZiAoZmVuY2UtPnNl cSAmJiBmZW5jZS0+c2VxIDwgUkFERU9OX0ZFTkNFX05PVEVNSVRFRF9TRVEpIHsKLQkJd3JpdGVf dW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CiAJCXJldHVy biAwOwogCX0KLQkvKiB3ZSBhcmUgcHJvdGVjdGVkIGJ5IHRoZSByaW5nIGVtaXNzaW9uIG11dGV4 ICovCiAJZmVuY2UtPnNlcSA9IHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10uc2VxKys7CiAJ cmFkZW9uX2ZlbmNlX3JpbmdfZW1pdChyZGV2LCBmZW5jZS0+cmluZywgZmVuY2UpOwogCXRyYWNl X3JhZGVvbl9mZW5jZV9lbWl0KHJkZXYtPmRkZXYsIGZlbmNlLT5zZXEpOwotCS8qIGFyZSB3ZSB0 aGUgZmlyc3QgZmVuY2Ugb24gYSBwcmV2aXVzbHkgaWRsZSByaW5nPyAqLwotCWlmIChsaXN0X2Vt cHR5KCZyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmVtaXR0ZWQpKSB7Ci0JCXJkZXYtPmZl bmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSA9IGppZmZpZXM7Ci0JfQotCWxpc3Rf bW92ZV90YWlsKCZmZW5jZS0+bGlzdCwgJnJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10uZW1p dHRlZCk7Ci0Jd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9m bGFncyk7CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHJhZGVvbl9mZW5jZV9wb2xsX2xv Y2tlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCitzdGF0aWMgYm9vbCBy YWRlb25fZmVuY2VfcG9sbChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgdW5zaWduZWQgcmlu ZykKIHsKLQlzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZTsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpp LCAqbjsKIAl1aW50NjRfdCBzZXEsIGxhc3Rfc2VxOwogCXVuc2lnbmVkIGNvdW50X2xvb3AgPSAw OwogCWJvb2wgd2FrZSA9IGZhbHNlOwpAQCAtMTM4LDQzICsxMjYsMTcgQEAgc3RhdGljIGJvb2wg cmFkZW9uX2ZlbmNlX3BvbGxfbG9ja2VkKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQg cmluZykKIAkJfQogCX0gd2hpbGUgKGF0b21pYzY0X3hjaGcoJnJkZXYtPmZlbmNlX2RydltyaW5n XS5sYXN0X3NlcSwgc2VxKSA+IHNlcSk7CiAKLQkvKiByZXNldCB3YWtlIHRvIGZhbHNlICovCi0J d2FrZSA9IGZhbHNlOwogCXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X2FjdGl2aXR5ID0gamlm ZmllczsKIAotCW4gPSBOVUxMOwotCWxpc3RfZm9yX2VhY2goaSwgJnJkZXYtPmZlbmNlX2Rydlty aW5nXS5lbWl0dGVkKSB7Ci0JCWZlbmNlID0gbGlzdF9lbnRyeShpLCBzdHJ1Y3QgcmFkZW9uX2Zl bmNlLCBsaXN0KTsKLQkJaWYgKGZlbmNlLT5zZXEgPT0gc2VxKSB7Ci0JCQluID0gaTsKLQkJCWJy ZWFrOwotCQl9Ci0JfQotCS8qIGFsbCBmZW5jZSBwcmV2aW91cyB0byB0aGlzIG9uZSBhcmUgY29u c2lkZXJlZCBhcyBzaWduYWxlZCAqLwotCWlmIChuKSB7Ci0JCWkgPSBuOwotCQlkbyB7Ci0JCQlu ID0gaS0+cHJldjsKLQkJCWxpc3RfbW92ZV90YWlsKGksICZyZGV2LT5mZW5jZV9kcnZbcmluZ10u c2lnbmFsZWQpOwotCQkJZmVuY2UgPSBsaXN0X2VudHJ5KGksIHN0cnVjdCByYWRlb25fZmVuY2Us IGxpc3QpOwotCQkJZmVuY2UtPnNlcSA9IFJBREVPTl9GRU5DRV9TSUdOQUxFRF9TRVE7Ci0JCQlp ID0gbjsKLQkJfSB3aGlsZSAoaSAhPSAmcmRldi0+ZmVuY2VfZHJ2W3JpbmddLmVtaXR0ZWQpOwot CQl3YWtlID0gdHJ1ZTsKLQl9Ci0JcmV0dXJuIHdha2U7CisJcmV0dXJuIHRydWU7CiB9CiAKIHN0 YXRpYyB2b2lkIHJhZGVvbl9mZW5jZV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogewotCXVu c2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwotICAgICAgICBzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5j ZTsKKwlzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZTsKIAogCWZlbmNlID0gY29udGFpbmVyX29m KGtyZWYsIHN0cnVjdCByYWRlb25fZmVuY2UsIGtyZWYpOwotCXdyaXRlX2xvY2tfaXJxc2F2ZSgm ZmVuY2UtPnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7Ci0JbGlzdF9kZWwoJmZlbmNlLT5s aXN0KTsKIAlmZW5jZS0+c2VxID0gUkFERU9OX0ZFTkNFX05PVEVNSVRFRF9TRVE7Ci0Jd3JpdGVf dW5sb2NrX2lycXJlc3RvcmUoJmZlbmNlLT5yZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwog CWlmIChmZW5jZS0+c2VtYXBob3JlKQogCQlyYWRlb25fc2VtYXBob3JlX2ZyZWUoZmVuY2UtPnJk ZXYsIGZlbmNlLT5zZW1hcGhvcmUpOwogCWtmcmVlKGZlbmNlKTsKQEAgLTE5Myw4MCArMTU1LDkz IEBAIGludCByYWRlb25fZmVuY2VfY3JlYXRlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LAog CSgqZmVuY2UpLT5zZXEgPSBSQURFT05fRkVOQ0VfTk9URU1JVEVEX1NFUTsKIAkoKmZlbmNlKS0+ cmluZyA9IHJpbmc7CiAJKCpmZW5jZSktPnNlbWFwaG9yZSA9IE5VTEw7Ci0JSU5JVF9MSVNUX0hF QUQoJigqZmVuY2UpLT5saXN0KTsKIAlyZXR1cm4gMDsKIH0KIAogYm9vbCByYWRlb25fZmVuY2Vf c2lnbmFsZWQoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UpCiB7Ci0JdW5zaWduZWQgbG9uZyBp cnFfZmxhZ3M7Ci0JYm9vbCBzaWduYWxlZCA9IGZhbHNlOworCXN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2OworCXVuc2lnbmVkIGk7CisJYm9vbCBzaWduYWxlZDsKIAotCWlmICghZmVuY2UpCisJ aWYgKCFmZW5jZSkgewogCQlyZXR1cm4gdHJ1ZTsKLQotCXdyaXRlX2xvY2tfaXJxc2F2ZSgmZmVu Y2UtPnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7Ci0Jc2lnbmFsZWQgPSAoZmVuY2UtPnNl cSA9PSBSQURFT05fRkVOQ0VfU0lHTkFMRURfU0VRKTsKLQkvKiBpZiB3ZSBhcmUgc2h1dGluZyBk b3duIHJlcG9ydCBhbGwgZmVuY2UgYXMgc2lnbmFsZWQgKi8KLQlpZiAoZmVuY2UtPnJkZXYtPnNo dXRkb3duKSB7Ci0JCXNpZ25hbGVkID0gdHJ1ZTsKIAl9CisKKwlyZGV2ID0gZmVuY2UtPnJkZXY7 CiAJaWYgKGZlbmNlLT5zZXEgPT0gUkFERU9OX0ZFTkNFX05PVEVNSVRFRF9TRVEpIHsKIAkJV0FS TigxLCAiUXVlcnlpbmcgYW4gdW5lbWl0dGVkIGZlbmNlIDogJXAgIVxuIiwgZmVuY2UpOwogCQlz aWduYWxlZCA9IHRydWU7CiAJfQotCWlmICghc2lnbmFsZWQpIHsKLQkJcmFkZW9uX2ZlbmNlX3Bv bGxfbG9ja2VkKGZlbmNlLT5yZGV2LCBmZW5jZS0+cmluZyk7Ci0JCXNpZ25hbGVkID0gKGZlbmNl LT5zZXEgPT0gUkFERU9OX0ZFTkNFX1NJR05BTEVEX1NFUSk7CisJc2lnbmFsZWQgPSAoZmVuY2Ut PnNlcSA9PSBSQURFT05fRkVOQ0VfU0lHTkFMRURfU0VRKTsKKwlpZiAoc2lnbmFsZWQpIHsKKwkJ cmV0dXJuIHRydWU7CisJfQorCS8qIHBvbGwgbmV3IGxhc3Qgc2VxdWVuY2UgYXQgbGVhc3Qgb25j ZSAqLworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJaWYgKGF0b21pYzY0X3JlYWQoJnJk ZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9zZXEpID49IGZlbmNlLT5zZXEpIHsKKwkJ CWZlbmNlLT5zZXEgPSBSQURFT05fRkVOQ0VfU0lHTkFMRURfU0VROworCQkJcmV0dXJuIHRydWU7 CisJCX0KKwkJcmFkZW9uX2ZlbmNlX3BvbGwoZmVuY2UtPnJkZXYsIGZlbmNlLT5yaW5nKTsKIAl9 Ci0Jd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJmZlbmNlLT5yZGV2LT5mZW5jZV9sb2NrLCBpcnFf ZmxhZ3MpOwotCXJldHVybiBzaWduYWxlZDsKKwlyZXR1cm4gZmFsc2U7CiB9CiAKLWludCByYWRl b25fZmVuY2Vfd2FpdChzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZSwgYm9vbCBpbnRyKQorYm9v bCByYWRlb25fc2VxX3NpZ25hbGVkKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCB1NjQgc2Vx LCB1bnNpZ25lZCByaW5nKQogewotCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2OwotCXVuc2ln bmVkIGxvbmcgaXJxX2ZsYWdzLCB0aW1lb3V0LCBsYXN0X2FjdGl2aXR5OworCXVuc2lnbmVkIGk7 CisKKwkvKiBwb2xsIG5ldyBsYXN0IHNlcXVlbmNlIGF0IGxlYXN0IG9uY2UgKi8KKwlmb3IgKGkg PSAwOyBpIDwgMjsgaSsrKSB7CisJCWlmIChhdG9taWM2NF9yZWFkKCZyZGV2LT5mZW5jZV9kcnZb cmluZ10ubGFzdF9zZXEpID49IHNlcSkgeworCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJcmFkZW9u X2ZlbmNlX3BvbGwocmRldiwgcmluZyk7CisJfQorCXJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IGludCByYWRlb25fd2FpdF9zZXEoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHU2NCB0YXJn ZXRfc2VxLAorCQkJICAgdW5zaWduZWQgcmluZywgYm9vbCBpbnRyKQoreworCXVuc2lnbmVkIGxv bmcgdGltZW91dCwgbGFzdF9hY3Rpdml0eTsKIAl1aW50NjRfdCBzZXE7Ci0JaW50IGksIHI7CisJ dW5zaWduZWQgaTsKIAlib29sIHNpZ25hbGVkOworCWludCByOwogCi0JaWYgKGZlbmNlID09IE5V TEwpIHsKLQkJV0FSTigxLCAiUXVlcnlpbmcgYW4gaW52YWxpZCBmZW5jZSA6ICVwICFcbiIsIGZl bmNlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQorCXdoaWxlICh0YXJnZXRfc2VxID4gYXRvbWlj NjRfcmVhZCgmcmRldi0+ZmVuY2VfZHJ2W3JpbmddLmxhc3Rfc2VxKSkgeworCQlpZiAoIXJkZXYt PnJpbmdbcmluZ10ucmVhZHkpIHsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0KIAotCXJkZXYgPSBm ZW5jZS0+cmRldjsKLQlzaWduYWxlZCA9IHJhZGVvbl9mZW5jZV9zaWduYWxlZChmZW5jZSk7Ci0J d2hpbGUgKCFzaWduYWxlZCkgewotCQlyZWFkX2xvY2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2VfbG9j aywgaXJxX2ZsYWdzKTsKIAkJdGltZW91dCA9IGppZmZpZXMgLSBSQURFT05fRkVOQ0VfSklGRklF U19USU1FT1VUOwotCQlpZiAodGltZV9hZnRlcihyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmdd Lmxhc3RfYWN0aXZpdHksIHRpbWVvdXQpKSB7CisJCWlmICh0aW1lX2FmdGVyKHJkZXYtPmZlbmNl X2RydltyaW5nXS5sYXN0X2FjdGl2aXR5LCB0aW1lb3V0KSkgewogCQkJLyogdGhlIG5vcm1hbCBj YXNlLCB0aW1lb3V0IGlzIHNvbWV3aGVyZSBiZWZvcmUgbGFzdF9hY3Rpdml0eSAqLwotCQkJdGlt ZW91dCA9IHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSAtIHRpbWVv dXQ7CisJCQl0aW1lb3V0ID0gcmRldi0+ZmVuY2VfZHJ2W3JpbmddLmxhc3RfYWN0aXZpdHkgLSB0 aW1lb3V0OwogCQl9IGVsc2UgewogCQkJLyogZWl0aGVyIGppZmZpZXMgd3JhcHBlZCBhcm91bmQs IG9yIG5vIGZlbmNlIHdhcyBzaWduYWxlZCBpbiB0aGUgbGFzdCA1MDBtcwotCQkJICogYW55d2F5 IHdlIHdpbGwganVzdCB3YWl0IGZvciB0aGUgbWluaW11bSBhbW91bnQgYW5kIHRoZW4gY2hlY2sg Zm9yIGEgbG9ja3VwICovCisJCQkgKiBhbnl3YXkgd2Ugd2lsbCBqdXN0IHdhaXQgZm9yIHRoZSBt aW5pbXVtIGFtb3VudCBhbmQgdGhlbiBjaGVjayBmb3IgYSBsb2NrdXAKKwkJCSAqLwogCQkJdGlt ZW91dCA9IDE7CiAJCX0KLQkJLyogc2F2ZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlIHVzZWQgdG8g Y2hlY2sgZm9yIEdQVSBsb2NrdXBzICovCi0JCXNlcSA9IGF0b21pYzY0X3JlYWQoJnJkZXYtPmZl bmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9zZXEpOworCQlzZXEgPSBhdG9taWM2NF9yZWFkKCZy ZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9zZXEpOwogCQkvKiBTYXZlIGN1cnJlbnQgbGFzdCBh Y3Rpdml0eSB2YWx1ZWUsIHVzZWQgdG8gY2hlY2sgZm9yIEdQVSBsb2NrdXBzICovCi0JCWxhc3Rf YWN0aXZpdHkgPSByZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZpdHk7Ci0J CXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJ CWxhc3RfYWN0aXZpdHkgPSByZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9hY3Rpdml0eTsKIAog CQl0cmFjZV9yYWRlb25fZmVuY2Vfd2FpdF9iZWdpbihyZGV2LT5kZGV2LCBzZXEpOwotCQlyYWRl b25faXJxX2ttc19zd19pcnFfZ2V0KHJkZXYsIGZlbmNlLT5yaW5nKTsKKwkJcmFkZW9uX2lycV9r bXNfc3dfaXJxX2dldChyZGV2LCByaW5nKTsKIAkJaWYgKGludHIpIHsKLQkJCXIgPSB3YWl0X2V2 ZW50X2ludGVycnVwdGlibGVfdGltZW91dCgKLQkJCQlyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJp bmddLnF1ZXVlLAotCQkJCShzaWduYWxlZCA9IHJhZGVvbl9mZW5jZV9zaWduYWxlZChmZW5jZSkp LCB0aW1lb3V0KTsKKwkJCXIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChyZGV2 LT5mZW5jZV9kcnZbcmluZ10ucXVldWUsCisJCQkJCQkJICAgICAoc2lnbmFsZWQgPSByYWRlb25f c2VxX3NpZ25hbGVkKHJkZXYsIHRhcmdldF9zZXEsIHJpbmcpKSwKKwkJCQkJCQkgICAgIHRpbWVv dXQpOwogCQl9IGVsc2UgewotCQkJciA9IHdhaXRfZXZlbnRfdGltZW91dCgKLQkJCQlyZGV2LT5m ZW5jZV9kcnZbZmVuY2UtPnJpbmddLnF1ZXVlLAotCQkJCShzaWduYWxlZCA9IHJhZGVvbl9mZW5j ZV9zaWduYWxlZChmZW5jZSkpLCB0aW1lb3V0KTsKKwkJCXIgPSB3YWl0X2V2ZW50X3RpbWVvdXQo cmRldi0+ZmVuY2VfZHJ2W3JpbmddLnF1ZXVlLAorCQkJCQkgICAgICAgKHNpZ25hbGVkID0gcmFk ZW9uX3NlcV9zaWduYWxlZChyZGV2LCB0YXJnZXRfc2VxLCByaW5nKSksCisJCQkJCSAgICAgICB0 aW1lb3V0KTsKIAkJfQotCQlyYWRlb25faXJxX2ttc19zd19pcnFfcHV0KHJkZXYsIGZlbmNlLT5y aW5nKTsKKwkJcmFkZW9uX2lycV9rbXNfc3dfaXJxX3B1dChyZGV2LCByaW5nKTsKIAkJaWYgKHVu bGlrZWx5KHIgPCAwKSkgewogCQkJcmV0dXJuIHI7CiAJCX0KQEAgLTI3OSwxOSArMjU0LDI0IEBA IGludCByYWRlb25fZmVuY2Vfd2FpdChzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZSwgYm9vbCBp bnRyKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQl3cml0ZV9sb2NrX2lycXNhdmUoJnJkZXYt PmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQkvKiBjaGVjayBpZiBzZXF1ZW5jZSB2YWx1ZSBo YXMgY2hhbmdlZCBzaW5jZSBsYXN0X2FjdGl2aXR5ICovCisJCQlpZiAoc2VxICE9IGF0b21pYzY0 X3JlYWQoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3NlcSkpIHsKKwkJCQljb250aW51ZTsK KwkJCX0KIAkJCS8qIHRlc3QgaWYgc29tZWJvZHkgZWxzZSBoYXMgYWxyZWFkeSBkZWNpZGVkIHRo YXQgdGhpcyBpcyBhIGxvY2t1cCAqLwotCQkJaWYgKGxhc3RfYWN0aXZpdHkgIT0gcmRldi0+ZmVu Y2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X2FjdGl2aXR5KSB7Ci0JCQkJd3JpdGVfdW5sb2NrX2ly cXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQlpZiAobGFzdF9hY3Rp dml0eSAhPSByZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9hY3Rpdml0eSkgewogCQkJCWNvbnRp bnVlOwogCQkJfQogCi0JCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9j aywgaXJxX2ZsYWdzKTsKLQotCQkJaWYgKHJhZGVvbl9yaW5nX2lzX2xvY2t1cChyZGV2LCBmZW5j ZS0+cmluZywgJnJkZXYtPnJpbmdbZmVuY2UtPnJpbmddKSkgeworCQkJaWYgKHJhZGVvbl9yaW5n X2lzX2xvY2t1cChyZGV2LCByaW5nLCAmcmRldi0+cmluZ1tyaW5nXSkpIHsKIAkJCQkvKiBnb29k IG5ld3Mgd2UgYmVsaWV2ZSBpdCdzIGEgbG9ja3VwICovCiAJCQkJZGV2X3dhcm4ocmRldi0+ZGV2 LCAiR1BVIGxvY2t1cCAod2FpdGluZyBmb3IgMHglMDE2bGx4IGxhc3QgZmVuY2UgaWQgMHglMDE2 bGx4KVxuIiwKLQkJCQkJIGZlbmNlLT5zZXEsIHNlcSk7CisJCQkJCSB0YXJnZXRfc2VxLCBzZXEp OworCisJCQkJLyogY2hhbmdlIGxhc3QgYWN0aXZpdHkgc28gbm9ib2R5IGVsc2UgdGhpbmsgdGhl cmUgaXMgYSBsb2NrdXAgKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX05VTV9SSU5HUzsg KytpKSB7CisJCQkJCXJkZXYtPmZlbmNlX2RydltpXS5sYXN0X2FjdGl2aXR5ID0gamlmZmllczsK KwkJCQl9CiAKIAkJCQkvKiBjaGFuZ2UgbGFzdCBhY3Rpdml0eSBzbyBub2JvZHkgZWxzZSB0aGlu ayB0aGVyZSBpcyBhIGxvY2t1cCAqLwogCQkJCWZvciAoaSA9IDA7IGkgPCBSQURFT05fTlVNX1JJ TkdTOyArK2kpIHsKQEAgLTI5OSw3ICsyNzksNyBAQCBpbnQgcmFkZW9uX2ZlbmNlX3dhaXQoc3Ry dWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UsIGJvb2wgaW50cikKIAkJCQl9CiAKIAkJCQkvKiBtYXJr IHRoZSByaW5nIGFzIG5vdCByZWFkeSBhbnkgbW9yZSAqLwotCQkJCXJkZXYtPnJpbmdbZmVuY2Ut PnJpbmddLnJlYWR5ID0gZmFsc2U7CisJCQkJcmRldi0+cmluZ1tyaW5nXS5yZWFkeSA9IGZhbHNl OwogCQkJCXJldHVybiAtRURFQURMSzsKIAkJCX0KIAkJfQpAQCAtMzA3LDUyICsyODcsNDcgQEAg aW50IHJhZGVvbl9mZW5jZV93YWl0KHN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNlLCBib29sIGlu dHIpCiAJcmV0dXJuIDA7CiB9CiAKLWludCByYWRlb25fZmVuY2Vfd2FpdF9uZXh0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2LCBpbnQgcmluZykKK2ludCByYWRlb25fZmVuY2Vfd2FpdChzdHJ1 Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZSwgYm9vbCBpbnRyKQogewotCXVuc2lnbmVkIGxvbmcgaXJx X2ZsYWdzOwotCXN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNlOwogCWludCByOwogCi0Jd3JpdGVf bG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwotCWlmICghcmRldi0+ cmluZ1tyaW5nXS5yZWFkeSkgewotCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVu Y2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJcmV0dXJuIC1FQlVTWTsKKwlpZiAoZmVuY2UgPT0gTlVM TCkgeworCQlXQVJOKDEsICJRdWVyeWluZyBhbiBpbnZhbGlkIGZlbmNlIDogJXAgIVxuIiwgZmVu Y2UpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JaWYgKGxpc3RfZW1wdHkoJnJkZXYtPmZlbmNl X2RydltyaW5nXS5lbWl0dGVkKSkgewotCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJcmV0dXJuIC1FTk9FTlQ7CisKKwlyID0gcmFkZW9u X3dhaXRfc2VxKGZlbmNlLT5yZGV2LCBmZW5jZS0+c2VxLCBmZW5jZS0+cmluZywgaW50cik7CisJ aWYgKHIpIHsKKwkJcmV0dXJuIHI7CiAJfQotCWZlbmNlID0gbGlzdF9lbnRyeShyZGV2LT5mZW5j ZV9kcnZbcmluZ10uZW1pdHRlZC5uZXh0LAotCQkJICAgc3RydWN0IHJhZGVvbl9mZW5jZSwgbGlz dCk7Ci0JcmFkZW9uX2ZlbmNlX3JlZihmZW5jZSk7Ci0Jd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUo JnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7Ci0JciA9IHJhZGVvbl9mZW5jZV93YWl0KGZl bmNlLCBmYWxzZSk7Ci0JcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7Ci0JcmV0dXJuIHI7CisJ ZmVuY2UtPnNlcSA9IFJBREVPTl9GRU5DRV9TSUdOQUxFRF9TRVE7CisJcmV0dXJuIDA7CiB9CiAK LWludCByYWRlb25fZmVuY2Vfd2FpdF9lbXB0eShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg aW50IHJpbmcpCitpbnQgcmFkZW9uX2ZlbmNlX3dhaXRfbmV4dChzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldiwgaW50IHJpbmcpCiB7Ci0JdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7Ci0Jc3RydWN0 IHJhZGVvbl9mZW5jZSAqZmVuY2U7Ci0JaW50IHI7CisJdWludDY0X3Qgc2VxOwogCi0Jd3JpdGVf bG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwotCWlmICghcmRldi0+ cmluZ1tyaW5nXS5yZWFkeSkgewotCQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVu Y2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0JaWYgKGxpc3RfZW1w dHkoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5lbWl0dGVkKSkgewotCQl3cml0ZV91bmxvY2tfaXJx cmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKwkvKiBXZSBhcmUgbm90IHBy b3RlY3RlZCBieSByaW5nIGxvY2sgd2hlbiByZWFkaW5nIGN1cnJlbnQgc2VxIGJ1dAorCSAqIGl0 J3Mgb2sgYXMgd29yc3QgY2FzZSBpcyB3ZSByZXR1cm4gdG8gZWFybHkgd2hpbGUgd2UgY291bGQg aGF2ZQorCSAqIHdhaXQuCisJICovCisJc2VxID0gYXRvbWljNjRfcmVhZCgmcmRldi0+ZmVuY2Vf ZHJ2W3JpbmddLmxhc3Rfc2VxKSArIDFVTEw7CisJaWYgKHNlcSA+PSByZGV2LT5mZW5jZV9kcnZb cmluZ10uc2VxKSB7CisJCS8qIG5vdGhpbmcgdG8gd2FpdCBmb3IsIGxhc3Rfc2VxIGlzIGFscmVh ZHkgdGhlIGxhc3QgZW1pdGVkIGZlbmNlICovCiAJCXJldHVybiAwOwogCX0KLQlmZW5jZSA9IGxp c3RfZW50cnkocmRldi0+ZmVuY2VfZHJ2W3JpbmddLmVtaXR0ZWQucHJldiwKLQkJCSAgIHN0cnVj dCByYWRlb25fZmVuY2UsIGxpc3QpOwotCXJhZGVvbl9mZW5jZV9yZWYoZmVuY2UpOwotCXdyaXRl X3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwotCXIgPSBy YWRlb25fZmVuY2Vfd2FpdChmZW5jZSwgZmFsc2UpOwotCXJhZGVvbl9mZW5jZV91bnJlZigmZmVu Y2UpOwotCXJldHVybiByOworCXJldHVybiByYWRlb25fd2FpdF9zZXEocmRldiwgc2VxLCByaW5n LCBmYWxzZSk7Cit9CisKK2ludCByYWRlb25fZmVuY2Vfd2FpdF9lbXB0eShzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgaW50IHJpbmcpCit7CisJLyogV2UgYXJlIG5vdCBwcm90ZWN0ZWQgYnkg cmluZyBsb2NrIHdoZW4gcmVhZGluZyBjdXJyZW50IHNlcQorCSAqIGJ1dCBpdCdzIG9rIGFzIHdh aXQgZW1wdHkgaXMgY2FsbCBmcm9tIHBsYWNlIHdoZXJlIG5vIG1vcmUKKwkgKiBhY3Rpdml0eSBj YW4gYmUgc2NoZWR1bGVkIHNvIHRoZXJlIHdvbid0IGJlIGNvbmN1cnJlbnQgYWNjZXNzCisJICog dG8gc2VxIHZhbHVlLgorCSAqLworCXJldHVybiByYWRlb25fd2FpdF9zZXEocmRldiwgcmRldi0+ ZmVuY2VfZHJ2W3JpbmddLnNlcSwgcmluZywgZmFsc2UpOwogfQogCiBzdHJ1Y3QgcmFkZW9uX2Zl bmNlICpyYWRlb25fZmVuY2VfcmVmKHN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNlKQpAQCAtMzcz LDQ3ICszNDgsMzUgQEAgdm9pZCByYWRlb25fZmVuY2VfdW5yZWYoc3RydWN0IHJhZGVvbl9mZW5j ZSAqKmZlbmNlKQogCiB2b2lkIHJhZGVvbl9mZW5jZV9wcm9jZXNzKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBpbnQgcmluZykKIHsKLQl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKIAlib29s IHdha2U7CiAKLQl3cml0ZV9sb2NrX2lycXNhdmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFn cyk7Ci0Jd2FrZSA9IHJhZGVvbl9mZW5jZV9wb2xsX2xvY2tlZChyZGV2LCByaW5nKTsKLQl3cml0 ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKwl3YWtl ID0gcmFkZW9uX2ZlbmNlX3BvbGwocmRldiwgcmluZyk7CiAJaWYgKHdha2UpIHsKIAkJd2FrZV91 cF9hbGwoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5xdWV1ZSk7CiAJfQogfQogCi1pbnQgcmFkZW9u X2ZlbmNlX2NvdW50X2VtaXR0ZWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5n KQordW5zaWduZWQgcmFkZW9uX2ZlbmNlX2NvdW50X2VtaXR0ZWQoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIGludCByaW5nKQogewotCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwotCWludCBu b3RfcHJvY2Vzc2VkID0gMDsKKwl1aW50NjRfdCBlbWl0dGVkOwogCi0JcmVhZF9sb2NrX2lycXNh dmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7Ci0JaWYgKCFyZGV2LT5mZW5jZV9kcnZb cmluZ10uaW5pdGlhbGl6ZWQpIHsKLQkJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVu Y2VfbG9jaywgaXJxX2ZsYWdzKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKCFsaXN0X2VtcHR5 KCZyZGV2LT5mZW5jZV9kcnZbcmluZ10uZW1pdHRlZCkpIHsKLQkJc3RydWN0IGxpc3RfaGVhZCAq cHRyOwotCQlsaXN0X2Zvcl9lYWNoKHB0ciwgJnJkZXYtPmZlbmNlX2RydltyaW5nXS5lbWl0dGVk KSB7Ci0JCQkvKiBjb3VudCB1cCB0byAzLCB0aGF0J3MgZW5vdWdodCBpbmZvICovCi0JCQlpZiAo Kytub3RfcHJvY2Vzc2VkID49IDMpCi0JCQkJYnJlYWs7Ci0JCX0KKwlyYWRlb25fZmVuY2VfcG9s bChyZGV2LCByaW5nKTsKKwkvKiBXZSBhcmUgbm90IHByb3RlY3RlZCBieSByaW5nIGxvY2sgd2hl biByZWFkaW5nIHRoZSBsYXN0IHNlcXVlbmNlCisJICogYnV0IGl0J3Mgb2sgdG8gcmVwb3J0IHNs aWdodGx5IHdyb25nIGZlbmNlIGNvdW50IGhlcmUuCisJICovCisJZW1pdHRlZCA9IHJkZXYtPmZl bmNlX2RydltyaW5nXS5zZXEgLSBhdG9taWM2NF9yZWFkKCZyZGV2LT5mZW5jZV9kcnZbcmluZ10u bGFzdF9zZXEpOworCS8qIHRvIGF2b2lkIDMyYml0cyB3YXJwIGFyb3VuZCAqLworCWlmIChlbWl0 dGVkID4gMHgxMDAwMDAwMCkgeworCQllbWl0dGVkID0gMHgxMDAwMDAwMDsKIAl9Ci0JcmVhZF91 bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKLQlyZXR1cm4g bm90X3Byb2Nlc3NlZDsKKwlyZXR1cm4gKHVuc2lnbmVkKWVtaXR0ZWQ7CiB9CiAKIGludCByYWRl b25fZmVuY2VfZHJpdmVyX3N0YXJ0X3Jpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGlu dCByaW5nKQogewotCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwogCXVpbnQ2NF90IGluZGV4Owog CWludCByOwogCi0Jd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOwogCXJhZGVvbl9zY3JhdGNoX2ZyZWUocmRldiwgcmRldi0+ZmVuY2VfZHJ2W3JpbmddLnNj cmF0Y2hfcmVnKTsKIAlpZiAocmRldi0+d2IudXNlX2V2ZW50KSB7CiAJCXJkZXYtPmZlbmNlX2Ry dltyaW5nXS5zY3JhdGNoX3JlZyA9IDA7CkBAIC00MjIsNyArMzg1LDYgQEAgaW50IHJhZGVvbl9m ZW5jZV9kcml2ZXJfc3RhcnRfcmluZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJp bmcpCiAJCXIgPSByYWRlb25fc2NyYXRjaF9nZXQocmRldiwgJnJkZXYtPmZlbmNlX2RydltyaW5n XS5zY3JhdGNoX3JlZyk7CiAJCWlmIChyKSB7CiAJCQlkZXZfZXJyKHJkZXYtPmRldiwgImZlbmNl IGZhaWxlZCB0byBnZXQgc2NyYXRjaCByZWdpc3RlclxuIik7Ci0JCQl3cml0ZV91bmxvY2tfaXJx cmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKIAkJCXJldHVybiByOwogCQl9 CiAJCWluZGV4ID0gUkFERU9OX1dCX1NDUkFUQ0hfT0ZGU0VUICsKQEAgLTQzMyw5ICszOTUsOCBA QCBpbnQgcmFkZW9uX2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2LCBpbnQgcmluZykKIAlyZGV2LT5mZW5jZV9kcnZbcmluZ10uZ3B1X2FkZHIgPSByZGV2 LT53Yi5ncHVfYWRkciArIGluZGV4OwogCXJhZGVvbl9mZW5jZV93cml0ZShyZGV2LCByZGV2LT5m ZW5jZV9kcnZbcmluZ10uc2VxLCByaW5nKTsKIAlyZGV2LT5mZW5jZV9kcnZbcmluZ10uaW5pdGlh bGl6ZWQgPSB0cnVlOwotCURSTV9JTkZPKCJmZW5jZSBkcml2ZXIgb24gcmluZyAlZCB1c2UgZ3B1 IGFkZHIgMHglMDE2bGx4IGFuZCBjcHUgYWRkciAweCVwXG4iLAorCWRldl9pbmZvKHJkZXYtPmRl diwgImZlbmNlIGRyaXZlciBvbiByaW5nICVkIHVzZSBncHUgYWRkciAweCUwMTZsbHggYW5kIGNw dSBhZGRyIDB4JXBcbiIsCiAJCSByaW5nLCByZGV2LT5mZW5jZV9kcnZbcmluZ10uZ3B1X2FkZHIs IHJkZXYtPmZlbmNlX2RydltyaW5nXS5jcHVfYWRkcik7Ci0Jd3JpdGVfdW5sb2NrX2lycXJlc3Rv cmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ0 NywyMiArNDA4LDE4IEBAIHN0YXRpYyB2b2lkIHJhZGVvbl9mZW5jZV9kcml2ZXJfaW5pdF9yaW5n KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgcmluZykKIAkvKiB3ZSBzdGFydCBhdCBv bmUgKi8KIAlyZGV2LT5mZW5jZV9kcnZbcmluZ10uc2VxID0gMTsKIAlhdG9taWM2NF9zZXQoJnJk ZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3NlcSwgMCk7Ci0JSU5JVF9MSVNUX0hFQUQoJnJkZXYt PmZlbmNlX2RydltyaW5nXS5lbWl0dGVkKTsKLQlJTklUX0xJU1RfSEVBRCgmcmRldi0+ZmVuY2Vf ZHJ2W3JpbmddLnNpZ25hbGVkKTsKKwlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9hY3Rpdml0 eSA9IGppZmZpZXM7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmcmRldi0+ZmVuY2VfZHJ2W3Jpbmdd LnF1ZXVlKTsKIAlyZGV2LT5mZW5jZV9kcnZbcmluZ10uaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIH0K IAogaW50IHJhZGVvbl9mZW5jZV9kcml2ZXJfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRl dikKIHsKLQl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKIAlpbnQgcmluZzsKIAotCXdyaXRlX2xv Y2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKIAlmb3IgKHJpbmcgPSAw OyByaW5nIDwgUkFERU9OX05VTV9SSU5HUzsgcmluZysrKSB7CiAJCXJhZGVvbl9mZW5jZV9kcml2 ZXJfaW5pdF9yaW5nKHJkZXYsIHJpbmcpOwogCX0KLQl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgm cmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKIAlpZiAocmFkZW9uX2RlYnVnZnNfZmVuY2Vf aW5pdChyZGV2KSkgewogCQlkZXZfZXJyKHJkZXYtPmRldiwgImZlbmNlIGRlYnVnZnMgZmlsZSBj cmVhdGlvbiBmYWlsZWRcbiIpOwogCX0KQEAgLTQ3MSw3ICs0MjgsNiBAQCBpbnQgcmFkZW9uX2Zl bmNlX2RyaXZlcl9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCiB2b2lkIHJhZGVv bl9mZW5jZV9kcml2ZXJfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsKLQl1bnNp Z25lZCBsb25nIGlycV9mbGFnczsKIAlpbnQgcmluZzsKIAogCWZvciAocmluZyA9IDA7IHJpbmcg PCBSQURFT05fTlVNX1JJTkdTOyByaW5nKyspIHsKQEAgLTQ3OSw5ICs0MzUsNyBAQCB2b2lkIHJh ZGVvbl9mZW5jZV9kcml2ZXJfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAkJCWNv bnRpbnVlOwogCQlyYWRlb25fZmVuY2Vfd2FpdF9lbXB0eShyZGV2LCByaW5nKTsKIAkJd2FrZV91 cF9hbGwoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5xdWV1ZSk7Ci0JCXdyaXRlX2xvY2tfaXJxc2F2 ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKIAkJcmFkZW9uX3NjcmF0Y2hfZnJlZShy ZGV2LCByZGV2LT5mZW5jZV9kcnZbcmluZ10uc2NyYXRjaF9yZWcpOwotCQl3cml0ZV91bmxvY2tf aXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKIAkJcmRldi0+ZmVuY2Vf ZHJ2W3JpbmddLmluaXRpYWxpemVkID0gZmFsc2U7CiAJfQogfQpAQCAtNDk2LDcgKzQ1MCw2IEBA IHN0YXRpYyBpbnQgcmFkZW9uX2RlYnVnZnNfZmVuY2VfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCiAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9p bmZvX25vZGUgKiltLT5wcml2YXRlOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5t aW5vci0+ZGV2OwogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKLQlzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZTsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7 IGkgPCBSQURFT05fTlVNX1JJTkdTOyArK2kpIHsKQEAgLTUwNiwxMiArNDU5LDggQEAgc3RhdGlj IGludCByYWRlb25fZGVidWdmc19mZW5jZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKIAkJc2VxX3ByaW50ZihtLCAiLS0tIHJpbmcgJWQgLS0tXG4iLCBpKTsKIAkJc2VxX3By aW50ZihtLCAiTGFzdCBzaWduYWxlZCBmZW5jZSAweCUwMTZseFxuIiwKIAkJCSAgIGF0b21pYzY0 X3JlYWQoJnJkZXYtPmZlbmNlX2RydltpXS5sYXN0X3NlcSkpOwotCQlpZiAoIWxpc3RfZW1wdHko JnJkZXYtPmZlbmNlX2RydltpXS5lbWl0dGVkKSkgewotCQkJZmVuY2UgPSBsaXN0X2VudHJ5KHJk ZXYtPmZlbmNlX2RydltpXS5lbWl0dGVkLnByZXYsCi0JCQkJCSAgIHN0cnVjdCByYWRlb25fZmVu Y2UsIGxpc3QpOwotCQkJc2VxX3ByaW50ZihtLCAiTGFzdCBlbWl0dGVkIGZlbmNlICVwIHdpdGgg MHglMDE2bGx4XG4iLAotCQkJCSAgIGZlbmNlLCAgZmVuY2UtPnNlcSk7Ci0JCX0KKwkJc2VxX3By aW50ZihtLCAiTGFzdCBlbWl0dGVkICAweCUwMTZsbHhcbiIsCisJCQkgICByZGV2LT5mZW5jZV9k cnZbaV0uc2VxKTsKIAl9CiAJcmV0dXJuIDA7CiB9Ci0tIAoxLjcuNy42CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=