From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sharat Masetty Subject: [PATCH 5/6] drm/msm/Adreno: Refactor some preemption code Date: Thu, 8 Mar 2018 11:36:24 +0530 Message-ID: <1520489185-21828-6-git-send-email-smasetty@codeaurora.org> References: <1520489185-21828-1-git-send-email-smasetty@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520489185-21828-1-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Sharat Masetty , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org VGhlIHByZWVtcHRpb24gc3RhdGUgbWFjaGluZSByZWxhdGVkIGNvZGUgaXMgc2FtZSBhY3Jvc3Mg QWRyZW5vIHRhcmdldHMsCnNvIG1vdmUgdGhlIGNvbW1vbiBjb2RlIHRvIGEgY29tbW9uIGhlYWRl ciBmaWxlIHRvIGF2b2lkIGNvZGUKZHVwbGljYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBTaGFyYXQg TWFzZXR0eSA8c21hc2V0dHlAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9hZHJlbm8vYTV4eF9ncHUuaCAgICAgfCAyNiAtLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vYWRyZW5vL2E1eHhfcHJlZW1wdC5jIHwgNTUgKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHUuaCAgICAgfCAy NiAtLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfcHJlZW1w dC5jIHwgNTUgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDUgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTMyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmggYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5oCmluZGV4IDdkNzE4NjAuLjQ1NTM1 ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuaApAQCAtNTQsMzIgKzU0LDYg QEAgc3RydWN0IGE1eHhfZ3B1IHsKICNlbmRpZgogCiAvKgotICogSW4gb3JkZXIgdG8gZG8gbG9j a2xlc3MgcHJlZW1wdGlvbiB3ZSB1c2UgYSBzaW1wbGUgc3RhdGUgbWFjaGluZSB0byBwcm9ncmVz cwotICogdGhyb3VnaCB0aGUgcHJvY2Vzcy4KLSAqCi0gKiBQUkVFTVBUX05PTkUgLSBubyBwcmVl bXB0aW9uIGluIHByb2dyZXNzLiAgTmV4dCBzdGF0ZSBTVEFSVC4KLSAqIFBSRUVNUFRfU1RBUlQg LSBUaGUgdHJpZ2dlciBpcyBldmF1bGF0aW5nIGlmIHByZWVtcHRpb24gaXMgcG9zc2libGUuIE5l eHQKLSAqIHN0YXRlczogVFJJR0dFUkVELCBOT05FCi0gKiBQUkVFTVBUX0FCT1JUIC0gQW4gaW50 ZXJtZWRpYXRlIHN0YXRlIGJlZm9yZSBtb3ZpbmcgYmFjayB0byBOT05FLiBOZXh0Ci0gKiBzdGF0 ZTogTk9ORS4KLSAqIFBSRUVNUFRfVFJJR0dFUkVEOiBBIHByZWVtcHRpb24gaGFzIGJlZW4gZXhl Y3V0ZWQgb24gdGhlIGhhcmR3YXJlLiBOZXh0Ci0gKiBzdGF0ZXM6IEZBVUxURUQsIFBFTkRJTkcK LSAqIFBSRUVNUFRfRkFVTFRFRDogQSBwcmVlbXB0aW9uIHRpbWVkIG91dCAobmV2ZXIgY29tcGxl dGVkKS4gVGhpcyB3aWxsIHRyaWdnZXIKLSAqIHJlY292ZXJ5LiAgTmV4dCBzdGF0ZTogTi9BCi0g KiBQUkVFTVBUX1BFTkRJTkc6IFByZWVtcHRpb24gY29tcGxldGUgaW50ZXJydXB0IGZpcmVkIC0g dGhlIGNhbGxiYWNrIGlzCi0gKiBjaGVja2luZyB0aGUgc3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9u LiBOZXh0IHN0YXRlOiBGQVVMVEVELCBOT05FLgotICovCi0KLWVudW0gcHJlZW1wdF9zdGF0ZSB7 Ci0JUFJFRU1QVF9OT05FID0gMCwKLQlQUkVFTVBUX1NUQVJULAotCVBSRUVNUFRfQUJPUlQsCi0J UFJFRU1QVF9UUklHR0VSRUQsCi0JUFJFRU1QVF9GQVVMVEVELAotCVBSRUVNUFRfUEVORElORywK LX07Ci0KLS8qCiAgKiBzdHJ1Y3QgYTV4eF9wcmVlbXB0X3JlY29yZCBpcyBhIHNoYXJlZCBidWZm ZXIgYmV0d2VlbiB0aGUgbWljcm9jb2RlIGFuZCB0aGUKICAqIENQVSB0byBzdG9yZSB0aGUgc3Rh dGUgZm9yIHByZWVtcHRpb24uIFRoZSByZWNvcmQgaXRzZWxmIGlzIG11Y2ggbGFyZ2VyCiAgKiAo NjRrKSBidXQgbW9zdCBvZiB0aGF0IGlzIHVzZWQgYnkgdGhlIENQIGZvciBzdG9yYWdlLgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wcmVlbXB0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQuYwppbmRleCA0MGY0ODQwLi5mYWY4 NDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQuYwpAQCAtMTQs MzcgKzE0LDYgQEAKICNpbmNsdWRlICJtc21fZ2VtLmgiCiAjaW5jbHVkZSAiYTV4eF9ncHUuaCIK IAotLyoKLSAqIFRyeSB0byB0cmFuc2l0aW9uIHRoZSBwcmVlbXB0aW9uIHN0YXRlIGZyb20gb2xk IHRvIG5ldy4gUmV0dXJuCi0gKiB0cnVlIG9uIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgdGhlIG9yaWdp bmFsIHN0YXRlIHdhc24ndCAnb2xkJwotICovCi1zdGF0aWMgaW5saW5lIGJvb2wgdHJ5X3ByZWVt cHRfc3RhdGUoc3RydWN0IGE1eHhfZ3B1ICphNXh4X2dwdSwKLQkJZW51bSBwcmVlbXB0X3N0YXRl IG9sZCwgZW51bSBwcmVlbXB0X3N0YXRlIG5ldykKLXsKLQllbnVtIHByZWVtcHRfc3RhdGUgY3Vy ID0gYXRvbWljX2NtcHhjaGcoJmE1eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLAotCQlvbGQsIG5ldyk7 Ci0KLQlyZXR1cm4gKGN1ciA9PSBvbGQpOwotfQotCi0vKgotICogRm9yY2UgdGhlIHByZWVtcHRp b24gc3RhdGUgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZS4gIFRoaXMgaXMgdXNlZCBpbiBjYXNlcwot ICogd2hlcmUgdGhlIGN1cnJlbnQgc3RhdGUgaXMga25vd24gYW5kIHdvbid0IGNoYW5nZQotICov Ci1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X3ByZWVtcHRfc3RhdGUoc3RydWN0IGE1eHhfZ3B1ICpn cHUsCi0JCWVudW0gcHJlZW1wdF9zdGF0ZSBuZXcpCi17Ci0JLyoKLQkgKiBwcmVlbXB0X3N0YXRl IG1heSBiZSByZWFkIGJ5IG90aGVyIGNvcmVzIHRyeWluZyB0byB0cmlnZ2VyIGEKLQkgKiBwcmVl bXB0aW9uIG9yIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBzbyBiYXJyaWVycyBhcmUgbmVlZGVk Ci0JICogYmVmb3JlLi4uCi0JICovCi0Jc21wX21iX19iZWZvcmVfYXRvbWljKCk7Ci0JYXRvbWlj X3NldCgmZ3B1LT5wcmVlbXB0X3N0YXRlLCBuZXcpOwotCS8qIC4uLiBhbmQgYWZ0ZXIqLwotCXNt cF9tYl9fYWZ0ZXJfYXRvbWljKCk7Ci19Ci0KIC8qIFdyaXRlIHRoZSBtb3N0IHJlY2VudCB3cHRy IGZvciB0aGUgZ2l2ZW4gcmluZyBpbnRvIHRoZSBoYXJkd2FyZSAqLwogc3RhdGljIGlubGluZSB2 b2lkIHVwZGF0ZV93cHRyKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZl ciAqcmluZykKIHsKQEAgLTg5LDcgKzU4LDggQEAgc3RhdGljIHZvaWQgYTV4eF9wcmVlbXB0X3Rp bWVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1LT5k ZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAK LQlpZiAoIXRyeV9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1LCBQUkVFTVBUX1RSSUdHRVJFRCwgUFJF RU1QVF9GQVVMVEVEKSkKKwlpZiAoIWFkcmVub190cnlfcHJlZW1wdF9zdGF0ZSgmYTV4eF9ncHUt PnByZWVtcHRfc3RhdGUsCisJCQkJUFJFRU1QVF9UUklHR0VSRUQsIFBSRUVNUFRfRkFVTFRFRCkp CiAJCXJldHVybjsKIAogCWRldl9lcnIoZGV2LT5kZXYsICIlczogcHJlZW1wdGlvbiB0aW1lZCBv dXRcbiIsIGdwdS0+bmFtZSk7CkBAIC0xMTEsNyArODEsOCBAQCB2b2lkIGE1eHhfcHJlZW1wdF90 cmlnZ2VyKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJICogVHJ5IHRvIHN0YXJ0IHByZWVtcHRpb24g YnkgbW92aW5nIGZyb20gTk9ORSB0byBTVEFSVC4gSWYKIAkgKiB1bnN1Y2Nlc3NmdWwsIGEgcHJl ZW1wdGlvbiBpcyBhbHJlYWR5IGluIGZsaWdodAogCSAqLwotCWlmICghdHJ5X3ByZWVtcHRfc3Rh dGUoYTV4eF9ncHUsIFBSRUVNUFRfTk9ORSwgUFJFRU1QVF9TVEFSVCkpCisJaWYgKCFhZHJlbm9f dHJ5X3ByZWVtcHRfc3RhdGUoJmE1eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLAorCQkJCVBSRUVNUFRf Tk9ORSwgUFJFRU1QVF9TVEFSVCkpCiAJCXJldHVybjsKIAogCS8qIEdldCB0aGUgbmV4dCByaW5n IHRvIHByZWVtcHQgdG8gKi8KQEAgLTEzNCw5ICsxMDUsMTEgQEAgdm9pZCBhNXh4X3ByZWVtcHRf dHJpZ2dlcihzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCQkgKiBhbmQgY2FuIHNhZmVseSB1cGRhdGUg dGhlIHdyaXRlIHBvaW50ZXIuCiAJCSAqLwogCi0JCXNldF9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1 LCBQUkVFTVBUX0FCT1JUKTsKKwkJYWRyZW5vX3NldF9wcmVlbXB0X3N0YXRlKCZhNXh4X2dwdS0+ cHJlZW1wdF9zdGF0ZSwKKwkJCQlQUkVFTVBUX0FCT1JUKTsKIAkJdXBkYXRlX3dwdHIoZ3B1LCBh NXh4X2dwdS0+Y3VyX3JpbmcpOwotCQlzZXRfcHJlZW1wdF9zdGF0ZShhNXh4X2dwdSwgUFJFRU1Q VF9OT05FKTsKKwkJYWRyZW5vX3NldF9wcmVlbXB0X3N0YXRlKCZhNXh4X2dwdS0+cHJlZW1wdF9z dGF0ZSwKKwkJCQlQUkVFTVBUX05PTkUpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNTYsNyArMTI5 LDcgQEAgdm9pZCBhNXh4X3ByZWVtcHRfdHJpZ2dlcihzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCW1v ZF90aW1lcigmYTV4eF9ncHUtPnByZWVtcHRfdGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZm aWVzKDEwMDAwKSk7CiAKIAkvKiBTZXQgdGhlIHByZWVtcHRpb24gc3RhdGUgdG8gdHJpZ2dlcmVk ICovCi0Jc2V0X3ByZWVtcHRfc3RhdGUoYTV4eF9ncHUsIFBSRUVNUFRfVFJJR0dFUkVEKTsKKwlh ZHJlbm9fc2V0X3ByZWVtcHRfc3RhdGUoJmE1eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLCBQUkVFTVBU X1RSSUdHRVJFRCk7CiAKIAkvKiBNYWtlIHN1cmUgZXZlcnl0aGluZyBpcyB3cml0dGVuIGJlZm9y ZSBoaXR0aW5nIHRoZSBidXR0b24gKi8KIAl3bWIoKTsKQEAgLTE3Myw3ICsxNDYsOCBAQCB2b2lk IGE1eHhfcHJlZW1wdF9pcnEoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZ3B1LT5kZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAKLQlpZiAoIXRyeV9wcmVlbXB0X3N0YXRlKGE1eHhfZ3B1LCBQUkVFTVBU X1RSSUdHRVJFRCwgUFJFRU1QVF9QRU5ESU5HKSkKKwlpZiAoIWFkcmVub190cnlfcHJlZW1wdF9z dGF0ZSgmYTV4eF9ncHUtPnByZWVtcHRfc3RhdGUsCisJCQkJUFJFRU1QVF9UUklHR0VSRUQsIFBS RUVNUFRfUEVORElORykpCiAJCXJldHVybjsKIAogCS8qIERlbGV0ZSB0aGUgcHJlZW1wdGlvbiB3 YXRjaGRvZyB0aW1lciAqLwpAQCAtMTg3LDcgKzE2MSw4IEBAIHZvaWQgYTV4eF9wcmVlbXB0X2ly cShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCSAqLwogCXN0YXR1cyA9IGdwdV9yZWFkKGdwdSwgUkVH X0E1WFhfQ1BfQ09OVEVYVF9TV0lUQ0hfQ05UTCk7CiAJaWYgKHVubGlrZWx5KHN0YXR1cykpIHsK LQkJc2V0X3ByZWVtcHRfc3RhdGUoYTV4eF9ncHUsIFBSRUVNUFRfRkFVTFRFRCk7CisJCWFkcmVu b19zZXRfcHJlZW1wdF9zdGF0ZSgmYTV4eF9ncHUtPnByZWVtcHRfc3RhdGUsCisJCQkJUFJFRU1Q VF9GQVVMVEVEKTsKIAkJZGV2X2VycihkZXYtPmRldiwgIiVzOiBQcmVlbXB0aW9uIGZhaWxlZCB0 byBjb21wbGV0ZVxuIiwKIAkJCWdwdS0+bmFtZSk7CiAJCXF1ZXVlX3dvcmsocHJpdi0+d3EsICZn cHUtPnJlY292ZXJfd29yayk7CkBAIC0xOTksNyArMTc0LDcgQEAgdm9pZCBhNXh4X3ByZWVtcHRf aXJxKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAKIAl1cGRhdGVfd3B0cihncHUsIGE1eHhfZ3B1LT5j dXJfcmluZyk7CiAKLQlzZXRfcHJlZW1wdF9zdGF0ZShhNXh4X2dwdSwgUFJFRU1QVF9OT05FKTsK KwlhZHJlbm9fc2V0X3ByZWVtcHRfc3RhdGUoJmE1eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLCBQUkVF TVBUX05PTkUpOwogfQogCiB2b2lkIGE1eHhfcHJlZW1wdF9od19pbml0KHN0cnVjdCBtc21fZ3B1 ICpncHUpCkBAIC0yMTksNyArMTk0LDcgQEAgdm9pZCBhNXh4X3ByZWVtcHRfaHdfaW5pdChzdHJ1 Y3QgbXNtX2dwdSAqZ3B1KQogCQlSRUdfQTVYWF9DUF9DT05URVhUX1NXSVRDSF9TTU1VX0lORk9f SEksIDApOwogCiAJLyogUmVzZXQgdGhlIHByZWVtcHRpb24gc3RhdGUgKi8KLQlzZXRfcHJlZW1w dF9zdGF0ZShhNXh4X2dwdSwgUFJFRU1QVF9OT05FKTsKKwlhZHJlbm9fc2V0X3ByZWVtcHRfc3Rh dGUoJmE1eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLCBQUkVFTVBUX05PTkUpOwogCiAJLyogQWx3YXlz IGNvbWUgdXAgb24gcmIgMCAqLwogCWE1eHhfZ3B1LT5jdXJfcmluZyA9IGdwdS0+cmJbMF07CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dwdS5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHUuaAppbmRleCBhY2ExZDdkLi4yMWFiNzAxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dwdS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E2eHhfZ3B1LmgKQEAgLTU0LDMyICs1NCw2IEBAIHN0 cnVjdCBhNnh4X2dwdSB7CiAJKGE2eHhfZ3B1LT5zY3JhdGNoX2lvdmEgKyAocmluZ19pZCAqIHNp emVvZih1aW50NjRfdCkpKQogCiAvKgotICogSW4gb3JkZXIgdG8gZG8gbG9ja2xlc3MgcHJlZW1w dGlvbiB3ZSB1c2UgYSBzaW1wbGUgc3RhdGUgbWFjaGluZSB0byBwcm9ncmVzcwotICogdGhyb3Vn aCB0aGUgcHJvY2Vzcy4KLSAqCi0gKiBQUkVFTVBUX05PTkUgLSBubyBwcmVlbXB0aW9uIGluIHBy b2dyZXNzLiAgTmV4dCBzdGF0ZSBTVEFSVC4KLSAqIFBSRUVNUFRfU1RBUlQgLSBUaGUgdHJpZ2dl ciBpcyBldmFsdWF0aW5nIGlmIHByZWVtcHRpb24gaXMgcG9zc2libGUuIE5leHQKLSAqIHN0YXRl czogVFJJR0dFUkVELCBOT05FCi0gKiBQUkVFTVBUX0FCT1JUIC0gQW4gaW50ZXJtZWRpYXRlIHN0 YXRlIGJlZm9yZSBtb3ZpbmcgYmFjayB0byBOT05FLiBOZXh0Ci0gKiBzdGF0ZTogTk9ORS4KLSAq IFBSRUVNUFRfVFJJR0dFUkVEOiBBIHByZWVtcHRpb24gaGFzIGJlZW4gZXhlY3V0ZWQgb24gdGhl IGhhcmR3YXJlLiBOZXh0Ci0gKiBzdGF0ZXM6IEZBVUxURUQsIFBFTkRJTkcKLSAqIFBSRUVNUFRf RkFVTFRFRDogQSBwcmVlbXB0aW9uIHRpbWVkIG91dCAobmV2ZXIgY29tcGxldGVkKS4gVGhpcyB3 aWxsIHRyaWdnZXIKLSAqIHJlY292ZXJ5LiAgTmV4dCBzdGF0ZTogTi9BCi0gKiBQUkVFTVBUX1BF TkRJTkc6IFByZWVtcHRpb24gY29tcGxldGUgaW50ZXJydXB0IGZpcmVkIC0gdGhlIGNhbGxiYWNr IGlzCi0gKiBjaGVja2luZyB0aGUgc3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9uLiBOZXh0IHN0YXRl OiBGQVVMVEVELCBOT05FLgotICovCi0KLWVudW0gYTZ4eF9wcmVlbXB0X3N0YXRlIHsKLQlQUkVF TVBUX05PTkUgPSAwLAotCVBSRUVNUFRfU1RBUlQsCi0JUFJFRU1QVF9BQk9SVCwKLQlQUkVFTVBU X1RSSUdHRVJFRCwKLQlQUkVFTVBUX0ZBVUxURUQsCi0JUFJFRU1QVF9QRU5ESU5HLAotfTsKLQot LyoKICAqIElEIHZhbHVlcyB1c2VkIGJ5IFNFVF9QU0VVRE9fUkVHIFBNNCBjb21tYW5kLiBUaGVz ZSBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlCiAgKiB2YXJpb3VzIGludGVybmFsIENQIHJlZ2lzdGVy cyB0byB3cml0ZSB0by4gVXNlZCBpbiB0aGUgc2F2ZS9yZXN0b3JlCiAgKiBwcmVlbXB0aW9uIHNl cXVlbmNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9wcmVl bXB0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X3ByZWVtcHQuYwppbmRleCA2 MGRmNmM1Li4wZDJiNjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9h Nnh4X3ByZWVtcHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X3ByZWVt cHQuYwpAQCAtNSwzNyArNSw2IEBACiAjaW5jbHVkZSAiYTZ4eF9ncHUuaCIKICNpbmNsdWRlICJh Nnh4X2dtdS54bWwuaCIKIAotLyoKLSAqIFRyeSB0byB0cmFuc2l0aW9uIHRoZSBwcmVlbXB0aW9u IHN0YXRlIGZyb20gb2xkIHRvIG5ldy4gUmV0dXJuCi0gKiB0cnVlIG9uIHN1Y2Nlc3Mgb3IgZmFs c2UgaWYgdGhlIG9yaWdpbmFsIHN0YXRlIHdhc24ndCAnb2xkJwotICovCi1zdGF0aWMgaW5saW5l IGJvb2wgdHJ5X3ByZWVtcHRfc3RhdGUoc3RydWN0IGE2eHhfZ3B1ICphNnh4X2dwdSwKLQkJZW51 bSBhNnh4X3ByZWVtcHRfc3RhdGUgb2xkLCBlbnVtIGE2eHhfcHJlZW1wdF9zdGF0ZSBuZXcpCi17 Ci0JZW51bSBhNnh4X3ByZWVtcHRfc3RhdGUgY3VyID0gYXRvbWljX2NtcHhjaGcoJmE2eHhfZ3B1 LT5wcmVlbXB0X3N0YXRlLAotCQlvbGQsIG5ldyk7Ci0KLQlyZXR1cm4gKGN1ciA9PSBvbGQpOwot fQotCi0vKgotICogRm9yY2UgdGhlIHByZWVtcHRpb24gc3RhdGUgdG8gdGhlIHNwZWNpZmllZCBz dGF0ZS4gIFRoaXMgaXMgdXNlZCBpbiBjYXNlcwotICogd2hlcmUgdGhlIGN1cnJlbnQgc3RhdGUg aXMga25vd24gYW5kIHdvbid0IGNoYW5nZQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X3By ZWVtcHRfc3RhdGUoc3RydWN0IGE2eHhfZ3B1ICpncHUsCi0JCWVudW0gYTZ4eF9wcmVlbXB0X3N0 YXRlIG5ldykKLXsKLQkvKgotCSAqIHByZWVtcHRfc3RhdGUgbWF5IGJlIHJlYWQgYnkgb3RoZXIg Y29yZXMgdHJ5aW5nIHRvIHRyaWdnZXIgYQotCSAqIHByZWVtcHRpb24gb3IgaW4gdGhlIGludGVy cnVwdCBoYW5kbGVyIHNvIGJhcnJpZXJzIGFyZSBuZWVkZWQKLQkgKiBiZWZvcmUuLi4KLQkgKi8K LQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQlhdG9taWNfc2V0KCZncHUtPnByZWVtcHRfc3Rh dGUsIG5ldyk7Ci0JLyogLi4uIGFuZCBhZnRlciovCi0Jc21wX21iX19hZnRlcl9hdG9taWMoKTsK LX0KLQogLyogV3JpdGUgdGhlIG1vc3QgcmVjZW50IHdwdHIgZm9yIHRoZSBnaXZlbiByaW5nIGlu dG8gdGhlIGhhcmR3YXJlICovCiBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlX3dwdHIoc3RydWN0 IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogewpAQCAtODAsNyAr NDksOCBAQCBzdGF0aWMgdm9pZCBhNnh4X3ByZWVtcHRfdGltZXIodW5zaWduZWQgbG9uZyBkYXRh KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBncHUtPmRldjsKIAlzdHJ1Y3QgbXNtX2RybV9w cml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAotCWlmICghdHJ5X3ByZWVtcHRfc3Rh dGUoYTZ4eF9ncHUsIFBSRUVNUFRfVFJJR0dFUkVELCBQUkVFTVBUX0ZBVUxURUQpKQorCWlmICgh YWRyZW5vX3RyeV9wcmVlbXB0X3N0YXRlKCZhNnh4X2dwdS0+cHJlZW1wdF9zdGF0ZSwKKwkJCQlQ UkVFTVBUX1RSSUdHRVJFRCwgUFJFRU1QVF9GQVVMVEVEKSkKIAkJcmV0dXJuOwogCiAJZGV2X2Vy cihkZXYtPmRldiwgIiVzOiBwcmVlbXB0aW9uIHRpbWVkIG91dFxuIiwgZ3B1LT5uYW1lKTsKQEAg LTk1LDcgKzY1LDggQEAgdm9pZCBhNnh4X3ByZWVtcHRfaXJxKHN0cnVjdCBtc21fZ3B1ICpncHUp CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGdwdS0+ZGV2OwogCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JaWYgKCF0cnlfcHJlZW1wdF9zdGF0 ZShhNnh4X2dwdSwgUFJFRU1QVF9UUklHR0VSRUQsIFBSRUVNUFRfUEVORElORykpCisJaWYgKCFh ZHJlbm9fdHJ5X3ByZWVtcHRfc3RhdGUoJmE2eHhfZ3B1LT5wcmVlbXB0X3N0YXRlLAorCQkJCVBS RUVNUFRfVFJJR0dFUkVELCBQUkVFTVBUX1BFTkRJTkcpKQogCQlyZXR1cm47CiAKIAkvKiBEZWxl dGUgdGhlIHByZWVtcHRpb24gd2F0Y2hkb2cgdGltZXIgKi8KQEAgLTExMCw3ICs4MSw4IEBAIHZv aWQgYTZ4eF9wcmVlbXB0X2lycShzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQogCSAqLwogCXN0YXR1cyA9 IGdwdV9yZWFkKGdwdSwgUkVHX0E2WFhfQ1BfQ09OVEVYVF9TV0lUQ0hfQ05UTCk7CiAJaWYgKHVu bGlrZWx5KHN0YXR1cyAmIDB4MSkpIHsKLQkJc2V0X3ByZWVtcHRfc3RhdGUoYTZ4eF9ncHUsIFBS RUVNUFRfRkFVTFRFRCk7CisJCWFkcmVub19zZXRfcHJlZW1wdF9zdGF0ZSgmYTZ4eF9ncHUtPnBy ZWVtcHRfc3RhdGUsCisJCQkJUFJFRU1QVF9GQVVMVEVEKTsKIAkJZGV2X2VycihkZXYtPmRldiwg IiVzOiBQcmVlbXB0aW9uIGZhaWxlZCB0byBjb21wbGV0ZVxuIiwKIAkJCWdwdS0+bmFtZSk7CiAJ CXF1ZXVlX3dvcmsocHJpdi0+d3EsICZncHUtPnJlY292ZXJfd29yayk7CkBAIC0xMjIsNyArOTQs NyBAQCB2b2lkIGE2eHhfcHJlZW1wdF9pcnEoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAogCXVwZGF0 ZV93cHRyKGdwdSwgYTZ4eF9ncHUtPmN1cl9yaW5nKTsKIAotCXNldF9wcmVlbXB0X3N0YXRlKGE2 eHhfZ3B1LCBQUkVFTVBUX05PTkUpOworCWFkcmVub19zZXRfcHJlZW1wdF9zdGF0ZSgmYTZ4eF9n cHUtPnByZWVtcHRfc3RhdGUsIFBSRUVNUFRfTk9ORSk7CiB9CiAKIHZvaWQgYTZ4eF9wcmVlbXB0 X2h3X2luaXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKQEAgLTE1MSw3ICsxMjMsNyBAQCB2b2lkIGE2 eHhfcHJlZW1wdF9od19pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJZ3B1X3dyaXRlKGdwdSwg UkVHX0E2WFhfUkJfQ09OVEVYVF9TV0lUQ0hfR01FTV9TQVZFX1JFU1RPUkUsIDB4MSk7CiAKIAkv KiBSZXNldCB0aGUgcHJlZW1wdGlvbiBzdGF0ZSAqLwotCXNldF9wcmVlbXB0X3N0YXRlKGE2eHhf Z3B1LCBQUkVFTVBUX05PTkUpOworCWFkcmVub19zZXRfcHJlZW1wdF9zdGF0ZSgmYTZ4eF9ncHUt PnByZWVtcHRfc3RhdGUsIFBSRUVNUFRfTk9ORSk7CiAKIAkvKiBBbHdheXMgY29tZSB1cCBvbiBy YiAwICovCiAJYTZ4eF9ncHUtPmN1cl9yaW5nID0gZ3B1LT5yYlswXTsKQEAgLTE3NSw3ICsxNDcs OCBAQCB2b2lkIGE2eHhfcHJlZW1wdF90cmlnZ2VyKHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJICog VHJ5IHRvIHN0YXJ0IHByZWVtcHRpb24gYnkgbW92aW5nIGZyb20gTk9ORSB0byBTVEFSVC4gSWYK IAkgKiB1bnN1Y2Nlc3NmdWwsIGEgcHJlZW1wdGlvbiBpcyBhbHJlYWR5IGluIGZsaWdodAogCSAq LwotCWlmICghdHJ5X3ByZWVtcHRfc3RhdGUoYTZ4eF9ncHUsIFBSRUVNUFRfTk9ORSwgUFJFRU1Q VF9TVEFSVCkpCisJaWYgKCFhZHJlbm9fdHJ5X3ByZWVtcHRfc3RhdGUoJmE2eHhfZ3B1LT5wcmVl bXB0X3N0YXRlLAorCQkJCVBSRUVNUFRfTk9ORSwgUFJFRU1QVF9TVEFSVCkpCiAJCXJldHVybjsK IAogCWNudGwgPSAoKChhNnh4X2dwdS0+cHJlZW1wdF9sZXZlbCA8PCA2KSAmIDB4QzApIHwKQEAg LTE5MCw5ICsxNjMsMTEgQEAgdm9pZCBhNnh4X3ByZWVtcHRfdHJpZ2dlcihzdHJ1Y3QgbXNtX2dw dSAqZ3B1KQogCSAqIG9uZSBkbyBub3RoaW5nIGV4Y2VwdCB0byB1cGRhdGUgdGhlIHdwdHIgdG8g dGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QKIAkgKi8KIAlpZiAoIXJpbmcgfHwgKGE2eHhfZ3B1LT5j dXJfcmluZyA9PSByaW5nKSkgewotCQlzZXRfcHJlZW1wdF9zdGF0ZShhNnh4X2dwdSwgUFJFRU1Q VF9BQk9SVCk7CisJCWFkcmVub19zZXRfcHJlZW1wdF9zdGF0ZSgmYTZ4eF9ncHUtPnByZWVtcHRf c3RhdGUsCisJCQkJUFJFRU1QVF9BQk9SVCk7CiAJCXVwZGF0ZV93cHRyKGdwdSwgYTZ4eF9ncHUt PmN1cl9yaW5nKTsKLQkJc2V0X3ByZWVtcHRfc3RhdGUoYTZ4eF9ncHUsIFBSRUVNUFRfTk9ORSk7 CisJCWFkcmVub19zZXRfcHJlZW1wdF9zdGF0ZSgmYTZ4eF9ncHUtPnByZWVtcHRfc3RhdGUsCisJ CQkJUFJFRU1QVF9OT05FKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMjQzLDcgKzIxOCw3IEBAIHZv aWQgYTZ4eF9wcmVlbXB0X3RyaWdnZXIoc3RydWN0IG1zbV9ncHUgKmdwdSkKIAltb2RfdGltZXIo JmE2eHhfZ3B1LT5wcmVlbXB0X3RpbWVyLCBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcygxMDAw MCkpOwogCiAJLyogU2V0IHRoZSBwcmVlbXB0aW9uIHN0YXRlIHRvIHRyaWdnZXJlZCAqLwotCXNl dF9wcmVlbXB0X3N0YXRlKGE2eHhfZ3B1LCBQUkVFTVBUX1RSSUdHRVJFRCk7CisJYWRyZW5vX3Nl dF9wcmVlbXB0X3N0YXRlKCZhNnh4X2dwdS0+cHJlZW1wdF9zdGF0ZSwgUFJFRU1QVF9UUklHR0VS RUQpOwogCiAJLyogTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgd3JpdHRlbiBiZWZvcmUgaGl0dGlu ZyB0aGUgYnV0dG9uICovCiAJd21iKCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2FkcmVuby9hZHJlbm9fZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9f Z3B1LmgKaW5kZXggOTQ3NjRkMC4uYmI5YWZmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5v L2FkcmVub19ncHUuaApAQCAtMzY4LDQgKzM2OCw1OCBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90 IGdldF93cHRyKHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykKIAkoKDEgPDwgMjkpIFwKIAko KGlsb2cyKChfbGVuKSkgJiAweDFGKSA8PCAyNCkgfCAoKChfcmVnKSA8PCAyKSAmIDB4RkZGRkYp KQogCisvKgorICogSW4gb3JkZXIgdG8gZG8gbG9ja2xlc3MgcHJlZW1wdGlvbiB3ZSB1c2UgYSBz aW1wbGUgc3RhdGUgbWFjaGluZSB0byBwcm9ncmVzcworICogdGhyb3VnaCB0aGUgcHJvY2Vzcy4K KyAqCisgKiBQUkVFTVBUX05PTkUgLSBubyBwcmVlbXB0aW9uIGluIHByb2dyZXNzLiAgTmV4dCBz dGF0ZSBTVEFSVC4KKyAqIFBSRUVNUFRfU1RBUlQgLSBUaGUgdHJpZ2dlciBpcyBldmFsdWF0aW5n IGlmIHByZWVtcHRpb24gaXMgcG9zc2libGUuIE5leHQKKyAqIHN0YXRlczogVFJJR0dFUkVELCBO T05FCisgKiBQUkVFTVBUX0FCT1JUIC0gQW4gaW50ZXJtZWRpYXRlIHN0YXRlIGJlZm9yZSBtb3Zp bmcgYmFjayB0byBOT05FLiBOZXh0CisgKiBzdGF0ZTogTk9ORS4KKyAqIFBSRUVNUFRfVFJJR0dF UkVEOiBBIHByZWVtcHRpb24gaGFzIGJlZW4gZXhlY3V0ZWQgb24gdGhlIGhhcmR3YXJlLiBOZXh0 CisgKiBzdGF0ZXM6IEZBVUxURUQsIFBFTkRJTkcKKyAqIFBSRUVNUFRfRkFVTFRFRDogQSBwcmVl bXB0aW9uIHRpbWVkIG91dCAobmV2ZXIgY29tcGxldGVkKS4gVGhpcyB3aWxsIHRyaWdnZXIKKyAq IHJlY292ZXJ5LiAgTmV4dCBzdGF0ZTogTi9BCisgKiBQUkVFTVBUX1BFTkRJTkc6IFByZWVtcHRp b24gY29tcGxldGUgaW50ZXJydXB0IGZpcmVkIC0gdGhlIGNhbGxiYWNrIGlzCisgKiBjaGVja2lu ZyB0aGUgc3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9uLiBOZXh0IHN0YXRlOiBGQVVMVEVELCBOT05F LgorICovCitlbnVtIGFkcmVub19wcmVlbXB0X3N0YXRlIHsKKwlQUkVFTVBUX05PTkUgPSAwLAor CVBSRUVNUFRfU1RBUlQsCisJUFJFRU1QVF9BQk9SVCwKKwlQUkVFTVBUX1RSSUdHRVJFRCwKKwlQ UkVFTVBUX0ZBVUxURUQsCisJUFJFRU1QVF9QRU5ESU5HLAorfTsKKworLyoKKyAqIFRyeSB0byB0 cmFuc2l0aW9uIHRoZSBwcmVlbXB0aW9uIHN0YXRlIGZyb20gb2xkIHRvIG5ldy4gUmV0dXJuCisg KiB0cnVlIG9uIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgdGhlIG9yaWdpbmFsIHN0YXRlIHdhc24ndCAn b2xkJworICovCitzdGF0aWMgaW5saW5lIGJvb2wgYWRyZW5vX3RyeV9wcmVlbXB0X3N0YXRlKGF0 b21pY190ICpwcmVlbXB0X3N0YXRlLAorCQllbnVtIGFkcmVub19wcmVlbXB0X3N0YXRlIG9sZCwg ZW51bSBhZHJlbm9fcHJlZW1wdF9zdGF0ZSBuZXcpCit7CisJZW51bSBhZHJlbm9fcHJlZW1wdF9z dGF0ZSBjdXIgPSBhdG9taWNfY21weGNoZyhwcmVlbXB0X3N0YXRlLCBvbGQsIG5ldyk7CisKKwly ZXR1cm4gKGN1ciA9PSBvbGQpOworfQorCisvKgorICogRm9yY2UgdGhlIHByZWVtcHRpb24gc3Rh dGUgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZS4gIFRoaXMgaXMgdXNlZCBpbiBjYXNlcworICogd2hl cmUgdGhlIGN1cnJlbnQgc3RhdGUgaXMga25vd24gYW5kIHdvbid0IGNoYW5nZQorICovCitzdGF0 aWMgaW5saW5lIHZvaWQgYWRyZW5vX3NldF9wcmVlbXB0X3N0YXRlKGF0b21pY190ICpwcmVlbXB0 X3N0YXRlLAorCQllbnVtIGFkcmVub19wcmVlbXB0X3N0YXRlIG5ldykKK3sKKwkvKgorCSAqIGFk cmVub19wcmVlbXB0X3N0YXRlIG1heSBiZSByZWFkIGJ5IG90aGVyIGNvcmVzIHRyeWluZyB0byB0 cmlnZ2VyIGEKKwkgKiBwcmVlbXB0aW9uIG9yIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBzbyBi YXJyaWVycyBhcmUgbmVlZGVkCisJICogYmVmb3JlLi4uCisJICovCisJc21wX21iX19iZWZvcmVf YXRvbWljKCk7CisJYXRvbWljX3NldChwcmVlbXB0X3N0YXRlLCBuZXcpOworCS8qIC4uLiBhbmQg YWZ0ZXIqLworCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cit9CiAjZW5kaWYgLyogX19BRFJFTk9f R1BVX0hfXyAqLwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZyZWVkcmVubwo=