From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PATCH 1/3] misc: Add Aspeed BT IPMI host driver Date: Wed, 31 Aug 2016 19:24:17 +0200 Message-ID: <1472664259-23933-2-git-send-email-clg@kaod.org> References: <1472664259-23933-1-git-send-email-clg@kaod.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1472664259-23933-1-git-send-email-clg@kaod.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Joel Stanley Cc: Mark Rutland , devicetree@vger.kernel.org, Arnd Bergmann , Andrew Jeffery , Alistair Popple , Russell King , Rob Herring , Jeremy Kerr , linux-arm-kernel@lists.infradead.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= List-Id: devicetree@vger.kernel.org RnJvbTogQWxpc3RhaXIgUG9wcGxlIDxhbGlzdGFpckBwb3BwbGUuaWQuYXU+CgpUaGlzIHBhdGNo IGFkZHMgYSBzaW1wbGUgZGV2aWNlIGRyaXZlciB0byBleHBvc2UgdGhlIGlCVCBpbnRlcmZhY2Ug b24KQXNwZWVkIGNoaXBzIGFzIGEgY2hhcmFjdGVyIGRldmljZSAoL2Rldi9idCkuCgpUaGUgaUJU IGludGVyZmFjZSBpcyB1c2VkIHRvIHBlcmZvcm0gaW4tYmFuZCBJUE1JIGNvbW11bmljYXRpb24g ZnJvbSBhCkJNQyB0byB0aGUgaG9zdC4KClNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIFBvcHBsZSA8 YWxpc3RhaXJAcG9wcGxlLmlkLmF1PgpTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgS2VyciA8amtAb3ps YWJzLm9yZz4KU2lnbmVkLW9mZi1ieTogSm9lbCBTdGFubGV5IDxqb2VsQGptcy5pZC5hdT4KW2Ns ZzogY2hlY2twYXRjaCBmaXhlcwogICAgICBkZXZpY2V0cmVlIGJpbmRpbmcgZG9jdW1lbnRhdGlv bl0KU2lnbmVkLW9mZi1ieTogQ8OpZHJpYyBMZSBHb2F0ZXIgPGNsZ0BrYW9kLm9yZz4KLS0tCiAu Li4vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2FzcGVlZCxidC1ob3N0LnR4dCAgICB8ICAxOSAr CiBkcml2ZXJzL21pc2MvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NSArCiBkcml2ZXJzL21pc2MvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL21pc2MvYnQtaG9zdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDQzMyArKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9saW51eC9LYnVpbGQg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvdWFwaS9saW51eC9idC1o b3N0LmggICAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDc3 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvbWlzYy9hc3BlZWQsYnQtaG9zdC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL21pc2MvYnQtaG9zdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xp bnV4L2J0LWhvc3QuaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9taXNjL2FzcGVlZCxidC1ob3N0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9taXNjL2FzcGVlZCxidC1ob3N0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjkzOGM1OTk4YzMzMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2FzcGVlZCxidC1ob3N0LnR4dApAQCAtMCww ICsxLDE5IEBACisqIEFzcGVlZCBCVCBJUE1JIGludGVyZmFjZQorCitSZXF1aXJlZCBwcm9wZXJ0 aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFzcGVlZCxidC1ob3N0IgorLSByZWc6 IHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycworCitPcHRpb25hbCBw cm9wZXJ0aWVzOgorCistIGludGVycnVwdHM6IGludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIEJU IGludGVyZmFjZS4gd2l0aG91dCBhbgorICBpbnRlcnJ1cHQsIHRoZSBkcml2ZXIgd2lsbCBvcGVy YXRlIGluIHBvbGwgbW9kZS4KKworRXhhbXBsZToKKworCWlidEAxZTc4OTE0MCB7CisJCWNvbXBh dGlibGUgPSAiYXNwZWVkLGJ0LWhvc3QiOworCQlyZWcgPSA8MHgxZTc4OTE0MCAweDE4PjsKKwkJ aW50ZXJydXB0cyA9IDw4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL0tjb25maWcg Yi9kcml2ZXJzL21pc2MvS2NvbmZpZwppbmRleCBhMjE2YjQ2Njc3NDIuLjQ3Zjc2MTg2MTEyMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL0tjb25maWcKKysrIGIvZHJpdmVycy9taXNjL0tjb25m aWcKQEAgLTgwNCw2ICs4MDQsMTEgQEAgY29uZmlnIFBBTkVMX0JPT1RfTUVTU0FHRQogCSAgQW4g ZW1wdHkgbWVzc2FnZSB3aWxsIG9ubHkgY2xlYXIgdGhlIGRpc3BsYXkgYXQgZHJpdmVyIGluaXQg dGltZS4gQW55IG90aGVyCiAJICBwcmludGYoKS1mb3JtYXR0ZWQgbWVzc2FnZSBpcyB2YWxpZCB3 aXRoIG5ld2xpbmUgYW5kIGVzY2FwZSBjb2Rlcy4KIAorY29uZmlnIEFTUEVFRF9CVF9JUE1JX0hP U1QKKwl0cmlzdGF0ZSAiQlQgSVBNSSBob3N0IGRyaXZlciIKKwloZWxwCisJICBTdXBwb3J0IGZv ciB0aGUgQXNwZWVkIEJUIElQTUkgaG9zdC4KKwogc291cmNlICJkcml2ZXJzL21pc2MvYzJwb3J0 L0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvbWlzYy9lZXByb20vS2NvbmZpZyIKIHNvdXJjZSAi ZHJpdmVycy9taXNjL2NiNzEwL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvTWFr ZWZpbGUgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUKaW5kZXggNzQxMGM2ZDlhMzRkLi43MWE3Yjlm ZWIwZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL21p c2MvTWFrZWZpbGUKQEAgLTU3LDYgKzU3LDcgQEAgb2JqLSQoQ09ORklHX0VDSE8pCQkrPSBlY2hv Lwogb2JqLSQoQ09ORklHX1ZFWFBSRVNTX1NZU0NGRykJKz0gdmV4cHJlc3Mtc3lzY2ZnLm8KIG9i ai0kKENPTkZJR19DWExfQkFTRSkJCSs9IGN4bC8KIG9iai0kKENPTkZJR19QQU5FTCkgICAgICAg ICAgICAgKz0gcGFuZWwubworb2JqLSQoQ09ORklHX0FTUEVFRF9CVF9JUE1JX0hPU1QpCSs9IGJ0 LWhvc3QubwogCiBsa2R0bS0kKENPTkZJR19MS0RUTSkJCSs9IGxrZHRtX2NvcmUubwogbGtkdG0t JChDT05GSUdfTEtEVE0pCQkrPSBsa2R0bV9idWdzLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlz Yy9idC1ob3N0LmMgYi9kcml2ZXJzL21pc2MvYnQtaG9zdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uM2Q5YmZiYWE4OTQwCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9taXNjL2J0LWhvc3QuYwpAQCAtMCwwICsxLDQzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxNS0yMDE2LCBJQk0gQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv bgorICogMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgv bW9kdWxlcGFyYW0uaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4 L3BvbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5s b2NrLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K KyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1 ZGUgPGxpbnV4L29mX2lycS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9taXNjZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CisjaW5jbHVk ZSA8bGludXgvYnQtaG9zdC5oPgorCisjZGVmaW5lIERFVklDRV9OQU1FCSJidC1ob3N0IgorCisj ZGVmaW5lIEJUX0lPX0JBU0UJMHhlNAorI2RlZmluZSBCVF9JUlEJCTEwCisKKyNkZWZpbmUgQlRf Q1IwCQkweDAKKyNkZWZpbmUgICBCVF9DUjBfSU9fQkFTRQkJMTYKKyNkZWZpbmUgICBCVF9DUjBf SVJRCQkJMTIKKyNkZWZpbmUgICBCVF9DUjBfRU5fQ0xSX1NMVl9SRFAJCTB4OAorI2RlZmluZSAg IEJUX0NSMF9FTl9DTFJfU0xWX1dSUAkJMHg0CisjZGVmaW5lICAgQlRfQ1IwX0VOQUJMRV9JQlQJ CTB4MQorI2RlZmluZSBCVF9DUjEJCTB4NAorI2RlZmluZSAgIEJUX0NSMV9JUlFfSDJCCTB4MDEK KyNkZWZpbmUgICBCVF9DUjFfSVJRX0hCVVNZCTB4NDAKKyNkZWZpbmUgQlRfQ1IyCQkweDgKKyNk ZWZpbmUgICBCVF9DUjJfSVJRX0gyQgkweDAxCisjZGVmaW5lICAgQlRfQ1IyX0lSUV9IQlVTWQkw eDQwCisjZGVmaW5lIEJUX0NSMwkJMHhjCisjZGVmaW5lIEJUX0NUUkwJCTB4MTAKKyNkZWZpbmUg ICBCVF9DVFJMX0JfQlVTWQkJMHg4MAorI2RlZmluZSAgIEJUX0NUUkxfSF9CVVNZCQkweDQwCisj ZGVmaW5lICAgQlRfQ1RSTF9PRU0wCQkJMHgyMAorI2RlZmluZSAgIEJUX0NUUkxfU01TX0FUTgkJ MHgxMAorI2RlZmluZSAgIEJUX0NUUkxfQjJIX0FUTgkJMHgwOAorI2RlZmluZSAgIEJUX0NUUkxf SDJCX0FUTgkJMHgwNAorI2RlZmluZSAgIEJUX0NUUkxfQ0xSX1JEX1BUUgkJMHgwMgorI2RlZmlu ZSAgIEJUX0NUUkxfQ0xSX1dSX1BUUgkJMHgwMQorI2RlZmluZSBCVF9CTUMySE9TVAkweDE0Cisj ZGVmaW5lIEJUX0lOVE1BU0sJMHgxOAorI2RlZmluZSAgIEJUX0lOVE1BU0tfQjJIX0lSUUVOCQkw eDAxCisjZGVmaW5lICAgQlRfSU5UTUFTS19CMkhfSVJRCQkweDAyCisjZGVmaW5lICAgQlRfSU5U TUFTS19CTUNfSFdSU1QJCTB4ODAKKworc3RydWN0IGJ0X2hvc3QgeworCXN0cnVjdCBkZXZpY2UJ CWRldjsKKwlzdHJ1Y3QgbWlzY2RldmljZQltaXNjZGV2OworCXZvaWQgX19pb21lbQkJKmJhc2U7 CisJaW50CQkJb3Blbl9jb3VudDsKKwlpbnQJCQlpcnE7CisJd2FpdF9xdWV1ZV9oZWFkX3QJcXVl dWU7CisJc3RydWN0IHRpbWVyX2xpc3QJcG9sbF90aW1lcjsKK307CisKK3N0YXRpYyB1OCBidF9p bmIoc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QsIGludCByZWcpCit7CisJcmV0dXJuIGlvcmVhZDgo YnRfaG9zdC0+YmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyB2b2lkIGJ0X291dGIoc3RydWN0IGJ0 X2hvc3QgKmJ0X2hvc3QsIHU4IGRhdGEsIGludCByZWcpCit7CisJaW93cml0ZTgoZGF0YSwgYnRf aG9zdC0+YmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyB2b2lkIGNscl9yZF9wdHIoc3RydWN0IGJ0 X2hvc3QgKmJ0X2hvc3QpCit7CisJYnRfb3V0YihidF9ob3N0LCBCVF9DVFJMX0NMUl9SRF9QVFIs IEJUX0NUUkwpOworfQorCitzdGF0aWMgdm9pZCBjbHJfd3JfcHRyKHN0cnVjdCBidF9ob3N0ICpi dF9ob3N0KQoreworCWJ0X291dGIoYnRfaG9zdCwgQlRfQ1RSTF9DTFJfV1JfUFRSLCBCVF9DVFJM KTsKK30KKworc3RhdGljIHZvaWQgY2xyX2gyYl9hdG4oc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3Qp Cit7CisJYnRfb3V0YihidF9ob3N0LCBCVF9DVFJMX0gyQl9BVE4sIEJUX0NUUkwpOworfQorCitz dGF0aWMgdm9pZCBzZXRfYl9idXN5KHN0cnVjdCBidF9ob3N0ICpidF9ob3N0KQoreworCWlmICgh KGJ0X2luYihidF9ob3N0LCBCVF9DVFJMKSAmIEJUX0NUUkxfQl9CVVNZKSkKKwkJYnRfb3V0Yihi dF9ob3N0LCBCVF9DVFJMX0JfQlVTWSwgQlRfQ1RSTCk7Cit9CisKK3N0YXRpYyB2b2lkIGNscl9i X2J1c3koc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QpCit7CisJaWYgKGJ0X2luYihidF9ob3N0LCBC VF9DVFJMKSAmIEJUX0NUUkxfQl9CVVNZKQorCQlidF9vdXRiKGJ0X2hvc3QsIEJUX0NUUkxfQl9C VVNZLCBCVF9DVFJMKTsKK30KKworc3RhdGljIHZvaWQgc2V0X2IyaF9hdG4oc3RydWN0IGJ0X2hv c3QgKmJ0X2hvc3QpCit7CisJYnRfb3V0YihidF9ob3N0LCBCVF9DVFJMX0IySF9BVE4sIEJUX0NU UkwpOworfQorCitzdGF0aWMgdTggYnRfcmVhZChzdHJ1Y3QgYnRfaG9zdCAqYnRfaG9zdCkKK3sK KwlyZXR1cm4gYnRfaW5iKGJ0X2hvc3QsIEJUX0JNQzJIT1NUKTsKK30KKworc3RhdGljIHZvaWQg YnRfd3JpdGUoc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QsIHU4IGMpCit7CisJYnRfb3V0YihidF9o b3N0LCBjLCBCVF9CTUMySE9TVCk7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9zbXNfYXRuKHN0cnVj dCBidF9ob3N0ICpidF9ob3N0KQoreworCWJ0X291dGIoYnRfaG9zdCwgQlRfQ1RSTF9TTVNfQVRO LCBCVF9DVFJMKTsKK30KKworc3RhdGljIHN0cnVjdCBidF9ob3N0ICpmaWxlX2J0X2hvc3Qoc3Ry dWN0IGZpbGUgKmZpbGUpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihmaWxlLT5wcml2YXRlX2Rh dGEsIHN0cnVjdCBidF9ob3N0LCBtaXNjZGV2KTsKK30KKworc3RhdGljIGludCBidF9ob3N0X29w ZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGJ0 X2hvc3QgKmJ0X2hvc3QgPSBmaWxlX2J0X2hvc3QoZmlsZSk7CisKKwljbHJfYl9idXN5KGJ0X2hv c3QpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGJ0X2hvc3RfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZiwKKwkJCQlzaXplX3QgY291bnQsIGxvZmZf dCAqcHBvcykKK3sKKwlzdHJ1Y3QgYnRfaG9zdCAqYnRfaG9zdCA9IGZpbGVfYnRfaG9zdChmaWxl KTsKKwljaGFyIF9fdXNlciAqcCA9IGJ1ZjsKKwl1OCBsZW47CisKKwlpZiAoIWFjY2Vzc19vayhW RVJJRllfV1JJVEUsIGJ1ZiwgY291bnQpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCVdBUk5fT04o KnBwb3MpOworCisJaWYgKHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShidF9ob3N0LT5xdWV1ZSwK KwkJCQlidF9pbmIoYnRfaG9zdCwgQlRfQ1RSTCkgJiBCVF9DVFJMX0gyQl9BVE4pKQorCQlyZXR1 cm4gLUVSRVNUQVJUU1lTOworCisJc2V0X2JfYnVzeShidF9ob3N0KTsKKwljbHJfaDJiX2F0bihi dF9ob3N0KTsKKwljbHJfcmRfcHRyKGJ0X2hvc3QpOworCisJbGVuID0gYnRfcmVhZChidF9ob3N0 KTsKKwlfX3B1dF91c2VyKGxlbiwgcCsrKTsKKworCS8qIFdlIHBhc3MgdGhlIGxlbmd0aCBiYWNr IGFzIHdlbGwgKi8KKwlpZiAobGVuICsgMSA+IGNvdW50KQorCQlsZW4gPSBjb3VudCAtIDE7CisK Kwl3aGlsZSAobGVuKSB7CisJCWlmIChfX3B1dF91c2VyKGJ0X3JlYWQoYnRfaG9zdCksIHApKQor CQkJcmV0dXJuIC1FRkFVTFQ7CisJCWxlbi0tOyBwKys7CisJfQorCisJY2xyX2JfYnVzeShidF9o b3N0KTsKKworCXJldHVybiBwIC0gYnVmOworfQorCitzdGF0aWMgc3NpemVfdCBidF9ob3N0X3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAorCQkJCXNpemVf dCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBidF9ob3N0ICpidF9ob3N0ID0gZmls ZV9idF9ob3N0KGZpbGUpOworCWNvbnN0IGNoYXIgX191c2VyICpwID0gYnVmOworCXU4IGM7CisK KwlpZiAoIWFjY2Vzc19vayhWRVJJRllfUkVBRCwgYnVmLCBjb3VudCkpCisJCXJldHVybiAtRUZB VUxUOworCisJV0FSTl9PTigqcHBvcyk7CisKKwkvKiBUaGVyZSdzIG5vIGludGVycnVwdCBmb3Ig Y2xlYXJpbmcgaG9zdCBidXN5IHNvIHdlIGhhdmUgdG8KKwkgKiBwb2xsCisJICovCisJaWYgKHdh aXRfZXZlbnRfaW50ZXJydXB0aWJsZShidF9ob3N0LT5xdWV1ZSwKKwkJCQkhKGJ0X2luYihidF9o b3N0LCBCVF9DVFJMKSAmCisJCQkJCShCVF9DVFJMX0hfQlVTWSB8IEJUX0NUUkxfQjJIX0FUTikp KSkKKwkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKKworCWNscl93cl9wdHIoYnRfaG9zdCk7CisKKwl3 aGlsZSAoY291bnQpIHsKKwkJaWYgKF9fZ2V0X3VzZXIoYywgcCkpCisJCQlyZXR1cm4gLUVGQVVM VDsKKworCQlidF93cml0ZShidF9ob3N0LCBjKTsKKwkJY291bnQtLTsgcCsrOworCX0KKworCXNl dF9iMmhfYXRuKGJ0X2hvc3QpOworCisJcmV0dXJuIHAgLSBidWY7Cit9CisKK3N0YXRpYyBsb25n IGJ0X2hvc3RfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCisJCXVu c2lnbmVkIGxvbmcgcGFyYW0pCit7CisJc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QgPSBmaWxlX2J0 X2hvc3QoZmlsZSk7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgQlRfSE9TVF9JT0NUTF9TTVNf QVROOgorCQlzZXRfc21zX2F0bihidF9ob3N0KTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAt RUlOVkFMOworfQorCitzdGF0aWMgaW50IGJ0X2hvc3RfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgYnRfaG9zdCAqYnRfaG9zdCA9IGZp bGVfYnRfaG9zdChmaWxlKTsKKworCXNldF9iX2J1c3koYnRfaG9zdCk7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYnRfaG9zdF9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBw b2xsX3RhYmxlICp3YWl0KQoreworCXN0cnVjdCBidF9ob3N0ICpidF9ob3N0ID0gZmlsZV9idF9o b3N0KGZpbGUpOworCXVuc2lnbmVkIGludCBtYXNrID0gMDsKKwl1aW50OF90IGN0cmw7CisKKwlw b2xsX3dhaXQoZmlsZSwgJmJ0X2hvc3QtPnF1ZXVlLCB3YWl0KTsKKworCWN0cmwgPSBidF9pbmIo YnRfaG9zdCwgQlRfQ1RSTCk7CisKKwlpZiAoY3RybCAmIEJUX0NUUkxfSDJCX0FUTikKKwkJbWFz ayB8PSBQT0xMSU47CisKKwlpZiAoIShjdHJsICYgKEJUX0NUUkxfSF9CVVNZIHwgQlRfQ1RSTF9C MkhfQVROKSkpCisJCW1hc2sgfD0gUE9MTE9VVDsKKworCXJldHVybiBtYXNrOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBidF9ob3N0X2ZvcHMgPSB7CisJLm93bmVy CQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGJ0X2hvc3Rfb3BlbiwKKwkucmVhZAkJPSBidF9o b3N0X3JlYWQsCisJLndyaXRlCQk9IGJ0X2hvc3Rfd3JpdGUsCisJLnJlbGVhc2UJPSBidF9ob3N0 X3JlbGVhc2UsCisJLnBvbGwJCT0gYnRfaG9zdF9wb2xsLAorCS51bmxvY2tlZF9pb2N0bAk9IGJ0 X2hvc3RfaW9jdGwsCit9OworCitzdGF0aWMgdm9pZCBwb2xsX3RpbWVyKHVuc2lnbmVkIGxvbmcg ZGF0YSkKK3sKKwlzdHJ1Y3QgYnRfaG9zdCAqYnRfaG9zdCA9ICh2b2lkICopZGF0YTsKKworCWJ0 X2hvc3QtPnBvbGxfdGltZXIuZXhwaXJlcyArPSBtc2Vjc190b19qaWZmaWVzKDUwMCk7CisJd2Fr ZV91cCgmYnRfaG9zdC0+cXVldWUpOworCWFkZF90aW1lcigmYnRfaG9zdC0+cG9sbF90aW1lcik7 Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBidF9ob3N0X2lycShpbnQgaXJxLCB2b2lkICphcmcp Cit7CisJc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QgPSBhcmc7CisJdWludDMyX3QgcmVnOworCisJ cmVnID0gaW9yZWFkMzIoYnRfaG9zdC0+YmFzZSArIEJUX0NSMik7CisJcmVnICY9IEJUX0NSMl9J UlFfSDJCIHwgQlRfQ1IyX0lSUV9IQlVTWTsKKwlpZiAoIXJlZykKKwkJcmV0dXJuIElSUV9OT05F OworCisJLyogYWNrIHBlbmRpbmcgSVJRcyAqLworCWlvd3JpdGUzMihyZWcsIGJ0X2hvc3QtPmJh c2UgKyBCVF9DUjIpOworCisJd2FrZV91cCgmYnRfaG9zdC0+cXVldWUpOworCXJldHVybiBJUlFf SEFORExFRDsKK30KKworc3RhdGljIGludCBidF9ob3N0X2NvbmZpZ19pcnEoc3RydWN0IGJ0X2hv c3QgKmJ0X2hvc3QsCisJCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwl1aW50MzJfdCByZWc7CisJaW50IHJjOworCisJ YnRfaG9zdC0+aXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAoZGV2LT5vZl9ub2RlLCAwKTsKKwlp ZiAoIWJ0X2hvc3QtPmlycSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyYyA9IGRldm1fcmVxdWVz dF9pcnEoZGV2LCBidF9ob3N0LT5pcnEsIGJ0X2hvc3RfaXJxLCBJUlFGX1NIQVJFRCwKKwkJCURF VklDRV9OQU1FLCBidF9ob3N0KTsKKwlpZiAocmMgPCAwKSB7CisJCWRldl93YXJuKGRldiwgIlVu YWJsZSB0byByZXF1ZXN0IElSUSAlZFxuIiwgYnRfaG9zdC0+aXJxKTsKKwkJYnRfaG9zdC0+aXJx ID0gMDsKKwkJcmV0dXJuIHJjOworCX0KKworCS8qIENvbmZpZ3VyZSBJUlFzIG9uIHRoZSBob3N0 IGNsZWFyaW5nIHRoZSBIMkIgYW5kIEhCVVNZIGJpdHM7CisJICogSDJCIHdpbGwgYmUgYXNzZXJ0 ZWQgd2hlbiB0aGUgaG9zdCBoYXMgZGF0YSBmb3IgdXM7IEhCVVNZCisJICogd2lsbCBiZSBjbGVh cmVkIChhbG9uZyB3aXRoIEIySCkgd2hlbiB3ZSBjYW4gd3JpdGUgdGhlIG5leHQKKwkgKiBtZXNz YWdlIHRvIHRoZSBCVCBidWZmZXIKKwkgKi8KKwlyZWcgPSBpb3JlYWQzMihidF9ob3N0LT5iYXNl ICsgQlRfQ1IxKTsKKwlyZWcgfD0gQlRfQ1IxX0lSUV9IMkIgfCBCVF9DUjFfSVJRX0hCVVNZOwor CWlvd3JpdGUzMihyZWcsIGJ0X2hvc3QtPmJhc2UgKyBCVF9DUjEpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYnRfaG9zdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQoreworCXN0cnVjdCBidF9ob3N0ICpidF9ob3N0OworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgcmM7CisKKwlpZiAoIXBkZXYgfHwgIXBkZXYtPmRl di5vZl9ub2RlKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWRldiA9ICZwZGV2LT5kZXY7CisJZGV2 X2luZm8oZGV2LCAiRm91bmQgYnQgaG9zdCBkZXZpY2VcbiIpOworCisJYnRfaG9zdCA9IGRldm1f a3phbGxvYyhkZXYsIHNpemVvZigqYnRfaG9zdCksIEdGUF9LRVJORUwpOworCWlmICghYnRfaG9z dCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkZXZfc2V0X2RydmRhdGEoJnBkZXYtPmRldiwgYnRf aG9zdCk7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9N RU0sIDApOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoZGV2LCAiVW5hYmxlIHRvIGZpbmQgcmVz b3VyY2VzXG4iKTsKKwkJcmMgPSAtRU5YSU87CisJCWdvdG8gb3V0X2ZyZWU7CisJfQorCisJYnRf aG9zdC0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOworCWlm ICghYnRfaG9zdC0+YmFzZSkgeworCQlyYyA9IC1FTk9NRU07CisJCWdvdG8gb3V0X2ZyZWU7CisJ fQorCisJaW5pdF93YWl0cXVldWVfaGVhZCgmYnRfaG9zdC0+cXVldWUpOworCisJYnRfaG9zdC0+ bWlzY2Rldi5taW5vcgk9IE1JU0NfRFlOQU1JQ19NSU5PUiwKKwlidF9ob3N0LT5taXNjZGV2Lm5h bWUJPSBERVZJQ0VfTkFNRSwKKwlidF9ob3N0LT5taXNjZGV2LmZvcHMJPSAmYnRfaG9zdF9mb3Bz LAorCWJ0X2hvc3QtPm1pc2NkZXYucGFyZW50ID0gZGV2OworCXJjID0gbWlzY19yZWdpc3Rlcigm YnRfaG9zdC0+bWlzY2Rldik7CisJaWYgKHJjKSB7CisJCWRldl9lcnIoZGV2LCAiVW5hYmxlIHRv IHJlZ2lzdGVyIGRldmljZVxuIik7CisJCWdvdG8gb3V0X3VubWFwOworCX0KKworCWJ0X2hvc3Rf Y29uZmlnX2lycShidF9ob3N0LCBwZGV2KTsKKworCWlmIChidF9ob3N0LT5pcnEpIHsKKwkJZGV2 X2luZm8oZGV2LCAiVXNpbmcgSVJRICVkXG4iLCBidF9ob3N0LT5pcnEpOworCX0gZWxzZSB7CisJ CWRldl9pbmZvKGRldiwgIk5vIElSUTsgdXNpbmcgdGltZXJcbiIpOworCQlzZXR1cF90aW1lcigm YnRfaG9zdC0+cG9sbF90aW1lciwgcG9sbF90aW1lciwKKwkJCQkodW5zaWduZWQgbG9uZylidF9o b3N0KTsKKwkJYnRfaG9zdC0+cG9sbF90aW1lci5leHBpcmVzID0gamlmZmllcyArIG1zZWNzX3Rv X2ppZmZpZXMoMTApOworCQlhZGRfdGltZXIoJmJ0X2hvc3QtPnBvbGxfdGltZXIpOworCX0KKwor CWlvd3JpdGUzMigoQlRfSU9fQkFTRSA8PCBCVF9DUjBfSU9fQkFTRSkgfAorCQkgIChCVF9JUlEg PDwgQlRfQ1IwX0lSUSkgfAorCQkgIEJUX0NSMF9FTl9DTFJfU0xWX1JEUCB8CisJCSAgQlRfQ1Iw X0VOX0NMUl9TTFZfV1JQIHwKKwkJICBCVF9DUjBfRU5BQkxFX0lCVCwKKwkJICBidF9ob3N0LT5i YXNlICsgQlRfQ1IwKTsKKworCWNscl9iX2J1c3koYnRfaG9zdCk7CisKKwlyZXR1cm4gMDsKKwor b3V0X3VubWFwOgorCWRldm1faW91bm1hcCgmcGRldi0+ZGV2LCBidF9ob3N0LT5iYXNlKTsKKwor b3V0X2ZyZWU6CisJZGV2bV9rZnJlZShkZXYsIGJ0X2hvc3QpOworCXJldHVybiByYzsKKworfQor CitzdGF0aWMgaW50IGJ0X2hvc3RfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cit7CisJc3RydWN0IGJ0X2hvc3QgKmJ0X2hvc3QgPSBkZXZfZ2V0X2RydmRhdGEoJnBkZXYtPmRl dik7CisKKwltaXNjX2RlcmVnaXN0ZXIoJmJ0X2hvc3QtPm1pc2NkZXYpOworCWlmICghYnRfaG9z dC0+aXJxKQorCQlkZWxfdGltZXJfc3luYygmYnRfaG9zdC0+cG9sbF90aW1lcik7CisJZGV2bV9p b3VubWFwKCZwZGV2LT5kZXYsIGJ0X2hvc3QtPmJhc2UpOworCWRldm1fa2ZyZWUoJnBkZXYtPmRl diwgYnRfaG9zdCk7CisJYnRfaG9zdCA9IE5VTEw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYnRfaG9zdF9tYXRjaFtdID0geworCXsgLmNvbXBh dGlibGUgPSAiYXNwZWVkLGJ0LWhvc3QiIH0sCisJeyB9LAorfTsKKworc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgYnRfaG9zdF9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUJ CT0gREVWSUNFX05BTUUsCisJCS5vZl9tYXRjaF90YWJsZSA9IGJ0X2hvc3RfbWF0Y2gsCisJfSwK KwkucHJvYmUgPSBidF9ob3N0X3Byb2JlLAorCS5yZW1vdmUgPSBidF9ob3N0X3JlbW92ZSwKK307 CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYnRfaG9zdF9kcml2ZXIpOworCitNT0RVTEVfREVW SUNFX1RBQkxFKG9mLCBidF9ob3N0X21hdGNoKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01P RFVMRV9BVVRIT1IoIkFsaXN0YWlyIFBvcHBsZSA8YWxpc3RhaXJAcG9wcGxlLmlkLmF1PiIpOwor TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW51eCBkZXZpY2UgaW50ZXJmYWNlIHRvIHRoZSBCVCBpbnRl cmZhY2UiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9LYnVpbGQgYi9pbmNsdWRl L3VhcGkvbGludXgvS2J1aWxkCmluZGV4IDE4NWY4ZWEyNzAyZi4uYzc2M2EzNWMyMTQ3IDEwMDY0 NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvS2J1aWxkCisrKyBiL2luY2x1ZGUvdWFwaS9saW51 eC9LYnVpbGQKQEAgLTc0LDYgKzc0LDcgQEAgaGVhZGVyLXkgKz0gYnBmX2NvbW1vbi5oCiBoZWFk ZXIteSArPSBicGYuaAogaGVhZGVyLXkgKz0gYnBxZXRoZXIuaAogaGVhZGVyLXkgKz0gYnNnLmgK K2hlYWRlci15ICs9IGJ0LWhvc3QuaAogaGVhZGVyLXkgKz0gYnRyZnMuaAogaGVhZGVyLXkgKz0g Y2FuLmgKIGhlYWRlci15ICs9IGNhcGFiaWxpdHkuaApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2xpbnV4L2J0LWhvc3QuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9idC1ob3N0LmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMmFlZGRkZjBiZjQKLS0tIC9kZXYvbnVs bAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvYnQtaG9zdC5oCkBAIC0wLDAgKzEsMTggQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNiwgSUJNIENvcnBvcmF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24KKyAqIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2lmbmRlZiBfVUFQSV9MSU5VWF9CVF9IT1NU X0gKKyNkZWZpbmUgX1VBUElfTElOVVhfQlRfSE9TVF9ICisKKyNpbmNsdWRlIDxsaW51eC9pb2N0 bC5oPgorCisjZGVmaW5lIF9fQlRfSE9TVF9JT0NUTF9NQUdJQwkweGIxCisjZGVmaW5lIEJUX0hP U1RfSU9DVExfU01TX0FUTglfSU8oX19CVF9IT1NUX0lPQ1RMX01BR0lDLCAweDAwKQorCisjZW5k aWYgLyogX1VBUElfTElOVVhfQlRfSE9TVF9IICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK