From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v7 23/25] xen/arm: Allow vpl011 to be used by DomU Date: Mon, 12 Nov 2018 14:59:56 -0800 Message-ID: <1542063598-23767-23-git-send-email-sstabellini@kernel.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: julien.grall@arm.com Cc: Stefano Stabellini , Achin.Gupta@arm.com, sstabellini@kernel.org, andrii_anisov@epam.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org TWFrZSB2cGwwMTEgYmVpbmcgYWJsZSB0byBiZSB1c2VkIHdpdGhvdXQgYSB1c2Vyc3BhY2UgY29t cG9uZW50IGluIERvbTAuCkluIHRoYXQgY2FzZSwgb3V0cHV0IGlzIHByaW50ZWQgdG8gdGhlIFhl biBzZXJpYWwgYW5kIGlucHV0IGlzIHJlY2VpdmVkCmZyb20gdGhlIFhlbiBzZXJpYWwgb25lIGNo YXJhY3RlciBhdCBhIHRpbWUuCgpDYWxsIGRvbWFpbl92cGwwMTFfaW5pdCBkdXJpbmcgY29uc3Ry dWN0X2RvbVUgaWYgdnBsMDExIGlzIGVuYWJsZWQuCgpJbnRyb2R1Y2UgYSBuZXcgcmluZyBzdHJ1 Y3Qgd2l0aCBvbmx5IHRoZSByaW5nIGFycmF5IHRvIGF2b2lkIGEgd2FzdGUgb2YKbWVtb3J5LiBJ bnRyb2R1Y2Ugc2VwYXJhdGUgcmVhZF9kYXRhIGFuZCB3cml0ZV9kYXRhIGZ1bmN0aW9ucyBmb3IK aW5pdGlhbCBkb21haW5zOiB2cGwwMTFfd3JpdGVfZGF0YV94ZW4gaXMgdmVyeSBzaW1wbGUgYW5k IGp1c3Qgd3JpdGVzCnRvIHRoZSBjb25zb2xlLCB3aGlsZSB2cGwwMTFfcmVhZF9kYXRhX3hlbiBp cyBhIGR1cGxpY2F0ZSBvZgp2cGwwMTFfcmVhZF9kYXRhLiBBbHRob3VnaCB0ZXh0dWFsbHkgYWxt b3N0IGlkZW50aWNhbCwgd2UgYXJlIGZvcmNlZCB0bwpkdXBsaWNhdGUgdGhlIGZ1bmN0aW9ucyBi ZWNhdXNlIHRoZSBzdHJ1Y3QgbGF5b3V0IGlzIGRpZmZlcmVudC4KClRvIGF2b2lkIG1peGluZyB0 aGUgb3V0cHV0IG9mIGRpZmZlcmVudCBkb21haW5zIG9uIHRoZSBjb25zb2xlLCBidWZmZXIKdGhl IG91dHB1dCBjaGFycyBhbmQgcHJpbnQgbGluZSBieSBsaW5lLiBVbmxlc3MgdGhlIGRvbWFpbiBo YXMgaW5wdXQKZnJvbSB0aGUgc2VyaWFsLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gcHJpbnQg Y2hhciBieSBjaGFyIGZvciBhCnNtb290aCB1c2VyIGV4cGVyaWVuY2UuCgpUaGUgc2l6ZSBvZiBT QlNBX1VBUlRfT1VUX0JVRl9TSVpFIGlzIGFyYml0cmFyeSwgY2hvb3NlIHRoZSBzYW1lIHNpemUK YXMgVlVBUlRfQlVGX1NJWkUgdXNlZCBpbiB2dWFydC5jLgoKRXhwb3J0IGEgZnVuY3Rpb24gbmFt ZWQgY29uc29sZV9pbnB1dF9kb21haW4oKSB0byBhbGxvdyBvdGhlcnMgdG8ga25vdwp3aGljaCBk b21haW5zIGhhcyBpbnB1dCBhdCBhIGdpdmVuIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5v IFN0YWJlbGxpbmkgPHN0ZWZhbm9zQHhpbGlueC5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwg PGp1bGllbi5ncmFsbEBhcm0uY29tPgotLS0KQ2hhbmdlcyBpbiB2NzoKLSBtZXJnZSBwYXRjaCB3 aXRoICJ4ZW4vdnBsMDExOiBidWZmZXIgb3V0IGNoYXJzIHdoZW4gdGhlIGJhY2tlbmQgaXMgeGVu IgogIChubyBvdGhlciBjaGFuZ2VzKQotIGtlZXAgSnVsaWVuJ3MgQWNrZWQtYnkgYXMgYm90aCBw YXRjaGVzIHdlcmUgQWNrZWQgYnkgSnVsaWVuCgpDaGFuZ2VzIGluIHY1OgotIHJlbmFibGUgY2Fs bCB0byB2cGwwMTFfcnhfY2hhcl94ZW4gZnJvbSBjb25zb2xlLmMKCkNoYW5nZXMgaW4gdjQ6Ci0g Y29kZSBzdHlsZQoKQ2hhbmdlcyBpbiB2MzoKLSBhZGQgaW4tY29kZSBjb21tZW50cwotIGltcHJv dmUgZXhpc3RpbmcgY29tbWVudHMKLSByZW1vdmUgaWZkZWYgYXJvdW5kIGRvbWFpbl92cGwwMTFf aW5pdCBpbiBjb25zdHJ1Y3RfZG9tVQotIGFkZCBBU1NFUlQKLSB1c2UgU0JTQV9VQVJUX0ZJRk9f U0laRSBmb3IgaW4gYnVmZmVyIHNpemUKLSByZW5hbWUgcmluZ19lbmFibGUgdG8gYmFja2VuZF9p bl9kb21haW4KLSByZW5hbWUgc3RydWN0IHhlbmNvbnNfaW4gdG8gc3RydWN0IHZwbDAxMV94ZW5f YmFja2VuZAotIHJlbmFtZSBpbnJpbmcgZmllbGQgdG8geGVuCi0gcmVuYW1lIGhlbHBlciBmdW5j dGlvbnMgYWNjb3JkaW5nbHkKLSByZW1vdmUgdW5uZWNlc3Nhcnkgc3R1YiBpbXBsZW1lbnRhdGlv biBvZiB2cGwwMTFfcnhfY2hhcgotIG1vdmUgdnBsMDExX3J4X2NoYXJfeGVuIHdpdGhpbiB0aGUg ZmlsZSB0byBhdm9pZCB0aGUgbmVlZCBvZiBhIGZvcndhcmQKICBkZWNsYXJhdGlvbiBvZiB2cGww MTFfZGF0YV9hdmFpbAotIGZpeCBzbWFsbCBidWcgaW4gdnBsMDExX3J4X2NoYXJfeGVuOiBpbmNy ZW1lbnQgaW5fcHJvZCBiZWZvcmUgdXNpbmcgaXQKICB0byBjaGVjayB4ZW5jb25zX3F1ZXVlZC4K CkNoYW5nZXMgaW4gdjI6Ci0gb25seSBpbml0IGlmIHZwbDAxMQotIHJlbmFtZSB2cGwwMTFfcmVh ZF9jaGFyIHRvIHZwbDAxMV9yeF9jaGFyCi0gcmVtb3ZlIHNwdXJpb3VzIGNoYW5nZQotIGZpeCBj b2Rpbmcgc3R5bGUKLSB1c2UgZGlmZmVyZW50IHJpbmcgc3RydWN0Ci0gbW92ZSB0aGUgd3JpdGVf ZGF0YSBjaGFuZ2VzIHRvIHRoZWlyIG93biBmdW5jdGlvbgogICh2cGwwMTFfd3JpdGVfZGF0YV9u b3JpbmcpCi0gZHVwbGljYXRlIHZwbDAxMV9yZWFkX2RhdGEKLS0tCiB4ZW4vYXJjaC9hcm0vZG9t YWluX2J1aWxkLmMgIHwgICA5ICstCiB4ZW4vYXJjaC9hcm0vdnBsMDExLmMgICAgICAgIHwgMjMx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHhlbi9kcml2ZXJz L2NoYXIvY29uc29sZS5jICAgfCAgMTAgKy0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgg fCAgMTIgKysrCiB4ZW4vaW5jbHVkZS94ZW4vY29uc29sZS5oICAgIHwgICAyICsKIDUgZmlsZXMg Y2hhbmdlZCwgMjM4IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQu YwppbmRleCA5MzNhNmM5Li4wNjRmMmE5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZG9tYWlu X2J1aWxkLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCkBAIC0yNjMxLDcgKzI2 MzEsMTQgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbVUoc3RydWN0IGRvbWFpbiAq ZCwKICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIHJldHVybiBj b25zdHJ1Y3RfZG9tYWluKGQsICZraW5mbyk7CisgICAgcmMgPSBjb25zdHJ1Y3RfZG9tYWluKGQs ICZraW5mbyk7CisgICAgaWYgKCByYyA8IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBp ZiAoIGtpbmZvLnZwbDAxMSApCisgICAgICAgIHJjID0gZG9tYWluX3ZwbDAxMV9pbml0KGQsIE5V TEwpOworCisgICAgcmV0dXJuIHJjOwogfQogCiB2b2lkIF9faW5pdCBjcmVhdGVfZG9tVXModm9p ZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92cGwwMTEuYyBiL3hlbi9hcmNoL2FybS92cGww MTEuYwppbmRleCA2ODQ1MmE4Li43MTlhMzM5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdnBs MDExLmMKKysrIGIveGVuL2FyY2gvYXJtL3ZwbDAxMS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j bHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPHhlbi9zY2hl ZC5oPgorI2luY2x1ZGUgPHhlbi9jb25zb2xlLmg+CiAjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5o PgogI2luY2x1ZGUgPHB1YmxpYy9pby9jb25zb2xlLmg+CiAjaW5jbHVkZSA8YXNtL3BsMDExLXVh cnQuaD4KQEAgLTc3LDYgKzc4LDEyMSBAQCBzdGF0aWMgdm9pZCB2cGwwMTFfdXBkYXRlX2ludGVy cnVwdF9zdGF0dXMoc3RydWN0IGRvbWFpbiAqZCkKICNlbmRpZgogfQogCisvKgorICogdnBsMDEx X3dyaXRlX2RhdGFfeGVuIHdyaXRlcyBjaGFycyBmcm9tIHRoZSB2cGwwMTEgb3V0IGJ1ZmZlciB0 byB0aGUKKyAqIGNvbnNvbGUuIE9ubHkgdG8gYmUgdXNlZCB3aGVuIHRoZSBiYWNrZW5kIGlzIFhl bi4KKyAqLworc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGFfeGVuKHN0cnVjdCBkb21haW4g KmQsIHVpbnQ4X3QgZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHN0cnVj dCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgdnBsMDExX3hl bl9iYWNrZW5kICppbnRmID0gdnBsMDExLT5iYWNrZW5kLnhlbjsKKyAgICBzdHJ1Y3QgZG9tYWlu ICppbnB1dCA9IGNvbnNvbGVfaW5wdXRfZG9tYWluKCk7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBm bGFncyk7CisKKyAgICBpbnRmLT5vdXRbaW50Zi0+b3V0X3Byb2QrK10gPSBkYXRhOworICAgIGlm ICggZCA9PSBpbnB1dCApCisgICAgeworICAgICAgICBpZiAoIGludGYtPm91dF9wcm9kID09IDEg KQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIiVjIiwgZGF0YSk7CisgICAgICAgICAg ICBpbnRmLT5vdXRfcHJvZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7 CisgICAgICAgICAgICBpZiAoIGRhdGEgIT0gJ1xuJyApCisgICAgICAgICAgICAgICAgaW50Zi0+ b3V0W2ludGYtPm91dF9wcm9kKytdID0gJ1xuJzsKKyAgICAgICAgICAgIGludGYtPm91dFtpbnRm LT5vdXRfcHJvZCsrXSA9ICdcMCc7CisgICAgICAgICAgICBwcmludGsoIiVzIiwgaW50Zi0+b3V0 KTsKKyAgICAgICAgICAgIGludGYtPm91dF9wcm9kID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAg ICBlbHNlCisgICAgeworICAgICAgICBpZiAoIGludGYtPm91dF9wcm9kID09IFNCU0FfVUFSVF9P VVRfQlVGX1NJWkUgLSAyIHx8CisgICAgICAgICAgICAgZGF0YSA9PSAnXG4nICkKKyAgICAgICAg eworICAgICAgICAgICAgaWYgKCBkYXRhICE9ICdcbicgKQorICAgICAgICAgICAgICAgIGludGYt Pm91dFtpbnRmLT5vdXRfcHJvZCsrXSA9ICdcbic7CisgICAgICAgICAgICBpbnRmLT5vdXRbaW50 Zi0+b3V0X3Byb2QrK10gPSAnXDAnOworICAgICAgICAgICAgcHJpbnRrKCJET00ldTogJXMiLCBk LT5kb21haW5faWQsIGludGYtPm91dCk7CisgICAgICAgICAgICBpbnRmLT5vdXRfcHJvZCA9IDA7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2cGwwMTEtPnVhcnRyaXMgfD0gVFhJOworICAgIHZw bDAxMS0+dWFydGZyICY9IH5UWEZFOworICAgIHZwbDAxMV91cGRhdGVfaW50ZXJydXB0X3N0YXR1 cyhkKTsKKworICAgIFZQTDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworICAgIGlmICggaW5wdXQgIT0g TlVMTCApCisgICAgICAgIHJjdV91bmxvY2tfZG9tYWluKGlucHV0KTsKK30KKworLyoKKyAqIHZw bDAxMV9yZWFkX2RhdGFfeGVuIHJlYWRzIGRhdGEgd2hlbiB0aGUgYmFja2VuZCBpcyB4ZW4uIENo YXJhY3RlcnMKKyAqIGFyZSBhZGRlZCB0byB0aGUgdnBsMDExIHJlY2VpdmUgYnVmZmVyIGJ5IHZw bDAxMV9yeF9jaGFyX3hlbi4KKyAqLworc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YV94 ZW4oc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgIHVp bnQ4X3QgZGF0YSA9IDA7CisgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBs MDExOworICAgIHN0cnVjdCB2cGwwMTFfeGVuX2JhY2tlbmQgKmludGYgPSB2cGwwMTEtPmJhY2tl bmQueGVuOworICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZDsKKworICAgIFZQ TDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAg IGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOworCisgICAgc21wX3JtYigpOworCisgICAgLyoKKyAg ICAgKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZXJlIHdpbGwgYmUgZGF0YSBpbiB0aGUgcmluZyBi dWZmZXIgd2hlbiB0aGlzCisgICAgICogZnVuY3Rpb24gaXMgY2FsbGVkIHNpbmNlIHRoZSBndWVz dCBpcyBleHBlY3RlZCB0byByZWFkIHRoZSBkYXRhIHJlZ2lzdGVyCisgICAgICogb25seSBpZiB0 aGUgVFhGRSBmbGFnIGlzIG5vdCBzZXQuCisgICAgICogSWYgdGhlIGd1ZXN0IHN0aWxsIGRvZXMg cmVhZCB3aGVuIFRYRkUgYml0IGlzIHNldCB0aGVuIDAgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAg Ki8KKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRm LT5pbikpID4gMCApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgZmlmb19sZXZlbDsKKwor ICAgICAgICBkYXRhID0gaW50Zi0+aW5beGVuY29uc19tYXNrKGluX2NvbnMsIHNpemVvZihpbnRm LT5pbikpXTsKKyAgICAgICAgaW5fY29ucyArPSAxOworICAgICAgICBzbXBfbWIoKTsKKyAgICAg ICAgaW50Zi0+aW5fY29ucyA9IGluX2NvbnM7CisKKyAgICAgICAgZmlmb19sZXZlbCA9IHhlbmNv bnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNpemVvZihpbnRmLT5pbikpOworCisgICAgICAg IC8qIElmIHRoZSBGSUZPIGlzIG5vdyBlbXB0eSwgd2UgY2xlYXIgdGhlIHJlY2VpdmUgdGltZW91 dCBpbnRlcnJ1cHQuICovCisgICAgICAgIGlmICggZmlmb19sZXZlbCA9PSAwICkKKyAgICAgICAg eworICAgICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gUlhGRTsKKyAgICAgICAgICAgIHZwbDAx MS0+dWFydHJpcyAmPSB+UlRJOworICAgICAgICB9CisKKyAgICAgICAgLyogSWYgdGhlIEZJRk8g aXMgbW9yZSB0aGFuIGhhbGYgZW1wdHksIHdlIGNsZWFyIHRoZSBSWCBpbnRlcnJ1cHQuICovCisg ICAgICAgIGlmICggZmlmb19sZXZlbCA8IHNpemVvZihpbnRmLT5pbikgLSBTQlNBX1VBUlRfRklG T19MRVZFTCApCisgICAgICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflJYSTsKKworICAgICAg ICB2cGwwMTFfdXBkYXRlX2ludGVycnVwdF9zdGF0dXMoZCk7CisgICAgfQorICAgIGVsc2UKKyAg ICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAidnBsMDExOiBVbmV4cGVjdGVkIElOIHJpbmcgYnVm ZmVyIGVtcHR5XG4iKTsKKworICAgIC8qCisgICAgICogV2UgaGF2ZSBjb25zdW1lZCBhIGNoYXJh Y3RlciBvciB0aGUgRklGTyB3YXMgZW1wdHksIHNvIGNsZWFyIHRoZQorICAgICAqICJGSUZPIGZ1 bGwiIGJpdC4KKyAgICAgKi8KKyAgICB2cGwwMTEtPnVhcnRmciAmPSB+UlhGRjsKKworICAgIFZQ TDAxMV9VTkxPQ0soZCwgZmxhZ3MpOworCisgICAgcmV0dXJuIGRhdGE7Cit9CisKIHN0YXRpYyB1 aW50OF90IHZwbDAxMV9yZWFkX2RhdGEoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwpAQCAtMjQwLDcgKzM1NiwxMCBAQCBzdGF0aWMgaW50IHZwbDAxMV9tbWlv X3JlYWQoc3RydWN0IHZjcHUgKnYsCiAgICAgY2FzZSBEUjoKICAgICAgICAgaWYgKCAhdnBsMDEx X3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwogCi0gICAgICAgICpy ID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMV9yZWFkX2RhdGEoZCksIGluZm8pOworICAgICAg ICBpZiAoIHZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4gKQorICAgICAgICAgICAgKnIgPSB2cmVn X3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0YShkKSwgaW5mbyk7CisgICAgICAgIGVsc2UK KyAgICAgICAgICAgICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMV9yZWFkX2RhdGFfeGVu KGQpLCBpbmZvKTsKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBjYXNlIFJTUjoKQEAgLTMyNSw3 ICs0NDQsMTAgQEAgc3RhdGljIGludCB2cGwwMTFfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwK IAogICAgICAgICB2cmVnX3JlZzMyX3VwZGF0ZSgmZGF0YSwgciwgaW5mbyk7CiAgICAgICAgIGRh dGEgJj0gMHhGRjsKLSAgICAgICAgdnBsMDExX3dyaXRlX2RhdGEodi0+ZG9tYWluLCBkYXRhKTsK KyAgICAgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICAgICAgICAgIHZw bDAxMV93cml0ZV9kYXRhKHYtPmRvbWFpbiwgZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIHZwbDAxMV93cml0ZV9kYXRhX3hlbih2LT5kb21haW4sIGRhdGEpOwogICAgICAgICByZXR1 cm4gMTsKICAgICB9CiAKQEAgLTQzMCw2ICs1NTIsMzkgQEAgc3RhdGljIHZvaWQgdnBsMDExX2Rh dGFfYXZhaWwoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgdnBsMDExLT51YXJ0ZnIgfD0gVFhG RTsKIH0KIAorLyoKKyAqIHZwbDAxMV9yeF9jaGFyX3hlbiBhZGRzIGEgY2hhciB0byBhIGRvbWFp bidzIHZwbDAxMSByZWNlaXZlIGJ1ZmZlci4KKyAqIEl0IGlzIG9ubHkgdXNlZCB3aGVuIHRoZSB2 cGwwMTEgYmFja2VuZCBpcyBpbiBYZW4uCisgKi8KK3ZvaWQgdnBsMDExX3J4X2NoYXJfeGVuKHN0 cnVjdCBkb21haW4gKmQsIGNoYXIgYykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAg IHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAgICBzdHJ1Y3QgdnBs MDExX3hlbl9iYWNrZW5kICppbnRmID0gdnBsMDExLT5iYWNrZW5kLnhlbjsKKyAgICBYRU5DT05T X1JJTkdfSURYIGluX2NvbnMsIGluX3Byb2QsIGluX2ZpZm9fbGV2ZWw7CisKKyAgICBBU1NFUlQo IXZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4pOworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsK KworICAgIGluX2NvbnMgPSBpbnRmLT5pbl9jb25zOworICAgIGluX3Byb2QgPSBpbnRmLT5pbl9w cm9kOworICAgIGlmICggeGVuY29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGlu dGYtPmluKSkgPT0gc2l6ZW9mKGludGYtPmluKSApCisgICAgeworICAgICAgICBWUEwwMTFfVU5M T0NLKGQsIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludGYtPmluW3hl bmNvbnNfbWFzayhpbl9wcm9kLCBzaXplb2YoaW50Zi0+aW4pKV0gPSBjOworICAgIGludGYtPmlu X3Byb2QgPSArK2luX3Byb2Q7CisKKyAgICBpbl9maWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQo aW5fcHJvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29ucywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPmluKSk7CisKKyAg ICB2cGwwMTFfZGF0YV9hdmFpbChkLCBpbl9maWZvX2xldmVsLCBzaXplb2YoaW50Zi0+aW4pLCAw LCBTQlNBX1VBUlRfRklGT19TSVpFKTsKKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKK30K Kwogc3RhdGljIHZvaWQgdnBsMDExX25vdGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWdu ZWQgaW50IHBvcnQpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTQ3MCwyNyArNjI1 LDQ3IEBAIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZw bDAxMV9pbml0X2luZm8gKmluZm8pCiAgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdf YnVmICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICAvKiBNYXAgdGhlIGd1ZXN0IFBG TiB0byBYZW4gYWRkcmVzcyBzcGFjZS4gKi8KLSAgICByYyA9ICBwcmVwYXJlX3JpbmdfZm9yX2hl bHBlcihkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGluZm8tPmdm biksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwbDAxMS0+YmFja2VuZC5k b20ucmluZ19wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cGwwMTEt PmJhY2tlbmQuZG9tLnJpbmdfYnVmKTsKLSAgICBpZiAoIHJjIDwgMCApCi0gICAgICAgIGdvdG8g b3V0OworICAgIC8qCisgICAgICogaW5mbyBpcyBOVUxMIHdoZW4gdGhlIGJhY2tlbmQgaXMgaW4g WGVuLgorICAgICAqIGluZm8gaXMgIT0gTlVMTCB3aGVuIHRoZSBiYWNrZW5kIGlzIGluIGEgZG9t YWluLgorICAgICAqLworICAgIGlmICggaW5mbyAhPSBOVUxMICkKKyAgICB7CisgICAgICAgIHZw bDAxMS0+YmFja2VuZF9pbl9kb21haW4gPSB0cnVlOworCisgICAgICAgIC8qIE1hcCB0aGUgZ3Vl c3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAqLworICAgICAgICByYyA9ICBwcmVwYXJlX3Jp bmdfZm9yX2hlbHBlcihkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Zm5feChpbmZvLT5nZm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm dnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ2cGwwMTEtPmJhY2tlbmQuZG9tLnJpbmdfYnVmKTsKKyAgICAgICAgaWYg KCByYyA8IDAgKQorICAgICAgICAgICAgZ290byBvdXQ7CisKKyAgICAgICAgcmMgPSBhbGxvY191 bmJvdW5kX3hlbl9ldmVudF9jaGFubmVsKGQsIDAsIGluZm8tPmNvbnNvbGVfZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTFfbm90aWZpY2F0 aW9uKTsKKyAgICAgICAgaWYgKCByYyA8IDAgKQorICAgICAgICAgICAgZ290byBvdXQxOworCisg ICAgICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7CisgICAgfQorICAgIGVs c2UKKyAgICB7CisgICAgICAgIHZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4gPSBmYWxzZTsKKwor ICAgICAgICB2cGwwMTEtPmJhY2tlbmQueGVuID0geHphbGxvYyhzdHJ1Y3QgdnBsMDExX3hlbl9i YWNrZW5kKTsKKyAgICAgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmQueGVuID09IE5VTEwgKQorICAg ICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBnb3RvIG91dDE7 CisgICAgICAgIH0KKyAgICB9CiAKICAgICByYyA9IHZnaWNfcmVzZXJ2ZV92aXJxKGQsIEdVRVNU X1ZQTDAxMV9TUEkpOwogICAgIGlmICggIXJjICkKICAgICB7CiAgICAgICAgIHJjID0gLUVJTlZB TDsKLSAgICAgICAgZ290byBvdXQxOwotICAgIH0KLQotICAgIHJjID0gYWxsb2NfdW5ib3VuZF94 ZW5fZXZlbnRfY2hhbm5lbChkLCAwLCBpbmZvLT5jb25zb2xlX2RvbWlkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTFfbm90aWZpY2F0aW9uKTsKLSAgICBp ZiAoIHJjIDwgMCApCiAgICAgICAgIGdvdG8gb3V0MjsKLQotICAgIHZwbDAxMS0+ZXZ0Y2huID0g aW5mby0+ZXZ0Y2huID0gcmM7CisgICAgfQogCiAgICAgc3Bpbl9sb2NrX2luaXQoJnZwbDAxMS0+ bG9jayk7CiAKQEAgLTUwMyw4ICs2NzgsMTEgQEAgb3V0MjoKICAgICB2Z2ljX2ZyZWVfdmlycShk LCBHVUVTVF9WUEwwMTFfU1BJKTsKIAogb3V0MToKLSAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBl cigmdnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX2J1ZiwKLQkJCSAgICAgICAgICAgICAgICB2cGww MTEtPmJhY2tlbmQuZG9tLnJpbmdfcGFnZSk7CisgICAgaWYgKCB2cGwwMTEtPmJhY2tlbmRfaW5f ZG9tYWluICkKKyAgICAgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxwZXIoJnZwbDAxMS0+YmFja2Vu ZC5kb20ucmluZ19idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMS0+ YmFja2VuZC5kb20ucmluZ19wYWdlKTsKKyAgICBlbHNlCisgICAgICAgIHhmcmVlKHZwbDAxMS0+ YmFja2VuZC54ZW4pOwogCiBvdXQ6CiAgICAgcmV0dXJuIHJjOwpAQCAtNTE0LDEyICs2OTIsMTcg QEAgdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0 cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKIAotICAgIGlmICggIXZwbDAx MS0+YmFja2VuZC5kb20ucmluZ19idWYgKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCB2cGww MTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICB7CisgICAgICAgIGlmICggIXZwbDAxMS0+YmFj a2VuZC5kb20ucmluZ19idWYgKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJlZV94ZW5f ZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7Ci0gICAgZGVzdHJveV9yaW5nX2Zvcl9o ZWxwZXIoJnZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19idWYsCi0JCQkgICAgICAgICAgICAgICAg dnBsMDExLT5iYWNrZW5kLmRvbS5yaW5nX3BhZ2UpOworICAgICAgICBmcmVlX3hlbl9ldmVudF9j aGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKKyAgICAgICAgZGVzdHJveV9yaW5nX2Zvcl9oZWxw ZXIoJnZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19idWYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZwbDAxMS0+YmFja2VuZC5kb20ucmluZ19wYWdlKTsKKyAgICB9CisgICAgZWxz ZQorICAgICAgICB4ZnJlZSh2cGwwMTEtPmJhY2tlbmQueGVuKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL2NoYXIvY29uc29sZS5jIGIveGVuL2RyaXZlcnMvY2hhci9jb25zb2xl LmMKaW5kZXggOGEwMWE0My4uZmE2NTY5ZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvY2hhci9j b25zb2xlLmMKKysrIGIveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMKQEAgLTQwNiw2ICs0MDYs MTQgQEAgc3RhdGljIHZvaWQgZHVtcF9jb25zb2xlX3Jpbmdfa2V5KHVuc2lnbmVkIGNoYXIga2V5 KQogICovCiBzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgY29uc29sZV9yeCA9IDA7 CiAKKy8qIE1ha2Ugc3VyZSB0byByY3VfdW5sb2NrX2RvbWFpbiBhZnRlciB1c2UgKi8KK3N0cnVj dCBkb21haW4gKmNvbnNvbGVfaW5wdXRfZG9tYWluKHZvaWQpCit7CisgICAgaWYgKCBjb25zb2xl X3J4ID09IDAgKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJjdV9sb2Nr X2RvbWFpbl9ieV9pZChjb25zb2xlX3J4IC0gMSk7Cit9CisKIHN0YXRpYyB2b2lkIHN3aXRjaF9z ZXJpYWxfaW5wdXQodm9pZCkKIHsKICAgICBpZiAoIGNvbnNvbGVfcnggPT0gbWF4X2luaXRfZG9t aWQgKyAxICkKQEAgLTQ0Nyw3ICs0NTUsNyBAQCBzdGF0aWMgdm9pZCBfX3NlcmlhbF9yeChjaGFy IGMsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBzZW5kX2dsb2JhbF92aXJx KFZJUlFfQ09OU09MRSk7CiAgICAgICAgIGJyZWFrOwogCi0jaWYgMAorI2lmZGVmIENPTkZJR19T QlNBX1ZVQVJUX0NPTlNPTEUKICAgICBkZWZhdWx0OgogICAgIHsKICAgICAgICAgc3RydWN0IGRv bWFpbiAqZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9hbnlfaWQoY29uc29sZV9yeCAtIDEpOwpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCBiL3hlbi9pbmNsdWRlL2FzbS1h cm0vdnBsMDExLmgKaW5kZXggNDJkN2EyNC4uMTI1NzZhNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLWFybS92cGwwMTEuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCkBA IC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+CiAjaW5jbHVkZSA8 cHVibGljL2lvL3JpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaW8vY29uc29sZS5oPgogI2luY2x1 ZGUgPGFzbS92cmVnLmg+CiAjaW5jbHVkZSA8eGVuL21tLmg+CiAKQEAgLTI5LDEzICszMCwyMyBA QAogI2RlZmluZSBWUEwwMTFfVU5MT0NLKGQsZmxhZ3MpIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxhZ3MpCiAKICNkZWZpbmUgU0JTQV9VQVJUX0ZJRk9f U0laRSAzMgorLyogU2FtZSBzaXplIGFzIFZVQVJUX0JVRl9TSVpFLCB1c2VkIGluIHZ1YXJ0LmMg Ki8KKyNkZWZpbmUgU0JTQV9VQVJUX09VVF9CVUZfU0laRSAxMjgKK3N0cnVjdCB2cGwwMTFfeGVu X2JhY2tlbmQgeworICAgIGNoYXIgaW5bU0JTQV9VQVJUX0ZJRk9fU0laRV07CisgICAgY2hhciBv dXRbU0JTQV9VQVJUX09VVF9CVUZfU0laRV07CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9jb25z LCBpbl9wcm9kOworICAgIFhFTkNPTlNfUklOR19JRFggb3V0X3Byb2Q7Cit9OwogCiBzdHJ1Y3Qg dnBsMDExIHsKKyAgICBib29sIGJhY2tlbmRfaW5fZG9tYWluOwogICAgIHVuaW9uIHsKICAgICAg ICAgc3RydWN0IHsKICAgICAgICAgICAgIHZvaWQgKnJpbmdfYnVmOwogICAgICAgICAgICAgc3Ry dWN0IHBhZ2VfaW5mbyAqcmluZ19wYWdlOwogICAgICAgICB9IGRvbTsKKyAgICAgICAgc3RydWN0 IHZwbDAxMV94ZW5fYmFja2VuZCAqeGVuOwogICAgIH0gYmFja2VuZDsKICAgICB1aW50MzJfdCAg ICB1YXJ0ZnI7ICAgICAgICAgLyogRmxhZyByZWdpc3RlciAqLwogICAgIHVpbnQzMl90ICAgIHVh cnRjcjsgICAgICAgICAvKiBDb250cm9sIHJlZ2lzdGVyICovCkBAIC01Nyw2ICs2OCw3IEBAIHN0 cnVjdCB2cGwwMTFfaW5pdF9pbmZvIHsKIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRv bWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8g KmluZm8pOwogdm9pZCBkb21haW5fdnBsMDExX2RlaW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKK3Zv aWQgdnBsMDExX3J4X2NoYXJfeGVuKHN0cnVjdCBkb21haW4gKmQsIGNoYXIgYyk7CiAjZWxzZQog c3RhdGljIGlubGluZSBpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2lu Zm8gKmluZm8pCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vY29uc29sZS5oIGIveGVuL2lu Y2x1ZGUveGVuL2NvbnNvbGUuaAppbmRleCA3MGM5OTExLi5jNWE4NWM4IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS94ZW4vY29uc29sZS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9jb25zb2xlLmgK QEAgLTMxLDYgKzMxLDggQEAgdm9pZCBjb25zb2xlX2VuZF9zeW5jKHZvaWQpOwogdm9pZCBjb25z b2xlX3N0YXJ0X2xvZ19ldmVyeXRoaW5nKHZvaWQpOwogdm9pZCBjb25zb2xlX2VuZF9sb2dfZXZl cnl0aGluZyh2b2lkKTsKIAorc3RydWN0IGRvbWFpbiAqY29uc29sZV9pbnB1dF9kb21haW4odm9p ZCk7CisKIC8qCiAgKiBTdGVhbCBvdXRwdXQgZnJvbSB0aGUgY29uc29sZS4gUmV0dXJucyArdmUg aWRlbnRpZmllciwgZWxzZSAtdmUgZXJyb3IuCiAgKiBUYWtlcyB0aGUgaGFuZGxlIG9mIHRoZSBz ZXJpYWwgbGluZSB0byBzdGVhbCwgYW5kIHN0ZWFsIGNhbGxiYWNrIGZ1bmN0aW9uLgotLSAKMS45 LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs