From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: [PATCH 1/6] drm/i915: Split up hangcheck phases Date: Tue, 15 Nov 2016 16:36:31 +0200 Message-ID: <1479220596-2784-1-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A3356E5CD for ; Tue, 15 Nov 2016 14:37:19 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW4gb3JkZXIgdG8gc2ltcGxpZnkgaGFuZ2NoZWNrIHN0YXRlIGtlZXBpbmcsIHNwbGl0IGhhbmdj aGVjawpwZXIgZW5naW5lIGxvb3AgaW4gdGhyZWUgcGhhc2VzOiBzdGF0ZSBsb2FkLCBhY3Rpb24s IHN0YXRlIHNhdmUuCgpBZGQgZmV3IG1vcmUgaGFuZ2NoZWNrIGFjdGlvbnMgdG8gc2VwYXJhdGUg YmV0d2VlbiBzZXFubywgaGVhZAphbmQgc3VidW5pdCBtb3ZlbWVudHMuIFRoaXMgaGVscHMgdG8g Z2F0aGVyIGFsbCB0aGUgaGFuZ2NoZWNrCmFjdGlvbnMgdW5kZXIgYSBzaW5nbGUgc3dpdGNoIHVt YnJlbGxhLgoKQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWdu ZWQtb2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgfCAgIDggKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jICB8IDI0MSArKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwg ICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggNWQ2MjBiZC4uZjAy ZjU4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC0zMjMsOCArMzIz LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihlbnVtIGlu dGVsX2VuZ2luZV9oYW5nY2hlY2tfYWN0aW9uIGEpCiAJCXJldHVybiAiaWRsZSI7CiAJY2FzZSBI QU5HQ0hFQ0tfV0FJVDoKIAkJcmV0dXJuICJ3YWl0IjsKLQljYXNlIEhBTkdDSEVDS19BQ1RJVkU6 Ci0JCXJldHVybiAiYWN0aXZlIjsKKwljYXNlIEhBTkdDSEVDS19BQ1RJVkVfU0VRTk86CisJCXJl dHVybiAiYWN0aXZlIHNlcW5vIjsKKwljYXNlIEhBTkdDSEVDS19BQ1RJVkVfSEVBRDoKKwkJcmV0 dXJuICJhY3RpdmUgaGVhZCI7CisJY2FzZSBIQU5HQ0hFQ0tfQUNUSVZFX1NVQlVOSVRTOgorCQly ZXR1cm4gImFjdGl2ZSBzdWJ1bml0cyI7CiAJY2FzZSBIQU5HQ0hFQ0tfS0lDSzoKIAkJcmV0dXJu ICJraWNrIjsKIAljYXNlIEhBTkdDSEVDS19IVU5HOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o YW5nY2hlY2suYwppbmRleCA1M2RmNWIxLi4zZDJlODFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oYW5nY2hlY2suYwpAQCAtMjM2LDExICsyMzYsMTEgQEAgaGVhZF9zdHVjayhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHU2NCBhY3RoZCkKIAkJbWVtc2V0KCZlbmdpbmUtPmhh bmdjaGVjay5pbnN0ZG9uZSwgMCwKIAkJICAgICAgIHNpemVvZihlbmdpbmUtPmhhbmdjaGVjay5p bnN0ZG9uZSkpOwogCi0JCXJldHVybiBIQU5HQ0hFQ0tfQUNUSVZFOworCQlyZXR1cm4gSEFOR0NI RUNLX0FDVElWRV9IRUFEOwogCX0KIAogCWlmICghc3VidW5pdHNfc3R1Y2soZW5naW5lKSkKLQkJ cmV0dXJuIEhBTkdDSEVDS19BQ1RJVkU7CisJCXJldHVybiBIQU5HQ0hFQ0tfQUNUSVZFX1NVQlVO SVRTOwogCiAJcmV0dXJuIEhBTkdDSEVDS19IVU5HOwogfQpAQCAtMjkxLDYgKzI5MSwxMjkgQEAg ZW5naW5lX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGFjdGhkKQog CXJldHVybiBIQU5HQ0hFQ0tfSFVORzsKIH0KIAorc3RhdGljIHZvaWQgaGFuZ2NoZWNrX2xvYWRf c2FtcGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRl bF9lbmdpbmVfaGFuZ2NoZWNrICpoYykKK3sKKwkvKiBXZSBkb24ndCBzdHJpY3RseSBuZWVkIGFu IGlycS1iYXJyaWVyIGhlcmUsIGFzIHdlIGFyZSBub3QKKwkgKiBzZXJ2aW5nIGFuIGludGVycnVw dCByZXF1ZXN0LCBiZSBwYXJhbm9pZCBpbiBjYXNlIHRoZQorCSAqIGJhcnJpZXIgaGFzIHNpZGUt ZWZmZWN0cyAoc3VjaCBhcyBwcmV2ZW50aW5nIGEgYnJva2VuCisJICogY2FjaGVsaW5lIHNub29w KSBhbmQgc28gYmUgc3VyZSB0aGF0IHdlIGNhbiBzZWUgdGhlIHNlcW5vCisJICogYWR2YW5jZS4g SWYgdGhlIHNlcW5vIHNob3VsZCBzdGljaywgZHVlIHRvIGEgc3RhbGUKKwkgKiBjYWNoZWxpbmUs IHdlIHdvdWxkIGVycm9uZW91c2x5IGRlY2xhcmUgdGhlIEdQVSBodW5nLgorCSAqLworCWlmIChl bmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQorCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVu Z2luZSk7CisKKwloYy0+YWN0aGQgPSBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2lu ZSk7CisJaGMtPnNlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOworCWhjLT5z Y29yZSA9IGVuZ2luZS0+aGFuZ2NoZWNrLnNjb3JlOworfQorCitzdGF0aWMgdm9pZCBoYW5nY2hl Y2tfc3RvcmVfc2FtcGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgICBj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayAqaGMpCit7CisJZW5naW5lLT5oYW5n Y2hlY2suYWN0aGQgPSBoYy0+YWN0aGQ7CisJZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8gPSBoYy0+ c2Vxbm87CisJZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgPSBoYy0+c2NvcmU7CisJZW5naW5lLT5o YW5nY2hlY2suYWN0aW9uID0gaGMtPmFjdGlvbjsKK30KKworc3RhdGljIGVudW0gaW50ZWxfZW5n aW5lX2hhbmdjaGVja19hY3Rpb24KK2hhbmdjaGVja19nZXRfYWN0aW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdj aGVjayAqaGMpCit7CisJaWYgKGVuZ2luZS0+aGFuZ2NoZWNrLnNlcW5vICE9IGhjLT5zZXFubykK KwkJcmV0dXJuIEhBTkdDSEVDS19BQ1RJVkVfU0VRTk87CisKKwlpZiAoaTkxNV9zZXFub19wYXNz ZWQoaGMtPnNlcW5vLCBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSkpCisJCXJldHVy biBIQU5HQ0hFQ0tfSURMRTsKKworCXJldHVybiBlbmdpbmVfc3R1Y2soZW5naW5lLCBoYy0+YWN0 aGQpOworfQorCitzdGF0aWMgdm9pZCBoYW5nY2hlY2tfYWNjdW11bGF0ZV9zYW1wbGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdj aGVjayAqaGMpCit7CisJaGMtPmFjdGlvbiA9IGhhbmdjaGVja19nZXRfYWN0aW9uKGVuZ2luZSwg aGMpOworCisJc3dpdGNoIChoYy0+YWN0aW9uKSB7CisJY2FzZSBIQU5HQ0hFQ0tfSURMRToKKwlj YXNlIEhBTkdDSEVDS19XQUlUOgorCQlicmVhazsKKworCWNhc2UgSEFOR0NIRUNLX0FDVElWRV9I RUFEOgorCWNhc2UgSEFOR0NIRUNLX0FDVElWRV9TVUJVTklUUzoKKwkJLyogV2UgYWx3YXlzIGlu Y3JlbWVudCB0aGUgaGFuZ2NoZWNrIHNjb3JlCisJCSAqIGlmIHRoZSBlbmdpbmUgaXMgYnVzeSBh bmQgc3RpbGwgcHJvY2Vzc2luZworCQkgKiB0aGUgc2FtZSByZXF1ZXN0LCBzbyB0aGF0IG5vIHNp bmdsZSByZXF1ZXN0CisJCSAqIGNhbiBydW4gaW5kZWZpbml0ZWx5IChzdWNoIGFzIGEgY2hhaW4g b2YKKwkJICogYmF0Y2hlcykuIFRoZSBvbmx5IHRpbWUgd2UgZG8gbm90IGluY3JlbWVudAorCQkg KiB0aGUgaGFuZ2NoZWNrIHNjb3JlIG9uIHRoaXMgcmluZywgaWYgdGhpcworCQkgKiBlbmdpbmUg aXMgaW4gYSBsZWdpdGltYXRlIHdhaXQgZm9yIGFub3RoZXIKKwkJICogZW5naW5lLiBJbiB0aGF0 IGNhc2UgdGhlIHdhaXRpbmcgZW5naW5lIGlzIGEKKwkJICogdmljdGltIGFuZCB3ZSB3YW50IHRv IGJlIHN1cmUgd2UgY2F0Y2ggdGhlCisJCSAqIHJpZ2h0IGN1bHByaXQuIFRoZW4gZXZlcnkgdGlt ZSB3ZSBkbyBraWNrCisJCSAqIHRoZSByaW5nLCBhZGQgYSBzbWFsbCBpbmNyZW1lbnQgdG8gdGhl CisJCSAqIHNjb3JlIHNvIHRoYXQgd2UgY2FuIGNhdGNoIGEgYmF0Y2ggdGhhdCBpcworCQkgKiBi ZWluZyByZXBlYXRlZGx5IGtpY2tlZCBhbmQgc28gcmVzcG9uc2libGUKKwkJICogZm9yIHN0YWxs aW5nIHRoZSBtYWNoaW5lLgorCQkgKi8KKwkJaGMtPnNjb3JlICs9IDE7CisJCWJyZWFrOworCisJ Y2FzZSBIQU5HQ0hFQ0tfS0lDSzoKKwkJaGMtPnNjb3JlICs9IDU7CisJCWJyZWFrOworCisJY2Fz ZSBIQU5HQ0hFQ0tfSFVORzoKKwkJaGMtPnNjb3JlICs9IDIwOworCQlicmVhazsKKworCWNhc2Ug SEFOR0NIRUNLX0FDVElWRV9TRVFOTzoKKwkJLyogR3JhZHVhbGx5IHJlZHVjZSB0aGUgY291bnQg c28gdGhhdCB3ZSBjYXRjaCBEb1MKKwkJICogYXR0ZW1wdHMgYWNyb3NzIG11bHRpcGxlIGJhdGNo ZXMuCisJCSAqLworCQlpZiAoaGMtPnNjb3JlID4gMCkKKwkJCWhjLT5zY29yZSAtPSAxNTsKKwkJ aWYgKGhjLT5zY29yZSA8IDApCisJCQloYy0+c2NvcmUgPSAwOworCisJCS8qIENsZWFyIGhlYWQg YW5kIHN1YnVuaXQgc3RhdGVzIG9uIHNlcW5vIG1vdmVtZW50ICovCisJCWhjLT5hY3RoZCA9IDA7 CisKKwkJbWVtc2V0KCZlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSwgMCwKKwkJICAgICAgIHNp emVvZihlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSkpOworCQlicmVhazsKKworCWRlZmF1bHQ6 CisJCU1JU1NJTkdfQ0FTRShoYy0+YWN0aW9uKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGhhbmdj aGVja19kZWNsYXJlX2hhbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICAg dW5zaWduZWQgaW50IGh1bmcsCisJCQkJICAgdW5zaWduZWQgaW50IHN0dWNrKQoreworCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwljaGFyIG1zZ1s4MF07CisJdW5zaWduZWQgaW50 IHRtcDsKKwlpbnQgbGVuOworCisJLyogSWYgc29tZSByaW5ncyBodW5nIGJ1dCBvdGhlcnMgd2Vy ZSBzdGlsbCBidXN5LCBvbmx5CisJICogYmxhbWUgdGhlIGhhbmdpbmcgcmluZ3MgaW4gdGhlIHN5 bm9wc2lzLgorCSAqLworCWlmIChzdHVjayAhPSBodW5nKQorCQlodW5nICY9IH5zdHVjazsKKwls ZW4gPSBzY25wcmludGYobXNnLCBzaXplb2YobXNnKSwKKwkJCSIlcyBvbiAiLCBzdHVjayA9PSBo dW5nID8gIk5vIHByb2dyZXNzIiA6ICJIYW5nIik7CisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChl bmdpbmUsIGk5MTUsIGh1bmcsIHRtcCkKKwkJbGVuICs9IHNjbnByaW50Zihtc2cgKyBsZW4sIHNp emVvZihtc2cpIC0gbGVuLAorCQkJCSAiJXMsICIsIGVuZ2luZS0+bmFtZSk7CisJbXNnW2xlbi0y XSA9ICdcMCc7CisKKwlyZXR1cm4gaTkxNV9oYW5kbGVfZXJyb3IoaTkxNSwgaHVuZywgbXNnKTsK K30KKwogLyoKICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIGNoaXAgaGFzbid0IHJlcG9ydGVk IGJhY2sgd2l0aCBjb21wbGV0ZWQKICAqIGJhdGNoYnVmZmVycyBpbiBhIGxvbmcgdGltZS4gV2Ug a2VlcCB0cmFjayBwZXIgcmluZyBzZXFubyBwcm9ncmVzcyBhbmQKQEAgLTMwOCwxMCArNDMxLDYg QEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJdW5zaWduZWQgaW50IGh1bmcgPSAw LCBzdHVjayA9IDA7CiAJaW50IGJ1c3lfY291bnQgPSAwOwotI2RlZmluZSBCVVNZIDEKLSNkZWZp bmUgS0lDSyA1Ci0jZGVmaW5lIEhVTkcgMjAKLSNkZWZpbmUgQUNUSVZFX0RFQ0FZIDE1CiAKIAlp ZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykKIAkJcmV0dXJuOwpAQCAtMzI2LDExMiArNDQ1LDI2 IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQogCWludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKGRldl9w cml2KTsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewotCQlib29s IGJ1c3kgPSBpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpOwotCQl1NjQgYWN0aGQ7Ci0J CXUzMiBzZXFubzsKLQkJdTMyIHN1Ym1pdDsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9oYW5nY2hl Y2sgY3VyX3N0YXRlLCAqaGMgPSAmY3VyX3N0YXRlOworCQljb25zdCBib29sIGJ1c3kgPSBpbnRl bF9lbmdpbmVfaGFzX3dhaXRlcihlbmdpbmUpOwogCiAJCXNlbWFwaG9yZV9jbGVhcl9kZWFkbG9j a3MoZGV2X3ByaXYpOwogCi0JCS8qIFdlIGRvbid0IHN0cmljdGx5IG5lZWQgYW4gaXJxLWJhcnJp ZXIgaGVyZSwgYXMgd2UgYXJlIG5vdAotCQkgKiBzZXJ2aW5nIGFuIGludGVycnVwdCByZXF1ZXN0 LCBiZSBwYXJhbm9pZCBpbiBjYXNlIHRoZQotCQkgKiBiYXJyaWVyIGhhcyBzaWRlLWVmZmVjdHMg KHN1Y2ggYXMgcHJldmVudGluZyBhIGJyb2tlbgotCQkgKiBjYWNoZWxpbmUgc25vb3ApIGFuZCBz byBiZSBzdXJlIHRoYXQgd2UgY2FuIHNlZSB0aGUgc2Vxbm8KLQkJICogYWR2YW5jZS4gSWYgdGhl IHNlcW5vIHNob3VsZCBzdGljaywgZHVlIHRvIGEgc3RhbGUKLQkJICogY2FjaGVsaW5lLCB3ZSB3 b3VsZCBlcnJvbmVvdXNseSBkZWNsYXJlIHRoZSBHUFUgaHVuZy4KLQkJICovCi0JCWlmIChlbmdp bmUtPmlycV9zZXFub19iYXJyaWVyKQotCQkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcihlbmdp bmUpOwotCi0JCWFjdGhkID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOwot CQlzZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKLQkJc3VibWl0ID0gaW50 ZWxfZW5naW5lX2xhc3Rfc3VibWl0KGVuZ2luZSk7Ci0KLQkJaWYgKGVuZ2luZS0+aGFuZ2NoZWNr LnNlcW5vID09IHNlcW5vKSB7Ci0JCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHN1Ym1p dCkpIHsKLQkJCQllbmdpbmUtPmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfSURMRTsKLQkJ CX0gZWxzZSB7Ci0JCQkJLyogV2UgYWx3YXlzIGluY3JlbWVudCB0aGUgaGFuZ2NoZWNrIHNjb3Jl Ci0JCQkJICogaWYgdGhlIGVuZ2luZSBpcyBidXN5IGFuZCBzdGlsbCBwcm9jZXNzaW5nCi0JCQkJ ICogdGhlIHNhbWUgcmVxdWVzdCwgc28gdGhhdCBubyBzaW5nbGUgcmVxdWVzdAotCQkJCSAqIGNh biBydW4gaW5kZWZpbml0ZWx5IChzdWNoIGFzIGEgY2hhaW4gb2YKLQkJCQkgKiBiYXRjaGVzKS4g VGhlIG9ubHkgdGltZSB3ZSBkbyBub3QgaW5jcmVtZW50Ci0JCQkJICogdGhlIGhhbmdjaGVjayBz Y29yZSBvbiB0aGlzIHJpbmcsIGlmIHRoaXMKLQkJCQkgKiBlbmdpbmUgaXMgaW4gYSBsZWdpdGlt YXRlIHdhaXQgZm9yIGFub3RoZXIKLQkJCQkgKiBlbmdpbmUuIEluIHRoYXQgY2FzZSB0aGUgd2Fp dGluZyBlbmdpbmUgaXMgYQotCQkJCSAqIHZpY3RpbSBhbmQgd2Ugd2FudCB0byBiZSBzdXJlIHdl IGNhdGNoIHRoZQotCQkJCSAqIHJpZ2h0IGN1bHByaXQuIFRoZW4gZXZlcnkgdGltZSB3ZSBkbyBr aWNrCi0JCQkJICogdGhlIHJpbmcsIGFkZCBhIHNtYWxsIGluY3JlbWVudCB0byB0aGUKLQkJCQkg KiBzY29yZSBzbyB0aGF0IHdlIGNhbiBjYXRjaCBhIGJhdGNoIHRoYXQgaXMKLQkJCQkgKiBiZWlu ZyByZXBlYXRlZGx5IGtpY2tlZCBhbmQgc28gcmVzcG9uc2libGUKLQkJCQkgKiBmb3Igc3RhbGxp bmcgdGhlIG1hY2hpbmUuCi0JCQkJICovCi0JCQkJZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uID0K LQkJCQkJZW5naW5lX3N0dWNrKGVuZ2luZSwgYWN0aGQpOwotCi0JCQkJc3dpdGNoIChlbmdpbmUt PmhhbmdjaGVjay5hY3Rpb24pIHsKLQkJCQljYXNlIEhBTkdDSEVDS19JRExFOgotCQkJCWNhc2Ug SEFOR0NIRUNLX1dBSVQ6Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgSEFOR0NIRUNLX0FDVElWRToK LQkJCQkJZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgKz0gQlVTWTsKLQkJCQkJYnJlYWs7Ci0JCQkJ Y2FzZSBIQU5HQ0hFQ0tfS0lDSzoKLQkJCQkJZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgKz0gS0lD SzsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSBIQU5HQ0hFQ0tfSFVORzoKLQkJCQkJZW5naW5lLT5o YW5nY2hlY2suc2NvcmUgKz0gSFVORzsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCi0JCQlp ZiAoZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgPj0gSEFOR0NIRUNLX1NDT1JFX1JJTkdfSFVORykg ewotCQkJCWh1bmcgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKLQkJCQlpZiAoZW5naW5l LT5oYW5nY2hlY2suYWN0aW9uICE9IEhBTkdDSEVDS19IVU5HKQotCQkJCQlzdHVjayB8PSBpbnRl bF9lbmdpbmVfZmxhZyhlbmdpbmUpOwotCQkJfQotCQl9IGVsc2UgewotCQkJZW5naW5lLT5oYW5n Y2hlY2suYWN0aW9uID0gSEFOR0NIRUNLX0FDVElWRTsKLQotCQkJLyogR3JhZHVhbGx5IHJlZHVj ZSB0aGUgY291bnQgc28gdGhhdCB3ZSBjYXRjaCBEb1MKLQkJCSAqIGF0dGVtcHRzIGFjcm9zcyBt dWx0aXBsZSBiYXRjaGVzLgotCQkJICovCi0JCQlpZiAoZW5naW5lLT5oYW5nY2hlY2suc2NvcmUg PiAwKQotCQkJCWVuZ2luZS0+aGFuZ2NoZWNrLnNjb3JlIC09IEFDVElWRV9ERUNBWTsKLQkJCWlm IChlbmdpbmUtPmhhbmdjaGVjay5zY29yZSA8IDApCi0JCQkJZW5naW5lLT5oYW5nY2hlY2suc2Nv cmUgPSAwOwotCi0JCQkvKiBDbGVhciBoZWFkIGFuZCBzdWJ1bml0IHN0YXRlcyBvbiBzZXFubyBt b3ZlbWVudCAqLwotCQkJYWN0aGQgPSAwOwotCi0JCQltZW1zZXQoJmVuZ2luZS0+aGFuZ2NoZWNr Lmluc3Rkb25lLCAwLAotCQkJICAgICAgIHNpemVvZihlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9u ZSkpOworCQloYW5nY2hlY2tfbG9hZF9zYW1wbGUoZW5naW5lLCBoYyk7CisJCWhhbmdjaGVja19h Y2N1bXVsYXRlX3NhbXBsZShlbmdpbmUsIGhjKTsKKwkJaGFuZ2NoZWNrX3N0b3JlX3NhbXBsZShl bmdpbmUsIGhjKTsKKworCQlpZiAoaGMtPnNjb3JlID49IEhBTkdDSEVDS19TQ09SRV9SSU5HX0hV TkcpIHsKKwkJCWh1bmcgfD0gaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKKwkJCWlmIChoYy0+ YWN0aW9uICE9IEhBTkdDSEVDS19IVU5HKQorCQkJCXN0dWNrIHw9IGludGVsX2VuZ2luZV9mbGFn KGVuZ2luZSk7CiAJCX0KIAotCQllbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9IHNlcW5vOwotCQll bmdpbmUtPmhhbmdjaGVjay5hY3RoZCA9IGFjdGhkOwogCQlidXN5X2NvdW50ICs9IGJ1c3k7CiAJ fQogCi0JaWYgKGh1bmcpIHsKLQkJY2hhciBtc2dbODBdOwotCQl1bnNpZ25lZCBpbnQgdG1wOwot CQlpbnQgbGVuOwotCi0JCS8qIElmIHNvbWUgcmluZ3MgaHVuZyBidXQgb3RoZXJzIHdlcmUgc3Rp bGwgYnVzeSwgb25seQotCQkgKiBibGFtZSB0aGUgaGFuZ2luZyByaW5ncyBpbiB0aGUgc3lub3Bz aXMuCi0JCSAqLwotCQlpZiAoc3R1Y2sgIT0gaHVuZykKLQkJCWh1bmcgJj0gfnN0dWNrOwotCQls ZW4gPSBzY25wcmludGYobXNnLCBzaXplb2YobXNnKSwKLQkJCQkiJXMgb24gIiwgc3R1Y2sgPT0g aHVuZyA/ICJObyBwcm9ncmVzcyIgOiAiSGFuZyIpOwotCQlmb3JfZWFjaF9lbmdpbmVfbWFza2Vk KGVuZ2luZSwgZGV2X3ByaXYsIGh1bmcsIHRtcCkKLQkJCWxlbiArPSBzY25wcmludGYobXNnICsg bGVuLCBzaXplb2YobXNnKSAtIGxlbiwKLQkJCQkJICIlcywgIiwgZW5naW5lLT5uYW1lKTsKLQkJ bXNnW2xlbi0yXSA9ICdcMCc7Ci0KLQkJcmV0dXJuIGk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2 LCBodW5nLCBtc2cpOwotCX0KKwlpZiAoaHVuZykKKwkJaGFuZ2NoZWNrX2RlY2xhcmVfaGFuZyhk ZXZfcHJpdiwgaHVuZywgc3R1Y2spOwogCiAJLyogUmVzZXQgdGltZXIgaW4gY2FzZSBHUFUgaGFu Z3Mgd2l0aG91dCBhbm90aGVyIHJlcXVlc3QgYmVpbmcgYWRkZWQgKi8KIAlpZiAoYnVzeV9jb3Vu dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAzNDY2YjRlLi4z MTUyYjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC02Nyw3 ICs2Nyw5IEBAIHN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSB7CiBlbnVtIGludGVsX2VuZ2lu ZV9oYW5nY2hlY2tfYWN0aW9uIHsKIAlIQU5HQ0hFQ0tfSURMRSA9IDAsCiAJSEFOR0NIRUNLX1dB SVQsCi0JSEFOR0NIRUNLX0FDVElWRSwKKwlIQU5HQ0hFQ0tfQUNUSVZFX1NFUU5PLAorCUhBTkdD SEVDS19BQ1RJVkVfSEVBRCwKKwlIQU5HQ0hFQ0tfQUNUSVZFX1NVQlVOSVRTLAogCUhBTkdDSEVD S19LSUNLLAogCUhBTkdDSEVDS19IVU5HLAogfTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK