From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 4/4] amdgpu: use sync file for shared semaphores Date: Tue, 14 Mar 2017 10:50:54 +1000 Message-ID: <20170314005054.7487-6-airlied@gmail.com> References: <20170314005054.7487-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170314005054.7487-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgY3JlYXRlcyBhIG5l dyBpbnRlcmZhY2UgZm9yIGFtZGdwdSB3aXRoIGlvY3RscyB0bwpjcmVhdGUvZGVzdHJveS9pbXBv cnQgYW5kIGV4cG9ydCBzaGFyZWQgc2VtYXBob3JlcyB1c2luZwpzZW0gb2JqZWN0IGJhY2tlZCBi eSB0aGUgc3luY19maWxlIGNvZGUuIFRoZSBzZW1hcGhvcmVzCmFyZSBub3QgaW5zdGFsbGVkIGFz IGZkIChleGNlcHQgZm9yIGV4cG9ydCksIGJ1dCByYXRoZXIKbGlrZSBvdGhlciBkcml2ZXIgaW50 ZXJuYWwgb2JqZWN0cyBpbiBhbiBpZHIuIFRoZSBpZHIKaG9sZHMgdGhlIGluaXRpYWwgcmVmZXJl bmNlIG9uIHRoZSBzeW5jIGZpbGUuCgpUaGUgY29tbWFuZCBzdWJtaXNzaW9uIGludGVyZmFjZSBp cyBlbmhhbmNlZCB3aXRoIHR3byBuZXcKY2h1bmtzLCBvbmUgZm9yIHNlbWFwaG9yZSB3YWl0aW5n LCBvbmUgZm9yIHNlbWFwaG9yZSBzaWduYWxsaW5nCmFuZCBqdXN0IHRha2VzIGEgbGlzdCBvZiBo YW5kbGVzIGZvciBlYWNoLgoKVGhpcyBpcyBiYXNlZCBvbiB3b3JrIG9yaWdpbmFsbHkgZG9uZSBi eSBEYXZpZCBaaG91IGF0IEFNRCwKd2l0aCBpbnB1dCBmcm9tIENocmlzdGlhbiBLb25pZyBvbiB3 aGF0IHRoaW5ncyBzaG91bGQgbG9vayBsaWtlLgoKTk9URTogdGhpcyBpbnRlcmZhY2UgYWRkaXRp b24gbmVlZHMgYSB2ZXJzaW9uIGJ1bXAgdG8gZXhwb3NlCml0IHRvIHVzZXJzcGFjZS4KClNpZ25l ZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jICB8ICA3MCArKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2ttcy5jIHwgICA4ICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfc2VtLmMgfCAyMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1 ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oICAgICAgICAgICB8ICAyOCArKysrKwogNiBmaWxlcyBj aGFuZ2VkLCAzMjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2VtLmMKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L01ha2VmaWxlCmluZGV4IDI4MTRhYWQuLjQwNGJjYmEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L01ha2VmaWxlCkBAIC0yNCw3ICsyNCw3IEBAIGFtZGdwdS15ICs9IGFtZGdwdV9k ZXZpY2UubyBhbWRncHVfa21zLm8gXAogCWF0b21iaW9zX2VuY29kZXJzLm8gYW1kZ3B1X3NhLm8g YXRvbWJpb3NfaTJjLm8gXAogCWFtZGdwdV9wcmltZS5vIGFtZGdwdV92bS5vIGFtZGdwdV9pYi5v IGFtZGdwdV9wbGwubyBcCiAJYW1kZ3B1X3Vjb2RlLm8gYW1kZ3B1X2JvX2xpc3QubyBhbWRncHVf Y3R4Lm8gYW1kZ3B1X3N5bmMubyBcCi0JYW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3Iu byBhbWRncHVfdmlydC5vCisJYW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRn cHVfdmlydC5vIGFtZGdwdV9zZW0ubwogCiAjIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrCiBhbWRn cHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lrLm8gY2lrX2loLm8ga3Zfc21jLm8ga3Zf ZHBtLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAppbmRleCBjMWI5MTM1Li40ZWQ4 ODExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaApAQCAtNzAyLDYgKzcwMiw4IEBA IHN0cnVjdCBhbWRncHVfZnByaXYgewogCXN0cnVjdCBtdXRleAkJYm9fbGlzdF9sb2NrOwogCXN0 cnVjdCBpZHIJCWJvX2xpc3RfaGFuZGxlczsKIAlzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IJY3R4X21n cjsKKwlzcGlubG9ja190CQlzZW1faGFuZGxlc19sb2NrOworCXN0cnVjdCBpZHIJCXNlbV9oYW5k bGVzOwogfTsKIAogLyoKQEAgLTE4MTQsNSArMTgxNiwxNSBAQCBhbWRncHVfY3NfZmluZF9tYXBw aW5nKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIsCiAJCSAgICAgICB1aW50NjRfdCBh ZGRyLCBzdHJ1Y3QgYW1kZ3B1X2JvICoqYm8pOwogaW50IGFtZGdwdV9jc19zeXN2bV9hY2Nlc3Nf cmVxdWlyZWQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlcik7CiAKK2ludCBhbWRncHVf c2VtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgc3Ry dWN0IGRybV9maWxlICpmaWxwKTsKK3ZvaWQgYW1kZ3B1X3NlbV9kZXN0cm95KHN0cnVjdCBhbWRn cHVfZnByaXYgKmZwcml2LCB1MzIgaGFuZGxlKTsKK2ludCBhbWRncHVfc2VtX2xvb2t1cF9hbmRf c2lnbmFsKHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LAorCQkJCSB1aW50MzJfdCBoYW5kbGUs CisJCQkJIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKK2ludCBhbWRncHVfc2VtX2xvb2t1cF9h bmRfc3luYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgICAgICBzdHJ1Y3QgYW1k Z3B1X2Zwcml2ICpmcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3N5bmMgKnN5bmMsCisJ CQkgICAgICAgdWludDMyX3QgaGFuZGxlKTsKICNpbmNsdWRlICJhbWRncHVfb2JqZWN0LmgiCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKaW5kZXggNDY3MTQzMi4u ODBmYzk0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKQEAgLTIxNyw2 ICsyMTcsOCBAQCBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9pbml0KHN0cnVjdCBhbWRncHVfY3NfcGFy c2VyICpwLCB2b2lkICpkYXRhKQogCQkJYnJlYWs7CiAKIAkJY2FzZSBBTURHUFVfQ0hVTktfSURf REVQRU5ERU5DSUVTOgorCQljYXNlIEFNREdQVV9DSFVOS19JRF9TRU1fV0FJVDoKKwkJY2FzZSBB TURHUFVfQ0hVTktfSURfU0VNX1NJR05BTDoKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6CkBAIC0x MDA5LDYgKzEwMTEsMjggQEAgc3RhdGljIGludCBhbWRncHVfcHJvY2Vzc19mZW5jZV9kZXAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYW1k Z3B1X3Byb2Nlc3Nfc2VtX3dhaXRfZGVwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJ CSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKKwkJCQkgICAgICAgc3RydWN0IGFt ZGdwdV9jc19jaHVuayAqY2h1bmspCit7CisJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBw LT5maWxwLT5kcml2ZXJfcHJpdjsKKwl1bnNpZ25lZCBudW1fZGVwczsKKwlpbnQgaSwgcjsKKwlz dHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0gKmRlcHM7CisKKwlkZXBzID0gKHN0cnVjdCBk cm1fYW1kZ3B1X2NzX2NodW5rX3NlbSAqKWNodW5rLT5rZGF0YTsKKwludW1fZGVwcyA9IGNodW5r LT5sZW5ndGhfZHcgKiA0IC8KKwkJc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3Nl bSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2RlcHM7ICsraSkgeworCQlyID0gYW1kZ3B1X3Nl bV9sb29rdXBfYW5kX3N5bmMoYWRldiwgZnByaXYsICZwLT5qb2ItPnN5bmMsCisJCQkJCSAgICAg ICBkZXBzW2ldLmhhbmRsZSk7CisJCWlmIChyKQorCQkJcmV0dXJuIHI7CisJfQorCXJldHVybiAw OworfQorCiBzdGF0aWMgaW50IGFtZGdwdV9jc19kZXBlbmRlbmNpZXMoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJCQkJICBzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCkKIHsKQEAgLTEw MjMsMTIgKzEwNDcsNTYgQEAgc3RhdGljIGludCBhbWRncHVfY3NfZGVwZW5kZW5jaWVzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJciA9IGFtZGdwdV9wcm9jZXNzX2ZlbmNlX2RlcChh ZGV2LCBwLCBjaHVuayk7CiAJCQlpZiAocikKIAkJCQlyZXR1cm4gcjsKKwkJfSBlbHNlIGlmIChj aHVuay0+Y2h1bmtfaWQgPT0gQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUKSB7CisJCQlyID0gYW1k Z3B1X3Byb2Nlc3Nfc2VtX3dhaXRfZGVwKGFkZXYsIHAsIGNodW5rKTsKKwkJCWlmIChyKQorCQkJ CXJldHVybiByOwogCQl9CiAJfQogCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYW1kZ3B1 X3Byb2Nlc3Nfc2VtX3NpZ25hbF9kZXAoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCisJCQkJ CSBzdHJ1Y3QgYW1kZ3B1X2NzX2NodW5rICpjaHVuaywKKwkJCQkJIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gcC0+ZmlscC0+ZHJpdmVy X3ByaXY7CisJdW5zaWduZWQgbnVtX2RlcHM7CisJaW50IGksIHI7CisJc3RydWN0IGRybV9hbWRn cHVfY3NfY2h1bmtfc2VtICpkZXBzOworCisJZGVwcyA9IChzdHJ1Y3QgZHJtX2FtZGdwdV9jc19j aHVua19zZW0gKiljaHVuay0+a2RhdGE7CisJbnVtX2RlcHMgPSBjaHVuay0+bGVuZ3RoX2R3ICog NCAvCisJCXNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0pOworCisJZm9yIChp ID0gMDsgaSA8IG51bV9kZXBzOyArK2kpIHsKKwkJciA9IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9z aWduYWwoZnByaXYsIGRlcHNbaV0uaGFuZGxlLAorCQkJCQkJIGZlbmNlKTsKKwkJaWYgKHIpCisJ CQlyZXR1cm4gcjsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2NzX3Bv c3RfZGVwZW5kZW5jaWVzKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwKQoreworCWludCBpLCBy OworCisJZm9yIChpID0gMDsgaSA8IHAtPm5jaHVua3M7ICsraSkgeworCQlzdHJ1Y3QgYW1kZ3B1 X2NzX2NodW5rICpjaHVuazsKKworCQljaHVuayA9ICZwLT5jaHVua3NbaV07CisKKwkJaWYgKGNo dW5rLT5jaHVua19pZCA9PSBBTURHUFVfQ0hVTktfSURfU0VNX1NJR05BTCkgeworCQkJciA9IGFt ZGdwdV9wcm9jZXNzX3NlbV9zaWduYWxfZGVwKHAsIGNodW5rLCBwLT5mZW5jZSk7CisJCQlpZiAo cikKKwkJCQlyZXR1cm4gcjsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBh bWRncHVfY3Nfc3VibWl0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAogCQkJICAgIHVuaW9u IGRybV9hbWRncHVfY3MgKmNzKQogewpAQCAtMTA1Niw3ICsxMTI0LDcgQEAgc3RhdGljIGludCBh bWRncHVfY3Nfc3VibWl0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAogCXRyYWNlX2FtZGdw dV9jc19pb2N0bChqb2IpOwogCWFtZF9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoJmpvYi0+YmFzZSk7 CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gYW1kZ3B1X2NzX3Bvc3RfZGVwZW5kZW5jaWVzKHApOwog fQogCiBpbnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9rbXMuYwppbmRleCA2MWQ5NGM3Li4wMTNhZWQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2ttcy5jCkBAIC02NjQsNiArNjY0LDggQEAgaW50IGFtZGdwdV9kcml2ZXJfb3Bl bl9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp CiAJbXV0ZXhfaW5pdCgmZnByaXYtPmJvX2xpc3RfbG9jayk7CiAJaWRyX2luaXQoJmZwcml2LT5i b19saXN0X2hhbmRsZXMpOwogCisJc3Bpbl9sb2NrX2luaXQoJmZwcml2LT5zZW1faGFuZGxlc19s b2NrKTsKKwlpZHJfaW5pdCgmZnByaXYtPnNlbV9oYW5kbGVzKTsKIAlhbWRncHVfY3R4X21ncl9p bml0KCZmcHJpdi0+Y3R4X21ncik7CiAKIAlmaWxlX3ByaXYtPmRyaXZlcl9wcml2ID0gZnByaXY7 CkBAIC02ODksNiArNjkxLDcgQEAgdm9pZCBhbWRncHVfZHJpdmVyX3Bvc3RjbG9zZV9rbXMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBmaWxlX3ByaXYtPmRy aXZlcl9wcml2OwogCXN0cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdDsKKwlzdHJ1Y3QgYW1kZ3B1 X3NlbSAqc2VtOwogCWludCBoYW5kbGU7CiAKIAlpZiAoIWZwcml2KQpAQCAtNzE1LDYgKzcxOCwx MCBAQCB2b2lkIGFtZGdwdV9kcml2ZXJfcG9zdGNsb3NlX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCWlkcl9kZXN0cm95KCZmcHJpdi0+Ym9fbGlzdF9oYW5kbGVzKTsKIAltdXRleF9kZXN0 cm95KCZmcHJpdi0+Ym9fbGlzdF9sb2NrKTsKIAorCWlkcl9mb3JfZWFjaF9lbnRyeSgmZnByaXYt PnNlbV9oYW5kbGVzLCBzZW0sIGhhbmRsZSkKKwkJYW1kZ3B1X3NlbV9kZXN0cm95KGZwcml2LCBo YW5kbGUpOworCWlkcl9kZXN0cm95KCZmcHJpdi0+c2VtX2hhbmRsZXMpOworCiAJa2ZyZWUoZnBy aXYpOwogCWZpbGVfcHJpdi0+ZHJpdmVyX3ByaXYgPSBOVUxMOwogCkBAIC04OTYsNiArOTAzLDcg QEAgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGFtZGdwdV9pb2N0bHNfa21zW10gPSB7CiAJ RFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9WQSwgYW1kZ3B1X2dlbV92YV9pb2N0bCwgRFJN X0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9P UCwgYW1kZ3B1X2dlbV9vcF9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCiAJRFJN X0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9VU0VSUFRSLCBhbWRncHVfZ2VtX3VzZXJwdHJfaW9j dGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEFNREdQ VV9TRU0sIGFtZGdwdV9zZW1faW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAogfTsK IGNvbnN0IGludCBhbWRncHVfbWF4X2ttc19pb2N0bCA9IEFSUkFZX1NJWkUoYW1kZ3B1X2lvY3Rs c19rbXMpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf c2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2VtLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2NTIwYQotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zZW0uYwpAQCAtMCwwICsxLDIwNCBAQAor LyoKKyAqIENvcHlyaWdodCAyMDE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpo b3VAYW1kLmNvbT4KKyAqLworI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51 eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3BvbGwu aD4KKyNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5o PgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2lu Y2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgor I2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgorI2luY2x1ZGUgImFtZGdwdS5oIgorI2luY2x1 ZGUgPGRybS9kcm1QLmg+CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHN5bmNfZmlsZSAqYW1kZ3B1 X3N5bmNfZmlsZV9sb29rdXAoc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsIHUzMiBoYW5kbGUp Cit7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOworCisJc3Bpbl9sb2NrKCZmcHJpdi0+ c2VtX2hhbmRsZXNfbG9jayk7CisKKwkvKiBDaGVjayBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBhIHJl ZmVyZW5jZSBvbiB0aGUgb2JqZWN0ICovCisJc3luY19maWxlID0gaWRyX2ZpbmQoJmZwcml2LT5z ZW1faGFuZGxlcywgaGFuZGxlKTsKKworCXNwaW5fdW5sb2NrKCZmcHJpdi0+c2VtX2hhbmRsZXNf bG9jayk7CisKKwlyZXR1cm4gc3luY19maWxlOworfQorCitzdGF0aWMgaW50IGFtZGdwdV9zZW1f Y3JlYXRlKHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LCB1MzIgKmhhbmRsZSkKK3sKKwlzdHJ1 Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfYWxsb2MoKTsKKwlpbnQgcmV0Owor CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybiAtRU5PTUVNOworCisJc25wcmludGYoc3luY19m aWxlLT5uYW1lLCBzaXplb2Yoc3luY19maWxlLT5uYW1lKSwgInN5bmNfc2VtIik7CisKKwkvKiB3 ZSBnZXQgYSBmaWxlIHJlZmVyZW5jZSBhbmQgd2UgdXNlIHRoYXQgaW4gdGhlIGlkci4gKi8KKwlp ZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKKwlzcGluX2xvY2soJmZwcml2LT5zZW1faGFuZGxlc19s b2NrKTsKKworCXJldCA9IGlkcl9hbGxvYygmZnByaXYtPnNlbV9oYW5kbGVzLCBzeW5jX2ZpbGUs IDEsIDAsIEdGUF9OT1dBSVQpOworCisJc3Bpbl91bmxvY2soJmZwcml2LT5zZW1faGFuZGxlc19s b2NrKTsKKwlpZHJfcHJlbG9hZF9lbmQoKTsKKworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0 OworCisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBhbWRncHVfc2VtX2Rl c3Ryb3koc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsIHUzMiBoYW5kbGUpCit7CisJc3RydWN0 IHN5bmNfZmlsZSAqc3luY19maWxlID0gYW1kZ3B1X3N5bmNfZmlsZV9sb29rdXAoZnByaXYsIGhh bmRsZSk7CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmZnByaXYt PnNlbV9oYW5kbGVzX2xvY2spOworCWlkcl9yZW1vdmUoJmZwcml2LT5zZW1faGFuZGxlcywgaGFu ZGxlKTsKKwlzcGluX3VubG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCisJZnB1dChz eW5jX2ZpbGUtPmZpbGUpOworfQorCisKK2ludCBhbWRncHVfc2VtX2xvb2t1cF9hbmRfc2lnbmFs KHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LAorCQkJCSB1aW50MzJfdCBoYW5kbGUsCisJCQkJ IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmls ZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGRfZmVuY2U7CisJc3luY19maWxlID0gYW1kZ3B1X3N5 bmNfZmlsZV9sb29rdXAoZnByaXYsIGhhbmRsZSk7CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVy biAtRUlOVkFMOworCisJb2xkX2ZlbmNlID0gc3luY19maWxlX3JlcGxhY2VfZmVuY2Uoc3luY19m aWxlLCBmZW5jZSk7CisJZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGFtZGdwdV9zZW1faW1wb3J0KHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2 LAorCQkJCSAgICAgICBpbnQgZmQsIHUzMiAqaGFuZGxlKQoreworCXN0cnVjdCBzeW5jX2ZpbGUg KnN5bmNfZmlsZSA9IHN5bmNfZmlsZV9mZGdldChmZCk7CisJaW50IHJldDsKKworCWlmICghc3lu Y19maWxlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlkcl9wcmVsb2FkKEdGUF9LRVJORUwpOwor CXNwaW5fbG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCisJcmV0ID0gaWRyX2FsbG9j KCZmcHJpdi0+c2VtX2hhbmRsZXMsIHN5bmNfZmlsZSwgMSwgMCwgR0ZQX05PV0FJVCk7CisKKwlz cGluX3VubG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCWlkcl9wcmVsb2FkX2VuZCgp OworCisJZnB1dChzeW5jX2ZpbGUtPmZpbGUpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9v dXQ7CisKKwkqaGFuZGxlID0gcmV0OworCXJldHVybiAwOworZXJyX291dDoKKwlyZXR1cm4gcmV0 OworCit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3NlbV9leHBvcnQoc3RydWN0IGFtZGdwdV9mcHJp diAqZnByaXYsCisJCQkgICAgIHUzMiBoYW5kbGUsIGludCAqZmQpCit7CisJc3RydWN0IHN5bmNf ZmlsZSAqc3luY19maWxlOworCWludCByZXQ7CisKKwlzeW5jX2ZpbGUgPSBhbWRncHVfc3luY19m aWxlX2xvb2t1cChmcHJpdiwgaGFuZGxlKTsKKwlpZiAoIXN5bmNfZmlsZSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7CisJaWYgKHJl dCA8IDApCisJCWdvdG8gZXJyX3B1dF9maWxlOworCisJZmRfaW5zdGFsbChyZXQsIHN5bmNfZmls ZS0+ZmlsZSk7CisKKwkqZmQgPSByZXQ7CisJcmV0dXJuIDA7CitlcnJfcHV0X2ZpbGU6CisJcmV0 dXJuIHJldDsKK30KKworaW50IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9zeW5jKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgIHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LAor CQkJICAgICAgIHN0cnVjdCBhbWRncHVfc3luYyAqc3luYywKKwkJCSAgICAgICB1aW50MzJfdCBo YW5kbGUpCit7CisJaW50IHI7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOworCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOworCisJc3luY19maWxlID0gYW1kZ3B1X3N5bmNfZmlsZV9sb29r dXAoZnByaXYsIGhhbmRsZSk7CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybiAtRUlOVkFMOwor CisJZmVuY2UgPSBzeW5jX2ZpbGVfcmVwbGFjZV9mZW5jZShzeW5jX2ZpbGUsIE5VTEwpOworCXIg PSBhbWRncHVfc3luY19mZW5jZShhZGV2LCBzeW5jLCBmZW5jZSk7CisJZG1hX2ZlbmNlX3B1dChm ZW5jZSk7CisKKwlyZXR1cm4gcjsKK30KKworaW50IGFtZGdwdV9zZW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAp Cit7CisJdW5pb24gZHJtX2FtZGdwdV9zZW0gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBhbWRncHVf ZnByaXYgKmZwcml2ID0gZmlscC0+ZHJpdmVyX3ByaXY7CisJaW50IHIgPSAwOworCisJc3dpdGNo IChhcmdzLT5pbi5vcCkgeworCWNhc2UgQU1ER1BVX1NFTV9PUF9DUkVBVEVfU0VNOgorCQlyID0g YW1kZ3B1X3NlbV9jcmVhdGUoZnByaXYsICZhcmdzLT5vdXQuaGFuZGxlKTsKKwkJYnJlYWs7CisJ Y2FzZSBBTURHUFVfU0VNX09QX0lNUE9SVF9TRU06CisJCXIgPSBhbWRncHVfc2VtX2ltcG9ydChm cHJpdiwgYXJncy0+aW4uaGFuZGxlLCAmYXJncy0+b3V0LmhhbmRsZSk7CisJCWJyZWFrOworCWNh c2UgQU1ER1BVX1NFTV9PUF9FWFBPUlRfU0VNOgorCQlyID0gYW1kZ3B1X3NlbV9leHBvcnQoZnBy aXYsIGFyZ3MtPmluLmhhbmRsZSwgJmFyZ3MtPm91dC5mZCk7CisJCWJyZWFrOworCWNhc2UgQU1E R1BVX1NFTV9PUF9ERVNUUk9ZX1NFTToKKwkJYW1kZ3B1X3NlbV9kZXN0cm95KGZwcml2LCBhcmdz LT5pbi5oYW5kbGUpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyID0gLUVJTlZBTDsKKwkJYnJl YWs7CisJfQorCisJcmV0dXJuIHI7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2Ft ZGdwdV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCmluZGV4IDU3OTcyODMu LjY0NmIxMDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCkBAIC01MSw2ICs1MSw3IEBAIGV4dGVybiAi QyIgewogI2RlZmluZSBEUk1fQU1ER1BVX0dFTV9PUAkJMHgxMAogI2RlZmluZSBEUk1fQU1ER1BV X0dFTV9VU0VSUFRSCQkweDExCiAjZGVmaW5lIERSTV9BTURHUFVfV0FJVF9GRU5DRVMJCTB4MTIK KyNkZWZpbmUgRFJNX0FNREdQVV9TRU0gICAgICAgICAgICAgICAgICAweDEzCiAKICNkZWZpbmUg RFJNX0lPQ1RMX0FNREdQVV9HRU1fQ1JFQVRFCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fQU1ER1BVX0dFTV9DUkVBVEUsIHVuaW9uIGRybV9hbWRncHVfZ2VtX2NyZWF0ZSkKICNkZWZp bmUgRFJNX0lPQ1RMX0FNREdQVV9HRU1fTU1BUAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0FNREdQVV9HRU1fTU1BUCwgdW5pb24gZHJtX2FtZGdwdV9nZW1fbW1hcCkKQEAgLTY1LDYg KzY2LDcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX09QCQlE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9HRU1fT1AsIHN0cnVjdCBkcm1f YW1kZ3B1X2dlbV9vcCkKICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9HRU1fVVNFUlBUUglEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9HRU1fVVNFUlBUUiwgc3RydWN0IGRy bV9hbWRncHVfZ2VtX3VzZXJwdHIpCiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfV0FJVF9GRU5D RVMJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfV0FJVF9GRU5DRVMsIHVu aW9uIGRybV9hbWRncHVfd2FpdF9mZW5jZXMpCisjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfU0VN CQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9TRU0sIHVuaW9uIGRybV9h bWRncHVfc2VtKQogCiAjZGVmaW5lIEFNREdQVV9HRU1fRE9NQUlOX0NQVQkJMHgxCiAjZGVmaW5l IEFNREdQVV9HRU1fRE9NQUlOX0dUVAkJMHgyCkBAIC0zMzUsNiArMzM3LDI2IEBAIHVuaW9uIGRy bV9hbWRncHVfd2FpdF9mZW5jZXMgewogCXN0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzX291 dCBvdXQ7CiB9OwogCisjZGVmaW5lIEFNREdQVV9TRU1fT1BfQ1JFQVRFX1NFTSAwCisjZGVmaW5l IEFNREdQVV9TRU1fT1BfSU1QT1JUX1NFTSAxCisjZGVmaW5lIEFNREdQVV9TRU1fT1BfRVhQT1JU X1NFTSAyCisjZGVmaW5lIEFNREdQVV9TRU1fT1BfREVTVFJPWV9TRU0gMworCitzdHJ1Y3QgZHJt X2FtZGdwdV9zZW1faW4geworCV9fdTMyIG9wOworCV9fdTMyIGhhbmRsZTsKK307CisKK3N0cnVj dCBkcm1fYW1kZ3B1X3NlbV9vdXQgeworCV9fdTMyIGZkOworCV9fdTMyIGhhbmRsZTsKK307CisK K3VuaW9uIGRybV9hbWRncHVfc2VtIHsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9zZW1faW4gaW47CisJ c3RydWN0IGRybV9hbWRncHVfc2VtX291dCBvdXQ7Cit9OworCiAjZGVmaW5lIEFNREdQVV9HRU1f T1BfR0VUX0dFTV9DUkVBVEVfSU5GTwkwCiAjZGVmaW5lIEFNREdQVV9HRU1fT1BfU0VUX1BMQUNF TUVOVAkJMQogCkBAIC0zOTAsNiArNDEyLDggQEAgc3RydWN0IGRybV9hbWRncHVfZ2VtX3ZhIHsK ICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX0lCCQkweDAxCiAjZGVmaW5lIEFNREdQVV9DSFVOS19J RF9GRU5DRQkJMHgwMgogI2RlZmluZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVTCTB4MDMK KyNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUICAgICAgICAweDA0CisjZGVmaW5lIEFN REdQVV9DSFVOS19JRF9TRU1fU0lHTkFMICAgICAgMHgwNQogCiBzdHJ1Y3QgZHJtX2FtZGdwdV9j c19jaHVuayB7CiAJX191MzIJCWNodW5rX2lkOwpAQCAtNDU0LDYgKzQ3OCwxMCBAQCBzdHJ1Y3Qg ZHJtX2FtZGdwdV9jc19jaHVua19mZW5jZSB7CiAJX191MzIgb2Zmc2V0OwogfTsKIAorc3RydWN0 IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtIHsKKwlfX3UzMiBoYW5kbGU7Cit9OworCiBzdHJ1Y3Qg ZHJtX2FtZGdwdV9jc19jaHVua19kYXRhIHsKIAl1bmlvbiB7CiAJCXN0cnVjdCBkcm1fYW1kZ3B1 X2NzX2NodW5rX2liCQlpYl9kYXRhOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vYW1kLWdmeAo=