From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH] drm/radeon: use pointers instead of indexes for CS chunks Date: Wed, 3 Dec 2014 15:53:24 +0100 Message-ID: <1417618404-6801-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 pegasos-out.vodafone.de (pegasos-out.vodafone.de [80.84.1.38]) by gabe.freedesktop.org (Postfix) with ESMTP id C6AF16E97D for ; Wed, 3 Dec 2014 06:54:06 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: alexdeucher@gmail.com Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKTm9ib2R5 IGlzIGludGVyZXN0ZWQgYXQgd2hpY2ggaW5kZXggdGhlIGNodW5rIGlzLiBXaGF0J3MgbmVlZGVk IGlzCmEgcG9pbnRlciB0byB0aGUgY2h1bmsuIFJlbW92ZSB1bnVzZWQgY2h1bmtfaWQgZmllbGQg YXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2Vu aWdAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jIHwg IDYgKystLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMTAwLmMgICAgICAgICB8ICAyICstCiBk cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDAuYyAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcjYwMF9jcy5jICAgICAgfCAxNCArKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uLmggICAgICAgfCAxMSArKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9jcy5jICAgIHwgNTcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3RyYWNlLmggfCAgMiArLQogZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdXZkLmMgICB8IDEwICsrKy0tLQogZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fdmNlLmMgICB8ICA0ICstLQogOSBmaWxlcyBjaGFuZ2VkLCA1MyBp bnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3Jl ZW5fY3MuYwppbmRleCBhMWRlY2U2Li45MjRiMWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZl cmdyZWVuX2NzLmMKQEAgLTI2NjEsNyArMjY2MSw3IEBAIGludCBldmVyZ3JlZW5fY3NfcGFyc2Uo c3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnApCiAJCQlwLT50cmFjayA9IE5VTEw7CiAJCQlyZXR1 cm4gcjsKIAkJfQotCX0gd2hpbGUgKHAtPmlkeCA8IHAtPmNodW5rc1twLT5jaHVua19pYl9pZHhd Lmxlbmd0aF9kdyk7CisJfSB3aGlsZSAocC0+aWR4IDwgcC0+Y2h1bmtfaWItPmxlbmd0aF9kdyk7 CiAjaWYgMAogCWZvciAociA9IDA7IHIgPCBwLT5pYi5sZW5ndGhfZHc7IHIrKykgewogCQlwcmlu dGsoS0VSTl9JTkZPICIlMDVkICAweCUwOFhcbiIsIHIsIHAtPmliLnB0cltyXSk7CkBAIC0yNjg0 LDcgKzI2ODQsNyBAQCBpbnQgZXZlcmdyZWVuX2NzX3BhcnNlKHN0cnVjdCByYWRlb25fY3NfcGFy c2VyICpwKQogICoqLwogaW50IGV2ZXJncmVlbl9kbWFfY3NfcGFyc2Uoc3RydWN0IHJhZGVvbl9j c19wYXJzZXIgKnApCiB7Ci0Jc3RydWN0IHJhZGVvbl9jc19jaHVuayAqaWJfY2h1bmsgPSAmcC0+ Y2h1bmtzW3AtPmNodW5rX2liX2lkeF07CisJc3RydWN0IHJhZGVvbl9jc19jaHVuayAqaWJfY2h1 bmsgPSBwLT5jaHVua19pYjsKIAlzdHJ1Y3QgcmFkZW9uX2JvX2xpc3QgKnNyY19yZWxvYywgKmRz dF9yZWxvYywgKmRzdDJfcmVsb2M7CiAJdTMyIGhlYWRlciwgY21kLCBjb3VudCwgc3ViX2NtZDsK IAl2b2xhdGlsZSB1MzIgKmliID0gcC0+aWIucHRyOwpAQCAtMzEwMCw3ICszMTAwLDcgQEAgaW50 IGV2ZXJncmVlbl9kbWFfY3NfcGFyc2Uoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnApCiAJCQlE Uk1fRVJST1IoIlVua25vd24gcGFja2V0IHR5cGUgJWQgYXQgJWQgIVxuIiwgY21kLCBpZHgpOwog CQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQl9IHdoaWxlIChwLT5pZHggPCBwLT5jaHVua3NbcC0+ Y2h1bmtfaWJfaWR4XS5sZW5ndGhfZHcpOworCX0gd2hpbGUgKHAtPmlkeCA8IHAtPmNodW5rX2li LT5sZW5ndGhfZHcpOwogI2lmIDAKIAlmb3IgKHIgPSAwOyByIDwgcC0+aWItPmxlbmd0aF9kdzsg cisrKSB7CiAJCXByaW50ayhLRVJOX0lORk8gIiUwNWQgIDB4JTA4WFxuIiwgciwgcC0+aWIucHRy W3JdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjEwMC5jIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yMTAwLmMKaW5kZXggODE3NDczMS4uZDY1ZDFkMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMTAwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yMTAwLmMKQEAgLTIwNjEsNyArMjA2MSw3IEBAIGludCByMTAwX2NzX3BhcnNlKHN0cnVj dCByYWRlb25fY3NfcGFyc2VyICpwKQogCQl9CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7Ci0JfSB3 aGlsZSAocC0+aWR4IDwgcC0+Y2h1bmtzW3AtPmNodW5rX2liX2lkeF0ubGVuZ3RoX2R3KTsKKwl9 IHdoaWxlIChwLT5pZHggPCBwLT5jaHVua19pYi0+bGVuZ3RoX2R3KTsKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwLmMgYi9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3IzMDAuYwppbmRleCA5MWQyNDQyLi4wNjRhZDU1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3IzMDAuYwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgaW50IHIzMDBfY3NfcGFyc2Uoc3RydWN0IHJh ZGVvbl9jc19wYXJzZXIgKnApCiAJCWlmIChyKSB7CiAJCQlyZXR1cm4gcjsKIAkJfQotCX0gd2hp bGUgKHAtPmlkeCA8IHAtPmNodW5rc1twLT5jaHVua19pYl9pZHhdLmxlbmd0aF9kdyk7CisJfSB3 aGlsZSAocC0+aWR4IDwgcC0+Y2h1bmtfaWItPmxlbmd0aF9kdyk7CiAJcmV0dXJuIDA7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yNjAwX2NzLmMKaW5kZXggZTU1MjE5NDYuLmFjYzFmOTkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcjYwMF9jcy5jCkBAIC0yMzE2LDcgKzIzMTYsNyBAQCBpbnQgcjYwMF9jc19wYXJz ZShzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCkKIAkJCXAtPnRyYWNrID0gTlVMTDsKIAkJCXJl dHVybiByOwogCQl9Ci0JfSB3aGlsZSAocC0+aWR4IDwgcC0+Y2h1bmtzW3AtPmNodW5rX2liX2lk eF0ubGVuZ3RoX2R3KTsKKwl9IHdoaWxlIChwLT5pZHggPCBwLT5jaHVua19pYi0+bGVuZ3RoX2R3 KTsKICNpZiAwCiAJZm9yIChyID0gMDsgciA8IHAtPmliLmxlbmd0aF9kdzsgcisrKSB7CiAJCXBy aW50ayhLRVJOX0lORk8gIiUwNWQgIDB4JTA4WFxuIiwgciwgcC0+aWIucHRyW3JdKTsKQEAgLTIz NTEsNyArMjM1MSw3IEBAIHN0YXRpYyB2b2lkIHI2MDBfY3NfcGFyc2VyX2Zpbmkoc3RydWN0IHJh ZGVvbl9jc19wYXJzZXIgKnBhcnNlciwgaW50IGVycm9yKQogCiBzdGF0aWMgaW50IHI2MDBfY3Nf cGFyc2VyX3JlbG9jc19sZWdhY3koc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnApCiB7Ci0JaWYg KHAtPmNodW5rX3JlbG9jc19pZHggPT0gLTEpIHsKKwlpZiAocC0+Y2h1bmtfcmVsb2NzID09IE5V TEwpIHsKIAkJcmV0dXJuIDA7CiAJfQogCXAtPnJlbG9jcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVj dCByYWRlb25fYm9fbGlzdCksIEdGUF9LRVJORUwpOwpAQCAtMjM5OCw3ICsyMzk4LDcgQEAgaW50 IHI2MDBfY3NfbGVnYWN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZSAqZmlscCwKIAkvKiBDb3B5IHRoZSBwYWNrZXQgaW50byB0aGUgSUIsIHRoZSBw YXJzZXIgd2lsbCByZWFkIGZyb20gdGhlCiAJICogaW5wdXQgbWVtb3J5IChjYWNoZWQpIGFuZCB3 cml0ZSB0byB0aGUgSUIgKHdoaWNoIGNhbiBiZQogCSAqIHVuY2FjaGVkKS4gKi8KLQlpYl9jaHVu ayA9ICZwYXJzZXIuY2h1bmtzW3BhcnNlci5jaHVua19pYl9pZHhdOworCWliX2NodW5rID0gcGFy c2VyLmNodW5rX2liOwogCXBhcnNlci5pYi5sZW5ndGhfZHcgPSBpYl9jaHVuay0+bGVuZ3RoX2R3 OwogCSpsID0gcGFyc2VyLmliLmxlbmd0aF9kdzsKIAlpZiAoY29weV9mcm9tX3VzZXIoaWIsIGli X2NodW5rLT51c2VyX3B0ciwgaWJfY2h1bmstPmxlbmd0aF9kdyAqIDQpKSB7CkBAIC0yNDQxLDEx ICsyNDQxLDExIEBAIGludCByNjAwX2RtYV9jc19uZXh0X3JlbG9jKHN0cnVjdCByYWRlb25fY3Nf cGFyc2VyICpwLAogCXVuc2lnbmVkIGlkeDsKIAogCSpjc19yZWxvYyA9IE5VTEw7Ci0JaWYgKHAt PmNodW5rX3JlbG9jc19pZHggPT0gLTEpIHsKKwlpZiAocC0+Y2h1bmtfcmVsb2NzID09IE5VTEwp IHsKIAkJRFJNX0VSUk9SKCJObyByZWxvY2F0aW9uIGNodW5rICFcbiIpOwogCQlyZXR1cm4gLUVJ TlZBTDsKIAl9Ci0JcmVsb2NzX2NodW5rID0gJnAtPmNodW5rc1twLT5jaHVua19yZWxvY3NfaWR4 XTsKKwlyZWxvY3NfY2h1bmsgPSBwLT5jaHVua19yZWxvY3M7CiAJaWR4ID0gcC0+ZG1hX3JlbG9j X2lkeDsKIAlpZiAoaWR4ID49IHAtPm5yZWxvY3MpIHsKIAkJRFJNX0VSUk9SKCJSZWxvY3MgYXQg JWQgYWZ0ZXIgcmVsb2NhdGlvbnMgY2h1bmsgZW5kICVkICFcbiIsCkBAIC0yNDcyLDcgKzI0NzIs NyBAQCBpbnQgcjYwMF9kbWFfY3NfbmV4dF9yZWxvYyhzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAq cCwKICAqKi8KIGludCByNjAwX2RtYV9jc19wYXJzZShzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAq cCkKIHsKLQlzdHJ1Y3QgcmFkZW9uX2NzX2NodW5rICppYl9jaHVuayA9ICZwLT5jaHVua3NbcC0+ Y2h1bmtfaWJfaWR4XTsKKwlzdHJ1Y3QgcmFkZW9uX2NzX2NodW5rICppYl9jaHVuayA9IHAtPmNo dW5rX2liOwogCXN0cnVjdCByYWRlb25fYm9fbGlzdCAqc3JjX3JlbG9jLCAqZHN0X3JlbG9jOwog CXUzMiBoZWFkZXIsIGNtZCwgY291bnQsIHRpbGVkOwogCXZvbGF0aWxlIHUzMiAqaWIgPSBwLT5p Yi5wdHI7CkBAIC0yNjE5LDcgKzI2MTksNyBAQCBpbnQgcjYwMF9kbWFfY3NfcGFyc2Uoc3RydWN0 IHJhZGVvbl9jc19wYXJzZXIgKnApCiAJCQlEUk1fRVJST1IoIlVua25vd24gcGFja2V0IHR5cGUg JWQgYXQgJWQgIVxuIiwgY21kLCBpZHgpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQl9IHdo aWxlIChwLT5pZHggPCBwLT5jaHVua3NbcC0+Y2h1bmtfaWJfaWR4XS5sZW5ndGhfZHcpOworCX0g d2hpbGUgKHAtPmlkeCA8IHAtPmNodW5rX2liLT5sZW5ndGhfZHcpOwogI2lmIDAKIAlmb3IgKHIg PSAwOyByIDwgcC0+aWItPmxlbmd0aF9kdzsgcisrKSB7CiAJCXByaW50ayhLRVJOX0lORk8gIiUw NWQgIDB4JTA4WFxuIiwgciwgcC0+aWIucHRyW3JdKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCmlu ZGV4IDEzMTljOWMuLjU0NTI5YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtMTA1Nyw3 ICsxMDU3LDYgQEAgdm9pZCBjYXltYW5fZG1hX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJk ZXYpOwogICogQ1MuCiAgKi8KIHN0cnVjdCByYWRlb25fY3NfY2h1bmsgewotCXVpbnQzMl90CQlj aHVua19pZDsKIAl1aW50MzJfdAkJbGVuZ3RoX2R3OwogCXVpbnQzMl90CQkqa2RhdGE7CiAJdm9p ZCBfX3VzZXIJCSp1c2VyX3B0cjsKQEAgLTEwODAsMTAgKzEwNzksMTAgQEAgc3RydWN0IHJhZGVv bl9jc19wYXJzZXIgewogCXN0cnVjdCBsaXN0X2hlYWQJdmFsaWRhdGVkOwogCXVuc2lnbmVkCQlk bWFfcmVsb2NfaWR4OwogCS8qIGluZGljZXMgb2YgdmFyaW91cyBjaHVua3MgKi8KLQlpbnQJCQlj aHVua19pYl9pZHg7Ci0JaW50CQkJY2h1bmtfcmVsb2NzX2lkeDsKLQlpbnQJCQljaHVua19mbGFn c19pZHg7Ci0JaW50CQkJY2h1bmtfY29uc3RfaWJfaWR4OworCXN0cnVjdCByYWRlb25fY3NfY2h1 bmsgICpjaHVua19pYjsKKwlzdHJ1Y3QgcmFkZW9uX2NzX2NodW5rICAqY2h1bmtfcmVsb2NzOwor CXN0cnVjdCByYWRlb25fY3NfY2h1bmsgICpjaHVua19mbGFnczsKKwlzdHJ1Y3QgcmFkZW9uX2Nz X2NodW5rICAqY2h1bmtfY29uc3RfaWI7CiAJc3RydWN0IHJhZGVvbl9pYglpYjsKIAlzdHJ1Y3Qg cmFkZW9uX2liCWNvbnN0X2liOwogCXZvaWQJCQkqdHJhY2s7CkBAIC0xMDk3LDcgKzEwOTYsNyBA QCBzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciB7CiAKIHN0YXRpYyBpbmxpbmUgdTMyIHJhZGVvbl9n ZXRfaWJfdmFsdWUoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIGludCBpZHgpCiB7Ci0Jc3Ry dWN0IHJhZGVvbl9jc19jaHVuayAqaWJjID0gJnAtPmNodW5rc1twLT5jaHVua19pYl9pZHhdOwor CXN0cnVjdCByYWRlb25fY3NfY2h1bmsgKmliYyA9IHAtPmNodW5rX2liOwogCiAJaWYgKGliYy0+ a2RhdGEpCiAJCXJldHVybiBpYmMtPmtkYXRhW2lkeF07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f Y3MuYwppbmRleCAyNmY3ODU1Li45NjQ4ZTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nz LmMKQEAgLTgxLDEwICs4MSwxMCBAQCBzdGF0aWMgaW50IHJhZGVvbl9jc19wYXJzZXJfcmVsb2Nz KHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwKQogCWJvb2wgbmVlZF9tbWFwX2xvY2sgPSBmYWxz ZTsKIAlpbnQgcjsKIAotCWlmIChwLT5jaHVua19yZWxvY3NfaWR4ID09IC0xKSB7CisJaWYgKHAt PmNodW5rX3JlbG9jcyA9PSBOVUxMKSB7CiAJCXJldHVybiAwOwogCX0KLQljaHVuayA9ICZwLT5j aHVua3NbcC0+Y2h1bmtfcmVsb2NzX2lkeF07CisJY2h1bmsgPSBwLT5jaHVua19yZWxvY3M7CiAJ cC0+ZG1hX3JlbG9jX2lkeCA9IDA7CiAJLyogRklYTUU6IHdlIGFzc3VtZSB0aGF0IGVhY2ggcmVs b2NzIHVzZSA0IGR3b3JkcyAqLwogCXAtPm5yZWxvY3MgPSBjaHVuay0+bGVuZ3RoX2R3IC8gNDsK QEAgLTI2NSwxMCArMjY1LDEwIEBAIGludCByYWRlb25fY3NfcGFyc2VyX2luaXQoc3RydWN0IHJh ZGVvbl9jc19wYXJzZXIgKnAsIHZvaWQgKmRhdGEpCiAJcC0+aWR4ID0gMDsKIAlwLT5pYi5zYV9i byA9IE5VTEw7CiAJcC0+Y29uc3RfaWIuc2FfYm8gPSBOVUxMOwotCXAtPmNodW5rX2liX2lkeCA9 IC0xOwotCXAtPmNodW5rX3JlbG9jc19pZHggPSAtMTsKLQlwLT5jaHVua19mbGFnc19pZHggPSAt MTsKLQlwLT5jaHVua19jb25zdF9pYl9pZHggPSAtMTsKKwlwLT5jaHVua19pYiA9IE5VTEw7CisJ cC0+Y2h1bmtfcmVsb2NzID0gTlVMTDsKKwlwLT5jaHVua19mbGFncyA9IE5VTEw7CisJcC0+Y2h1 bmtfY29uc3RfaWIgPSBOVUxMOwogCXAtPmNodW5rc19hcnJheSA9IGtjYWxsb2MoY3MtPm51bV9j aHVua3MsIHNpemVvZih1aW50NjRfdCksIEdGUF9LRVJORUwpOwogCWlmIChwLT5jaHVua3NfYXJy YXkgPT0gTlVMTCkgewogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTI5NSwyNCArMjk1LDIzIEBAIGlu dCByYWRlb25fY3NfcGFyc2VyX2luaXQoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIHZvaWQg KmRhdGEpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQogCQlwLT5jaHVua3NbaV0ubGVuZ3RoX2R3 ID0gdXNlcl9jaHVuay5sZW5ndGhfZHc7Ci0JCXAtPmNodW5rc1tpXS5jaHVua19pZCA9IHVzZXJf Y2h1bmsuY2h1bmtfaWQ7Ci0JCWlmIChwLT5jaHVua3NbaV0uY2h1bmtfaWQgPT0gUkFERU9OX0NI VU5LX0lEX1JFTE9DUykgewotCQkJcC0+Y2h1bmtfcmVsb2NzX2lkeCA9IGk7CisJCWlmICh1c2Vy X2NodW5rLmNodW5rX2lkID09IFJBREVPTl9DSFVOS19JRF9SRUxPQ1MpIHsKKwkJCXAtPmNodW5r X3JlbG9jcyA9ICZwLT5jaHVua3NbaV07CiAJCX0KLQkJaWYgKHAtPmNodW5rc1tpXS5jaHVua19p ZCA9PSBSQURFT05fQ0hVTktfSURfSUIpIHsKLQkJCXAtPmNodW5rX2liX2lkeCA9IGk7CisJCWlm ICh1c2VyX2NodW5rLmNodW5rX2lkID09IFJBREVPTl9DSFVOS19JRF9JQikgeworCQkJcC0+Y2h1 bmtfaWIgPSAmcC0+Y2h1bmtzW2ldOwogCQkJLyogemVybyBsZW5ndGggSUIgaXNuJ3QgdXNlZnVs ICovCiAJCQlpZiAocC0+Y2h1bmtzW2ldLmxlbmd0aF9kdyA9PSAwKQogCQkJCXJldHVybiAtRUlO VkFMOwogCQl9Ci0JCWlmIChwLT5jaHVua3NbaV0uY2h1bmtfaWQgPT0gUkFERU9OX0NIVU5LX0lE X0NPTlNUX0lCKSB7Ci0JCQlwLT5jaHVua19jb25zdF9pYl9pZHggPSBpOworCQlpZiAodXNlcl9j aHVuay5jaHVua19pZCA9PSBSQURFT05fQ0hVTktfSURfQ09OU1RfSUIpIHsKKwkJCXAtPmNodW5r X2NvbnN0X2liID0gJnAtPmNodW5rc1tpXTsKIAkJCS8qIHplcm8gbGVuZ3RoIENPTlNUIElCIGlz bid0IHVzZWZ1bCAqLwogCQkJaWYgKHAtPmNodW5rc1tpXS5sZW5ndGhfZHcgPT0gMCkKIAkJCQly ZXR1cm4gLUVJTlZBTDsKIAkJfQotCQlpZiAocC0+Y2h1bmtzW2ldLmNodW5rX2lkID09IFJBREVP Tl9DSFVOS19JRF9GTEFHUykgewotCQkJcC0+Y2h1bmtfZmxhZ3NfaWR4ID0gaTsKKwkJaWYgKHVz ZXJfY2h1bmsuY2h1bmtfaWQgPT0gUkFERU9OX0NIVU5LX0lEX0ZMQUdTKSB7CisJCQlwLT5jaHVu a19mbGFncyA9ICZwLT5jaHVua3NbaV07CiAJCQkvKiB6ZXJvIGxlbmd0aCBmbGFncyBhcmVuJ3Qg dXNlZnVsICovCiAJCQlpZiAocC0+Y2h1bmtzW2ldLmxlbmd0aF9kdyA9PSAwKQogCQkJCXJldHVy biAtRUlOVkFMOwpAQCAtMzIxLDEwICszMjAsMTAgQEAgaW50IHJhZGVvbl9jc19wYXJzZXJfaW5p dChzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCwgdm9pZCAqZGF0YSkKIAkJc2l6ZSA9IHAtPmNo dW5rc1tpXS5sZW5ndGhfZHc7CiAJCWNkYXRhID0gKHZvaWQgX191c2VyICopKHVuc2lnbmVkIGxv bmcpdXNlcl9jaHVuay5jaHVua19kYXRhOwogCQlwLT5jaHVua3NbaV0udXNlcl9wdHIgPSBjZGF0 YTsKLQkJaWYgKHAtPmNodW5rc1tpXS5jaHVua19pZCA9PSBSQURFT05fQ0hVTktfSURfQ09OU1Rf SUIpCisJCWlmICh1c2VyX2NodW5rLmNodW5rX2lkID09IFJBREVPTl9DSFVOS19JRF9DT05TVF9J QikKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChwLT5jaHVua3NbaV0uY2h1bmtfaWQgPT0gUkFERU9O X0NIVU5LX0lEX0lCKSB7CisJCWlmICh1c2VyX2NodW5rLmNodW5rX2lkID09IFJBREVPTl9DSFVO S19JRF9JQikgewogCQkJaWYgKCFwLT5yZGV2IHx8ICEocC0+cmRldi0+ZmxhZ3MgJiBSQURFT05f SVNfQUdQKSkKIAkJCQljb250aW51ZTsKIAkJfQpAQCAtMzM3LDcgKzMzNiw3IEBAIGludCByYWRl b25fY3NfcGFyc2VyX2luaXQoc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIHZvaWQgKmRhdGEp CiAJCWlmIChjb3B5X2Zyb21fdXNlcihwLT5jaHVua3NbaV0ua2RhdGEsIGNkYXRhLCBzaXplKSkg ewogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KLQkJaWYgKHAtPmNodW5rc1tpXS5jaHVua19pZCA9 PSBSQURFT05fQ0hVTktfSURfRkxBR1MpIHsKKwkJaWYgKHVzZXJfY2h1bmsuY2h1bmtfaWQgPT0g UkFERU9OX0NIVU5LX0lEX0ZMQUdTKSB7CiAJCQlwLT5jc19mbGFncyA9IHAtPmNodW5rc1tpXS5r ZGF0YVswXTsKIAkJCWlmIChwLT5jaHVua3NbaV0ubGVuZ3RoX2R3ID4gMSkKIAkJCQlyaW5nID0g cC0+Y2h1bmtzW2ldLmtkYXRhWzFdOwpAQCAtNDQzLDcgKzQ0Miw3IEBAIHN0YXRpYyBpbnQgcmFk ZW9uX2NzX2liX2NodW5rKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LAogewogCWludCByOwog Ci0JaWYgKHBhcnNlci0+Y2h1bmtfaWJfaWR4ID09IC0xKQorCWlmIChwYXJzZXItPmNodW5rX2li ID09IE5VTEwpCiAJCXJldHVybiAwOwogCiAJaWYgKHBhcnNlci0+Y3NfZmxhZ3MgJiBSQURFT05f Q1NfVVNFX1ZNKQpAQCAtNTI3LDcgKzUyNiw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uX2NzX2liX3Zt X2NodW5rKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LAogCXN0cnVjdCByYWRlb25fdm0gKnZt ID0gJmZwcml2LT52bTsKIAlpbnQgcjsKIAotCWlmIChwYXJzZXItPmNodW5rX2liX2lkeCA9PSAt MSkKKwlpZiAocGFyc2VyLT5jaHVua19pYiA9PSBOVUxMKQogCQlyZXR1cm4gMDsKIAlpZiAoKHBh cnNlci0+Y3NfZmxhZ3MgJiBSQURFT05fQ1NfVVNFX1ZNKSA9PSAwKQogCQlyZXR1cm4gMDsKQEAg LTU2MSw3ICs1NjAsNyBAQCBzdGF0aWMgaW50IHJhZGVvbl9jc19pYl92bV9jaHVuayhzdHJ1Y3Qg cmFkZW9uX2RldmljZSAqcmRldiwKIAl9CiAKIAlpZiAoKHJkZXYtPmZhbWlseSA+PSBDSElQX1RB SElUSSkgJiYKLQkgICAgKHBhcnNlci0+Y2h1bmtfY29uc3RfaWJfaWR4ICE9IC0xKSkgeworCSAg ICAocGFyc2VyLT5jaHVua19jb25zdF9pYiAhPSBOVUxMKSkgewogCQlyID0gcmFkZW9uX2liX3Nj aGVkdWxlKHJkZXYsICZwYXJzZXItPmliLCAmcGFyc2VyLT5jb25zdF9pYiwgdHJ1ZSk7CiAJfSBl bHNlIHsKIAkJciA9IHJhZGVvbl9pYl9zY2hlZHVsZShyZGV2LCAmcGFyc2VyLT5pYiwgTlVMTCwg dHJ1ZSk7CkBAIC01ODgsNyArNTg3LDcgQEAgc3RhdGljIGludCByYWRlb25fY3NfaWJfZmlsbChz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9jc19wYXJzZXIKIAlzdHJ1 Y3QgcmFkZW9uX3ZtICp2bSA9IE5VTEw7CiAJaW50IHI7CiAKLQlpZiAocGFyc2VyLT5jaHVua19p Yl9pZHggPT0gLTEpCisJaWYgKHBhcnNlci0+Y2h1bmtfaWIgPT0gTlVMTCkKIAkJcmV0dXJuIDA7 CiAKIAlpZiAocGFyc2VyLT5jc19mbGFncyAmIFJBREVPTl9DU19VU0VfVk0pIHsKQEAgLTU5Niw4 ICs1OTUsOCBAQCBzdGF0aWMgaW50IHJhZGVvbl9jc19pYl9maWxsKHN0cnVjdCByYWRlb25fZGV2 aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlcgogCQl2bSA9ICZmcHJpdi0+dm07CiAK IAkJaWYgKChyZGV2LT5mYW1pbHkgPj0gQ0hJUF9UQUhJVEkpICYmCi0JCSAgICAocGFyc2VyLT5j aHVua19jb25zdF9pYl9pZHggIT0gLTEpKSB7Ci0JCQlpYl9jaHVuayA9ICZwYXJzZXItPmNodW5r c1twYXJzZXItPmNodW5rX2NvbnN0X2liX2lkeF07CisJCSAgICAocGFyc2VyLT5jaHVua19jb25z dF9pYiAhPSBOVUxMKSkgeworCQkJaWJfY2h1bmsgPSBwYXJzZXItPmNodW5rX2NvbnN0X2liOwog CQkJaWYgKGliX2NodW5rLT5sZW5ndGhfZHcgPiBSQURFT05fSUJfVk1fTUFYX1NJWkUpIHsKIAkJ CQlEUk1fRVJST1IoImNzIElCIENPTlNUIHRvbyBiaWc6ICVkXG4iLCBpYl9jaHVuay0+bGVuZ3Ro X2R3KTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTYxNiwxMyArNjE1LDEzIEBAIHN0YXRpYyBp bnQgcmFkZW9uX2NzX2liX2ZpbGwoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCBy YWRlb25fY3NfcGFyc2VyCiAJCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KIAotCQlpYl9jaHVuayA9 ICZwYXJzZXItPmNodW5rc1twYXJzZXItPmNodW5rX2liX2lkeF07CisJCWliX2NodW5rID0gcGFy c2VyLT5jaHVua19pYjsKIAkJaWYgKGliX2NodW5rLT5sZW5ndGhfZHcgPiBSQURFT05fSUJfVk1f TUFYX1NJWkUpIHsKIAkJCURSTV9FUlJPUigiY3MgSUIgdG9vIGJpZzogJWRcbiIsIGliX2NodW5r LT5sZW5ndGhfZHcpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAl9Ci0JaWJfY2h1bmsgPSAm cGFyc2VyLT5jaHVua3NbcGFyc2VyLT5jaHVua19pYl9pZHhdOworCWliX2NodW5rID0gcGFyc2Vy LT5jaHVua19pYjsKIAogCXIgPSAgcmFkZW9uX2liX2dldChyZGV2LCBwYXJzZXItPnJpbmcsICZw YXJzZXItPmliLAogCQkJICAgdm0sIGliX2NodW5rLT5sZW5ndGhfZHcgKiA0KTsKQEAgLTcxNCw3 ICs3MTMsNyBAQCBpbnQgcmFkZW9uX2NzX3BhY2tldF9wYXJzZShzdHJ1Y3QgcmFkZW9uX2NzX3Bh cnNlciAqcCwKIAkJCSAgIHN0cnVjdCByYWRlb25fY3NfcGFja2V0ICpwa3QsCiAJCQkgICB1bnNp Z25lZCBpZHgpCiB7Ci0Jc3RydWN0IHJhZGVvbl9jc19jaHVuayAqaWJfY2h1bmsgPSAmcC0+Y2h1 bmtzW3AtPmNodW5rX2liX2lkeF07CisJc3RydWN0IHJhZGVvbl9jc19jaHVuayAqaWJfY2h1bmsg PSBwLT5jaHVua19pYjsKIAlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IHAtPnJkZXY7CiAJ dWludDMyX3QgaGVhZGVyOwogCkBAIC04MTYsMTIgKzgxNSwxMiBAQCBpbnQgcmFkZW9uX2NzX3Bh Y2tldF9uZXh0X3JlbG9jKHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwLAogCXVuc2lnbmVkIGlk eDsKIAlpbnQgcjsKIAotCWlmIChwLT5jaHVua19yZWxvY3NfaWR4ID09IC0xKSB7CisJaWYgKHAt PmNodW5rX3JlbG9jcyA9PSBOVUxMKSB7CiAJCURSTV9FUlJPUigiTm8gcmVsb2NhdGlvbiBjaHVu ayAhXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCSpjc19yZWxvYyA9IE5VTEw7Ci0JcmVs b2NzX2NodW5rID0gJnAtPmNodW5rc1twLT5jaHVua19yZWxvY3NfaWR4XTsKKwlyZWxvY3NfY2h1 bmsgPSBwLT5jaHVua19yZWxvY3M7CiAJciA9IHJhZGVvbl9jc19wYWNrZXRfcGFyc2UocCwgJnAz cmVsb2MsIHAtPmlkeCk7CiAJaWYgKHIpCiAJCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHJhY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX3RyYWNlLmgKaW5kZXggOWRiNzRhOS4uY2UwNzVjYiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl90cmFjZS5oCkBAIC0zOCw3ICszOCw3IEBAIFRSQUNFX0VWRU5UKHJhZGVvbl9j cywKIAogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJCSAgIF9fZW50cnktPnJpbmcgPSBwLT5yaW5n OwotCQkJICAgX19lbnRyeS0+ZHcgPSBwLT5jaHVua3NbcC0+Y2h1bmtfaWJfaWR4XS5sZW5ndGhf ZHc7CisJCQkgICBfX2VudHJ5LT5kdyA9IHAtPmNodW5rX2liLT5sZW5ndGhfZHc7CiAJCQkgICBf X2VudHJ5LT5mZW5jZXMgPSByYWRlb25fZmVuY2VfY291bnRfZW1pdHRlZCgKIAkJCQlwLT5yZGV2 LCBwLT5yaW5nKTsKIAkJCSAgICksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl91dmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3V2ZC5jCmluZGV4 IDcyY2Q0N2QuLmMxMGIyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX3V2ZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3V2ZC5jCkBAIC00 OTMsNyArNDkzLDcgQEAgc3RhdGljIGludCByYWRlb25fdXZkX2NzX3JlbG9jKHN0cnVjdCByYWRl b25fY3NfcGFyc2VyICpwLAogCXVpbnQ2NF90IHN0YXJ0LCBlbmQ7CiAJaW50IHI7CiAKLQlyZWxv Y3NfY2h1bmsgPSAmcC0+Y2h1bmtzW3AtPmNodW5rX3JlbG9jc19pZHhdOworCXJlbG9jc19jaHVu ayA9IHAtPmNodW5rX3JlbG9jczsKIAlvZmZzZXQgPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGRh dGEwKTsKIAlpZHggPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGRhdGExKTsKIAlpZiAoaWR4ID49 IHJlbG9jc19jaHVuay0+bGVuZ3RoX2R3KSB7CkBAIC02MTAsMTMgKzYxMCwxMyBAQCBpbnQgcmFk ZW9uX3V2ZF9jc19wYXJzZShzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCkKIAkJWzB4MDAwMDAw MDNdCT0JMjA0OCwKIAl9OwogCi0JaWYgKHAtPmNodW5rc1twLT5jaHVua19pYl9pZHhdLmxlbmd0 aF9kdyAlIDE2KSB7CisJaWYgKHAtPmNodW5rX2liLT5sZW5ndGhfZHcgJSAxNikgewogCQlEUk1f RVJST1IoIlVWRCBJQiBsZW5ndGggKCVkKSBub3QgMTYgZHdvcmRzIGFsaWduZWQhXG4iLAotCQkJ ICBwLT5jaHVua3NbcC0+Y2h1bmtfaWJfaWR4XS5sZW5ndGhfZHcpOworCQkJICBwLT5jaHVua19p Yi0+bGVuZ3RoX2R3KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYgKHAtPmNodW5rX3Jl bG9jc19pZHggPT0gLTEpIHsKKwlpZiAocC0+Y2h1bmtfcmVsb2NzID09IE5VTEwpIHsKIAkJRFJN X0VSUk9SKCJObyByZWxvY2F0aW9uIGNodW5rICFcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CkBAIC02NDAsNyArNjQwLDcgQEAgaW50IHJhZGVvbl91dmRfY3NfcGFyc2Uoc3RydWN0IHJhZGVv bl9jc19wYXJzZXIgKnApCiAJCQlEUk1fRVJST1IoIlVua25vd24gcGFja2V0IHR5cGUgJWQgIVxu IiwgcGt0LnR5cGUpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KLQl9IHdoaWxlIChwLT5pZHgg PCBwLT5jaHVua3NbcC0+Y2h1bmtfaWJfaWR4XS5sZW5ndGhfZHcpOworCX0gd2hpbGUgKHAtPmlk eCA8IHAtPmNodW5rX2liLT5sZW5ndGhfZHcpOwogCiAJaWYgKCFoYXNfbXNnX2NtZCkgewogCQlE Uk1fRVJST1IoIlVWRC1JQnMgbmVlZCBhIG1zZyBjb21tYW5kIVxuIik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl92Y2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3ZjZS5jCmluZGV4IGIzYTE2OTguLjk3NmZlNDMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ZjZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX3ZjZS5jCkBAIC00NTcsNyArNDU3LDcgQEAgaW50IHJhZGVvbl92Y2VfY3NfcmVs b2Moc3RydWN0IHJhZGVvbl9jc19wYXJzZXIgKnAsIGludCBsbywgaW50IGhpLAogCXVpbnQ2NF90 IHN0YXJ0LCBlbmQsIG9mZnNldDsKIAl1bnNpZ25lZCBpZHg7CiAKLQlyZWxvY3NfY2h1bmsgPSAm cC0+Y2h1bmtzW3AtPmNodW5rX3JlbG9jc19pZHhdOworCXJlbG9jc19jaHVuayA9IHAtPmNodW5r X3JlbG9jczsKIAlvZmZzZXQgPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIGxvKTsKIAlpZHggPSBy YWRlb25fZ2V0X2liX3ZhbHVlKHAsIGhpKTsKIApAQCAtNTM0LDcgKzUzNCw3IEBAIGludCByYWRl b25fdmNlX2NzX3BhcnNlKHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwKQogCXVpbnQzMl90ICpz aXplID0gJnRtcDsKIAlpbnQgaSwgcjsKIAotCXdoaWxlIChwLT5pZHggPCBwLT5jaHVua3NbcC0+ Y2h1bmtfaWJfaWR4XS5sZW5ndGhfZHcpIHsKKwl3aGlsZSAocC0+aWR4IDwgcC0+Y2h1bmtfaWIt Pmxlbmd0aF9kdykgewogCQl1aW50MzJfdCBsZW4gPSByYWRlb25fZ2V0X2liX3ZhbHVlKHAsIHAt PmlkeCk7CiAJCXVpbnQzMl90IGNtZCA9IHJhZGVvbl9nZXRfaWJfdmFsdWUocCwgcC0+aWR4ICsg MSk7CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=