From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x52c.google.com (mail-pg1-x52c.google.com [IPv6:2607:f8b0:4864:20::52c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 245436EABB for ; Thu, 15 Apr 2021 19:12:05 +0000 (UTC) Received: by mail-pg1-x52c.google.com with SMTP id g35so17528673pgg.9 for ; Thu, 15 Apr 2021 12:12:05 -0700 (PDT) From: Jason Ekstrand Date: Thu, 15 Apr 2021 14:10:39 -0500 Message-Id: <20210415191145.2137858-9-jason@jlekstrand.net> In-Reply-To: <20210415191145.2137858-1-jason@jlekstrand.net> References: <20210415191145.2137858-1-jason@jlekstrand.net> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 08/74] lib: Add an intel_ctx wrapper struct and helpers (v2) 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: igt-dev@lists.freedesktop.org List-ID: V2UncmUgdHJ5aW5nIHRvIGNsZWFuIHVwIHNvbWUgb2Ygb3VyIHRlY2huaWNhbCBkZWJ0IGluIHRo ZSBpOTE1IEFQSS4gIEluCnBhcnRpY3VsYXIsIGNvbnRleHQgbXV0YWJpbGl0eSBhbmQgdW5uZWNl c3NhcnkgZ2V0cGFyYW0oKS4gIFRoZXJlJ3MKcXVpdGUgYSBiaXQgb2YgdGhlIGludHJvc3BlY3Rp b24gc3R1ZmYgdGhhdCdzIG5vdCB1c2VkIGJ5IGFueSB1c2Vyc3BhY2UKb3RoZXIgdGhhbiBJR1Qu ICBNb3N0IGRyaXZlcnMgZG9uJ3QgY2FyZSBhYm91dCBmZXRjaGluZyB0aGUgc2V0IG9mCmVuZ2lu ZXMsIGZvciBpbnN0YW5jZSwgYmVjYXVzZSB0aGV5IGRvbid0IGZvcmdldCBhYm91dCB3aGF0IHNl dCBvZgplbmdpbmVzIHRoZXkgYXNrZWQgZm9yIGludCB0aGUgZmlyc3QgcGxhY2UuCgpVbmZvcnR1 bmF0ZWx5LCBJR1QgcmVsaWVzIGhlYXZpbHkgb24gY29udGV4dCBpbnRyb3NwZWN0aW9uIGZvciBq dXN0CmFib3V0IGV2ZXJ5dGhpbmcgd2hlbiBpdCBjb21lcyB0byBtdWx0aS1lbmdpbmUgdGVzdGlu Zy4gIEl0IGFsc28gbGlrZXMKdG8gdXNlIGN0eDAgYXMgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHdo YXRldmVyIHRoZSBjdXJyZW50IHRlc3QgY29uZmlnCmlzLiAgV2hpbGUgZWZmZWN0aXZlIGF0IGtl ZXBpbmcgSUdDIHNpbXBsZSBpbiBzb21lIHdheXMsIHRoaXMgbWVhbnMKd2UncmUgbWFraW5nIGhl YXZ5IHVzZSBvZiBjb250ZXh0IG11dGFiaWxpdHkuICBBbHNvLCBwYXNzaW5nIGRhdGEgYXJvdW5k CndpdGggaW4gdGVzdHMgaXNuJ3QgcmVhbGx5IHdoYXQgY29udGV4dHMgYXJlIGZvci4KClRoaXMg cGF0Y2ggYWRkcyBhIG5ldyBpbnRlbF9jdHhfdCBzdHJ1Y3Qgd2hpY2ggd3JhcHMgYSBjb250ZXh0 IGFuZApyZW1lbWJlcnMgdGhlIGZ1bGwgY29udGV4dCBjb25maWd1cmF0aW9uLiAgVGhpcyB3aWxs IHByb3ZpZGUgc2ltaWxhcgplYXNlLW9mLXVzZSB3aXRob3V0IGhhdmluZyB1c2UgY3R4MCBhcyB0 ZW1wb3Jhcnkgc3RvcmFnZS4KCnYyIChKYXNvbiBFa3N0cmFuZCk6CiAtIE1ha2UgYWxsIGludGVs X2N0eF90J3MgY29uc3QKLS0tCiBsaWIvaW50ZWxfY3R4LmMgfCAxNjQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaW50ZWxfY3R4LmggfCAxMTAg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9tZXNvbi5idWlsZCB8ICAgMSAr CiAzIGZpbGVzIGNoYW5nZWQsIDI3NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliL2ludGVsX2N0eC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2ludGVsX2N0eC5oCgpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX2N0eC5jIGIvbGliL2ludGVsX2N0eC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi43NWM3N2ZiZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9p bnRlbF9jdHguYwpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIxIElu dGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICovCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2luY2x1ZGUgImludGVsX2N0eC5o IgorI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmgiCisKK3N0YXRpYyB2b2lkCithZGRfdXNlcl9leHQodWludDY0X3QgKnJvb3Rf ZXh0X3U2NCwgc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gKmV4dCkKK3sKKwlleHQtPm5leHRf ZXh0ZW5zaW9uID0gKnJvb3RfZXh0X3U2NDsKKwkqcm9vdF9leHRfdTY0ID0gdG9fdXNlcl9wb2lu dGVyKGV4dCk7Cit9CisKK3N0YXRpYyBzaXplX3Qgc2l6ZW9mX3BhcmFtX2VuZ2luZXMoaW50IGNv dW50KQoreworCXJldHVybiBvZmZzZXRvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2lu ZXMsIGVuZ2luZXNbY291bnRdKTsKK30KKworI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9m KHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAorCQkJCQkgZW5naW5lc1tHRU1f TUFYX0VOR0lORVNdKQorCitpbnRlbF9jdHhfY2ZnX3QgaW50ZWxfY3R4X2NmZ19hbGxfcGh5c2lj YWwoaW50IGZkKQoreworCXVpbnQ4X3QgYnVmZltTSVpFT0ZfUVVFUlldID0geyB9OworCXN0cnVj dCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcWVpID0gKHZvaWQgKikgYnVmZjsKKwlpbnRl bF9jdHhfY2ZnX3QgY2ZnID0ge307CisJaW50IGk7CisKKwlpZiAoX19nZW1fcXVlcnlfZW5naW5l cyhmZCwgcWVpLCBTSVpFT0ZfUVVFUlkpID09IDApIHsKKwkJY2ZnLm51bV9lbmdpbmVzID0gcWVp LT5udW1fZW5naW5lczsKKwkJZm9yIChpID0gMDsgaSA8IHFlaS0+bnVtX2VuZ2luZXM7IGkrKykK KwkJCWNmZy5lbmdpbmVzW2ldID0gcWVpLT5lbmdpbmVzW2ldLmVuZ2luZTsKKwl9CisKKwlyZXR1 cm4gY2ZnOworfQorCitzdGF0aWMgaW50CitfX2NvbnRleHRfY3JlYXRlX2NmZyhpbnQgZmQsIGNv bnN0IGludGVsX2N0eF9jZmdfdCAqY2ZnLCB1aW50MzJfdCAqY3R4X2lkKQoreworCXVpbnQ2NF90 IGV4dF9yb290ID0gMDsKKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5l cywgR0VNX01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRl X2V4dF9zZXRwYXJhbSBlbmdpbmVzX3BhcmFtLCB2bV9wYXJhbTsKKwl1aW50MzJfdCBpOworCisJ aWYgKGNmZy0+dm0pIHsKKwkJdm1fcGFyYW0gPSAoc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X2NyZWF0ZV9leHRfc2V0cGFyYW0pIHsKKwkJCS5iYXNlID0geworCQkJCS5uYW1lID0gSTkxNV9D T05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0sCisJCQl9LAorCQkJLnBhcmFtID0geworCQkJCS5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9WTSwKKwkJCQkudmFsdWUgPSBjZmctPnZtLAorCQkJ fSwKKwkJfTsKKwkJYWRkX3VzZXJfZXh0KCZleHRfcm9vdCwgJnZtX3BhcmFtLmJhc2UpOworCX0K KworCWlmIChjZmctPm51bV9lbmdpbmVzKSB7CisJCW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9m KGVuZ2luZXMpKTsKKwkJZm9yIChpID0gMDsgaSA8IGNmZy0+bnVtX2VuZ2luZXM7IGkrKykKKwkJ CWVuZ2luZXMuZW5naW5lc1tpXSA9IGNmZy0+ZW5naW5lc1tpXTsKKworCQllbmdpbmVzX3BhcmFt ID0gKHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtKSB7CisJ CQkuYmFzZSA9IHsKKwkJCQkubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFN LAorCQkJfSwKKwkJCS5wYXJhbSA9IHsKKwkJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1f RU5HSU5FUywKKwkJCQkuc2l6ZSA9IHNpemVvZl9wYXJhbV9lbmdpbmVzKGNmZy0+bnVtX2VuZ2lu ZXMpLAorCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyksCisJCQl9LAorCQl9 OworCQlhZGRfdXNlcl9leHQoJmV4dF9yb290LCAmZW5naW5lc19wYXJhbS5iYXNlKTsKKwl9CisK KwlyZXR1cm4gX19nZW1fY29udGV4dF9jcmVhdGVfZXh0KGZkLCBjZmctPmZsYWdzLCBleHRfcm9v dCwgY3R4X2lkKTsKK30KKworaW50IF9faW50ZWxfY3R4X2NyZWF0ZShpbnQgZmQsIGNvbnN0IGlu dGVsX2N0eF9jZmdfdCAqY2ZnLAorCQkgICAgICAgY29uc3QgaW50ZWxfY3R4X3QgKipvdXRfY3R4 KQoreworCXVpbnQzMl90IGN0eF9pZDsKKwlpbnRlbF9jdHhfdCAqY3R4OworCWludCBlcnI7CisK KwlpZiAoY2ZnKQorCQllcnIgPSBfX2NvbnRleHRfY3JlYXRlX2NmZyhmZCwgY2ZnLCAmY3R4X2lk KTsKKwllbHNlCisJCWVyciA9IF9fZ2VtX2NvbnRleHRfY3JlYXRlKGZkLCAmY3R4X2lkKTsKKwlp ZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJY3R4ID0gY2FsbG9jKDEsIHNpemVvZigqY3R4KSk7 CisJaWd0X2Fzc2VydChjdHgpOworCisJY3R4LT5pZCA9IGN0eF9pZDsKKwljdHgtPmNmZyA9ICpj Zmc7CisKKwkqb3V0X2N0eCA9IGN0eDsKKwlyZXR1cm4gMDsKK30KKworY29uc3QgaW50ZWxfY3R4 X3QgKmludGVsX2N0eF9jcmVhdGUoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfY2ZnX3QgKmNmZykK K3sKKwljb25zdCBpbnRlbF9jdHhfdCAqY3R4OworCWludCBlcnI7CisKKwllcnIgPSBfX2ludGVs X2N0eF9jcmVhdGUoZmQsIGNmZywgJmN0eCk7CisJaWd0X2Fzc2VydF9lcShlcnIsIDApOworCisJ cmV0dXJuIGN0eDsKK30KKworc3RhdGljIGNvbnN0IGludGVsX2N0eF90IF9faW50ZWxfY3R4XzAg PSB7fTsKKworY29uc3QgaW50ZWxfY3R4X3QgKmludGVsX2N0eF8wKGludCBmZCkKK3sKKwkodm9p ZClmZDsKKwlyZXR1cm4gJl9faW50ZWxfY3R4XzA7Cit9CisKK2NvbnN0IGludGVsX2N0eF90ICpp bnRlbF9jdHhfY3JlYXRlX2FsbF9waHlzaWNhbChpbnQgZmQpCit7CisJaW50ZWxfY3R4X2NmZ190 IGNmZzsKKworCWlmICghZ2VtX2hhc19jb250ZXh0cyhmZCkpCisJCXJldHVybiBpbnRlbF9jdHhf MChmZCk7CisKKwljZmcgPSBpbnRlbF9jdHhfY2ZnX2FsbF9waHlzaWNhbChmZCk7CisJcmV0dXJu IGludGVsX2N0eF9jcmVhdGUoZmQsICZjZmcpOworfQorCit2b2lkIGludGVsX2N0eF9kZXN0cm95 KGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCkKK3sKKwlpZiAoIWN0eCB8fCBjdHgtPmlk ID09IDApCisJCXJldHVybjsKKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eC0+aWQpOwor CWZyZWUoKHZvaWQgKiljdHgpOworfQpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2N0eC5oIGIvbGli L2ludGVsX2N0eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lNjFkNmM5 MQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pbnRlbF9jdHguaApAQCAtMCwwICsxLDExMCBAQAor LyoKKyAqIENvcHlyaWdodCDCqSAyMDIxIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgSU5URUxfQ1RY X0gKKyNkZWZpbmUgSU5URUxfQ1RYX0gKKworI2luY2x1ZGUgImlndF9jb3JlLmgiCisKKyNpbmNs dWRlICJpOTE1X2RybS5oIgorCisjZGVmaW5lIEdFTV9NQVhfRU5HSU5FUwkJSTkxNV9FWEVDX1JJ TkdfTUFTSyArIDEKKworLyoqCisgKiBpbnRlbF9jdHhfY2ZnX3Q6CisgKiBAZmxhZ3M6IENvbnRl eHQgY3JlYXRlIGZsYWdzCisgKiBAdm06IFZNIHRvIGluaGVyaXQgb3IgMCBmb3IgdXNpbmcgYSBw ZXItY29udGV4dCBWTQorICogQG51bV9lbmdpbmVzOiBOdW1iZXIgb2YgY2xpZW50LXNwZWNpZmll ZCBlbmdpbmVzIG9yIDAgZm9yIGxlZ2FjeSBtb2RlCisgKiBAZW5naW5lczogQ2xpZW50LXNwZWNp ZmllZCBlbmdpbmVzCisgKgorICogUmVwcmVzZW50cyB0aGUgZnVsbCBjb25maWd1cmF0aW9uIG9m IGFuIGludGVsX2N0eC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgaW50ZWxfY3R4X2NmZyB7CisJdWlu dDMyX3QgZmxhZ3M7CisJdWludDMyX3Qgdm07CisJdW5zaWduZWQgaW50IG51bV9lbmdpbmVzOwor CXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSBlbmdpbmVzW0dFTV9NQVhfRU5HSU5F U107Cit9IGludGVsX2N0eF9jZmdfdDsKKworaW50ZWxfY3R4X2NmZ190IGludGVsX2N0eF9jZmdf YWxsX3BoeXNpY2FsKGludCBmZCk7CisKKy8qKgorICogaW50ZWxfY3R4X3Q6CisgKiBAaWQ6IHRo ZSBjb250ZXh0IGlkL2hhbmRsZQorICogQGNmZzogdGhlIGNvbmZpZyB1c2VkIHRvIGNyZWF0ZSB0 aGlzIGNvbnRleHQKKyAqCisgKiBSZXByZXNlbnRzIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gb2Yg YW4gaW50ZWxfY3R4LgorICovCit0eXBlZGVmIHN0cnVjdCBpbnRlbF9jdHggeworCXVpbnQzMl90 IGlkOworCWludGVsX2N0eF9jZmdfdCBjZmc7Cit9IGludGVsX2N0eF90OworCisvKioKKyAqIF9f aW50ZWxfY3R4X2NyZWF0ZToKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IK KyAqIEBjZmc6IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjcmVhdGVkIGNvbnRleHQKKyAqIEBvdXRf Y3R4OiBvbiBzdWNjZXNzLCB0aGUgbmV3IGludGVsX2N0eF90IHBvaW50ZXIgaXMgd3JpdHRlbiBo ZXJlCisgKgorICogTGlrZSBpbnRlbF9jdHhfY3JlYXRlIGJ1dCByZXR1cm5zIGFuIGVycm9yIGlu c3RlYWQgb2YgYXNzZXJ0aW5nLgorICovCitpbnQgX19pbnRlbF9jdHhfY3JlYXRlKGludCBmZCwg Y29uc3QgaW50ZWxfY3R4X2NmZ190ICpjZmcsCisJCSAgICAgICBjb25zdCBpbnRlbF9jdHhfdCAq Km91dF9jdHgpOworCisvKioKKyAqIGludGVsX2N0eF9jcmVhdGU6CisgKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAY2ZnOiBjb25maWd1cmF0aW9uIGZvciB0aGUgY3Jl YXRlZCBjb250ZXh0CisgKgorICogQ3JlYXRlcyBhIG5ldyBpbnRlbF9jdHhfdCB3aXRoIHRoZSBn aXZlbiBjb25maWcKKyAqLworY29uc3QgaW50ZWxfY3R4X3QgKmludGVsX2N0eF9jcmVhdGUoaW50 IGk5MTUsIGNvbnN0IGludGVsX2N0eF9jZmdfdCAqY2ZnKTsKKworLyoqCisgKiBpbnRlbF9jdHhf MDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqCisgKiBSZXR1cm5z IGFuIGludGVsX2N0eF90IHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCBjb250ZXh0LgorICovCitj b25zdCBpbnRlbF9jdHhfdCAqaW50ZWxfY3R4XzAoaW50IGZkKTsKKworLyoqCisgKiBpbnRlbF9j dHhfY3JlYXRlX2FsbF9waHlzaWNhbDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2Ny aXB0b3IKKyAqCisgKiBDcmVhdGVzIGFuIGludGVsX2N0eF90IGNvbnRhaW5pbmcgYWxsIHBoeXNp Y2FsIGVuZ2luZXMuICBPbiBrZXJuZWxzCisgKiB3aXRob3V0IHRoZSBlbmdpbmVzIEFQSSwgdGhl IGNyZWF0ZWQgY29udGV4dCB3aWxsIGJlIHRoZSBzYW1lIGFzCisgKiBpbnRlbF9jdHhfMCgpIGV4 Y2VwdCB0aGF0IGl0IHdpbGwgYmUgYSBuZXcgR0VNIGNvbnRleHQuCisgKi8KK2NvbnN0IGludGVs X2N0eF90ICppbnRlbF9jdHhfY3JlYXRlX2FsbF9waHlzaWNhbChpbnQgZmQpOworCisvKioKKyAq IGludGVsX2N0eF9kZXN0cm95OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRv cgorICogQGN0eDogY29udGV4dCB0byBkZXN0cm95LCBvciBOVUxMCisgKgorICogRGVzdHJveXMg YW4gaW50ZWxfY3R4X3QuCisgKi8KK3ZvaWQgaW50ZWxfY3R4X2Rlc3Ryb3koaW50IGZkLCBjb25z dCBpbnRlbF9jdHhfdCAqY3R4KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVp bGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggOTkyOTUyMGUuLmQ2Njc0OGFkIDEwMDY0NAotLS0g YS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBA IGxpYl9zb3VyY2VzID0gWwogCSdpbnRlbF9iYXRjaGJ1ZmZlci5jJywKIAknaW50ZWxfYnVmb3Bz LmMnLAogCSdpbnRlbF9jaGlwc2V0LmMnLAorCSdpbnRlbF9jdHguYycsCiAJJ2ludGVsX2Rldmlj ZV9pbmZvLmMnLAogCSdpbnRlbF9vcy5jJywKIAknaW50ZWxfbW1pby5jJywKLS0gCjIuMzEuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==