From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chun-Hung Wu Subject: [PATCH v7 3/4] mmc: mediatek: command queue support Date: Mon, 20 Jul 2020 08:42:38 +0800 Message-ID: <1595205759-5825-4-git-send-email-chun-hung.wu@mediatek.com> References: <1595205759-5825-1-git-send-email-chun-hung.wu@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1595205759-5825-1-git-send-email-chun-hung.wu@mediatek.com> Sender: linux-arm-msm-owner@vger.kernel.org To: mirq-linux@rere.qmqm.pl, Jonathan Hunter , Al Cooper , Adrian Hunter , Florian Fainelli , bcm-kernel-feedback-list@broadcom.com, Andy Gross , Bjorn Andersson , Michal Simek , Thierry Reding , Chaotian Jing , Ulf Hansson , Rob Herring , Mark Rutland , Matthias Brugger , Linus Walleij , Pavel Machek , Kate Stewart , Greg Kroah-Hartman , Martin Cc: kernel-team@android.com, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, wsd_upstream@mediatek.com, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org, Chun-Hung Wu List-Id: linux-tegra@vger.kernel.org U3VwcG9ydCBjb21tYW5kIHF1ZXVlIGZvciBtdDY3NzkgcGxhdGZvcm0uDQphLiBBZGQgbXNkY19z ZXRfYnVzeV90aW1lb3V0KCkgdG8gY2FsY3VsYXRlIGVtbWMgd3JpdGUgdGltZW91dC4NCmIuIENv bm5lY3QgbXRrIG1zZGMgZHJpdmVyIHRvIGNxaGNpIGRyaXZlciB0aHJvdWdoDQogICBob3N0LT5j cV9ob3N0LT5vcHMgPSAmbXNkY19jbWRxX29wczsNCmMuIG1zZGNfY21kcV9pcnEoKSB3aWxsIGxp bmsgdXAgd2l0aCBjcWNoaV9pcnEoKS4gQmVzaWRlcywgaXQgcHJvdmlkZXMNCiAgIG1vcmUgaXJx IGVycm9yIG1lc3NhZ2VzIGxpa2UgUlNQQ1JDRVJSL0NNRFRPL0RBVEFDUkNFUlIvREFUVE1PLg0K ZC4gU2VsZWN0IGtlcm5lbCBjb25maWcgTU1DX0NRSENJIGZvciBNTUNfTVRLDQoNClNpZ25lZC1v ZmYtYnk6IENodW4tSHVuZyBXdSA8Y2h1bi1odW5nLnd1QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRy aXZlcnMvbW1jL2hvc3QvS2NvbmZpZyAgfCAgIDEgKw0KIGRyaXZlcnMvbW1jL2hvc3QvbXRrLXNk LmMgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K IDIgZmlsZXMgY2hhbmdlZCwgMTE2IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvbW1jL2hvc3QvS2NvbmZpZyBiL2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZw0KaW5kZXggM2I3 MDZhZi4uOWM4OWE1YiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZw0KKysr IGIvZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnDQpAQCAtMTAwOSw2ICsxMDA5LDcgQEAgY29uZmln IE1NQ19NVEsNCiAJdHJpc3RhdGUgIk1lZGlhVGVrIFNEL01NQyBDYXJkIEludGVyZmFjZSBzdXBw b3J0Ig0KIAlkZXBlbmRzIG9uIEhBU19ETUENCiAJc2VsZWN0IFJFR1VMQVRPUg0KKwlzZWxlY3Qg TU1DX0NRSENJDQogCWhlbHANCiAJICBUaGlzIHNlbGVjdHMgdGhlIE1lZGlhVGVrKFIpIFNlY3Vy ZSBkaWdpdGFsIGFuZCBNdWx0aW1lZGlhIGNhcmQgSW50ZXJmYWNlLg0KIAkgIElmIHlvdSBoYXZl IGEgbWFjaGluZSB3aXRoIGEgaW50ZWdyYXRlZCBTRC9NTUMgY2FyZCByZWFkZXIsIHNheSBZIG9y IE0gaGVyZS4NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L210ay1zZC5jIGIvZHJpdmVy cy9tbWMvaG9zdC9tdGstc2QuYw0KaW5kZXggMzQ3ZWQ3Mi4uZTU2MGEwNiAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbW1jL2hvc3QvbXRrLXNkLmMNCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvbXRrLXNk LmMNCkBAIC0zMSw2ICszMSw4IEBADQogI2luY2x1ZGUgPGxpbnV4L21tYy9zZGlvLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L21tYy9zbG90LWdwaW8uaD4NCiANCisjaW5jbHVkZSAiY3FoY2kuaCINCisN CiAjZGVmaW5lIE1BWF9CRF9OVU0gICAgICAgICAgMTAyNA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLw0KQEAgLTE1Miw2ICsxNTQsNyBAQA0KICNkZWZpbmUgTVNEQ19JTlRfRE1BX0JEQ1NFUlIg ICAgKDB4MSA8PCAxNykJLyogVzFDICovDQogI2RlZmluZSBNU0RDX0lOVF9ETUFfR1BEQ1NFUlIg ICAoMHgxIDw8IDE4KQkvKiBXMUMgKi8NCiAjZGVmaW5lIE1TRENfSU5UX0RNQV9QUk9URUNUICAg ICgweDEgPDwgMTkpCS8qIFcxQyAqLw0KKyNkZWZpbmUgTVNEQ19JTlRfQ01EUSAgICAgICAgICAg KDB4MSA8PCAyOCkJLyogVzFDICovDQogDQogLyogTVNEQ19JTlRFTiBtYXNrICovDQogI2RlZmlu ZSBNU0RDX0lOVEVOX01NQ0lSUSAgICAgICAoMHgxIDw8IDApCS8qIFJXICovDQpAQCAtMTgyLDYg KzE4NSw3IEBADQogLyogU0RDX0NGRyBtYXNrICovDQogI2RlZmluZSBTRENfQ0ZHX1NESU9JTlRX S1VQICAgICAoMHgxIDw8IDApCS8qIFJXICovDQogI2RlZmluZSBTRENfQ0ZHX0lOU1dLVVAgICAg ICAgICAoMHgxIDw8IDEpCS8qIFJXICovDQorI2RlZmluZSBTRENfQ0ZHX1dSRFRPQyAgICAgICAg ICAoMHgxZmZmICA8PCAyKSAgLyogUlcgKi8NCiAjZGVmaW5lIFNEQ19DRkdfQlVTV0lEVEggICAg ICAgICgweDMgPDwgMTYpCS8qIFJXICovDQogI2RlZmluZSBTRENfQ0ZHX1NESU8gICAgICAgICAg ICAoMHgxIDw8IDE5KQkvKiBSVyAqLw0KICNkZWZpbmUgU0RDX0NGR19TRElPSURFICAgICAgICAg KDB4MSA8PCAyMCkJLyogUlcgKi8NCkBAIC0yMzAsNiArMjM0LDcgQEANCiAjZGVmaW5lIE1TRENf UEFUQ0hfQklUX0RFQ1JDVE1PICAgKDB4MSA8PCAzMCkJLyogUlcgKi8NCiANCiAjZGVmaW5lIE1T RENfUEFUQ0hfQklUMV9DTURUQSAgICAgKDB4NyA8PCAzKSAgICAvKiBSVyAqLw0KKyNkZWZpbmUg TVNEQ19QQjFfQlVTWV9DSEVDS19TRUwgICAoMHgxIDw8IDcpICAgIC8qIFJXICovDQogI2RlZmlu ZSBNU0RDX1BBVENIX0JJVDFfU1RPUF9ETFkgICgweGYgPDwgOCkgICAgLyogUlcgKi8NCiANCiAj ZGVmaW5lIE1TRENfUEFUQ0hfQklUMl9DRkdSRVNQICAgKDB4MSA8PCAxNSkgICAvKiBSVyAqLw0K QEAgLTQzMSw5ICs0MzYsMTEgQEAgc3RydWN0IG1zZGNfaG9zdCB7DQogCQkJCSAvKiBjbWQgcmVz cG9uc2Ugc2FtcGxlIHNlbGVjdGlvbiBmb3IgSFM0MDAgKi8NCiAJYm9vbCBoczQwMF9tb2RlOwkv KiBjdXJyZW50IGVNTUMgd2lsbCBydW4gYXQgaHM0MDAgbW9kZSAqLw0KIAlib29sIGludGVybmFs X2NkOwkvKiBVc2UgaW50ZXJuYWwgY2FyZC1kZXRlY3QgbG9naWMgKi8NCisJYm9vbCBjcWhjaTsJ CS8qIHN1cHBvcnQgZU1NQyBodyBjbWRxICovDQogCXN0cnVjdCBtc2RjX3NhdmVfcGFyYSBzYXZl X3BhcmE7IC8qIHVzZWQgd2hlbiBnYXRlIEhDTEsgKi8NCiAJc3RydWN0IG1zZGNfdHVuZV9wYXJh IGRlZl90dW5lX3BhcmE7IC8qIGRlZmF1bHQgdHVuZSBzZXR0aW5nICovDQogCXN0cnVjdCBtc2Rj X3R1bmVfcGFyYSBzYXZlZF90dW5lX3BhcmE7IC8qIHR1bmUgcmVzdWx0IG9mIENNRDIxL0NNRDE5 ICovDQorCXN0cnVjdCBjcWhjaV9ob3N0ICpjcV9ob3N0Ow0KIH07DQogDQogc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfbW1jX2NvbXBhdGlibGUgbXQ4MTM1X2NvbXBhdCA9IHsNCkBAIC03NjQsNiAr NzcxLDE1IEBAIHN0YXRpYyB2b2lkIG1zZGNfc2V0X3RpbWVvdXQoc3RydWN0IG1zZGNfaG9zdCAq aG9zdCwgdTY0IG5zLCB1NjQgY2xrcykNCiAJCSAgICAgICh1MzIpKHRpbWVvdXQgPiAyNTUgPyAy NTUgOiB0aW1lb3V0KSk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIG1zZGNfc2V0X2J1c3lfdGltZW91 dChzdHJ1Y3QgbXNkY19ob3N0ICpob3N0LCB1NjQgbnMsIHU2NCBjbGtzKQ0KK3sNCisJdTY0IHRp bWVvdXQ7DQorDQorCXRpbWVvdXQgPSBtc2RjX3RpbWVvdXRfY2FsKGhvc3QsIG5zLCBjbGtzKTsN CisJc2RyX3NldF9maWVsZChob3N0LT5iYXNlICsgU0RDX0NGRywgU0RDX0NGR19XUkRUT0MsDQor CQkgICAgICAodTMyKSh0aW1lb3V0ID4gODE5MSA/IDgxOTEgOiB0aW1lb3V0KSk7DQorfQ0KKw0K IHN0YXRpYyB2b2lkIG1zZGNfZ2F0ZV9jbG9jayhzdHJ1Y3QgbXNkY19ob3N0ICpob3N0KQ0KIHsN CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhvc3QtPnNyY19jbGtfY2cpOw0KQEAgLTE0ODEsNiAr MTQ5NywzNCBAQCBzdGF0aWMgdm9pZCBtc2RjX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hv c3QgKm1tYywgaW50IGVuYikNCiAJCXBtX3J1bnRpbWVfcHV0X25vaWRsZShob3N0LT5kZXYpOw0K IH0NCiANCitzdGF0aWMgaXJxcmV0dXJuX3QgbXNkY19jbWRxX2lycShzdHJ1Y3QgbXNkY19ob3N0 ICpob3N0LCB1MzIgaW50c3RzKQ0KK3sNCisJaW50IGNtZF9lcnIgPSAwLCBkYXRfZXJyID0gMDsN CisNCisJaWYgKGludHN0cyAmIE1TRENfSU5UX1JTUENSQ0VSUikgew0KKwkJY21kX2VyciA9IC1F SUxTRVE7DQorCQlkZXZfZXJyKGhvc3QtPmRldiwgIiVzOiBDTUQgQ1JDIEVSUiIsIF9fZnVuY19f KTsNCisJfSBlbHNlIGlmIChpbnRzdHMgJiBNU0RDX0lOVF9DTURUTU8pIHsNCisJCWNtZF9lcnIg PSAtRVRJTUVET1VUOw0KKwkJZGV2X2Vycihob3N0LT5kZXYsICIlczogQ01EIFRJTUVPVVQgRVJS IiwgX19mdW5jX18pOw0KKwl9DQorDQorCWlmIChpbnRzdHMgJiBNU0RDX0lOVF9EQVRDUkNFUlIp IHsNCisJCWRhdF9lcnIgPSAtRUlMU0VROw0KKwkJZGV2X2Vycihob3N0LT5kZXYsICIlczogREFU QSBDUkMgRVJSIiwgX19mdW5jX18pOw0KKwl9IGVsc2UgaWYgKGludHN0cyAmIE1TRENfSU5UX0RB VFRNTykgew0KKwkJZGF0X2VyciA9IC1FVElNRURPVVQ7DQorCQlkZXZfZXJyKGhvc3QtPmRldiwg IiVzOiBEQVRBIFRJTUVPVVQgRVJSIiwgX19mdW5jX18pOw0KKwl9DQorDQorCWlmIChjbWRfZXJy IHx8IGRhdF9lcnIpIHsNCisJCWRldl9lcnIoaG9zdC0+ZGV2LCAiY21kX2VyciA9ICVkLCBkYXRf ZXJyID0lZCwgaW50c3RzID0gMHgleCIsDQorCQkJY21kX2VyciwgZGF0X2VyciwgaW50c3RzKTsN CisJfQ0KKw0KKwlyZXR1cm4gY3FoY2lfaXJxKGhvc3QtPm1tYywgMCwgY21kX2VyciwgZGF0X2Vy cik7DQorfQ0KKw0KIHN0YXRpYyBpcnFyZXR1cm5fdCBtc2RjX2lycShpbnQgaXJxLCB2b2lkICpk ZXZfaWQpDQogew0KIAlzdHJ1Y3QgbXNkY19ob3N0ICpob3N0ID0gKHN0cnVjdCBtc2RjX2hvc3Qg KikgZGV2X2lkOw0KQEAgLTE1MTcsNiArMTU2MSwxNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXNk Y19pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KIAkJaWYgKCEoZXZlbnRzICYgKGV2ZW50X21h c2sgJiB+TVNEQ19JTlRfU0RJT0lSUSkpKQ0KIAkJCWJyZWFrOw0KIA0KKwkJaWYgKChob3N0LT5t bWMtPmNhcHMyICYgTU1DX0NBUDJfQ1FFKSAmJg0KKwkJICAgIChldmVudHMgJiBNU0RDX0lOVF9D TURRKSkgew0KKwkJCW1zZGNfY21kcV9pcnEoaG9zdCwgZXZlbnRzKTsNCisJCQkvKiBjbGVhciBp bnRlcnJ1cHRzICovDQorCQkJd3JpdGVsKGV2ZW50cywgaG9zdC0+YmFzZSArIE1TRENfSU5UKTsN CisJCQlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorCQl9DQorDQogCQlpZiAoIW1ycSkgew0KIAkJCWRl dl9lcnIoaG9zdC0+ZGV2LA0KIAkJCQkiJXM6IE1SUT1OVUxMOyBldmVudHM9JTA4WDsgZXZlbnRf bWFzaz0lMDhYXG4iLA0KQEAgLTIyMDEsNiArMjI1MywzNiBAQCBzdGF0aWMgaW50IG1zZGNfZ2V0 X2NkKHN0cnVjdCBtbWNfaG9zdCAqbW1jKQ0KIAkJcmV0dXJuICF2YWw7DQogfQ0KIA0KK3N0YXRp YyB2b2lkIG1zZGNfY3FlX2VuYWJsZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCit7DQorCXN0cnVj dCBtc2RjX2hvc3QgKmhvc3QgPSBtbWNfcHJpdihtbWMpOw0KKw0KKwkvKiBlbmFibGUgY21kcSBp cnEgKi8NCisJd3JpdGVsKE1TRENfSU5UX0NNRFEsIGhvc3QtPmJhc2UgKyBNU0RDX0lOVEVOKTsN CisJLyogZW5hYmxlIGJ1c3kgY2hlY2sgKi8NCisJc2RyX3NldF9iaXRzKGhvc3QtPmJhc2UgKyBN U0RDX1BBVENIX0JJVDEsIE1TRENfUEIxX0JVU1lfQ0hFQ0tfU0VMKTsNCisJLyogZGVmYXVsdCB3 cml0ZSBkYXRhIC8gYnVzeSB0aW1lb3V0IDIwcyAqLw0KKwltc2RjX3NldF9idXN5X3RpbWVvdXQo aG9zdCwgMjAgKiAxMDAwMDAwMDAwVUxMLCAwKTsNCisJLyogZGVmYXVsdCByZWFkIGRhdGEgdGlt ZW91dCAxcyAqLw0KKwltc2RjX3NldF90aW1lb3V0KGhvc3QsIDEwMDAwMDAwMDBVTEwsIDApOw0K K30NCisNCit2b2lkIG1zZGNfY3FlX2Rpc2FibGUoc3RydWN0IG1tY19ob3N0ICptbWMsIGJvb2wg cmVjb3ZlcnkpDQorew0KKwlzdHJ1Y3QgbXNkY19ob3N0ICpob3N0ID0gbW1jX3ByaXYobW1jKTsN CisNCisJLyogZGlzYWJsZSBjbWRxIGlycSAqLw0KKwlzZHJfY2xyX2JpdHMoaG9zdC0+YmFzZSAr IE1TRENfSU5URU4sIE1TRENfSU5UX0NNRFEpOw0KKwkvKiBkaXNhYmxlIGJ1c3kgY2hlY2sgKi8N CisJc2RyX2Nscl9iaXRzKGhvc3QtPmJhc2UgKyBNU0RDX1BBVENIX0JJVDEsIE1TRENfUEIxX0JV U1lfQ0hFQ0tfU0VMKTsNCisNCisJaWYgKHJlY292ZXJ5KSB7DQorCQlzZHJfc2V0X2ZpZWxkKGhv c3QtPmJhc2UgKyBNU0RDX0RNQV9DVFJMLA0KKwkJCSAgICAgIE1TRENfRE1BX0NUUkxfU1RPUCwg MSk7DQorCQltc2RjX3Jlc2V0X2h3KGhvc3QpOw0KKwl9DQorfQ0KKw0KIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbW1jX2hvc3Rfb3BzIG10X21zZGNfb3BzID0gew0KIAkucG9zdF9yZXEgPSBtc2RjX3Bv c3RfcmVxLA0KIAkucHJlX3JlcSA9IG1zZGNfcHJlX3JlcSwNCkBAIC0yMjE3LDYgKzIyOTksMTEg QEAgc3RhdGljIGludCBtc2RjX2dldF9jZChzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCiAJLmh3X3Jl c2V0ID0gbXNkY19od19yZXNldCwNCiB9Ow0KIA0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY3FoY2lf aG9zdF9vcHMgbXNkY19jbWRxX29wcyA9IHsNCisJLmVuYWJsZSAgICAgICAgID0gbXNkY19jcWVf ZW5hYmxlLA0KKwkuZGlzYWJsZSAgICAgICAgPSBtc2RjX2NxZV9kaXNhYmxlLA0KK307DQorDQog c3RhdGljIHZvaWQgbXNkY19vZl9wcm9wZXJ0eV9wYXJzZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2LA0KIAkJCQkgICBzdHJ1Y3QgbXNkY19ob3N0ICpob3N0KQ0KIHsNCkBAIC0yMjM3LDYg KzIzMjQsMTIgQEAgc3RhdGljIHZvaWQgbXNkY19vZl9wcm9wZXJ0eV9wYXJzZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LA0KIAkJaG9zdC0+aHM0MDBfY21kX3Jlc3Bfc2VsX3Jpc2luZyA9 IHRydWU7DQogCWVsc2UNCiAJCWhvc3QtPmhzNDAwX2NtZF9yZXNwX3NlbF9yaXNpbmcgPSBmYWxz ZTsNCisNCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChwZGV2LT5kZXYub2Zfbm9kZSwNCisJ CQkJICAic3VwcG9ydHMtY3FlIikpDQorCQlob3N0LT5jcWhjaSA9IHRydWU7DQorCWVsc2UNCisJ CWhvc3QtPmNxaGNpID0gZmFsc2U7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbXNkY19kcnZfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCkBAIC0yMzUyLDYgKzI0NDUsOCBAQCBzdGF0 aWMgaW50IG1zZGNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCQlt bWMtPmNhcHMyIHw9IE1NQ19DQVAyX1NESU9fSVJRX05PVEhSRUFEOw0KIA0KIAltbWMtPmNhcHMg fD0gTU1DX0NBUF9DTUQyMzsNCisJaWYgKGhvc3QtPmNxaGNpKQ0KKwkJbW1jLT5jYXBzMiB8PSBN TUNfQ0FQMl9DUUUgfCBNTUNfQ0FQMl9DUUVfRENNRDsNCiAJLyogTU1DIGNvcmUgdHJhbnNmZXIg c2l6ZXMgdHVuYWJsZSBwYXJhbWV0ZXJzICovDQogCW1tYy0+bWF4X3NlZ3MgPSBNQVhfQkRfTlVN Ow0KIAlpZiAoaG9zdC0+ZGV2X2NvbXAtPnN1cHBvcnRfNjRnKQ0KQEAgLTIzNjcsNiArMjQ2Miwy NiBAQCBzdGF0aWMgaW50IG1zZGNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQogCQlob3N0LT5kbWFfbWFzayA9IERNQV9CSVRfTUFTSygzMik7DQogCW1tY19kZXYobW1j KS0+ZG1hX21hc2sgPSAmaG9zdC0+ZG1hX21hc2s7DQogDQorCWlmIChtbWMtPmNhcHMyICYgTU1D X0NBUDJfQ1FFKSB7DQorCQlob3N0LT5jcV9ob3N0ID0gZGV2bV9remFsbG9jKGhvc3QtPm1tYy0+ cGFyZW50LA0KKwkJCQkJICAgICBzaXplb2YoKmhvc3QtPmNxX2hvc3QpLA0KKwkJCQkJICAgICBH RlBfS0VSTkVMKTsNCisJCWlmICghaG9zdC0+Y3FfaG9zdCkgew0KKwkJCXJldCA9IC1FTk9NRU07 DQorCQkJZ290byBob3N0X2ZyZWU7DQorCQl9DQorCQlob3N0LT5jcV9ob3N0LT5jYXBzIHw9IENR SENJX1RBU0tfREVTQ19TWl8xMjg7DQorCQlob3N0LT5jcV9ob3N0LT5tbWlvID0gaG9zdC0+YmFz ZSArIDB4ODAwOw0KKwkJaG9zdC0+Y3FfaG9zdC0+b3BzID0gJm1zZGNfY21kcV9vcHM7DQorCQly ZXQgPSBjcWhjaV9pbml0KGhvc3QtPmNxX2hvc3QsIG1tYywgdHJ1ZSk7DQorCQlpZiAocmV0KQ0K KwkJCWdvdG8gaG9zdF9mcmVlOw0KKwkJbW1jLT5tYXhfc2VncyA9IDEyODsNCisJCS8qIGNxaGNp IDE2Yml0IGxlbmd0aCAqLw0KKwkJLyogMCBzaXplLCBtZWFucyA2NTUzNiBzbyB3ZSBkb24ndCBo YXZlIHRvIC0xIGhlcmUgKi8NCisJCW1tYy0+bWF4X3NlZ19zaXplID0gNjQgKiAxMDI0Ow0KKwl9 DQorDQogCWhvc3QtPnRpbWVvdXRfY2xrcyA9IDMgKiAxMDQ4NTc2Ow0KIAlob3N0LT5kbWEuZ3Bk ID0gZG1hX2FsbG9jX2NvaGVyZW50KCZwZGV2LT5kZXYsDQogCQkJCTIgKiBzaXplb2Yoc3RydWN0 IG10X2dwZG1hX2Rlc2MpLA0KLS0gDQoxLjkuMQ0K