From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=103.10.4.13 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793177163; b=A1SPgfiIG3CSoxjt4euBtKpNL1+gEf8p+UxfgQFQhHtXUVzHaJddqlcF/EDrvtV/LgEB J/ZBvEccBzqh/jXGbRMOBKC/EP42MvkMHCh710XmsVfBzIIS8HZ0xVFGJpSXWHf0DpIKy BN+az+RK9ZM4AV7ws9i5tn0XR7+CNodQwgZg4gUOtKrE9kc0donwEZeqTRpx7oOlZT2zg NX9VEffBUdczj6uzzslb6xPDWPSkQ6co5zRPpNrKxgmODPzuMI6XWXtw/W9wxuJMpxZ0M p5cQKO1AoWpDSVvXqJqeJrYN0uFjoCvXOvpcuf0EvGAV8vI5ZpcYwJmNf2u/EQb2mlw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793177163; h=DMARC-Filter:DKIM-Signature:X-CSE-ConnectionGUID:X-CSE-MsgGUID: Received:Received:From:To:CC:Subject:Date:Message-ID:X-Mailer: MIME-Version:X-Originating-IP:X-ClientProxiedBy:X-TM-AS-Product-Ver: X-TM-AS-Result:X-TMASE-MatchedRID:X-TM-AS-User-Approved-Sender: X-TM-AS-User-Blocked-Sender:X-TMASE-Result:X-TMASE-Version: X-TM-SNTS-SMTP:Content-Type:Content-Transfer-Encoding; bh=CAAQgu36MPFVXMrecWFYahSj3xGiGPaT3oIgHVAeb7M=; b=neQGScNhQheNWmP/qYCBva8GpAB9Wl401P2I8O5Kjkf6x1sFL/KHA9eZ6wiQoznfQ+if XHVaAk0SZ8I3lrtRuFGd3uzo11T54F/dl8wxPHaOxYZUq2ksly+pW+N1x20bD5fU/FrDS 5DpWC3c0B1QU1YS5xOmD2I2D+s671UKGs+vUWlpbNScOmqeOSNTTas6VmRK7ZOz3/pOi2 tpI5GMk5fjGeEQzjK1dD2weArASvLbelcVF6qyuyskqc5BbsC64dP5kweJEQbmvpsjqpy fyohxoWJnjUR09EpsCoupcY6m0UJlRUYFYAwwOSP4kSOz1SLtLAHR45h472uKhlIzcA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=asmedia.com.tw; spf=pass smtp.mailfrom=asmedia.com.tw; dkim=pass header.d=asmedia.com.tw header.i=@asmedia.com.tw header.a=rsa-sha256 header.s=asmediacomtw header.b=LcPvVTnr; arc=none smtp.remote-ip=103.10.4.13 Received: from ms.asus.com (ms.asus.com [103.10.4.13]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09283606A31A; Wed, 28 Oct 2026 08:46:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 09283606A31A Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=asmedia.com.tw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=asmedia.com.tw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=asmedia.com.tw header.i=@asmedia.com.tw header.a=rsa-sha256 header.s=asmediacomtw header.b=LcPvVTnr DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=asmedia.com.tw; i=@asmedia.com.tw; q=dns/txt; s=asmediacomtw; t=1793177163; x=1824713163; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=CAAQgu36MPFVXMrecWFYahSj3xGiGPaT3oIgHVAeb7M=; b=LcPvVTnraPYFhlL5zqrifqHtkd0n9XwmfHLWbekKH8flRLFZMtgsrJwc sCm5rvxSJ1bg8kdaWXx8kiNyButbWwkBREUgFdqWMhk7bd74iTNDJDbtk b+46GAAdoGp6DHsPZwSka0Omsd1rsOb4a89wuU8Q2RSFii/Qh7tWJLyWr g=; X-CSE-ConnectionGUID: QrHqcmKiSeu+d1EAEi8mOA== X-CSE-MsgGUID: DNF254teSiqUqDcqOX6zZQ== Received: from unknown (HELO APZA005TMD.corpnet.asus) ([172.22.47.65]) by ms.asus.com with ESMTP; 28 Oct 2026 16:45:55 +0800 Received: from mymail.asus.com (42.70.36.96) by APZA005TMD.corpnet.asus (172.22.47.65) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.56; Wed, 28 Oct 2026 16:45:51 +0800 From: Szuying Chen To: , , , , CC: , , , Subject: [PATCH v3] gpio: amdptpci: add support for AMD PT PCI controller Date: Wed, 28 Oct 2026 16:45:31 +0800 Message-ID: <20261028084531.6237-1-Chloe_Chen@asmedia.com.tw> X-Mailer: git-send-email 2.48.1 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 X-ClientProxiedBy: APZA002EXB.corpnet.asus (172.22.6.14) To APZA005TMD.corpnet.asus (172.22.47.65) X-TM-AS-Product-Ver: SMEX-14.0.0.3239-9.1.2019-30284.005 X-TM-AS-Result: No-10--18.398000-8.000000 X-TMASE-MatchedRID: QkBk6NM3bYmDE1gnwKWGushQ2ZMNvRp3yeAmy1uygLnlbwjdfEVENL+I ScJnXnqYcuWpm6G6Xunma/wXZpfjXgUTW+/SpSPA8RcXD+rQ7sGVmuhG06IIbTRFHlD9mJnEaRB VJZ6LCZHNt4LnJVPWJJpB9Hg3pifch0GgNcfPVcMI1pqhes/vCSlJWJQI1iEwojKyNVmXOrt9OD X3a/d/aTkJ8R13PVYv5RN50ieMXjOJHPiCScEioEsfZgIcSmI9N0X64jGy2dY+0J9ZTAkB2PUJ3 Iz3g60hsBd6skgc7sPAaX2MpgGS37vtP4VBXiSziu6u4shZ+fHaxam/kIlAkRe4W0jxFAx5EJqz YPg/Da0fn2vt9qXrpB6yWb3tcXUTLbC4rzJwurCheJ4X7s7Smr5RdmencIoAwDkSxp9XfnR9UYU lcWGaVHL/z5l+bUGiQdApGu3X7Uhp//uRQx9fWAqidEWyd229723iygLQ7YZktsm+EDEz2pwJ5A skLqBMesFSVhr8a5JqqWdQQrRZkW/22fWfjE4Dfp4lMrDNO0ROResffkp5clXOqMYNeYhmES46q CSbf/W5JbrxUJ1EZKJYuGaIjh0/7lupSRApbpbK/heIi12Zi0/xK0jAVuQE X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--18.398000-8.000000 X-TMASE-Version: SMEX-14.0.0.3239-9.1.2019-30284.005 X-TM-SNTS-SMTP: 360EBF73DFDA950F19BB5C2E9E6A45197E1FFD5F65CB384FF1FA63DDB431F6252000:8 Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 VGhlIEdQSU8gY29udHJvbGxlciBvbiBBTUQgUFQgUENJIHBsYXRmb3JtcyBjdXJyZW50bHkgaGFz IG5vIGluLXRyZWUKZHJpdmVyLCBzbyBpdHMgcGlucyBjYW5ub3QgYmUgdXNlZCBmcm9tIExpbnV4 LgoKVGhlIGV4aXN0aW5nIGdwaW8tYW1kcHQgZHJpdmVyIGNhbm5vdCBiZSByZXVzZWQuIFNldHRp bmcgYXNpZGUgQUNQSQp2cy4gUENJIHByb2JpbmcsIHRoZSBoYXJkd2FyZSBkaWZmZXJzIHNpZ25p ZmljYW50bHk6CgogLSBSZWdpc3RlciBzZW1hbnRpY3MgY29uZmxpY3Q6IG9mZnNldCAweDBDIGNv bnRyb2xzIHRoZSBjbG9jayByYXRlCiAgIGluIGdwaW8tYW1kcHQgYnV0IGVuYWJsZXMgaW50ZXJy dXB0cyBpbiB0aGlzIGNvbnRyb2xsZXIuCiAtIEludGVycnVwdCBjb250cm9sbGVyOiBncGlvLWFt ZHB0IGhhcyBubyBpbnRlcnJ1cHQgc3VwcG9ydCwgd2hpbGUKICAgdGhpcyBjb250cm9sbGVyIGhh cyBpdHMgb3duIElOVF9MVkwsIElOVF9TVEFUIGFuZCBJTlRfTUFTSwogICByZWdpc3RlcnMgdGhh dCByZXF1aXJlIGEgZnVsbCBpcnFfY2hpcCBpbXBsZW1lbnRhdGlvbi4KIC0gV2FrZXVwOiB0aGlz IGNvbnRyb2xsZXIgY2FuIHdha2UgdGhlIHN5c3RlbSBmcm9tIEdQSU8gaW50ZXJydXB0cywKICAg d2hpY2ggZ3Bpby1hbWRwdCBkb2VzIG5vdCBzdXBwb3J0LgoKT25seSB0aGUgYmFzaWMgZGF0YSBy ZWdpc3RlcnMgYXJlIGNvbW1vbiwgYW5kIHRoZXkgYXJlIGhhbmRsZWQKdGhyb3VnaCBncGlvLWdl bmVyaWMsIHNvIGxpdHRsZSBjb2RlIGlzIGxlZnQgdG8gc2hhcmUuCgpBZGQgdGhlIGdwaW8tYW1k cHRwY2kgZHJpdmVyIHRvIHN1cHBvcnQgdGhlIEdQSU8gZnVuY3Rpb25hbGl0eSBvbgpBTUQgUFQg UENJIHBsYXRmb3Jtcy4KCkNvLWRldmVsb3BlZC1ieTogWUQgVHNlbmcgPFlkX1RzZW5nQGFzbWVk aWEuY29tLnR3PgpTaWduZWQtb2ZmLWJ5OiBZRCBUc2VuZyA8WWRfVHNlbmdAYXNtZWRpYS5jb20u dHc+ClNpZ25lZC1vZmYtYnk6IFN6dXlpbmcgQ2hlbiA8Q2hsb2VfQ2hlbkBhc21lZGlhLmNvbS50 dz4KLS0tClYyLT5WMzoKCS0gUmV3b3JrIHRoZSBkcml2ZXIgdG8gdXNlIGdwaW8tZ2VuZXJpYy4K CS0gTW92ZSBydW50aW1lIFBNIGhhbmRsaW5nIHRvIGdwaW9fY2hpcCByZXF1ZXN0KCkgYW5kCglm cmVlKCkgY2FsbGJhY2tzLgoJLSBTaW1wbGlmeSBsb2NraW5nIHdpdGggZ3VhcmQoKSBhbmQgc2Nv cGVkX2d1YXJkKCkuCgktIFVzZSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoKSBmb3IgcmVzb3Vy Y2UgY2xlYW51cC4KCS0gQWRkIHJhdGlvbmFsZSBmb3IgYSBzZXBhcmF0ZSBkcml2ZXIgdG8gdGhl IGNvbW1pdCBtZXNzYWdlLgoJLSBSZWdtYXAgd2FzIGV2YWx1YXRlZCBidXQgbm90IHVzZWQ6IHRo ZSByZWdpc3RlcnMgYXJlIG1peCBvZgoJOC8xNi8zMiBiaXQgYW5kIGl0IHdvdWxkIG5lZWQgbW9y ZSBjYWxsYmFja3MgdG8gZGVmaW5lLCB3aGljaAoJY29tcGxpY2F0ZXMgdGhlIGNvZGUuCnYxLT52 MjoKCS0gQWRkIC5pcnFfcmVxdWVzdC9yZWxlYXNlX3Jlc291cmNlcyB0byBzZXQgaXJxX3BtX2hl bGQgZmxhZy4KCS0gc3dpdGNoIHRvIGRldnJlcyBpbiBwcm9iZS9yZW1vdmUuCgktIEFkZCBzeW5j aHJvbml6ZV9pcnEoKS4KLS0tCiBkcml2ZXJzL2dwaW8vS2NvbmZpZyAgICAgICAgIHwgICA2ICsK IGRyaXZlcnMvZ3Bpby9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncGlvL2dwaW8t YW1kcHRwY2kuYyB8IDYxMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCA2MTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3Bpby9ncGlvLWFtZHB0cGNpLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vS2NvbmZp ZyBiL2RyaXZlcnMvZ3Bpby9LY29uZmlnCmluZGV4IGE0ODU4NmJiOGVkYi4uMWMyZjZmYzE2NGEx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwaW8vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwaW8vS2Nv bmZpZwpAQCAtMTgzMyw2ICsxODMzLDEyIEBAIGVuZG1lbnUKIG1lbnUgIlBDSSBHUElPIGV4cGFu ZGVycyIKIAlkZXBlbmRzIG9uIFBDSQoKK2NvbmZpZyBHUElPX0FNRFBUUENJCisJdHJpc3RhdGUg IkFNRCBQcm9tb250b3J5IFBDSSBHUElPIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBYODYKKwloZWxw CisJICBEcml2ZXIgZm9yIFByb21vbnRvcnkgSU9IdWIgUENJIEdQSU8gZnVuY3Rpb25hbGl0eS4K KwogY29uZmlnIEdQSU9fQU1EODExMQogCXRyaXN0YXRlICJBTUQgODExMSBHUElPIGRyaXZlciIK IAlkZXBlbmRzIG9uIFg4NiB8fCBDT01QSUxFX1RFU1QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3Bp by9NYWtlZmlsZSBiL2RyaXZlcnMvZ3Bpby9NYWtlZmlsZQppbmRleCBkYzllNmQ2NDNiNWIuLmNh MjZlOThmYzhlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3Bpby9NYWtlZmlsZQpAQCAtMzYsNiArMzYsNyBAQCBvYmotJChDT05GSUdfR1BJT19BTFRF UkEpICAJCSs9IGdwaW8tYWx0ZXJhLm8KIG9iai0kKENPTkZJR19HUElPX0FNRDgxMTEpCQkrPSBn cGlvLWFtZDgxMTEubwogb2JqLSQoQ09ORklHX0dQSU9fQU1EX0ZDSCkJCSs9IGdwaW8tYW1kLWZj aC5vCiBvYmotJChDT05GSUdfR1BJT19BTURQVCkJCSs9IGdwaW8tYW1kcHQubworb2JqLSQoQ09O RklHX0dQSU9fQU1EUFRQQ0kpCQkrPSBncGlvLWFtZHB0cGNpLm8KIG9iai0kKENPTkZJR19HUElP X0FSSVpPTkEpCQkrPSBncGlvLWFyaXpvbmEubwogb2JqLSQoQ09ORklHX0dQSU9fQVNQRUVEKQkJ Kz0gZ3Bpby1hc3BlZWQubwogb2JqLSQoQ09ORklHX0dQSU9fQVNQRUVEX1NHUElPKQkJKz0gZ3Bp by1hc3BlZWQtc2dwaW8ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL2dwaW8tYW1kcHRwY2ku YyBiL2RyaXZlcnMvZ3Bpby9ncGlvLWFtZHB0cGNpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4xNzFjNjgxMWEzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwaW8vZ3Bpby1hbWRwdHBjaS5jCkBAIC0wLDAgKzEsNjEwIEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogZ3Bpby1hbWRwdHBjaS5jIC0gQU1EIFBy b21vbnRvcnkgUENJIEdQSU8gQ29udHJvbGxlciBEcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMjYgQVNNZWRpYSBUZWNobm9sb2d5IEluYy4KKyAqIEF1dGhvcjoJQ2hsb2UgQ2hlbiA8Y2hs b2VfY2hlbkBhc21lZGlhLmNvbS50dz4KKyAqCQlZRCBUc2VuZyA8eWRfdHNlbmdAYXNtZWRpYS5j b20udHc+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KKyNpbmNsdWRlIDxsaW51eC9j b21waWxlci5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vy ci5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8vZHJpdmVyLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bp by9nZW5lcmljLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGlu dXgvaXJxLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvcG0uaD4KKyNp bmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisjaW5jbHVkZSA8bGludXgvcG1fd2FrZXVwLmg+ CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgor CisjZGVmaW5lIFBUMjdfTlVNX0dQSU9TICAgICAgICAgIDI0CisjZGVmaW5lIFBUMjdfV0FLRV9H UElPUyAgICAgICAgIDEyCisjZGVmaW5lIFBUMjdfR1BJT19NQVNLICAgICAgICAgIEdFTk1BU0so UFQyN19OVU1fR1BJT1MgLSAxLCAwKQorI2RlZmluZSBQVDI3X1dBS0VfTUFTSyAgICAgICAgICBH RU5NQVNLKFBUMjdfV0FLRV9HUElPUyAtIDEsIDApCisKKyNkZWZpbmUgUFQyN19SRUdfRElSICAg ICAgICAgICAgMHgwMDAwCisjZGVmaW5lIFBUMjdfUkVHX0lOICAgICAgICAgICAgIDB4MDAwNAor I2RlZmluZSBQVDI3X1JFR19PVVQgICAgICAgICAgICAweDAwMDgKKyNkZWZpbmUgUFQyN19SRUdf SU5UX0VOICAgICAgICAgMHgwMDBDCisjZGVmaW5lIFBUMjdfUkVHX0lOVF9MVkwgICAgICAgIDB4 MDAxMAorI2RlZmluZSBQVDI3X1JFR19JTlRfTU9ERTAgICAgICAweDAwMTQKKyNkZWZpbmUgUFQy N19SRUdfSU5UX01PREUxICAgICAgMHgwMDE4CisjZGVmaW5lIFBUMjdfUkVHX0lOVF9TVEFUICAg ICAgIDB4MDAxQworI2RlZmluZSBQVDI3X1JFR19JTlRfTUFTSyAgICAgICAweDAwMjAKKyNkZWZp bmUgUFQyN19SRUdfSU5UX0NUTCAgICAgICAgMHgwMDI0CisKKyNkZWZpbmUgUFQyN19SRUdfV0FL RV9FTiAgICAgICAgMHgwMDM0CisjZGVmaW5lIFBUMjdfUkVHX1dBS0VfTFZMICAgICAgIDB4MDAz NgorI2RlZmluZSBQVDI3X1JFR19XQUtFX01PREUgICAgICAweDAwMzgKKyNkZWZpbmUgUFQyN19S RUdfV0FLRV9TVEFUICAgICAgMHgwMDNBCisKKyNkZWZpbmUgUFQyN19JTlRfTU9ERV9NQVNLICAg ICAgMHgzVQorI2RlZmluZSBQVDI3X01PREVfTEVWRUwgICAgICAgICAweDBVCisjZGVmaW5lIFBU MjdfTU9ERV9SSVNJTkcgICAgICAgIDB4MVUKKyNkZWZpbmUgUFQyN19NT0RFX0ZBTExJTkcgICAg ICAgMHgyVQorI2RlZmluZSBQVDI3X01PREVfQk9USCAgICAgICAgICAweDNVCisKKyNkZWZpbmUg UFQyN19JTlRfQ1RMX01PREUgICAgICAgQklUKDApCisjZGVmaW5lIFBUMjdfSU5UX0NUTF9QQURf RU4gICAgIEJJVCgyKQorCisjZGVmaW5lIFBUMjdfQVVUT1NVU1BFTkRfREVMQVlfTVMgICAyMDAw CisKK3N0cnVjdCBwdDI3X3NhdmVkX3JlZ3MgeworCXUzMiBkaXI7CisJdTMyIG91dDsKKwl1MzIg aW50X2VuOworCXUzMiBpbnRfbHZsOworCXUzMiBpbnRfbW9kZTA7CisJdTE2IGludF9tb2RlMTsK Kwl1MzIgaW50X21hc2s7CisJdTggIGludF9jdGw7CisJdTE2IHdha2VfZW47CisJdTE2IHdha2Vf bHZsOworCXUxNiB3YWtlX21vZGU7Cit9OworCitzdHJ1Y3QgcHQyN19ncGlvIHsKK3N0cnVjdCBk ZXZpY2UgICAgICAgICAgICAgICAgICAgICAqZGV2Oworc3RydWN0IGdwaW9fZ2VuZXJpY19jaGlw Z2VuOworCXZvaWQgX19pb21lbSAgICAgICAgICAgICAgKmJhc2U7CisJc3RydWN0IHB0Mjdfc2F2 ZWRfcmVncwkgIHNhdmVkOworCXJhd19zcGlubG9ja190ICAgICAgICAgICAgbG9jazsKKwl1MTYg ICAgICAgICAgICAgICAgICAgICAgIHdha2VfbWFzazsKKwlib29sICAgICAgICAgICAgICAgICAg ICAgIHVzZV9tc2k7CisJaW50ICAgICAgICAgICAgICAgICAgICAgICBpcnE7Cit9OworCitzdGF0 aWMgdm9pZCBwdDI3X3NhdmVfcmVncyhzdHJ1Y3QgcHQyN19ncGlvICpjaGlwKQoreworCWNoaXAt PnNhdmVkLmRpciAgICAgICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19ESVIpOwor CWNoaXAtPnNhdmVkLm91dCAgICAgICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19P VVQpOworCisJY2hpcC0+c2F2ZWQuaW50X2VuICAgID0gaW9yZWFkMzIoY2hpcC0+YmFzZSArIFBU MjdfUkVHX0lOVF9FTik7CisJY2hpcC0+c2F2ZWQuaW50X2x2bCAgID0gaW9yZWFkMzIoY2hpcC0+ YmFzZSArIFBUMjdfUkVHX0lOVF9MVkwpOworCWNoaXAtPnNhdmVkLmludF9tb2RlMCA9IGlvcmVh ZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTU9ERTApOworCWNoaXAtPnNhdmVkLmludF9t b2RlMSA9IGlvcmVhZDE2KGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTU9ERTEpOworCWNoaXAt PnNhdmVkLmludF9tYXNrICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTUFT Syk7CisJY2hpcC0+c2F2ZWQuaW50X2N0bCAgID0gaW9yZWFkOChjaGlwLT5iYXNlICsgUFQyN19S RUdfSU5UX0NUTCk7CisKKwljaGlwLT5zYXZlZC53YWtlX2VuICAgPSBpb3JlYWQxNihjaGlwLT5i YXNlICsgUFQyN19SRUdfV0FLRV9FTik7CisJY2hpcC0+c2F2ZWQud2FrZV9sdmwgID0gaW9yZWFk MTYoY2hpcC0+YmFzZSArIFBUMjdfUkVHX1dBS0VfTFZMKTsKKwljaGlwLT5zYXZlZC53YWtlX21v ZGUgPSBpb3JlYWQxNihjaGlwLT5iYXNlICsgUFQyN19SRUdfV0FLRV9NT0RFKTsKK30KKworc3Rh dGljIHZvaWQgcHQyN19yZXN0b3JlX3JlZ3Moc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCkKK3sKKwlp b3dyaXRlMzIoY2hpcC0+c2F2ZWQuZGlyLCAgICAgICBjaGlwLT5iYXNlICsgUFQyN19SRUdfRElS KTsKKwlpb3dyaXRlMzIoY2hpcC0+c2F2ZWQub3V0LCAgICAgICBjaGlwLT5iYXNlICsgUFQyN19S RUdfT1VUKTsKKworCWlvd3JpdGUzMihjaGlwLT5zYXZlZC5pbnRfbHZsLCAgIGNoaXAtPmJhc2Ug KyBQVDI3X1JFR19JTlRfTFZMKTsKKwlpb3dyaXRlMzIoY2hpcC0+c2F2ZWQuaW50X21vZGUwLCBj aGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX01PREUwKTsKKwlpb3dyaXRlMTYoY2hpcC0+c2F2ZWQu aW50X21vZGUxLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX01PREUxKTsKKwlpb3dyaXRlOChj aGlwLT5zYXZlZC5pbnRfY3RsLCAgICBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX0NUTCk7CisK Kwlpb3dyaXRlMTYoY2hpcC0+c2F2ZWQud2FrZV9sdmwsICBjaGlwLT5iYXNlICsgUFQyN19SRUdf V0FLRV9MVkwpOworCWlvd3JpdGUxNihjaGlwLT5zYXZlZC53YWtlX21vZGUsIGNoaXAtPmJhc2Ug KyBQVDI3X1JFR19XQUtFX01PREUpOworCWlvd3JpdGUxNihjaGlwLT5zYXZlZC53YWtlX2VuLCAg IGNoaXAtPmJhc2UgKyBQVDI3X1JFR19XQUtFX0VOKTsKKworCWlvd3JpdGUzMihjaGlwLT5zYXZl ZC5pbnRfZW4sICAgY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9FTik7CisJaW93cml0ZTMyKGNo aXAtPnNhdmVkLmludF9tYXNrLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX01BU0spOworfQor CitzdGF0aWMgaW50IHB0MjdfZ3Bpb19yZXF1ZXN0KHN0cnVjdCBncGlvX2NoaXAgKmdjLCB1bnNp Z25lZCBpbnQgb2Zmc2V0KQoreworCXN0cnVjdCBwdDI3X2dwaW8gKmNoaXAgPSBncGlvY2hpcF9n ZXRfZGF0YShnYyk7CisJaW50IHJldDsKKworCXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9n ZXQoY2hpcC0+ZGV2KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGNo aXAtPmRldiwgIiVzOiBjYW5ub3QgcmVzdW1lIGZvciBHUElPJXU6ICVkXG4iLCAgX19mdW5jX18s IG9mZnNldCwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgcHQyN19ncGlvX2ZyZWUoc3RydWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVkIGlu dCBvZmZzZXQpCit7CisJc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRh KGdjKTsKKworCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGNoaXAtPmRldik7Cit9CisKK3N0 YXRpYyBpbnQgcHQyN19pcnFfcmVxcmVzKHN0cnVjdCBpcnFfZGF0YSAqZCkKK3sKKwlzdHJ1Y3Qg Z3Bpb19jaGlwICpnYyAgID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7CisJaXJxX2h3 X251bWJlcl90ICAgaHdpcnEgPSBpcnFkX3RvX2h3aXJxKGQpOworCWludCByZXQ7CisKKwlyZXQg PSBncGlvY2hpcF9yZXFyZXNfaXJxKGdjLCBod2lycSk7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHZvaWQgcHQyN19pcnFfcmVscmVzKHN0cnVjdCBpcnFfZGF0YSAqZCkKK3sKKwlzdHJ1Y3Qg Z3Bpb19jaGlwICpnYyAgID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7CisJaXJxX2h3 X251bWJlcl90ICAgaHdpcnEgPSBpcnFkX3RvX2h3aXJxKGQpOworCisJZ3Bpb2NoaXBfcmVscmVz X2lycShnYywgaHdpcnEpOworfQorCitzdGF0aWMgdm9pZCBwdDI3X2lycV9tYXNrKHN0cnVjdCBp cnFfZGF0YSAqZCkKK3sKKwlzdHJ1Y3QgZ3Bpb19jaGlwICpnYyAgID0gaXJxX2RhdGFfZ2V0X2ly cV9jaGlwX2RhdGEoZCk7CisJc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCA9IGdwaW9jaGlwX2dldF9k YXRhKGdjKTsKKwlpcnFfaHdfbnVtYmVyX3QgICBod2lycSA9IGlycWRfdG9faHdpcnEoZCk7CisJ dTMyIHZhbDsKKworCWd1YXJkKHJhd19zcGlubG9ja19pcnFzYXZlKSgmY2hpcC0+bG9jayk7CisK Kwl2YWwgID0gaW9yZWFkMzIoY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9NQVNLKTsKKwl2YWwg fD0gQklUKGh3aXJxKTsKKwlpb3dyaXRlMzIodmFsLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5U X01BU0spOworCisJdmFsICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfRU4p OworCXZhbCAmPSB+QklUKGh3aXJxKTsKKwlpb3dyaXRlMzIodmFsLCBjaGlwLT5iYXNlICsgUFQy N19SRUdfSU5UX0VOKTsKKworCWdwaW9jaGlwX2Rpc2FibGVfaXJxKGdjLCBod2lycSk7Cit9CisK K3N0YXRpYyB2b2lkIHB0MjdfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCit7CisJc3Ry dWN0IGdwaW9fY2hpcCAqZ2MgICA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOworCXN0 cnVjdCBwdDI3X2dwaW8gKmNoaXAgPSBncGlvY2hpcF9nZXRfZGF0YShnYyk7CisJaXJxX2h3X251 bWJlcl90ICAgaHdpcnEgPSBpcnFkX3RvX2h3aXJxKGQpOworCXUzMiB2YWw7CisKKwlncGlvY2hp cF9lbmFibGVfaXJxKGdjLCBod2lycSk7CisKKwlndWFyZChyYXdfc3BpbmxvY2tfaXJxc2F2ZSko JmNoaXAtPmxvY2spOworCisJdmFsICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19J TlRfRU4pOworCXZhbCB8PSBCSVQoaHdpcnEpOworCWlvd3JpdGUzMih2YWwsIGNoaXAtPmJhc2Ug KyBQVDI3X1JFR19JTlRfRU4pOworCisJdmFsICA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3 X1JFR19JTlRfTUFTSyk7CisJdmFsICY9IH5CSVQoaHdpcnEpOworCWlvd3JpdGUzMih2YWwsIGNo aXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTUFTSyk7CisKK30KKworc3RhdGljIHZvaWQgcHQyN19p cnFfYWNrKHN0cnVjdCBpcnFfZGF0YSAqZCkKK3sKKwlzdHJ1Y3QgZ3Bpb19jaGlwICpnYyAgID0g aXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7CisJc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCA9 IGdwaW9jaGlwX2dldF9kYXRhKGdjKTsKKworCWlvd3JpdGUzMihCSVQoaXJxZF90b19od2lycShk KSksIGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfU1RBVCk7Cit9CisKK3N0YXRpYyBpbnQgcHQy N19pcnFfc2V0X3R5cGUoc3RydWN0IGlycV9kYXRhICpkLCB1bnNpZ25lZCBpbnQgdHlwZSkKK3sK KwlzdHJ1Y3QgZ3Bpb19jaGlwICpnYyAgID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7 CisJc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCA9IGdwaW9jaGlwX2dldF9kYXRhKGdjKTsKKwlpcnFf aHdfbnVtYmVyX3QgICBod2lycSA9IGlycWRfdG9faHdpcnEoZCk7CisJdTMyIGx2bF9yZWc7CisJ dTggIGx2bF9iaXQsIG1vZGVfdmFsOworCXVuc2lnbmVkIGludCBzaGlmdDsKKworCXN3aXRjaCAo dHlwZSkgeworCWNhc2UgSVJRX1RZUEVfTEVWRUxfSElHSDoKKwkJbHZsX2JpdCA9IDE7CisJCW1v ZGVfdmFsID0gUFQyN19NT0RFX0xFVkVMOworCQlicmVhazsKKworCWNhc2UgSVJRX1RZUEVfTEVW RUxfTE9XOgorCQlsdmxfYml0ID0gMDsKKwkJbW9kZV92YWwgPSBQVDI3X01PREVfTEVWRUw7CisJ CWJyZWFrOworCisJY2FzZSBJUlFfVFlQRV9FREdFX1JJU0lORzoKKwkJbHZsX2JpdCA9IDE7CisJ CW1vZGVfdmFsID0gUFQyN19NT0RFX1JJU0lORzsKKwkJYnJlYWs7CisKKwljYXNlIElSUV9UWVBF X0VER0VfRkFMTElORzoKKwkJbHZsX2JpdCA9IDA7CisJCW1vZGVfdmFsID0gUFQyN19NT0RFX0ZB TExJTkc7CisJCWJyZWFrOworCisJY2FzZSBJUlFfVFlQRV9FREdFX0JPVEg6CisJCWx2bF9iaXQg PSAwOworCQltb2RlX3ZhbCA9IFBUMjdfTU9ERV9CT1RIOworCQlicmVhazsKKworCWRlZmF1bHQ6 CisJCXJldHVybiAtRUlOVkFMOworCisJfQorCisJc2NvcGVkX2d1YXJkKHJhd19zcGlubG9ja19p cnFzYXZlLCAmY2hpcC0+bG9jaykgeworCQlsdmxfcmVnID0gaW9yZWFkMzIoY2hpcC0+YmFzZSAr IFBUMjdfUkVHX0lOVF9MVkwpOworCQlpZiAobHZsX2JpdCkKKwkJCWx2bF9yZWcgfD0gQklUKGh3 aXJxKTsKKwkJZWxzZQorCQkJbHZsX3JlZyAmPSB+QklUKGh3aXJxKTsKKworCQlpb3dyaXRlMzIo bHZsX3JlZywgY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9MVkwpOworCisJCWlmIChod2lycSA8 IDE2KSB7CisJCQl1MzIgcmVnID0gaW9yZWFkMzIoY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9N T0RFMCk7CisKKwkJCXNoaWZ0ICA9IGh3aXJxICogMjsKKwkJCXJlZyAgICY9IH4oUFQyN19JTlRf TU9ERV9NQVNLIDw8IHNoaWZ0KTsKKwkJCXJlZyAgIHw9ICgodTMyKW1vZGVfdmFsIDw8IHNoaWZ0 KTsKKwkJCWlvd3JpdGUzMihyZWcsIGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTU9ERTApOwor CQl9IGVsc2UgeworCQkJdTE2IHJlZyA9IGlvcmVhZDE2KGNoaXAtPmJhc2UgKyBQVDI3X1JFR19J TlRfTU9ERTEpOworCisJCQlzaGlmdCAgPSAoaHdpcnEgLSAxNikgKiAyOworCQkJcmVnICAgJj0g figodTE2KShQVDI3X0lOVF9NT0RFX01BU0sgPDwgc2hpZnQpKTsKKwkJCXJlZyAgIHw9ICh1MTYp KCh1MTYpbW9kZV92YWwgPDwgc2hpZnQpOworCQkJaW93cml0ZTE2KHJlZywgY2hpcC0+YmFzZSAr IFBUMjdfUkVHX0lOVF9NT0RFMSk7CisJCX0KKworCQlpb3dyaXRlMzIoQklUKGh3aXJxKSwgY2hp cC0+YmFzZSArIFBUMjdfUkVHX0lOVF9TVEFUKTsKKwl9CisKKwlpZiAodHlwZSAmIElSUV9UWVBF X0xFVkVMX01BU0spCisJCWlycV9zZXRfaGFuZGxlcl9sb2NrZWQoZCwgaGFuZGxlX2xldmVsX2ly cSk7CisJZWxzZQorCQlpcnFfc2V0X2hhbmRsZXJfbG9ja2VkKGQsIGhhbmRsZV9lZGdlX2lycSk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwdDI3X2lycV9zZXRfd2FrZShzdHJ1Y3Qg aXJxX2RhdGEgKmQsIHVuc2lnbmVkIGludCBvbikKK3sKKwlzdHJ1Y3QgZ3Bpb19jaGlwICAqZ2Mg ICA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOworCXN0cnVjdCBwdDI3X2dwaW8gICpj aGlwID0gZ3Bpb2NoaXBfZ2V0X2RhdGEoZ2MpOworCWlycV9od19udW1iZXJfdCAgIGh3aXJxID0g aXJxZF90b19od2lycShkKTsKKwl1bnNpZ25lZCBpbnQgICAgICB0cmlnICA9IGlycWRfZ2V0X3Ry aWdnZXJfdHlwZShkKTsKKwl1MTYgICAgICAgICAgICAgICB3YWtlX2VuLCB3YWtlX2x2bCwgd2Fr ZV9tb2RlOworCisJaWYgKGh3aXJxID49IFBUMjdfV0FLRV9HUElPUykgeworCQlkZXZfZGJnKGNo aXAtPmRldiwgIiVzOiBHUElPJWx1IGRvZXMgbm90IHN1cHBvcnQgd2FrZSAobWF4IEdQSU8ldSlc biIsIF9fZnVuY19fLCBod2lycSwgUFQyN19XQUtFX0dQSU9TIC0gMSk7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCWlmIChvbiAmJiB0cmlnID09IElSUV9UWVBFX05PTkUpCisJCXJldHVybiAt RUlOVkFMOworCisJZ3VhcmQocmF3X3NwaW5sb2NrX2lycXNhdmUpKCZjaGlwLT5sb2NrKTsKKwor CXdha2VfZW4gICA9IGlvcmVhZDE2KGNoaXAtPmJhc2UgKyBQVDI3X1JFR19XQUtFX0VOKTsKKwl3 YWtlX2x2bCAgPSBpb3JlYWQxNihjaGlwLT5iYXNlICsgUFQyN19SRUdfV0FLRV9MVkwpOworCXdh a2VfbW9kZSA9IGlvcmVhZDE2KGNoaXAtPmJhc2UgKyBQVDI3X1JFR19XQUtFX01PREUpOworCisJ aWYgKG9uKSB7CisJCXdha2VfZW4gfD0gQklUKGh3aXJxKTsKKwkJY2hpcC0+d2FrZV9tYXNrIHw9 ICh1MTYpQklUKGh3aXJxKTsKKworCQlpZiAodHJpZyAmIElSUV9UWVBFX0xFVkVMX01BU0spIHsK KwkJCXdha2VfbW9kZSB8PSBCSVQoaHdpcnEpOworCQkJaWYgKHRyaWcgPT0gSVJRX1RZUEVfTEVW RUxfSElHSCkKKwkJCQl3YWtlX2x2bCB8PSBCSVQoaHdpcnEpOworCQkJZWxzZQorCQkJCXdha2Vf bHZsICY9IH5CSVQoaHdpcnEpOworCQl9IGVsc2UgeworCQkJd2FrZV9tb2RlICY9IH5CSVQoaHdp cnEpOworCQkJaWYgKHRyaWcgPT0gSVJRX1RZUEVfRURHRV9SSVNJTkcgfHwKKwkJCSAgICB0cmln ID09IElSUV9UWVBFX0VER0VfQk9USCkKKwkJCQl3YWtlX2x2bCB8PSBCSVQoaHdpcnEpOworCQkJ ZWxzZQorCQkJCXdha2VfbHZsICY9IH5CSVQoaHdpcnEpOworCQl9CisJfSBlbHNlIHsKKwkJd2Fr ZV9lbiAmPSB+QklUKGh3aXJxKTsKKwkJY2hpcC0+d2FrZV9tYXNrICY9IH4odTE2KUJJVChod2ly cSk7CisJfQorCisJaW93cml0ZTE2KHdha2VfbHZsLCAgY2hpcC0+YmFzZSArIFBUMjdfUkVHX1dB S0VfTFZMKTsKKwlpb3dyaXRlMTYod2FrZV9tb2RlLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfV0FL RV9NT0RFKTsKKwlpb3dyaXRlMTYod2FrZV9lbiwgICBjaGlwLT5iYXNlICsgUFQyN19SRUdfV0FL RV9FTik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBw dDI3X2dwaW9faXJxX2NoaXAgPSB7CisJLm5hbWUJCT0gInB0MjdfZ3BpbyIsCisJLmlycV9hY2sJ PSBwdDI3X2lycV9hY2ssCisJLmlycV9tYXNrCT0gcHQyN19pcnFfbWFzaywKKwkuaXJxX3VubWFz awk9IHB0MjdfaXJxX3VubWFzaywKKwkuaXJxX3NldF90eXBlCT0gcHQyN19pcnFfc2V0X3R5cGUs CisJLmlycV9zZXRfd2FrZQk9IHB0MjdfaXJxX3NldF93YWtlLAorCS5pcnFfcmVxdWVzdF9yZXNv dXJjZXMJPSBwdDI3X2lycV9yZXFyZXMsCisJLmlycV9yZWxlYXNlX3Jlc291cmNlcwk9IHB0Mjdf aXJxX3JlbHJlcywKKwkuZmxhZ3MJPSBJUlFDSElQX0lNTVVUQUJMRSwKK307CisKK3N0YXRpYyBp cnFyZXR1cm5fdCBwdDI3X2dwaW9faXNyKGludCBpcnEsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0 IHB0MjdfZ3BpbyAqY2hpcCA9IGRhdGE7CisJdW5zaWduZWQgbG9uZyBwZW5kaW5nOworCXUzMiBz dGF0LCBlbiwgbWFzazsKKworCXNjb3BlZF9ndWFyZChyYXdfc3BpbmxvY2tfaXJxc2F2ZSwgJmNo aXAtPmxvY2spIHsKKworCSAgc3RhdCA9IGlvcmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19J TlRfU1RBVCk7CisJICBlbiAgID0gaW9yZWFkMzIoY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9F Tik7CisJICBtYXNrID0gaW9yZWFkMzIoY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9NQVNLKTsK KworCSAgcGVuZGluZyA9ICBzdGF0ICYgZW4gJiB+bWFzayAmIFBUMjdfR1BJT19NQVNLOworCX0K KworCWlmICghcGVuZGluZykKKwkJcmV0dXJuIElSUV9OT05FOworCisJd2hpbGUgKHBlbmRpbmcp IHsKKwkJdW5zaWduZWQgaW50IGh3aXJxID0gX19mZnMocGVuZGluZyk7CisKKwkJcGVuZGluZyAm PSB+QklUKGh3aXJxKTsKKwkJaWYgKGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEoY2hpcC0+Z2Vu LmdjLmlycS5kb21haW4sIGh3aXJxKSkgeworCisJCQlkZXZfd2Fybl9yYXRlbGltaXRlZChjaGlw LT5kZXYsICJ1bmhhbmRsZWQgR1BJTyV1IElSUSwgbWFza2luZ1xuIiwgaHdpcnEpOworCisJCQln dWFyZChyYXdfc3BpbmxvY2tfaXJxc2F2ZSkoJmNoaXAtPmxvY2spOworCQkJaW93cml0ZTMyKGlv cmVhZDMyKGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfTUFTSykgfCBCSVQoaHdpcnEpLCBjaGlw LT5iYXNlICsgUFQyN19SRUdfSU5UX01BU0spOworCQkJaW93cml0ZTMyKGlvcmVhZDMyKGNoaXAt PmJhc2UgKyBQVDI3X1JFR19JTlRfRU4pICYgfkJJVChod2lycSksIGNoaXAtPmJhc2UgKyBQVDI3 X1JFR19JTlRfRU4pOworCQkJaW93cml0ZTMyKEJJVChod2lycSksIGNoaXAtPmJhc2UgKyBQVDI3 X1JFR19JTlRfU1RBVCk7CisJCX0KKwl9CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0 aWMgdm9pZCBwdDI3X2h3X2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHB0MjdfZ3BpbyAq Y2hpcCA9IGRhdGE7CisKKwlpb3dyaXRlMzIoMCwgY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9F Tik7CisJaW93cml0ZTMyKFBUMjdfR1BJT19NQVNLLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5U X01BU0spOworCWlvd3JpdGUzMihQVDI3X0dQSU9fTUFTSywgY2hpcC0+YmFzZSArIFBUMjdfUkVH X0lOVF9TVEFUKTsKKwlpb3dyaXRlMTYoMCwgY2hpcC0+YmFzZSArIFBUMjdfUkVHX1dBS0VfRU4p OworCWlvd3JpdGUxNihQVDI3X1dBS0VfTUFTSywgY2hpcC0+YmFzZSArIFBUMjdfUkVHX1dBS0Vf U1RBVCk7Cit9CisKK3N0YXRpYyB2b2lkIHB0MjdfaHdfaW5pdChzdHJ1Y3QgcHQyN19ncGlvICpj aGlwKQoreworCXU4IGludF9jdGw7CisKKwlpbnRfY3RsICA9IGlvcmVhZDgoY2hpcC0+YmFzZSAr IFBUMjdfUkVHX0lOVF9DVEwpOworCWludF9jdGwgfD0gIFBUMjdfSU5UX0NUTF9NT0RFOworCWlu dF9jdGwgJj0gflBUMjdfSU5UX0NUTF9QQURfRU47CisJaW93cml0ZTgoaW50X2N0bCwgY2hpcC0+ YmFzZSArIFBUMjdfUkVHX0lOVF9DVEwpOworCisJcHQyN19od19jbGVhcihjaGlwKTsKK30KKwor c3RhdGljIGludCBwdDI3X2dwaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0 cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2OworCXN0cnVjdCBncGlvX2dlbmVyaWNfY2hpcF9jb25maWcgY29uZmlnID0geyB9OworCXN0 cnVjdCBwdDI3X2dwaW8gKmNoaXA7CisJc3RydWN0IGdwaW9fY2hpcCAqZ2M7CisJc3RydWN0IGdw aW9faXJxX2NoaXAgKmdpcnE7CisJdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7CisJaW50IHJldDsK KworCWNoaXAgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNoaXApLCBHRlBfS0VSTkVMKTsK KwlpZiAoIWNoaXApCisJCXJldHVybiAtRU5PTUVNOworCisJY2hpcC0+ZGV2ID0gZGV2OworCXJh d19zcGluX2xvY2tfaW5pdCgmY2hpcC0+bG9jayk7CisJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGNo aXApOworCisJcmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpOworCWlmIChyZXQpCisJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbGVkIHRvIGVuYWJsZSBQQ0kgZGV2aWNl XG4iKTsKKworCWNoaXAtPmJhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCAwLCAicHQyN19n cGlvIik7CisJaWYgKElTX0VSUihjaGlwLT5iYXNlKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUo ZGV2LCBQVFJfRVJSKGNoaXAtPmJhc2UpLCAiZmFpbGVkIHRvIGNsYWltIGFuZCBtYXAgQkFSMFxu Iik7CisKKwlwY2lfc2V0X21hc3RlcihwZGV2KTsKKworCXJldCA9IHBjaV9hbGxvY19pcnFfdmVj dG9ycyhwZGV2LCAxLCAxLCBQQ0lfSVJRX0FMTF9UWVBFUyk7CisJaWYgKHJldCA8IDApCisJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbGVkIHRvIGFsbG9jYXRlIElSUSB2ZWN0 b3JcbiIpOworCisJY2hpcC0+dXNlX21zaSA9IHBkZXYtPm1zaV9lbmFibGVkIHx8IHBkZXYtPm1z aXhfZW5hYmxlZDsKKwlpcnFfZmxhZ3MgICAgID0gY2hpcC0+dXNlX21zaSA/IDAgOiBJUlFGX1NI QVJFRDsKKwljaGlwLT5pcnEgICAgID0gcGNpX2lycV92ZWN0b3IocGRldiwgMCk7CisKKwlwdDI3 X2h3X2luaXQoY2hpcCk7CisKKwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBw dDI3X2h3X2NsZWFyLCBjaGlwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY29uZmln LmRldiAgICA9IGRldjsKKwljb25maWcuc3ogICAgID0gNDsKKwljb25maWcuZGF0ICAgID0gY2hp cC0+YmFzZSArIFBUMjdfUkVHX0lOOworCWNvbmZpZy5zZXQgICAgPSBjaGlwLT5iYXNlICsgUFQy N19SRUdfT1VUOworCWNvbmZpZy5kaXJvdXQgPSBjaGlwLT5iYXNlICsgUFQyN19SRUdfRElSOwor CWNvbmZpZy5mbGFncyAgPSBHUElPX0dFTkVSSUNfUkVBRF9PVVRQVVRfUkVHX1NFVDsKKworCXJl dCA9IGdwaW9fZ2VuZXJpY19jaGlwX2luaXQoJmNoaXAtPmdlbiwgJmNvbmZpZyk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJnZW5lcmljIGNoaXAgaW5pdCBm YWlsZWRcbiIpOworCisJZ2MgPSAmY2hpcC0+Z2VuLmdjOworCWdjLT5sYWJlbCAgICAgPSBkZXZf bmFtZShkZXYpOworCWdjLT5wYXJlbnQgICAgPSBkZXY7CisJZ2MtPm93bmVyICAgICA9IFRISVNf TU9EVUxFOworCWdjLT5iYXNlICAgICAgPSAtMTsKKwlnYy0+bmdwaW8gICAgID0gUFQyN19OVU1f R1BJT1M7CisJZ2MtPnJlcXVlc3QgICA9IHB0MjdfZ3Bpb19yZXF1ZXN0OworCWdjLT5mcmVlICAg ICAgPSBwdDI3X2dwaW9fZnJlZTsKKworCWdpcnEgPSAmZ2MtPmlycTsKKwlncGlvX2lycV9jaGlw X3NldF9jaGlwKGdpcnEsICZwdDI3X2dwaW9faXJxX2NoaXApOworCWdpcnEtPnBhcmVudF9oYW5k bGVyID0gTlVMTDsKKwlnaXJxLT5udW1fcGFyZW50cyAgICA9IDA7CisJZ2lycS0+cGFyZW50cyAg ICAgICAgPSBOVUxMOworCWdpcnEtPmRlZmF1bHRfdHlwZSAgID0gSVJRX1RZUEVfTk9ORTsKKwln aXJxLT5oYW5kbGVyICAgICAgICA9IGhhbmRsZV9iYWRfaXJxOworCisJcmV0ID0gZGV2bV9kZXZp Y2VfaW5pdF93YWtldXAoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShk ZXYsIHJldCwgImZhaWxlZCB0byBlbmFibGUgd2FrZSBjYXBhYmlsaXR5XG4iKTsKKworCWRldl9w bV9zZXRfZHJpdmVyX2ZsYWdzKGRldiwgRFBNX0ZMQUdfU01BUlRfU1VTUEVORCk7CisKKwlwbV9y dW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheShkZXYsIFBUMjdfQVVUT1NVU1BFTkRfREVMQVlf TVMpOworCXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGRldik7CisKKwlyZXQgPSBkZXZtX2dw aW9jaGlwX2FkZF9kYXRhKGRldiwgZ2MsIGNoaXApOworCWlmIChyZXQpCisJCXJldHVybiBkZXZf ZXJyX3Byb2JlKGRldiwgcmV0LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIEdQSU8gY2hpcFxuIik7CisK KwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgY2hpcC0+aXJxLCBwdDI3X2dwaW9faXNyLAor CQkJICAgICAgIGlycV9mbGFncyB8IElSUUZfTk9fVEhSRUFELCBkZXZfbmFtZShkZXYpLCBjaGlw KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgImZhaWxlZCB0 byByZXF1ZXN0IElSUSAlZFxuIiwgY2hpcC0+aXJxKTsKKworCWRldl9pbmZvKGRldiwKKwkJICJQ VDI3IEdQSU8gY29udHJvbGxlcjogJXUgR1BJT3MgKCV1IHdha2UtY2FwYWJsZSksIElSUT0lZCAo JXMpXG4iLAorCQkgUFQyN19OVU1fR1BJT1MsIFBUMjdfV0FLRV9HUElPUywgY2hpcC0+aXJxLAor CQkgY2hpcC0+dXNlX21zaSA/IChwZGV2LT5tc2l4X2VuYWJsZWQgPyAiTVNJLVgiIDogIk1TSSIp IDogIklOVHgiKTsKKworCXBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOworCXBtX3J1bnRpbWVf YWxsb3coZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwdDI3X2dwaW9fcmVt b3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2 LT5kZXY7CisKKwlwbV9ydW50aW1lX2ZvcmJpZChkZXYpOworCXBtX3J1bnRpbWVfZ2V0X25vcmVz dW1lKGRldik7CisJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZChkZXYpOworfQorCitz dGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHB0MjdfZ3Bpb19zdXNwZW5kKHN0cnVjdCBkZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgcHQyN19ncGlvICpjaGlwID0gZGV2X2dldF9kcnZkYXRhKGRldik7 CisKKwlpZiAocG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKGRldikpIHsKKwkJZGV2X2RiZyhk ZXYsICIlczogYWxyZWFkeSBydW50aW1lLXN1c3BlbmRlZCwgc2tpcHBpbmcgc2F2ZVxuIiwgX19m dW5jX18pOworCQlyZXR1cm4gMDsKKwl9CisKKwlzY29wZWRfZ3VhcmQocmF3X3NwaW5sb2NrX2ly cXNhdmUsICZjaGlwLT5sb2NrKSB7CisJICBwdDI3X3NhdmVfcmVncyhjaGlwKTsKKwkgIGlvd3Jp dGUzMigwLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX0VOKTsKKwkgIGlvd3JpdGUzMihQVDI3 X0dQSU9fTUFTSywgY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9NQVNLKTsKKwkgIGlvd3JpdGUz MihQVDI3X0dQSU9fTUFTSywgY2hpcC0+YmFzZSArIFBUMjdfUkVHX0lOVF9TVEFUKTsKKwkgIGlv d3JpdGUxNihQVDI3X1dBS0VfTUFTSywgY2hpcC0+YmFzZSArIFBUMjdfUkVHX1dBS0VfU1RBVCk7 CisJfQorCisJc3luY2hyb25pemVfaXJxKGNoaXAtPmlycSk7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcHQyN19ncGlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCit7CisJc3RydWN0IHB0MjdfZ3BpbyAqY2hpcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwor CXUxNiB3YWtlX3N0YXR1czsKKworCWlmIChwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoZGV2 KSkKKwkJcmV0dXJuIDA7CisKKwlzY29wZWRfZ3VhcmQocmF3X3NwaW5sb2NrX2lycXNhdmUsICZj aGlwLT5sb2NrKSB7CisJICB3YWtlX3N0YXR1cyA9IGlvcmVhZDE2KGNoaXAtPmJhc2UgKyBQVDI3 X1JFR19XQUtFX1NUQVQpICYgUFQyN19XQUtFX01BU0s7CisJICBpb3dyaXRlMTYod2FrZV9zdGF0 dXMsIGNoaXAtPmJhc2UgKyBQVDI3X1JFR19XQUtFX1NUQVQpOworCSAgcHQyN19yZXN0b3JlX3Jl Z3MoY2hpcCk7CisJfQorCisJaWYgKHdha2Vfc3RhdHVzKQorCQlwbV93YWtldXBfZXZlbnQoZGV2 LCAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHB0Mjdf Z3Bpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBwdDI3 X2dwaW8gKmNoaXAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0ID0gMDsKKworCWlm IChjaGlwLT53YWtlX21hc2sgJiYgIWRldmljZV9tYXlfd2FrZXVwKGRldikpIHsKKwkJcmV0ID0g LUVCVVNZOworCQlicmVhazsKKwl9CisKKwlzY29wZWRfZ3VhcmQocmF3X3NwaW5sb2NrX2lycXNh dmUsICZjaGlwLT5sb2NrKSB7CisKKwkgIHB0Mjdfc2F2ZV9yZWdzKGNoaXApOworCSAgaW93cml0 ZTMyKDAsIGNoaXAtPmJhc2UgKyBQVDI3X1JFR19JTlRfRU4pOworCSAgaW93cml0ZTMyKFBUMjdf R1BJT19NQVNLLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX01BU0spOworCSAgaW93cml0ZTMy KFBUMjdfR1BJT19NQVNLLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfSU5UX1NUQVQpOworCSAgaW93 cml0ZTE2KFBUMjdfV0FLRV9NQVNLLCBjaGlwLT5iYXNlICsgUFQyN19SRUdfV0FLRV9TVEFUKTsK Kwl9CisKKwlpZiAoIXJldCkKKwkJc3luY2hyb25pemVfaXJxKGNoaXAtPmlycSk7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHB0MjdfZ3Bpb19ydW50aW1l X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJcmV0dXJuIHB0MjdfZ3Bpb19yZXN1bWUo ZGV2KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHB0MjdfZ3Bpb19wbV9v cHMgX19tYXliZV91bnVzZWQgPSB7CisJU1lTVEVNX1NMRUVQX1BNX09QUyhwdDI3X2dwaW9fc3Vz cGVuZCwgcHQyN19ncGlvX3Jlc3VtZSkKKwlSVU5USU1FX1BNX09QUyhwdDI3X2dwaW9fcnVudGlt ZV9zdXNwZW5kLCBwdDI3X2dwaW9fcnVudGltZV9yZXN1bWUsIE5VTEwpCit9OworCisjZGVmaW5l IFBDSV9ERVZJQ0VfSURfUFQyNwkweDQ0NGIKKworc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2 aWNlX2lkIHB0MjdfZ3Bpb19wY2lfaWRzW10gPSB7CisJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1Jf SURfQU1ELCBQQ0lfREVWSUNFX0lEX1BUMjcpIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9U QUJMRShwY2ksIHB0MjdfZ3Bpb19wY2lfaWRzKTsKKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVy IHB0MjdfZ3Bpb19wY2lfZHJpdmVyID0geworCS5uYW1lICAgICA9ICJwdHBjaS1ncGlvIiwKKwku aWRfdGFibGUgPSBwdDI3X2dwaW9fcGNpX2lkcywKKwkucHJvYmUgICAgPSBwdDI3X2dwaW9fcHJv YmUsCisJLnJlbW92ZSAgID0gcHQyN19ncGlvX3JlbW92ZSwKKwkuZHJpdmVyICAgPSB7CisJCS5w bSA9IHBtX3B0cigmcHQyN19ncGlvX3BtX29wcyksCisJfSwKK307CisKK21vZHVsZV9wY2lfZHJp dmVyKHB0MjdfZ3Bpb19wY2lfZHJpdmVyKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJBTUQgUHJv bW9udG9yeSBQQ0kgR1BJTyBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0KMi40 OC4xCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyB0byBpdCBjb250YWluIGNvbmZp ZGVudGlhbCBpbmZvcm1hdGlvbiBhbmQgYXJlIGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBv ZiB0aGUgaW5kaXZpZHVhbCB0byB3aG9tIGl0IA0KaXMgYWRkcmVzc2VkLklmIHlvdSBhcmUgbm90 IHRoZSBpbnRlbmRlZCByZWNpcGllbnQgb3IgcmVjZWl2ZSBpdCBhY2NpZGVudGFsbHksIHBsZWFz ZSBpbW1lZGlhdGVseSBub3RpZnkgdGhlIHNlbmRlciBieSBlLW1haWwgYW5kIGRlbGV0ZSANCnRo ZSBtZXNzYWdlIGFuZCBhbnkgYXR0YWNobWVudHMgZnJvbSB5b3VyIGNvbXB1dGVyIHN5c3RlbSwg YW5kIGRlc3Ryb3kgYWxsIGhhcmQgY29waWVzLiBJZiBhbnksIHBsZWFzZSBiZSBhZHZpc2VkIHRo YXQgYW55IHVuYXV0aG9yaXplZCANCmRpc2Nsb3N1cmUsIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBv ciBhbnkgYWN0aW9uIHRha2VuIG9yIG9taXR0ZWQgaW4gcmVsaWFuY2Ugb24gdGhpcywgaXMgaWxs ZWdhbCBhbmQgcHJvaGliaXRlZC4gRnVydGhlcm1vcmUsIGFueSB2aWV3cyANCm9yIG9waW5pb25z IGV4cHJlc3NlZCBhcmUgc29sZWx5IHRob3NlIG9mIHRoZSBhdXRob3IgYW5kIGRvIG5vdCByZXBy ZXNlbnQgdGhvc2Ugb2YgQVNNZWRpYSBUZWNobm9sb2d5IEluYy4gVGhhbmsgeW91IGZvciB5b3Vy IGNvb3BlcmF0aW9uLg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Cg==