From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH 3/3] drm/radeon: Cleanup pageflipping IRQ handling for evergreen, si Date: Tue, 16 May 2017 17:12:00 -0400 Message-ID: <20170516211202.20325-4-lyude@redhat.com> References: <20170516211202.20325-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170516211202.20325-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org Cc: Lyude , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org U2FtZSBhcyB0aGUgcHJldmlvdXMgcGF0Y2gsIGJ1dCBmb3IgcGFnZWZsaXBwaW5nIG5vdy4KClNp Z25lZC1vZmYtYnk6IEx5dWRlIDxseXVkZUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vZXZlcmdyZWVuLmMgfCA3MCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggICAgfCAgNyArLS0tCiBkcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3NpLmMgICAgICAgIHwgNzIgKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTI3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdy ZWVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbi5jCmluZGV4IDc2YTJmMjAu LjNiZmM5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW4uYwpAQCAtNDQ1MiwxOCArNDQ1 Miw5IEBAIHZvaWQgZXZlcmdyZWVuX2Rpc2FibGVfaW50ZXJydXB0X3N0YXRlKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2KQogCVdSRUczMihETUFfQ05UTCwgdG1wKTsKIAlXUkVHMzIoR1JCTV9J TlRfQ05UTCwgMCk7CiAJV1JFRzMyKFNSQk1fSU5UX0NOVEwsIDApOwotCWZvciAoaSA9IDA7IGkg PCByZGV2LT5udW1fY3J0YzsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCByZGV2LT5udW1fY3J0Yzsg aSsrKSB7CiAJCVdSRUczMihJTlRfTUFTSyArIGNydGNfb2Zmc2V0c1tpXSwgMCk7Ci0KLQlXUkVH MzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RFUl9PRkZTRVQsIDAp OwotCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09G RlNFVCwgMCk7Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDQpIHsKLQkJV1JFRzMyKEdSUEhfSU5U X0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQkJV1JFRzMy KEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzNfUkVHSVNURVJfT0ZGU0VULCAwKTsK LQl9Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDYpIHsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRS T0wgKyBFVkVSR1JFRU5fQ1JUQzRfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQkJV1JFRzMyKEdSUEhf SU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VULCAwKTsKKwkJV1JF RzMyKEdSUEhfSU5UX0NPTlRST0wgKyBjcnRjX29mZnNldHNbaV0sIDApOwogCX0KIAogCS8qIG9u bHkgb25lIERBQyBvbiBEQ0U1ICovCkBAIC00NTU5LDIzICs0NTUwLDYgQEAgaW50IGV2ZXJncmVl bl9pcnFfc2V0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCiAJV1JFRzMyKEdSQk1fSU5U X0NOVEwsIGdyYm1faW50X2NudGwpOwogCi0JV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVS R1JFRU5fQ1JUQzBfUkVHSVNURVJfT0ZGU0VULAotCSAgICAgICBHUlBIX1BGTElQX0lOVF9NQVNL KTsKLQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDMV9SRUdJU1RFUl9P RkZTRVQsCi0JICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwotCWlmIChyZGV2LT5udW1fY3J0 YyA+PSA0KSB7Ci0JCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMyX1JF R0lTVEVSX09GRlNFVCwKLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwotCQlXUkVHMzIo R1JQSF9JTlRfQ09OVFJPTCArIEVWRVJHUkVFTl9DUlRDM19SRUdJU1RFUl9PRkZTRVQsCi0JCSAg ICAgICBHUlBIX1BGTElQX0lOVF9NQVNLKTsKLQl9Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDYp IHsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzRfUkVHSVNURVJf T0ZGU0VULAotCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Ci0JCVdSRUczMihHUlBIX0lO VF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEM1X1JFR0lTVEVSX09GRlNFVCwKLQkJICAgICAgIEdS UEhfUEZMSVBfSU5UX01BU0spOwotCX0KLQogCWZvciAoaSA9IDA7IGkgPCBFVkVSR1JFRU5fTUFY X0RJU1BfUkVHSVNURVJTOyBpKyspIHsKIAkJcmFkZW9uX2lycV9rbXNfc2V0X2lycV9uX2VuYWJs ZWQocmRldiwKIAkJCQkJCSBEQ19IUER4X0lOVF9DT05UUk9MKGkpLApAQCAtNDU5NCw2ICs0NTY4 LDkgQEAgaW50IGV2ZXJncmVlbl9pcnFfc2V0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQog CQkJICAgIHJkZXYsIElOVF9NQVNLICsgY3J0Y19vZmZzZXRzW2ldLCBWQkxBTktfSU5UX01BU0ss CiAJCQkgICAgcmRldi0+aXJxLmNydGNfdmJsYW5rX2ludFtpXSB8fAogCQkJICAgIGF0b21pY19y ZWFkKCZyZGV2LT5pcnEucGZsaXBbaV0pLCAidmJsYW5rIiwgaSk7CisKKwkJCVdSRUczMihHUlBI X0lOVF9DT05UUk9MICsgY3J0Y19vZmZzZXRzW2ldLAorCQkJICAgICAgIEdSUEhfUEZMSVBfSU5U X01BU0spOwogCQl9CiAJfQogCkBAIC00NjExLDYgKzQ1ODgsNyBAQCBpbnQgZXZlcmdyZWVuX2ly cV9zZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiBzdGF0aWMgdm9pZCBldmVyZ3JlZW5f aXJxX2FjayhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIHsKIAlpbnQgaTsKKwl1MzIgKmdy cGhfaW50ID0gcmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZ3JwaF9pbnQ7CiAJdTMyICpk aXNwX2ludCA9IHJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50OwogCXUzMiAq YWZtdF9zdGF0dXMgPSByZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5hZm10X3N0YXR1czsK IApAQCAtNDYyNyw0NSArNDYwNSwxOSBAQCBzdGF0aWMgdm9pZCBldmVyZ3JlZW5faXJxX2Fjayhz dHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAkJCQkgIEFGTVRfQVpfRk9STUFUX1dUUklHX0FD Syk7CiAKIAkJaWYgKGkgPCByZGV2LT5udW1fY3J0YykgeworCQkJZ3JwaF9pbnRbaV0gPSBSUkVH MzIoR1JQSF9JTlRfU1RBVFVTICsgY3J0Y19vZmZzZXRzW2ldKTsKKwogCQkJaWYgKGRpc3BfaW50 W2ldICYgTEJfRHhfVkJMQU5LX0lOVEVSUlVQVCkKIAkJCQlXUkVHMzIoVkJMQU5LX1NUQVRVUyAr IGNydGNfb2Zmc2V0c1tpXSwKIAkJCQkgICAgICAgVkJMQU5LX0FDSyk7CiAJCQlpZiAoZGlzcF9p bnRbaV0gJiBMQl9EeF9WTElORV9JTlRFUlJVUFQpCiAJCQkJV1JFRzMyKFZMSU5FX1NUQVRVUyAr IGNydGNfb2Zmc2V0c1tpXSwKIAkJCQkgICAgICAgVkxJTkVfQUNLKTsKKwkJCWlmIChncnBoX2lu dFtpXSAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQorCQkJCVdSRUczMihHUlBIX0lOVF9TVEFU VVMgKyBjcnRjX29mZnNldHNbaV0sCisJCQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsK IAkJfQogCX0KLQotCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmQxZ3JwaF9pbnQgPSBS UkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEMwX1JFR0lTVEVSX09GRlNFVCk7 Ci0JcmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDJncnBoX2ludCA9IFJSRUczMihHUlBI X0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzFfUkVHSVNURVJfT0ZGU0VUKTsKLQlpZiAocmRl di0+bnVtX2NydGMgPj0gNCkgewotCQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kM2dy cGhfaW50ID0gUlJFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMl9SRUdJU1RF Ul9PRkZTRVQpOwotCQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kNGdycGhfaW50ID0g UlJFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDM19SRUdJU1RFUl9PRkZTRVQp OwotCX0KLQlpZiAocmRldi0+bnVtX2NydGMgPj0gNikgewotCQlyZGV2LT5pcnEuc3RhdF9yZWdz LmV2ZXJncmVlbi5kNWdycGhfaW50ID0gUlJFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVF Tl9DUlRDNF9SRUdJU1RFUl9PRkZTRVQpOwotCQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVl bi5kNmdycGhfaW50ID0gUlJFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDNV9S RUdJU1RFUl9PRkZTRVQpOwotCX0KLQotCi0JaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdy ZWVuLmQxZ3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKLQkJV1JFRzMyKEdSUEhf SU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZMSVBf SU5UX0NMRUFSKTsKLQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDJncnBoX2lu dCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQotCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsg RVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwot Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDQpIHsKLQkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3Mu ZXZlcmdyZWVuLmQzZ3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKLQkJCVdSRUcz MihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULCBHUlBI X1BGTElQX0lOVF9DTEVBUik7Ci0JCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5k NGdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQpCi0JCQlXUkVHMzIoR1JQSF9JTlRf U1RBVFVTICsgRVZFUkdSRUVOX0NSVEMzX1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJUF9JTlRf Q0xFQVIpOwotCX0KLQotCWlmIChyZGV2LT5udW1fY3J0YyA+PSA2KSB7Ci0JCWlmIChyZGV2LT5p cnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kNWdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJS RUQpCi0JCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEM0X1JFR0lTVEVS X09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwotCQlpZiAocmRldi0+aXJxLnN0YXRfcmVn cy5ldmVyZ3JlZW4uZDZncnBoX2ludCAmIEdSUEhfUEZMSVBfSU5UX09DQ1VSUkVEKQotCQkJV1JF RzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDNV9SRUdJU1RFUl9PRkZTRVQsIEdS UEhfUEZMSVBfSU5UX0NMRUFSKTsKLQl9CiB9CiAKIHN0YXRpYyB2b2lkIGV2ZXJncmVlbl9pcnFf ZGlzYWJsZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o CmluZGV4IGU5NjFhOGEuLmVkYjk2ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtNzY4 LDEyICs3NjgsNyBAQCBzdHJ1Y3QgcjYwMF9pcnFfc3RhdF9yZWdzIHsKIAogc3RydWN0IGV2ZXJn cmVlbl9pcnFfc3RhdF9yZWdzIHsKIAl1MzIgZGlzcF9pbnRbNl07Ci0JdTMyIGQxZ3JwaF9pbnQ7 Ci0JdTMyIGQyZ3JwaF9pbnQ7Ci0JdTMyIGQzZ3JwaF9pbnQ7Ci0JdTMyIGQ0Z3JwaF9pbnQ7Ci0J dTMyIGQ1Z3JwaF9pbnQ7Ci0JdTMyIGQ2Z3JwaF9pbnQ7CisJdTMyIGdycGhfaW50WzZdOwogCXUz MiBhZm10X3N0YXR1c1s2XTsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vc2kuYwppbmRleCBiYjc0NWUxLi43YzI4 Njg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3NpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9zaS5jCkBAIC01OTQwLDIwICs1OTQwLDkgQEAgc3RhdGljIHZvaWQg c2lfZGlzYWJsZV9pbnRlcnJ1cHRfc3RhdGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiAJ V1JFRzMyKERNQV9DTlRMICsgRE1BMV9SRUdJU1RFUl9PRkZTRVQsIHRtcCk7CiAJV1JFRzMyKEdS Qk1fSU5UX0NOVEwsIDApOwogCVdSRUczMihTUkJNX0lOVF9DTlRMLCAwKTsKLQlmb3IgKGkgPSAw OyBpIDwgcmRldi0+bnVtX2NydGM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgcmRldi0+bnVtX2Ny dGM7IGkrKykgewogCQlXUkVHMzIoSU5UX01BU0sgKyBjcnRjX29mZnNldHNbaV0sIDApOwotCi0J aWYgKHJkZXYtPm51bV9jcnRjID49IDIpIHsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBF VkVSR1JFRU5fQ1JUQzBfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQkJV1JFRzMyKEdSUEhfSU5UX0NP TlRST0wgKyBFVkVSR1JFRU5fQ1JUQzFfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQl9Ci0JaWYgKHJk ZXYtPm51bV9jcnRjID49IDQpIHsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JF RU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wg KyBFVkVSR1JFRU5fQ1JUQzNfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQl9Ci0JaWYgKHJkZXYtPm51 bV9jcnRjID49IDYpIHsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JU QzRfUkVHSVNURVJfT0ZGU0VULCAwKTsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVS R1JFRU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VULCAwKTsKKwkJV1JFRzMyKEdSUEhfSU5UX0NPTlRS T0wgKyBjcnRjX29mZnNldHNbaV0sIDApOwogCX0KIAogCWlmICghQVNJQ19JU19OT0RDRShyZGV2 KSkgewpAQCAtNjEwMywyNSArNjA5Miw2IEBAIGludCBzaV9pcnFfc2V0KHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2KQogCQl0aGVybWFsX2ludCB8PSBUSEVSTV9JTlRfTUFTS19ISUdIIHwgVEhF Uk1fSU5UX01BU0tfTE9XOwogCX0KIAotCWlmIChyZGV2LT5udW1fY3J0YyA+PSAyKSB7Ci0JCVdS RUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZFUkdSRUVOX0NSVEMwX1JFR0lTVEVSX09GRlNFVCwK LQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01BU0spOwotCQlXUkVHMzIoR1JQSF9JTlRfQ09OVFJP TCArIEVWRVJHUkVFTl9DUlRDMV9SRUdJU1RFUl9PRkZTRVQsCi0JCSAgICAgICBHUlBIX1BGTElQ X0lOVF9NQVNLKTsKLQl9Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDQpIHsKLQkJV1JFRzMyKEdS UEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5fQ1JUQzJfUkVHSVNURVJfT0ZGU0VULAotCQkgICAg ICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Ci0JCVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgRVZF UkdSRUVOX0NSVEMzX1JFR0lTVEVSX09GRlNFVCwKLQkJICAgICAgIEdSUEhfUEZMSVBfSU5UX01B U0spOwotCX0KLQlpZiAocmRldi0+bnVtX2NydGMgPj0gNikgewotCQlXUkVHMzIoR1JQSF9JTlRf Q09OVFJPTCArIEVWRVJHUkVFTl9DUlRDNF9SRUdJU1RFUl9PRkZTRVQsCi0JCSAgICAgICBHUlBI X1BGTElQX0lOVF9NQVNLKTsKLQkJV1JFRzMyKEdSUEhfSU5UX0NPTlRST0wgKyBFVkVSR1JFRU5f Q1JUQzVfUkVHSVNURVJfT0ZGU0VULAotCQkgICAgICAgR1JQSF9QRkxJUF9JTlRfTUFTSyk7Ci0J fQotCiAJaWYgKCFBU0lDX0lTX05PRENFKHJkZXYpKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBTSV9N QVhfRElTUF9SRUdJU1RFUlM7IGkrKykgewogCQkJcmFkZW9uX2lycV9rbXNfc2V0X2lycV9uX2Vu YWJsZWQoCkBAIC02MTM2LDYgKzYxMDYsOCBAQCBpbnQgc2lfaXJxX3NldChzdHJ1Y3QgcmFkZW9u X2RldmljZSAqcmRldikKIAkJICAgIHJkZXYsIElOVF9NQVNLICsgY3J0Y19vZmZzZXRzW2ldLCBW QkxBTktfSU5UX01BU0ssCiAJCSAgICByZGV2LT5pcnEuY3J0Y192YmxhbmtfaW50W2ldIHx8CiAJ CSAgICBhdG9taWNfcmVhZCgmcmRldi0+aXJxLnBmbGlwW2ldKSwgInZibGFuayIsIGkpOworCisJ CVdSRUczMihHUlBIX0lOVF9DT05UUk9MICsgY3J0Y19vZmZzZXRzW2ldLCBHUlBIX1BGTElQX0lO VF9NQVNLKTsKIAl9CiAKIAlXUkVHMzIoQ0dfVEhFUk1BTF9JTlQsIHRoZXJtYWxfaW50KTsKQEAg LTYxNTAsMjEgKzYxMjIsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIHNpX2lycV9hY2soc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiB7CiAJaW50IGk7CiAJdTMyICpkaXNwX2ludCA9IHJkZXYt PmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmRpc3BfaW50OworCXUzMiAqZ3JwaF9pbnQgPSByZGV2 LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5ncnBoX2ludDsKIAogCWlmIChBU0lDX0lTX05PRENF KHJkZXYpKQogCQlyZXR1cm47CiAKLQlyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kMWdy cGhfaW50ID0gUlJFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVFTl9DUlRDMF9SRUdJU1RF Ul9PRkZTRVQpOwotCXJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmQyZ3JwaF9pbnQgPSBS UkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEMxX1JFR0lTVEVSX09GRlNFVCk7 Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDQpIHsKLQkJcmRldi0+aXJxLnN0YXRfcmVncy5ldmVy Z3JlZW4uZDNncnBoX2ludCA9IFJSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JU QzJfUkVHSVNURVJfT0ZGU0VUKTsKLQkJcmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDRn cnBoX2ludCA9IFJSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzNfUkVHSVNU RVJfT0ZGU0VUKTsKLQl9Ci0JaWYgKHJkZXYtPm51bV9jcnRjID49IDYpIHsKLQkJcmRldi0+aXJx LnN0YXRfcmVncy5ldmVyZ3JlZW4uZDVncnBoX2ludCA9IFJSRUczMihHUlBIX0lOVF9TVEFUVVMg KyBFVkVSR1JFRU5fQ1JUQzRfUkVHSVNURVJfT0ZGU0VUKTsKLQkJcmRldi0+aXJxLnN0YXRfcmVn cy5ldmVyZ3JlZW4uZDZncnBoX2ludCA9IFJSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JF RU5fQ1JUQzVfUkVHSVNURVJfT0ZGU0VUKTsKLQl9Ci0KIAlmb3IgKGkgPSAwOyBpIDwgU0lfTUFY X0RJU1BfUkVHSVNURVJTOyBpKyspIHsKIAkJZGlzcF9pbnRbaV0gPSBSUkVHMzIoRElTUF9JTlRF UlJVUFRfU1RBVFVTKGkpKTsKIApAQCAtNjE3NCwzMyArNjEzNiwxOSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgc2lfaXJxX2FjayhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldikKIAkJCVdSRUczMl9P UihEQ19IUER4X0lOVF9DT05UUk9MKGkpLCBEQ19IUER4X1JYX0lOVF9BQ0spOwogCiAJCWlmIChp IDwgcmRldi0+bnVtX2NydGMpIHsKKwkJCWdycGhfaW50W2ldID0gUlJFRzMyKEdSUEhfSU5UX1NU QVRVUyArIGNydGNfb2Zmc2V0c1tpXSk7CisKIAkJCWlmIChkaXNwX2ludFtpXSAmIExCX0R4X1ZC TEFOS19JTlRFUlJVUFQpCiAJCQkJV1JFRzMyKFZCTEFOS19TVEFUVVMgKyBjcnRjX29mZnNldHNb aV0sCiAJCQkJICAgICAgIFZCTEFOS19BQ0spOwogCQkJaWYgKGRpc3BfaW50W2ldICYgTEJfRHhf VkxJTkVfSU5URVJSVVBUKQogCQkJCVdSRUczMihWTElORV9TVEFUVVMgKyBjcnRjX29mZnNldHNb aV0sCiAJCQkJICAgICAgIFZMSU5FX0FDSyk7CisJCQlpZiAoZ3JwaF9pbnRbaV0gJiBHUlBIX1BG TElQX0lOVF9PQ0NVUlJFRCkKKwkJCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgY3J0Y19vZmZz ZXRzW2ldLAorCQkJCSAgICAgICBHUlBIX1BGTElQX0lOVF9DTEVBUik7CiAJCX0KIAl9Ci0KLQlp ZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDFncnBoX2ludCAmIEdSUEhfUEZMSVBf SU5UX09DQ1VSUkVEKQotCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdSRUVOX0NSVEMw X1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwotCWlmIChyZGV2LT5pcnEu c3RhdF9yZWdzLmV2ZXJncmVlbi5kMmdycGhfaW50ICYgR1JQSF9QRkxJUF9JTlRfT0NDVVJSRUQp Ci0JCVdSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzFfUkVHSVNURVJfT0ZG U0VULCBHUlBIX1BGTElQX0lOVF9DTEVBUik7Ci0KLQlpZiAocmRldi0+bnVtX2NydGMgPj0gNCkg ewotCQlpZiAocmRldi0+aXJxLnN0YXRfcmVncy5ldmVyZ3JlZW4uZDNncnBoX2ludCAmIEdSUEhf UEZMSVBfSU5UX09DQ1VSUkVEKQotCQkJV1JFRzMyKEdSUEhfSU5UX1NUQVRVUyArIEVWRVJHUkVF Tl9DUlRDMl9SRUdJU1RFUl9PRkZTRVQsIEdSUEhfUEZMSVBfSU5UX0NMRUFSKTsKLQkJaWYgKHJk ZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmQ0Z3JwaF9pbnQgJiBHUlBIX1BGTElQX0lOVF9P Q0NVUlJFRCkKLQkJCVdSRUczMihHUlBIX0lOVF9TVEFUVVMgKyBFVkVSR1JFRU5fQ1JUQzNfUkVH SVNURVJfT0ZGU0VULCBHUlBIX1BGTElQX0lOVF9DTEVBUik7Ci0JfQotCi0JaWYgKHJkZXYtPm51 bV9jcnRjID49IDYpIHsKLQkJaWYgKHJkZXYtPmlycS5zdGF0X3JlZ3MuZXZlcmdyZWVuLmQ1Z3Jw aF9pbnQgJiBHUlBIX1BGTElQX0lOVF9PQ0NVUlJFRCkKLQkJCVdSRUczMihHUlBIX0lOVF9TVEFU VVMgKyBFVkVSR1JFRU5fQ1JUQzRfUkVHSVNURVJfT0ZGU0VULCBHUlBIX1BGTElQX0lOVF9DTEVB Uik7Ci0JCWlmIChyZGV2LT5pcnEuc3RhdF9yZWdzLmV2ZXJncmVlbi5kNmdycGhfaW50ICYgR1JQ SF9QRkxJUF9JTlRfT0NDVVJSRUQpCi0JCQlXUkVHMzIoR1JQSF9JTlRfU1RBVFVTICsgRVZFUkdS RUVOX0NSVEM1X1JFR0lTVEVSX09GRlNFVCwgR1JQSF9QRkxJUF9JTlRfQ0xFQVIpOwotCX0KIH0K IAogc3RhdGljIHZvaWQgc2lfaXJxX2Rpc2FibGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYp Ci0tIAoyLjkuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==