From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 19/27] drm/radeon: fix a bug with the ring syncing code Date: Tue, 1 May 2012 13:19:29 -0400 Message-ID: <1335892777-7357-20-git-send-email-j.glisse@gmail.com> References: <ยท> <1335892777-7357-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 7C6EEA08EA for ; Tue, 1 May 2012 10:20:23 -0700 (PDT) Received: by mail-qc0-f177.google.com with SMTP id u28so2436886qcs.36 for ; Tue, 01 May 2012 10:20:23 -0700 (PDT) In-Reply-To: <1335892777-7357-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: =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+CgpSaW5ncyBu ZWVkIHRvIGxvY2sgaW4gb3JkZXIsIG90aGVyd2lzZQp0aGUgcmluZyBzdWJzeXN0ZW0gY2FuIGRl YWRsb2NrLgoKdjI6IGZpeCBlcnJvciBoYW5kbGluZyBhbmQgbnVtYmVyIG9mIGxvY2tlZCBkb3Vi bGV3b3Jkcy4KdjM6IHN0b3AgY3JlYXRpbmcgdW5uZWVkZWQgc2VtYXBob3Jlcy4KClNpZ25lZC1v ZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGRlYXRoc2ltcGxlQHZvZGFmb25lLmRlPgpSZXZpZXdl ZC1ieTogSmVyb21lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uLmggICAgICAgICAgIHwgICAgNCArKwogZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9yYWRlb25fY3MuYyAgICAgICAgfCAgIDM1ICsrKysrKy0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc2VtYXBob3JlLmMgfCAgIDU2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl90dG0uYyAg ICAgICB8ICAgNDggKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA5 MyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbi5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApp bmRleCAwYzg4OTNkLi5hMjMxNTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTQ1MCw2 ICs0NTAsMTAgQEAgdm9pZCByYWRlb25fc2VtYXBob3JlX2VtaXRfc2lnbmFsKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2LCBpbnQgcmluZywKIAkJCQkgIHN0cnVjdCByYWRlb25fc2VtYXBob3Jl ICpzZW1hcGhvcmUpOwogdm9pZCByYWRlb25fc2VtYXBob3JlX2VtaXRfd2FpdChzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcsCiAJCQkJc3RydWN0IHJhZGVvbl9zZW1hcGhvcmUg KnNlbWFwaG9yZSk7CitpbnQgcmFkZW9uX3NlbWFwaG9yZV9zeW5jX3JpbmdzKHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2LAorCQkJCXN0cnVjdCByYWRlb25fc2VtYXBob3JlICpzZW1hcGhvcmUs CisJCQkJYm9vbCBzeW5jX3RvW1JBREVPTl9OVU1fUklOR1NdLAorCQkJCWludCBkc3RfcmluZyk7 CiB2b2lkIHJhZGVvbl9zZW1hcGhvcmVfZnJlZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwK IAkJCSAgIHN0cnVjdCByYWRlb25fc2VtYXBob3JlICpzZW1hcGhvcmUpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb25fY3MuYwppbmRleCA1Y2FjODMyLi42NGI4NmU3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2NzLmMKQEAgLTExOCw2ICsxMTgsNyBAQCBzdGF0aWMgaW50IHJhZGVvbl9jc19n ZXRfcmluZyhzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCwgdTMyIHJpbmcsIHMzMiBwcmlvcml0 eQogc3RhdGljIGludCByYWRlb25fY3Nfc3luY19yaW5ncyhzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNl ciAqcCkKIHsKIAlib29sIHN5bmNfdG9fcmluZ1tSQURFT05fTlVNX1JJTkdTXSA9IHsgfTsKKwli b29sIG5lZWRfc3luYyA9IGZhbHNlOwogCWludCBpLCByOwogCiAJZm9yIChpID0gMDsgaSA8IHAt Pm5yZWxvY3M7IGkrKykgewpAQCAtMTI2LDM2ICsxMjcsMjQgQEAgc3RhdGljIGludCByYWRlb25f Y3Nfc3luY19yaW5ncyhzdHJ1Y3QgcmFkZW9uX2NzX3BhcnNlciAqcCkKIAogCQlpZiAoIShwLT5y ZWxvY3NbaV0uZmxhZ3MgJiBSQURFT05fUkVMT0NfRE9OVF9TWU5DKSkgewogCQkJc3RydWN0IHJh ZGVvbl9mZW5jZSAqZmVuY2UgPSBwLT5yZWxvY3NbaV0ucm9iai0+dGJvLnN5bmNfb2JqOwotCQkJ aWYgKCFyYWRlb25fZmVuY2Vfc2lnbmFsZWQoZmVuY2UpKSB7CisJCQlpZiAoZmVuY2UtPnJpbmcg IT0gcC0+cmluZyAmJiAhcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSkgewogCQkJCXN5bmNf dG9fcmluZ1tmZW5jZS0+cmluZ10gPSB0cnVlOworCQkJCW5lZWRfc3luYyA9IHRydWU7CiAJCQl9 CiAJCX0KIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX05VTV9SSU5HUzsgKytpKSB7Ci0J CS8qIG5vIG5lZWQgdG8gc3luYyB0byBvdXIgb3duIG9yIHVudXNlZCByaW5ncyAqLwotCQlpZiAo aSA9PSBwLT5yaW5nIHx8ICFzeW5jX3RvX3JpbmdbaV0gfHwgIXAtPnJkZXYtPnJpbmdbaV0ucmVh ZHkpCi0JCQljb250aW51ZTsKLQotCQlpZiAoIXAtPmliLT5mZW5jZS0+c2VtYXBob3JlKSB7Ci0J CQlyID0gcmFkZW9uX3NlbWFwaG9yZV9jcmVhdGUocC0+cmRldiwgJnAtPmliLT5mZW5jZS0+c2Vt YXBob3JlKTsKLQkJCWlmIChyKQotCQkJCXJldHVybiByOwotCQl9Ci0KLQkJciA9IHJhZGVvbl9y aW5nX2xvY2socC0+cmRldiwgJnAtPnJkZXYtPnJpbmdbaV0sIDMpOwotCQlpZiAocikKLQkJCXJl dHVybiByOwotCQlyYWRlb25fc2VtYXBob3JlX2VtaXRfc2lnbmFsKHAtPnJkZXYsIGksIHAtPmli LT5mZW5jZS0+c2VtYXBob3JlKTsKLQkJcmFkZW9uX3JpbmdfdW5sb2NrX2NvbW1pdChwLT5yZGV2 LCAmcC0+cmRldi0+cmluZ1tpXSk7CisJaWYgKCFuZWVkX3N5bmMpIHsKKwkJcmV0dXJuIDA7CisJ fQogCi0JCXIgPSByYWRlb25fcmluZ19sb2NrKHAtPnJkZXYsICZwLT5yZGV2LT5yaW5nW3AtPnJp bmddLCAzKTsKLQkJaWYgKHIpCi0JCQlyZXR1cm4gcjsKLQkJcmFkZW9uX3NlbWFwaG9yZV9lbWl0 X3dhaXQocC0+cmRldiwgcC0+cmluZywgcC0+aWItPmZlbmNlLT5zZW1hcGhvcmUpOwotCQlyYWRl b25fcmluZ191bmxvY2tfY29tbWl0KHAtPnJkZXYsICZwLT5yZGV2LT5yaW5nW3AtPnJpbmddKTsK KwlyID0gcmFkZW9uX3NlbWFwaG9yZV9jcmVhdGUocC0+cmRldiwgJnAtPmliLT5mZW5jZS0+c2Vt YXBob3JlKTsKKwlpZiAocikgeworCQlyZXR1cm4gcjsKIAl9Ci0JcmV0dXJuIDA7CisKKwlyZXR1 cm4gcmFkZW9uX3NlbWFwaG9yZV9zeW5jX3JpbmdzKHAtPnJkZXYsIHAtPmliLT5mZW5jZS0+c2Vt YXBob3JlLAorCQkJCQkgICBzeW5jX3RvX3JpbmcsIHAtPnJpbmcpOwogfQogCiBpbnQgcmFkZW9u X2NzX3BhcnNlcl9pbml0KHN0cnVjdCByYWRlb25fY3NfcGFyc2VyICpwLCB2b2lkICpkYXRhKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc2VtYXBob3JlLmMgYi9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYwppbmRleCA0Y2RjZWYyLi43 OTllNDM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhv cmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYwpAQCAt NzAsNiArNzAsNjIgQEAgdm9pZCByYWRlb25fc2VtYXBob3JlX2VtaXRfd2FpdChzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldiwgaW50IHJpbmcsCiAJcmFkZW9uX3NlbWFwaG9yZV9yaW5nX2VtaXQo cmRldiwgcmluZywgJnJkZXYtPnJpbmdbcmluZ10sIHNlbWFwaG9yZSwgdHJ1ZSk7CiB9CiAKK2lu dCByYWRlb25fc2VtYXBob3JlX3N5bmNfcmluZ3Moc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYs CisJCQkJc3RydWN0IHJhZGVvbl9zZW1hcGhvcmUgKnNlbWFwaG9yZSwKKwkJCQlib29sIHN5bmNf dG9bUkFERU9OX05VTV9SSU5HU10sCisJCQkJaW50IGRzdF9yaW5nKQoreworCWludCBpLCByOwor CisJZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgeworCQl1bnNpZ25lZCBu dW1fb3BzID0gaSA9PSBkc3RfcmluZyA/IFJBREVPTl9OVU1fUklOR1MgOiAxOworCisJCS8qIGRv bid0IGxvY2sgdW51c2VkIHJpbmdzICovCisJCWlmICghc3luY190b1tpXSAmJiBpICE9IGRzdF9y aW5nKQorCQkJY29udGludWU7CisKKwkJLyogcHJldmVudCBHUFUgZGVhZGxvY2tzICovCisJCWlm ICghcmRldi0+cmluZ1tpXS5yZWFkeSkgeworCQkJZGV2X2VycihyZGV2LT5kZXYsICJUcnlpbmcg dG8gc3luYyB0byBhIGRpc2FibGVkIHJpbmchIik7CisJCQlyID0gLUVJTlZBTDsKKwkJCWdvdG8g ZXJyb3I7CisJCX0KKworICAgICAgICAgICAgICAgIHIgPSByYWRlb25fcmluZ19sb2NrKHJkZXYs ICZyZGV2LT5yaW5nW2ldLCBudW1fb3BzICogOCk7CisgICAgICAgICAgICAgICAgaWYgKHIpCisJ CQlnb3RvIGVycm9yOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBSQURFT05fTlVNX1JJTkdTOyAr K2kpIHsKKwkJLyogbm8gbmVlZCB0byBzeW5jIHRvIG91ciBvd24gb3IgdW51c2VkIHJpbmdzICov CisJCWlmICghc3luY190b1tpXSB8fCBpID09IGRzdF9yaW5nKQorICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7CisKKwkJcmFkZW9uX3NlbWFwaG9yZV9lbWl0X3NpZ25hbChyZGV2LCBp LCBzZW1hcGhvcmUpOworCQlyYWRlb25fc2VtYXBob3JlX2VtaXRfd2FpdChyZGV2LCBkc3Rfcmlu Zywgc2VtYXBob3JlKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgUkFERU9OX05VTV9SSU5HUzsg KytpKSB7CisKKwkJLyogZG9uJ3QgdW5sb2NrIHVudXNlZCByaW5ncyAqLworCQlpZiAoIXN5bmNf dG9baV0gJiYgaSAhPSBkc3RfcmluZykKKwkJCWNvbnRpbnVlOworCisJCXJhZGVvbl9yaW5nX3Vu bG9ja19jb21taXQocmRldiwgJnJkZXYtPnJpbmdbaV0pOworCX0KKworCXJldHVybiAwOworCitl cnJvcjoKKwkvKiB1bmxvY2sgYWxsIGxvY2tzIHRha2VuIHNvIGZhciAqLworCWZvciAoLS1pOyBp ID49IDA7IC0taSkgeworCQlpZiAoc3luY190b1tpXSB8fCBpID09IGRzdF9yaW5nKSB7CisJCQly YWRlb25fcmluZ191bmxvY2tfdW5kbyhyZGV2LCAmcmRldi0+cmluZ1tpXSk7CisJCX0KKwl9CisJ cmV0dXJuIHI7Cit9CisKIHZvaWQgcmFkZW9uX3NlbWFwaG9yZV9mcmVlKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LAogCQkJICAgc3RydWN0IHJhZGVvbl9zZW1hcGhvcmUgKnNlbWFwaG9yZSkK IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKaW5kZXggZjQ5M2M2NC4uNWUzZDU0ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKQEAgLTIyMiw4ICsyMjIsOCBAQCBzdGF0 aWMgaW50IHJhZGVvbl9tb3ZlX2JsaXQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIHsK IAlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldjsKIAl1aW50NjRfdCBvbGRfc3RhcnQsIG5ld19z dGFydDsKLQlzdHJ1Y3QgcmFkZW9uX2ZlbmNlICpmZW5jZTsKLQlpbnQgciwgaTsKKwlzdHJ1Y3Qg cmFkZW9uX2ZlbmNlICpmZW5jZSwgKm9sZF9mZW5jZTsKKwlpbnQgcjsKIAogCXJkZXYgPSByYWRl b25fZ2V0X3JkZXYoYm8tPmJkZXYpOwogCXIgPSByYWRlb25fZmVuY2VfY3JlYXRlKHJkZXYsICZm ZW5jZSwgcmFkZW9uX2NvcHlfcmluZ19pbmRleChyZGV2KSk7CkBAIC0yNDIsNiArMjQyLDcgQEAg c3RhdGljIGludCByYWRlb25fbW92ZV9ibGl0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCURSTV9FUlJPUigiVW5rbm93biBwbGFjZW1lbnQgJWRc biIsIG9sZF9tZW0tPm1lbV90eXBlKTsKKwkJcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIAlzd2l0Y2ggKG5ld19tZW0tPm1lbV90eXBlKSB7CkBAIC0y NTMsNDIgKzI1NCwzNSBAQCBzdGF0aWMgaW50IHJhZGVvbl9tb3ZlX2JsaXQoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJRFJNX0VSUk9SKCJVbmtu b3duIHBsYWNlbWVudCAlZFxuIiwgb2xkX21lbS0+bWVtX3R5cGUpOworCQlyYWRlb25fZmVuY2Vf dW5yZWYoJmZlbmNlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWlmICghcmRldi0+cmluZ1ty YWRlb25fY29weV9yaW5nX2luZGV4KHJkZXYpXS5yZWFkeSkgewogCQlEUk1fRVJST1IoIlRyeWlu ZyB0byBtb3ZlIG1lbW9yeSB3aXRoIHJpbmcgdHVybmVkIG9mZi5cbiIpOworCQlyYWRlb25fZmVu Y2VfdW5yZWYoJmZlbmNlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJQlVJTERfQlVHX09O KChQQUdFX1NJWkUgJSBSQURFT05fR1BVX1BBR0VfU0laRSkgIT0gMCk7CiAKIAkvKiBzeW5jIG90 aGVyIHJpbmdzICovCi0JaWYgKHJkZXYtPmZhbWlseSA+PSBDSElQX1I2MDApIHsKLQkJZm9yIChp ID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCQkJLyogbm8gbmVlZCB0byBzeW5j IHRvIG91ciBvd24gb3IgdW51c2VkIHJpbmdzICovCi0JCQlpZiAoaSA9PSByYWRlb25fY29weV9y aW5nX2luZGV4KHJkZXYpIHx8ICFyZGV2LT5yaW5nW2ldLnJlYWR5KQotCQkJCWNvbnRpbnVlOwot Ci0JCQlpZiAoIWZlbmNlLT5zZW1hcGhvcmUpIHsKLQkJCQlyID0gcmFkZW9uX3NlbWFwaG9yZV9j cmVhdGUocmRldiwgJmZlbmNlLT5zZW1hcGhvcmUpOwotCQkJCS8qIEZJWE1FOiBoYW5kbGUgc2Vt YXBob3JlIGVycm9yICovCi0JCQkJaWYgKHIpCi0JCQkJCWNvbnRpbnVlOwotCQkJfQorCW9sZF9m ZW5jZSA9IGJvLT5zeW5jX29iajsKKwlpZiAob2xkX2ZlbmNlICYmIG9sZF9mZW5jZS0+cmluZyAh PSBmZW5jZS0+cmluZworCSAgICAmJiAhcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKG9sZF9mZW5jZSkp IHsKKwkJYm9vbCBzeW5jX3RvX3JpbmdbUkFERU9OX05VTV9SSU5HU10gPSB7IH07CisJCXN5bmNf dG9fcmluZ1tvbGRfZmVuY2UtPnJpbmddID0gdHJ1ZTsKKworCQlyID0gcmFkZW9uX3NlbWFwaG9y ZV9jcmVhdGUocmRldiwgJmZlbmNlLT5zZW1hcGhvcmUpOworCQlpZiAocikgeworCQkJcmFkZW9u X2ZlbmNlX3VucmVmKCZmZW5jZSk7CisJCQlyZXR1cm4gcjsKKwkJfQogCi0JCQlyID0gcmFkZW9u X3JpbmdfbG9jayhyZGV2LCAmcmRldi0+cmluZ1tpXSwgMyk7Ci0JCQkvKiBGSVhNRTogaGFuZGxl IHJpbmcgbG9jayBlcnJvciAqLwotCQkJaWYgKHIpCi0JCQkJY29udGludWU7Ci0JCQlyYWRlb25f c2VtYXBob3JlX2VtaXRfc2lnbmFsKHJkZXYsIGksIGZlbmNlLT5zZW1hcGhvcmUpOwotCQkJcmFk ZW9uX3JpbmdfdW5sb2NrX2NvbW1pdChyZGV2LCAmcmRldi0+cmluZ1tpXSk7Ci0KLQkJCXIgPSBy YWRlb25fcmluZ19sb2NrKHJkZXYsICZyZGV2LT5yaW5nW3JhZGVvbl9jb3B5X3JpbmdfaW5kZXgo cmRldildLCAzKTsKLQkJCS8qIEZJWE1FOiBoYW5kbGUgcmluZyBsb2NrIGVycm9yICovCi0JCQlp ZiAocikKLQkJCQljb250aW51ZTsKLQkJCXJhZGVvbl9zZW1hcGhvcmVfZW1pdF93YWl0KHJkZXYs IHJhZGVvbl9jb3B5X3JpbmdfaW5kZXgocmRldiksIGZlbmNlLT5zZW1hcGhvcmUpOwotCQkJcmFk ZW9uX3JpbmdfdW5sb2NrX2NvbW1pdChyZGV2LCAmcmRldi0+cmluZ1tyYWRlb25fY29weV9yaW5n X2luZGV4KHJkZXYpXSk7CisJCXIgPSByYWRlb25fc2VtYXBob3JlX3N5bmNfcmluZ3MocmRldiwg ZmVuY2UtPnNlbWFwaG9yZSwKKwkJCQkJCXN5bmNfdG9fcmluZywgZmVuY2UtPnJpbmcpOworCQlp ZiAocikgeworCQkJcmFkZW9uX2ZlbmNlX3VucmVmKCZmZW5jZSk7CisJCQlyZXR1cm4gcjsKIAkJ fQogCX0KIAotLSAKMS43LjcuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK