From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH libdrm] libdrm/amdgpu: add interface for kernel semaphores Date: Tue, 27 Jun 2017 07:19:22 +1000 Message-ID: <20170626211922.7493-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyB0aGUgY29y cmVzcG9uZGluZyBjb2RlIGZvciBsaWJkcm0gdG8gdXNlIHRoZSBuZXcKa2VybmVsIGludGVyZmFj ZXMgZm9yIHNlbWFwaG9yZXMuCgpUaGlzIHdpbGwgYmUgdXNlZCBieSByYWR2IHRvIGltcGxlbWVu dCBzaGFyZWQgc2VtYXBob3Jlcy4KClRPRE86IFZlcnNpb24gY2hlY2tzLgoKU2lnbmVkLW9mZi1i eTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KLS0tCiBhbWRncHUvYW1kZ3B1Lmgg ICAgICAgICAgfCAgMjggKysrKysrKysrCiBhbWRncHUvYW1kZ3B1X2NzLmMgICAgICAgfCAxNjEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGluY2x1ZGUv ZHJtL2FtZGdwdV9kcm0uaCB8ICAyOCArKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjA4IGlu c2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYW1kZ3B1L2FtZGdwdS5o IGIvYW1kZ3B1L2FtZGdwdS5oCmluZGV4IDdiMjZhMDQuLjc0N2UyNDggMTAwNjQ0Ci0tLSBhL2Ft ZGdwdS9hbWRncHUuaAorKysgYi9hbWRncHUvYW1kZ3B1LmgKQEAgLTEyOSw2ICsxMjksOCBAQCB0 eXBlZGVmIHN0cnVjdCBhbWRncHVfdmEgKmFtZGdwdV92YV9oYW5kbGU7CiAgKi8KIHR5cGVkZWYg c3RydWN0IGFtZGdwdV9zZW1hcGhvcmUgKmFtZGdwdV9zZW1hcGhvcmVfaGFuZGxlOwogCit0eXBl ZGVmIHVpbnQzMl90IGFtZGdwdV9zZW1faGFuZGxlOworCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cnVjdHVyZXMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0zNjUsNiAr MzY3LDE2IEBAIHN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdCB7CiAJc3RydWN0IGFtZGdwdV9jc19m ZW5jZV9pbmZvIGZlbmNlX2luZm87CiB9OwogCitzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3Rfc2Vt IHsKKwkvKgorCSAqCisJICovCisJdWludDMyX3QgbnVtYmVyX29mX3dhaXRfc2VtOworCXVpbnQz Ml90ICp3YWl0X3NlbXM7CisJdWludDMyX3QgbnVtYmVyX29mX3NpZ25hbF9zZW07CisJdWludDMy X3QgKnNpZ25hbF9zZW1zOworfTsKKwogLyoqCiAgKiBTdHJ1Y3R1cmUgd2hpY2ggcHJvdmlkZSBp bmZvcm1hdGlvbiBhYm91dCBHUFUgVk0gTUMgQWRkcmVzcyBzcGFjZQogICogYWxpZ25tZW50cyBy ZXF1aXJlbWVudHMKQEAgLTg4Miw2ICs4OTQsMTIgQEAgaW50IGFtZGdwdV9jc19zdWJtaXQoYW1k Z3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCiAJCSAgICAgc3RydWN0IGFtZGdwdV9jc19yZXF1 ZXN0ICppYnNfcmVxdWVzdCwKIAkJICAgICB1aW50MzJfdCBudW1iZXJfb2ZfcmVxdWVzdHMpOwog CitpbnQgYW1kZ3B1X2NzX3N1Ym1pdF9zZW0oYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQs CisJCQkgdWludDY0X3QgZmxhZ3MsCisJCQkgc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0ICppYnNf cmVxdWVzdCwKKwkJCSBzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVlc3Rfc2VtICppYnNfc2VtLAorCQkJ IHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0cyk7CisKIC8qKgogICogIFF1ZXJ5IHN0YXR1cyBv ZiBDb21tYW5kIEJ1ZmZlciBTdWJtaXNzaW9uCiAgKgpAQCAtMTI1NSw0ICsxMjczLDE0IEBAIGlu dCBhbWRncHVfY3NfZGVzdHJveV9zZW1hcGhvcmUoYW1kZ3B1X3NlbWFwaG9yZV9oYW5kbGUgc2Vt KTsKICovCiBjb25zdCBjaGFyICphbWRncHVfZ2V0X21hcmtldGluZ19uYW1lKGFtZGdwdV9kZXZp Y2VfaGFuZGxlIGRldik7CiAKK2ludCBhbWRncHVfY3NfY3JlYXRlX3NlbShhbWRncHVfZGV2aWNl X2hhbmRsZSBkZXYsCisJCQkgYW1kZ3B1X3NlbV9oYW5kbGUgKnNlbSk7CitpbnQgYW1kZ3B1X2Nz X2V4cG9ydF9zZW0oYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorCQkJICBhbWRncHVfc2VtX2hh bmRsZSBzZW0sCisJCQkgaW50ICpzaGFyZWRfaGFuZGxlKTsKK2ludCBhbWRncHVfY3NfaW1wb3J0 X3NlbShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCisJCQkgIGludCBzaGFyZWRfaGFuZGxlLAor CQkJIGFtZGdwdV9zZW1faGFuZGxlICpzZW0pOworaW50IGFtZGdwdV9jc19kZXN0cm95X3NlbShh bWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCisJCQkgIGFtZGdwdV9zZW1faGFuZGxlIHNlbSk7CiAj ZW5kaWYgLyogI2lmZGVmIF9BTURHUFVfSF8gKi8KZGlmZiAtLWdpdCBhL2FtZGdwdS9hbWRncHVf Y3MuYyBiL2FtZGdwdS9hbWRncHVfY3MuYwppbmRleCBmYjViM2E4Li43MjgzMzI3IDEwMDY0NAot LS0gYS9hbWRncHUvYW1kZ3B1X2NzLmMKKysrIGIvYW1kZ3B1L2FtZGdwdV9jcy5jCkBAIC0xNzAs NyArMTcwLDggQEAgaW50IGFtZGdwdV9jc19xdWVyeV9yZXNldF9zdGF0ZShhbWRncHVfY29udGV4 dF9oYW5kbGUgY29udGV4dCwKICAqIFxzYSBhbWRncHVfY3Nfc3VibWl0KCkKICovCiBzdGF0aWMg aW50IGFtZGdwdV9jc19zdWJtaXRfb25lKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAot CQkJCXN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdCAqaWJzX3JlcXVlc3QpCisJCQkJc3RydWN0IGFt ZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKKwkJCQlzdHJ1Y3QgYW1kZ3B1X2NzX3JlcXVl c3Rfc2VtICpzZW1fcmVxdWVzdCkKIHsKIAl1bmlvbiBkcm1fYW1kZ3B1X2NzIGNzOwogCXVpbnQ2 NF90ICpjaHVua19hcnJheTsKQEAgLTE3OCw5ICsxNzksMTEgQEAgc3RhdGljIGludCBhbWRncHVf Y3Nfc3VibWl0X29uZShhbWRncHVfY29udGV4dF9oYW5kbGUgY29udGV4dCwKIAlzdHJ1Y3QgZHJt X2FtZGdwdV9jc19jaHVua19kYXRhICpjaHVua19kYXRhOwogCXN0cnVjdCBkcm1fYW1kZ3B1X2Nz X2NodW5rX2RlcCAqZGVwZW5kZW5jaWVzID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19j aHVua19kZXAgKnNlbV9kZXBlbmRlbmNpZXMgPSBOVUxMOworCXN0cnVjdCBkcm1fYW1kZ3B1X2Nz X2NodW5rX3NlbSAqd2FpdF9zZW1fZGVwZW5kZW5jaWVzID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2Ft ZGdwdV9jc19jaHVua19zZW0gKnNpZ25hbF9zZW1fZGVwZW5kZW5jaWVzID0gTlVMTDsKIAlzdHJ1 Y3QgbGlzdF9oZWFkICpzZW1fbGlzdDsKIAlhbWRncHVfc2VtYXBob3JlX2hhbmRsZSBzZW0sIHRt cDsKLQl1aW50MzJfdCBpLCBzaXplLCBzZW1fY291bnQgPSAwOworCXVpbnQzMl90IGksIGosIHNp emUsIHNlbV9jb3VudCA9IDA7CiAJYm9vbCB1c2VyX2ZlbmNlOwogCWludCByID0gMDsKIApAQCAt MTk2LDcgKzE5OSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3N1Ym1pdF9vbmUoYW1kZ3B1X2Nv bnRleHRfaGFuZGxlIGNvbnRleHQsCiAJfQogCXVzZXJfZmVuY2UgPSAoaWJzX3JlcXVlc3QtPmZl bmNlX2luZm8uaGFuZGxlICE9IE5VTEwpOwogCi0Jc2l6ZSA9IGlic19yZXF1ZXN0LT5udW1iZXJf b2ZfaWJzICsgKHVzZXJfZmVuY2UgPyAyIDogMSkgKyAxOworCXNpemUgPSBpYnNfcmVxdWVzdC0+ bnVtYmVyX29mX2licyArICh1c2VyX2ZlbmNlID8gMiA6IDEpICsgMSArIChzZW1fcmVxdWVzdCA/ IDIgOiAwKTsKIAogCWNodW5rX2FycmF5ID0gYWxsb2NhKHNpemVvZih1aW50NjRfdCkgKiBzaXpl KTsKIAljaHVua3MgPSBhbGxvY2Eoc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rKSAq IHNpemUpOwpAQCAtMzA4LDYgKzMxMSw0NSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXRf b25lKGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAogCQljaHVua3NbaV0uY2h1bmtfZGF0 YSA9ICh1aW50NjRfdCkodWludHB0cl90KXNlbV9kZXBlbmRlbmNpZXM7CiAJfQogCisJaWYgKHNl bV9yZXF1ZXN0KSB7CisJCWlmIChzZW1fcmVxdWVzdC0+bnVtYmVyX29mX3dhaXRfc2VtKSB7CisJ CQl3YWl0X3NlbV9kZXBlbmRlbmNpZXMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1 X2NzX2NodW5rX3NlbSkgKiBzZW1fcmVxdWVzdC0+bnVtYmVyX29mX3dhaXRfc2VtKTsKKwkJCWlm ICghd2FpdF9zZW1fZGVwZW5kZW5jaWVzKSB7CisJCQkJciA9IC1FTk9NRU07CisJCQkJZ290byBl cnJvcl91bmxvY2s7CisJCQl9CisJCQlmb3IgKGogPSAwOyBqIDwgc2VtX3JlcXVlc3QtPm51bWJl cl9vZl93YWl0X3NlbTsgaisrKSB7CisJCQkJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2Vt ICpkZXAgPSAmd2FpdF9zZW1fZGVwZW5kZW5jaWVzW2pdOworCQkJCWRlcC0+aGFuZGxlID0gc2Vt X3JlcXVlc3QtPndhaXRfc2Vtc1tqXTsKKwkJCX0KKwkJCWkgPSBjcy5pbi5udW1fY2h1bmtzKys7 CisKKwkJCS8qIGRlcGVuZGVuY2llcyBjaHVuayAqLworCQkJY2h1bmtfYXJyYXlbaV0gPSAodWlu dDY0X3QpKHVpbnRwdHJfdCkmY2h1bmtzW2ldOworCQkJY2h1bmtzW2ldLmNodW5rX2lkID0gQU1E R1BVX0NIVU5LX0lEX1NFTV9XQUlUOworCQkJY2h1bmtzW2ldLmxlbmd0aF9kdyA9IHNpemVvZihz dHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0pIC8gNCAqIHNlbV9yZXF1ZXN0LT5udW1iZXJf b2Zfd2FpdF9zZW07CisJCQljaHVua3NbaV0uY2h1bmtfZGF0YSA9ICh1aW50NjRfdCkodWludHB0 cl90KXdhaXRfc2VtX2RlcGVuZGVuY2llczsKKwkJfQorCQlpZiAoc2VtX3JlcXVlc3QtPm51bWJl cl9vZl9zaWduYWxfc2VtKSB7CisJCQlzaWduYWxfc2VtX2RlcGVuZGVuY2llcyA9IG1hbGxvYyhz aXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtKSAqIHNlbV9yZXF1ZXN0LT5udW1i ZXJfb2Zfc2lnbmFsX3NlbSk7CisJCQlpZiAoIXNpZ25hbF9zZW1fZGVwZW5kZW5jaWVzKSB7CisJ CQkJciA9IC1FTk9NRU07CisJCQkJZ290byBlcnJvcl91bmxvY2s7CisJCQl9CisJCQlmb3IgKGog PSAwOyBqIDwgc2VtX3JlcXVlc3QtPm51bWJlcl9vZl9zaWduYWxfc2VtOyBqKyspIHsKKwkJCQlz dHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0gKmRlcCA9ICZzaWduYWxfc2VtX2RlcGVuZGVu Y2llc1tqXTsKKwkJCQlkZXAtPmhhbmRsZSA9IHNlbV9yZXF1ZXN0LT5zaWduYWxfc2Vtc1tqXTsK KwkJCX0KKwkJCWkgPSBjcy5pbi5udW1fY2h1bmtzKys7CisKKwkJCS8qIGRlcGVuZGVuY2llcyBj aHVuayAqLworCQkJY2h1bmtfYXJyYXlbaV0gPSAodWludDY0X3QpKHVpbnRwdHJfdCkmY2h1bmtz W2ldOworCQkJY2h1bmtzW2ldLmNodW5rX2lkID0gQU1ER1BVX0NIVU5LX0lEX1NFTV9TSUdOQUw7 CisJCQljaHVua3NbaV0ubGVuZ3RoX2R3ID0gc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2No dW5rX3NlbSkgLyA0ICogc2VtX3JlcXVlc3QtPm51bWJlcl9vZl9zaWduYWxfc2VtOworCQkJY2h1 bmtzW2ldLmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRwdHJfdClzaWduYWxfc2VtX2RlcGVu ZGVuY2llczsKKwkJfQorCX0KKwogCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGNvbnRleHQtPmRl di0+ZmQsIERSTV9BTURHUFVfQ1MsCiAJCQkJJmNzLCBzaXplb2YoY3MpKTsKIAlpZiAocikKQEAg LTMxOSwxNyArMzYxLDIwIEBAIGVycm9yX3VubG9jazoKIAlwdGhyZWFkX211dGV4X3VubG9jaygm Y29udGV4dC0+c2VxdWVuY2VfbXV0ZXgpOwogCWZyZWUoZGVwZW5kZW5jaWVzKTsKIAlmcmVlKHNl bV9kZXBlbmRlbmNpZXMpOworCWZyZWUod2FpdF9zZW1fZGVwZW5kZW5jaWVzKTsKKwlmcmVlKHNp Z25hbF9zZW1fZGVwZW5kZW5jaWVzKTsKIAlyZXR1cm4gcjsKIH0KIAotaW50IGFtZGdwdV9jc19z dWJtaXQoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCi0JCSAgICAgdWludDY0X3QgZmxh Z3MsCi0JCSAgICAgc3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKLQkJICAg ICB1aW50MzJfdCBudW1iZXJfb2ZfcmVxdWVzdHMpCitpbnQgYW1kZ3B1X2NzX3N1Ym1pdF9zZW0o YW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQsCisJCQkgdWludDY0X3QgZmxhZ3MsCisJCQkg c3RydWN0IGFtZGdwdV9jc19yZXF1ZXN0ICppYnNfcmVxdWVzdCwKKwkJCSBzdHJ1Y3QgYW1kZ3B1 X2NzX3JlcXVlc3Rfc2VtICppYnNfc2VtLAorCQkJIHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0 cykKIHsKIAl1aW50MzJfdCBpOwogCWludCByOwotCisJYm9vbCBoYXNfc2VtcyA9IGlic19zZW0g PyB0cnVlIDogZmFsc2U7CiAJaWYgKE5VTEwgPT0gY29udGV4dCkKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJaWYgKE5VTEwgPT0gaWJzX3JlcXVlc3QpCkBAIC0zMzcsMTUgKzM4MiwyOCBAQCBpbnQgYW1k Z3B1X2NzX3N1Ym1pdChhbWRncHVfY29udGV4dF9oYW5kbGUgY29udGV4dCwKIAogCXIgPSAwOwog CWZvciAoaSA9IDA7IGkgPCBudW1iZXJfb2ZfcmVxdWVzdHM7IGkrKykgewotCQlyID0gYW1kZ3B1 X2NzX3N1Ym1pdF9vbmUoY29udGV4dCwgaWJzX3JlcXVlc3QpOworCQlyID0gYW1kZ3B1X2NzX3N1 Ym1pdF9vbmUoY29udGV4dCwgaWJzX3JlcXVlc3QsIGhhc19zZW1zID8gaWJzX3NlbSA6IE5VTEwp OwogCQlpZiAocikKIAkJCWJyZWFrOwogCQlpYnNfcmVxdWVzdCsrOworCQlpZiAoaGFzX3NlbXMp CisJCQlpYnNfc2VtKys7CiAJfQogCiAJcmV0dXJuIHI7CiB9CiAKK2ludCBhbWRncHVfY3Nfc3Vi bWl0KGFtZGdwdV9jb250ZXh0X2hhbmRsZSBjb250ZXh0LAorCQkgICAgIHVpbnQ2NF90IGZsYWdz LAorCQkgICAgIHN0cnVjdCBhbWRncHVfY3NfcmVxdWVzdCAqaWJzX3JlcXVlc3QsCisJCSAgICAg dWludDMyX3QgbnVtYmVyX29mX3JlcXVlc3RzKQoreworCXJldHVybiBhbWRncHVfY3Nfc3VibWl0 X3NlbShjb250ZXh0LCBmbGFncywKKwkJCQkgICAgaWJzX3JlcXVlc3QsIE5VTEwsCisJCQkJICAg IG51bWJlcl9vZl9yZXF1ZXN0cyk7Cit9CisKKwogLyoqCiAgKiBDYWxjdWxhdGUgYWJzb2x1dGUg dGltZW91dC4KICAqCkBAIC01NDIsMyArNjAwLDg4IEBAIGludCBhbWRncHVfY3NfZGVzdHJveV9z ZW1hcGhvcmUoYW1kZ3B1X3NlbWFwaG9yZV9oYW5kbGUgc2VtKQogewogCXJldHVybiBhbWRncHVf Y3NfdW5yZWZlcmVuY2Vfc2VtKHNlbSk7CiB9CisKKworaW50IGFtZGdwdV9jc19jcmVhdGVfc2Vt KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKKwkJCSBhbWRncHVfc2VtX2hhbmRsZSAqc2VtKQor eworCXVuaW9uIGRybV9hbWRncHVfc2VtIGFyZ3M7CisJaW50IHI7CisKKwlpZiAoTlVMTCA9PSBk ZXYpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ3JlYXRlIHRoZSBjb250ZXh0ICovCisJbWVt c2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOworCWFyZ3MuaW4ub3AgPSBBTURHUFVfU0VNX09Q X0NSRUFURV9TRU07CisJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZGV2LT5mZCwgRFJNX0FNREdQ VV9TRU0sICZhcmdzLCBzaXplb2YoYXJncykpOworCWlmIChyKQorCQlyZXR1cm4gcjsKKworCSpz ZW0gPSBhcmdzLm91dC5oYW5kbGU7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGFtZGdwdV9jc19l eHBvcnRfc2VtKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKKwkJCSAgYW1kZ3B1X3NlbV9oYW5k bGUgc2VtLAorCQkJICBpbnQgKnNoYXJlZF9oYW5kbGUpCit7CisJdW5pb24gZHJtX2FtZGdwdV9z ZW0gYXJnczsKKwlpbnQgcjsKKworCWlmIChOVUxMID09IGRldikKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwkvKiBDcmVhdGUgdGhlIGNvbnRleHQgKi8KKwltZW1zZXQoJmFyZ3MsIDAsIHNpemVvZihh cmdzKSk7CisJYXJncy5pbi5vcCA9IEFNREdQVV9TRU1fT1BfRVhQT1JUX1NFTTsKKwlhcmdzLmlu LmhhbmRsZSA9IHNlbTsKKwlyID0gZHJtQ29tbWFuZFdyaXRlUmVhZChkZXYtPmZkLCBEUk1fQU1E R1BVX1NFTSwgJmFyZ3MsIHNpemVvZihhcmdzKSk7CisJaWYgKHIpCisJCXJldHVybiByOworCSpz aGFyZWRfaGFuZGxlID0gYXJncy5vdXQuZmQ7CisJcmV0dXJuIDA7Cit9CisKK2ludCBhbWRncHVf Y3NfaW1wb3J0X3NlbShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCisJCQkgIGludCBzaGFyZWRf aGFuZGxlLAorCQkJICBhbWRncHVfc2VtX2hhbmRsZSAqc2VtKQoreworCXVuaW9uIGRybV9hbWRn cHVfc2VtIGFyZ3M7CisJaW50IHI7CisKKwlpZiAoTlVMTCA9PSBkZXYpCisJCXJldHVybiAtRUlO VkFMOworCisJLyogQ3JlYXRlIHRoZSBjb250ZXh0ICovCisJbWVtc2V0KCZhcmdzLCAwLCBzaXpl b2YoYXJncykpOworCWFyZ3MuaW4ub3AgPSBBTURHUFVfU0VNX09QX0lNUE9SVF9TRU07CisJYXJn cy5pbi5oYW5kbGUgPSBzaGFyZWRfaGFuZGxlOworCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGRl di0+ZmQsIERSTV9BTURHUFVfU0VNLCAmYXJncywgc2l6ZW9mKGFyZ3MpKTsKKwlpZiAocikKKwkJ cmV0dXJuIHI7CisJKnNlbSA9IGFyZ3Mub3V0LmhhbmRsZTsKKwlyZXR1cm4gMDsKK30KKworCitp bnQgYW1kZ3B1X2NzX2Rlc3Ryb3lfc2VtKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKKwkJCSAg YW1kZ3B1X3NlbV9oYW5kbGUgc2VtKQoreworCXVuaW9uIGRybV9hbWRncHVfc2VtIGFyZ3M7CisJ aW50IHI7CisKKwlpZiAoTlVMTCA9PSBkZXYpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ3Jl YXRlIHRoZSBjb250ZXh0ICovCisJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOworCWFy Z3MuaW4ub3AgPSBBTURHUFVfU0VNX09QX0RFU1RST1lfU0VNOworCWFyZ3MuaW4uaGFuZGxlID0g c2VtOworCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGRldi0+ZmQsIERSTV9BTURHUFVfU0VNLCAm YXJncywgc2l6ZW9mKGFyZ3MpKTsKKwlpZiAocikKKwkJcmV0dXJuIHI7CisKKwlyZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2FtZGdwdV9kcm0uaCBiL2luY2x1ZGUvZHJtL2Ft ZGdwdV9kcm0uaAppbmRleCBkOGYyNDk3Li5mYTBiZmUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9hbWRncHVfZHJtLmgKKysrIGIvaW5jbHVkZS9kcm0vYW1kZ3B1X2RybS5oCkBAIC01MCw2ICs1 MCw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fQU1ER1BVX1dBSVRfQ1MJCTB4MDkKICNk ZWZpbmUgRFJNX0FNREdQVV9HRU1fT1AJCTB4MTAKICNkZWZpbmUgRFJNX0FNREdQVV9HRU1fVVNF UlBUUgkJMHgxMQorI2RlZmluZSBEUk1fQU1ER1BVX1NFTSAgICAgICAgICAgICAgICAgIDB4MTMK IAogI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9DUkVBVEUJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9BTURHUFVfR0VNX0NSRUFURSwgdW5pb24gZHJtX2FtZGdwdV9nZW1fY3Jl YXRlKQogI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9NTUFQCURSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fQU1ER1BVX0dFTV9NTUFQLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9tbWFw KQpAQCAtNjMsNiArNjQsNyBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQ VV9XQUlUX0NTCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX1dBSVRfQ1Ms IHVuaW9uIGRybV9hbWRncHVfd2FpdF9jcykKICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9HRU1f T1AJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX0dFTV9PUCwgc3RydWN0 IGRybV9hbWRncHVfZ2VtX29wKQogI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9VU0VSUFRS CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX0dFTV9VU0VSUFRSLCBzdHJ1 Y3QgZHJtX2FtZGdwdV9nZW1fdXNlcnB0cikKKyNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9TRU0J CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX1NFTSwgdW5pb24gZHJtX2Ft ZGdwdV9zZW0pCiAKICNkZWZpbmUgQU1ER1BVX0dFTV9ET01BSU5fQ1BVCQkweDEKICNkZWZpbmUg QU1ER1BVX0dFTV9ET01BSU5fR1RUCQkweDIKQEAgLTMwMyw2ICszMDUsMjYgQEAgdW5pb24gZHJt X2FtZGdwdV93YWl0X2NzIHsKIAlzdHJ1Y3QgZHJtX2FtZGdwdV93YWl0X2NzX291dCBvdXQ7CiB9 OwogCisjZGVmaW5lIEFNREdQVV9TRU1fT1BfQ1JFQVRFX1NFTSAwCisjZGVmaW5lIEFNREdQVV9T RU1fT1BfSU1QT1JUX1NFTSAxCisjZGVmaW5lIEFNREdQVV9TRU1fT1BfRVhQT1JUX1NFTSAyCisj ZGVmaW5lIEFNREdQVV9TRU1fT1BfREVTVFJPWV9TRU0gMworCitzdHJ1Y3QgZHJtX2FtZGdwdV9z ZW1faW4geworCV9fdTMyIG9wOworCV9fdTMyIGhhbmRsZTsKK307CisKK3N0cnVjdCBkcm1fYW1k Z3B1X3NlbV9vdXQgeworCV9fdTMyIGZkOworCV9fdTMyIGhhbmRsZTsKK307CisKK3VuaW9uIGRy bV9hbWRncHVfc2VtIHsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9zZW1faW4gaW47CisJc3RydWN0IGRy bV9hbWRncHVfc2VtX291dCBvdXQ7Cit9OworCiAjZGVmaW5lIEFNREdQVV9HRU1fT1BfR0VUX0dF TV9DUkVBVEVfSU5GTwkwCiAjZGVmaW5lIEFNREdQVV9HRU1fT1BfU0VUX1BMQUNFTUVOVAkJMQog CkBAIC0zNTgsNiArMzgwLDggQEAgc3RydWN0IGRybV9hbWRncHVfZ2VtX3ZhIHsKICNkZWZpbmUg QU1ER1BVX0NIVU5LX0lEX0lCCQkweDAxCiAjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9GRU5DRQkJ MHgwMgogI2RlZmluZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVTCTB4MDMKKyNkZWZpbmUg QU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUICAgICAgICAweDA0CisjZGVmaW5lIEFNREdQVV9DSFVO S19JRF9TRU1fU0lHTkFMICAgICAgMHgwNQogCiBzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVuayB7 CiAJdWludDMyX3QJCWNodW5rX2lkOwpAQCAtNDIyLDYgKzQ0NiwxMCBAQCBzdHJ1Y3QgZHJtX2Ft ZGdwdV9jc19jaHVua19mZW5jZSB7CiAJdWludDMyX3Qgb2Zmc2V0OwogfTsKIAorc3RydWN0IGRy bV9hbWRncHVfY3NfY2h1bmtfc2VtIHsKKwl1aW50MzJfdCBoYW5kbGU7Cit9OworCiBzdHJ1Y3Qg ZHJtX2FtZGdwdV9jc19jaHVua19kYXRhIHsKIAl1bmlvbiB7CiAJCXN0cnVjdCBkcm1fYW1kZ3B1 X2NzX2NodW5rX2liCQlpYl9kYXRhOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=