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: Mon, 20 Mar 2017 17:03:07 +1000 Message-ID: <20170320070307.18344-5-airlied@gmail.com> References: <20170320070307.18344-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320070307.18344-1-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgY3JlYXRlcyBhIG5l dyBpbnRlcmZhY2UgZm9yIGFtZGdwdSB3aXRoIGlvY3RscyB0bwpjcmVhdGUvZGVzdHJveS9pbXBv cnQgYW5kIGV4cG9ydCBzaGFyZWQgc2VtYXBob3JlcyB1c2luZwpzZW0gb2JqZWN0IGJhY2tlZCBi eSB0aGUgc3luY19maWxlIGNvZGUuIFRoZSBzZW1hcGhvcmVzCmFyZSBub3QgaW5zdGFsbGVkIGFz IGZkIChleGNlcHQgZm9yIGV4cG9ydCksIGJ1dCByYXRoZXIKbGlrZSBvdGhlciBkcml2ZXIgaW50 ZXJuYWwgb2JqZWN0cyBpbiBhbiBpZHIuIFRoZSBpZHIKaG9sZHMgdGhlIGluaXRpYWwgcmVmZXJl bmNlIG9uIHRoZSBzeW5jIGZpbGUuCgpUaGUgY29tbWFuZCBzdWJtaXNzaW9uIGludGVyZmFjZSBp cyBlbmhhbmNlZCB3aXRoIHR3byBuZXcKY2h1bmtzLCBvbmUgZm9yIHNlbWFwaG9yZSB3YWl0aW5n LCBvbmUgZm9yIHNlbWFwaG9yZSBzaWduYWxsaW5nCmFuZCBqdXN0IHRha2VzIGEgbGlzdCBvZiBo YW5kbGVzIGZvciBlYWNoLgoKVGhpcyBpcyBiYXNlZCBvbiB3b3JrIG9yaWdpbmFsbHkgZG9uZSBi eSBEYXZpZCBaaG91IGF0IEFNRCwKd2l0aCBpbnB1dCBmcm9tIENocmlzdGlhbiBLb25pZyBvbiB3 aGF0IHRoaW5ncyBzaG91bGQgbG9vayBsaWtlLgoKTk9URTogdGhpcyBpbnRlcmZhY2UgYWRkaXRp b24gbmVlZHMgYSB2ZXJzaW9uIGJ1bXAgdG8gZXhwb3NlCml0IHRvIHVzZXJzcGFjZS4KCnYxLjE6 IGtlZXAgZmlsZSByZWZlcmVuY2Ugb24gaW1wb3J0LgoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJs aWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9N YWtlZmlsZSAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o ICAgICB8ICAxMiArKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgIHwg IDcwICsrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMg fCAgIDggKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zZW0uYyB8IDIwMyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2RybS9hbWRncHVf ZHJtLmggICAgICAgICAgIHwgIDI4ICsrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9zZW0uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUK aW5kZXggMjgxNGFhZC4uNDA0YmNiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUK QEAgLTI0LDcgKzI0LDcgQEAgYW1kZ3B1LXkgKz0gYW1kZ3B1X2RldmljZS5vIGFtZGdwdV9rbXMu byBcCiAJYXRvbWJpb3NfZW5jb2RlcnMubyBhbWRncHVfc2EubyBhdG9tYmlvc19pMmMubyBcCiAJ YW1kZ3B1X3ByaW1lLm8gYW1kZ3B1X3ZtLm8gYW1kZ3B1X2liLm8gYW1kZ3B1X3BsbC5vIFwKIAlh bWRncHVfdWNvZGUubyBhbWRncHVfYm9fbGlzdC5vIGFtZGdwdV9jdHgubyBhbWRncHVfc3luYy5v IFwKLQlhbWRncHVfZ3R0X21nci5vIGFtZGdwdV92cmFtX21nci5vIGFtZGdwdV92aXJ0Lm8KKwlh bWRncHVfZ3R0X21nci5vIGFtZGdwdV92cmFtX21nci5vIGFtZGdwdV92aXJ0Lm8gYW1kZ3B1X3Nl bS5vCiAKICMgYWRkIGFzaWMgc3BlY2lmaWMgYmxvY2sKIGFtZGdwdS0kKENPTkZJR19EUk1fQU1E R1BVX0NJSykrPSBjaWsubyBjaWtfaWgubyBrdl9zbWMubyBrdl9kcG0ubyBcCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oCmluZGV4IGMxYjkxMzUuLjRlZDg4MTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oCkBAIC03MDIsNiArNzAyLDggQEAgc3RydWN0IGFtZGdwdV9mcHJp diB7CiAJc3RydWN0IG11dGV4CQlib19saXN0X2xvY2s7CiAJc3RydWN0IGlkcgkJYm9fbGlzdF9o YW5kbGVzOwogCXN0cnVjdCBhbWRncHVfY3R4X21ncgljdHhfbWdyOworCXNwaW5sb2NrX3QJCXNl bV9oYW5kbGVzX2xvY2s7CisJc3RydWN0IGlkcgkJc2VtX2hhbmRsZXM7CiB9OwogCiAvKgpAQCAt MTgxNCw1ICsxODE2LDE1IEBAIGFtZGdwdV9jc19maW5kX21hcHBpbmcoc3RydWN0IGFtZGdwdV9j c19wYXJzZXIgKnBhcnNlciwKIAkJICAgICAgIHVpbnQ2NF90IGFkZHIsIHN0cnVjdCBhbWRncHVf Ym8gKipibyk7CiBpbnQgYW1kZ3B1X2NzX3N5c3ZtX2FjY2Vzc19yZXF1aXJlZChzdHJ1Y3QgYW1k Z3B1X2NzX3BhcnNlciAqcGFyc2VyKTsKIAoraW50IGFtZGdwdV9zZW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAp Owordm9pZCBhbWRncHVfc2VtX2Rlc3Ryb3koc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsIHUz MiBoYW5kbGUpOworaW50IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9zaWduYWwoc3RydWN0IGFtZGdw dV9mcHJpdiAqZnByaXYsCisJCQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkgc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2UpOworaW50IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9zeW5jKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgIHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2LAor CQkJICAgICAgIHN0cnVjdCBhbWRncHVfc3luYyAqc3luYywKKwkJCSAgICAgICB1aW50MzJfdCBo YW5kbGUpOwogI2luY2x1ZGUgImFtZGdwdV9vYmplY3QuaCIKICNlbmRpZgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfY3MuYwppbmRleCA0NjcxNDMyLi44MGZjOTRiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwpAQCAtMjE3LDYgKzIxNyw4IEBAIGludCBhbWRn cHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsIHZvaWQgKmRhdGEp CiAJCQlicmVhazsKIAogCQljYXNlIEFNREdQVV9DSFVOS19JRF9ERVBFTkRFTkNJRVM6CisJCWNh c2UgQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUOgorCQljYXNlIEFNREdQVV9DSFVOS19JRF9TRU1f U0lHTkFMOgogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKQEAgLTEwMDksNiArMTAxMSwyOCBAQCBz dGF0aWMgaW50IGFtZGdwdV9wcm9jZXNzX2ZlbmNlX2RlcChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBhbWRncHVfcHJvY2Vzc19zZW1fd2Fp dF9kZXAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkJICAgICAgIHN0cnVjdCBhbWRn cHVfY3NfcGFyc2VyICpwLAorCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2NzX2NodW5rICpjaHVu aykKK3sKKwlzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2 OworCXVuc2lnbmVkIG51bV9kZXBzOworCWludCBpLCByOworCXN0cnVjdCBkcm1fYW1kZ3B1X2Nz X2NodW5rX3NlbSAqZGVwczsKKworCWRlcHMgPSAoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtf c2VtICopY2h1bmstPmtkYXRhOworCW51bV9kZXBzID0gY2h1bmstPmxlbmd0aF9kdyAqIDQgLwor CQlzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtKTsKKworCWZvciAoaSA9IDA7 IGkgPCBudW1fZGVwczsgKytpKSB7CisJCXIgPSBhbWRncHVfc2VtX2xvb2t1cF9hbmRfc3luYyhh ZGV2LCBmcHJpdiwgJnAtPmpvYi0+c3luYywKKwkJCQkJICAgICAgIGRlcHNbaV0uaGFuZGxlKTsK KwkJaWYgKHIpCisJCQlyZXR1cm4gcjsKKwl9CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQg YW1kZ3B1X2NzX2RlcGVuZGVuY2llcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkg IHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwKQogewpAQCAtMTAyMywxMiArMTA0Nyw1NiBAQCBz dGF0aWMgaW50IGFtZGdwdV9jc19kZXBlbmRlbmNpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQlyID0gYW1kZ3B1X3Byb2Nlc3NfZmVuY2VfZGVwKGFkZXYsIHAsIGNodW5rKTsKIAkJ CWlmIChyKQogCQkJCXJldHVybiByOworCQl9IGVsc2UgaWYgKGNodW5rLT5jaHVua19pZCA9PSBB TURHUFVfQ0hVTktfSURfU0VNX1dBSVQpIHsKKwkJCXIgPSBhbWRncHVfcHJvY2Vzc19zZW1fd2Fp dF9kZXAoYWRldiwgcCwgY2h1bmspOworCQkJaWYgKHIpCisJCQkJcmV0dXJuIHI7CiAJCX0KIAl9 CiAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBhbWRncHVfcHJvY2Vzc19zZW1fc2lnbmFs X2RlcChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKKwkJCQkJIHN0cnVjdCBhbWRncHVfY3Nf Y2h1bmsgKmNodW5rLAorCQkJCQkgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0 IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBwLT5maWxwLT5kcml2ZXJfcHJpdjsKKwl1bnNpZ25lZCBu dW1fZGVwczsKKwlpbnQgaSwgcjsKKwlzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0gKmRl cHM7CisKKwlkZXBzID0gKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSAqKWNodW5rLT5r ZGF0YTsKKwludW1fZGVwcyA9IGNodW5rLT5sZW5ndGhfZHcgKiA0IC8KKwkJc2l6ZW9mKHN0cnVj dCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2RlcHM7 ICsraSkgeworCQlyID0gYW1kZ3B1X3NlbV9sb29rdXBfYW5kX3NpZ25hbChmcHJpdiwgZGVwc1tp XS5oYW5kbGUsCisJCQkJCQkgZmVuY2UpOworCQlpZiAocikKKwkJCXJldHVybiByOworCX0KKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfY3NfcG9zdF9kZXBlbmRlbmNpZXMoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnApCit7CisJaW50IGksIHI7CisKKwlmb3IgKGkgPSAwOyBp IDwgcC0+bmNodW5rczsgKytpKSB7CisJCXN0cnVjdCBhbWRncHVfY3NfY2h1bmsgKmNodW5rOwor CisJCWNodW5rID0gJnAtPmNodW5rc1tpXTsKKworCQlpZiAoY2h1bmstPmNodW5rX2lkID09IEFN REdQVV9DSFVOS19JRF9TRU1fU0lHTkFMKSB7CisJCQlyID0gYW1kZ3B1X3Byb2Nlc3Nfc2VtX3Np Z25hbF9kZXAocCwgY2h1bmssIHAtPmZlbmNlKTsKKwkJCWlmIChyKQorCQkJCXJldHVybiByOwor CQl9CisJfQorCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXQoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCiAJCQkgICAgdW5pb24gZHJtX2FtZGdwdV9jcyAqY3Mp CiB7CkBAIC0xMDU2LDcgKzExMjQsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19zdWJtaXQoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCiAJdHJhY2VfYW1kZ3B1X2NzX2lvY3RsKGpvYik7CiAJ YW1kX3NjaGVkX2VudGl0eV9wdXNoX2pvYigmam9iLT5iYXNlKTsKIAotCXJldHVybiAwOworCXJl dHVybiBhbWRncHVfY3NfcG9zdF9kZXBlbmRlbmNpZXMocCk7CiB9CiAKIGludCBhbWRncHVfY3Nf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2tt cy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCmluZGV4IDYxZDk0 YzcuLjAxM2FlZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKQEAg LTY2NCw2ICs2NjQsOCBAQCBpbnQgYW1kZ3B1X2RyaXZlcl9vcGVuX2ttcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKIAltdXRleF9pbml0KCZmcHJp di0+Ym9fbGlzdF9sb2NrKTsKIAlpZHJfaW5pdCgmZnByaXYtPmJvX2xpc3RfaGFuZGxlcyk7CiAK KwlzcGluX2xvY2tfaW5pdCgmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCWlkcl9pbml0KCZm cHJpdi0+c2VtX2hhbmRsZXMpOwogCWFtZGdwdV9jdHhfbWdyX2luaXQoJmZwcml2LT5jdHhfbWdy KTsKIAogCWZpbGVfcHJpdi0+ZHJpdmVyX3ByaXYgPSBmcHJpdjsKQEAgLTY4OSw2ICs2OTEsNyBA QCB2b2lkIGFtZGdwdV9kcml2ZXJfcG9zdGNsb3NlX2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1 Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7CiAJc3RydWN0 IGFtZGdwdV9ib19saXN0ICpsaXN0OworCXN0cnVjdCBhbWRncHVfc2VtICpzZW07CiAJaW50IGhh bmRsZTsKIAogCWlmICghZnByaXYpCkBAIC03MTUsNiArNzE4LDEwIEBAIHZvaWQgYW1kZ3B1X2Ry aXZlcl9wb3N0Y2xvc2Vfa21zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWRyX2Rlc3Ryb3ko JmZwcml2LT5ib19saXN0X2hhbmRsZXMpOwogCW11dGV4X2Rlc3Ryb3koJmZwcml2LT5ib19saXN0 X2xvY2spOwogCisJaWRyX2Zvcl9lYWNoX2VudHJ5KCZmcHJpdi0+c2VtX2hhbmRsZXMsIHNlbSwg aGFuZGxlKQorCQlhbWRncHVfc2VtX2Rlc3Ryb3koZnByaXYsIGhhbmRsZSk7CisJaWRyX2Rlc3Ry b3koJmZwcml2LT5zZW1faGFuZGxlcyk7CisKIAlrZnJlZShmcHJpdik7CiAJZmlsZV9wcml2LT5k cml2ZXJfcHJpdiA9IE5VTEw7CiAKQEAgLTg5Niw2ICs5MDMsNyBAQCBjb25zdCBzdHJ1Y3QgZHJt X2lvY3RsX2Rlc2MgYW1kZ3B1X2lvY3Rsc19rbXNbXSA9IHsKIAlEUk1fSU9DVExfREVGX0RSVihB TURHUFVfR0VNX1ZBLCBhbWRncHVfZ2VtX3ZhX2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FM TE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VNX09QLCBhbWRncHVfZ2VtX29wX2lv Y3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihBTURH UFVfR0VNX1VTRVJQVFIsIGFtZGdwdV9nZW1fdXNlcnB0cl9pb2N0bCwgRFJNX0FVVEh8RFJNX1JF TkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX1NFTSwgYW1kZ3B1X3NlbV9p b2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCiB9OwogY29uc3QgaW50IGFtZGdwdV9t YXhfa21zX2lvY3RsID0gQVJSQVlfU0laRShhbWRncHVfaW9jdGxzX2ttcyk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9zZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi45NGE2MzdmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3NlbS5jCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IDIw MTYgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1 dGhvcnM6CisgKiAgICBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29tPgorICovCisj aW5jbHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvcG9sbC5oPgorI2luY2x1ZGUgPGxpbnV4 L3NlcV9maWxlLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgv c2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vz cy5oPgorI2luY2x1ZGUgPGxpbnV4L2Fub25faW5vZGVzLmg+CisjaW5jbHVkZSA8bGludXgvc3lu Y19maWxlLmg+CisjaW5jbHVkZSAiYW1kZ3B1LmgiCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKwor c3RhdGljIGlubGluZSBzdHJ1Y3Qgc3luY19maWxlICphbWRncHVfc3luY19maWxlX2xvb2t1cChz dHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwgdTMyIGhhbmRsZSkKK3sKKwlzdHJ1Y3Qgc3luY19m aWxlICpzeW5jX2ZpbGU7CisKKwlzcGluX2xvY2soJmZwcml2LT5zZW1faGFuZGxlc19sb2NrKTsK KworCS8qIENoZWNrIGlmIHdlIGN1cnJlbnRseSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBvYmpl Y3QgKi8KKwlzeW5jX2ZpbGUgPSBpZHJfZmluZCgmZnByaXYtPnNlbV9oYW5kbGVzLCBoYW5kbGUp OworCisJc3Bpbl91bmxvY2soJmZwcml2LT5zZW1faGFuZGxlc19sb2NrKTsKKworCXJldHVybiBz eW5jX2ZpbGU7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3NlbV9jcmVhdGUoc3RydWN0IGFtZGdw dV9mcHJpdiAqZnByaXYsIHUzMiAqaGFuZGxlKQoreworCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNf ZmlsZSA9IHN5bmNfZmlsZV9hbGxvYygpOworCWludCByZXQ7CisKKwlpZiAoIXN5bmNfZmlsZSkK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlzbnByaW50ZihzeW5jX2ZpbGUtPm5hbWUsIHNpemVvZihz eW5jX2ZpbGUtPm5hbWUpLCAic3luY19zZW0iKTsKKworCS8qIHdlIGdldCBhIGZpbGUgcmVmZXJl bmNlIGFuZCB3ZSB1c2UgdGhhdCBpbiB0aGUgaWRyLiAqLworCWlkcl9wcmVsb2FkKEdGUF9LRVJO RUwpOworCXNwaW5fbG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCisJcmV0ID0gaWRy X2FsbG9jKCZmcHJpdi0+c2VtX2hhbmRsZXMsIHN5bmNfZmlsZSwgMSwgMCwgR0ZQX05PV0FJVCk7 CisKKwlzcGluX3VubG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOworCWlkcl9wcmVsb2Fk X2VuZCgpOworCisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkqaGFuZGxlID0gcmV0 OworCXJldHVybiAwOworfQorCit2b2lkIGFtZGdwdV9zZW1fZGVzdHJveShzdHJ1Y3QgYW1kZ3B1 X2Zwcml2ICpmcHJpdiwgdTMyIGhhbmRsZSkKK3sKKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2Zp bGUgPSBhbWRncHVfc3luY19maWxlX2xvb2t1cChmcHJpdiwgaGFuZGxlKTsKKwlpZiAoIXN5bmNf ZmlsZSkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrKCZmcHJpdi0+c2VtX2hhbmRsZXNfbG9jayk7 CisJaWRyX3JlbW92ZSgmZnByaXYtPnNlbV9oYW5kbGVzLCBoYW5kbGUpOworCXNwaW5fdW5sb2Nr KCZmcHJpdi0+c2VtX2hhbmRsZXNfbG9jayk7CisKKwlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7Cit9 CisKKworaW50IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9zaWduYWwoc3RydWN0IGFtZGdwdV9mcHJp diAqZnByaXYsCisJCQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkgc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UpCit7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOworCXN0cnVjdCBkbWFfZmVu Y2UgKm9sZF9mZW5jZTsKKwlzeW5jX2ZpbGUgPSBhbWRncHVfc3luY19maWxlX2xvb2t1cChmcHJp diwgaGFuZGxlKTsKKwlpZiAoIXN5bmNfZmlsZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlvbGRf ZmVuY2UgPSBzeW5jX2ZpbGVfcmVwbGFjZV9mZW5jZShzeW5jX2ZpbGUsIGZlbmNlKTsKKwlkbWFf ZmVuY2VfcHV0KG9sZF9mZW5jZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1 X3NlbV9pbXBvcnQoc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsCisJCQkJICAgICAgIGludCBm ZCwgdTMyICpoYW5kbGUpCit7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlID0gc3luY19m aWxlX2ZkZ2V0KGZkKTsKKwlpbnQgcmV0OworCisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybiAt RUlOVkFMOworCisJaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7CisJc3Bpbl9sb2NrKCZmcHJpdi0+ c2VtX2hhbmRsZXNfbG9jayk7CisKKwlyZXQgPSBpZHJfYWxsb2MoJmZwcml2LT5zZW1faGFuZGxl cywgc3luY19maWxlLCAxLCAwLCBHRlBfTk9XQUlUKTsKKworCXNwaW5fdW5sb2NrKCZmcHJpdi0+ c2VtX2hhbmRsZXNfbG9jayk7CisJaWRyX3ByZWxvYWRfZW5kKCk7CisKKwlpZiAocmV0IDwgMCkK KwkJZ290byBlcnJfb3V0OworCisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4gMDsKK2Vycl9vdXQ6 CisJcmV0dXJuIHJldDsKKworfQorCitzdGF0aWMgaW50IGFtZGdwdV9zZW1fZXhwb3J0KHN0cnVj dCBhbWRncHVfZnByaXYgKmZwcml2LAorCQkJICAgICB1MzIgaGFuZGxlLCBpbnQgKmZkKQorewor CXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZTsKKwlpbnQgcmV0OworCisJc3luY19maWxlID0g YW1kZ3B1X3N5bmNfZmlsZV9sb29rdXAoZnByaXYsIGhhbmRsZSk7CisJaWYgKCFzeW5jX2ZpbGUp CisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gZ2V0X3VudXNlZF9mZF9mbGFncyhPX0NMT0VY RUMpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9wdXRfZmlsZTsKKworCWZkX2luc3RhbGwo cmV0LCBzeW5jX2ZpbGUtPmZpbGUpOworCisJKmZkID0gcmV0OworCXJldHVybiAwOworZXJyX3B1 dF9maWxlOgorCXJldHVybiByZXQ7Cit9CisKK2ludCBhbWRncHVfc2VtX2xvb2t1cF9hbmRfc3lu YyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Zw cml2ICpmcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3N5bmMgKnN5bmMsCisJCQkgICAg ICAgdWludDMyX3QgaGFuZGxlKQoreworCWludCByOworCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNf ZmlsZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKKworCXN5bmNfZmlsZSA9IGFtZGdwdV9z eW5jX2ZpbGVfbG9va3VwKGZwcml2LCBoYW5kbGUpOworCWlmICghc3luY19maWxlKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWZlbmNlID0gc3luY19maWxlX3JlcGxhY2VfZmVuY2Uoc3luY19maWxl LCBOVUxMKTsKKwlyID0gYW1kZ3B1X3N5bmNfZmVuY2UoYWRldiwgc3luYywgZmVuY2UpOworCWRt YV9mZW5jZV9wdXQoZmVuY2UpOworCisJcmV0dXJuIHI7Cit9CisKK2ludCBhbWRncHVfc2VtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCSAgICAgc3RydWN0IGRy bV9maWxlICpmaWxwKQoreworCXVuaW9uIGRybV9hbWRncHVfc2VtICphcmdzID0gZGF0YTsKKwlz dHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2OworCWludCByID0g MDsKKworCXN3aXRjaCAoYXJncy0+aW4ub3ApIHsKKwljYXNlIEFNREdQVV9TRU1fT1BfQ1JFQVRF X1NFTToKKwkJciA9IGFtZGdwdV9zZW1fY3JlYXRlKGZwcml2LCAmYXJncy0+b3V0LmhhbmRsZSk7 CisJCWJyZWFrOworCWNhc2UgQU1ER1BVX1NFTV9PUF9JTVBPUlRfU0VNOgorCQlyID0gYW1kZ3B1 X3NlbV9pbXBvcnQoZnByaXYsIGFyZ3MtPmluLmhhbmRsZSwgJmFyZ3MtPm91dC5oYW5kbGUpOwor CQlicmVhazsKKwljYXNlIEFNREdQVV9TRU1fT1BfRVhQT1JUX1NFTToKKwkJciA9IGFtZGdwdV9z ZW1fZXhwb3J0KGZwcml2LCBhcmdzLT5pbi5oYW5kbGUsICZhcmdzLT5vdXQuZmQpOworCQlicmVh azsKKwljYXNlIEFNREdQVV9TRU1fT1BfREVTVFJPWV9TRU06CisJCWFtZGdwdV9zZW1fZGVzdHJv eShmcHJpdiwgYXJncy0+aW4uaGFuZGxlKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJciA9IC1F SU5WQUw7CisJCWJyZWFrOworCX0KKworCXJldHVybiByOworfQpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9hbWRncHVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaApp bmRleCA1Nzk3MjgzLi42NDZiMTAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2FtZGdw dV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaApAQCAtNTEsNiArNTEs NyBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0FNREdQVV9HRU1fT1AJCTB4MTAKICNkZWZp bmUgRFJNX0FNREdQVV9HRU1fVVNFUlBUUgkJMHgxMQogI2RlZmluZSBEUk1fQU1ER1BVX1dBSVRf RkVOQ0VTCQkweDEyCisjZGVmaW5lIERSTV9BTURHUFVfU0VNICAgICAgICAgICAgICAgICAgMHgx MwogCiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX0NSRUFURQlEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX0FNREdQVV9HRU1fQ1JFQVRFLCB1bmlvbiBkcm1fYW1kZ3B1X2dlbV9j cmVhdGUpCiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX01NQVAJRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX01NQVAsIHVuaW9uIGRybV9hbWRncHVfZ2VtX21t YXApCkBAIC02NSw2ICs2Niw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fSU9DVExfQU1E R1BVX0dFTV9PUAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX09Q LCBzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fb3ApCiAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VN X1VTRVJQVFIJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX1VTRVJQ VFIsIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV91c2VycHRyKQogI2RlZmluZSBEUk1fSU9DVExfQU1E R1BVX1dBSVRfRkVOQ0VTCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fQU1ER1BVX1dB SVRfRkVOQ0VTLCB1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzKQorI2RlZmluZSBEUk1fSU9D VExfQU1ER1BVX1NFTQkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfU0VN LCB1bmlvbiBkcm1fYW1kZ3B1X3NlbSkKIAogI2RlZmluZSBBTURHUFVfR0VNX0RPTUFJTl9DUFUJ CTB4MQogI2RlZmluZSBBTURHUFVfR0VNX0RPTUFJTl9HVFQJCTB4MgpAQCAtMzM1LDYgKzMzNywy NiBAQCB1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzIHsKIAlzdHJ1Y3QgZHJtX2FtZGdwdV93 YWl0X2ZlbmNlc19vdXQgb3V0OwogfTsKIAorI2RlZmluZSBBTURHUFVfU0VNX09QX0NSRUFURV9T RU0gMAorI2RlZmluZSBBTURHUFVfU0VNX09QX0lNUE9SVF9TRU0gMQorI2RlZmluZSBBTURHUFVf U0VNX09QX0VYUE9SVF9TRU0gMgorI2RlZmluZSBBTURHUFVfU0VNX09QX0RFU1RST1lfU0VNIDMK Kworc3RydWN0IGRybV9hbWRncHVfc2VtX2luIHsKKwlfX3UzMiBvcDsKKwlfX3UzMiBoYW5kbGU7 Cit9OworCitzdHJ1Y3QgZHJtX2FtZGdwdV9zZW1fb3V0IHsKKwlfX3UzMiBmZDsKKwlfX3UzMiBo YW5kbGU7Cit9OworCit1bmlvbiBkcm1fYW1kZ3B1X3NlbSB7CisJc3RydWN0IGRybV9hbWRncHVf c2VtX2luIGluOworCXN0cnVjdCBkcm1fYW1kZ3B1X3NlbV9vdXQgb3V0OworfTsKKwogI2RlZmlu ZSBBTURHUFVfR0VNX09QX0dFVF9HRU1fQ1JFQVRFX0lORk8JMAogI2RlZmluZSBBTURHUFVfR0VN X09QX1NFVF9QTEFDRU1FTlQJCTEKIApAQCAtMzkwLDYgKzQxMiw4IEBAIHN0cnVjdCBkcm1fYW1k Z3B1X2dlbV92YSB7CiAjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9JQgkJMHgwMQogI2RlZmluZSBB TURHUFVfQ0hVTktfSURfRkVOQ0UJCTB4MDIKICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX0RFUEVO REVOQ0lFUwkweDAzCisjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9TRU1fV0FJVCAgICAgICAgMHgw NAorI2RlZmluZSBBTURHUFVfQ0hVTktfSURfU0VNX1NJR05BTCAgICAgIDB4MDUKIAogc3RydWN0 IGRybV9hbWRncHVfY3NfY2h1bmsgewogCV9fdTMyCQljaHVua19pZDsKQEAgLTQ1NCw2ICs0Nzgs MTAgQEAgc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZmVuY2UgewogCV9fdTMyIG9mZnNldDsK IH07CiAKK3N0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSB7CisJX191MzIgaGFuZGxlOwor fTsKKwogc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZGF0YSB7CiAJdW5pb24gewogCQlzdHJ1 Y3QgZHJtX2FtZGdwdV9jc19jaHVua19pYgkJaWJfZGF0YTsKLS0gCjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK