From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 13/26] drm/radeon: rip out the ib pool Date: Wed, 25 Apr 2012 14:46:30 +0200 Message-ID: <1335358003-2987-14-git-send-email-deathsimple@vodafone.de> References: <1335358003-2987-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from outgoing.email.vodafone.de (outgoing.email.vodafone.de [139.7.28.128]) by gabe.freedesktop.org (Postfix) with ESMTP id 4565BA0D44 for ; Wed, 25 Apr 2012 05:46:52 -0700 (PDT) In-Reply-To: <1335358003-2987-1-git-send-email-deathsimple@vodafone.de> 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: =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org SXQgaXNuJ3QgbmVjZXNzYXJ5IGFueSBtb3JlIGFuZCB0aGUgc3ViYWxsb2NhdG9yCnNlZW1zIHRv IHBlcmZvcm0gZXZlbiBiZXR0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxk ZWF0aHNpbXBsZUB2b2RhZm9uZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bi5oICAgICAgICAgICB8ICAgMjIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9k ZXZpY2UuYyAgICB8ICAgIDEgLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2Uu YyAgICAgfCAgIDQ0ICsrKysrLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2FydC5j ICAgICAgfCAgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9yaW5nLmMgICAg ICB8ICAyNDAgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fc2VtYXBob3JlLmMgfCAgICA2ICstCiA2IGZpbGVzIGNoYW5nZWQsIDEyMyBp bnNlcnRpb25zKCspLCAyMDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5k ZXggOTQ0ZGIwNC4uYjk0NmM5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCkBAIC0yNDksNiAr MjQ5LDggQEAgZXh0ZXJuIHZvaWQgZXZlcmdyZWVuX3RpbGluZ19maWVsZHModW5zaWduZWQgdGls aW5nX2ZsYWdzLCB1bnNpZ25lZCAqYmFua3csCiAvKgogICogRmVuY2VzLgogICovCitzdHJ1Y3Qg cmFkZW9uX2liOworCiBzdHJ1Y3QgcmFkZW9uX2ZlbmNlX2RyaXZlciB7CiAJdWludDMyX3QJCQlz Y3JhdGNoX3JlZzsKIAl1aW50NjRfdAkJCWdwdV9hZGRyOwpAQCAtMjU5LDcgKzI2MSw2IEBAIHN0 cnVjdCByYWRlb25fZmVuY2VfZHJpdmVyIHsKIAl3YWl0X3F1ZXVlX2hlYWRfdAkJcXVldWU7CiAJ c3RydWN0IGxpc3RfaGVhZAkJY3JlYXRlZDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQllbWl0dGVkOwot CXN0cnVjdCBsaXN0X2hlYWQJCXNpZ25hbGVkOwogCWJvb2wJCQkJaW5pdGlhbGl6ZWQ7CiB9Owog CkBAIC0yNzQsNiArMjc1LDcgQEAgc3RydWN0IHJhZGVvbl9mZW5jZSB7CiAJLyogUkIsIERNQSwg ZXRjLiAqLwogCWludAkJCQlyaW5nOwogCXN0cnVjdCByYWRlb25fc2VtYXBob3JlCQkqc2VtYXBo b3JlOworCXN0cnVjdCByYWRlb25faWIJCSppYjsKIH07CiAKIGludCByYWRlb25fZmVuY2VfZHJp dmVyX3N0YXJ0X3Jpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5nKTsKQEAg LTI4OSw2ICsyOTEsNyBAQCBpbnQgcmFkZW9uX2ZlbmNlX3dhaXRfZW1wdHkoc3RydWN0IHJhZGVv bl9kZXZpY2UgKnJkZXYsIGludCByaW5nKTsKIHN0cnVjdCByYWRlb25fZmVuY2UgKnJhZGVvbl9m ZW5jZV9yZWYoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UpOwogdm9pZCByYWRlb25fZmVuY2Vf dW5yZWYoc3RydWN0IHJhZGVvbl9mZW5jZSAqKmZlbmNlKTsKIGludCByYWRlb25fZmVuY2VfY291 bnRfZW1pdHRlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpOworYm9vbCBy YWRlb25fZmVuY2Vfc2V0X2Fzc29jaWF0ZWRfaWIoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2Us IHN0cnVjdCByYWRlb25faWIgKmliKTsKIAogLyoKICAqIFRpbGluZyByZWdpc3RlcnMKQEAgLTYx Miw3ICs2MTUsNiBAQCB2b2lkIHJhZGVvbl9pcnFfa21zX3BmbGlwX2lycV9wdXQoc3RydWN0IHJh ZGVvbl9kZXZpY2UgKnJkZXYsIGludCBjcnRjKTsKIAogc3RydWN0IHJhZGVvbl9pYiB7CiAJc3Ry dWN0IHJhZGVvbl9zYV9ibwlzYV9ibzsKLQl1bnNpZ25lZAkJaWR4OwogCXVpbnQzMl90CQlsZW5n dGhfZHc7CiAJdWludDY0X3QJCWdwdV9hZGRyOwogCXVpbnQzMl90CQkqcHRyOwpAQCAtNjIxLDE4 ICs2MjMsNiBAQCBzdHJ1Y3QgcmFkZW9uX2liIHsKIAlib29sCQkJaXNfY29uc3RfaWI7CiB9Owog Ci0vKgotICogbG9ja2luZyAtCi0gKiBtdXRleCBwcm90ZWN0cyBzY2hlZHVsZWRfaWJzLCByZWFk eSwgYWxsb2NfYm0KLSAqLwotc3RydWN0IHJhZGVvbl9pYl9wb29sIHsKLQlzdHJ1Y3QgcmFkZW9u X211dGV4CQltdXRleDsKLQlzdHJ1Y3QgcmFkZW9uX3NhX21hbmFnZXIJc2FfbWFuYWdlcjsKLQlz dHJ1Y3QgcmFkZW9uX2liCQlpYnNbUkFERU9OX0lCX1BPT0xfU0laRV07Ci0JYm9vbAkJCQlyZWFk eTsKLQl1bnNpZ25lZAkJCWhlYWRfaWQ7Ci19OwotCiBzdHJ1Y3QgcmFkZW9uX3JpbmcgewogCXN0 cnVjdCByYWRlb25fYm8JKnJpbmdfb2JqOwogCXZvbGF0aWxlIHVpbnQzMl90CSpyaW5nOwpAQCAt NzczLDcgKzc2Myw2IEBAIHN0cnVjdCBzaV9ybGMgewogaW50IHJhZGVvbl9pYl9nZXQoc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5nLAogCQkgIHN0cnVjdCByYWRlb25faWIgKipp YiwgdW5zaWduZWQgc2l6ZSk7CiB2b2lkIHJhZGVvbl9pYl9mcmVlKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICoqaWIpOwotYm9vbCByYWRlb25faWJfdHJ5X2Zy ZWUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25faWIgKmliKTsKIGlu dCByYWRlb25faWJfc2NoZWR1bGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCBy YWRlb25faWIgKmliKTsKIGludCByYWRlb25faWJfcG9vbF9pbml0KHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2KTsKIHZvaWQgcmFkZW9uX2liX3Bvb2xfZmluaShzdHJ1Y3QgcmFkZW9uX2Rldmlj ZSAqcmRldik7CkBAIC0xNTA2LDcgKzE0OTUsOCBAQCBzdHJ1Y3QgcmFkZW9uX2RldmljZSB7CiAJ cndsb2NrX3QJCQlmZW5jZV9sb2NrOwogCXN0cnVjdCByYWRlb25fZmVuY2VfZHJpdmVyCWZlbmNl X2RydltSQURFT05fTlVNX1JJTkdTXTsKIAlzdHJ1Y3QgcmFkZW9uX3JpbmcJCXJpbmdbUkFERU9O X05VTV9SSU5HU107Ci0Jc3RydWN0IHJhZGVvbl9pYl9wb29sCQlpYl9wb29sOworCWJvb2wJCQkJ aWJfcG9vbF9yZWFkeTsKKwlzdHJ1Y3QgcmFkZW9uX3NhX21hbmFnZXIJc2FfbWFuYWdlcjsKIAlz dHJ1Y3QgcmFkZW9uX2lycQkJaXJxOwogCXN0cnVjdCByYWRlb25fYXNpYwkJKmFzaWM7CiAJc3Ry dWN0IHJhZGVvbl9nZW0JCWdlbTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMK aW5kZXggNTk2NmIzNS4uODUzZTFjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2 aWNlLmMKQEAgLTcyMyw3ICs3MjMsNiBAQCBpbnQgcmFkZW9uX2RldmljZV9pbml0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2LAogCS8qIG11dGV4IGluaXRpYWxpemF0aW9uIGFyZSBhbGwgZG9u ZSBoZXJlIHNvIHdlCiAJICogY2FuIHJlY2FsbCBmdW5jdGlvbiB3aXRob3V0IGhhdmluZyBsb2Nr aW5nIGlzc3VlcyAqLwogCXJhZGVvbl9tdXRleF9pbml0KCZyZGV2LT5jc19tdXRleCk7Ci0JcmFk ZW9uX211dGV4X2luaXQoJnJkZXYtPmliX3Bvb2wubXV0ZXgpOwogCWZvciAoaSA9IDA7IGkgPCBS QURFT05fTlVNX1JJTkdTOyArK2kpCiAJCW11dGV4X2luaXQoJnJkZXYtPnJpbmdbaV0ubXV0ZXgp OwogCW11dGV4X2luaXQoJnJkZXYtPmRjX2h3X2kyY19tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZmVuY2UuYwppbmRleCAyZDEzODQzLi41YmIxYmM0ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9mZW5jZS5jCkBAIC04Myw3ICs4Myw4IEBAIGludCByYWRlb25fZmVuY2Vf ZW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVu Y2UpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHJhZGVvbl9mZW5jZV9wb2xsX2xvY2tl ZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCitzdGF0aWMgYm9vbCByYWRl b25fZmVuY2VfcG9sbF9sb2NrZWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5n LAorCQkJCSAgICAgc3RydWN0IGxpc3RfaGVhZCAqc2lnbmFsZWQpCiB7CiAJc3RydWN0IHJhZGVv bl9mZW5jZSAqZmVuY2U7CiAJc3RydWN0IGxpc3RfaGVhZCAqaSwgKm47CkBAIC0xMTAsNyArMTEx LDcgQEAgc3RhdGljIGJvb2wgcmFkZW9uX2ZlbmNlX3BvbGxfbG9ja2VkKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LCBpbnQgcmluZykKIAkJaSA9IG47CiAJCWRvIHsKIAkJCW4gPSBpLT5wcmV2 OwotCQkJbGlzdF9tb3ZlX3RhaWwoaSwgJnJkZXYtPmZlbmNlX2RydltyaW5nXS5zaWduYWxlZCk7 CisJCQlsaXN0X21vdmVfdGFpbChpLCBzaWduYWxlZCk7CiAJCQlmZW5jZSA9IGxpc3RfZW50cnko aSwgc3RydWN0IHJhZGVvbl9mZW5jZSwgbGlzdCk7CiAJCQlmZW5jZS0+c2lnbmFsZWQgPSB0cnVl OwogCQkJaSA9IG47CkBAIC0xMjAsNiArMTIxLDE4IEBAIHN0YXRpYyBib29sIHJhZGVvbl9mZW5j ZV9wb2xsX2xvY2tlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiAJcmV0 dXJuIHdha2U7CiB9CiAKK3N0YXRpYyB2b2lkIHJhZGVvbl9mZW5jZV9wcm9jZXNzX3NpZ25hbGVk KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpzaWduYWxlZCkK K3sKKwlzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICppLCAq bjsKKworCWxpc3RfZm9yX2VhY2hfc2FmZShpLCBuLCBzaWduYWxlZCkgeworCQlmZW5jZSA9IGxp c3RfZW50cnkoaSwgc3RydWN0IHJhZGVvbl9mZW5jZSwgbGlzdCk7CisJCWxpc3RfZGVsX2luaXQo JmZlbmNlLT5saXN0KTsKKwkJcmFkZW9uX2liX2ZyZWUocmRldiwgJmZlbmNlLT5pYik7CisJfQor fQorCiBzdGF0aWMgdm9pZCByYWRlb25fZmVuY2VfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikK IHsKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKQEAgLTE1Miw2ICsxNjUsNyBAQCBpbnQgcmFk ZW9uX2ZlbmNlX2NyZWF0ZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAkoKmZlbmNlKS0+ c2VxID0gMDsKIAkoKmZlbmNlKS0+cmluZyA9IHJpbmc7CiAJKCpmZW5jZSktPnNlbWFwaG9yZSA9 IE5VTEw7CisJKCpmZW5jZSktPmliID0gTlVMTDsKIAlJTklUX0xJU1RfSEVBRCgmKCpmZW5jZSkt Pmxpc3QpOwogCiAJd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOwpAQCAtMTY0LDYgKzE3OCw3IEBAIGJvb2wgcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKHN0cnVj dCByYWRlb25fZmVuY2UgKmZlbmNlKQogewogCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwogCWJv b2wgc2lnbmFsZWQgPSBmYWxzZTsKKwlMSVNUX0hFQUQoc2lnbGlzdCk7CiAKIAlpZiAoIWZlbmNl KQogCQlyZXR1cm4gdHJ1ZTsKQEAgLTE3OSwxMCArMTk0LDEyIEBAIGJvb2wgcmFkZW9uX2ZlbmNl X3NpZ25hbGVkKHN0cnVjdCByYWRlb25fZmVuY2UgKmZlbmNlKQogCQlzaWduYWxlZCA9IHRydWU7 CiAJfQogCWlmICghc2lnbmFsZWQpIHsKLQkJcmFkZW9uX2ZlbmNlX3BvbGxfbG9ja2VkKGZlbmNl LT5yZGV2LCBmZW5jZS0+cmluZyk7CisJCXJhZGVvbl9mZW5jZV9wb2xsX2xvY2tlZChmZW5jZS0+ cmRldiwgZmVuY2UtPnJpbmcsICZzaWdsaXN0KTsKIAkJc2lnbmFsZWQgPSBmZW5jZS0+c2lnbmFs ZWQ7CiAJfQogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZmZW5jZS0+cmRldi0+ZmVuY2VfbG9j aywgaXJxX2ZsYWdzKTsKKwlyYWRlb25fZmVuY2VfcHJvY2Vzc19zaWduYWxlZChmZW5jZS0+cmRl diwgJnNpZ2xpc3QpOworCiAJcmV0dXJuIHNpZ25hbGVkOwogfQogCkBAIC0zNDEsMTAgKzM1OCwx MiBAQCB2b2lkIHJhZGVvbl9mZW5jZV9wcm9jZXNzKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2 LCBpbnQgcmluZykKIHsKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKIAlib29sIHdha2U7CisJ TElTVF9IRUFEKHNpZ25hbGVkKTsKIAogCXdyaXRlX2xvY2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2Vf bG9jaywgaXJxX2ZsYWdzKTsKLQl3YWtlID0gcmFkZW9uX2ZlbmNlX3BvbGxfbG9ja2VkKHJkZXYs IHJpbmcpOworCXdha2UgPSByYWRlb25fZmVuY2VfcG9sbF9sb2NrZWQocmRldiwgcmluZywgJnNp Z25hbGVkKTsKIAl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJx X2ZsYWdzKTsKKwlyYWRlb25fZmVuY2VfcHJvY2Vzc19zaWduYWxlZChyZGV2LCAmc2lnbmFsZWQp OwogCWlmICh3YWtlKSB7CiAJCXdha2VfdXBfYWxsKCZyZGV2LT5mZW5jZV9kcnZbcmluZ10ucXVl dWUpOwogCX0KQEAgLTM3Myw2ICszOTIsMjIgQEAgaW50IHJhZGVvbl9mZW5jZV9jb3VudF9lbWl0 dGVkKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBpbnQgcmluZykKIAlyZXR1cm4gbm90X3By b2Nlc3NlZDsKIH0KIAorYm9vbCByYWRlb25fZmVuY2Vfc2V0X2Fzc29jaWF0ZWRfaWIoc3RydWN0 IHJhZGVvbl9mZW5jZSAqZmVuY2UsIHN0cnVjdCByYWRlb25faWIgKmliKQoreworCXN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2ID0gZmVuY2UtPnJkZXY7CisJdW5zaWduZWQgbG9uZyBpcnFfZmxh Z3M7CisJYm9vbCBpc3NldCA9IGZhbHNlOworCisJLyogYSByZWFkbG9jayBpcyBzdWZpY2llbnQs IGNhdXNlIHRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UgKi8KKwlyZWFkX2xvY2tfaXJx c2F2ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKwlpZiAoZmVuY2UtPmVtaXR0ZWQg JiYgIWZlbmNlLT5zaWduYWxlZCkgeworCQlmZW5jZS0+aWIgPSBpYjsKKwkJaXNzZXQgPSB0cnVl OworCX0KKwlyZWFkX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOworCXJldHVybiBpc3NldDsKK30KKwogaW50IHJhZGVvbl9mZW5jZV9kcml2ZXJfc3RhcnRf cmluZyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcpCiB7CiAJdW5zaWduZWQg bG9uZyBpcnFfZmxhZ3M7CkBAIC00MTMsNyArNDQ4LDYgQEAgc3RhdGljIHZvaWQgcmFkZW9uX2Zl bmNlX2RyaXZlcl9pbml0X3Jpbmcoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIGludCByaW5n KQogCWF0b21pY19zZXQoJnJkZXYtPmZlbmNlX2RydltyaW5nXS5zZXEsIDApOwogCUlOSVRfTElT VF9IRUFEKCZyZGV2LT5mZW5jZV9kcnZbcmluZ10uY3JlYXRlZCk7CiAJSU5JVF9MSVNUX0hFQUQo JnJkZXYtPmZlbmNlX2RydltyaW5nXS5lbWl0dGVkKTsKLQlJTklUX0xJU1RfSEVBRCgmcmRldi0+ ZmVuY2VfZHJ2W3JpbmddLnNpZ25hbGVkKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZyZGV2LT5m ZW5jZV9kcnZbcmluZ10ucXVldWUpOwogCXJkZXYtPmZlbmNlX2RydltyaW5nXS5pbml0aWFsaXpl ZCA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f Z2FydC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2FydC5jCmluZGV4IDdhZjRm ZjkuLjIyMGRiYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dh cnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nYXJ0LmMKQEAgLTQzNCw4 ICs0MzQsOCBAQCByZXRyeV9pZDoKIAlyZGV2LT52bV9tYW5hZ2VyLnVzZV9iaXRtYXAgfD0gMSA8 PCBpZDsKIAl2bS0+aWQgPSBpZDsKIAlsaXN0X2FkZF90YWlsKCZ2bS0+bGlzdCwgJnJkZXYtPnZt X21hbmFnZXIubHJ1X3ZtKTsKLQlyZXR1cm4gcmFkZW9uX3ZtX2JvX3VwZGF0ZV9wdGUocmRldiwg dm0sIHJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlci5ibywKLQkJCQkgICAgICAgJnJkZXYtPmliX3Bv b2wuc2FfbWFuYWdlci5iby0+dGJvLm1lbSk7CisJcmV0dXJuIHJhZGVvbl92bV9ib191cGRhdGVf cHRlKHJkZXYsIHZtLCByZGV2LT5zYV9tYW5hZ2VyLmJvLAorCQkJCSAgICAgICAmcmRldi0+c2Ff bWFuYWdlci5iby0+dGJvLm1lbSk7CiB9CiAKIC8qIG9iamVjdCBoYXZlIHRvIGJlIHJlc2VydmVk ICovCkBAIC02MzMsNyArNjMzLDcgQEAgaW50IHJhZGVvbl92bV9pbml0KHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX3ZtICp2bSkKIAkvKiBtYXAgdGhlIGliIHBvb2wg YnVmZmVyIGF0IDAgaW4gdmlydHVhbCBhZGRyZXNzIHNwYWNlLCBzZXQKIAkgKiByZWFkIG9ubHkK IAkgKi8KLQlyID0gcmFkZW9uX3ZtX2JvX2FkZChyZGV2LCB2bSwgcmRldi0+aWJfcG9vbC5zYV9t YW5hZ2VyLmJvLCAwLAorCXIgPSByYWRlb25fdm1fYm9fYWRkKHJkZXYsIHZtLCByZGV2LT5zYV9t YW5hZ2VyLmJvLCAwLAogCQkJICAgICBSQURFT05fVk1fUEFHRV9SRUFEQUJMRSB8IFJBREVPTl9W TV9QQUdFX1NOT09QRUQpOwogCXJldHVybiByOwogfQpAQCAtNjUwLDEyICs2NTAsMTIgQEAgdm9p ZCByYWRlb25fdm1fZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVv bl92bSAqdm0pCiAJcmFkZW9uX211dGV4X3VubG9jaygmcmRldi0+Y3NfbXV0ZXgpOwogCiAJLyog cmVtb3ZlIGFsbCBibyAqLwotCXIgPSByYWRlb25fYm9fcmVzZXJ2ZShyZGV2LT5pYl9wb29sLnNh X21hbmFnZXIuYm8sIGZhbHNlKTsKKwlyID0gcmFkZW9uX2JvX3Jlc2VydmUocmRldi0+c2FfbWFu YWdlci5ibywgZmFsc2UpOwogCWlmICghcikgewotCQlib192YSA9IHJhZGVvbl9ib192YShyZGV2 LT5pYl9wb29sLnNhX21hbmFnZXIuYm8sIHZtKTsKKwkJYm9fdmEgPSByYWRlb25fYm9fdmEocmRl di0+c2FfbWFuYWdlci5ibywgdm0pOwogCQlsaXN0X2RlbF9pbml0KCZib192YS0+Ym9fbGlzdCk7 CiAJCWxpc3RfZGVsX2luaXQoJmJvX3ZhLT52bV9saXN0KTsKLQkJcmFkZW9uX2JvX3VucmVzZXJ2 ZShyZGV2LT5pYl9wb29sLnNhX21hbmFnZXIuYm8pOworCQlyYWRlb25fYm9fdW5yZXNlcnZlKHJk ZXYtPnNhX21hbmFnZXIuYm8pOwogCQlrZnJlZShib192YSk7CiAJfQogCWlmICghbGlzdF9lbXB0 eSgmdm0tPnZhKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f cmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcmluZy5jCmluZGV4IGNjZWU3 NGYuLjE1MjU0NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3Jp bmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9yaW5nLmMKQEAgLTI0LDYg KzI0LDcgQEAKICAqIEF1dGhvcnM6IERhdmUgQWlybGllCiAgKiAgICAgICAgICBBbGV4IERldWNo ZXIKICAqICAgICAgICAgIEplcm9tZSBHbGlzc2UKKyAqICAgICAgICAgIENocmlzdGlhbiBLw7Zu aWcKICAqLwogI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc2xh Yi5oPgpAQCAtMzMsOCArMzQsMTAgQEAKICNpbmNsdWRlICJyYWRlb24uaCIKICNpbmNsdWRlICJh dG9tLmgiCiAKLWludCByYWRlb25fZGVidWdmc19pYl9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2KTsKLWludCByYWRlb25fZGVidWdmc19yaW5nX2luaXQoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmluZyAqcmluZyk7CisvKgorICogSUIuCisgKi8KK2lu dCByYWRlb25fZGVidWdmc19zYV9pbml0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KTsKIAog dTMyIHJhZGVvbl9nZXRfaWJfdmFsdWUoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIGludCBp ZHgpCiB7CkBAIC02MSwxMjMgKzY0LDYyIEBAIHUzMiByYWRlb25fZ2V0X2liX3ZhbHVlKHN0cnVj dCByYWRlb25fY3NfcGFyc2VyICpwLCBpbnQgaWR4KQogCXJldHVybiBpZHhfdmFsdWU7CiB9CiAK LXZvaWQgcmFkZW9uX3Jpbmdfd3JpdGUoc3RydWN0IHJhZGVvbl9yaW5nICpyaW5nLCB1aW50MzJf dCB2KQotewotI2lmIERSTV9ERUJVR19DT0RFCi0JaWYgKHJpbmctPmNvdW50X2R3IDw9IDApIHsK LQkJRFJNX0VSUk9SKCJyYWRlb246IHdyaXR0aW5nIG1vcmUgZHdvcmQgdG8gcmluZyB0aGFuIGV4 cGVjdGVkICFcbiIpOwotCX0KLSNlbmRpZgotCXJpbmctPnJpbmdbcmluZy0+d3B0cisrXSA9IHY7 Ci0JcmluZy0+d3B0ciAmPSByaW5nLT5wdHJfbWFzazsKLQlyaW5nLT5jb3VudF9kdy0tOwotCXJp bmctPnJpbmdfZnJlZV9kdy0tOwotfQotCi0vKgotICogSUIuCi0gKi8KLWJvb2wgcmFkZW9uX2li X3RyeV9mcmVlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2liICpp YikKLXsKLQlib29sIGRvbmUgPSBmYWxzZTsKLQotCS8qIG9ubHkgZnJlZSBpYiB3aGljaCBoYXZl IGJlZW4gZW1pdGVkICovCi0JaWYgKGliLT5mZW5jZSAmJiBpYi0+ZmVuY2UtPmVtaXR0ZWQpIHsK LQkJaWYgKHJhZGVvbl9mZW5jZV9zaWduYWxlZChpYi0+ZmVuY2UpKSB7Ci0JCQlyYWRlb25fZmVu Y2VfdW5yZWYoJmliLT5mZW5jZSk7Ci0JCQlyYWRlb25fc2FfYm9fZnJlZShyZGV2LCAmaWItPnNh X2JvKTsKLQkJCWRvbmUgPSB0cnVlOwotCQl9Ci0JfQotCXJldHVybiBkb25lOwotfQotCiBpbnQg cmFkZW9uX2liX2dldChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcsCiAJCSAg c3RydWN0IHJhZGVvbl9pYiAqKmliLCB1bnNpZ25lZCBzaXplKQogewotCXN0cnVjdCByYWRlb25f ZmVuY2UgKmZlbmNlOwotCXVuc2lnbmVkIGNyZXRyeSA9IDA7Ci0JaW50IHIgPSAwLCBpLCBpZHg7 CisJaW50IHI7CiAKLQkqaWIgPSBOVUxMOwotCS8qIGFsaWduIHNpemUgb24gMjU2IGJ5dGVzICov Ci0Jc2l6ZSA9IEFMSUdOKHNpemUsIDI1Nik7CisJKmliID0ga21hbGxvYyhzaXplb2Yoc3RydWN0 IHJhZGVvbl9pYiksIEdGUF9LRVJORUwpOworCWlmICgqaWIgPT0gTlVMTCkgeworCQlyZXR1cm4g LUVOT01FTTsKKwl9CiAKLQlyID0gcmFkZW9uX2ZlbmNlX2NyZWF0ZShyZGV2LCAmZmVuY2UsIHJp bmcpOworCXIgPSByYWRlb25fc2FfYm9fbmV3KHJkZXYsICZyZGV2LT5zYV9tYW5hZ2VyLCAmKCpp YiktPnNhX2JvLCBzaXplLCAyNTYsIHRydWUpOwogCWlmIChyKSB7Ci0JCWRldl9lcnIocmRldi0+ ZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBmZW5jZSBmb3IgbmV3IElCXG4iKTsKKwkJZGV2X2Vycihy ZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGEgbmV3IElCICglZClcbiIsIHIpOworCQlrZnJlZSgq aWIpOworCQkqaWIgPSBOVUxMOwogCQlyZXR1cm4gcjsKIAl9CiAKLQlyYWRlb25fbXV0ZXhfbG9j aygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JaWR4ID0gcmRldi0+aWJfcG9vbC5oZWFkX2lkOwot cmV0cnk6Ci0JaWYgKGNyZXRyeSA+IDUpIHsKLQkJZGV2X2VycihyZGV2LT5kZXYsICJmYWlsZWQg dG8gZ2V0IGFuIGliIGFmdGVyIDUgcmV0cnlcbiIpOwotCQlyYWRlb25fbXV0ZXhfdW5sb2NrKCZy ZGV2LT5pYl9wb29sLm11dGV4KTsKLQkJcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7Ci0JCXJl dHVybiAtRU5PTUVNOwotCX0KLQljcmV0cnkrKzsKLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX0lC X1BPT0xfU0laRTsgaSsrKSB7Ci0JCXJhZGVvbl9pYl90cnlfZnJlZShyZGV2LCAmcmRldi0+aWJf cG9vbC5pYnNbaWR4XSk7Ci0JCWlmIChyZGV2LT5pYl9wb29sLmlic1tpZHhdLmZlbmNlID09IE5V TEwpIHsKLQkJCXIgPSByYWRlb25fc2FfYm9fbmV3KHJkZXYsICZyZGV2LT5pYl9wb29sLnNhX21h bmFnZXIsCi0JCQkJCSAgICAgJnJkZXYtPmliX3Bvb2wuaWJzW2lkeF0uc2FfYm8sCi0JCQkJCSAg ICAgc2l6ZSwgMjU2LCBmYWxzZSk7Ci0JCQlpZiAoIXIpIHsKLQkJCQkqaWIgPSAmcmRldi0+aWJf cG9vbC5pYnNbaWR4XTsKLQkJCQkoKmliKS0+cHRyID0gcmRldi0+aWJfcG9vbC5zYV9tYW5hZ2Vy LmNwdV9wdHI7Ci0JCQkJKCppYiktPnB0ciArPSAoKCppYiktPnNhX2JvLm9mZnNldCA+PiAyKTsK LQkJCQkoKmliKS0+Z3B1X2FkZHIgPSByZGV2LT5pYl9wb29sLnNhX21hbmFnZXIuZ3B1X2FkZHI7 Ci0JCQkJKCppYiktPmdwdV9hZGRyICs9ICgqaWIpLT5zYV9iby5vZmZzZXQ7Ci0JCQkJKCppYikt PmZlbmNlID0gZmVuY2U7Ci0JCQkJKCppYiktPnZtX2lkID0gMDsKLQkJCQkoKmliKS0+aXNfY29u c3RfaWIgPSBmYWxzZTsKLQkJCQkvKiBpYiBhcmUgbW9zdCBsaWtlbHkgdG8gYmUgYWxsb2NhdGVk IGluIGEgcmluZyBmYXNoaW9uCi0JCQkJICogdGh1cyByZGV2LT5pYl9wb29sLmhlYWRfaWQgc2hv dWxkIGJlIHRoZSBpZCBvZiB0aGUKLQkJCQkgKiBvbGRlc3QgaWIKLQkJCQkgKi8KLQkJCQlyZGV2 LT5pYl9wb29sLmhlYWRfaWQgPSAoMSArIGlkeCk7Ci0JCQkJcmRldi0+aWJfcG9vbC5oZWFkX2lk ICY9IChSQURFT05fSUJfUE9PTF9TSVpFIC0gMSk7Ci0JCQkJcmFkZW9uX211dGV4X3VubG9jaygm cmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCX0KLQkJaWR4ID0g KGlkeCArIDEpICYgKFJBREVPTl9JQl9QT09MX1NJWkUgLSAxKTsKLQl9Ci0JLyogdGhpcyBzaG91 bGQgYmUgcmFyZSBldmVudCwgaWUgYWxsIGliIHNjaGVkdWxlZCBub25lIHNpZ25hbGVkIHlldC4K LQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7Ci0JCWlm IChyZGV2LT5pYl9wb29sLmlic1tpZHhdLmZlbmNlICYmIHJkZXYtPmliX3Bvb2wuaWJzW2lkeF0u ZmVuY2UtPmVtaXR0ZWQpIHsKLQkJCXIgPSByYWRlb25fZmVuY2Vfd2FpdChyZGV2LT5pYl9wb29s Lmlic1tpZHhdLmZlbmNlLCBmYWxzZSk7Ci0JCQlpZiAoIXIpIHsKLQkJCQlnb3RvIHJldHJ5Owot CQkJfQotCQkJLyogYW4gZXJyb3IgaGFwcGVuZWQgKi8KLQkJCWJyZWFrOwotCQl9Ci0JCWlkeCA9 IChpZHggKyAxKSAmIChSQURFT05fSUJfUE9PTF9TSVpFIC0gMSk7CisJciA9IHJhZGVvbl9mZW5j ZV9jcmVhdGUocmRldiwgJigqaWIpLT5mZW5jZSwgcmluZyk7CisJaWYgKHIpIHsKKwkJZGV2X2Vy cihyZGV2LT5kZXYsICJmYWlsZWQgdG8gY3JlYXRlIGZlbmNlIGZvciBuZXcgSUIgKCVkKVxuIiwg cik7CisJCXJhZGVvbl9zYV9ib19mcmVlKHJkZXYsICYoKmliKS0+c2FfYm8pOworCQlrZnJlZSgq aWIpOworCQkqaWIgPSBOVUxMOworCQlyZXR1cm4gcjsKIAl9Ci0JcmFkZW9uX211dGV4X3VubG9j aygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7Ci0J cmV0dXJuIHI7CisKKwkoKmliKS0+cHRyID0gcmRldi0+c2FfbWFuYWdlci5jcHVfcHRyOworCSgq aWIpLT5wdHIgKz0gKCgqaWIpLT5zYV9iby5vZmZzZXQgPj4gMik7CisJKCppYiktPmdwdV9hZGRy ID0gcmRldi0+c2FfbWFuYWdlci5ncHVfYWRkcjsKKwkoKmliKS0+Z3B1X2FkZHIgKz0gKCppYikt PnNhX2JvLm9mZnNldDsKKwkoKmliKS0+dm1faWQgPSAwOworCSgqaWIpLT5pc19jb25zdF9pYiA9 IGZhbHNlOworCisJcmV0dXJuIDA7CiB9CiAKIHZvaWQgcmFkZW9uX2liX2ZyZWUoc3RydWN0IHJh ZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25faWIgKippYikKIHsKIAlzdHJ1Y3QgcmFk ZW9uX2liICp0bXAgPSAqaWI7CisJYm9vbCBkZXN0cm95ID0gdHJ1ZTsKIAogCSppYiA9IE5VTEw7 CiAJaWYgKHRtcCA9PSBOVUxMKSB7CiAJCXJldHVybjsKIAl9Ci0JcmFkZW9uX211dGV4X2xvY2so JnJkZXYtPmliX3Bvb2wubXV0ZXgpOwotCWlmICh0bXAtPmZlbmNlICYmICF0bXAtPmZlbmNlLT5l bWl0dGVkKSB7CisKKwlpZiAodG1wLT5mZW5jZSkgeworCQlkZXN0cm95ID0gIXJhZGVvbl9mZW5j ZV9zZXRfYXNzb2NpYXRlZF9pYih0bXAtPmZlbmNlLCB0bXApOworCX0KKworCWlmIChkZXN0cm95 KSB7CiAJCXJhZGVvbl9zYV9ib19mcmVlKHJkZXYsICZ0bXAtPnNhX2JvKTsKIAkJcmFkZW9uX2Zl bmNlX3VucmVmKCZ0bXAtPmZlbmNlKTsKKwkJa2ZyZWUodG1wKTsKIAl9Ci0JcmFkZW9uX211dGV4 X3VubG9jaygmcmRldi0+aWJfcG9vbC5tdXRleCk7CiB9CiAKIGludCByYWRlb25faWJfc2NoZWR1 bGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25faWIgKmliKQpAQCAt MTg3LDcgKzEyOSw3IEBAIGludCByYWRlb25faWJfc2NoZWR1bGUoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIHN0cnVjdCByYWRlb25faWIgKmliKQogCiAJaWYgKCFpYi0+bGVuZ3RoX2R3IHx8 ICFyaW5nLT5yZWFkeSkgewogCQkvKiBUT0RPOiBOb3RoaW5ncyBpbiB0aGUgaWIgd2Ugc2hvdWxk IHJlcG9ydC4gKi8KLQkJRFJNX0VSUk9SKCJyYWRlb246IGNvdWxkbid0IHNjaGVkdWxlIElCKCV1 KS5cbiIsIGliLT5pZHgpOworCQlEUk1fRVJST1IoInJhZGVvbjogY291bGRuJ3Qgc2NoZWR1bGUg SUIuXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0yMDUsNjQgKzE0Nyw0NSBAQCBp bnQgcmFkZW9uX2liX3NjaGVkdWxlKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3Qg cmFkZW9uX2liICppYikKIAogaW50IHJhZGVvbl9pYl9wb29sX2luaXQoc3RydWN0IHJhZGVvbl9k ZXZpY2UgKnJkZXYpCiB7Ci0JaW50IGksIHI7CisJaW50IHI7CiAKLQlyYWRlb25fbXV0ZXhfbG9j aygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JaWYgKHJkZXYtPmliX3Bvb2wucmVhZHkpIHsKKwlp ZiAocmRldi0+aWJfcG9vbF9yZWFkeSkgewogCQlyZXR1cm4gMDsKIAl9Ci0JcmRldi0+aWJfcG9v bC5yZWFkeSA9IHRydWU7Ci0JcmFkZW9uX211dGV4X3VubG9jaygmcmRldi0+aWJfcG9vbC5tdXRl eCk7CiAKLQlyID0gcmFkZW9uX3NhX2JvX21hbmFnZXJfaW5pdChyZGV2LCAmcmRldi0+aWJfcG9v bC5zYV9tYW5hZ2VyLAorCXIgPSByYWRlb25fc2FfYm9fbWFuYWdlcl9pbml0KHJkZXYsICZyZGV2 LT5zYV9tYW5hZ2VyLAogCQkJCSAgICAgIFJBREVPTl9JQl9QT09MX1NJWkUqNjQqMTAyNCwKIAkJ CQkgICAgICBSQURFT05fR0VNX0RPTUFJTl9HVFQpOwogCWlmIChyKSB7CiAJCXJldHVybiByOwog CX0KIAotCXJhZGVvbl9tdXRleF9sb2NrKCZyZGV2LT5pYl9wb29sLm11dGV4KTsKLQlmb3IgKGkg PSAwOyBpIDwgUkFERU9OX0lCX1BPT0xfU0laRTsgaSsrKSB7Ci0JCXJkZXYtPmliX3Bvb2wuaWJz W2ldLmZlbmNlID0gTlVMTDsKLQkJcmRldi0+aWJfcG9vbC5pYnNbaV0uaWR4ID0gaTsKLQkJcmRl di0+aWJfcG9vbC5pYnNbaV0ubGVuZ3RoX2R3ID0gMDsKLQkJSU5JVF9MSVNUX0hFQUQoJnJkZXYt PmliX3Bvb2wuaWJzW2ldLnNhX2JvLmxpc3QpOworCWlmIChyYWRlb25fZGVidWdmc19zYV9pbml0 KHJkZXYpKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlZ2lzdGVyIGRlYnVnZnMgZmlsZSBm b3IgU0EgIVxuIik7CiAJfQotCXJkZXYtPmliX3Bvb2wuaGVhZF9pZCA9IDA7Ci0JcmRldi0+aWJf cG9vbC5yZWFkeSA9IHRydWU7CisKIAlEUk1fSU5GTygicmFkZW9uOiBpYiBwb29sIHJlYWR5Llxu Iik7CisJcmRldi0+aWJfcG9vbF9yZWFkeSA9IHRydWU7CiAKLQlpZiAocmFkZW9uX2RlYnVnZnNf aWJfaW5pdChyZGV2KSkgewotCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBkZWJ1Z2Zz IGZpbGUgZm9yIElCICFcbiIpOwotCX0KLQlyYWRlb25fbXV0ZXhfdW5sb2NrKCZyZGV2LT5pYl9w b29sLm11dGV4KTsKIAlyZXR1cm4gMDsKIH0KIAogdm9pZCByYWRlb25faWJfcG9vbF9maW5pKHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogewotCXVuc2lnbmVkIGk7Ci0KLQlyYWRlb25fbXV0 ZXhfbG9jaygmcmRldi0+aWJfcG9vbC5tdXRleCk7Ci0JaWYgKHJkZXYtPmliX3Bvb2wucmVhZHkp IHsKLQkJZm9yIChpID0gMDsgaSA8IFJBREVPTl9JQl9QT09MX1NJWkU7IGkrKykgewotCQkJcmFk ZW9uX3NhX2JvX2ZyZWUocmRldiwgJnJkZXYtPmliX3Bvb2wuaWJzW2ldLnNhX2JvKTsKLQkJCXJh ZGVvbl9mZW5jZV91bnJlZigmcmRldi0+aWJfcG9vbC5pYnNbaV0uZmVuY2UpOwotCQl9Ci0JCXJh ZGVvbl9zYV9ib19tYW5hZ2VyX2ZpbmkocmRldiwgJnJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlcik7 Ci0JCXJkZXYtPmliX3Bvb2wucmVhZHkgPSBmYWxzZTsKKwlpZiAocmRldi0+aWJfcG9vbF9yZWFk eSkgeworCQlyYWRlb25fc2FfYm9fbWFuYWdlcl9maW5pKHJkZXYsICZyZGV2LT5zYV9tYW5hZ2Vy KTsKKwkJcmRldi0+aWJfcG9vbF9yZWFkeSA9IGZhbHNlOwogCX0KLQlyYWRlb25fbXV0ZXhfdW5s b2NrKCZyZGV2LT5pYl9wb29sLm11dGV4KTsKIH0KIAogaW50IHJhZGVvbl9pYl9wb29sX3N0YXJ0 KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogewotCXJldHVybiByYWRlb25fc2FfYm9fbWFu YWdlcl9zdGFydChyZGV2LCAmcmRldi0+aWJfcG9vbC5zYV9tYW5hZ2VyKTsKKwlyZXR1cm4gcmFk ZW9uX3NhX2JvX21hbmFnZXJfc3RhcnQocmRldiwgJnJkZXYtPnNhX21hbmFnZXIpOwogfQogCiBp bnQgcmFkZW9uX2liX3Bvb2xfc3VzcGVuZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsK LQlyZXR1cm4gcmFkZW9uX3NhX2JvX21hbmFnZXJfc3VzcGVuZChyZGV2LCAmcmRldi0+aWJfcG9v bC5zYV9tYW5hZ2VyKTsKKwlyZXR1cm4gcmFkZW9uX3NhX2JvX21hbmFnZXJfc3VzcGVuZChyZGV2 LCAmcmRldi0+c2FfbWFuYWdlcik7CiB9CiAKIGludCByYWRlb25faWJfcmluZ190ZXN0cyhzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldikKQEAgLTI5OCw2ICsyMjEsMjEgQEAgaW50IHJhZGVvbl9p Yl9yaW5nX3Rlc3RzKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogLyoKICAqIFJpbmcuCiAg Ki8KK2ludCByYWRlb25fZGVidWdmc19yaW5nX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJk ZXYsIHN0cnVjdCByYWRlb25fcmluZyAqcmluZyk7CisKK3ZvaWQgcmFkZW9uX3Jpbmdfd3JpdGUo c3RydWN0IHJhZGVvbl9yaW5nICpyaW5nLCB1aW50MzJfdCB2KQoreworI2lmIERSTV9ERUJVR19D T0RFCisJaWYgKHJpbmctPmNvdW50X2R3IDw9IDApIHsKKwkJRFJNX0VSUk9SKCJyYWRlb246IHdy aXR0aW5nIG1vcmUgZHdvcmQgdG8gcmluZyB0aGFuIGV4cGVjdGVkICFcbiIpOworCX0KKyNlbmRp ZgorCXJpbmctPnJpbmdbcmluZy0+d3B0cisrXSA9IHY7CisJcmluZy0+d3B0ciAmPSByaW5nLT5w dHJfbWFzazsKKwlyaW5nLT5jb3VudF9kdy0tOworCXJpbmctPnJpbmdfZnJlZV9kdy0tOworfQor CiBpbnQgcmFkZW9uX3JpbmdfaW5kZXgoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVj dCByYWRlb25fcmluZyAqcmluZykKIHsKIAkvKiByMXh4LXI1eHggb25seSBoYXMgQ1AgcmluZyAq LwpAQCAtNTA0LDM3ICs0NDIsMTMgQEAgc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IHJhZGVv bl9kZWJ1Z2ZzX3JpbmdfaW5mb19saXN0W10gPSB7CiAJeyJyYWRlb25fcmluZ19jcDIiLCByYWRl b25fZGVidWdmc19yaW5nX2luZm8sIDAsICZjYXltYW5fcmluZ190eXBlX2NwMl9pbmRleH0sCiB9 OwogCi1zdGF0aWMgaW50IHJhZGVvbl9kZWJ1Z2ZzX2liX2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQotewotCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVjdCBk cm1faW5mb19ub2RlICopIG0tPnByaXZhdGU7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5v ZGUtPm1pbm9yLT5kZXY7Ci0Jc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9w cml2YXRlOwotCXN0cnVjdCByYWRlb25faWIgKmliID0gJnJkZXYtPmliX3Bvb2wuaWJzWyooKHVu c2lnbmVkKilub2RlLT5pbmZvX2VudC0+ZGF0YSldOwotCXVuc2lnbmVkIGk7Ci0KLQlpZiAoaWIg PT0gTlVMTCkgewotCQlyZXR1cm4gMDsKLQl9Ci0Jc2VxX3ByaW50ZihtLCAiSUIgJTA0dVxuIiwg aWItPmlkeCk7Ci0Jc2VxX3ByaW50ZihtLCAiSUIgZmVuY2UgJXBcbiIsIGliLT5mZW5jZSk7Ci0J c2VxX3ByaW50ZihtLCAiSUIgc2l6ZSAlMDV1IGR3b3Jkc1xuIiwgaWItPmxlbmd0aF9kdyk7Ci0J Zm9yIChpID0gMDsgaSA8IGliLT5sZW5ndGhfZHc7IGkrKykgewotCQlzZXFfcHJpbnRmKG0sICJb JTA1dV09MHglMDhYXG4iLCBpLCBpYi0+cHRyW2ldKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3QgZHJtX2luZm9fbGlzdCByYWRlb25fZGVidWdmc19pYl9saXN0W1JBREVPTl9J Ql9QT09MX1NJWkVdOwotc3RhdGljIGNoYXIgcmFkZW9uX2RlYnVnZnNfaWJfbmFtZXNbUkFERU9O X0lCX1BPT0xfU0laRV1bMzJdOwotc3RhdGljIHVuc2lnbmVkIHJhZGVvbl9kZWJ1Z2ZzX2liX2lk eFtSQURFT05fSUJfUE9PTF9TSVpFXTsKLQogc3RhdGljIGludCByYWRlb25fZGVidWdmc19zYV9p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2luZm9f bm9kZSAqbm9kZSA9IChzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqKSBtLT5wcml2YXRlOwogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2OwogCXN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAotCXJhZGVvbl9zYV9ib19kdW1wX2RlYnVn X2luZm8oJnJkZXYtPmliX3Bvb2wuc2FfbWFuYWdlciwgbSk7CisJcmFkZW9uX3NhX2JvX2R1bXBf ZGVidWdfaW5mbygmcmRldi0+c2FfbWFuYWdlciwgbSk7CiAKIAlyZXR1cm4gMDsKIApAQCAtNTY2 LDI2ICs0ODAsMTAgQEAgaW50IHJhZGVvbl9kZWJ1Z2ZzX3JpbmdfaW5pdChzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9yaW5nICpyaW4KIAlyZXR1cm4gMDsKIH0KIAot aW50IHJhZGVvbl9kZWJ1Z2ZzX2liX2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCitp bnQgcmFkZW9uX2RlYnVnZnNfc2FfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsK ICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKLQl1bnNpZ25lZCBpOwotCWludCByOwotCi0J ciA9IHJhZGVvbl9kZWJ1Z2ZzX2FkZF9maWxlcyhyZGV2LCByYWRlb25fZGVidWdmc19zYV9saXN0 LCAxKTsKLQlpZiAocikKLQkJcmV0dXJuIHI7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX0lC X1BPT0xfU0laRTsgaSsrKSB7Ci0JCXNwcmludGYocmFkZW9uX2RlYnVnZnNfaWJfbmFtZXNbaV0s ICJyYWRlb25faWJfJTA0dSIsIGkpOwotCQlyYWRlb25fZGVidWdmc19pYl9pZHhbaV0gPSBpOwot CQlyYWRlb25fZGVidWdmc19pYl9saXN0W2ldLm5hbWUgPSByYWRlb25fZGVidWdmc19pYl9uYW1l c1tpXTsKLQkJcmFkZW9uX2RlYnVnZnNfaWJfbGlzdFtpXS5zaG93ID0gJnJhZGVvbl9kZWJ1Z2Zz X2liX2luZm87Ci0JCXJhZGVvbl9kZWJ1Z2ZzX2liX2xpc3RbaV0uZHJpdmVyX2ZlYXR1cmVzID0g MDsKLQkJcmFkZW9uX2RlYnVnZnNfaWJfbGlzdFtpXS5kYXRhID0gJnJhZGVvbl9kZWJ1Z2ZzX2li X2lkeFtpXTsKLQl9Ci0JcmV0dXJuIHJhZGVvbl9kZWJ1Z2ZzX2FkZF9maWxlcyhyZGV2LCByYWRl b25fZGVidWdmc19pYl9saXN0LAotCQkJCQlSQURFT05fSUJfUE9PTF9TSVpFKTsKKwlyZXR1cm4g cmFkZW9uX2RlYnVnZnNfYWRkX2ZpbGVzKHJkZXYsIHJhZGVvbl9kZWJ1Z2ZzX3NhX2xpc3QsIDEp OwogI2Vsc2UKIAlyZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9yYWRlb25fc2VtYXBob3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9zZW1hcGhvcmUuYwppbmRleCBhOGFkNjFhLi4zMDQxNzc2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYwpAQCAtNDIsNyArNDIsNyBAQCBpbnQgcmFkZW9uX3Nl bWFwaG9yZV9jcmVhdGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsCiAJCXJldHVybiAtRU5P TUVNOwogCX0KIAotCXIgPSByYWRlb25fc2FfYm9fbmV3KHJkZXYsICZyZGV2LT5pYl9wb29sLnNh X21hbmFnZXIsIAorCXIgPSByYWRlb25fc2FfYm9fbmV3KHJkZXYsICZyZGV2LT5zYV9tYW5hZ2Vy LCAKIAkJCSAgICAgJigqc2VtYXBob3JlKS0+c2FfYm8sIDgsIDgsIHRydWUpOwogCWlmIChyKSB7 CiAJCWtmcmVlKCpzZW1hcGhvcmUpOwpAQCAtNTEsMTAgKzUxLDEwIEBAIGludCByYWRlb25fc2Vt YXBob3JlX2NyZWF0ZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAl9CiAKIAkoKnNlbWFw aG9yZSktPndhaXRlcnMgPSAwOwkKLQkoKnNlbWFwaG9yZSktPmdwdV9hZGRyID0gcmRldi0+aWJf cG9vbC5zYV9tYW5hZ2VyLmdwdV9hZGRyOworCSgqc2VtYXBob3JlKS0+Z3B1X2FkZHIgPSByZGV2 LT5zYV9tYW5hZ2VyLmdwdV9hZGRyOwogCSgqc2VtYXBob3JlKS0+Z3B1X2FkZHIgKz0gKCpzZW1h cGhvcmUpLT5zYV9iby5vZmZzZXQ7CiAKLQljcHVfcHRyID0gcmRldi0+aWJfcG9vbC5zYV9tYW5h Z2VyLmNwdV9wdHI7CisJY3B1X3B0ciA9IHJkZXYtPnNhX21hbmFnZXIuY3B1X3B0cjsKIAljcHVf cHRyICs9ICgqc2VtYXBob3JlKS0+c2FfYm8ub2Zmc2V0OwogCSooKHVpbnQ2NF90KiljcHVfcHRy KSA9IDA7CiAKLS0gCjEuNy41LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==