From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 22/25] xen/arm: Allow vpl011 to be used by DomU Date: Tue, 31 Jul 2018 16:28:05 -0700 Message-ID: <1533079688-9541-22-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 , 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 ZWNhdXNlIHRoZSBzdHJ1Y3QgbGF5b3V0IGlzIGRpZmZlcmVudC4KCk91dHB1dCBjaGFyYWN0ZXJz IGFyZSBwcmludGVkIG9uZSBieSBvbmUsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8KaW50ZXJtaXhl ZCBvdXRwdXQgb2YgZGlmZmVyZW50IGRvbWFpbnMgb24gdGhlIGNvbnNvbGUuIEEgZm9sbG93LXVw IHBhdGNoCndpbGwgc29sdmUgdGhlIGlzc3VlIGJ5IGludHJvZHVjaW5nIGJ1ZmZlcmluZy4KClNp Z25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub3NAeGlsaW54LmNvbT4KLS0t CkNoYW5nZXMgaW4gdjM6Ci0gYWRkIGluLWNvZGUgY29tbWVudHMKLSBpbXByb3ZlIGV4aXN0aW5n IGNvbW1lbnRzCi0gcmVtb3ZlIGlmZGVmIGFyb3VuZCBkb21haW5fdnBsMDExX2luaXQgaW4gY29u c3RydWN0X2RvbVUKLSBhZGQgQVNTRVJUCi0gdXNlIFNCU0FfVUFSVF9GSUZPX1NJWkUgZm9yIGlu IGJ1ZmZlciBzaXplCi0gcmVuYW1lIHJpbmdfZW5hYmxlIHRvIGJhY2tlbmRfaW5fZG9tYWluCi0g cmVuYW1lIHN0cnVjdCB4ZW5jb25zX2luIHRvIHN0cnVjdCB2cGwwMTFfeGVuX2JhY2tlbmQKLSBy ZW5hbWUgaW5yaW5nIGZpZWxkIHRvIHhlbgotIHJlbmFtZSBoZWxwZXIgZnVuY3Rpb25zIGFjY29y ZGluZ2x5Ci0gcmVtb3ZlIHVubmVjZXNzYXJ5IHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdnBsMDEx X3J4X2NoYXIKLSBtb3ZlIHZwbDAxMV9yeF9jaGFyX3hlbiB3aXRoaW4gdGhlIGZpbGUgdG8gYXZv aWQgdGhlIG5lZWQgb2YgYSBmb3J3YXJkCiAgZGVjbGFyYXRpb24gb2YgdnBsMDExX2RhdGFfYXZh aWwKLSBmaXggc21hbGwgYnVnIGluIHZwbDAxMV9yeF9jaGFyX3hlbjogaW5jcmVtZW50IGluX3By b2QgYmVmb3JlIHVzaW5nIGl0CiAgdG8gY2hlY2sgeGVuY29uc19xdWV1ZWQuCgpDaGFuZ2VzIGlu IHYyOgotIG9ubHkgaW5pdCBpZiB2cGwwMTEKLSByZW5hbWUgdnBsMDExX3JlYWRfY2hhciB0byB2 cGwwMTFfcnhfY2hhcgotIHJlbW92ZSBzcHVyaW91cyBjaGFuZ2UKLSBmaXggY29kaW5nIHN0eWxl Ci0gdXNlIGRpZmZlcmVudCByaW5nIHN0cnVjdAotIG1vdmUgdGhlIHdyaXRlX2RhdGEgY2hhbmdl cyB0byB0aGVpciBvd24gZnVuY3Rpb24KICAodnBsMDExX3dyaXRlX2RhdGFfbm9yaW5nKQotIGR1 cGxpY2F0ZSB2cGwwMTFfcmVhZF9kYXRhCi0tLQogeGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5j ICB8ICAgOSArLQogeGVuL2FyY2gvYXJtL3ZwbDAxMS5jICAgICAgICB8IDE5OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3Zw bDAxMS5oIHwgICA4ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspLCAyMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94 ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKaW5kZXggZjlmYTQ4NC4uMDg4OGE3NiAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21h aW5fYnVpbGQuYwpAQCAtMjYzOCw3ICsyNjM4LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0 cnVjdF9kb21VKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSkK ICAgICBpZiAoIHJjIDwgMCApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIHJldHVybiBfX2Nv bnN0cnVjdF9kb21haW4oZCwgJmtpbmZvKTsKKyAgICByYyA9IF9fY29uc3RydWN0X2RvbWFpbihk LCAma2luZm8pOworICAgIGlmICggcmMgPCAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAg aWYgKCBraW5mby52cGwwMTEgKQorICAgICAgICByYyA9IGRvbWFpbl92cGwwMTFfaW5pdChkLCBO VUxMKTsKKworICAgIHJldHVybiByYzsKIH0KIAogdm9pZCBfX2luaXQgY3JlYXRlX2RvbVVzKHZv aWQpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBs MDExLmMKaW5kZXggNzI1YTIwMy4uZjIwNmM2MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3Zw bDAxMS5jCisrKyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwpAQCAtNzcsNiArNzcsOTEgQEAgc3Rh dGljIHZvaWQgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKHN0cnVjdCBkb21haW4gKmQp CiAjZW5kaWYKIH0KIAorLyoKKyAqIHZwbDAxMV93cml0ZV9kYXRhX3hlbiB3cml0ZXMgY2hhcnMg ZnJvbSB0aGUgdnBsMDExIG91dCBidWZmZXIgdG8gdGhlCisgKiBjb25zb2xlLiBPbmx5IHRvIGJl IHVzZWQgd2hlbiB0aGUgYmFja2VuZCBpcyBYZW4uCisgKi8KK3N0YXRpYyB2b2lkIHZwbDAxMV93 cml0ZV9kYXRhX3hlbihzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRhdGEpCit7CisgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAmZC0+YXJjaC52 cGwwMTE7CisKKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7CisKKyAgICBwcmludGsoIiVjIiwg ZGF0YSk7CisgICAgaWYgKGRhdGEgPT0gJ1xuJykKKyAgICAgICAgcHJpbnRrKCJET00ldTogIiwg ZC0+ZG9tYWluX2lkKTsKKworICAgIHZwbDAxMS0+dWFydHJpcyB8PSBUWEk7CisgICAgdnBsMDEx LT51YXJ0ZnIgJj0gflRYRkU7CisgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVzKGQp OworCisgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cit9CisKKy8qCisgKiB2cGwwMTFfcmVh ZF9kYXRhX3hlbiByZWFkcyBkYXRhIHdoZW4gdGhlIGJhY2tlbmQgaXMgeGVuLiBDaGFyYWN0ZXJz CisgKiBhcmUgYWRkZWQgdG8gdGhlIHZwbDAxMSByZWNlaXZlIGJ1ZmZlciBieSB2cGwwMTFfcnhf Y2hhcl94ZW4uCisgKi8KK3N0YXRpYyB1aW50OF90IHZwbDAxMV9yZWFkX2RhdGFfeGVuKHN0cnVj dCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICB1aW50OF90IGRh dGEgPSAwOworICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAxMTsKKyAg ICBzdHJ1Y3QgdnBsMDExX3hlbl9iYWNrZW5kICppbnRmID0gdnBsMDExLT54ZW47CisgICAgWEVO Q09OU19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOworCisgICAgVlBMMDExX0xPQ0soZCwgZmxh Z3MpOworCisgICAgaW5fY29ucyA9IGludGYtPmluX2NvbnM7CisgICAgaW5fcHJvZCA9IGludGYt PmluX3Byb2Q7CisKKyAgICBzbXBfcm1iKCk7CisKKyAgICAvKgorICAgICAqIEl0IGlzIGV4cGVj dGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRhIGluIHRoZSByaW5nIGJ1ZmZlciB3aGVuIHRoaXMK KyAgICAgKiBmdW5jdGlvbiBpcyBjYWxsZWQgc2luY2UgdGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRv IHJlYWQgdGhlIGRhdGEgcmVnaXN0ZXIKKyAgICAgKiBvbmx5IGlmIHRoZSBUWEZFIGZsYWcgaXMg bm90IHNldC4KKyAgICAgKiBJZiB0aGUgZ3Vlc3Qgc3RpbGwgZG9lcyByZWFkIHdoZW4gVFhGRSBi aXQgaXMgc2V0IHRoZW4gMCB3aWxsIGJlIHJldHVybmVkLgorICAgICAqLworICAgIGlmICggeGVu Y29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPiAwICkKKyAg ICB7CisgICAgICAgIHVuc2lnbmVkIGludCBmaWZvX2xldmVsOworCisgICAgICAgIGRhdGEgPSBp bnRmLT5pblt4ZW5jb25zX21hc2soaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSldOworICAgICAg ICBpbl9jb25zICs9IDE7CisgICAgICAgIHNtcF9tYigpOworICAgICAgICBpbnRmLT5pbl9jb25z ID0gaW5fY29uczsKKworICAgICAgICBmaWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQoaW5fcHJv ZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSk7CisKKyAgICAgICAgLyogSWYgdGhlIEZJRk8g aXMgbm93IGVtcHR5LCB3ZSBjbGVhciB0aGUgcmVjZWl2ZSB0aW1lb3V0IGludGVycnVwdC4gKi8K KyAgICAgICAgaWYgKCBmaWZvX2xldmVsID09IDAgKQorICAgICAgICB7CisgICAgICAgICAgICB2 cGwwMTEtPnVhcnRmciB8PSBSWEZFOworICAgICAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9IH5S VEk7CisgICAgICAgIH0KKworICAgICAgICAvKiBJZiB0aGUgRklGTyBpcyBtb3JlIHRoYW4gaGFs ZiBlbXB0eSwgd2UgY2xlYXIgdGhlIFJYIGludGVycnVwdC4gKi8KKyAgICAgICAgaWYgKCBmaWZv X2xldmVsIDwgc2l6ZW9mKGludGYtPmluKSAtIFNCU0FfVUFSVF9GSUZPX0xFVkVMICkKKyAgICAg ICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+UlhJOworCisgICAgICAgIHZwbDAxMV91cGRhdGVf aW50ZXJydXB0X3N0YXR1cyhkKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBncHJpbnRrKFhF TkxPR19FUlIsICJ2cGwwMTE6IFVuZXhwZWN0ZWQgSU4gcmluZyBidWZmZXIgZW1wdHlcbiIpOwor CisgICAgLyoKKyAgICAgKiBXZSBoYXZlIGNvbnN1bWVkIGEgY2hhcmFjdGVyIG9yIHRoZSBGSUZP IHdhcyBlbXB0eSwgc28gY2xlYXIgdGhlCisgICAgICogIkZJRk8gZnVsbCIgYml0LgorICAgICAq LworICAgIHZwbDAxMS0+dWFydGZyICY9IH5SWEZGOworCisgICAgVlBMMDExX1VOTE9DSyhkLCBm bGFncyk7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKwogc3RhdGljIHVpbnQ4X3QgdnBsMDExX3Jl YWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBA IC0yNDAsNyArMzI1LDEwIEBAIHN0YXRpYyBpbnQgdnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNw dSAqdiwKICAgICBjYXNlIERSOgogICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNj ZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CiAKLSAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4 dHJhY3QodnBsMDExX3JlYWRfZGF0YShkKSwgaW5mbyk7CisgICAgICAgIGlmICggdnBsMDExLT5i YWNrZW5kX2luX2RvbWFpbiApCisgICAgICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2 cGwwMTFfcmVhZF9kYXRhKGQpLCBpbmZvKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnIg PSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0YV94ZW4oZCksIGluZm8pOwogICAg ICAgICByZXR1cm4gMTsKIAogICAgIGNhc2UgUlNSOgpAQCAtMzI1LDcgKzQxMywxMCBAQCBzdGF0 aWMgaW50IHZwbDAxMV9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LAogCiAgICAgICAgIHZyZWdf cmVnMzJfdXBkYXRlKCZkYXRhLCByLCBpbmZvKTsKICAgICAgICAgZGF0YSAmPSAweEZGOwotICAg ICAgICB2cGwwMTFfd3JpdGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOworICAgICAgICBpZiAoIHZw bDAxMS0+YmFja2VuZF9pbl9kb21haW4gKQorICAgICAgICAgICAgdnBsMDExX3dyaXRlX2RhdGEo di0+ZG9tYWluLCBkYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdnBsMDExX3dyaXRl X2RhdGFfeGVuKHYtPmRvbWFpbiwgZGF0YSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApA QCAtNDMwLDYgKzUyMSwzOSBAQCBzdGF0aWMgdm9pZCB2cGwwMTFfZGF0YV9hdmFpbChzdHJ1Y3Qg ZG9tYWluICpkLAogICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZFOwogfQogCisvKgorICog dnBsMDExX3J4X2NoYXJfeGVuIGFkZHMgYSBjaGFyIHRvIGEgZG9tYWluJ3MgdnBsMDExIHJlY2Vp dmUgYnVmZmVyLgorICogSXQgaXMgb25seSB1c2VkIHdoZW4gdGhlIHZwbDAxMSBiYWNrZW5kIGlz IGluIFhlbi4KKyAqLwordm9pZCB2cGwwMTFfcnhfY2hhcl94ZW4oc3RydWN0IGRvbWFpbiAqZCwg Y2hhciBjKQoreworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgc3RydWN0IHZwbDAxMSAq dnBsMDExID0gJmQtPmFyY2gudnBsMDExOworICAgIHN0cnVjdCB2cGwwMTFfeGVuX2JhY2tlbmQg KmludGYgPSB2cGwwMTEtPnhlbjsKKyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMsIGluX3By b2QsIGluX2ZpZm9fbGV2ZWw7CisKKyAgICBBU1NFUlQoIXZwbDAxMS0+YmFja2VuZF9pbl9kb21h aW4pOworICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKKworICAgIGluX2NvbnMgPSBpbnRmLT5p bl9jb25zOworICAgIGluX3Byb2QgPSBpbnRmLT5pbl9wcm9kOworICAgIGlmICggeGVuY29uc19x dWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPT0gc2l6ZW9mKGludGYt PmluKSApCisgICAgeworICAgICAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKKyAgICAgICAg cmV0dXJuOworICAgIH0KKworICAgIGludGYtPmluW3hlbmNvbnNfbWFzayhpbl9wcm9kLCBzaXpl b2YoaW50Zi0+aW4pKV0gPSBjOworICAgIGludGYtPmluX3Byb2QgPSArK2luX3Byb2Q7CisKKyAg ICBpbl9maWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQoaW5fcHJvZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5fY29ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKGludGYtPmluKSk7CisKKyAgICB2cGwwMTFfZGF0YV9hdmFpbChkLCBp bl9maWZvX2xldmVsLCBzaXplb2YoaW50Zi0+aW4pLCAwLCBTQlNBX1VBUlRfRklGT19TSVpFKTsK KyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKK30KKwogc3RhdGljIHZvaWQgdnBsMDExX25v dGlmaWNhdGlvbihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCiB7CiAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKQEAgLTQ3MCwyNyArNTk0LDQ3IEBAIGludCBkb21haW5fdnBsMDEx X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCiAg ICAgaWYgKCB2cGwwMTEtPmRvbS5yaW5nX2J1ZiApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog Ci0gICAgLyogTWFwIHRoZSBndWVzdCBQRk4gdG8gWGVuIGFkZHJlc3Mgc3BhY2UuICovCi0gICAg cmMgPSAgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZm5feChpbmZvLT5nZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ2cGwwMTEtPmRvbS5yaW5nX3BhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnZwbDAxMS0+ZG9tLnJpbmdfYnVmKTsKLSAgICBpZiAoIHJjIDwgMCApCi0gICAg ICAgIGdvdG8gb3V0OworICAgIC8qCisgICAgICogaW5mbyBpcyBOVUxMIHdoZW4gdGhlIGJhY2tl bmQgaXMgaW4gWGVuLgorICAgICAqIGluZm8gaXMgIT0gTlVMTCB3aGVuIHRoZSBiYWNrZW5kIGlz IGluIGEgZG9tYWluLgorICAgICAqLworICAgIGlmICggaW5mbyAhPSBOVUxMICkKKyAgICB7Cisg ICAgICAgIHZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4gPSB0cnVlOworCisgICAgICAgIC8qIE1h cCB0aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAqLworICAgICAgICByYyA9ICBw cmVwYXJlX3JpbmdfZm9yX2hlbHBlcihkLAorICAgICAgICAgICAgICAgIGdmbl94KGluZm8tPmdm biksCisgICAgICAgICAgICAgICAgJnZwbDAxMS0+ZG9tLnJpbmdfcGFnZSwKKyAgICAgICAgICAg ICAgICAmdnBsMDExLT5kb20ucmluZ19idWYpOworICAgICAgICBpZiAoIHJjIDwgMCApCisgICAg ICAgICAgICBnb3RvIG91dDsKKworICAgICAgICByYyA9IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50 X2NoYW5uZWwoZCwgMCwgaW5mby0+Y29uc29sZV9kb21pZCwKKyAgICAgICAgICAgICAgICB2cGww MTFfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgaWYgKCByYyA8IDAgKQorICAgICAgICAgICAgZ290 byBvdXQxOworCisgICAgICAgIHZwbDAxMS0+ZXZ0Y2huID0gaW5mby0+ZXZ0Y2huID0gcmM7Cisg ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHZwbDAxMS0+YmFja2VuZF9pbl9kb21haW4g PSBmYWxzZTsKKworICAgICAgICB2cGwwMTEtPnhlbiA9IHh6YWxsb2Moc3RydWN0IHZwbDAxMV94 ZW5fYmFja2VuZCk7CisgICAgICAgIGlmICggdnBsMDExLT54ZW4gPT0gTlVMTCApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGdvdG8gb3V0MTsKKyAg ICAgICAgfQorICAgIH0KIAogICAgIHJjID0gdmdpY19yZXNlcnZlX3ZpcnEoZCwgR1VFU1RfVlBM MDExX1NQSSk7CiAgICAgaWYgKCAhcmMgKQogICAgIHsKICAgICAgICAgcmMgPSAtRUlOVkFMOwot ICAgICAgICBnb3RvIG91dDE7Ci0gICAgfQotCi0gICAgcmMgPSBhbGxvY191bmJvdW5kX3hlbl9l dmVudF9jaGFubmVsKGQsIDAsIGluZm8tPmNvbnNvbGVfZG9taWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZwbDAxMV9ub3RpZmljYXRpb24pOwotICAgIGlmICgg cmMgPCAwICkKICAgICAgICAgZ290byBvdXQyOwotCi0gICAgdnBsMDExLT5ldnRjaG4gPSBpbmZv LT5ldnRjaG4gPSByYzsKKyAgICB9CiAKICAgICBzcGluX2xvY2tfaW5pdCgmdnBsMDExLT5sb2Nr KTsKIApAQCAtNTAzLDcgKzY0NywxMCBAQCBvdXQyOgogICAgIHZnaWNfZnJlZV92aXJxKGQsIEdV RVNUX1ZQTDAxMV9TUEkpOwogCiBvdXQxOgotICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2 cGwwMTEtPmRvbS5yaW5nX2J1ZiwgdnBsMDExLT5kb20ucmluZ19wYWdlKTsKKyAgICBpZiAoIHZw bDAxMS0+YmFja2VuZF9pbl9kb21haW4gKQorICAgICAgICBkZXN0cm95X3JpbmdfZm9yX2hlbHBl cigmdnBsMDExLT5kb20ucmluZ19idWYsIHZwbDAxMS0+ZG9tLnJpbmdfcGFnZSk7CisgICAgZWxz ZQorICAgICAgICB4ZnJlZSh2cGwwMTEtPnhlbik7CiAKIG91dDoKICAgICByZXR1cm4gcmM7CkBA IC01MTMsMTEgKzY2MCwxOCBAQCB2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21h aW4gKmQpCiB7CiAgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwog Ci0gICAgaWYgKCAhdnBsMDExLT5kb20ucmluZ19idWYgKQotICAgICAgICByZXR1cm47CisgICAg aWYgKCB2cGwwMTEtPmJhY2tlbmRfaW5fZG9tYWluICkKKyAgICB7CisgICAgICAgIGlmICggIXZw bDAxMS0+ZG9tLnJpbmdfYnVmICkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGZyZWVfeGVu X2V2ZW50X2NoYW5uZWwoZCwgdnBsMDExLT5ldnRjaG4pOwotICAgIGRlc3Ryb3lfcmluZ19mb3Jf aGVscGVyKCZ2cGwwMTEtPmRvbS5yaW5nX2J1ZiwgdnBsMDExLT5kb20ucmluZ19wYWdlKTsKKyAg ICAgICAgZnJlZV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7CisgICAgICAg IGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPmRvbS5yaW5nX2J1ZiwgdnBsMDExLT5k b20ucmluZ19wYWdlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgeGZyZWUodnBs MDExLT54ZW4pOworICAgIH0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vdnBsMDExLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCmluZGV4IGI4NzNhMjku LmM5OTE4YzEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaApAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5jbHVk ZSA8cHVibGljL2RvbWN0bC5oPgogI2luY2x1ZGUgPHB1YmxpYy9pby9yaW5nLmg+CisjaW5jbHVk ZSA8cHVibGljL2lvL2NvbnNvbGUuaD4KICNpbmNsdWRlIDxhc20vdnJlZy5oPgogI2luY2x1ZGUg PHhlbi9tbS5oPgogCkBAIC0yOSwxMyArMzAsMTkgQEAKICNkZWZpbmUgVlBMMDExX1VOTE9DSyhk LGZsYWdzKSBzcGluX3VubG9ja19pcnFyZXN0b3JlKCYoZCktPmFyY2gudnBsMDExLmxvY2ssIGZs YWdzKQogCiAjZGVmaW5lIFNCU0FfVUFSVF9GSUZPX1NJWkUgMzIKK3N0cnVjdCB2cGwwMTFfeGVu X2JhY2tlbmQgeworICAgIGNoYXIgaW5bU0JTQV9VQVJUX0ZJRk9fU0laRV07CisgICAgWEVOQ09O U19SSU5HX0lEWCBpbl9jb25zLCBpbl9wcm9kOworfTsKIAogc3RydWN0IHZwbDAxMSB7CisgICAg Ym9vbCBiYWNrZW5kX2luX2RvbWFpbjsKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB7CiAg ICAgICAgICAgICB2b2lkICpyaW5nX2J1ZjsKICAgICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8g KnJpbmdfcGFnZTsKICAgICAgICAgfSBkb207CisgICAgICAgIHN0cnVjdCB2cGwwMTFfeGVuX2Jh Y2tlbmQgKnhlbjsKICAgICB9OwogICAgIHVpbnQzMl90ICAgIHVhcnRmcjsgICAgICAgICAvKiBG bGFnIHJlZ2lzdGVyICovCiAgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAgICAgIC8qIENvbnRy b2wgcmVnaXN0ZXIgKi8KQEAgLTU3LDYgKzY0LDcgQEAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8g ewogaW50IGRvbWFpbl92cGwwMTFfaW5pdChzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbyk7CiB2b2lkIGRvbWFpbl92 cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOwordm9pZCB2cGwwMTFfcnhfY2hhcl94ZW4o c3RydWN0IGRvbWFpbiAqZCwgY2hhciBjKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIGludCBkb21h aW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdnBsMDExX2luaXRfaW5mbyAqaW5mbykKLS0gCjEuOS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==