From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.glisse@gmail.com Subject: [PATCH 01/18] drm/radeon: replace the per ring mutex with a global one Date: Fri, 4 May 2012 18:43:42 -0400 Message-ID: <1336171439-7672-2-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 4ADCA9E7BF for ; Fri, 4 May 2012 15:44:16 -0700 (PDT) Received: by mail-qc0-f177.google.com with SMTP id u28so2491993qcs.36 for ; Fri, 04 May 2012 15:44:16 -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: =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+CgpBIHNpbmds ZSBnbG9iYWwgbXV0ZXggZm9yIHJpbmcgc3VibWlzc2lvbnMgc2VlbXMgc3VmZmljaWVudC4KClNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGRlYXRoc2ltcGxlQHZvZGFmb25lLmRlPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggICAgICAgICAgIHwgICAgMyArLQog ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMgICAgfCAgICAzICstCiBkcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wbS5jICAgICAgICB8ICAgMTAgKy0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9yaW5nLmMgICAgICB8ICAgMjggKysrKysrKysrKyst LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYyB8ICAgNDIg KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0 aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9yYWRlb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggNzI5 ZDMzMi4uNzFkOGFmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24u aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCkBAIC02NjcsNyArNjY3LDYg QEAgc3RydWN0IHJhZGVvbl9yaW5nIHsKIAl1aW50NjRfdAkJZ3B1X2FkZHI7CiAJdWludDMyX3QJ CWFsaWduX21hc2s7CiAJdWludDMyX3QJCXB0cl9tYXNrOwotCXN0cnVjdCBtdXRleAkJbXV0ZXg7 CiAJYm9vbAkJCXJlYWR5OwogCXUzMgkJCXB0cl9yZWdfc2hpZnQ7CiAJdTMyCQkJcHRyX3JlZ19t YXNrOwpAQCAtODA2LDYgKzgwNSw3IEBAIGludCByYWRlb25fcmluZ19hbGxvYyhzdHJ1Y3QgcmFk ZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9yaW5nICpjcCwgdW5zaWduCiBpbnQgcmFk ZW9uX3JpbmdfbG9jayhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9y aW5nICpjcCwgdW5zaWduZWQgbmR3KTsKIHZvaWQgcmFkZW9uX3JpbmdfY29tbWl0KHN0cnVjdCBy YWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX3JpbmcgKmNwKTsKIHZvaWQgcmFkZW9u X3JpbmdfdW5sb2NrX2NvbW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJh ZGVvbl9yaW5nICpjcCk7Cit2b2lkIHJhZGVvbl9yaW5nX3VuZG8oc3RydWN0IHJhZGVvbl9yaW5n ICpyaW5nKTsKIHZvaWQgcmFkZW9uX3JpbmdfdW5sb2NrX3VuZG8oc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmluZyAqY3ApOwogaW50IHJhZGVvbl9yaW5nX3Rlc3Qo c3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmluZyAqY3ApOwogdm9p ZCByYWRlb25fcmluZ19mb3JjZV9hY3Rpdml0eShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwg c3RydWN0IHJhZGVvbl9yaW5nICpyaW5nKTsKQEAgLTE1MTYsNiArMTUxNiw3IEBAIHN0cnVjdCBy YWRlb25fZGV2aWNlIHsKIAlyd2xvY2tfdAkJCWZlbmNlX2xvY2s7CiAJc3RydWN0IHJhZGVvbl9m ZW5jZV9kcml2ZXIJZmVuY2VfZHJ2W1JBREVPTl9OVU1fUklOR1NdOwogCXN0cnVjdCByYWRlb25f c2VtYXBob3JlX2RyaXZlcglzZW1hcGhvcmVfZHJ2OworCXN0cnVjdCBtdXRleAkJCXJpbmdfbG9j azsKIAlzdHJ1Y3QgcmFkZW9uX3JpbmcJCXJpbmdbUkFERU9OX05VTV9SSU5HU107CiAJc3RydWN0 IHJhZGVvbl9pYl9wb29sCQlpYl9wb29sOwogCXN0cnVjdCByYWRlb25faXJxCQlpcnE7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCmluZGV4IDkzNjE1ZDEuLmFkM2E3ZmIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCkBAIC03MjQsOCArNzI0LDcgQEAg aW50IHJhZGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAkgKiBj YW4gcmVjYWxsIGZ1bmN0aW9uIHdpdGhvdXQgaGF2aW5nIGxvY2tpbmcgaXNzdWVzICovCiAJcmFk ZW9uX211dGV4X2luaXQoJnJkZXYtPmNzX211dGV4KTsKIAlyYWRlb25fbXV0ZXhfaW5pdCgmcmRl di0+aWJfcG9vbC5tdXRleCk7Ci0JZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsr aSkKLQkJbXV0ZXhfaW5pdCgmcmRldi0+cmluZ1tpXS5tdXRleCk7CisJbXV0ZXhfaW5pdCgmcmRl di0+cmluZ19sb2NrKTsKIAltdXRleF9pbml0KCZyZGV2LT5kY19od19pMmNfbXV0ZXgpOwogCWlm IChyZGV2LT5mYW1pbHkgPj0gQ0hJUF9SNjAwKQogCQlzcGluX2xvY2tfaW5pdCgmcmRldi0+aWgu bG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcG0uYwppbmRleCBjYWE1NWQ2Li43YzM4NzQ1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3BtLmMKQEAgLTI1MiwxMCArMjUyLDcgQEAgc3Rh dGljIHZvaWQgcmFkZW9uX3BtX3NldF9jbG9ja3Moc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYp CiAKIAltdXRleF9sb2NrKCZyZGV2LT5kZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCW11dGV4X2xvY2so JnJkZXYtPnZyYW1fbXV0ZXgpOwotCWZvciAoaSA9IDA7IGkgPCBSQURFT05fTlVNX1JJTkdTOyAr K2kpIHsKLQkJaWYgKHJkZXYtPnJpbmdbaV0ucmluZ19vYmopCi0JCQltdXRleF9sb2NrKCZyZGV2 LT5yaW5nW2ldLm11dGV4KTsKLQl9CisJbXV0ZXhfbG9jaygmcmRldi0+cmluZ19sb2NrKTsKIAog CS8qIGd1aSBpZGxlIGludCBoYXMgaXNzdWVzIG9uIG9sZGVyIGNoaXBzIGl0IHNlZW1zICovCiAJ aWYgKHJkZXYtPmZhbWlseSA+PSBDSElQX1I2MDApIHsKQEAgLTMxMSwxMCArMzA4LDcgQEAgc3Rh dGljIHZvaWQgcmFkZW9uX3BtX3NldF9jbG9ja3Moc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYp CiAKIAlyZGV2LT5wbS5keW5wbV9wbGFubmVkX2FjdGlvbiA9IERZTlBNX0FDVElPTl9OT05FOwog Ci0JZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCQlpZiAocmRldi0+ cmluZ1tpXS5yaW5nX29iaikKLQkJCW11dGV4X3VubG9jaygmcmRldi0+cmluZ1tpXS5tdXRleCk7 Ci0JfQorCW11dGV4X3VubG9jaygmcmRldi0+cmluZ19sb2NrKTsKIAltdXRleF91bmxvY2soJnJk ZXYtPnZyYW1fbXV0ZXgpOwogCW11dGV4X3VubG9jaygmcmRldi0+ZGRldi0+c3RydWN0X211dGV4 KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3JpbmcuYyBi L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3JpbmcuYwppbmRleCAyZWI0YzZlLi5hNGQ2 MGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9yaW5nLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcmluZy5jCkBAIC0zNDYsOSArMzQ2LDkg QEAgaW50IHJhZGVvbl9yaW5nX2FsbG9jKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1 Y3QgcmFkZW9uX3JpbmcgKnJpbmcsIHVuc2kKIAkJaWYgKG5kdyA8IHJpbmctPnJpbmdfZnJlZV9k dykgewogCQkJYnJlYWs7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZyaW5nLT5tdXRleCk7CisJCW11 dGV4X3VubG9jaygmcmRldi0+cmluZ19sb2NrKTsKIAkJciA9IHJhZGVvbl9mZW5jZV93YWl0X25l eHQocmRldiwgcmFkZW9uX3JpbmdfaW5kZXgocmRldiwgcmluZykpOwotCQltdXRleF9sb2NrKCZy aW5nLT5tdXRleCk7CisJCW11dGV4X2xvY2soJnJkZXYtPnJpbmdfbG9jayk7CiAJCWlmIChyKQog CQkJcmV0dXJuIHI7CiAJfQpAQCAtMzYxLDEwICszNjEsMTAgQEAgaW50IHJhZGVvbl9yaW5nX2xv Y2soc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmluZyAqcmluZywg dW5zaWcKIHsKIAlpbnQgcjsKIAotCW11dGV4X2xvY2soJnJpbmctPm11dGV4KTsKKwltdXRleF9s b2NrKCZyZGV2LT5yaW5nX2xvY2spOwogCXIgPSByYWRlb25fcmluZ19hbGxvYyhyZGV2LCByaW5n LCBuZHcpOwogCWlmIChyKSB7Ci0JCW11dGV4X3VubG9jaygmcmluZy0+bXV0ZXgpOworCQltdXRl eF91bmxvY2soJnJkZXYtPnJpbmdfbG9jayk7CiAJCXJldHVybiByOwogCX0KIAlyZXR1cm4gMDsK QEAgLTM4OSwyMCArMzg5LDI1IEBAIHZvaWQgcmFkZW9uX3JpbmdfY29tbWl0KHN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX3JpbmcgKnJpbmcpCiB2b2lkIHJhZGVvbl9y aW5nX3VubG9ja19jb21taXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsIHN0cnVjdCByYWRl b25fcmluZyAqcmluZykKIHsKIAlyYWRlb25fcmluZ19jb21taXQocmRldiwgcmluZyk7Ci0JbXV0 ZXhfdW5sb2NrKCZyaW5nLT5tdXRleCk7CisJbXV0ZXhfdW5sb2NrKCZyZGV2LT5yaW5nX2xvY2sp OwogfQogCi12b2lkIHJhZGVvbl9yaW5nX3VubG9ja191bmRvKHN0cnVjdCByYWRlb25fZGV2aWNl ICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX3JpbmcgKnJpbmcpCit2b2lkIHJhZGVvbl9yaW5nX3VuZG8o c3RydWN0IHJhZGVvbl9yaW5nICpyaW5nKQogewogCXJpbmctPndwdHIgPSByaW5nLT53cHRyX29s ZDsKLQltdXRleF91bmxvY2soJnJpbmctPm11dGV4KTsKK30KKwordm9pZCByYWRlb25fcmluZ191 bmxvY2tfdW5kbyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9yaW5n ICpyaW5nKQoreworCXJhZGVvbl9yaW5nX3VuZG8ocmluZyk7CisJbXV0ZXhfdW5sb2NrKCZyZGV2 LT5yaW5nX2xvY2spOwogfQogCiB2b2lkIHJhZGVvbl9yaW5nX2ZvcmNlX2FjdGl2aXR5KHN0cnVj dCByYWRlb25fZGV2aWNlICpyZGV2LCBzdHJ1Y3QgcmFkZW9uX3JpbmcgKnJpbmcpCiB7CiAJaW50 IHI7CiAKLQltdXRleF9sb2NrKCZyaW5nLT5tdXRleCk7CisJbXV0ZXhfbG9jaygmcmRldi0+cmlu Z19sb2NrKTsKIAlyYWRlb25fcmluZ19mcmVlX3NpemUocmRldiwgcmluZyk7CiAJaWYgKHJpbmct PnJwdHIgPT0gcmluZy0+d3B0cikgewogCQlyID0gcmFkZW9uX3JpbmdfYWxsb2MocmRldiwgcmlu ZywgMSk7CkBAIC00MTEsNyArNDE2LDcgQEAgdm9pZCByYWRlb25fcmluZ19mb3JjZV9hY3Rpdml0 eShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgc3RydWN0IHJhZGVvbl9yaW5nICoKIAkJCXJh ZGVvbl9yaW5nX2NvbW1pdChyZGV2LCByaW5nKTsKIAkJfQogCX0KLQltdXRleF91bmxvY2soJnJp bmctPm11dGV4KTsKKwltdXRleF91bmxvY2soJnJkZXYtPnJpbmdfbG9jayk7CiB9CiAKIHZvaWQg cmFkZW9uX3JpbmdfbG9ja3VwX3VwZGF0ZShzdHJ1Y3QgcmFkZW9uX3JpbmcgKnJpbmcpCkBAIC01 MjAsMTEgKzUyNSwxMiBAQCB2b2lkIHJhZGVvbl9yaW5nX2Zpbmkoc3RydWN0IHJhZGVvbl9kZXZp Y2UgKnJkZXYsIHN0cnVjdCByYWRlb25fcmluZyAqcmluZykKIAlpbnQgcjsKIAlzdHJ1Y3QgcmFk ZW9uX2JvICpyaW5nX29iajsKIAotCW11dGV4X2xvY2soJnJpbmctPm11dGV4KTsKKwltdXRleF9s b2NrKCZyZGV2LT5yaW5nX2xvY2spOwogCXJpbmdfb2JqID0gcmluZy0+cmluZ19vYmo7CisJcmlu Zy0+cmVhZHkgPSBmYWxzZTsKIAlyaW5nLT5yaW5nID0gTlVMTDsKIAlyaW5nLT5yaW5nX29iaiA9 IE5VTEw7Ci0JbXV0ZXhfdW5sb2NrKCZyaW5nLT5tdXRleCk7CisJbXV0ZXhfdW5sb2NrKCZyZGV2 LT5yaW5nX2xvY2spOwogCiAJaWYgKHJpbmdfb2JqKSB7CiAJCXIgPSByYWRlb25fYm9fcmVzZXJ2 ZShyaW5nX29iaiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fc2VtYXBob3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zZW1hcGhv cmUuYwppbmRleCA5MzBhMDhhLi5jNWIzZDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9zZW1hcGhvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9zZW1hcGhvcmUuYwpAQCAtMzksNyArMzksNiBAQCBzdGF0aWMgaW50IHJhZGVvbl9zZW1h cGhvcmVfYWRkX2JvKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQogCXVpbnQzMl90ICpjcHVf cHRyOwogCWludCByLCBpOwogCi0KIAlibyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCByYWRlb25f c2VtYXBob3JlX2JvKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKGJvID09IE5VTEwpIHsKIAkJcmV0dXJu IC1FTk9NRU07CkBAIC0xNTQsMTMgKzE1MywxNyBAQCBpbnQgcmFkZW9uX3NlbWFwaG9yZV9zeW5j X3JpbmdzKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LAogCQkJCWJvb2wgc3luY190b1tSQURF T05fTlVNX1JJTkdTXSwKIAkJCQlpbnQgZHN0X3JpbmcpCiB7Ci0JaW50IGksIHI7CisJaW50IGkg PSAwLCByOwogCi0JZm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCQl1 bnNpZ25lZCBudW1fb3BzID0gaSA9PSBkc3RfcmluZyA/IFJBREVPTl9OVU1fUklOR1MgOiAxOwor CW11dGV4X2xvY2soJnJkZXYtPnJpbmdfbG9jayk7CisJciA9IHJhZGVvbl9yaW5nX2FsbG9jKHJk ZXYsICZyZGV2LT5yaW5nW2RzdF9yaW5nXSwgUkFERU9OX05VTV9SSU5HUyAqIDgpOworCWlmIChy KSB7CisJCWdvdG8gZXJyb3I7CisJfQogCi0JCS8qIGRvbid0IGxvY2sgdW51c2VkIHJpbmdzICov Ci0JCWlmICghc3luY190b1tpXSAmJiBpICE9IGRzdF9yaW5nKQorCWZvciAoaSA9IDA7IGkgPCBS QURFT05fTlVNX1JJTkdTOyArK2kpIHsKKwkJLyogbm8gbmVlZCB0byBzeW5jIHRvIG91ciBvd24g b3IgdW51c2VkIHJpbmdzICovCisJCWlmICghc3luY190b1tpXSB8fCBpID09IGRzdF9yaW5nKQog CQkJY29udGludWU7CiAKIAkJLyogcHJldmVudCBHUFUgZGVhZGxvY2tzICovCkBAIC0xNzAsMzgg KzE3MywzMSBAQCBpbnQgcmFkZW9uX3NlbWFwaG9yZV9zeW5jX3JpbmdzKHN0cnVjdCByYWRlb25f ZGV2aWNlICpyZGV2LAogCQkJZ290byBlcnJvcjsKIAkJfQogCi0gICAgICAgICAgICAgICAgciA9 IHJhZGVvbl9yaW5nX2xvY2socmRldiwgJnJkZXYtPnJpbmdbaV0sIG51bV9vcHMgKiA4KTsKLSAg ICAgICAgICAgICAgICBpZiAocikKKwkJciA9IHJhZGVvbl9yaW5nX2FsbG9jKHJkZXYsICZyZGV2 LT5yaW5nW2ldLCA4KTsKKwkJaWYgKHIpIHsKIAkJCWdvdG8gZXJyb3I7Ci0JfQotCi0JZm9yIChp ID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCQkvKiBubyBuZWVkIHRvIHN5bmMg dG8gb3VyIG93biBvciB1bnVzZWQgcmluZ3MgKi8KLQkJaWYgKCFzeW5jX3RvW2ldIHx8IGkgPT0g ZHN0X3JpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkJfQogCiAJCXJh ZGVvbl9zZW1hcGhvcmVfZW1pdF9zaWduYWwocmRldiwgaSwgc2VtYXBob3JlKTsKIAkJcmFkZW9u X3NlbWFwaG9yZV9lbWl0X3dhaXQocmRldiwgZHN0X3JpbmcsIHNlbWFwaG9yZSk7Ci0JfQogCi0J Zm9yIChpID0gMDsgaSA8IFJBREVPTl9OVU1fUklOR1M7ICsraSkgewotCi0JCS8qIGRvbid0IHVu bG9jayB1bnVzZWQgcmluZ3MgKi8KLQkJaWYgKCFzeW5jX3RvW2ldICYmIGkgIT0gZHN0X3Jpbmcp Ci0JCQljb250aW51ZTsKLQotCQlyYWRlb25fcmluZ191bmxvY2tfY29tbWl0KHJkZXYsICZyZGV2 LT5yaW5nW2ldKTsKKwkJcmFkZW9uX3JpbmdfY29tbWl0KHJkZXYsICZyZGV2LT5yaW5nW2ldKTsK IAl9CiAKKwlyYWRlb25fcmluZ19jb21taXQocmRldiwgJnJkZXYtPnJpbmdbZHN0X3JpbmddKTsK KwltdXRleF91bmxvY2soJnJkZXYtPnJpbmdfbG9jayk7CisKIAlyZXR1cm4gMDsKIAogZXJyb3I6 CiAJLyogdW5sb2NrIGFsbCBsb2NrcyB0YWtlbiBzbyBmYXIgKi8KIAlmb3IgKC0taTsgaSA+PSAw OyAtLWkpIHsKIAkJaWYgKHN5bmNfdG9baV0gfHwgaSA9PSBkc3RfcmluZykgewotCQkJcmFkZW9u X3JpbmdfdW5sb2NrX3VuZG8ocmRldiwgJnJkZXYtPnJpbmdbaV0pOworCQkJcmFkZW9uX3Jpbmdf dW5kbygmcmRldi0+cmluZ1tpXSk7CiAJCX0KIAl9CisJcmFkZW9uX3JpbmdfdW5kbygmcmRldi0+ cmluZ1tkc3RfcmluZ10pOworCW11dGV4X3VubG9jaygmcmRldi0+cmluZ19sb2NrKTsKIAlyZXR1 cm4gcjsKIH0KIAotLSAKMS43LjcuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK