From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B8B0C433DF for ; Tue, 2 Jun 2020 08:33:32 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 05554206C3 for ; Tue, 2 Jun 2020 08:33:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05554206C3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 82AD36E0A6; Tue, 2 Jun 2020 08:33:31 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0D6A889F0A; Tue, 2 Jun 2020 08:33:29 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 21369198-1500050 for multiple; Tue, 02 Jun 2020 09:32:47 +0100 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Tue, 2 Jun 2020 09:32:41 +0100 Message-Id: <20200602083241.1413087-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.27.0.rc2 In-Reply-To: <20200602082245.1356782-1-chris@chris-wilson.co.uk> References: <20200602082245.1356782-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] i915/gem_exec_schedule: Try to spot unfairness X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org, Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW4gaW1wb3J0YW50IHByb3BlcnR5IGZvciBtdWx0aS1jbGllbnQgc3lzdGVtcyBpcyB0aGF0IGVh Y2ggY2xpZW50IGdldHMKYSAnZmFpcicgYWxsb3RtZW50IG9mIHN5c3RlbSB0aW1lLiAoV2hlcmUg ZmFpcm5lc3MgaXMgYXQgdGhlIHdoaW0gb2YgdGhlCmNvbnRleHQgcHJvcGVydGllcywgc3VjaCBh cyBwcmlvcml0aWVzLikgVGhpcyB0ZXN0IGZvcmtzIE4gaW5kZXBlbmRlbnQKY2xpZW50cyAoYWxi ZWl0IHRoZXkgaGFwcGVuIHRvIHNoYXJlIGEgc2luZ2xlIHZtKSwgYW5kIGRvZXMgYW4gZXF1YWwK YW1vdW50IG9mIHdvcmsgaW4gY2xpZW50IGFuZCBhc3NlcnRzIHRoYXQgdGhleSB0YWtlIGFuIGVx dWFsIGFtb3VudCBvZgp0aW1lLgoKVGhvdWdoIHdlIGhhdmUgbmV2ZXIgY2xhaW1lZCB0byBoYXZl IGEgY29tcGxldGVseSBmYWlyIHNjaGVkdWxlciwgdGhhdAppcyB3aGF0IGlzIGV4cGVjdGVkLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogUmFtYWxpbmdh bSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfc2No ZWR1bGUuYyB8IDQ0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0NDAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfc2NoZWR1bGUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwppbmRleCA1NmM2 Mzg4MzMuLjkxMTM3OWNhZCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVs ZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwpAQCAtMjQ5NSw2ICsyNDk1 LDQzMSBAQCBzdGF0aWMgdm9pZCBtZWFzdXJlX3NlbWFwaG9yZV9wb3dlcihpbnQgaTkxNSkKIAly YXBsX2Nsb3NlKCZwa2cpOwogfQogCitzdGF0aWMgaW50IHJlYWRfdGltZXN0YW1wX2ZyZXF1ZW5j eShpbnQgaTkxNSkKK3sKKwlpbnQgdmFsdWUgPSAwOworCWRybV9pOTE1X2dldHBhcmFtX3QgZ3Ag PSB7CisJCS52YWx1ZSA9ICZ2YWx1ZSwKKwkJLnBhcmFtID0gSTkxNV9QQVJBTV9DU19USU1FU1RB TVBfRlJFUVVFTkNZLAorCX07CisJaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0s ICZncCk7CisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgdWludDY0X3QgZGl2NjRfdTY0X3Jv dW5kX3VwKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCit7CisJcmV0dXJuICh4ICsgeSAtIDEpIC8g eTsKK30KKworc3RhdGljIHVpbnQ2NF90IG5zX3RvX3RpY2tzKGludCBpOTE1LCB1aW50NjRfdCBu cykKK3sKKwlyZXR1cm4gZGl2NjRfdTY0X3JvdW5kX3VwKG5zICogcmVhZF90aW1lc3RhbXBfZnJl cXVlbmN5KGk5MTUpLAorCQkJCSAgTlNFQ19QRVJfU0VDKTsKK30KKworc3RhdGljIHVpbnQ2NF90 IHRpY2tzX3RvX25zKGludCBpOTE1LCB1aW50NjRfdCB0aWNrcykKK3sKKwlyZXR1cm4gZGl2NjRf dTY0X3JvdW5kX3VwKHRpY2tzICogTlNFQ19QRVJfU0VDLAorCQkJCSAgcmVhZF90aW1lc3RhbXBf ZnJlcXVlbmN5KGk5MTUpKTsKK30KKworI2RlZmluZSBNSV9JTlNUUihvcGNvZGUsIGZsYWdzKSAo KChvcGNvZGUpIDw8IDIzKSB8IChmbGFncykpCisKKyNkZWZpbmUgTUlfTUFUSCh4KSAgICAgICAg ICAgICAgICAgICAgICBNSV9JTlNUUigweDFhLCAoeCkgLSAxKQorI2RlZmluZSBNSV9NQVRIX0lO U1RSKG9wY29kZSwgb3AxLCBvcDIpICgob3Bjb2RlKSA8PCAyMCB8IChvcDEpIDw8IDEwIHwgKG9w MikpCisvKiBPcGNvZGVzIGZvciBNSV9NQVRIX0lOU1RSICovCisjZGVmaW5lICAgTUlfTUFUSF9O T09QICAgICAgICAgICAgICAgICAgTUlfTUFUSF9JTlNUUigweDAwMCwgMHgwLCAweDApCisjZGVm aW5lICAgTUlfTUFUSF9MT0FEKG9wMSwgb3AyKSAgICAgICAgTUlfTUFUSF9JTlNUUigweDA4MCwg b3AxLCBvcDIpCisjZGVmaW5lICAgTUlfTUFUSF9MT0FESU5WKG9wMSwgb3AyKSAgICAgTUlfTUFU SF9JTlNUUigweDQ4MCwgb3AxLCBvcDIpCisjZGVmaW5lICAgTUlfTUFUSF9MT0FEMChvcDEpICAg ICAgICAgICAgTUlfTUFUSF9JTlNUUigweDA4MSwgb3AxKQorI2RlZmluZSAgIE1JX01BVEhfTE9B RDEob3AxKSAgICAgICAgICAgIE1JX01BVEhfSU5TVFIoMHg0ODEsIG9wMSkKKyNkZWZpbmUgICBN SV9NQVRIX0FERCAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTAwLCAweDAsIDB4 MCkKKyNkZWZpbmUgICBNSV9NQVRIX1NVQiAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RS KDB4MTAxLCAweDAsIDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX0FORCAgICAgICAgICAgICAgICAg ICBNSV9NQVRIX0lOU1RSKDB4MTAyLCAweDAsIDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX09SICAg ICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTAzLCAweDAsIDB4MCkKKyNkZWZpbmUg ICBNSV9NQVRIX1hPUiAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTA0LCAweDAs IDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX1NUT1JFKG9wMSwgb3AyKSAgICAgICBNSV9NQVRIX0lO U1RSKDB4MTgwLCBvcDEsIG9wMikKKyNkZWZpbmUgICBNSV9NQVRIX1NUT1JFSU5WKG9wMSwgb3Ay KSAgICBNSV9NQVRIX0lOU1RSKDB4NTgwLCBvcDEsIG9wMikKKy8qIFJlZ2lzdGVycyB1c2VkIGFz IG9wZXJhbmRzIGluIE1JX01BVEhfSU5TVFIgKi8KKyNkZWZpbmUgICBNSV9NQVRIX1JFRyh4KSAg ICAgICAgICAgICAgICAoeCkKKyNkZWZpbmUgICBNSV9NQVRIX1JFR19TUkNBICAgICAgICAgICAg ICAweDIwCisjZGVmaW5lICAgTUlfTUFUSF9SRUdfU1JDQiAgICAgICAgICAgICAgMHgyMQorI2Rl ZmluZSAgIE1JX01BVEhfUkVHX0FDQ1UgICAgICAgICAgICAgIDB4MzEKKyNkZWZpbmUgICBNSV9N QVRIX1JFR19aRiAgICAgICAgICAgICAgICAweDMyCisjZGVmaW5lICAgTUlfTUFUSF9SRUdfQ0Yg ICAgICAgICAgICAgICAgMHgzMworCisjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfUkVHICAgIE1J X0lOU1RSKDB4MkEsIDEpCisKK3N0YXRpYyB2b2lkIGRlbGF5KGludCBpOTE1LAorCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkJICB1aW50MzJfdCBoYW5kbGUs CisJCSAgdWludDY0X3QgYWRkciwKKwkJICB1aW50NjRfdCBucykKK3sKKwljb25zdCBpbnQgdXNl XzY0YiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGk5MTUpKSA+PSA4OworCWNvbnN0 IHVpbnQzMl90IGJhc2UgPSBnZW1fZW5naW5lX21taW9fYmFzZShpOTE1LCBlLT5uYW1lKTsKKyNk ZWZpbmUgQ1NfR1BSKHgpIChiYXNlICsgMHg2MDAgKyA4ICogKHgpKQorI2RlZmluZSBUSU1FU1RB TVAgKGJhc2UgKyAweDNhOCkKKwllbnVtIHsgU1RBUlRfVFMsIE5PV19UUyB9OworCXVpbnQzMl90 ICptYXAsICpjcywgKmptcDsKKworCWlndF9yZXF1aXJlKGJhc2UpOworCisJY3MgPSBtYXAgPSBn ZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGk5MTUsIGhhbmRsZSwgMCwgNDA5NiwgUFJPVF9XUklU RSk7CisKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpjcysrID0gQ1NfR1BSKFNU QVJUX1RTKSArIDQ7CisJKmNzKysgPSAwOworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUc7 CisJKmNzKysgPSBUSU1FU1RBTVA7CisJKmNzKysgPSBDU19HUFIoU1RBUlRfVFMpOworCisJaWYg KG9mZnNldF9pbl9wYWdlKGNzKSAmIDQpCisJCSpjcysrID0gMDsKKwlqbXAgPSBjczsKKworCSpj cysrID0gMHg1IDw8IDIzOyAvKiBNSV9BUkJfQ0hFQ0sgKi8KKworCSpjcysrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTk9XX1RTKSArIDQ7CisJKmNzKysgPSAwOwor CSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUc7CisJKmNzKysgPSBUSU1FU1RBTVA7CisJKmNz KysgPSBDU19HUFIoTk9XX1RTKTsKKworCSpjcysrID0gTUlfTUFUSCg0KTsKKwkqY3MrKyA9IE1J X01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNBLCBNSV9NQVRIX1JFRyhOT1dfVFMpKTsKKwkqY3Mr KyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhTVEFSVF9UUykp OworCSpjcysrID0gTUlfTUFUSF9TVUI7CisJKmNzKysgPSBNSV9NQVRIX1NUT1JFSU5WKE1JX01B VEhfUkVHKE5PV19UUyksIE1JX01BVEhfUkVHX0FDQ1UpOworCisJKmNzKysgPSAweDI0IDw8IDIz IHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICovCisJKmNzKysgPSBDU19HUFIoTk9XX1RTKTsKKwkq Y3MrKyA9IGFkZHIgKyA0MDAwOworCSpjcysrID0gYWRkciA+PiAzMjsKKworCSpjcysrID0gTUlf Q09ORF9CQVRDSF9CVUZGRVJfRU5EIHwgTUlfRE9fQ09NUEFSRSB8ICgxICsgdXNlXzY0Yik7CisJ KmNzKysgPSB+bnNfdG9fdGlja3MoaTkxNSwgbnMpOworCSpjcysrID0gYWRkciArIDQwMDA7CisJ KmNzKysgPSBhZGRyID4+IDMyOworCisJKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAx IDw8IDggfCB1c2VfNjRiOworCSpjcysrID0gYWRkciArIG9mZnNldF9pbl9wYWdlKGptcCk7CisJ KmNzKysgPSBhZGRyID4+IDMyOworCisJbXVubWFwKG1hcCwgNDA5Nik7Cit9CisKK3N0YXRpYyBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MgorZGVsYXlfY3JlYXRlKGludCBpOTE1LCB1 aW50MzJfdCBjdHgsCisJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCisJICAgICB1aW50NjRfdCB0YXJnZXRfbnMpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgb2JqID0geworCQkuaGFuZGxlID0gYmF0Y2hfY3JlYXRlKGk5MTUpLAorCQku ZmxhZ3MgPSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUywKKwl9OworCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKKwkJLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKCZvYmopLAorCQkuYnVmZmVyX2NvdW50ID0gMSwKKwkJLnJzdmQxID0gY3R4 LAorCQkuZmxhZ3MgPSBlLT5mbGFncywKKwl9OworCisJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNi dWYpOworCWdlbV9zeW5jKGk5MTUsIG9iai5oYW5kbGUpOworCisJZGVsYXkoaTkxNSwgZSwgb2Jq LmhhbmRsZSwgb2JqLm9mZnNldCwgdGFyZ2V0X25zKTsKKworCW9iai5mbGFncyB8PSBFWEVDX09C SkVDVF9QSU5ORUQ7CisJcmV0dXJuIG9iajsKK30KKworc3RhdGljIHZvaWQgdHNsb2coaW50IGk5 MTUsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgIHVp bnQzMl90IGhhbmRsZSwKKwkJICB1aW50NjRfdCBhZGRyKQoreworCWNvbnN0IGludCB1c2VfNjRi ID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpID49IDg7CisJY29uc3QgdWlu dDMyX3QgYmFzZSA9IGdlbV9lbmdpbmVfbW1pb19iYXNlKGk5MTUsIGUtPm5hbWUpOworI2RlZmlu ZSBDU19HUFIoeCkgKGJhc2UgKyAweDYwMCArIDggKiAoeCkpCisjZGVmaW5lIENTX1RJTUVTVEFN UCAoYmFzZSArIDB4MzU4KQorCWVudW0geyBPTkUsIE1BU0ssIEFERFIgfTsKKwl1aW50MzJfdCAq dGltZXN0YW1wX2xvLCAqYWRkcl9sbzsKKwl1aW50MzJfdCAqbWFwLCAqY3M7CisKKwlpZ3RfcmVx dWlyZShiYXNlKTsKKworCW1hcCA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaTkxNSwgaGFu ZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwljcyA9IG1hcCArIDUxMjsKKworCSpjcysrID0g MHgyNCA8PCAyMyB8ICgxICsgdXNlXzY0Yik7IC8qIFNSTSAqLworCSpjcysrID0gQ1NfVElNRVNU QU1QOworCXRpbWVzdGFtcF9sbyA9IGNzOworCSpjcysrID0gYWRkcjsKKwkqY3MrKyA9IGFkZHIg Pj4gMzI7CisKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpjcysrID0gQ1NfR1BS KEFERFIpOworCWFkZHJfbG8gPSBjczsKKwkqY3MrKyA9IGFkZHI7CisJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTTsKKwkqY3MrKyA9IENTX0dQUihBRERSKSArIDQ7CisJKmNzKysgPSBhZGRy ID4+IDMyOworCisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKKwkqY3MrKyA9IENTX0dQ UihPTkUpOworCSpjcysrID0gNDsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpj cysrID0gQ1NfR1BSKE9ORSkgKyA0OworCSpjcysrID0gMDsKKworCSpjcysrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTUFTSyk7CisJKmNzKysgPSAweGZmZmZmN2Zm OworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTUFTSykg KyA0OworCSpjcysrID0gMHhmZmZmZmZmZjsKKworCSpjcysrID0gTUlfTUFUSCg4KTsKKwkqY3Mr KyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNBLCBNSV9NQVRIX1JFRyhPTkUpKTsKKwkq Y3MrKyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhBRERSKSk7 CisJKmNzKysgPSBNSV9NQVRIX0FERDsKKwkqY3MrKyA9IE1JX01BVEhfU1RPUkUoTUlfTUFUSF9S RUcoQUREUiksIE1JX01BVEhfUkVHX0FDQ1UpOworCSpjcysrID0gTUlfTUFUSF9MT0FEKE1JX01B VEhfUkVHX1NSQ0EsIE1JX01BVEhfUkVHKEFERFIpKTsKKwkqY3MrKyA9IE1JX01BVEhfTE9BRChN SV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhNQVNLKSk7CisJKmNzKysgPSBNSV9NQVRIX0FO RDsKKwkqY3MrKyA9IE1JX01BVEhfU1RPUkUoTUlfTUFUSF9SRUcoQUREUiksIE1JX01BVEhfUkVH X0FDQ1UpOworCisJKmNzKysgPSAweDI0IDw8IDIzIHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICov CisJKmNzKysgPSBDU19HUFIoQUREUik7CisJKmNzKysgPSBhZGRyICsgb2Zmc2V0X2luX3BhZ2Uo dGltZXN0YW1wX2xvKTsKKwkqY3MrKyA9IGFkZHIgPj4gMzI7CisJKmNzKysgPSAweDI0IDw8IDIz IHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICovCisJKmNzKysgPSBDU19HUFIoQUREUik7CisJKmNz KysgPSBhZGRyICsgb2Zmc2V0X2luX3BhZ2UoYWRkcl9sbyk7CisJKmNzKysgPSBhZGRyID4+IDMy OworCisJKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJbXVubWFwKG1hcCwgNDA5Nik7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MgordHNsb2dfY3Jl YXRlKGludCBpOTE1LCB1aW50MzJfdCBjdHgsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7 CisJCS5oYW5kbGUgPSBiYXRjaF9jcmVhdGUoaTkxNSksCisJCS5mbGFncyA9IEVYRUNfT0JKRUNU X1NVUFBPUlRTXzQ4Ql9BRERSRVNTLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmID0geworCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaiks CisJCS5idWZmZXJfY291bnQgPSAxLAorCQkucnN2ZDEgPSBjdHgsCisJCS5mbGFncyA9IGUtPmZs YWdzLAorCX07CisKKwlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7CisJZ2VtX3N5bmMoaTkx NSwgb2JqLmhhbmRsZSk7CisKKwl0c2xvZyhpOTE1LCBlLCBvYmouaGFuZGxlLCBvYmoub2Zmc2V0 KTsKKworCW9iai5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJcmV0dXJuIG9iajsKK30K Kworc3RhdGljIGludCBjbXBfdTMyKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZvaWQgKkIpCit7CisJ Y29uc3QgdW5zaWduZWQgbG9uZyAqYSA9IEEsICpiID0gQjsKKworCWlmICgqYSA8ICpiKQorCQly ZXR1cm4gLTE7CisJZWxzZSBpZiAoKmEgPiAqYikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmFpcl9jaGlsZChpbnQgaTkxNSwgdWludDMyX3QgY3R4 LAorCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkg ICAgICAgdWludDY0X3QgZnJhbWVfbnMsCisJCSAgICAgICBpbnQgdGltZW91dCwKKwkJICAgICAg IGludCB0aW1lbGluZSwKKwkJICAgICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkJICAgICAgIHVu c2lnbmVkIGxvbmcgKmN0bCwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgKm91dCkKKyNkZWZpbmUg Rl9TWU5DICAoMSA8PCAwKQorI2RlZmluZSBGX1BBQ0UgICgxIDw8IDEpCisjZGVmaW5lIEZfRkxP VyAgKDEgPDwgMikKKyNkZWZpbmUgRl9IQUxGICAoMSA8PCAzKQorI2RlZmluZSBGX1NPTE8gICgx IDw8IDQpCisjZGVmaW5lIEZfU1BBUkUgKDEgPDwgOCkKK3sKKwljb25zdCBpbnQgYmF0Y2hlc19w ZXJfZnJhbWUgPSBmbGFncyAmIEZfU09MTyA/IDEgOiAzOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIHByZXYgPQorCQlkZWxheV9jcmVhdGUoaTkxNSwgY3R4LCBlLCBmcmFtZV9u cyAvIGJhdGNoZXNfcGVyX2ZyYW1lKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0 MiBuZXh0ID0KKwkJZGVsYXlfY3JlYXRlKGk5MTUsIGN0eCwgZSwgZnJhbWVfbnMgLyBiYXRjaGVz X3Blcl9mcmFtZSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgdHMgPSB0c2xv Z19jcmVhdGUoaTkxNSwgY3R4LCBlKTsKKwlpbnQgcF9mZW5jZSA9IC0xLCBuX2ZlbmNlID0gLTE7 CisJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisJdWludDMyX3QgKm1hcDsKKwlpbnQgbjsKKwor CXdoaWxlICghUkVBRF9PTkNFKCpjdGwpKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1 ZmZlcjIgZXhlY2J1ZiA9IHsKKwkJCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmbmV4 dCksCisJCQkuYnVmZmVyX2NvdW50ID0gMSwKKwkJCS5yc3ZkMSA9IGN0eCwKKwkJCS5yc3ZkMiA9 IC0xLAorCQkJLmZsYWdzID0gZS0+ZmxhZ3MsCisJCX07CisKKwkJaWYgKGZsYWdzICYgRl9GTE9X KSB7CisJCQlleGVjYnVmLnJzdmQyID0KKwkJCQlzd19zeW5jX3RpbWVsaW5lX2NyZWF0ZV9mZW5j ZSh0aW1lbGluZSwgY291bnQpOworCQkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfRkVOQ0Vf SU47CisJCX0KKworCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19GRU5DRV9PVVQ7CisJCWdl bV9leGVjYnVmX3dyKGk5MTUsICZleGVjYnVmKTsKKwkJbl9mZW5jZSA9IGV4ZWNidWYucnN2ZDIg Pj4gMzI7CisJCWV4ZWNidWYuZmxhZ3MgJj0gfihJOTE1X0VYRUNfRkVOQ0VfT1VUIHwgSTkxNV9F WEVDX0ZFTkNFX0lOKTsKKwkJZm9yIChuID0gMTsgbiA8IGJhdGNoZXNfcGVyX2ZyYW1lOyBuKysp CisJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7CisKKwkJZXhlY2J1Zi5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmdHMpOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9 IDIwNDg7CisJCWdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKKworCQlpZiAoZmxhZ3MgJiBG X1BBQ0UgJiYgcF9mZW5jZSAhPSAtMSkgeworCQkJc3RydWN0IHBvbGxmZCBwZmQgPSB7CisJCQkJ LmZkID0gcF9mZW5jZSwKKwkJCQkuZXZlbnRzID0gUE9MTElOLAorCQkJfTsKKwkJCXBvbGwoJnBm ZCwgMSwgLTEpOworCQl9CisJCWNsb3NlKHBfZmVuY2UpOworCQljbG9zZShleGVjYnVmLnJzdmQy KTsKKworCQlpZiAoZmxhZ3MgJiBGX1NZTkMpIHsKKwkJCXN0cnVjdCBwb2xsZmQgcGZkID0gewor CQkJCS5mZCA9IG5fZmVuY2UsCisJCQkJLmV2ZW50cyA9IFBPTExJTiwKKwkJCX07CisJCQlwb2xs KCZwZmQsIDEsIC0xKTsKKwkJfQorCisJCWlndF9zd2FwKHByZXYsIG5leHQpOworCQlpZ3Rfc3dh cChwX2ZlbmNlLCBuX2ZlbmNlKTsKKwkJY291bnQrKzsKKwl9CisJY2xvc2UocF9mZW5jZSk7CisK KwlnZW1fY2xvc2UoaTkxNSwgbmV4dC5oYW5kbGUpOworCWdlbV9jbG9zZShpOTE1LCBwcmV2Lmhh bmRsZSk7CisKKwlnZW1fc3luYyhpOTE1LCB0cy5oYW5kbGUpOworCW1hcCA9IGdlbV9tbWFwX19k ZXZpY2VfY29oZXJlbnQoaTkxNSwgdHMuaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwlm b3IgKG4gPSAxOyBuIDwgbWluKGNvdW50LCA1MTIpOyBuKyspIHsKKwkJaWd0X2Fzc2VydChtYXBb bl0pOworCQltYXBbbiAtIDFdID0gbWFwW25dIC0gbWFwW24gLSAxXTsKKwl9CisJcXNvcnQobWFw LCAtLW4sIHNpemVvZigqbWFwKSwgY21wX3UzMik7CisJKm91dCA9IHRpY2tzX3RvX25zKGk5MTUs IG1hcFtuIC8gMl0pOworCW11bm1hcChtYXAsIDQwOTYpOworCisJZ2VtX2Nsb3NlKGk5MTUsIHRz LmhhbmRsZSk7Cit9CisKK3N0YXRpYyBpbnQgY21wX3VsKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZv aWQgKkIpCit7CisJY29uc3QgdW5zaWduZWQgbG9uZyAqYSA9IEEsICpiID0gQjsKKworCWlmICgq YSA8ICpiKQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoKmEgPiAqYikKKwkJcmV0dXJuIDE7CisJ ZWxzZQorCQlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmFpcm5lc3MoaW50IGk5MTUsCisJ CSAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgICAgIGlu dCB0aW1lb3V0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJY29uc3QgaW50IGZyYW1lX25zID0g MTY2NjYgKiAxMDAwOworCWNvbnN0IGludCBmZW5jZV9ucyA9IGZsYWdzICYgRl9IQUxGID8gMiAq IGZyYW1lX25zIDogZnJhbWVfbnM7CisJdW5zaWduZWQgbG9uZyAqcmVzdWx0OworCisJaWd0X3Jl cXVpcmUoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpID49IDgpOworCWlndF9y ZXF1aXJlKGdlbV9jbGFzc19oYXNfbXV0YWJsZV9zdWJtaXNzaW9uKGk5MTUsIGUtPmNsYXNzKSk7 CisKKwlyZXN1bHQgPSBtbWFwKE5VTEwsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQgfCBN QVBfQU5PTiwgLTEsIDApOworCisJZm9yIChpbnQgbiA9IDI7IG4gPD0gMTY7IG4gPDw9IDEpIHsK KwkJaW50IHRpbWVsaW5lID0gc3dfc3luY190aW1lbGluZV9jcmVhdGUoKTsKKwkJaW50IG5mZW5j ZXMgPSB0aW1lb3V0ICogTlNFQ19QRVJfU0VDIC8gZmVuY2VfbnMgKyAxOworCQljb25zdCBpbnQg bmNoaWxkID0gbiAtIDE7IC8qIG9kZCBmb3IgZWFzeSBtZWRpYW5zICovCisJCWNvbnN0IGludCBj aGlsZF9ucyA9IGZyYW1lX25zIC8gKG5jaGlsZCArICEhKGZsYWdzICYgRl9TUEFSRSkpOworCQlj b25zdCBpbnQgbG8gPSBuY2hpbGQgLyA0OworCQljb25zdCBpbnQgaGkgPSAoMyAqIG5jaGlsZCAr IDMpIC8gNCAtIDE7CisJCXN0cnVjdCBpZ3RfbWVhbiBtOworCisJCW1lbXNldChyZXN1bHQsIDAs IChuY2hpbGQgKyAxKSAqIHNpemVvZihyZXN1bHRbMF0pKTsKKwkJaWd0X2ZvcmsoY2hpbGQsIG5j aGlsZCkgeworCQkJdWludDMyX3QgY3R4ID0gZ2VtX2NvbnRleHRfY2xvbmVfd2l0aF9lbmdpbmVz KGk5MTUsIDApOworCisJCQlmYWlyX2NoaWxkKGk5MTUsIGN0eCwgZSwgY2hpbGRfbnMsCisJCQkJ ICAgdGltZW91dCwgdGltZWxpbmUsIGZsYWdzLAorCQkJCSAgICZyZXN1bHRbbmNoaWxkXSwKKwkJ CQkgICAmcmVzdWx0W2NoaWxkXSk7CisKKwkJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4 KTsKKwkJfQorCisJCXdoaWxlIChuZmVuY2VzLS0pIHsKKwkJCXN0cnVjdCB0aW1lc3BlYyB0diA9 IHsgLnR2X25zZWMgPSBmZW5jZV9ucyB9OworCQkJbmFub3NsZWVwKCZ0diwgTlVMTCk7CisJCQlz d19zeW5jX3RpbWVsaW5lX2luYyh0aW1lbGluZSwgMSk7CisJCX0KKwkJcmVzdWx0W25jaGlsZF0g PSAxOworCQlmb3IgKGludCBjaGlsZCA9IDA7IGNoaWxkIDwgbmNoaWxkOyBjaGlsZCsrKSB7CisJ CQl3aGlsZSAoIVJFQURfT05DRShyZXN1bHRbY2hpbGRdKSkgeworCQkJCXN0cnVjdCB0aW1lc3Bl YyB0diA9IHsgLnR2X25zZWMgPSBmZW5jZV9ucyB9OworCQkJCW5hbm9zbGVlcCgmdHYsIE5VTEwp OworCQkJCXN3X3N5bmNfdGltZWxpbmVfaW5jKHRpbWVsaW5lLCAxKTsKKwkJCX0KKwkJfQorCQlp Z3Rfd2FpdGNoaWxkcmVuKCk7CisJCWNsb3NlKHRpbWVsaW5lKTsKKworCQlpZ3RfbWVhbl9pbml0 KCZtKTsKKwkJZm9yIChpbnQgY2hpbGQgPSAwOyBjaGlsZCA8IG5jaGlsZDsgY2hpbGQrKykKKwkJ CWlndF9tZWFuX2FkZCgmbSwgcmVzdWx0W2NoaWxkXSk7CisKKwkJcXNvcnQocmVzdWx0LCBuY2hp bGQsIHNpemVvZigqcmVzdWx0KSwgY21wX3VsKTsKKwkJaWd0X2luZm8oIiVkIGNsaWVudHMsIHJh bmdlOiBbJS4xZiwgJS4xZl0sIGlxcjogWyUuMWYsICUuMWZdLCBtZWRpYW46ICUuMWYsIG1lYW46 ICUuMWYgwrEgJS4yZiBtc1xuIiwKKwkJCSBuY2hpbGQsCisJCQkgMWUtNiAqIHJlc3VsdFswXSwg IDFlLTYgKiByZXN1bHRbbmNoaWxkIC0gMV0sCisJCQkgMWUtNiAqIHJlc3VsdFtsb10sIDFlLTYg KiByZXN1bHRbaGldLAorCQkJIDFlLTYgKiByZXN1bHRbbmNoaWxkIC8gMl0sCisJCQkgMWUtNiAq IGlndF9tZWFuX2dldCgmbSksCisJCQkgMWUtNiAqIHNxcnQoaWd0X21lYW5fZ2V0X3ZhcmlhbmNl KCZtKSkpOworCisjaWYgMAorCQkvKiBNZWFuIHdpdGhpbiAxMCUgb2YgdGFyZ2V0ICovCisJCWln dF9hc3NlcnQoIDkgKiBpZ3RfbWVhbl9nZXQoJm0pID4gMTAgKiBmcmFtZV9ucyAmJgorCQkJICAg MTAgKiBpZ3RfbWVhbl9nZXQoJm0pIDwgIDkgKiBmcmFtZV9ucyk7CisKKwkJLyogVmFyaWFuY2Ug W2ludGVyLXF1YXJ0aWxlIHJhbmdlXSBpcyBsZXNzIHRoYW4gMzMlIG9mIG1lZGlhbiAqLworCQlp Z3RfYXNzZXJ0KDMgKiByZXN1bHRbaGldIC0gcmVzdWx0W2xvXSA8IHJlc3VsdFtuY2hpbGQgLyAy XSk7CisjZW5kaWYKKwl9CisKKwltdW5tYXAocmVzdWx0LCA0MDk2KTsKK30KKwogI2RlZmluZSB0 ZXN0X2VhY2hfZW5naW5lKFQsIGk5MTUsIGUpIFwKIAlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMo VCkgX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoaTkxNSwgZSkgXAogCQlpZ3RfZHluYW1pY19m KCIlcyIsIGUtPm5hbWUpCkBAIC0yNTg5LDYgKzMwMTQsMjEgQEAgaWd0X21haW4KIAkJdGVzdF9l YWNoX2VuZ2luZV9zdG9yZSgicHJvbW90aW9uIiwgZmQsIGUpCiAJCQlwcm9tb3Rpb24oZmQsIGUt PmZsYWdzKTsKIAorCQl0ZXN0X2VhY2hfZW5naW5lX3N0b3JlKCJmYWlyLW5vbmUiLCBmZCwgZSkK KwkJCWZhaXJuZXNzKGZkLCBlLCAyLCAwKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFp ci1wYWNlIiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9QQUNFKTsKKwkJdGVzdF9l YWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zeW5jIiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwg MiwgRl9TWU5DKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zb2xvIiwgZmQsIGUp CisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9TWU5DIHwgRl9TT0xPKTsKKwkJdGVzdF9lYWNoX2Vu Z2luZV9zdG9yZSgiZmFpci1mbG93IiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9Q QUNFIHwgRl9GTE9XKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zcGFyZSIsIGZk LCBlKQorCQkJZmFpcm5lc3MoZmQsIGUsIDIsIEZfUEFDRSB8IEZfRkxPVyB8IEZfU1BBUkUpOwor CQl0ZXN0X2VhY2hfZW5naW5lX3N0b3JlKCJmYWlyLWhhbGYiLCBmZCwgZSkKKwkJCWZhaXJuZXNz KGZkLCBlLCAyLCBGX1BBQ0UgfCBGX0ZMT1cgfCBGX0hBTEYpOworCiAJCWlndF9zdWJ0ZXN0X2dy b3VwIHsKIAkJCWlndF9maXh0dXJlIHsKIAkJCQlpZ3RfcmVxdWlyZShnZW1fc2NoZWR1bGVyX2hh c19wcmVlbXB0aW9uKGZkKSk7Ci0tIAoyLjI3LjAucmMyCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Tue, 2 Jun 2020 09:32:41 +0100 Message-Id: <20200602083241.1413087-1-chris@chris-wilson.co.uk> In-Reply-To: <20200602082245.1356782-1-chris@chris-wilson.co.uk> References: <20200602082245.1356782-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] i915/gem_exec_schedule: Try to spot unfairness List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org, Tvrtko Ursulin , Chris Wilson List-ID: QW4gaW1wb3J0YW50IHByb3BlcnR5IGZvciBtdWx0aS1jbGllbnQgc3lzdGVtcyBpcyB0aGF0IGVh Y2ggY2xpZW50IGdldHMKYSAnZmFpcicgYWxsb3RtZW50IG9mIHN5c3RlbSB0aW1lLiAoV2hlcmUg ZmFpcm5lc3MgaXMgYXQgdGhlIHdoaW0gb2YgdGhlCmNvbnRleHQgcHJvcGVydGllcywgc3VjaCBh cyBwcmlvcml0aWVzLikgVGhpcyB0ZXN0IGZvcmtzIE4gaW5kZXBlbmRlbnQKY2xpZW50cyAoYWxi ZWl0IHRoZXkgaGFwcGVuIHRvIHNoYXJlIGEgc2luZ2xlIHZtKSwgYW5kIGRvZXMgYW4gZXF1YWwK YW1vdW50IG9mIHdvcmsgaW4gY2xpZW50IGFuZCBhc3NlcnRzIHRoYXQgdGhleSB0YWtlIGFuIGVx dWFsIGFtb3VudCBvZgp0aW1lLgoKVGhvdWdoIHdlIGhhdmUgbmV2ZXIgY2xhaW1lZCB0byBoYXZl IGEgY29tcGxldGVseSBmYWlyIHNjaGVkdWxlciwgdGhhdAppcyB3aGF0IGlzIGV4cGVjdGVkLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogUmFtYWxpbmdh bSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfc2No ZWR1bGUuYyB8IDQ0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0NDAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfc2NoZWR1bGUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwppbmRleCA1NmM2 Mzg4MzMuLjkxMTM3OWNhZCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVs ZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwpAQCAtMjQ5NSw2ICsyNDk1 LDQzMSBAQCBzdGF0aWMgdm9pZCBtZWFzdXJlX3NlbWFwaG9yZV9wb3dlcihpbnQgaTkxNSkKIAly YXBsX2Nsb3NlKCZwa2cpOwogfQogCitzdGF0aWMgaW50IHJlYWRfdGltZXN0YW1wX2ZyZXF1ZW5j eShpbnQgaTkxNSkKK3sKKwlpbnQgdmFsdWUgPSAwOworCWRybV9pOTE1X2dldHBhcmFtX3QgZ3Ag PSB7CisJCS52YWx1ZSA9ICZ2YWx1ZSwKKwkJLnBhcmFtID0gSTkxNV9QQVJBTV9DU19USU1FU1RB TVBfRlJFUVVFTkNZLAorCX07CisJaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0s ICZncCk7CisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgdWludDY0X3QgZGl2NjRfdTY0X3Jv dW5kX3VwKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCit7CisJcmV0dXJuICh4ICsgeSAtIDEpIC8g eTsKK30KKworc3RhdGljIHVpbnQ2NF90IG5zX3RvX3RpY2tzKGludCBpOTE1LCB1aW50NjRfdCBu cykKK3sKKwlyZXR1cm4gZGl2NjRfdTY0X3JvdW5kX3VwKG5zICogcmVhZF90aW1lc3RhbXBfZnJl cXVlbmN5KGk5MTUpLAorCQkJCSAgTlNFQ19QRVJfU0VDKTsKK30KKworc3RhdGljIHVpbnQ2NF90 IHRpY2tzX3RvX25zKGludCBpOTE1LCB1aW50NjRfdCB0aWNrcykKK3sKKwlyZXR1cm4gZGl2NjRf dTY0X3JvdW5kX3VwKHRpY2tzICogTlNFQ19QRVJfU0VDLAorCQkJCSAgcmVhZF90aW1lc3RhbXBf ZnJlcXVlbmN5KGk5MTUpKTsKK30KKworI2RlZmluZSBNSV9JTlNUUihvcGNvZGUsIGZsYWdzKSAo KChvcGNvZGUpIDw8IDIzKSB8IChmbGFncykpCisKKyNkZWZpbmUgTUlfTUFUSCh4KSAgICAgICAg ICAgICAgICAgICAgICBNSV9JTlNUUigweDFhLCAoeCkgLSAxKQorI2RlZmluZSBNSV9NQVRIX0lO U1RSKG9wY29kZSwgb3AxLCBvcDIpICgob3Bjb2RlKSA8PCAyMCB8IChvcDEpIDw8IDEwIHwgKG9w MikpCisvKiBPcGNvZGVzIGZvciBNSV9NQVRIX0lOU1RSICovCisjZGVmaW5lICAgTUlfTUFUSF9O T09QICAgICAgICAgICAgICAgICAgTUlfTUFUSF9JTlNUUigweDAwMCwgMHgwLCAweDApCisjZGVm aW5lICAgTUlfTUFUSF9MT0FEKG9wMSwgb3AyKSAgICAgICAgTUlfTUFUSF9JTlNUUigweDA4MCwg b3AxLCBvcDIpCisjZGVmaW5lICAgTUlfTUFUSF9MT0FESU5WKG9wMSwgb3AyKSAgICAgTUlfTUFU SF9JTlNUUigweDQ4MCwgb3AxLCBvcDIpCisjZGVmaW5lICAgTUlfTUFUSF9MT0FEMChvcDEpICAg ICAgICAgICAgTUlfTUFUSF9JTlNUUigweDA4MSwgb3AxKQorI2RlZmluZSAgIE1JX01BVEhfTE9B RDEob3AxKSAgICAgICAgICAgIE1JX01BVEhfSU5TVFIoMHg0ODEsIG9wMSkKKyNkZWZpbmUgICBN SV9NQVRIX0FERCAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTAwLCAweDAsIDB4 MCkKKyNkZWZpbmUgICBNSV9NQVRIX1NVQiAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RS KDB4MTAxLCAweDAsIDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX0FORCAgICAgICAgICAgICAgICAg ICBNSV9NQVRIX0lOU1RSKDB4MTAyLCAweDAsIDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX09SICAg ICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTAzLCAweDAsIDB4MCkKKyNkZWZpbmUg ICBNSV9NQVRIX1hPUiAgICAgICAgICAgICAgICAgICBNSV9NQVRIX0lOU1RSKDB4MTA0LCAweDAs IDB4MCkKKyNkZWZpbmUgICBNSV9NQVRIX1NUT1JFKG9wMSwgb3AyKSAgICAgICBNSV9NQVRIX0lO U1RSKDB4MTgwLCBvcDEsIG9wMikKKyNkZWZpbmUgICBNSV9NQVRIX1NUT1JFSU5WKG9wMSwgb3Ay KSAgICBNSV9NQVRIX0lOU1RSKDB4NTgwLCBvcDEsIG9wMikKKy8qIFJlZ2lzdGVycyB1c2VkIGFz IG9wZXJhbmRzIGluIE1JX01BVEhfSU5TVFIgKi8KKyNkZWZpbmUgICBNSV9NQVRIX1JFRyh4KSAg ICAgICAgICAgICAgICAoeCkKKyNkZWZpbmUgICBNSV9NQVRIX1JFR19TUkNBICAgICAgICAgICAg ICAweDIwCisjZGVmaW5lICAgTUlfTUFUSF9SRUdfU1JDQiAgICAgICAgICAgICAgMHgyMQorI2Rl ZmluZSAgIE1JX01BVEhfUkVHX0FDQ1UgICAgICAgICAgICAgIDB4MzEKKyNkZWZpbmUgICBNSV9N QVRIX1JFR19aRiAgICAgICAgICAgICAgICAweDMyCisjZGVmaW5lICAgTUlfTUFUSF9SRUdfQ0Yg ICAgICAgICAgICAgICAgMHgzMworCisjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfUkVHICAgIE1J X0lOU1RSKDB4MkEsIDEpCisKK3N0YXRpYyB2b2lkIGRlbGF5KGludCBpOTE1LAorCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKKwkJICB1aW50MzJfdCBoYW5kbGUs CisJCSAgdWludDY0X3QgYWRkciwKKwkJICB1aW50NjRfdCBucykKK3sKKwljb25zdCBpbnQgdXNl XzY0YiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGk5MTUpKSA+PSA4OworCWNvbnN0 IHVpbnQzMl90IGJhc2UgPSBnZW1fZW5naW5lX21taW9fYmFzZShpOTE1LCBlLT5uYW1lKTsKKyNk ZWZpbmUgQ1NfR1BSKHgpIChiYXNlICsgMHg2MDAgKyA4ICogKHgpKQorI2RlZmluZSBUSU1FU1RB TVAgKGJhc2UgKyAweDNhOCkKKwllbnVtIHsgU1RBUlRfVFMsIE5PV19UUyB9OworCXVpbnQzMl90 ICptYXAsICpjcywgKmptcDsKKworCWlndF9yZXF1aXJlKGJhc2UpOworCisJY3MgPSBtYXAgPSBn ZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGk5MTUsIGhhbmRsZSwgMCwgNDA5NiwgUFJPVF9XUklU RSk7CisKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpjcysrID0gQ1NfR1BSKFNU QVJUX1RTKSArIDQ7CisJKmNzKysgPSAwOworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUc7 CisJKmNzKysgPSBUSU1FU1RBTVA7CisJKmNzKysgPSBDU19HUFIoU1RBUlRfVFMpOworCisJaWYg KG9mZnNldF9pbl9wYWdlKGNzKSAmIDQpCisJCSpjcysrID0gMDsKKwlqbXAgPSBjczsKKworCSpj cysrID0gMHg1IDw8IDIzOyAvKiBNSV9BUkJfQ0hFQ0sgKi8KKworCSpjcysrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTk9XX1RTKSArIDQ7CisJKmNzKysgPSAwOwor CSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9SRUc7CisJKmNzKysgPSBUSU1FU1RBTVA7CisJKmNz KysgPSBDU19HUFIoTk9XX1RTKTsKKworCSpjcysrID0gTUlfTUFUSCg0KTsKKwkqY3MrKyA9IE1J X01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNBLCBNSV9NQVRIX1JFRyhOT1dfVFMpKTsKKwkqY3Mr KyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhTVEFSVF9UUykp OworCSpjcysrID0gTUlfTUFUSF9TVUI7CisJKmNzKysgPSBNSV9NQVRIX1NUT1JFSU5WKE1JX01B VEhfUkVHKE5PV19UUyksIE1JX01BVEhfUkVHX0FDQ1UpOworCisJKmNzKysgPSAweDI0IDw8IDIz IHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICovCisJKmNzKysgPSBDU19HUFIoTk9XX1RTKTsKKwkq Y3MrKyA9IGFkZHIgKyA0MDAwOworCSpjcysrID0gYWRkciA+PiAzMjsKKworCSpjcysrID0gTUlf Q09ORF9CQVRDSF9CVUZGRVJfRU5EIHwgTUlfRE9fQ09NUEFSRSB8ICgxICsgdXNlXzY0Yik7CisJ KmNzKysgPSB+bnNfdG9fdGlja3MoaTkxNSwgbnMpOworCSpjcysrID0gYWRkciArIDQwMDA7CisJ KmNzKysgPSBhZGRyID4+IDMyOworCisJKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAx IDw8IDggfCB1c2VfNjRiOworCSpjcysrID0gYWRkciArIG9mZnNldF9pbl9wYWdlKGptcCk7CisJ KmNzKysgPSBhZGRyID4+IDMyOworCisJbXVubWFwKG1hcCwgNDA5Nik7Cit9CisKK3N0YXRpYyBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MgorZGVsYXlfY3JlYXRlKGludCBpOTE1LCB1 aW50MzJfdCBjdHgsCisJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCisJICAgICB1aW50NjRfdCB0YXJnZXRfbnMpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgb2JqID0geworCQkuaGFuZGxlID0gYmF0Y2hfY3JlYXRlKGk5MTUpLAorCQku ZmxhZ3MgPSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUywKKwl9OworCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZiA9IHsKKwkJLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKCZvYmopLAorCQkuYnVmZmVyX2NvdW50ID0gMSwKKwkJLnJzdmQxID0gY3R4 LAorCQkuZmxhZ3MgPSBlLT5mbGFncywKKwl9OworCisJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNi dWYpOworCWdlbV9zeW5jKGk5MTUsIG9iai5oYW5kbGUpOworCisJZGVsYXkoaTkxNSwgZSwgb2Jq LmhhbmRsZSwgb2JqLm9mZnNldCwgdGFyZ2V0X25zKTsKKworCW9iai5mbGFncyB8PSBFWEVDX09C SkVDVF9QSU5ORUQ7CisJcmV0dXJuIG9iajsKK30KKworc3RhdGljIHZvaWQgdHNsb2coaW50IGk5 MTUsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgIHVp bnQzMl90IGhhbmRsZSwKKwkJICB1aW50NjRfdCBhZGRyKQoreworCWNvbnN0IGludCB1c2VfNjRi ID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpID49IDg7CisJY29uc3QgdWlu dDMyX3QgYmFzZSA9IGdlbV9lbmdpbmVfbW1pb19iYXNlKGk5MTUsIGUtPm5hbWUpOworI2RlZmlu ZSBDU19HUFIoeCkgKGJhc2UgKyAweDYwMCArIDggKiAoeCkpCisjZGVmaW5lIENTX1RJTUVTVEFN UCAoYmFzZSArIDB4MzU4KQorCWVudW0geyBPTkUsIE1BU0ssIEFERFIgfTsKKwl1aW50MzJfdCAq dGltZXN0YW1wX2xvLCAqYWRkcl9sbzsKKwl1aW50MzJfdCAqbWFwLCAqY3M7CisKKwlpZ3RfcmVx dWlyZShiYXNlKTsKKworCW1hcCA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaTkxNSwgaGFu ZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwljcyA9IG1hcCArIDUxMjsKKworCSpjcysrID0g MHgyNCA8PCAyMyB8ICgxICsgdXNlXzY0Yik7IC8qIFNSTSAqLworCSpjcysrID0gQ1NfVElNRVNU QU1QOworCXRpbWVzdGFtcF9sbyA9IGNzOworCSpjcysrID0gYWRkcjsKKwkqY3MrKyA9IGFkZHIg Pj4gMzI7CisKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpjcysrID0gQ1NfR1BS KEFERFIpOworCWFkZHJfbG8gPSBjczsKKwkqY3MrKyA9IGFkZHI7CisJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTTsKKwkqY3MrKyA9IENTX0dQUihBRERSKSArIDQ7CisJKmNzKysgPSBhZGRy ID4+IDMyOworCisJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKKwkqY3MrKyA9IENTX0dQ UihPTkUpOworCSpjcysrID0gNDsKKwkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NOworCSpj cysrID0gQ1NfR1BSKE9ORSkgKyA0OworCSpjcysrID0gMDsKKworCSpjcysrID0gTUlfTE9BRF9S RUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTUFTSyk7CisJKmNzKysgPSAweGZmZmZmN2Zm OworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07CisJKmNzKysgPSBDU19HUFIoTUFTSykg KyA0OworCSpjcysrID0gMHhmZmZmZmZmZjsKKworCSpjcysrID0gTUlfTUFUSCg4KTsKKwkqY3Mr KyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNBLCBNSV9NQVRIX1JFRyhPTkUpKTsKKwkq Y3MrKyA9IE1JX01BVEhfTE9BRChNSV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhBRERSKSk7 CisJKmNzKysgPSBNSV9NQVRIX0FERDsKKwkqY3MrKyA9IE1JX01BVEhfU1RPUkUoTUlfTUFUSF9S RUcoQUREUiksIE1JX01BVEhfUkVHX0FDQ1UpOworCSpjcysrID0gTUlfTUFUSF9MT0FEKE1JX01B VEhfUkVHX1NSQ0EsIE1JX01BVEhfUkVHKEFERFIpKTsKKwkqY3MrKyA9IE1JX01BVEhfTE9BRChN SV9NQVRIX1JFR19TUkNCLCBNSV9NQVRIX1JFRyhNQVNLKSk7CisJKmNzKysgPSBNSV9NQVRIX0FO RDsKKwkqY3MrKyA9IE1JX01BVEhfU1RPUkUoTUlfTUFUSF9SRUcoQUREUiksIE1JX01BVEhfUkVH X0FDQ1UpOworCisJKmNzKysgPSAweDI0IDw8IDIzIHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICov CisJKmNzKysgPSBDU19HUFIoQUREUik7CisJKmNzKysgPSBhZGRyICsgb2Zmc2V0X2luX3BhZ2Uo dGltZXN0YW1wX2xvKTsKKwkqY3MrKyA9IGFkZHIgPj4gMzI7CisJKmNzKysgPSAweDI0IDw8IDIz IHwgKDEgKyB1c2VfNjRiKTsgLyogU1JNICovCisJKmNzKysgPSBDU19HUFIoQUREUik7CisJKmNz KysgPSBhZGRyICsgb2Zmc2V0X2luX3BhZ2UoYWRkcl9sbyk7CisJKmNzKysgPSBhZGRyID4+IDMy OworCisJKmNzKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJbXVubWFwKG1hcCwgNDA5Nik7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MgordHNsb2dfY3Jl YXRlKGludCBpOTE1LCB1aW50MzJfdCBjdHgsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7 CisJCS5oYW5kbGUgPSBiYXRjaF9jcmVhdGUoaTkxNSksCisJCS5mbGFncyA9IEVYRUNfT0JKRUNU X1NVUFBPUlRTXzQ4Ql9BRERSRVNTLAorCX07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmID0geworCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaiks CisJCS5idWZmZXJfY291bnQgPSAxLAorCQkucnN2ZDEgPSBjdHgsCisJCS5mbGFncyA9IGUtPmZs YWdzLAorCX07CisKKwlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7CisJZ2VtX3N5bmMoaTkx NSwgb2JqLmhhbmRsZSk7CisKKwl0c2xvZyhpOTE1LCBlLCBvYmouaGFuZGxlLCBvYmoub2Zmc2V0 KTsKKworCW9iai5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJcmV0dXJuIG9iajsKK30K Kworc3RhdGljIGludCBjbXBfdTMyKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZvaWQgKkIpCit7CisJ Y29uc3QgdW5zaWduZWQgbG9uZyAqYSA9IEEsICpiID0gQjsKKworCWlmICgqYSA8ICpiKQorCQly ZXR1cm4gLTE7CisJZWxzZSBpZiAoKmEgPiAqYikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmFpcl9jaGlsZChpbnQgaTkxNSwgdWludDMyX3QgY3R4 LAorCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkg ICAgICAgdWludDY0X3QgZnJhbWVfbnMsCisJCSAgICAgICBpbnQgdGltZW91dCwKKwkJICAgICAg IGludCB0aW1lbGluZSwKKwkJICAgICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkJICAgICAgIHVu c2lnbmVkIGxvbmcgKmN0bCwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgKm91dCkKKyNkZWZpbmUg Rl9TWU5DICAoMSA8PCAwKQorI2RlZmluZSBGX1BBQ0UgICgxIDw8IDEpCisjZGVmaW5lIEZfRkxP VyAgKDEgPDwgMikKKyNkZWZpbmUgRl9IQUxGICAoMSA8PCAzKQorI2RlZmluZSBGX1NPTE8gICgx IDw8IDQpCisjZGVmaW5lIEZfU1BBUkUgKDEgPDwgOCkKK3sKKwljb25zdCBpbnQgYmF0Y2hlc19w ZXJfZnJhbWUgPSBmbGFncyAmIEZfU09MTyA/IDEgOiAzOworCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIHByZXYgPQorCQlkZWxheV9jcmVhdGUoaTkxNSwgY3R4LCBlLCBmcmFtZV9u cyAvIGJhdGNoZXNfcGVyX2ZyYW1lKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0 MiBuZXh0ID0KKwkJZGVsYXlfY3JlYXRlKGk5MTUsIGN0eCwgZSwgZnJhbWVfbnMgLyBiYXRjaGVz X3Blcl9mcmFtZSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgdHMgPSB0c2xv Z19jcmVhdGUoaTkxNSwgY3R4LCBlKTsKKwlpbnQgcF9mZW5jZSA9IC0xLCBuX2ZlbmNlID0gLTE7 CisJdW5zaWduZWQgbG9uZyBjb3VudCA9IDA7CisJdWludDMyX3QgKm1hcDsKKwlpbnQgbjsKKwor CXdoaWxlICghUkVBRF9PTkNFKCpjdGwpKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1 ZmZlcjIgZXhlY2J1ZiA9IHsKKwkJCS5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmbmV4 dCksCisJCQkuYnVmZmVyX2NvdW50ID0gMSwKKwkJCS5yc3ZkMSA9IGN0eCwKKwkJCS5yc3ZkMiA9 IC0xLAorCQkJLmZsYWdzID0gZS0+ZmxhZ3MsCisJCX07CisKKwkJaWYgKGZsYWdzICYgRl9GTE9X KSB7CisJCQlleGVjYnVmLnJzdmQyID0KKwkJCQlzd19zeW5jX3RpbWVsaW5lX2NyZWF0ZV9mZW5j ZSh0aW1lbGluZSwgY291bnQpOworCQkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfRkVOQ0Vf SU47CisJCX0KKworCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19GRU5DRV9PVVQ7CisJCWdl bV9leGVjYnVmX3dyKGk5MTUsICZleGVjYnVmKTsKKwkJbl9mZW5jZSA9IGV4ZWNidWYucnN2ZDIg Pj4gMzI7CisJCWV4ZWNidWYuZmxhZ3MgJj0gfihJOTE1X0VYRUNfRkVOQ0VfT1VUIHwgSTkxNV9F WEVDX0ZFTkNFX0lOKTsKKwkJZm9yIChuID0gMTsgbiA8IGJhdGNoZXNfcGVyX2ZyYW1lOyBuKysp CisJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7CisKKwkJZXhlY2J1Zi5idWZmZXJzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmdHMpOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9 IDIwNDg7CisJCWdlbV9leGVjYnVmKGk5MTUsICZleGVjYnVmKTsKKworCQlpZiAoZmxhZ3MgJiBG X1BBQ0UgJiYgcF9mZW5jZSAhPSAtMSkgeworCQkJc3RydWN0IHBvbGxmZCBwZmQgPSB7CisJCQkJ LmZkID0gcF9mZW5jZSwKKwkJCQkuZXZlbnRzID0gUE9MTElOLAorCQkJfTsKKwkJCXBvbGwoJnBm ZCwgMSwgLTEpOworCQl9CisJCWNsb3NlKHBfZmVuY2UpOworCQljbG9zZShleGVjYnVmLnJzdmQy KTsKKworCQlpZiAoZmxhZ3MgJiBGX1NZTkMpIHsKKwkJCXN0cnVjdCBwb2xsZmQgcGZkID0gewor CQkJCS5mZCA9IG5fZmVuY2UsCisJCQkJLmV2ZW50cyA9IFBPTExJTiwKKwkJCX07CisJCQlwb2xs KCZwZmQsIDEsIC0xKTsKKwkJfQorCisJCWlndF9zd2FwKHByZXYsIG5leHQpOworCQlpZ3Rfc3dh cChwX2ZlbmNlLCBuX2ZlbmNlKTsKKwkJY291bnQrKzsKKwl9CisJY2xvc2UocF9mZW5jZSk7CisK KwlnZW1fY2xvc2UoaTkxNSwgbmV4dC5oYW5kbGUpOworCWdlbV9jbG9zZShpOTE1LCBwcmV2Lmhh bmRsZSk7CisKKwlnZW1fc3luYyhpOTE1LCB0cy5oYW5kbGUpOworCW1hcCA9IGdlbV9tbWFwX19k ZXZpY2VfY29oZXJlbnQoaTkxNSwgdHMuaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsKKwlm b3IgKG4gPSAxOyBuIDwgbWluKGNvdW50LCA1MTIpOyBuKyspIHsKKwkJaWd0X2Fzc2VydChtYXBb bl0pOworCQltYXBbbiAtIDFdID0gbWFwW25dIC0gbWFwW24gLSAxXTsKKwl9CisJcXNvcnQobWFw LCAtLW4sIHNpemVvZigqbWFwKSwgY21wX3UzMik7CisJKm91dCA9IHRpY2tzX3RvX25zKGk5MTUs IG1hcFtuIC8gMl0pOworCW11bm1hcChtYXAsIDQwOTYpOworCisJZ2VtX2Nsb3NlKGk5MTUsIHRz LmhhbmRsZSk7Cit9CisKK3N0YXRpYyBpbnQgY21wX3VsKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZv aWQgKkIpCit7CisJY29uc3QgdW5zaWduZWQgbG9uZyAqYSA9IEEsICpiID0gQjsKKworCWlmICgq YSA8ICpiKQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoKmEgPiAqYikKKwkJcmV0dXJuIDE7CisJ ZWxzZQorCQlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmFpcm5lc3MoaW50IGk5MTUsCisJ CSAgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAorCQkgICAgIGlu dCB0aW1lb3V0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJY29uc3QgaW50IGZyYW1lX25zID0g MTY2NjYgKiAxMDAwOworCWNvbnN0IGludCBmZW5jZV9ucyA9IGZsYWdzICYgRl9IQUxGID8gMiAq IGZyYW1lX25zIDogZnJhbWVfbnM7CisJdW5zaWduZWQgbG9uZyAqcmVzdWx0OworCisJaWd0X3Jl cXVpcmUoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpID49IDgpOworCWlndF9y ZXF1aXJlKGdlbV9jbGFzc19oYXNfbXV0YWJsZV9zdWJtaXNzaW9uKGk5MTUsIGUtPmNsYXNzKSk7 CisKKwlyZXN1bHQgPSBtbWFwKE5VTEwsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQgfCBN QVBfQU5PTiwgLTEsIDApOworCisJZm9yIChpbnQgbiA9IDI7IG4gPD0gMTY7IG4gPDw9IDEpIHsK KwkJaW50IHRpbWVsaW5lID0gc3dfc3luY190aW1lbGluZV9jcmVhdGUoKTsKKwkJaW50IG5mZW5j ZXMgPSB0aW1lb3V0ICogTlNFQ19QRVJfU0VDIC8gZmVuY2VfbnMgKyAxOworCQljb25zdCBpbnQg bmNoaWxkID0gbiAtIDE7IC8qIG9kZCBmb3IgZWFzeSBtZWRpYW5zICovCisJCWNvbnN0IGludCBj aGlsZF9ucyA9IGZyYW1lX25zIC8gKG5jaGlsZCArICEhKGZsYWdzICYgRl9TUEFSRSkpOworCQlj b25zdCBpbnQgbG8gPSBuY2hpbGQgLyA0OworCQljb25zdCBpbnQgaGkgPSAoMyAqIG5jaGlsZCAr IDMpIC8gNCAtIDE7CisJCXN0cnVjdCBpZ3RfbWVhbiBtOworCisJCW1lbXNldChyZXN1bHQsIDAs IChuY2hpbGQgKyAxKSAqIHNpemVvZihyZXN1bHRbMF0pKTsKKwkJaWd0X2ZvcmsoY2hpbGQsIG5j aGlsZCkgeworCQkJdWludDMyX3QgY3R4ID0gZ2VtX2NvbnRleHRfY2xvbmVfd2l0aF9lbmdpbmVz KGk5MTUsIDApOworCisJCQlmYWlyX2NoaWxkKGk5MTUsIGN0eCwgZSwgY2hpbGRfbnMsCisJCQkJ ICAgdGltZW91dCwgdGltZWxpbmUsIGZsYWdzLAorCQkJCSAgICZyZXN1bHRbbmNoaWxkXSwKKwkJ CQkgICAmcmVzdWx0W2NoaWxkXSk7CisKKwkJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4 KTsKKwkJfQorCisJCXdoaWxlIChuZmVuY2VzLS0pIHsKKwkJCXN0cnVjdCB0aW1lc3BlYyB0diA9 IHsgLnR2X25zZWMgPSBmZW5jZV9ucyB9OworCQkJbmFub3NsZWVwKCZ0diwgTlVMTCk7CisJCQlz d19zeW5jX3RpbWVsaW5lX2luYyh0aW1lbGluZSwgMSk7CisJCX0KKwkJcmVzdWx0W25jaGlsZF0g PSAxOworCQlmb3IgKGludCBjaGlsZCA9IDA7IGNoaWxkIDwgbmNoaWxkOyBjaGlsZCsrKSB7CisJ CQl3aGlsZSAoIVJFQURfT05DRShyZXN1bHRbY2hpbGRdKSkgeworCQkJCXN0cnVjdCB0aW1lc3Bl YyB0diA9IHsgLnR2X25zZWMgPSBmZW5jZV9ucyB9OworCQkJCW5hbm9zbGVlcCgmdHYsIE5VTEwp OworCQkJCXN3X3N5bmNfdGltZWxpbmVfaW5jKHRpbWVsaW5lLCAxKTsKKwkJCX0KKwkJfQorCQlp Z3Rfd2FpdGNoaWxkcmVuKCk7CisJCWNsb3NlKHRpbWVsaW5lKTsKKworCQlpZ3RfbWVhbl9pbml0 KCZtKTsKKwkJZm9yIChpbnQgY2hpbGQgPSAwOyBjaGlsZCA8IG5jaGlsZDsgY2hpbGQrKykKKwkJ CWlndF9tZWFuX2FkZCgmbSwgcmVzdWx0W2NoaWxkXSk7CisKKwkJcXNvcnQocmVzdWx0LCBuY2hp bGQsIHNpemVvZigqcmVzdWx0KSwgY21wX3VsKTsKKwkJaWd0X2luZm8oIiVkIGNsaWVudHMsIHJh bmdlOiBbJS4xZiwgJS4xZl0sIGlxcjogWyUuMWYsICUuMWZdLCBtZWRpYW46ICUuMWYsIG1lYW46 ICUuMWYgwrEgJS4yZiBtc1xuIiwKKwkJCSBuY2hpbGQsCisJCQkgMWUtNiAqIHJlc3VsdFswXSwg IDFlLTYgKiByZXN1bHRbbmNoaWxkIC0gMV0sCisJCQkgMWUtNiAqIHJlc3VsdFtsb10sIDFlLTYg KiByZXN1bHRbaGldLAorCQkJIDFlLTYgKiByZXN1bHRbbmNoaWxkIC8gMl0sCisJCQkgMWUtNiAq IGlndF9tZWFuX2dldCgmbSksCisJCQkgMWUtNiAqIHNxcnQoaWd0X21lYW5fZ2V0X3ZhcmlhbmNl KCZtKSkpOworCisjaWYgMAorCQkvKiBNZWFuIHdpdGhpbiAxMCUgb2YgdGFyZ2V0ICovCisJCWln dF9hc3NlcnQoIDkgKiBpZ3RfbWVhbl9nZXQoJm0pID4gMTAgKiBmcmFtZV9ucyAmJgorCQkJICAg MTAgKiBpZ3RfbWVhbl9nZXQoJm0pIDwgIDkgKiBmcmFtZV9ucyk7CisKKwkJLyogVmFyaWFuY2Ug W2ludGVyLXF1YXJ0aWxlIHJhbmdlXSBpcyBsZXNzIHRoYW4gMzMlIG9mIG1lZGlhbiAqLworCQlp Z3RfYXNzZXJ0KDMgKiByZXN1bHRbaGldIC0gcmVzdWx0W2xvXSA8IHJlc3VsdFtuY2hpbGQgLyAy XSk7CisjZW5kaWYKKwl9CisKKwltdW5tYXAocmVzdWx0LCA0MDk2KTsKK30KKwogI2RlZmluZSB0 ZXN0X2VhY2hfZW5naW5lKFQsIGk5MTUsIGUpIFwKIAlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMo VCkgX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoaTkxNSwgZSkgXAogCQlpZ3RfZHluYW1pY19m KCIlcyIsIGUtPm5hbWUpCkBAIC0yNTg5LDYgKzMwMTQsMjEgQEAgaWd0X21haW4KIAkJdGVzdF9l YWNoX2VuZ2luZV9zdG9yZSgicHJvbW90aW9uIiwgZmQsIGUpCiAJCQlwcm9tb3Rpb24oZmQsIGUt PmZsYWdzKTsKIAorCQl0ZXN0X2VhY2hfZW5naW5lX3N0b3JlKCJmYWlyLW5vbmUiLCBmZCwgZSkK KwkJCWZhaXJuZXNzKGZkLCBlLCAyLCAwKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFp ci1wYWNlIiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9QQUNFKTsKKwkJdGVzdF9l YWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zeW5jIiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwg MiwgRl9TWU5DKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zb2xvIiwgZmQsIGUp CisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9TWU5DIHwgRl9TT0xPKTsKKwkJdGVzdF9lYWNoX2Vu Z2luZV9zdG9yZSgiZmFpci1mbG93IiwgZmQsIGUpCisJCQlmYWlybmVzcyhmZCwgZSwgMiwgRl9Q QUNFIHwgRl9GTE9XKTsKKwkJdGVzdF9lYWNoX2VuZ2luZV9zdG9yZSgiZmFpci1zcGFyZSIsIGZk LCBlKQorCQkJZmFpcm5lc3MoZmQsIGUsIDIsIEZfUEFDRSB8IEZfRkxPVyB8IEZfU1BBUkUpOwor CQl0ZXN0X2VhY2hfZW5naW5lX3N0b3JlKCJmYWlyLWhhbGYiLCBmZCwgZSkKKwkJCWZhaXJuZXNz KGZkLCBlLCAyLCBGX1BBQ0UgfCBGX0ZMT1cgfCBGX0hBTEYpOworCiAJCWlndF9zdWJ0ZXN0X2dy b3VwIHsKIAkJCWlndF9maXh0dXJlIHsKIAkJCQlpZ3RfcmVxdWlyZShnZW1fc2NoZWR1bGVyX2hh c19wcmVlbXB0aW9uKGZkKSk7Ci0tIAoyLjI3LjAucmMyCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXYK