From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [RFC 5/8] drm/i915: Handle event stop and destroy for commands in flight Date: Wed, 5 Aug 2015 11:22:54 +0530 Message-ID: <1438753977-20335-6-git-send-email-sourab.gupta@intel.com> References: <1438753977-20335-1-git-send-email-sourab.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id CE71D6E101 for ; Tue, 4 Aug 2015 22:50:58 -0700 (PDT) In-Reply-To: <1438753977-20335-1-git-send-email-sourab.gupta@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Insoo Woo , Peter Zijlstra , Jabin Wu , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKSW4gdGhlIHBlcmlv ZGljIE9BIHNhbXBsaW5nIG1vZGUsIHRoZSBldmVudCBzdG9wIHdvdWxkIHN0b3AgZm9yd2FyZGlu ZwpzYW1wbGVzIHRvIHVzZXJzcGFjZSwgYW5kIGRpc2FibGVzIE9BIHN5bmNocm9ub3VzbHkuIFRo ZSBidWZmZXIgaXMKZGVzdHJveWVkIGV2ZW50dWFsbHkgaW4gZXZlbnQgZGVzdHJveSBjYWxsYmFj ay4gQnV0IHdoZW4gd2UgaGF2ZSBpbiBmbGlnaHQKUlBDIGNvbW1hbmRzIHNjaGVkdWxlZCBvbiBH UFUgKGxpa2UgaW4gdGhpcyBjYXNlKSwgdGhlIGhhbmRsaW5nIG9mIE9BCmRpc2FibGluZyBhbmQg YnVmZmVyIGRlc3RydWN0aW9uIGhhcyB0byB0YWtlIHRob3NlIGludG8gYWNjb3VudC4gVGhpcyBw YXRjaApoYW5kbGVzIHRoZSBldmVudCBzdG9wICYgZGVzdHJveSBjb25kaXRpb25zIGFmdGVyIGFj Y291bnRpbmcgZm9yIEdQVQpjb21tYW5kcyBpbiBmbGlnaHQgdXNpbmcgdGhlIE9BIHVuaXQuCgpO b3csIHRoZSBldmVudCBzdG9wIHdvdWxkIGp1c3Qgc2V0IHRoZSBldmVudCBzdGF0ZSwgYW5kIHN0 b3AgZm9yd2FyZGluZwpkYXRhIHRvIHVzZXJzcGFjZS4gRnJvbSB1c2Vyc3BhY2UgcGVyc3BlY3Rp dmUsIGZvciBhbGwgcHVycG9zZXMsIHRoZSBldmVudApzYW1wbGluZyBpcyBzdG9wcGVkLiBUaGlz IGlzIHRydWUgZm9yIHBlcmlvZGljIE9BIHNhbXBsZXMgYWxzby4gVGhlIE9BIHVuaXQKaXMgbm90 IGRpc2FibGVkIGhlcmUsIHNpbmNlIHRoZXJlIG1heSBiZSBSUEMgY29tbWFuZHMgc2NoZWR1bGVk IG9uIEdQVS4KQSBzdWJzZXF1ZW50IGV2ZW50IHN0YXJ0ICh3aXRob3V0IGV2ZW50IGRlc3Ryb3kp IHdvdWxkIHN0YXJ0IGZvcndhcmRpbmcKc2FtcGxlcyBhZ2Fpbi4KClRoZSBldmVudCBkZXN0cm95 IHJlbGVhc2VzIHRoZSBsb2NhbCBjb3B5IG9mIHRoZSBSQ1MgYnVmZmVyLiBCdXQgc2luY2UsIGl0 CmlzIGV4cGVjdGVkIHRoYXQgdGhlIGFjdGl2ZSByZWZlcmVuY2Ugb2YgYnVmZmVyIGlzIHRha2Vu IHdoaWxlIGluc2VydGluZwpjb21tYW5kcywgd2UgY2FuIHJlc3QgYXNzdXJlZCB0aGF0IGJ1ZmZl ciBpcyBmcmVlZCB1cCBvbmx5IGFmdGVyIEdQVSBpcwpkb25lIHdpdGggaXQuCgpTdGlsbCB0aGVy ZSBpcyBhIG5lZWQgdG8gc2NoZWR1bGUgYSB3b3JrZXIgZnJvbSBldmVudCBkZXN0cm95LCBiZWNh dXNlIHdlCm5lZWQgdG8gZG8gc29tZSBmdXJ0aGVyIHN0dWZmIGxpc3RlZCBiZWxvdyAoaW4gdGhp cyBvcmRlcikKICAgIC0gZnJlZSB1cCByZXF1ZXN0IHJlZmVyZW5jZXMKICAgIC0gZGlzYWJsZSBP QSB1bml0CiAgICAtIGRlcmVmZXJlbmNlIHBlcmlvZGljIE9BIGJ1ZmZlciAoYXMgdGhpcyBpcyBu b3QgbWFuYWdlZCBieSBhY3RpdmUgcmVmKQogICAgLSBydW50aW1lX3BtX3B1dCArIGZvcmNld2Fr ZV9wdXQKClRoZSBpZGVhbCBzb2x1dGlvbiBoZXJlIHdvdWxkIGJlIHRvIGhhdmUgYSBjYWxsYmFj ayB3aGVuIHRoZSBsYXN0IHJlcXVlc3QKaXMgZmluaXNoZWQgb24gR1BVLCBzbyB0aGF0IHdlIGNh biBkbyB0aGlzIHN0dWZmIHRoZXJlIChXSVA6Q2hyaXMnCnJldGlyZS1ub3RpZmljYXRpb24gbWVj aGFuaXNtKS4gIFRpbGwgdGhlIHRpbWUsIGFuIGFzeW5jIHdvcmtlciB0aHJlYWQKd2lsbCBkby4K CkEgc3Vic2VxdWVudCBldmVudCBpbml0IHdvdWxkIGhhdmUgdG8gd2FpdCBmb3IgcHJldmlvdXNs eSBzdWJtaXR0ZWQgUlBDCmNvbW1hbmRzIHRvIGNvbXBsZXRlIG9yIHJldHVybiAtRUJVU1kuIEN1 cnJlbnRseSwgZm9yIHRoZSBzYWtlIG9mCnNpbXBsaWNpdHksIHdlIGFyZSByZXR1cm5pbmcgLUVC VVNZLgoKU2lnbmVkLW9mZi1ieTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgIDExICsrLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMgfCAxNjIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAz MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA4N2U3Y2YwLi5kMzU1 NjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE2NTQsMTAgKzE2NTQsMTggQEAgc3Ry dWN0IGk5MTVfb2FfcmVnIHsKIAl1MzIgdmFsdWU7CiB9OwogCitlbnVtIGk5MTVfb2FfZXZlbnRf c3RhdGUgeworCUk5MTVfT0FfRVZFTlRfSU5JVCwKKwlJOTE1X09BX0VWRU5UX1NUQVJURUQsCisJ STkxNV9PQV9FVkVOVF9TVE9QX0lOX1BST0dSRVNTLAorCUk5MTVfT0FfRVZFTlRfU1RPUFBFRCwK K307CisKIHN0cnVjdCBpOTE1X29hX3Jjc19ub2RlIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CiAJdTMyIG9mZnNldDsKKwlib29s IGRpc2NhcmQ7CiAJdTMyIGN0eF9pZDsKIH07CiAKQEAgLTE5MzUsNyArMTk0Myw3IEBAIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlIHsKIAogCQlzdHJ1Y3QgcGVyZl9ldmVudCAqZXhjbHVzaXZlX2V2 ZW50OwogCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqc3BlY2lmaWNfY3R4OwotCQlib29sIGV2ZW50 X2FjdGl2ZTsKKwkJZW51bSBpOTE1X29hX2V2ZW50X3N0YXRlIGV2ZW50X3N0YXRlOwogCiAJCWJv b2wgcGVyaW9kaWM7CiAJCWJvb2wgbXVsdGlwbGVfY3R4X21vZGU7CkBAIC0xOTY2LDYgKzE5NzQs NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCX0gb2FfcmNzX2J1ZmZlcjsKIAkJc3Ry dWN0IGxpc3RfaGVhZCBub2RlX2xpc3Q7CiAJCXN0cnVjdCB3b3JrX3N0cnVjdCBmb3J3YXJkX3dv cms7CisJCXN0cnVjdCB3b3JrX3N0cnVjdCBldmVudF9kZXN0cm95X3dvcms7CiAJfSBvYV9wbXU7 CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYwppbmRleCBhYjU4YzQ2Li41 NTRhOWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYwpAQCAtODMsNyArODMsNyBA QCBzdGF0aWMgdTMyIGZvcndhcmRfb2Ffc25hcHNob3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAogCQkvKiBXZSBjdXJyZW50bHkgb25seSBhbGxvdyBleGNsdXNpdmUgYWNj ZXNzIHRvIHRoZSBjb3VudGVycwogCQkgKiBzbyBvbmx5IGhhdmUgb25lIGV2ZW50IHRvIGZvcndh cmQgdG9vLi4uICovCi0JCWlmIChkZXZfcHJpdi0+b2FfcG11LmV2ZW50X2FjdGl2ZSkKKwkJaWYg KGRldl9wcml2LT5vYV9wbXUuZXZlbnRfc3RhdGUgPT0gSTkxNV9PQV9FVkVOVF9TVEFSVEVEKQog CQkJZm9yd2FyZF9vbmVfb2Ffc25hcHNob3RfdG9fZXZlbnQoZGV2X3ByaXYsIHNuYXBzaG90LAog CQkJCQkJCSBleGNsdXNpdmVfZXZlbnQpOwogCX0KQEAgLTIwMiw2ICsyMDIsMjEgQEAgc3RhdGlj IGludCBpOTE1X29hX3Jjc193YWl0X2dwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGk5MTVfb2FfcmNzX3JlbGVhc2VfcmVx dWVzdF9yZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBp OTE1X29hX3Jjc19ub2RlICplbnRyeSwgKm5leHQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUKKwkJKGVudHJ5LCBuZXh0LCAmZGV2X3ByaXYtPm9hX3BtdS5ub2RlX2xpc3QsIGhlYWQpIHsK KwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9fdW5sb2NrZWQoZW50cnktPnJlcSk7CisK KwkJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+b2FfcG11LmxvY2spOworCQlsaXN0X2RlbCgmZW50cnkt PmhlYWQpOworCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKKwkJa2ZyZWUo ZW50cnkpOworCX0KK30KKwogc3RhdGljIHZvaWQgZm9yd2FyZF9vbmVfb2FfcmNzX3NhbXBsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJc3RydWN0IGk5MTVfb2FfcmNz X25vZGUgKm5vZGUpCiB7CkBAIC0yNTYsNyArMjcxLDggQEAgc3RhdGljIHZvaWQgZm9yd2FyZF9v YV9yY3Nfc25hcHNob3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJaWYg KCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChlbnRyeS0+cmVxLCB0cnVlKSkKIAkJCWJyZWFr OwogCi0JCWZvcndhcmRfb25lX29hX3Jjc19zYW1wbGUoZGV2X3ByaXYsIGVudHJ5KTsKKwkJaWYg KCFlbnRyeS0+ZGlzY2FyZCkKKwkJCWZvcndhcmRfb25lX29hX3Jjc19zYW1wbGUoZGV2X3ByaXYs IGVudHJ5KTsKIAogCQlzcGluX2xvY2soJmRldl9wcml2LT5vYV9wbXUubG9jayk7CiAJCWxpc3Rf bW92ZV90YWlsKCZlbnRyeS0+aGVhZCwgJmRlZmVycmVkX2xpc3RfZnJlZSk7CkBAIC0yODYsNiAr MzAyLDEzIEBAIHN0YXRpYyB2b2lkIGZvcndhcmRfb2FfcmNzX3dvcmtfZm4oc3RydWN0IHdvcmtf c3RydWN0ICpfX3dvcmspCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJ Y29udGFpbmVyX29mKF9fd29yaywgdHlwZW9mKCpkZXZfcHJpdiksIG9hX3BtdS5mb3J3YXJkX3dv cmspOwogCisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+b2FfcG11LmxvY2spOworCWlmIChkZXZfcHJp di0+b2FfcG11LmV2ZW50X3N0YXRlICE9IEk5MTVfT0FfRVZFTlRfU1RBUlRFRCkgeworCQlzcGlu X3VubG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKKwkJcmV0dXJuOworCX0KKwlzcGluX3Vu bG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKKwogCWZvcndhcmRfb2FfcmNzX3NuYXBzaG90 cyhkZXZfcHJpdik7CiB9CiAKQEAgLTMyNiwxOSArMzQ5LDkwIEBAIHN0YXRpYyB2b2lkIGk5MTVf b2FfZXZlbnRfZGVzdHJveShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5 cGVvZigqZGV2X3ByaXYpLCBvYV9wbXUucG11KTsKLQl1bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7 CiAKIAlXQVJOX09OKGV2ZW50LT5wYXJlbnQpOwogCi0JLyogU3RvcCB1cGRhdGluZyBvYWNvbnRy b2wgdmlhIF9vYV9jb250ZXh0X3Bpbl9bdW5dbm90aWZ5KCkuLi4gKi8KLQlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKwlpZiAoZGV2X3ByaXYt Pm9hX3BtdS5tdWx0aXBsZV9jdHhfbW9kZSkgeworCQljYW5jZWxfd29ya19zeW5jKCZkZXZfcHJp di0+b2FfcG11LmZvcndhcmRfd29yayk7CisJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5vYV9w bXUuZXZlbnRfZGVzdHJveV93b3JrKTsKKworCQlCVUdfT04oZGV2X3ByaXYtPm9hX3BtdS5leGNs dXNpdmVfZXZlbnQgIT0gZXZlbnQpOworCQlkZXZfcHJpdi0+b2FfcG11LmV4Y2x1c2l2ZV9ldmVu dCA9IE5VTEw7CisKKwkJLyogV2UgY2FuIGRlZmVyZW5jZSBvdXIgbG9jYWwgY29weSBvZiByY3Mg YnVmZmVyIGhlcmUsIHNpbmNlCisJCSAqIGFuIGFjdGl2ZSByZWZlcmVuY2Ugb2YgYnVmZmVyIHdv dWxkIGJlIHRha2VuIHdoaWxlCisJCSAqIGluc2VydGluZyBjb21tYW5kcy4gU28gdGhlIGJ1ZmZl ciB3b3VsZCBiZSBmcmVlZCB1cCBvbmx5CisJCSAqIGFmdGVyIEdQVSBpcyBkb25lIHdpdGggaXQu CisJCSAqLworCQlvYV9yY3NfYnVmZmVyX2Rlc3Ryb3koZGV2X3ByaXYpOworCX0gZWxzZSB7CisJ CS8qIFN0b3AgdXBkYXRpbmcgb2Fjb250cm9sIHZpYSBfb2FfY29udGV4dF9bdW5dcGluX25vdGlm eSgpICovCisJCXNwaW5fbG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKKwkJZGV2X3ByaXYt Pm9hX3BtdS5zcGVjaWZpY19jdHggPSBOVUxMOworCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPm9h X3BtdS5sb2NrKTsKKworCQkvKiBEb24ndCBsZXQgdGhlIGNvbXBpbGVyIHN0YXJ0IHJlc2V0dGlu ZyBPQSwgUE0gYW5kIGNsb2NrCisJCSAqIGdhdGluZyBzdGF0ZSBiZWZvcmUgd2UndmUgc3RvcHBl ZCB1cGRhdGVfb2Fjb250cm9sKCkKKwkJICovCisJCWJhcnJpZXIoKTsKKworCQlCVUdfT04oZGV2 X3ByaXYtPm9hX3BtdS5leGNsdXNpdmVfZXZlbnQgIT0gZXZlbnQpOworCQlkZXZfcHJpdi0+b2Ff cG11LmV4Y2x1c2l2ZV9ldmVudCA9IE5VTEw7CisKKwkJb2FfYnVmZmVyX2Rlc3Ryb3koZGV2X3By aXYpOworCisJCUk5MTVfV1JJVEUoR0VONl9VQ0dDVEwxLCAoSTkxNV9SRUFEKEdFTjZfVUNHQ1RM MSkgJgorCQkJCQkgIH5HRU42X0NTVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpKTsKKwkJSTkxNV9X UklURShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENUTCkgfAorCQkJCQkg ICAgR0VON19ET1BfQ0xPQ0tfR0FURV9FTkFCTEUpKTsKKworCQlJOTE1X1dSSVRFKEdEVF9DSElD S0VOX0JJVFMsIChJOTE1X1JFQUQoR0RUX0NISUNLRU5fQklUUykgJgorCQkJCQkgICAgICB+R1Rf Tk9BX0VOQUJMRSkpOworCisJCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBG T1JDRVdBS0VfQUxMKTsKKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCQlkZXZf cHJpdi0+b2FfcG11LmV2ZW50X3N0YXRlID0gSTkxNV9PQV9FVkVOVF9JTklUOworCX0KK30KKwor c3RhdGljIHZvaWQgaTkxNV9vYV9yY3NfZXZlbnRfZGVzdHJveV93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqX193b3JrKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJ CWNvbnRhaW5lcl9vZihfX3dvcmssIHR5cGVvZigqZGV2X3ByaXYpLAorCQkJb2FfcG11LmV2ZW50 X2Rlc3Ryb3lfd29yayk7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfb2FfcmNzX3dhaXRfZ3B1 KGRldl9wcml2KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWk5MTVfb2FfcmNzX3JlbGVh c2VfcmVxdWVzdF9yZWYoZGV2X3ByaXYpOworCitvdXQ6CisJLyogU3RvcCB1cGRhdGluZyBvYWNv bnRyb2wgdmlhIF9vYV9jb250ZXh0X1t1bl1waW5fbm90aWZ5KCkgKi8KKwlzcGluX2xvY2soJmRl dl9wcml2LT5vYV9wbXUubG9jayk7CiAJZGV2X3ByaXYtPm9hX3BtdS5zcGVjaWZpY19jdHggPSBO VUxMOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5vYV9wbXUubG9jaywgbG9j a19mbGFncyk7CisJc3Bpbl91bmxvY2soJmRldl9wcml2LT5vYV9wbXUubG9jayk7CisKKwkvKiBE aXNhYmxlIE9BIHVuaXQgKi8KKwlJOTE1X1dSSVRFKEdFTjdfT0FDT05UUk9MLCAwKTsKIAotCS8q IERvbid0IGxldCB0aGUgY29tcGlsZXIgc3RhcnQgcmVzZXR0aW5nIE9BLCBQTSBhbmQgY2xvY2sg Z2F0aW5nCi0JICogc3RhdGUgYmVmb3JlIHdlJ3ZlIHN0b3BwZWQgdXBkYXRlX29hY29udHJvbCgp CisJLyogVGhlIHBlcmlvZGljIE9BIGJ1ZmZlciBoYXMgdG8gYmUgZGVzdHJveWVkIGhlcmUsIHNp bmNlCisJICogdGhpcyBjYW4gYmUgZG9uZSBvbmx5IGFmdGVyIE9BIHVuaXQgaXMgZGlzYWJsZWQu IFRoZXJlIGlzIG5vIGFjdGl2ZQorCSAqIHJlZmVyZW5jZSB0cmFja2luZyBtZWNoYW5pc20gZm9y IHBlcmlvZGljIE9BIGJ1ZmZlci4gU28gd2UgY2FuIG9ubHkKKwkgKiBkZXJlZmVyZW5jZSBpdCBp biB0aGUgd29ya2VyIGFmdGVyIHdlJ3ZlIGRpc2FibGVkIE9BIHVuaXQgKHdoaWNoIHdlCisJICog Y2FuIGRvIGFmdGVyIHdlJ3JlIHN1cmUgdG8gaGF2ZSBjb21wbGV0ZWQgdGhlIGluIGZsaWdodCBH UFUgY21kcykKIAkgKi8KLQliYXJyaWVyKCk7CisJIC8qIFRPRE86IE9uY2Ugd2UgaGF2ZSBjYWxs YmFja3MgaW4gcGxhY2Ugb24gY29tcGxldGlvbiBvZiByZXF1ZXN0CisJICogKGkuZS4gd2hlbiBy ZXRpcmUtbm90aWZpY2F0aW9uIHBhdGNoZXMgbGFuZCksIHdlIGNhbiB0YWtlIHRoZSBhY3RpdmUK KwkgKiByZWZlcmVuY2Ugb24gTFJJIHJlcXVlc3Qoc3VibWl0dGVkIGZvciBkaXNhYmxpbmcgT0Ep IGR1cmluZyBldmVudAorCSAqIHN0b3AvZGVzdHJveSwgYW5kIHBlcmZvcm0gdGhlc2UgYWN0aW9u cywgaW4gdGhlIGNhbGxiYWNrIGluc3RlYWQgb2YKKwkgKiB3b3JrIGZuCisJICovCisKKwlvYV9i dWZmZXJfZGVzdHJveShkZXZfcHJpdik7CisKKwlzcGluX2xvY2soJmRldl9wcml2LT5vYV9wbXUu bG9jayk7CiAKIAlJOTE1X1dSSVRFKEdFTjZfVUNHQ1RMMSwgKEk5MTVfUkVBRChHRU42X1VDR0NU TDEpICYKIAkJCQkgIH5HRU42X0NTVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpKTsKQEAgLTM0OCwx NiArNDQyLDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfb2FfZXZlbnRfZGVzdHJveShzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCiAJSTkxNV9XUklURShHRFRfQ0hJQ0tFTl9CSVRTLCAoSTkxNV9SRUFE KEdEVF9DSElDS0VOX0JJVFMpICYKIAkJCQkgICAgICB+R1RfTk9BX0VOQUJMRSkpOwogCi0JaWYg KGRldl9wcml2LT5vYV9wbXUubXVsdGlwbGVfY3R4X21vZGUpCi0JCW9hX3Jjc19idWZmZXJfZGVz dHJveShkZXZfcHJpdik7Ci0KLQlvYV9idWZmZXJfZGVzdHJveShkZXZfcHJpdik7Ci0KLQlCVUdf T04oZGV2X3ByaXYtPm9hX3BtdS5leGNsdXNpdmVfZXZlbnQgIT0gZXZlbnQpOwotCWRldl9wcml2 LT5vYV9wbXUuZXhjbHVzaXZlX2V2ZW50ID0gTlVMTDsKLQogCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7CisJZGV2X3ByaXYtPm9hX3BtdS5ldmVudF9zdGF0ZSA9IEk5MTVfT0FfRVZFTlRf SU5JVDsKKwlzcGluX3VubG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKIH0KIAogc3RhdGlj IGludCBhbGxvY19vYmooc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtNjM4 LDcgKzcyNiw4IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCkKIAkgKiBjb3VudGVyIHNuYXBzaG90cyBhbmQgbWFyc2hhbCB0byB0aGUgYXBw cm9wcmlhdGUgY2xpZW50CiAJICogd2UgY3VycmVudGx5IG9ubHkgYWxsb3cgZXhjbHVzaXZlIGFj Y2VzcyAqLwogCXNwaW5fbG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKLQlpZiAoZGV2X3By aXYtPm9hX3BtdS5vYV9idWZmZXIub2JqKSB7CisJaWYgKGRldl9wcml2LT5vYV9wbXUub2FfYnVm ZmVyLm9iaiB8fAorCQlkZXZfcHJpdi0+b2FfcG11LmV2ZW50X3N0YXRlICE9IEk5MTVfT0FfRVZF TlRfSU5JVCkgewogCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKTsKIAkJcmV0 dXJuIC1FQlVTWTsKIAl9CkBAIC04MDMsNyArODkyLDggQEAgc3RhdGljIHZvaWQgdXBkYXRlX29h Y29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJQlVHX09OKCFz cGluX2lzX2xvY2tlZCgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrKSk7CiAKLQlpZiAoZGV2X3ByaXYt Pm9hX3BtdS5ldmVudF9hY3RpdmUpIHsKKwlpZiAoKGRldl9wcml2LT5vYV9wbXUuZXZlbnRfc3Rh dGUgPT0gSTkxNV9PQV9FVkVOVF9TVEFSVEVEKSB8fAorCShkZXZfcHJpdi0+b2FfcG11LmV2ZW50 X3N0YXRlID09IEk5MTVfT0FfRVZFTlRfU1RPUF9JTl9QUk9HUkVTUykpIHsKIAkJdW5zaWduZWQg bG9uZyBjdHhfaWQgPSAwOwogCQlib29sIHBpbm5pbmdfb2sgPSBmYWxzZTsKIApAQCAtOTEzLDcg KzEwMDMsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCwgaW50IGZsYWdzKQogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5v YV9wbXUubG9jaywgbG9ja19mbGFncyk7CiAKLQlkZXZfcHJpdi0+b2FfcG11LmV2ZW50X2FjdGl2 ZSA9IHRydWU7CisJZGV2X3ByaXYtPm9hX3BtdS5ldmVudF9zdGF0ZSA9IEk5MTVfT0FfRVZFTlRf U1RBUlRFRDsKIAl1cGRhdGVfb2Fjb250cm9sKGRldl9wcml2KTsKIAogCS8qIFJlc2V0IHRoZSBo ZWFkIHB0ciB0byBlbnN1cmUgd2UgZG9uJ3QgZm9yd2FyZCByZXBvcnRzIHJlbGF0aW5nCkBAIC05 NDAsMTQgKzEwMzAsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX2V2ZW50X3N0b3Aoc3RydWN0IHBl cmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCiAJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0 eXBlb2YoKmRldl9wcml2KSwgb2FfcG11LnBtdSk7CiAJdW5zaWduZWQgbG9uZyBsb2NrX2ZsYWdz OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5vYV9wbXUubG9jaywgbG9ja19mbGFn cyk7Ci0KLQlkZXZfcHJpdi0+b2FfcG11LmV2ZW50X2FjdGl2ZSA9IGZhbHNlOwotCXVwZGF0ZV9v YWNvbnRyb2woZGV2X3ByaXYpOwotCi0JbW1pb3diKCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKLQogCWlmIChldmVudC0+YXR0 ci5zYW1wbGVfcGVyaW9kKSB7CiAJCWhydGltZXJfY2FuY2VsKCZkZXZfcHJpdi0+b2FfcG11LnRp bWVyKTsKIAkJaWYgKGRldl9wcml2LT5vYV9wbXUubXVsdGlwbGVfY3R4X21vZGUpCkBAIC05NTUs NiArMTAzNywyMyBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX2V2ZW50X3N0b3Aoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCiAJCWZsdXNoX29hX3NuYXBzaG90cyhkZXZfcHJpdiwg ZmFsc2UsIFU2NF9NQVgpOwogCX0KIAorCWlmIChkZXZfcHJpdi0+b2FfcG11Lm11bHRpcGxlX2N0 eF9tb2RlKSB7CisJCXN0cnVjdCBpOTE1X29hX3Jjc19ub2RlICplbnRyeTsKKworCQlzcGluX2xv Y2tfaXJxc2F2ZSgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKworCQlkZXZf cHJpdi0+b2FfcG11LmV2ZW50X3N0YXRlID0gSTkxNV9PQV9FVkVOVF9TVE9QX0lOX1BST0dSRVNT OworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCAmZGV2X3ByaXYtPm9hX3BtdS5ub2RlX2xp c3QsIGhlYWQpCisJCQllbnRyeS0+ZGlzY2FyZCA9IHRydWU7CisKKwkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKwl9IGVsc2Ugewor CQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPm9hX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsK KwkJZGV2X3ByaXYtPm9hX3BtdS5ldmVudF9zdGF0ZSA9IEk5MTVfT0FfRVZFTlRfU1RPUFBFRDsK KwkJdXBkYXRlX29hY29udHJvbChkZXZfcHJpdik7CisJCW1taW93YigpOworCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+b2FfcG11LmxvY2ssIGxvY2tfZmxhZ3MpOworCX0KIAll dmVudC0+aHcuc3RhdGUgPSBQRVJGX0hFU19TVE9QUEVEOwogfQogCkBAIC0xMDg5LDEwICsxMTg4 LDEzIEBAIHZvaWQgaTkxNV9vYV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlpOTE1LT5vYV9wbXUudGltZXIuZnVuY3Rpb24gPSBocnRpbWVyX3NhbXBsZTsKIAogCUlOSVRf V09SSygmaTkxNS0+b2FfcG11LmZvcndhcmRfd29yaywgZm9yd2FyZF9vYV9yY3Nfd29ya19mbik7 CisJSU5JVF9XT1JLKCZpOTE1LT5vYV9wbXUuZXZlbnRfZGVzdHJveV93b3JrLAorCQkJaTkxNV9v YV9yY3NfZXZlbnRfZGVzdHJveV93b3JrKTsKIAogCXNwaW5fbG9ja19pbml0KCZpOTE1LT5vYV9w bXUubG9jayk7CiAKIAlpOTE1LT5vYV9wbXUucG11LmNhcGFiaWxpdGllcyAgPSBQRVJGX1BNVV9D QVBfSVNfREVWSUNFOworCWk5MTUtPm9hX3BtdS5ldmVudF9zdGF0ZSA9IEk5MTVfT0FfRVZFTlRf SU5JVDsKIAogCS8qIEVmZmVjdGl2ZWx5IGRpc2FsbG93IG9wZW5pbmcgYW4gZXZlbnQgd2l0aCBh IHNwZWNpZmljIHBpZAogCSAqIHNpbmNlIHdlIGFyZW4ndCBpbnRlcmVzdGVkIGluIHByb2Nlc3Nl cyBydW5uaW5nIG9uIHRoZSBjcHUuLi4KQEAgLTExMTksOCArMTIyMSwxMCBAQCB2b2lkIGk5MTVf b2FfcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoaTkxNS0+b2Ff cG11LnBtdS5ldmVudF9pbml0ID09IE5VTEwpCiAJCXJldHVybjsKIAotCWlmIChpOTE1LT5vYV9w bXUubXVsdGlwbGVfY3R4X21vZGUpCisJaWYgKGk5MTUtPm9hX3BtdS5tdWx0aXBsZV9jdHhfbW9k ZSkgewogCQljYW5jZWxfd29ya19zeW5jKCZpOTE1LT5vYV9wbXUuZm9yd2FyZF93b3JrKTsKKwkJ Y2FuY2VsX3dvcmtfc3luYygmaTkxNS0+b2FfcG11LmV2ZW50X2Rlc3Ryb3lfd29yayk7CisJfQog CiAJdW5yZWdpc3Rlcl9zeXNjdGxfdGFibGUoaTkxNS0+b2FfcG11LnN5c2N0bF9oZWFkZXIpOwog Ci0tIAoxLjguNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=