From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 5 Apr 2018 13:40:28 +0100 Message-Id: <20180405124028.22766-6-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180405124028.22766-1-tvrtko.ursulin@linux.intel.com> References: <20180405124028.22766-1-tvrtko.ursulin@linux.intel.com> Subject: [Intel-gfx] [PATCH i-g-t 5/5] tests/i915_query: Engine queues tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkJhc2ljIHRl c3RzIHRvIGNvdmVyIGVuZ2luZSBxdWV1ZWQvcnVubmFibGUvcnVubmluZyBtZXRyaWMgYXMgcmVw b3J0ZWQKYnkgdGhlIERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVMgcXVlcnkuCgp2MjoKICog VXBkYXRlIEFCSSBmb3IgaTkxNSBjaGFuZ2VzLgogKiBVc2UgaWd0X3NwaW5fYnVzeXdhaXRfdW50 aWxfcnVubmluZy4KICogU3VwcG9ydCBubyBoYXJkd2FyZSBjb250ZXh0cy4KICogTW9yZSBjb21t ZW50cy4gKExpb25lbCBMYW5kd2VybGluKQogQ2hyaXMgV2lsc29uOgogKiBDaGVjayBmb3Igc3cg c3luYyBzdXBwb3J0LgogKiBNdWx0aXBsZSBjb250ZXh0cyBxdWV1ZWQgdGVzdC4KICogU2ltcGxp ZnkgY29udGV4dCBhbmQgYmIgYWxsb2NhdGlvbi4KICogRml4IGFzc2VydHMgaW4gdGhlIHJ1bm5p bmcgc3VidGVzdC4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+Ci0tLQogdGVzdHMvaTkxNV9xdWVyeS5jIHwgNDQyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg NDQyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1X3F1ZXJ5LmMgYi90ZXN0 cy9pOTE1X3F1ZXJ5LmMKaW5kZXggYzdkZThjYmQ4MzcxLi44MzE5MmMzNDhlNzAgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2k5MTVfcXVlcnkuYworKysgYi90ZXN0cy9pOTE1X3F1ZXJ5LmMKQEAgLTIyLDYg KzIyLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgog CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKQEAgLTQ3Nyw4ICs0NzgsNDE0IEBAIHRlc3RfcXVlcnlf dG9wb2xvZ3lfa25vd25fcGNpX2lkcyhpbnQgZmQsIGludCBkZXZpZCkKIAlmcmVlKHRvcG9faW5m byk7CiB9CiAKKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVFUwkyCisKK3N0cnVj dCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHsKKwkvKiogRW5naW5lIGNsYXNzIGFzIGlu IGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFzcy4gKi8KKwlfX3UxNiBjbGFzczsKKworCS8q KiBFbmdpbmUgaW5zdGFuY2UgbnVtYmVyLiAqLworCV9fdTE2IGluc3RhbmNlOworCisJLyoqIE51 bWJlciBvZiByZXF1ZXN0cyB3aXRoIHVucmVzb2x2ZWQgZmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMu ICovCisJX191MzIgcXVldWVkOworCisJLyoqIE51bWJlciBvZiByZWFkeSByZXF1ZXN0cyB3YWl0 aW5nIG9uIGEgc2xvdCBvbiBHUFUuICovCisJX191MzIgcnVubmFibGU7CisKKwkvKiogTnVtYmVy IG9mIHJlcXVlc3RzIGV4ZWN1dGluZyBvbiB0aGUgR1BVLiAqLworCV9fdTMyIHJ1bm5pbmc7CisK KwlfX3UzMiByc3ZkWzVdOworfTsKKworc3RhdGljIGJvb2wgcXVlcnlfZW5naW5lX3F1ZXVlc19z dXBwb3J0ZWQoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7 CisJCS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVMsCisJfTsKKworCXJl dHVybiBfX2k5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKSA9PSAwICYmIGl0ZW0ubGVuZ3Ro ID4gMDsKK30KKworc3RhdGljIHZvaWQgZW5naW5lX3F1ZXVlc19pbnZhbGlkKGludCBmZCkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX3F1ZXVlcyBxdWV1ZXM7CisJc3RydWN0IGRy bV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbTsKKwl1bnNpZ25lZCBpbnQgbGVuOworCXVuc2lnbmVkIGlu dCBpOworCisJLyogRmxhZ3MgaXMgTUJaLiAqLworCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0 ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVFUzsKKwlp dGVtLmZsYWdzID0gMTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fz c2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7CisKKwkvKiBMZW5ndGggbm90IHplcm8gYW5k IG5vdCBncmVhdGVyIG9yIGVxdWFsIHJlcXVpcmVkIHNpemUuICovCisJbWVtc2V0KCZpdGVtLCAw LCBzaXplb2YoaXRlbSkpOworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVf UVVFVUVTOworCWl0ZW0ubGVuZ3RoID0gMTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwg MSk7CisJaWd0X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7CisKKwkvKiBRdWVyeSBj b3JyZWN0IGxlbmd0aC4gKi8KKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihpdGVtKSk7CisJaXRl bS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJaTkxNV9xdWVyeV9p dGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnQoaXRlbS5sZW5ndGggPj0gMCk7CisJbGVu ID0gaXRlbS5sZW5ndGg7CisKKwkvKiBJdmFsaWQgcG9pbnRlci4gKi8KKwltZW1zZXQoJml0ZW0s IDAsIHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lO RV9RVUVVRVM7CisJaXRlbS5sZW5ndGggPSBsZW47CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0 ZW0sIDEpOworCWlndF9hc3NlcnRfZXEoaXRlbS5sZW5ndGgsIC1FRkFVTFQpOworCisJLyogUmVz ZXJ2ZWQgZmllbGRzIGFyZSBNQlouICovCisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShx dWV1ZXMucnN2ZCk7IGkrKykgeworCQltZW1zZXQoJnF1ZXVlcywgMCwgc2l6ZW9mKHF1ZXVlcykp OworCQlxdWV1ZXMucnN2ZFtpXSA9IDE7CisJCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0p KTsKKwkJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJCWl0 ZW0ubGVuZ3RoID0gbGVuOworCQlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZxdWV1 ZXMpOworCQlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJCWlndF9hc3NlcnRfZXEo aXRlbS5sZW5ndGgsIC1FSU5WQUwpOworCX0KKworCW1lbXNldCgmcXVldWVzLCAwLCBzaXplb2Yo cXVldWVzKSk7CisJcXVldWVzLmNsYXNzID0gLTE7CisJbWVtc2V0KCZpdGVtLCAwLCBzaXplb2Yo aXRlbSkpOworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfUVVFVUVTOwor CWl0ZW0ubGVuZ3RoID0gbGVuOworCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIoJnF1 ZXVlcyk7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnRfZXEo aXRlbS5sZW5ndGgsIC1FTk9FTlQpOworCisJbWVtc2V0KCZxdWV1ZXMsIDAsIHNpemVvZihxdWV1 ZXMpKTsKKwlxdWV1ZXMuaW5zdGFuY2UgPSAtMTsKKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihp dGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJ aXRlbS5sZW5ndGggPSBsZW47CisJCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIoJnF1 ZXVlcyk7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnRfZXEo aXRlbS5sZW5ndGgsIC1FTk9FTlQpOworfQorCitzdGF0aWMgdm9pZCBlbmdpbmVfcXVldWVzKGlu dCBmZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQoreworCXN0cnVj dCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHF1ZXVlczsKKwlzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfaXRlbSBpdGVtOworCXVuc2lnbmVkIGludCBsZW47CisKKwkvKiBRdWVyeSByZXF1aXJl ZCBidWZmZXIgbGVuZ3RoLiAqLworCW1lbXNldCgmcXVldWVzLCAwLCBzaXplb2YocXVldWVzKSk7 CisJbWVtc2V0KCZpdGVtLCAwLCBzaXplb2YoaXRlbSkpOworCWl0ZW0ucXVlcnlfaWQgPSBEUk1f STkxNV9RVUVSWV9FTkdJTkVfUVVFVUVTOworCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50 ZXIoJnF1ZXVlcyk7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3Nl cnQoaXRlbS5sZW5ndGggPj0gMCk7CisJaWd0X2Fzc2VydChpdGVtLmxlbmd0aCA8PSBzaXplb2Yo cXVldWVzKSk7CisJbGVuID0gaXRlbS5sZW5ndGg7CisKKwkvKiBDaGVjayBsZW5ndGggbGFyZ2Vy IHRoYW4gcmVxdWlyZWQgd29ya3MgYW5kIHJlcG9ydHMgc2FtZSBsZW5ndGguICovCisJbWVtc2V0 KCZxdWV1ZXMsIDAsIHNpemVvZihxdWV1ZXMpKTsKKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihp dGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJ aXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmcXVldWVzKTsKKwlpdGVtLmxlbmd0aCA9 IGxlbiArIDE7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnRf ZXEoaXRlbS5sZW5ndGgsIGxlbik7CisKKwkvKiBBY3R1YWwgcXVlcnkuICovCisJbWVtc2V0KCZx dWV1ZXMsIDAsIHNpemVvZihxdWV1ZXMpKTsKKwlxdWV1ZXMuY2xhc3MgPSBlLT5jbGFzczsKKwlx dWV1ZXMuaW5zdGFuY2UgPSBlLT5pbnN0YW5jZTsKKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihp dGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJ aXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmcXVldWVzKTsKKwlpdGVtLmxlbmd0aCA9 IGxlbjsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fzc2VydF9lcShp dGVtLmxlbmd0aCwgbGVuKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmcoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQoreworCXJldHVy biBnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3MoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5z dGFuY2UpOworfQorCitzdGF0aWMgdm9pZAorX19xdWVyeV9xdWV1ZXMoaW50IGZkLCBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCisJICAgICAgIHN0cnVjdCBkcm1faTkx NV9xdWVyeV9lbmdpbmVfcXVldWVzICpxdWV1ZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5 X2l0ZW0gaXRlbTsKKworCW1lbXNldChxdWV1ZXMsIDAsIHNpemVvZigqcXVldWVzKSk7CisJcXVl dWVzLT5jbGFzcyA9IGUtPmNsYXNzOworCXF1ZXVlcy0+aW5zdGFuY2UgPSBlLT5pbnN0YW5jZTsK KwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9J OTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRl cihxdWV1ZXMpOworCWl0ZW0ubGVuZ3RoID0gc2l6ZW9mKCpxdWV1ZXMpOworCWk5MTVfcXVlcnlf aXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNzZXJ0X2VxKGl0ZW0ubGVuZ3RoLCBzaXplb2Yo KnF1ZXVlcykpOworfQorCisjZGVmaW5lIFRFU1RfQ09OVEVYVFMgKDEgPDwgMCkKKworLyoKKyAq IFRlc3QgdGhhdCB0aGUgcmVwb3J0ZWQgbnVtYmVyIG9mIHF1ZXVlZCAobm90IHJlYWR5IGZvciBl eGVjdXRpb24gZHVlIGZlbmNlcworICogb3IgZGVwZW5kZW5jaWVzKSByZXF1ZXN0cyBvbiBhbiBl bmdpbmUgaXMgY29ycmVjdC4KKyAqLworc3RhdGljIHZvaWQKK2VuZ2luZV9xdWV1ZWQoaW50IGdl bV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCSAgICAgIHVu c2lnbmVkIGludCBmbGFncykKK3sKKwljb25zdCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmlu ZyhnZW1fZmQsIGUpOworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHF1ZXVl czsKKwljb25zdCB1aW50MzJfdCBiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCWNvbnN0IHVu c2lnbmVkIGludCBtYXhfcnEgPSAxMDsKKwl1aW50MzJfdCBxdWV1ZWRbbWF4X3JxICsgMV07CisJ dW5zaWduZWQgaW50IG4sIGk7CisJdWludDMyX3QgYm87CisKKwlpZ3RfcmVxdWlyZV9zd19zeW5j KCk7CisJaWYgKGZsYWdzICYgVEVTVF9DT05URVhUUykKKwkJZ2VtX3JlcXVpcmVfY29udGV4dHMo Z2VtX2ZkKTsKKworCW1lbXNldChxdWV1ZWQsIDAsIHNpemVvZihxdWV1ZWQpKTsKKworCWJvID0g Z2VtX2NyZWF0ZShnZW1fZmQsIDQwOTYpOworCWdlbV93cml0ZShnZW1fZmQsIGJvLCA0MDkyLCAm YmJlLCBzaXplb2YoYmJlKSk7CisKKwkgLyogQ3JlYXRlIGEgc3BlY2lmaWMgcXVldWUgZGVwdGgg b2YgdW5yZWFkeSByZXF1ZXN0cy4gKi8KKwlmb3IgKG4gPSAwOyBuIDw9IG1heF9ycTsgbisrKSB7 CisJCWludCBmZW5jZSA9IC0xOworCQlJR1RfQ09SS19GRU5DRShjb3JrKTsKKworCQlnZW1fcXVp ZXNjZW50X2dwdShnZW1fZmQpOworCisJCS8qIENyZWF0ZSBhIGNvcmsgc28gd2UgY2FuIGNyZWF0 ZSBhIGRlcGVuZGVuY3kgY2hhaW4uICovCisJCWlmIChuKQorCQkJZmVuY2UgPSBpZ3RfY29ya19w bHVnKCZjb3JrLCAtMSk7CisKKwkJLyogU3VibWl0IG4gdW5yZWFkeSByZXF1ZXN0cyBkZXBlbmRp bmcgb24gdGhlIGNvcmsuICovCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKKwkJCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7IH07CisKKwkJCW9iai5oYW5kbGUgPSBibzsKKworCQkJ ZWIuYnVmZmVyX2NvdW50ID0gMTsKKwkJCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZvYmopOworCisJCQllYi5mbGFncyA9IGVuZ2luZSB8IEk5MTVfRVhFQ19GRU5DRV9JTjsKKwor CQkJLyoKKwkJCSAqIEluIGNvbnRleHQgbW9kZSBlYWNoIHN1Ym1pc3Npb24gaXMgb24gYSBzZXBh cmF0ZQorCQkJICogY29udGV4dC4KKwkJCSAqLworCQkJaWYgKGZsYWdzICYgVEVTVF9DT05URVhU UykKKwkJCQllYi5yc3ZkMSA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOworCisJCQllYi5y c3ZkMiA9IGZlbmNlOworCisJCQlnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7CisKKwkJCWlmIChm bGFncyAmIFRFU1RfQ09OVEVYVFMpCisJCQkJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGVi LnJzdmQxKTsKKwkJfQorCisJCS8qIFN0b3JlIHJlcG9ydGVkIHF1ZXVlIGRlcHRoIHRvIGFzc2Vy dCBhZ2FpbnN0IGxhdGVyLiAqLworCQlfX3F1ZXJ5X3F1ZXVlcyhnZW1fZmQsIGUsICZxdWV1ZXMp OworCQlxdWV1ZWRbbl0gPSBxdWV1ZXMucXVldWVkOworCQlpZ3RfaW5mbygibj0ldSBxdWV1ZWQ9 JXVcbiIsIG4sIHF1ZXVlZFtuXSk7CisKKwkJLyogVW5wbHVnIHRoZSBxdWV1ZSBhbmQgcHJvY2Vl ZCB0byB0aGUgbmV4dCBxdWV1ZSBkZXB0aC4gKi8KKwkJaWYgKGZlbmNlID49IDApCisJCQlpZ3Rf Y29ya191bnBsdWcoJmNvcmspOworCisJCWdlbV9zeW5jKGdlbV9mZCwgYm8pOworCX0KKworCWdl bV9jbG9zZShnZW1fZmQsIGJvKTsKKworCWZvciAoaSA9IDA7IGkgPD0gbWF4X3JxOyBpKyspCisJ CWlndF9hc3NlcnRfZXEocXVldWVkW2ldLCBpKTsKK30KKworc3RhdGljIGlndF9zcGluX3QgKiBf X3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sK KwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxhZ3MpKQorCQlyZXR1cm4gX19pZ3Rfc3Bp bl9iYXRjaF9uZXdfcG9sbChmZCwgY3R4LCBmbGFncyk7CisJZWxzZQorCQlyZXR1cm4gX19pZ3Rf c3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZmxhZ3MsIDApOworfQorCitzdGF0aWMgdW5zaWduZWQg bG9uZyBfX3NwaW5fd2FpdChpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgbikKK3sKKwlz dHJ1Y3QgdGltZXNwZWMgdHMgPSB7IH07CisJdW5zaWduZWQgbG9uZyB0OworCisJaWd0X25zZWNf ZWxhcHNlZCgmdHMpOworCisJaWYgKHNwaW4tPnJ1bm5pbmcpIHsKKwkJaWd0X3NwaW5fYnVzeXdh aXRfdW50aWxfcnVubmluZyhzcGluKTsKKwl9IGVsc2UgeworCQlpZ3RfZGVidWcoIl9fc3Bpbl93 YWl0IC0gdXNsZWVwIG1vZGVcbiIpOworCQl1c2xlZXAoNTAwZTMpOyAvKiBCZXR0ZXIgdGhhbiBu b3RoaW5nISAqLworCX0KKworCXQgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0cyk7CisKKwlyZXR1cm4g c3Bpbi0+cnVubmluZyA/IHQgOiA1MDBlNiAvIG47Cit9CisKKy8qCisgKiBUZXN0IHRoYXQgdGhl IG51bWJlciBvZiByZXF1ZXN0cyByZWFkeSBmb3IgZXhlY3V0aW9uIGJ1dCB3YWl0aW5nIG9uIHNw YWNlIG9uCisgKiBHUFUgaXMgY29ycmVjdGx5IHJlcG9ydGVkLgorICovCitzdGF0aWMgdm9pZAor ZW5naW5lX3J1bm5hYmxlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKK3sKKwljb25zdCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmluZyhnZW1f ZmQsIGUpOworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHF1ZXVlczsKKwli b29sIGNvbnRleHRzID0gZ2VtX2hhc19jb250ZXh0cyhnZW1fZmQpOworCWNvbnN0IHVuc2lnbmVk IGludCBtYXhfcnEgPSAxMDsKKwlpZ3Rfc3Bpbl90ICpzcGluW21heF9ycSArIDFdOworCXVpbnQz Ml90IHJ1bm5hYmxlW21heF9ycSArIDFdOworCXVpbnQzMl90IGN0eFttYXhfcnFdOworCXVuc2ln bmVkIGludCBuLCBpOworCisJbWVtc2V0KHJ1bm5hYmxlLCAwLCBzaXplb2YocnVubmFibGUpKTsK KworCWlmIChjb250ZXh0cykgeworCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3JxOyBpKyspCisJCQlj dHhbaV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKwl9CisKKwkvKgorCSAqIFN1Ym1p dCBkaWZmZXJlbnQgbnVtYmVyIG9mIHJlcXVlc3RzLCBwb3RlbnRpYWxseSBhZ2FpbnN0IGRpZmZl cmVudAorCSAqIGNvbnRleHRzLCBpbiBvcmRlciB0byBwcm92b2tlIGVuZ2luZSBydW5uYWJsZSBt ZXRyaWMgcmV0dXJuaW5nCisJICogZGlmZmVyZW50IG51bWJlcnMuCisJICovCisJZm9yIChuID0g MDsgbiA8PSBtYXhfcnE7IG4rKykgeworCQlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOworCisJ CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXVpbnQzMl90IGN0eF8gPSBjb250ZXh0cyA/ IGN0eFtpXSA6IDA7CisKKwkJCWlmIChpID09IDApCisJCQkJc3BpbltpXSA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgY3R4XywgZW5naW5lKTsKKwkJCWVsc2UKKwkJCQlzcGluW2ldID0gX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoZ2VtX2ZkLCBjdHhfLAorCQkJCQkJCSAgICAgICBlbmdpbmUsIDApOworCQl9 CisKKwkJaWYgKG4pCisJCQl1c2xlZXAoX19zcGluX3dhaXQoc3BpblswXSwgbikgKiBuKTsKKwor CQkvKiBRdWVyeSBhbmQgc3RvcmUgZm9yIGxhdGVyIGNoZWNraW5nLiAqLworCQlfX3F1ZXJ5X3F1 ZXVlcyhnZW1fZmQsIGUsICZxdWV1ZXMpOworCQlydW5uYWJsZVtuXSA9IHF1ZXVlcy5ydW5uYWJs ZTsKKwkJaWd0X2luZm8oIm49JXUgcnVubmFibGU9JXVcbiIsIG4sIHJ1bm5hYmxlW25dKTsKKwor CQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbltp XSk7CisJCQlnZW1fc3luYyhnZW1fZmQsIHNwaW5baV0tPmhhbmRsZSk7CisJCQlpZ3Rfc3Bpbl9i YXRjaF9mcmVlKGdlbV9mZCwgc3BpbltpXSk7CisJCX0KKwl9CisKKwlpZiAoY29udGV4dHMpIHsK KwkJZm9yIChpID0gMDsgaSA8IG1heF9ycTsgaSsrKQorCQkJZ2VtX2NvbnRleHRfZGVzdHJveShn ZW1fZmQsIGN0eFtpXSk7CisJfQorCisJLyoKKwkgKiBDaGVjayB0aGF0IHRoZSBydW5uYWJsZSBt ZXRyaWMgaXMgemVybyB3aGVuIG5vdGhpbmcgaXMgc3VibWl0dGVkLAorCSAqIGFuZCB0aGF0IGl0 IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIG9uIHRoZSBtYXhpbXVtIHF1ZXVlIGRlcHRoLgorCSAqCisJ ICogV2UgY2Fubm90IGFzc2VydCB0aGUgZXhhY3QgdmFsdWUgc2luY2Ugd2UgZG8gbm90IGtub3cg aG93IG1hbnkKKwkgKiByZXF1ZXN0cyBjYW4gdGhlIHN1Ym1pc3Npb24gYmFja2VuZCBjb25zdW1l LgorCSAqLworCWlndF9hc3NlcnRfZXEocnVubmFibGVbMF0sIDApOworCWlndF9hc3NlcnQocnVu bmFibGVbbWF4X3JxXSA+IDApOworCisJLyoKKwkgKiBXZSBjYW4gb25seSB0ZXN0IHRoYXQgdGhl IHJ1bm5hYmxlIG1ldHJpYyBpcyBncm93aW5nIGJ5IG9uZSBpZiB3ZQorCSAqIGhhdmUgY29udGV4 dCBzdXBwb3J0LgorCSAqLworCWlmIChjb250ZXh0cykKKwkJaWd0X2Fzc2VydF9lcShydW5uYWJs ZVttYXhfcnFdIC0gcnVubmFibGVbbWF4X3JxIC0gMV0sIDEpOworfQorCisvKgorICogVGVzdCB0 aGF0IHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGV4ZWN1dGluZyBvbiB0aGUgR1BV IGlzIGNvcnJlY3RseQorICogcmVwb3J0ZWQuCisgKi8KK3N0YXRpYyB2b2lkCitlbmdpbmVfcnVu bmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp Cit7CisJY29uc3QgdW5zaWduZWQgbG9uZyBlbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX3F1ZXVlcyBxdWV1ZXM7CisJY29uc3QgdW5zaWdu ZWQgaW50IG1heF9ycSA9IDEwOworCWlndF9zcGluX3QgKnNwaW5bbWF4X3JxICsgMV07CisJdWlu dDMyX3QgcnVubmluZ1ttYXhfcnEgKyAxXTsKKwl1bnNpZ25lZCBpbnQgbiwgaTsKKworCW1lbXNl dChydW5uaW5nLCAwLCBzaXplb2YocnVubmluZykpOworCW1lbXNldChzcGluLCAwLCBzaXplb2Yo c3BpbikpOworCisJLyoKKwkgKiBDcmVhdGUgdmFyaW91cyBxdWV1ZSBkZXB0aHMgb2YgcmVxdWVz dHMgYWdhaW5zdCB0aGUgc2FtZSBjb250ZXh0IHRvCisJICogdHJ5IGFuZCBnZXQgc3VibWlzc2lv biBiYWNrZWQgZXhlY3V0ZSBvbmUgb3IgbW9yZSBvbiB0aGUgR1BVLgorCSAqLworCWZvciAobiA9 IDA7IG4gPD0gbWF4X3JxOyBuKyspIHsKKwkJZ2VtX3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKwor CQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZiAoaSA9PSAwKQorCQkJCXNwaW5baV0g PSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGVuZ2luZSk7CisJCQllbHNlCisJCQkJc3BpbltpXSA9 IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKKwkJCQkJCQkgICAgICAgZW5naW5lLCAw KTsKKwkJfQorCisJCWlmIChuKQorCQkJdXNsZWVwKF9fc3Bpbl93YWl0KHNwaW5bMF0sIG4pICog bik7CisKKwkJLyogUXVlcnkgYW5kIHN0b3JlIGZvciBsYXRlciBjaGVja2luZy4gKi8KKwkJX19x dWVyeV9xdWV1ZXMoZ2VtX2ZkLCBlLCAmcXVldWVzKTsKKwkJcnVubmluZ1tuXSA9IHF1ZXVlcy5y dW5uaW5nOworCQlpZ3RfaW5mbygibj0ldSBydW5uaW5nPSV1XG4iLCBuLCBydW5uaW5nW25dKTsK KworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bp bltpXSk7CisJCQlnZW1fc3luYyhnZW1fZmQsIHNwaW5baV0tPmhhbmRsZSk7CisJCQlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGdlbV9mZCwgc3BpbltpXSk7CisJCX0KKwl9CisKKwkvKgorCSAqIENoZWNr IHRoYXQgdGhlIHJ1bm5pbmcgbWV0cmljIGlzIHplcm8gd2hlbiBub3RoaW5nIGlzIHN1Ym1pdHRl ZCwKKwkgKiBvbmUgd2hlbiBvbmUgcmVxdWVzdCBpcyBzdWJtaXR0ZWQsIGFuZCBhdCBsZWFzdCBv bmUgZm9yIGFueSBncmVhdGVyCisJICogcXVldWUgZGVwdGguCisJICoKKwkgKiBXZSBjYW5ub3Qg YXNzZXJ0IHRoZSBleGFjdCB2YWx1ZSBzaW5jZSB3ZSBkbyBub3Qga25vdyBob3cgbWFueQorCSAq IHJlcXVlc3RzIGNhbiB0aGUgc3VibWlzc2lvbiBiYWNrZW5kIGNvbnN1bWUuCisJICovCisJaWd0 X2Fzc2VydF9lcShydW5uaW5nWzBdLCAwKTsKKwlmb3IgKGkgPSAxOyBpIDw9IG1heF9ycTsgaSsr KQorCQlpZ3RfYXNzZXJ0KHJ1bm5pbmdbaV0gPiAwKTsKK30KKwogaWd0X21haW4KIHsKKwljb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CiAJaW50IGZkID0gLTE7CiAJaW50 IGRldmlkOwogCkBAIC01MjQsNiArOTMxLDQxIEBAIGlndF9tYWluCiAJCXRlc3RfcXVlcnlfdG9w b2xvZ3lfa25vd25fcGNpX2lkcyhmZCwgZGV2aWQpOwogCX0KIAorCWlndF9zdWJ0ZXN0X2dyb3Vw IHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJaWd0X3JlcXVpcmUocXVlcnlfZW5naW5lX3F1ZXVlc19z dXBwb3J0ZWQoZmQpKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0KCJlbmdpbmUtcXVldWVzLWludmFs aWQiKQorCQkJZW5naW5lX3F1ZXVlc19pbnZhbGlkKGZkKTsKKworCQlfX2Zvcl9lYWNoX2VuZ2lu ZV9jbGFzc19pbnN0YW5jZShmZCwgZSkgeworCQkJaWd0X3N1YnRlc3RfZ3JvdXAgeworCQkJCWln dF9maXh0dXJlIHsKKwkJCQkJZ2VtX3JlcXVpcmVfZW5naW5lKGZkLAorCQkJCQkJCSAgIGUtPmNs YXNzLAorCQkJCQkJCSAgIGUtPmluc3RhbmNlKTsKKwkJCQl9CisKKwkJCQlpZ3Rfc3VidGVzdF9m KCJlbmdpbmUtcXVldWVzLSVzIiwgZS0+bmFtZSkKKwkJCQkJZW5naW5lX3F1ZXVlcyhmZCwgZSk7 CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJlbmdpbmUtcXVldWVkLSVzIiwgZS0+bmFtZSkKKwkJCQkJ ZW5naW5lX3F1ZXVlZChmZCwgZSwgMCk7CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJlbmdpbmUtcXVl dWVkLWNvbnRleHRzLSVzIiwKKwkJCQkJICAgICAgZS0+bmFtZSkKKwkJCQkJZW5naW5lX3F1ZXVl ZChmZCwgZSwgVEVTVF9DT05URVhUUyk7CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJlbmdpbmUtcnVu bmFibGUtJXMiLCBlLT5uYW1lKQorCQkJCQllbmdpbmVfcnVubmFibGUoZmQsIGUpOworCisJCQkJ aWd0X3N1YnRlc3RfZigiZW5naW5lLXJ1bm5pbmctJXMiLCBlLT5uYW1lKQorCQkJCQllbmdpbmVf cnVubmluZyhmZCwgZSk7CisJCQl9CisJCX0KKwl9CisKIAlpZ3RfZml4dHVyZSB7CiAJCWNsb3Nl KGZkKTsKIAl9Ci0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=