From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 1/9] drm/msm: Add per-instance submit queues Date: Fri, 20 Oct 2017 11:06:55 -0600 Message-ID: <1508519223-10631-2-git-send-email-jcrouse@codeaurora.org> References: <1508519223-10631-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1508519223-10631-1-git-send-email-jcrouse@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: freedreno@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org Q3VycmVudGx5IHRoZSBiZWhhdmlvciBvZiBhIGNvbW1hbmQgc3RyZWFtIGlzIHByb3ZpZGVkIGJ5 IHRoZSB1c2VyCmFwcGxpY2F0aW9uIGR1cmluZyBzdWJtaXNzaW9uIGFuZCB0aGUgYXBwbGljYXRp b24gaXMgZXhwZWN0ZWQgdG8gaW50ZXJuYWxseQptYWludGFpbiB0aGUgc2V0dGluZ3MgZm9yIGVh Y2ggJ2NvbnRleHQnIG9yICdyZW5kZXJpbmcgcXVldWUnIGFuZCBzcGVjaWZ5CnRoZSBjb3JyZWN0 IG9uZXMuCgpUaGlzIHdvcmtzIG9rYXkgZm9yIHNpbXBsZSBjYXNlcyBidXQgYXMgYXBwbGljYXRp b25zIGJlY29tZSBtb3JlCmNvbXBsZXggd2Ugd2lsbCB3YW50IHRvIHNldCBjb250ZXh0IHNwZWNp ZmljIGZsYWdzIGFuZCBkbyB2YXJpb3VzCnBlcm1pc3Npb24gY2hlY2tzIHRvIGFsbG93IGNlcnRh aW4gY29udGV4dHMgdG8gZW5hYmxlIGFkZGl0aW9uYWwKcHJpdmlsZWdlcy4KCkFkZCBrZXJuZWwt c2lkZSBzdWJtaXQgcXVldWVzIHRvIGJlIGFuYWxvZ291cyB0byAnY29udGV4dHMnIG9yCidyZW5k ZXJpbmcgcXVldWVzJyBvbiB0aGUgYXBwbGljYXRpb24gc2lkZS4gRWFjaCBmaWxlIGRlc2NyaXB0 b3IKaW5zdGFuY2Ugd2lsbCBtYWludGFpbiBpdHMgb3duIGxpc3Qgb2YgcXVldWVzLiBRdWV1ZXMg Y2Fubm90IGJlCnNoYXJlZCBiZXR3ZWVuIGZpbGUgZGVzY3JpcHRvcnMuCgpGb3IgYmFja3dhcmRz IGNvbXBhdGliaWxpdHkgY29udGV4dCBpZCAnMCcgaXMgZGVmaW5lZCBhcyBhIGRlZmF1bHQKY29u dGV4dCBzcGVjaWZ5aW5nIG5vIHByaW9yaXR5IGFuZCBubyBzcGVjaWFsIGZsYWdzLiBUaGlzIGlz CmludGVuZGVkIHRvIGJlIHRoZSB1c3VhbCBjb25maWd1cmF0aW9uIGZvciA5OSUgb2YgYXBwbGlj YXRpb25zIHNvCnRoYXQgYSBnYXJkZW4gdmFyaWV0eSBhcHBsaWNhdGlvbiBjYW4gZnVuY3Rpb24g Y29ycmVjdGx5IHdpdGhvdXQKY3JlYXRpbmcgYSBxdWV1ZS4gT25seSB0aG9zZSBhcHBsaWNhdGlv bnMgcmVxdWlyaW5nIHRoZSBzcGVjaWZpYwpiZW5lZml0IG9mIGRpZmZlcmVudCBxdWV1ZXMgbmVl ZCBjcmVhdGUgb25lLgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2Rl YXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlICAgICAgICAgIHwg ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyAgICAgICAgIHwgIDU2ICsrKysr KysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgIHwgIDIwICsr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaCAgICAgICAgIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dlbV9zdWJtaXQuYyAgfCAgMTQgKysrLQogZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ3B1LmggICAgICAgICB8ICAxNSArKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9zdWJtaXRxdWV1ZS5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGluY2x1ZGUvdWFwaS9kcm0vbXNtX2RybS5oICAgICAgICAgICAgfCAgMjIgKysrKysrCiA4 IGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9t c20vTWFrZWZpbGUKaW5kZXggMzMwMDhmYS4uM2MyMzRlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCkBA IC01Nyw3ICs1Nyw4IEBAIG1zbS15IDo9IFwKIAltc21faW9tbXUubyBcCiAJbXNtX3BlcmYubyBc CiAJbXNtX3JkLm8gXAotCW1zbV9yaW5nYnVmZmVyLm8KKwltc21fcmluZ2J1ZmZlci5vIFwKKwlt c21fc3VibWl0cXVldWUubwogCiBtc20tJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0g bXNtX2ZiZGV2Lm8KIG1zbS0kKENPTkZJR19DT01NT05fQ0xLKSArPSBtZHAvbWRwNC9tZHA0X2x2 ZHNfcGxsLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKaW5kZXggZGRhNTViNi4uY2Y3NDNjNyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmMKQEAgLTI5LDkgKzI5LDEyIEBACiAgKiAtIDEuMC4wIC0gaW5pdGlhbCBp bnRlcmZhY2UKICAqIC0gMS4xLjAgLSBhZGRzIG1hZHZpc2UsIGFuZCBzdXBwb3J0IGZvciBzdWJt aXRzIHdpdGggPiA0IGNtZCBidWZmZXJzCiAgKiAtIDEuMi4wIC0gYWRkcyBleHBsaWNpdCBmZW5j ZSBzdXBwb3J0IGZvciBzdWJtaXQgaW9jdGwKKyAqIC0gMS4zLjAgLSBhZGRzIEdNRU1fQkFTRSAr IE5SX1JJTkdTIHBhcmFtcywgU1VCTUlUUVVFVUVfTkVXICsKKyAqICAgICAgICAgICBTVUJNSVRR VUVVRV9DTE9TRSBpb2N0bHMsIGFuZCBNU01fSU5GT19JT1ZBIGZsYWcgZm9yCisgKiAgICAgICAg ICAgTVNNX0dFTV9JTkZPIGlvY3RsLgogICovCiAjZGVmaW5lIE1TTV9WRVJTSU9OX01BSk9SCTEK LSNkZWZpbmUgTVNNX1ZFUlNJT05fTUlOT1IJMgorI2RlZmluZSBNU01fVkVSU0lPTl9NSU5PUgkz CiAjZGVmaW5lIE1TTV9WRVJTSU9OX1BBVENITEVWRUwJMAogCiBzdGF0aWMgdm9pZCBtc21fZmJf b3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpAQCAtNTE0LDI0ICs1 MTcsMzcgQEAgc3RhdGljIHZvaWQgbG9hZF9ncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlt dXRleF91bmxvY2soJmluaXRfbG9jayk7CiB9CiAKLXN0YXRpYyBpbnQgbXNtX29wZW4oc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQorc3RhdGljIGludCBjb250 ZXh0X2luaXQoc3RydWN0IGRybV9maWxlICpmaWxlKQogewogCXN0cnVjdCBtc21fZmlsZV9wcml2 YXRlICpjdHg7CiAKLQkvKiBGb3Igbm93LCBsb2FkIGdwdSBvbiBvcGVuLi4gdG8gYXZvaWQgdGhl IHJlcXVpcmVtZW50IG9mIGhhdmluZwotCSAqIGZpcm13YXJlIGluIHRoZSBpbml0cmQuCi0JICov Ci0JbG9hZF9ncHUoZGV2KTsKLQogCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VS TkVMKTsKIAlpZiAoIWN0eCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwltc21fc3VibWl0cXVldWVf aW5pdChjdHgpOworCiAJZmlsZS0+ZHJpdmVyX3ByaXYgPSBjdHg7CiAKIAlyZXR1cm4gMDsKIH0K IAorc3RhdGljIGludCBtc21fb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCit7CisJLyogRm9yIG5vdywgbG9hZCBncHUgb24gb3Blbi4uIHRvIGF2b2lk IHRoZSByZXF1aXJlbWVudCBvZiBoYXZpbmcKKwkgKiBmaXJtd2FyZSBpbiB0aGUgaW5pdHJkLgor CSAqLworCWxvYWRfZ3B1KGRldik7CisKKwlyZXR1cm4gY29udGV4dF9pbml0KGZpbGUpOworfQor CitzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgp Cit7CisJbXNtX3N1Ym1pdHF1ZXVlX2Nsb3NlKGN0eCk7CisJa2ZyZWUoY3R4KTsKK30KKwogc3Rh dGljIHZvaWQgbXNtX3Bvc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CkBAIC01NDIsNyArNTU4LDcgQEAgc3RhdGljIHZvaWQgbXNtX3Bvc3RjbG9zZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJCXByaXYtPmxh c3RjdHggPSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0Ja2Zy ZWUoY3R4KTsKKwljb250ZXh0X2Nsb3NlKGN0eCk7CiB9CiAKIHN0YXRpYyB2b2lkIG1zbV9sYXN0 Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKQEAgLTc4Nyw2ICs4MDMsMjggQEAgc3RhdGlj IGludCBtc21faW9jdGxfZ2VtX21hZHZpc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAlyZXR1cm4gcmV0OwogfQogCisKK3N0YXRpYyBpbnQgbXNtX2lvY3RsX3N1Ym1pdHF1 ZXVlX25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQlzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9tc21fc3VibWl0cXVldWUgKmFyZ3MgPSBkYXRh OworCisJaWYgKGFyZ3MtPmZsYWdzICYgfk1TTV9TVUJNSVRRVUVVRV9GTEFHUykKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX2NyZWF0ZShmaWxlLT5kcml2ZXJf cHJpdiwgYXJncy0+cHJpbywKKwkJYXJncy0+ZmxhZ3MsICZhcmdzLT5pZCk7Cit9CisKKworc3Rh dGljIGludCBtc21faW9jdGxfc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKKwkJc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXUzMiBpZCA9ICoo dTMyICopIGRhdGE7CisKKwlyZXR1cm4gbXNtX3N1Ym1pdHF1ZXVlX3JlbW92ZShmaWxlLT5kcml2 ZXJfcHJpdiwgaWQpOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIG1z bV9pb2N0bHNbXSA9IHsKIAlEUk1fSU9DVExfREVGX0RSVihNU01fR0VUX1BBUkFNLCAgICBtc21f aW9jdGxfZ2V0X3BhcmFtLCAgICBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9D VExfREVGX0RSVihNU01fR0VNX05FVywgICAgICBtc21faW9jdGxfZ2VtX25ldywgICAgICBEUk1f QVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKQEAgLTc5Niw2ICs4MzQsOCBAQCBzdGF0aWMgaW50IG1z bV9pb2N0bF9nZW1fbWFkdmlzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CURSTV9JT0NUTF9ERUZfRFJWKE1TTV9HRU1fU1VCTUlULCAgIG1zbV9pb2N0bF9nZW1fc3VibWl0 LCAgIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKE1TTV9X QUlUX0ZFTkNFLCAgIG1zbV9pb2N0bF93YWl0X2ZlbmNlLCAgIERSTV9BVVRIfERSTV9SRU5ERVJf QUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKE1TTV9HRU1fTUFEVklTRSwgIG1zbV9pb2N0bF9n ZW1fbWFkdmlzZSwgIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZf RFJWKE1TTV9TVUJNSVRRVUVVRV9ORVcsICAgbXNtX2lvY3RsX3N1Ym1pdHF1ZXVlX25ldywgICBE Uk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihNU01fU1VCTUlU UVVFVUVfQ0xPU0UsIG1zbV9pb2N0bF9zdWJtaXRxdWV1ZV9jbG9zZSwgRFJNX0FVVEh8RFJNX1JF TkRFUl9BTExPVyksCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3Ry dWN0IHZtX29wcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggNWU4MTA5Yy4uYjNiOGYyMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmgKQEAgLTU2LDExICs1Niw5IEBACiBzdHJ1Y3QgbXNtX2dlbV92 bWE7CiAKIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlIHsKLQkvKiBjdXJyZW50bHkgd2UgZG9uJ3Qg ZG8gYW55dGhpbmcgdXNlZnVsIHdpdGggdGhpcy4uIGJ1dCB3aGVuCi0JICogcGVyLWNvbnRleHQg YWRkcmVzcyBzcGFjZXMgYXJlIHN1cHBvcnRlZCB3ZSdkIGtlZXAgdHJhY2sgb2YKLQkgKiB0aGUg Y29udGV4dCdzIHBhZ2UtdGFibGVzIGhlcmUuCi0JICovCi0JaW50IGR1bW15OworCXJ3bG9ja190 IHF1ZXVlbG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHN1Ym1pdHF1ZXVlczsKKwlpbnQgcXVldWVp ZDsKIH07CiAKIGVudW0gbXNtX21kcF9wbGFuZV9wcm9wZXJ0eSB7CkBAIC0zMTksNiArMzE3LDE4 IEBAIHZvaWQgX19pb21lbSAqbXNtX2lvcmVtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgY29uc3QgY2hhciAqbmFtZSwKIHZvaWQgbXNtX3dyaXRlbCh1MzIgZGF0YSwgdm9pZCBfX2lv bWVtICphZGRyKTsKIHUzMiBtc21fcmVhZGwoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyKTsKIAor c3RydWN0IG1zbV9ncHVfc3VibWl0cXVldWU7CitpbnQgbXNtX3N1Ym1pdHF1ZXVlX2luaXQoc3Ry dWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCk7CitzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAq bXNtX3N1Ym1pdHF1ZXVlX2dldChzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4LAorCQl1MzIg aWQpOworaW50IG1zbV9zdWJtaXRxdWV1ZV9jcmVhdGUoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUg KmN0eCwgdTMyIHByaW8sCisJCXUzMiBmbGFncywgdTMyICppZCk7CitpbnQgbXNtX3N1Ym1pdHF1 ZXVlX3JlbW92ZShzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSAqY3R4LCB1MzIgaWQpOwordm9pZCBt c21fc3VibWl0cXVldWVfY2xvc2Uoc3RydWN0IG1zbV9maWxlX3ByaXZhdGUgKmN0eCk7CisKK3Zv aWQgbXNtX3N1Ym1pdHF1ZXVlX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpOworCisKICNkZWZp bmUgREJHKGZtdCwgLi4uKSBEUk1fREVCVUdfRFJJVkVSKGZtdCJcbiIsICMjX19WQV9BUkdTX18p CiAjZGVmaW5lIFZFUkIoZm10LCAuLi4pIGlmICgwKSBEUk1fREVCVUdfRFJJVkVSKGZtdCJcbiIs ICMjX19WQV9BUkdTX18pCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dl bS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmgKaW5kZXggOTFjMjEwZC4uMTdmOGE2 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZ2VtLmgKQEAgLTE0Miw2ICsxNDIsNyBAQCBzdHJ1Y3QgbXNtX2dl bV9zdWJtaXQgewogCXN0cnVjdCBsaXN0X2hlYWQgYm9fbGlzdDsKIAlzdHJ1Y3Qgd3dfYWNxdWly ZV9jdHggdGlja2V0OwogCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCXN0cnVjdCBtc21fZ3B1 X3N1Ym1pdHF1ZXVlICpxdWV1ZTsKIAlzdHJ1Y3QgcGlkICpwaWQ7ICAgIC8qIHN1Ym1pdHRpbmcg cHJvY2VzcyAqLwogCWJvb2wgdmFsaWQ7ICAgICAgICAgLyogdHJ1ZSBpZiBubyBjbWRzdHJlYW0g cGF0Y2hpbmcgbmVlZGVkICovCiAJdW5zaWduZWQgaW50IG5yX2NtZHM7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9nZW1fc3VibWl0LmMKaW5kZXggOGE3NWMwYi4uMDk3Mzg4NCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dlbV9zdWJtaXQuYwpAQCAtMzEsNyArMzEsOCBAQAogI2RlZmluZSBCT19QSU5ORUQg ICAweDIwMDAKIAogc3RhdGljIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0X2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQlzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCB1aW50MzJfdCBu cl9ib3MsIHVpbnQzMl90IG5yX2NtZHMpCisJCXN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBt c21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZSwKKwkJdWludDMyX3QgbnJfYm9zLCB1aW50MzJfdCBu cl9jbWRzKQogewogCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0OwogCXVpbnQ2NF90IHN6 ID0gc2l6ZW9mKCpzdWJtaXQpICsgKCh1NjQpbnJfYm9zICogc2l6ZW9mKHN1Ym1pdC0+Ym9zWzBd KSkgKwpAQCAtNDksNiArNTAsNyBAQCBzdGF0aWMgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJt aXRfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3VibWl0LT5mZW5jZSA9IE5VTEw7 CiAJc3VibWl0LT5waWQgPSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJlbnQpKTsKIAlzdWJtaXQtPmNt ZCA9ICh2b2lkICopJnN1Ym1pdC0+Ym9zW25yX2Jvc107CisJc3VibWl0LT5xdWV1ZSA9IHF1ZXVl OwogCiAJLyogaW5pdGlhbGx5LCB1bnRpbCBjb3B5X2Zyb21fdXNlcigpIGFuZCBibyBsb29rdXAg c3VjY2VlZHM6ICovCiAJc3VibWl0LT5ucl9ib3MgPSAwOwpAQCAtNjYsNiArNjgsOCBAQCB2b2lk IG1zbV9nZW1fc3VibWl0X2ZyZWUoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCiAJZG1h X2ZlbmNlX3B1dChzdWJtaXQtPmZlbmNlKTsKIAlsaXN0X2RlbCgmc3VibWl0LT5ub2RlKTsKIAlw dXRfcGlkKHN1Ym1pdC0+cGlkKTsKKwltc21fc3VibWl0cXVldWVfcHV0KHN1Ym1pdC0+cXVldWUp OworCiAJa2ZyZWUoc3VibWl0KTsKIH0KIApAQCAtMzkxLDYgKzM5NSw3IEBAIGludCBtc21faW9j dGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVj dCBtc21fZ3B1ICpncHUgPSBwcml2LT5ncHU7CiAJc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVuY2Ug PSBOVUxMOwogCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSA9IE5VTEw7CisJc3RydWN0IG1z bV9ncHVfc3VibWl0cXVldWUgKnF1ZXVlOwogCWludCBvdXRfZmVuY2VfZmQgPSAtMTsKIAl1bnNp Z25lZCBpOwogCWludCByZXQ7CkBAIC00MDcsNiArNDEyLDEwIEBAIGludCBtc21faW9jdGxfZ2Vt X3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChNU01fUElQ RV9GTEFHUyhhcmdzLT5mbGFncykgJiB+TVNNX1NVQk1JVF9GTEFHUykKIAkJcmV0dXJuIC1FSU5W QUw7CiAKKwlxdWV1ZSA9IG1zbV9zdWJtaXRxdWV1ZV9nZXQoY3R4LCBhcmdzLT5xdWV1ZWlkKTsK KwlpZiAoIXF1ZXVlKQorCQlyZXR1cm4gLUVOT0VOVDsKKwogCWlmIChhcmdzLT5mbGFncyAmIE1T TV9TVUJNSVRfRkVOQ0VfRkRfSU4pIHsKIAkJaW5fZmVuY2UgPSBzeW5jX2ZpbGVfZ2V0X2ZlbmNl KGFyZ3MtPmZlbmNlX2ZkKTsKIApAQCAtNDM3LDcgKzQ0Niw3IEBAIGludCBtc21faW9jdGxfZ2Vt X3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCX0KIAlwcml2LT5z dHJ1Y3RfbXV0ZXhfdGFzayA9IGN1cnJlbnQ7CiAKLQlzdWJtaXQgPSBzdWJtaXRfY3JlYXRlKGRl diwgZ3B1LCBhcmdzLT5ucl9ib3MsIGFyZ3MtPm5yX2NtZHMpOworCXN1Ym1pdCA9IHN1Ym1pdF9j cmVhdGUoZGV2LCBncHUsIHF1ZXVlLCBhcmdzLT5ucl9ib3MsIGFyZ3MtPm5yX2NtZHMpOwogCWlm ICghc3VibWl0KSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gb3V0X3VubG9jazsKQEAgLTUy Myw2ICs1MzIsNyBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAlzdWJtaXQtPm5yX2NtZHMgPSBpOwogCiAJc3VibWl0LT5mZW5j ZSA9IG1zbV9mZW5jZV9hbGxvYyhncHUtPmZjdHgpOworCiAJaWYgKElTX0VSUihzdWJtaXQtPmZl bmNlKSkgewogCQlyZXQgPSBQVFJfRVJSKHN1Ym1pdC0+ZmVuY2UpOwogCQlzdWJtaXQtPmZlbmNl ID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKaW5kZXggZGY0ZTI3Ny4uYTg5MDE3NiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ3B1LmgKQEAgLTE1MCw2ICsxNTAsMTUgQEAgc3RydWN0IG1zbV9ncHVfcGVyZmNu dHIgewogCWNvbnN0IGNoYXIgKm5hbWU7CiB9OwogCitzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1 ZSB7CisJaW50IGlkOworCXUzMiBmbGFnczsKKwl1MzIgcHJpbzsKKwlpbnQgZmF1bHRzOworCXN0 cnVjdCBsaXN0X2hlYWQgbm9kZTsKKwlzdHJ1Y3Qga3JlZiByZWY7Cit9OworCiBzdGF0aWMgaW5s aW5lIHZvaWQgZ3B1X3dyaXRlKHN0cnVjdCBtc21fZ3B1ICpncHUsIHUzMiByZWcsIHUzMiBkYXRh KQogewogCW1zbV93cml0ZWwoZGF0YSwgZ3B1LT5tbWlvICsgKHJlZyA8PCAyKSk7CkBAIC0yMjMs NCArMjMyLDEwIEBAIGludCBtc21fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIHZvaWQgX19pbml0IGFkcmVub19yZWdpc3Rlcih2 b2lkKTsKIHZvaWQgX19leGl0IGFkcmVub191bnJlZ2lzdGVyKHZvaWQpOwogCitzdGF0aWMgaW5s aW5lIHZvaWQgbXNtX3N1Ym1pdHF1ZXVlX3B1dChzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAq cXVldWUpCit7CisJaWYgKHF1ZXVlKQorCQlrcmVmX3B1dCgmcXVldWUtPnJlZiwgbXNtX3N1Ym1p dHF1ZXVlX2Rlc3Ryb3kpOworfQorCiAjZW5kaWYgLyogX19NU01fR1BVX0hfXyAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3VibWl0cXVldWUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX3N1Ym1pdHF1ZXVlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNTkzYzNiNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X3N1Ym1pdHF1ZXVlLmMKQEAgLTAsMCArMSwxMzUgQEAKKy8qIENvcHlyaWdodCAoYykgMjAxNyBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYW5kCisgKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqLworCisjaW5jbHVkZSA8bGludXgva3JlZi5oPgorI2luY2x1ZGUgIm1zbV9ncHUuaCIKKwor dm9pZCBtc21fc3VibWl0cXVldWVfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1 Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAqcXVldWUgPSBjb250YWluZXJfb2Yoa3JlZiwKKwkJc3Ry dWN0IG1zbV9ncHVfc3VibWl0cXVldWUsIHJlZik7CisKKwlrZnJlZShxdWV1ZSk7Cit9CisKK3N0 cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICptc21fc3VibWl0cXVldWVfZ2V0KHN0cnVjdCBtc21f ZmlsZV9wcml2YXRlICpjdHgsCisJCXUzMiBpZCkKK3sKKwlzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRx dWV1ZSAqZW50cnk7CisKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWFkX2xvY2so JmN0eC0+cXVldWVsb2NrKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZjdHgtPnN1 Ym1pdHF1ZXVlcywgbm9kZSkgeworCQlpZiAoZW50cnktPmlkID09IGlkKSB7CisJCQlrcmVmX2dl dCgmZW50cnktPnJlZik7CisJCQlyZWFkX3VubG9jaygmY3R4LT5xdWV1ZWxvY2spOworCisJCQly ZXR1cm4gZW50cnk7CisJCX0KKwl9CisKKwlyZWFkX3VubG9jaygmY3R4LT5xdWV1ZWxvY2spOwor CXJldHVybiBOVUxMOworfQorCit2b2lkIG1zbV9zdWJtaXRxdWV1ZV9jbG9zZShzdHJ1Y3QgbXNt X2ZpbGVfcHJpdmF0ZSAqY3R4KQoreworCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICplbnRy eSwgKnRtcDsKKworCWlmICghY3R4KQorCQlyZXR1cm47CisKKwkvKgorCSAqIE5vIGxvY2sgbmVl ZGVkIGluIGNsb3NlIGFuZCB0aGVyZSB3b24ndAorCSAqIGJlIGFueSBtb3JlIHVzZXIgaW9jdGxz IGNvbWluZyBvdXIgd2F5CisJICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0 bXAsICZjdHgtPnN1Ym1pdHF1ZXVlcywgbm9kZSkKKwkJbXNtX3N1Ym1pdHF1ZXVlX3B1dChlbnRy eSk7Cit9CisKK2ludCBtc21fc3VibWl0cXVldWVfY3JlYXRlKHN0cnVjdCBtc21fZmlsZV9wcml2 YXRlICpjdHgsIHUzMiBwcmlvLCB1MzIgZmxhZ3MsCisJCXUzMiAqaWQpCit7CisJc3RydWN0IG1z bV9ncHVfc3VibWl0cXVldWUgKnF1ZXVlOworCisJaWYgKCFjdHgpCisJCXJldHVybiAtRU5PREVW OworCisJcXVldWUgPSBremFsbG9jKHNpemVvZigqcXVldWUpLCBHRlBfS0VSTkVMKTsKKworCWlm ICghcXVldWUpCisJCXJldHVybiAtRU5PTUVNOworCisJa3JlZl9pbml0KCZxdWV1ZS0+cmVmKTsK KwlxdWV1ZS0+ZmxhZ3MgPSBmbGFnczsKKwlxdWV1ZS0+cHJpbyA9IHByaW87CisKKwl3cml0ZV9s b2NrKCZjdHgtPnF1ZXVlbG9jayk7CisKKwlxdWV1ZS0+aWQgPSBjdHgtPnF1ZXVlaWQrKzsKKwor CWlmIChpZCkKKwkJKmlkID0gcXVldWUtPmlkOworCisJbGlzdF9hZGRfdGFpbCgmcXVldWUtPm5v ZGUsICZjdHgtPnN1Ym1pdHF1ZXVlcyk7CisKKwl3cml0ZV91bmxvY2soJmN0eC0+cXVldWVsb2Nr KTsKKworCXJldHVybiAwOworfQorCitpbnQgbXNtX3N1Ym1pdHF1ZXVlX2luaXQoc3RydWN0IG1z bV9maWxlX3ByaXZhdGUgKmN0eCkKK3sKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIDA7CisKKwlJTklU X0xJU1RfSEVBRCgmY3R4LT5zdWJtaXRxdWV1ZXMpOworCisJcndsb2NrX2luaXQoJmN0eC0+cXVl dWVsb2NrKTsKKworCXJldHVybiBtc21fc3VibWl0cXVldWVfY3JlYXRlKGN0eCwgMiwgMCwgTlVM TCk7Cit9CisKK2ludCBtc21fc3VibWl0cXVldWVfcmVtb3ZlKHN0cnVjdCBtc21fZmlsZV9wcml2 YXRlICpjdHgsIHUzMiBpZCkKK3sKKwlzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSAqZW50cnk7 CisKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIGlkIDAgaXMgdGhlICJkZWZh dWx0IiBxdWV1ZSBhbmQgY2FuJ3QgYmUgZGVzdHJveWVkCisJICogYnkgdGhlIHVzZXIKKwkgKi8K KwlpZiAoIWlkKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXdyaXRlX2xvY2soJmN0eC0+cXVldWVs b2NrKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZjdHgtPnN1Ym1pdHF1ZXVlcywg bm9kZSkgeworCQlpZiAoZW50cnktPmlkID09IGlkKSB7CisJCQlsaXN0X2RlbCgmZW50cnktPm5v ZGUpOworCQkJd3JpdGVfdW5sb2NrKCZjdHgtPnF1ZXVlbG9jayk7CisKKwkJCW1zbV9zdWJtaXRx dWV1ZV9wdXQoZW50cnkpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwl3cml0ZV91bmxvY2so JmN0eC0+cXVldWVsb2NrKTsKKwlyZXR1cm4gLUVOT0VOVDsKK30KKwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS91YXBpL2RybS9tc21fZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL21zbV9kcm0uaAppbmRl eCBhZDRlYjI4Li45ZmI0YjgxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL21zbV9kcm0u aAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL21zbV9kcm0uaApAQCAtMjE4LDYgKzIxOCw3IEBAIHN0 cnVjdCBkcm1fbXNtX2dlbV9zdWJtaXQgewogCV9fdTY0IGJvczsgICAgICAgICAgICAvKiBpbiwg cHRyIHRvIGFycmF5IG9mIHN1Ym1pdF9ibydzICovCiAJX191NjQgY21kczsgICAgICAgICAgIC8q IGluLCBwdHIgdG8gYXJyYXkgb2Ygc3VibWl0X2NtZCdzICovCiAJX19zMzIgZmVuY2VfZmQ7ICAg ICAgIC8qIGluL291dCBmZW5jZSBmZCAoc2VlIE1TTV9TVUJNSVRfRkVOQ0VfRkRfSU4vT1VUKSAq LworCV9fdTMyIHF1ZXVlaWQ7ICAgICAgICAgLyogaW4sIHN1Ym1pdHF1ZXVlIGlkICovCiB9Owog CiAvKiBUaGUgbm9ybWFsIHdheSB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBHUFUgaXMganVzdCB0 byBDUFVfUFJFUCBvbgpAQCAtMjU0LDYgKzI1NSwyMCBAQCBzdHJ1Y3QgZHJtX21zbV9nZW1fbWFk dmlzZSB7CiAJX191MzIgcmV0YWluZWQ7ICAgICAgIC8qIG91dCwgd2hldGhlciBiYWNraW5nIHN0 b3JlIHN0aWxsIGV4aXN0cyAqLwogfTsKIAorLyoKKyAqIERyYXcgcXVldWVzIGFsbG93IHRoZSB1 c2VyIHRvIHNldCBzcGVjaWZpYyBzdWJtaXNzaW9uIHBhcmFtZXRlci4gQ29tbWFuZAorICogc3Vi bWlzc2lvbnMgc3BlY2lmeSBhIHNwZWNpZmljIHN1Ym1pdHF1ZXVlIHRvIHVzZS4gIElEIDAgaXMg cmVzZXJ2ZWQgZm9yCisgKiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhcyBhICJkZWZhdWx0IiBz dWJtaXRxdWV1ZQorICovCisKKyNkZWZpbmUgTVNNX1NVQk1JVFFVRVVFX0ZMQUdTICgwKQorCitz dHJ1Y3QgZHJtX21zbV9zdWJtaXRxdWV1ZSB7CisJX191MzIgZmxhZ3M7ICAgLyogaW4sIE1TTV9T VUJNSVRRVUVVRV94ICovCisJX191MzIgcHJpbzsgICAgLyogaW4sIFByaW9yaXR5IGxldmVsICov CisJX191MzIgaWQ7ICAgICAgLyogb3V0LCBpZGVudGlmaWVyICovCit9OworCiAjZGVmaW5lIERS TV9NU01fR0VUX1BBUkFNICAgICAgICAgICAgICAweDAwCiAvKiBwbGFjZWhvbGRlcjoKICNkZWZp bmUgRFJNX01TTV9TRVRfUEFSQU0gICAgICAgICAgICAgIDB4MDEKQEAgLTI2NSw2ICsyODAsMTEg QEAgc3RydWN0IGRybV9tc21fZ2VtX21hZHZpc2UgewogI2RlZmluZSBEUk1fTVNNX0dFTV9TVUJN SVQgICAgICAgICAgICAgMHgwNgogI2RlZmluZSBEUk1fTVNNX1dBSVRfRkVOQ0UgICAgICAgICAg ICAgMHgwNwogI2RlZmluZSBEUk1fTVNNX0dFTV9NQURWSVNFICAgICAgICAgICAgMHgwOAorLyog cGxhY2Vob2xkZXI6CisjZGVmaW5lIERSTV9NU01fR0VNX1NWTV9ORVcgICAgICAgICAgICAgIDB4 MDkKKyAqLworI2RlZmluZSBEUk1fTVNNX1NVQk1JVFFVRVVFX05FVyAgICAgICAgICAweDBBCisj ZGVmaW5lIERSTV9NU01fU1VCTUlUUVVFVUVfQ0xPU0UgICAgICAgIDB4MEIKIAogI2RlZmluZSBE Uk1fSU9DVExfTVNNX0dFVF9QQVJBTSAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9NU01fR0VUX1BBUkFNLCBzdHJ1Y3QgZHJtX21zbV9wYXJhbSkKICNkZWZpbmUgRFJNX0lP Q1RMX01TTV9HRU1fTkVXICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f TVNNX0dFTV9ORVcsIHN0cnVjdCBkcm1fbXNtX2dlbV9uZXcpCkBAIC0yNzQsNiArMjk0LDggQEAg c3RydWN0IGRybV9tc21fZ2VtX21hZHZpc2UgewogI2RlZmluZSBEUk1fSU9DVExfTVNNX0dFTV9T VUJNSVQgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9NU01fR0VNX1NVQk1J VCwgc3RydWN0IGRybV9tc21fZ2VtX3N1Ym1pdCkKICNkZWZpbmUgRFJNX0lPQ1RMX01TTV9XQUlU X0ZFTkNFICAgICAgIERSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTVNNX1dBSVRfRkVO Q0UsIHN0cnVjdCBkcm1fbXNtX3dhaXRfZmVuY2UpCiAjZGVmaW5lIERSTV9JT0NUTF9NU01fR0VN X01BRFZJU0UgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX01TTV9HRU1fTUFE VklTRSwgc3RydWN0IGRybV9tc21fZ2VtX21hZHZpc2UpCisjZGVmaW5lIERSTV9JT0NUTF9NU01f U1VCTUlUUVVFVUVfTkVXICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTVNNX1NV Qk1JVFFVRVVFX05FVywgc3RydWN0IGRybV9tc21fc3VibWl0cXVldWUpCisjZGVmaW5lIERSTV9J T0NUTF9NU01fU1VCTUlUUVVFVUVfQ0xPU0UgIERSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fTVNNX1NVQk1JVFFVRVVFX0NMT1NFLCBfX3UzMikKIAogI2lmIGRlZmluZWQoX19jcGx1c3Bs dXMpCiB9Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==