From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v4 12/27] ARM: vGICv3: handle virtual LPI pending and property tables Date: Mon, 3 Apr 2017 21:28:14 +0100 Message-ID: <20170403202829.7278-13-andre.przywara@arm.com> References: <20170403202829.7278-1-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cv8Yo-0004zG-7P for xen-devel@lists.xenproject.org; Mon, 03 Apr 2017 20:26:46 +0000 In-Reply-To: <20170403202829.7278-1-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org QWxsb3cgYSBndWVzdCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUgbWVt b3J5IHJlZ2lvbnMKaXQgaGFzIHJlc2VydmVkIGZvciB0aGUgR0lDdjMgcGVuZGluZyBhbmQgcHJv cGVydHkgdGFibGVzLgpXZSBzYW5pdGlzZSB0aGUgdmFyaW91cyBmaWVsZHMgb2YgdGhlIHJlc3Bl Y3RpdmUgcmVkaXN0cmlidXRvcgpyZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdlcyBpbnRvIFhl bidzIGFkZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5CmFjY2Vzcy4KClNpZ25lZC1vZmYtYnk6IEFu ZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS92 Z2ljLXYzLmMgICAgICAgfCAxMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQogeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAgICB8ICA2MSArKysrKysrKysrKysr KysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIHwgICA2ICstCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL3ZnaWMuaCAgIHwgICAyICsKIHhlbi9pbmNsdWRlL3hlbi9tbS5oICAgICAgICAg fCAgIDggKysrCiA1IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gvYXJt L3ZnaWMtdjMuYwppbmRleCA3OTdmZDg2Li4yYzZiMzE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h cm0vdmdpYy12My5jCisrKyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKQEAgLTE5LDEyICsxOSwx NCBAQAogICovCiAKICNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFp bl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9pbml0Lmg+CiAj aW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vaXJxLmg+CiAjaW5jbHVkZSA8 eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NpemVzLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAu aD4KICNpbmNsdWRlIDxhc20vY3VycmVudC5oPgogI2luY2x1ZGUgPGFzbS9tbWlvLmg+CiAjaW5j bHVkZSA8YXNtL2dpY192M19kZWZzLmg+CkBAIC0yMjgsMTIgKzIzMCwxNSBAQCBzdGF0aWMgaW50 IF9fdmdpY192M19yZGlzdHJfcmRfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9f dCAqaW5mbywKICAgICAgICAgZ290byByZWFkX3Jlc2VydmVkOwogCiAgICAgY2FzZSBWUkVHNjQo R0lDUl9QUk9QQkFTRVIpOgotICAgICAgICAvKiBMUEkncyBub3QgaW1wbGVtZW50ZWQgKi8KLSAg ICAgICAgZ290byByZWFkX2FzX3plcm9fNjQ7CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hl Y2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWc2 NF9leHRyYWN0KHYtPmRvbWFpbi0+YXJjaC52Z2ljLnJkaXN0X3Byb3BiYXNlLCBpbmZvKTsKKyAg ICAgICAgcmV0dXJuIDE7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX1BFTkRCQVNFUik6Ci0gICAg ICAgIC8qIExQSSdzIG5vdCBpbXBsZW1lbnRlZCAqLwotICAgICAgICBnb3RvIHJlYWRfYXNfemVy b182NDsKKyAgICAgICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3Rv IGJhZF93aWR0aDsKKyAgICAgICAgKnIgPSB2Z2ljX3JlZzY0X2V4dHJhY3Qodi0+YXJjaC52Z2lj LnJkaXN0X3BlbmRiYXNlLCBpbmZvKTsKKyAgICAgICAgKnIgJj0gfkdJQ1JfUEVOREJBU0VSX1BU WjsgICAgICAgLyogV08sIHJlYWRzIGFzIDAgKi8KKyAgICAgICAgcmV0dXJuIDE7CiAKICAgICBj YXNlIDB4MDA4MDoKICAgICAgICAgZ290byByZWFkX3Jlc2VydmVkOwpAQCAtMzAxLDExICszMDYs NiBAQCBiYWRfd2lkdGg6CiAgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7CiAgICAgcmV0 dXJuIDA7CiAKLXJlYWRfYXNfemVyb182NDoKLSAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2Fj Y2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwotICAgICpyID0gMDsKLSAgICByZXR1cm4gMTsK LQogcmVhZF9hc196ZXJvXzMyOgogICAgIGlmICggZGFidC5zaXplICE9IERBQlRfV09SRCApIGdv dG8gYmFkX3dpZHRoOwogICAgICpyID0gMDsKQEAgLTM1OCwxMSArMzU4LDk1IEBAIGludCB2Z2lj X2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgdmxwaSkKICAgICBy ZXR1cm4gcC0+bHBpX3ByaW9yaXR5OwogfQogCitzdGF0aWMgdWludDY0X3QgdmdpY19zYW5pdGlz ZV9maWVsZCh1aW50NjRfdCByZWcsIHVpbnQ2NF90IGZpZWxkX21hc2ssCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmllbGRfc2hpZnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAoKnNhbml0aXNlX2ZuKSh1aW50NjRfdCkpCit7 CisgICAgdWludDY0X3QgZmllbGQgPSAocmVnICYgZmllbGRfbWFzaykgPj4gZmllbGRfc2hpZnQ7 CisKKyAgICBmaWVsZCA9IHNhbml0aXNlX2ZuKGZpZWxkKSA8PCBmaWVsZF9zaGlmdDsKKworICAg IHJldHVybiAocmVnICYgfmZpZWxkX21hc2spIHwgZmllbGQ7Cit9CisKKy8qIFdlIHdhbnQgdG8g YXZvaWQgb3V0ZXIgc2hhcmVhYmxlLiAqLworc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2Vf c2hhcmVhYmlsaXR5KHVpbnQ2NF90IGZpZWxkKQoreworICAgIHN3aXRjaCAoIGZpZWxkICkKKyAg ICB7CisgICAgY2FzZSBHSUNfQkFTRVJfT3V0ZXJTaGFyZWFibGU6CisgICAgICAgIHJldHVybiBH SUNfQkFTRVJfSW5uZXJTaGFyZWFibGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZp ZWxkOworICAgIH0KK30KKworLyogQXZvaWQgYW55IGlubmVyIG5vbi1jYWNoZWFibGUgbWFwcGlu Zy4gKi8KK3N0YXRpYyB1aW50NjRfdCB2Z2ljX3Nhbml0aXNlX2lubmVyX2NhY2hlYWJpbGl0eSh1 aW50NjRfdCBmaWVsZCkKK3sKKyAgICBzd2l0Y2ggKCBmaWVsZCApCisgICAgeworICAgIGNhc2Ug R0lDX0JBU0VSX0NBQ0hFX25DbkI6CisgICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkM6CisgICAg ICAgIHJldHVybiBHSUNfQkFTRVJfQ0FDSEVfUmFXYjsKKyAgICBkZWZhdWx0OgorICAgICAgICBy ZXR1cm4gZmllbGQ7CisgICAgfQorfQorCisvKiBOb24tY2FjaGVhYmxlIG9yIHNhbWUtYXMtaW5u ZXIgYXJlIE9LLiAqLworc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2Vfb3V0ZXJfY2FjaGVh YmlsaXR5KHVpbnQ2NF90IGZpZWxkKQoreworICAgIHN3aXRjaCAoIGZpZWxkICkKKyAgICB7Cisg ICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfU2FtZUFzSW5uZXI6CisgICAgY2FzZSBHSUNfQkFTRVJf Q0FDSEVfbkM6CisgICAgICAgIHJldHVybiBmaWVsZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBy ZXR1cm4gR0lDX0JBU0VSX0NBQ0hFX25DOworICAgIH0KK30KKworc3RhdGljIHVpbnQ2NF90IHNh bml0aXplX3Byb3BiYXNlcih1aW50NjRfdCByZWcpCit7CisgICAgcmVnID0gdmdpY19zYW5pdGlz ZV9maWVsZChyZWcsIEdJQ1JfUFJPUEJBU0VSX1NIQVJFQUJJTElUWV9NQVNLLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklMSVRZX1NISUZULAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9zaGFyZWFiaWxpdHkp OworICAgIHJlZyA9IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BST1BCQVNFUl9JTk5F Ul9DQUNIRUFCSUxJVFlfTUFTSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJQ1Jf UFJPUEJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZnaWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVhYmlsaXR5KTsKKyAgICByZWcgPSB2 Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QUk9QQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZ X01BU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNSX1BST1BCQVNFUl9PVVRF Ul9DQUNIRUFCSUxJVFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2lj X3Nhbml0aXNlX291dGVyX2NhY2hlYWJpbGl0eSk7CisKKyAgICByZWcgJj0gfkdJQ1JfUFJPUEJB U0VSX1JFUzBfTUFTSzsKKworICAgIHJldHVybiByZWc7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBz YW5pdGl6ZV9wZW5kYmFzZXIodWludDY0X3QgcmVnKQoreworICAgIHJlZyA9IHZnaWNfc2FuaXRp c2VfZmllbGQocmVnLCBHSUNSX1BFTkRCQVNFUl9TSEFSRUFCSUxJVFlfTUFTSywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9TSElGVCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2Vfc2hhcmVhYmlsaXR5 KTsKKyAgICByZWcgPSB2Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QRU5EQkFTRVJfSU5O RVJfQ0FDSEVBQklMSVRZX01BU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNS X1BFTkRCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX2lubmVyX2NhY2hlYWJpbGl0eSk7CisgICAgcmVnID0g dmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUEVOREJBU0VSX09VVEVSX0NBQ0hFQUJJTElU WV9NQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lDUl9QRU5EQkFTRVJfT1VU RVJfQ0FDSEVBQklMSVRZX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdp Y19zYW5pdGlzZV9vdXRlcl9jYWNoZWFiaWxpdHkpOworCisgICAgcmVnICY9IH5HSUNSX1BFTkRC QVNFUl9SRVMwX01BU0s7CisKKyAgICByZXR1cm4gcmVnOworfQorCiBzdGF0aWMgaW50IF9fdmdp Y192M19yZGlzdHJfcmRfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmlu Zm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBn aWNyX3JlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lz dGVyX3QgcikKIHsKICAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7CisgICAg dWludDY0X3QgcmVnOwogCiAgICAgc3dpdGNoICggZ2ljcl9yZWcgKQogICAgIHsKQEAgLTM5Mywz NiArNDc3LDU0IEBAIHN0YXRpYyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0 cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywKICAgICAgICAgZ290byB3cml0ZV9pbXBs X2RlZmluZWQ7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX1NFVExQSVIpOgotICAgICAgICAvKiBM UEkgaXMgbm90IGltcGxlbWVudGVkICovCisgICAgICAgIC8qIExQSXMgd2l0aG91dCBhbiBJVFMg YXJlIG5vdCBpbXBsZW1lbnRlZCAqLwogICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKIAog ICAgIGNhc2UgVlJFRzY0KEdJQ1JfQ0xSTFBJUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1w bGVtZW50ZWQgKi8KKyAgICAgICAgLyogTFBJcyB3aXRob3V0IGFuIElUUyBhcmUgbm90IGltcGxl bWVudGVkICovCiAgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzY0OwogCiAgICAgY2FzZSAweDAw NTA6CiAgICAgICAgIGdvdG8gd3JpdGVfcmVzZXJ2ZWQ7CiAKICAgICBjYXNlIFZSRUc2NChHSUNS X1BST1BCQVNFUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KLSAgICAg ICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hlY2tf YWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgLyogV3JpdGluZyBQUk9Q QkFTRVIgd2l0aCBMUElzIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRS4gKi8KKyAgICAgICAgaWYg KCB2LT5hcmNoLnZnaWMuZmxhZ3MgJiBWR0lDX1YzX0xQSVNfRU5BQkxFRCApCisgICAgICAgICAg ICByZXR1cm4gMTsKKworICAgICAgICByZWcgPSB2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9w cm9wYmFzZTsKKyAgICAgICAgdmdpY19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7CisgICAg ICAgIHJlZyA9IHNhbml0aXplX3Byb3BiYXNlcihyZWcpOworICAgICAgICB2LT5kb21haW4tPmFy Y2gudmdpYy5yZGlzdF9wcm9wYmFzZSA9IHJlZzsKKyAgICAgICAgcmV0dXJuIDE7CiAKICAgICBj YXNlIFZSRUc2NChHSUNSX1BFTkRCQVNFUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVt ZW50ZWQgKi8KLSAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAgICAgIGlmICggIXZn aWNfcmVnNjRfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAg LyogV3JpdGluZyBQRU5EQkFTRVIgd2l0aCBMUElzIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRS4g Ki8KKyAgICAgICAgaWYgKCB2LT5hcmNoLnZnaWMuZmxhZ3MgJiBWR0lDX1YzX0xQSVNfRU5BQkxF RCApCisgICAgICAgICAgICByZXR1cm4gMTsKKworICAgICAgICByZWcgPSB2LT5hcmNoLnZnaWMu cmRpc3RfcGVuZGJhc2U7CisgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRlKCZyZWcsIHIsIGluZm8p OworICAgICAgICByZWcgPSBzYW5pdGl6ZV9wZW5kYmFzZXIocmVnKTsKKyAgICAgICAgdi0+YXJj aC52Z2ljLnJkaXN0X3BlbmRiYXNlID0gcmVnOworICAgICAgICByZXR1cm4gMTsKIAogICAgIGNh c2UgMHgwMDgwOgogICAgICAgICBnb3RvIHdyaXRlX3Jlc2VydmVkOwogCiAgICAgY2FzZSBWUkVH NjQoR0lDUl9JTlZMUElSKToKLSAgICAgICAgLyogTFBJIGlzIG5vdCBpbXBsZW1lbnRlZCAqLwor ICAgICAgICAvKiBMUElzIHdpdGhvdXQgYW4gSVRTIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KICAg ICAgICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CiAKICAgICBjYXNlIDB4MDBBODoKICAgICAgICAg Z290byB3cml0ZV9yZXNlcnZlZDsKIAogICAgIGNhc2UgVlJFRzY0KEdJQ1JfSU5WQUxMUik6Ci0g ICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KKyAgICAgICAgLyogTFBJcyB3aXRo b3V0IGFuIElUUyBhcmUgbm90IGltcGxlbWVudGVkICovCiAgICAgICAgIGdvdG8gd3JpdGVfaWdu b3JlXzY0OwogCiAgICAgY2FzZSAweDAwQjg6CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9y eS5jIGIveGVuL2NvbW1vbi9tZW1vcnkuYwppbmRleCBhZDBiMzNjLi4zY2EzZjYwIDEwMDY0NAot LS0gYS94ZW4vY29tbW9uL21lbW9yeS5jCisrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKQEAgLTE0 MTgsNiArMTQxOCw2NyBAQCBpbnQgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoCiB9CiAKIC8qCisg KiBNYXJrIGEgZ2l2ZW4gbnVtYmVyIG9mIGd1ZXN0IHBhZ2VzIGFzIHVzZWQgKGJ5IGluY3JlYXNp bmcgdGhlaXIgcmVmY291bnQpLAorICogc3RhcnRpbmcgd2l0aCB0aGUgZ2l2ZW4gZ3Vlc3QgYWRk cmVzcy4gVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgb25jZSBiZWZvcmUKKyAqIGNhbGxpbmcgKHBv c3NpYmx5IHJlcGVhdGVkbHkpIG1hcF9vbmVfZ3Vlc3RfcGFnZXMoKS4KKyAqIEJlZm9yZSB0aGUg ZG9tYWluIGdldHMgZGVzdHJveWVkLCBjYWxsIHB1dF9ndWVzdF9wYWdlcygpIHRvIGRyb3AgdGhl CisgKiByZWZlcmVuY2UuCisgKi8KK2ludCBnZXRfZ3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBncGEsIHVuc2lnbmVkIGludCBucl9wYWdlcykKK3sKKyAgICB1bnNpZ25lZCBp bnQgaTsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworCisgICAgZm9yICggaSA9IDA7IGkg PCBucl9wYWdlczsgaSsrICkKKyAgICB7CisgICAgICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dm bihkLCAoZ3BhID4+IFBBR0VfU0hJRlQpICsgaSwgTlVMTCwgUDJNX0FMTE9DKTsKKyAgICAgICAg aWYgKCAhcGFnZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBkcm9w IHRoZSByZWZlcmVuY2VzIG9mIHBhZ2VzIHdlIGdvdCBzbyBmYXIuICovCisgICAgICAgICAgICBw dXRfZ3Vlc3RfcGFnZXMoZCwgZ3BhLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwor ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgcHV0X2d1ZXN0X3Bh Z2VzKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMp Cit7CisgICAgbWZuX3QgbWZuOworICAgIGludCBpOworCisgICAgcDJtX3JlYWRfbG9jaygmZC0+ YXJjaC5wMm0pOworICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKyApCisgICAgewor ICAgICAgICBtZm4gPSBwMm1fZ2V0X2VudHJ5KCZkLT5hcmNoLnAybSwgX2dmbigoZ3BhID4+IFBB R0VfU0hJRlQpICsgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwg TlVMTCk7CisgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKKyAgICAgICAg ICAgIGNvbnRpbnVlOworICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm4pKSk7 CisgICAgfQorICAgIHAybV9yZWFkX3VubG9jaygmZC0+YXJjaC5wMm0pOworfQorCisvKgorICog UHJvdmlkZXMgZWFzeSBhY2Nlc3MgdG8gZ3Vlc3QgbWVtb3J5IGJ5ICJtYXBwaW5nIiBvbmUgcGFn ZSBvZiBpdCBpbnRvCisgKiBYZW4ncyBWQSBzcGFjZS4gSW4gZmFjdCBpdCByZWxpZXMgb24gdGhl IG1lbW9yeSBiZWluZyBhbHJlYWR5IG1hcHBlZAorICogYW5kIGp1c3QgcHJvdmlkZXMgYSBwb2lu dGVyIHRvIGl0LgorICovCit2b2lkICptYXBfb25lX2d1ZXN0X3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBndWVzdF9hZGRyKQoreworICAgIHZvaWQgKnB0ciA9IG1hcF9kb21haW5fcGFn ZShfbWZuKGd1ZXN0X2FkZHIgPj4gUEFHRV9TSElGVCkpOworCisgICAgcmV0dXJuIHB0ciArIChn dWVzdF9hZGRyICYgflBBR0VfTUFTSyk7Cit9CisKKy8qICJVbm1hcCIgYSBwcmV2aW91c2x5IG1h cHBlZCBndWVzdCBwYWdlLiBDb3VsZCBiZSBvcHRpbWl6ZWQgYXdheS4gKi8KK3ZvaWQgdW5tYXBf b25lX2d1ZXN0X3BhZ2Uodm9pZCAqdmEpCit7CisgICAgdW5tYXBfZG9tYWluX3BhZ2UoKCh1aW50 cHRyX3QpdmEgJiBQQUdFX01BU0spKTsKK30KKworLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAq IG1vZGU6IEMKICAqIGMtZmlsZS1zdHlsZTogIkJTRCIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCmluZGV4IDZl ZTc1MzguLmY0NjA0NTcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaApAQCAtMTA5LDYgKzEwOSw4IEBAIHN0 cnVjdCBhcmNoX2RvbWFpbgogICAgICAgICB9ICpyZGlzdF9yZWdpb25zOwogICAgICAgICBpbnQg bnJfcmVnaW9uczsgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgcmRpc3QgcmVnaW9u cyAqLwogICAgICAgICB1aW50MzJfdCByZGlzdF9zdHJpZGU7ICAgICAgICAgICAgICAvKiBSZS1E aXN0cmlidXRvciBzdHJpZGUgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IG5yX2xwaXM7CisgICAg ICAgIHVpbnQ2NF90IHJkaXN0X3Byb3BiYXNlOwogICAgICAgICBzdHJ1Y3QgcmJfcm9vdCBpdHNf ZGV2aWNlczsgICAgICAgICAvKiBEZXZpY2VzIG1hcHBlZCB0byBhbiBJVFMgKi8KICAgICAgICAg c3BpbmxvY2tfdCBpdHNfZGV2aWNlc19sb2NrOyAgICAgICAgLyogUHJvdGVjdHMgdGhlIGl0c19k ZXZpY2VzIHRyZWUgKi8KICAgICAgICAgc3RydWN0IHJhZGl4X3RyZWVfcm9vdCBwZW5kX2xwaV90 cmVlOyAvKiBTdG9yZXMgc3RydWN0IHBlbmRpbmdfaXJxJ3MgKi8KQEAgLTI1Niw3ICsyNTgsOSBA QCBzdHJ1Y3QgYXJjaF92Y3B1CiAKICAgICAgICAgLyogR0lDdjM6IHJlZGlzdHJpYnV0b3IgYmFz ZSBhbmQgZmxhZ3MgZm9yIHRoaXMgdkNQVSAqLwogICAgICAgICBwYWRkcl90IHJkaXN0X2Jhc2U7 Ci0jZGVmaW5lIFZHSUNfVjNfUkRJU1RfTEFTVCAgKDEgPDwgMCkgICAgICAgIC8qIGxhc3QgdkNQ VSBvZiB0aGUgcmRpc3QgKi8KKyAgICAgICAgdWludDY0X3QgcmRpc3RfcGVuZGJhc2U7CisjZGVm aW5lIFZHSUNfVjNfUkRJU1RfTEFTVCAgICAgICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUg b2YgdGhlIHJkaXN0ICovCisjZGVmaW5lIFZHSUNfVjNfTFBJU19FTkFCTEVEICAgICgxIDw8IDEp CiAgICAgICAgIHVpbnQ4X3QgZmxhZ3M7CiAgICAgfSB2Z2ljOwogCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20tYXJtL3ZnaWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oCmluZGV4 IGEyNGE5NzEuLmI1YWUzZTkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oCkBAIC0zMTIsNiArMzEyLDggQEAgZXh0 ZXJuIHZvaWQgcmVnaXN0ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0 IHZnaWNfb3BzICpvcHMpOwogaW50IHZnaWNfdjJfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCBpbnQg Km1taW9fY291bnQpOwogaW50IHZnaWNfdjNfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1t aW9fY291bnQpOwogCitleHRlcm4gaW50IHZnaWNfbHBpX2dldF9wcmlvcml0eShzdHJ1Y3QgZG9t YWluICpkLCB1aW50MzJfdCB2bHBpKTsKKwogZXh0ZXJuIGludCBkb21haW5fdmdpY19yZWdpc3Rl cihzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1taW9fY291bnQpOwogZXh0ZXJuIGludCB2Y3B1X3Zn aWNfZnJlZShzdHJ1Y3QgdmNwdSAqdik7CiBleHRlcm4gYm9vbCB2Z2ljX3RvX3NnaShzdHJ1Y3Qg dmNwdSAqdiwgcmVnaXN0ZXJfdCBzZ2lyLApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL21t LmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAppbmRleCA4OGRlM2MxLi5jNDAyODU2IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0uaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbW0uaApAQCAt NTcwLDYgKzU3MCwxNCBAQCBpbnQgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBwYWdlX2luZm8gKipfcGFnZSwgdm9pZCAqKl92YSk7CiB2b2lkIGRlc3Ryb3lfcmluZ19m b3JfaGVscGVyKHZvaWQgKipfdmEsIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpOwogCisvKiBNYXJr IGd1ZXN0IHBhZ2VzIGFzIHVzZWQgKGJ5IHRoZSBoeXBlcnZpc29yKSB0byBhdm9pZCBkcm9wcGlu ZyB0aGVtLiAqLworaW50IGdldF9ndWVzdF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90 IGdwYSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKK3ZvaWQgcHV0X2d1ZXN0X3BhZ2VzKHN0cnVj dCBkb21haW4gKmQsIHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpOworCisvKiBN YXAgZ3Vlc3QgbWVtb3J5IGludG8gWGVuJ3MgVkEgc3BhY2UuICovCit2b2lkICptYXBfb25lX2d1 ZXN0X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBndWVzdF9hZGRyKTsKK3ZvaWQgdW5t YXBfb25lX2d1ZXN0X3BhZ2Uodm9pZCAqdmEpOworCiAjaW5jbHVkZSA8YXNtL2ZsdXNodGxiLmg+ CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhY2N1bXVsYXRlX3RsYmZsdXNoKGJvb2wgKm5lZWRfdGxi Zmx1c2gsCi0tIAoyLjkuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=