From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 743376E5EC for ; Mon, 19 Mar 2018 18:22:20 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id o8so19666586wra.1 for ; Mon, 19 Mar 2018 11:22:20 -0700 (PDT) From: Tvrtko Ursulin Date: Mon, 19 Mar 2018 18:22:05 +0000 Message-Id: <20180319182205.29454-6-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20180319182205.29454-1-tvrtko.ursulin@linux.intel.com> References: <20180319182205.29454-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [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: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCi4uLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0t CiB0ZXN0cy9pOTE1X3F1ZXJ5LmMgfCAzODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTVfcXVlcnkuYyBiL3Rlc3RzL2k5MTVfcXVlcnkuYwpp bmRleCBjN2RlOGNiZDgzNzEuLjk0ZTdhMzI5N2ViZCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNV9x dWVyeS5jCisrKyBiL3Rlc3RzL2k5MTVfcXVlcnkuYwpAQCAtNDc3LDggKzQ3NywzNTggQEAgdGVz dF9xdWVyeV90b3BvbG9neV9rbm93bl9wY2lfaWRzKGludCBmZCwgaW50IGRldmlkKQogCWZyZWUo dG9wb19pbmZvKTsKIH0KIAorI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfUVVFVUVTCTIK Kworc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9xdWV1ZXMgeworCS8qKiBFbmdpbmUgY2xh c3MgYXMgaW4gZW51bSBkcm1faTkxNV9nZW1fZW5naW5lX2NsYXNzLiAqLworCV9fdTE2IGNsYXNz OworCisJLyoqIEVuZ2luZSBpbnN0YW5jZSBudW1iZXIuICovCisJX191MTYgaW5zdGFuY2U7CisK KwkvKiogTnVtYmVyIG9mIHJlcXVlc3RzIHdpdGggdW5yZXNvbHZlZCBmZW5jZXMgYW5kIGRlcGVu ZGVuY2llcy4gKi8KKwlfX3UzMiBxdWV1ZWQ7CisKKwkvKiogTnVtYmVyIG9mIHJlYWR5IHJlcXVl c3RzIHdhaXRpbmcgb24gYSBzbG90IG9uIEdQVS4gKi8KKwlfX3UzMiBydW5uYWJsZTsKKworCS8q KiBOdW1iZXIgb2YgcmVxdWVzdHMgZXhlY3V0aW5nIG9uIHRoZSBHUFUuICovCisJX191MzIgcnVu bmluZzsKKworCV9fdTMyIHJzdmRbNV07Cit9OworCitzdGF0aWMgYm9vbCBxdWVyeV9lbmdpbmVf cXVldWVzX3N1cHBvcnRlZChpbnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0g aXRlbSA9IHsKKwkJLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVFUywKKwl9 OworCisJcmV0dXJuIF9faTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpID09IDAgJiYgaXRl bS5sZW5ndGggPiAwOworfQorCitzdGF0aWMgdm9pZCBlbmdpbmVfcXVldWVzX2ludmFsaWQoaW50 IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHF1ZXVlczsKKwlz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSBpdGVtOworCXVuc2lnbmVkIGludCBsZW47CisJdW5z aWduZWQgaW50IGk7CisKKwkvKiBGbGFncyBpcyBNQlouICovCisJbWVtc2V0KCZpdGVtLCAwLCBz aXplb2YoaXRlbSkpOworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfUVVF VUVTOworCWl0ZW0uZmxhZ3MgPSAxOworCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsK KwlpZ3RfYXNzZXJ0X2VxKGl0ZW0ubGVuZ3RoLCAtRUlOVkFMKTsKKworCS8qIExlbmd0aCBub3Qg emVybyBhbmQgbm90IGdyZWF0ZXIgb3IgZXF1YWwgcmVxdWlyZWQgc2l6ZS4gKi8KKwltZW1zZXQo Jml0ZW0sIDAsIHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZ X0VOR0lORV9RVUVVRVM7CisJaXRlbS5sZW5ndGggPSAxOworCWk5MTVfcXVlcnlfaXRlbXMoZmQs ICZpdGVtLCAxKTsKKwlpZ3RfYXNzZXJ0X2VxKGl0ZW0ubGVuZ3RoLCAtRU5PU1BDKTsKKworCS8q IFF1ZXJ5IGNvcnJlY3QgbGVuZ3RoLiAqLworCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0p KTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVFUzsKKwlpOTE1 X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fzc2VydChpdGVtLmxlbmd0aCA+PSAw KTsKKwlsZW4gPSBpdGVtLmxlbmd0aDsKKworCS8qIEl2YWxpZCBwb2ludGVyLiAqLworCW1lbXNl dCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVF UllfRU5HSU5FX1FVRVVFUzsKKwlpdGVtLmxlbmd0aCA9IGxlbjsKKwlpOTE1X3F1ZXJ5X2l0ZW1z KGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgLUVGQVVMVCk7CisK KwkvKiBSZXNlcnZlZCBmaWVsZHMgYXJlIE1CWi4gKi8KKworCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHF1ZXVlcy5yc3ZkKTsgaSsrKSB7CisJCW1lbXNldCgmcXVldWVzLCAwLCBzaXplb2Yo cXVldWVzKSk7CisJCXF1ZXVlcy5yc3ZkW2ldID0gMTsKKwkJbWVtc2V0KCZpdGVtLCAwLCBzaXpl b2YoaXRlbSkpOworCQlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVF UzsKKwkJaXRlbS5sZW5ndGggPSBsZW47CisJCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50 ZXIoJnF1ZXVlcyk7CisJCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwkJaWd0X2Fz c2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7CisJfQorCisJbWVtc2V0KCZxdWV1ZXMsIDAs IHNpemVvZihxdWV1ZXMpKTsKKwlxdWV1ZXMuY2xhc3MgPSAtMTsKKwltZW1zZXQoJml0ZW0sIDAs IHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9R VUVVRVM7CisJaXRlbS5sZW5ndGggPSBsZW47CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9p bnRlcigmcXVldWVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fz c2VydF9lcShpdGVtLmxlbmd0aCwgLUVOT0VOVCk7CisKKwltZW1zZXQoJnF1ZXVlcywgMCwgc2l6 ZW9mKHF1ZXVlcykpOworCXF1ZXVlcy5pbnN0YW5jZSA9IC0xOworCW1lbXNldCgmaXRlbSwgMCwg c2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FV RVVFUzsKKwlpdGVtLmxlbmd0aCA9IGxlbjsKKwkJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9p bnRlcigmcXVldWVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fz c2VydF9lcShpdGVtLmxlbmd0aCwgLUVOT0VOVCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuZ2luZV9x dWV1ZXMoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7 CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9xdWV1ZXMgcXVldWVzOworCXN0cnVjdCBk cm1faTkxNV9xdWVyeV9pdGVtIGl0ZW07CisJdW5zaWduZWQgaW50IGxlbjsKKworCS8qIFF1ZXJ5 IHJlcXVpcmVkIGJ1ZmZlciBsZW5ndGguICovCisJbWVtc2V0KCZxdWV1ZXMsIDAsIHNpemVvZihx dWV1ZXMpKTsKKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9p ZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9RVUVVRVM7CisJaXRlbS5kYXRhX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmcXVldWVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJ aWd0X2Fzc2VydChpdGVtLmxlbmd0aCA+PSAwKTsKKwlpZ3RfYXNzZXJ0KGl0ZW0ubGVuZ3RoIDw9 IHNpemVvZihxdWV1ZXMpKTsKKwlsZW4gPSBpdGVtLmxlbmd0aDsKKworCS8qIENoZWNrIGxlbmd0 aCBsYXJnZXIgdGhhbiByZXF1aXJlZCB3b3JrcyBhbmQgcmVwb3J0cyBzYW1lIGxlbmd0aC4gKi8K KwltZW1zZXQoJnF1ZXVlcywgMCwgc2l6ZW9mKHF1ZXVlcykpOworCW1lbXNldCgmaXRlbSwgMCwg c2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FV RVVFUzsKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZxdWV1ZXMpOworCWl0ZW0u bGVuZ3RoID0gbGVuICsgMTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0 X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgbGVuKTsKKworCS8qIEFjdHVhbCBxdWVyeS4gKi8KKwlt ZW1zZXQoJnF1ZXVlcywgMCwgc2l6ZW9mKHF1ZXVlcykpOworCXF1ZXVlcy5jbGFzcyA9IGUtPmNs YXNzOworCXF1ZXVlcy5pbnN0YW5jZSA9IGUtPmluc3RhbmNlOworCW1lbXNldCgmaXRlbSwgMCwg c2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FV RVVFUzsKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZxdWV1ZXMpOworCWl0ZW0u bGVuZ3RoID0gbGVuOworCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNz ZXJ0X2VxKGl0ZW0ubGVuZ3RoLCBsZW4pOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGUycmlu ZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7 CisJcmV0dXJuIGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhnZW1fZmQsIGUtPmNsYXNz LCBlLT5pbnN0YW5jZSk7Cit9CisKK3N0YXRpYyB2b2lkCitfX3F1ZXJ5X3F1ZXVlcyhpbnQgZmQs IGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkgICAgICAgc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9xdWV1ZXMgKnF1ZXVlcykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcXVlcnlfaXRlbSBpdGVtOworCisJbWVtc2V0KHF1ZXVlcywgMCwgc2l6ZW9mKCpxdWV1ZXMp KTsKKwlxdWV1ZXMtPmNsYXNzID0gZS0+Y2xhc3M7CisJcXVldWVzLT5pbnN0YW5jZSA9IGUtPmlu c3RhbmNlOworCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lk ID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX1FVRVVFUzsKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNl cl9wb2ludGVyKHF1ZXVlcyk7CisJaXRlbS5sZW5ndGggPSBzaXplb2YoKnF1ZXVlcyk7CisJaTkx NV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnRfZXEoaXRlbS5sZW5ndGgs IHNpemVvZigqcXVldWVzKSk7Cit9CisKK3N0YXRpYyB2b2lkCitlbmdpbmVfcXVldWVkKGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3sKKwljb25z dCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpOworCXN0cnVjdCBkcm1f aTkxNV9xdWVyeV9lbmdpbmVfcXVldWVzIHF1ZXVlczsKKwljb25zdCB1bnNpZ25lZCBpbnQgbWF4 X3JxID0gMTA7CisJdWludDMyX3QgcXVldWVkW21heF9ycSArIDFdOworCXVpbnQzMl90IGJvW21h eF9ycSArIDFdOworCXVuc2lnbmVkIGludCBuLCBpOworCisJbWVtc2V0KHF1ZXVlZCwgMCwgc2l6 ZW9mKHF1ZXVlZCkpOworCW1lbXNldChibywgMCwgc2l6ZW9mKGJvKSk7CisKKwlmb3IgKG4gPSAw OyBuIDw9IG1heF9ycTsgbisrKSB7CisJCWludCBmZW5jZSA9IC0xOworCQlzdHJ1Y3QgaWd0X2Nv cmsgY29yayA9IHsgLmZkID0gZmVuY2UsIC50eXBlID0gQ09SS19TWU5DX0ZEIH07CisKKwkJZ2Vt X3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKKworCQlpZiAobikKKwkJCWZlbmNlID0gaWd0X2Nvcmtf cGx1ZygmY29yaywgLTEpOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsgfTsKKwkJCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSB7IH07CisKKwkJCWlmICghYm9baV0pIHsKKwkJCQljb25z dCB1aW50MzJfdCBiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJCQkJYm9baV0gPSBnZW1f Y3JlYXRlKGdlbV9mZCwgNDA5Nik7CisJCQkJZ2VtX3dyaXRlKGdlbV9mZCwgYm9baV0sIDQwOTIs ICZiYmUsCisJCQkJCSAgc2l6ZW9mKGJiZSkpOworCQkJfQorCisJCQlvYmouaGFuZGxlID0gYm9b aV07CisKKwkJCWViLmJ1ZmZlcl9jb3VudCA9IDE7CisJCQllYi5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmb2JqKTsKKworCQkJZWIuZmxhZ3MgPSBlbmdpbmUgfCBJOTE1X0VYRUNfRkVO Q0VfSU47CisJCQllYi5yc3ZkMiA9IGZlbmNlOworCisJCQlnZW1fZXhlY2J1ZihnZW1fZmQsICZl Yik7CisJCX0KKworCQlfX3F1ZXJ5X3F1ZXVlcyhnZW1fZmQsIGUsICZxdWV1ZXMpOworCQlxdWV1 ZWRbbl0gPSBxdWV1ZXMucXVldWVkOworCQlpZ3RfaW5mbygibj0ldSBxdWV1ZWQ9JXVcbiIsIG4s IHF1ZXVlZFtuXSk7CisKKwkJaWYgKGZlbmNlID49IDApCisJCQlpZ3RfY29ya191bnBsdWcoJmNv cmspOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCQlnZW1fc3luYyhnZW1fZmQsIGJv W2ldKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbWF4X3JxOyBpKyspIHsKKwkJaWYgKGJvW2ld KQorCQkJZ2VtX2Nsb3NlKGdlbV9mZCwgYm9baV0pOworCX0KKworCWZvciAoaSA9IDA7IGkgPD0g bWF4X3JxOyBpKyspCisJCWlndF9hc3NlcnRfZXEocXVldWVkW2ldLCBpKTsKK30KKworc3RhdGlj IGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQg bG9uZyBmbGFncykKK3sKKwlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZmxhZ3MpKQorCQly ZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXdfcG9sbChmZCwgY3R4LCBmbGFncyk7CisJZWxzZQor CQlyZXR1cm4gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGN0eCwgZmxhZ3MsIDApOworfQorCitz dGF0aWMgdW5zaWduZWQgbG9uZyBfX3NwaW5fd2FpdChpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4p Cit7CisJc3RydWN0IHRpbWVzcGVjIHN0YXJ0ID0geyB9OworCisJaWd0X25zZWNfZWxhcHNlZCgm c3RhcnQpOworCisJaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIHNwaW4tPmV4ZWNidWYuZmxh Z3MpKSB7CisJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IDA7CisKKwkJd2hpbGUgKCFzcGluLT5y dW5uaW5nKSB7CisJCQl1bnNpZ25lZCBsb25nIHQgPSBpZ3RfbnNlY19lbGFwc2VkKCZzdGFydCk7 CisKKwkJCWlmICgodCAtIHRpbWVvdXQpID4gMjUwZTYpIHsKKwkJCQl0aW1lb3V0ID0gdDsKKwkJ CQlpZ3Rfd2FybigiU3Bpbm5lciBub3QgcnVubmluZyBhZnRlciAlLjJmbXNcbiIsCisJCQkJCSAo ZG91YmxlKXQgLyAxZTYpOworCQkJfQorCQl9OworCX0gZWxzZSB7CisJCWlndF9kZWJ1ZygiX19z cGluX3dhaXQgLSB1c2xlZXAgbW9kZVxuIik7CisJCXVzbGVlcCg1MDBlMyk7IC8qIEJldHRlciB0 aGFuIG5vdGhpbmchICovCisJfQorCisJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsK K30KKworc3RhdGljIHZvaWQKK2VuZ2luZV9ydW5uYWJsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisJY29uc3QgdW5zaWduZWQgbG9uZyBl bmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5l X3F1ZXVlcyBxdWV1ZXM7CisJY29uc3QgdW5zaWduZWQgaW50IG1heF9ycSA9IDEwOworCWlndF9z cGluX3QgKnNwaW5bbWF4X3JxICsgMV07CisJdWludDMyX3QgcnVubmFibGVbbWF4X3JxICsgMV07 CisJdWludDMyX3QgY3R4W21heF9ycV07CisJdW5zaWduZWQgaW50IG4sIGk7CisKKwltZW1zZXQo cnVubmFibGUsIDAsIHNpemVvZihydW5uYWJsZSkpOworCW1lbXNldChjdHgsIDAsIHNpemVvZihj dHgpKTsKKworCWZvciAobiA9IDA7IG4gPD0gbWF4X3JxOyBuKyspIHsKKwkJZ2VtX3F1aWVzY2Vu dF9ncHUoZ2VtX2ZkKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZiAoIWN0 eFtpXSkKKwkJCQljdHhbaV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKKworCQkJaWYg KGkgPT0gMCkKKwkJCQlzcGluW2ldID0gX19zcGluX3BvbGwoZ2VtX2ZkLCBjdHhbaV0sIGVuZ2lu ZSk7CisJCQllbHNlCisJCQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwg Y3R4W2ldLAorCQkJCQkJCSAgICAgICBlbmdpbmUsIDApOworCQl9CisKKwkJaWYgKG4pCisJCQlf X3NwaW5fd2FpdChnZW1fZmQsIHNwaW5bMF0pOworCisJCV9fcXVlcnlfcXVldWVzKGdlbV9mZCwg ZSwgJnF1ZXVlcyk7CisJCXJ1bm5hYmxlW25dID0gcXVldWVzLnJ1bm5hYmxlOworCQlpZ3RfaW5m bygibj0ldSBydW5uYWJsZT0ldVxuIiwgbiwgcnVubmFibGVbbl0pOworCisJCWZvciAoaSA9IDA7 IGkgPCBuOyBpKyspIHsKKwkJCWlndF9zcGluX2JhdGNoX2VuZChzcGluW2ldKTsKKwkJCWdlbV9z eW5jKGdlbV9mZCwgc3BpbltpXS0+aGFuZGxlKTsKKwkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2Vt X2ZkLCBzcGluW2ldKTsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBtYXhfcnE7IGkrKykg eworCQlpZiAoY3R4W2ldKQorCQkJZ2VtX2NvbnRleHRfZGVzdHJveShnZW1fZmQsIGN0eFtpXSk7 CisJfQorCisJaWd0X2Fzc2VydF9lcShydW5uYWJsZVswXSwgMCk7CisJaWd0X2Fzc2VydChydW5u YWJsZVttYXhfcnFdID4gMCk7CisJaWd0X2Fzc2VydF9lcShydW5uYWJsZVttYXhfcnFdIC0gcnVu bmFibGVbbWF4X3JxIC0gMV0sIDEpOworfQorCitzdGF0aWMgdm9pZAorZW5naW5lX3J1bm5pbmco aW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQorewor CWNvbnN0IHVuc2lnbmVkIGxvbmcgZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSk7CisJc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9xdWV1ZXMgcXVldWVzOworCWNvbnN0IHVuc2lnbmVkIGlu dCBtYXhfcnEgPSAxMDsKKwlpZ3Rfc3Bpbl90ICpzcGluW21heF9ycSArIDFdOworCXVpbnQzMl90 IHJ1bm5pbmdbbWF4X3JxICsgMV07CisJdW5zaWduZWQgaW50IG4sIGk7CisKKwltZW1zZXQocnVu bmluZywgMCwgc2l6ZW9mKHJ1bm5pbmcpKTsKKwltZW1zZXQoc3BpbiwgMCwgc2l6ZW9mKHNwaW4p KTsKKworCWZvciAobiA9IDA7IG4gPD0gbWF4X3JxOyBuKyspIHsKKwkJZ2VtX3F1aWVzY2VudF9n cHUoZ2VtX2ZkKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCQlpZiAoaSA9PSAw KQorCQkJCXNwaW5baV0gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGVuZ2luZSk7CisJCQllbHNl CisJCQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKKwkJCQkJCQkg ICAgICAgZW5naW5lLCAwKTsKKwkJfQorCisJCWlmIChuKQorCQkJX19zcGluX3dhaXQoZ2VtX2Zk LCBzcGluWzBdKTsKKworCQlfX3F1ZXJ5X3F1ZXVlcyhnZW1fZmQsIGUsICZxdWV1ZXMpOworCQly dW5uaW5nW25dID0gcXVldWVzLnJ1bm5pbmc7CisJCWlndF9pbmZvKCJuPSV1IHJ1bm5pbmc9JXVc biIsIG4sIHJ1bm5pbmdbbl0pOworCisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCWln dF9zcGluX2JhdGNoX2VuZChzcGluW2ldKTsKKwkJCWdlbV9zeW5jKGdlbV9mZCwgc3BpbltpXS0+ aGFuZGxlKTsKKwkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluW2ldKTsKKwkJfQor CX0KKworCWZvciAoaSA9IDA7IGkgPD0gbWF4X3JxOyBpKyspCisJCWlndF9hc3NlcnRfZXEocnVu bmluZ1tpXSwgaSk7Cit9CisKIGlndF9tYWluCiB7CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplOwogCWludCBmZCA9IC0xOwogCWludCBkZXZpZDsKIApAQCAtNTI0LDYg Kzg3NCwzNyBAQCBpZ3RfbWFpbgogCQl0ZXN0X3F1ZXJ5X3RvcG9sb2d5X2tub3duX3BjaV9pZHMo ZmQsIGRldmlkKTsKIAl9CiAKKwlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCWlndF9maXh0dXJlIHsK KwkJCWlndF9yZXF1aXJlKHF1ZXJ5X2VuZ2luZV9xdWV1ZXNfc3VwcG9ydGVkKGZkKSk7CisJCX0K KworCQlpZ3Rfc3VidGVzdCgiZW5naW5lLXF1ZXVlcy1pbnZhbGlkIikKKwkJCWVuZ2luZV9xdWV1 ZXNfaW52YWxpZChmZCk7CisKKwkJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBl KSB7CisJCQlpZ3Rfc3VidGVzdF9ncm91cCB7CisJCQkJaWd0X2ZpeHR1cmUgeworCQkJCQlnZW1f cmVxdWlyZV9lbmdpbmUoZmQsCisJCQkJCQkJICAgZS0+Y2xhc3MsCisJCQkJCQkJICAgZS0+aW5z dGFuY2UpOworCQkJCX0KKworCQkJCWlndF9zdWJ0ZXN0X2YoImVuZ2luZS1xdWV1ZXMtJXMiLCBl LT5uYW1lKQorCQkJCQllbmdpbmVfcXVldWVzKGZkLCBlKTsKKworCQkJCWlndF9zdWJ0ZXN0X2Yo ImVuZ2luZS1xdWV1ZWQtJXMiLCBlLT5uYW1lKQorCQkJCQllbmdpbmVfcXVldWVkKGZkLCBlKTsK KworCQkJCWlndF9zdWJ0ZXN0X2YoImVuZ2luZS1ydW5uYWJsZS0lcyIsIGUtPm5hbWUpCisJCQkJ CWVuZ2luZV9ydW5uYWJsZShmZCwgZSk7CisKKwkJCQlpZ3Rfc3VidGVzdF9mKCJlbmdpbmUtcnVu bmluZy0lcyIsIGUtPm5hbWUpCisJCQkJCWVuZ2luZV9ydW5uaW5nKGZkLCBlKTsKKwkJCX0KKwkJ fQorCX0KKwogCWlndF9maXh0dXJlIHsKIAkJY2xvc2UoZmQpOwogCX0KLS0gCjIuMTQuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWls aW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==