From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [RFC PATCH v2 12/26] ARM: vGICv3: handle virtual LPI pending and property tables Date: Thu, 22 Dec 2016 18:24:32 +0000 Message-ID: <20161222182446.18791-13-andre.przywara@arm.com> References: <20161222182446.18791-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 1cK82B-0005HD-Te for xen-devel@lists.xenproject.org; Thu, 22 Dec 2016 18:24:08 +0000 In-Reply-To: <20161222182446.18791-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, Vijay Kilari List-Id: xen-devel@lists.xenproject.org QWxsb3cgYSBndWVzdCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUgbWVt b3J5IHJlZ2lvbnMKaXQgaGFzIHJlc2VydmVkIGZvciB0aGUgR0lDdjMgcGVuZGluZyBhbmQgcHJv cGVydHkgdGFibGVzLgpXZSBzYW5pdGlzZSB0aGUgdmFyaW91cyBmaWVsZHMgb2YgdGhlIHJlc3Bl Y3RpdmUgcmVkaXN0cmlidXRvcgpyZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdlcyBpbnRvIFhl bidzIGFkZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5CmFjY2Vzcy4KClNpZ25lZC1vZmYtYnk6IEFu ZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS92 Z2ljLXYzLmMgICAgICAgfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQogeGVuL2FyY2gvYXJtL3ZnaWMuYyAgICAgICAgICB8ICAgNCArCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL2RvbWFpbi5oIHwgICA4ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAg IHwgICA0ICsKIDQgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMgYi94ZW4vYXJjaC9hcm0v dmdpYy12My5jCmluZGV4IDBmZmRlNzQuLmI5ODFkNGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS92Z2ljLXYzLmMKKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwpAQCAtMjAsMTIgKzIwLDE0 IEBACiAKICNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+CiAjaW5jbHVkZSA8eGVuL2NvbmZpZy5oPgor I2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNs dWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eGVu L2lycS5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPHhlbi9zaXplcy5oPgor I2luY2x1ZGUgPHhlbi92bWFwLmg+CiAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KICNpbmNsdWRl IDxhc20vbW1pby5oPgogI2luY2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgpAQCAtMjI5LDEyICsy MzEsMTQgQEAgc3RhdGljIGludCBfX3ZnaWNfdjNfcmRpc3RyX3JkX21taW9fcmVhZChzdHJ1Y3Qg dmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCiAgICAgICAgIGdvdG8gcmVhZF9yZXNlcnZlZDsK IAogICAgIGNhc2UgVlJFRzY0KEdJQ1JfUFJPUEJBU0VSKToKLSAgICAgICAgLyogTFBJJ3Mgbm90 IGltcGxlbWVudGVkICovCi0gICAgICAgIGdvdG8gcmVhZF9hc196ZXJvXzY0OworICAgICAgICBp ZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworICAg ICAgICAqciA9IHZnaWNfcmVnNjRfZXh0cmFjdCh2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9w cm9wYmFzZSwgaW5mbyk7CisgICAgICAgIHJldHVybiAxOwogCiAgICAgY2FzZSBWUkVHNjQoR0lD Ul9QRU5EQkFTRVIpOgotICAgICAgICAvKiBMUEkncyBub3QgaW1wbGVtZW50ZWQgKi8KLSAgICAg ICAgZ290byByZWFkX2FzX3plcm9fNjQ7CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hlY2tf YWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisgICAgICAgICpyID0gdmdpY19yZWc2NF9l eHRyYWN0KHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZSwgaW5mbyk7CisgICAgICAgIHJldHVy biAxOwogCiAgICAgY2FzZSAweDAwODA6CiAgICAgICAgIGdvdG8gcmVhZF9yZXNlcnZlZDsKQEAg LTMwMiwxMSArMzA2LDYgQEAgYmFkX3dpZHRoOgogICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91 cygpOwogICAgIHJldHVybiAwOwogCi1yZWFkX2FzX3plcm9fNjQ6Ci0gICAgaWYgKCAhdmdpY19y ZWc2NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKLSAgICAqciA9IDA7Ci0g ICAgcmV0dXJuIDE7Ci0KIHJlYWRfYXNfemVyb18zMjoKICAgICBpZiAoIGRhYnQuc2l6ZSAhPSBE QUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKICAgICAqciA9IDA7CkBAIC0zMzEsNiArMzMwLDE0 MyBAQCByZWFkX3Vua25vd246CiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyB1aW50NjRfdCB2 Z2ljX3Nhbml0aXNlX2ZpZWxkKHVpbnQ2NF90IHJlZywgdWludDY0X3QgZmllbGRfbWFzaywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZF9zaGlmdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICgqc2FuaXRpc2VfZm4pKHVp bnQ2NF90KSkKK3sKKyAgICB1aW50NjRfdCBmaWVsZCA9IChyZWcgJiBmaWVsZF9tYXNrKSA+PiBm aWVsZF9zaGlmdDsKKworICAgIGZpZWxkID0gc2FuaXRpc2VfZm4oZmllbGQpIDw8IGZpZWxkX3No aWZ0OworICAgIHJldHVybiAocmVnICYgfmZpZWxkX21hc2spIHwgZmllbGQ7Cit9CisKKy8qIFdl IHdhbnQgdG8gYXZvaWQgb3V0ZXIgc2hhcmVhYmxlLiAqLworc3RhdGljIHVpbnQ2NF90IHZnaWNf c2FuaXRpc2Vfc2hhcmVhYmlsaXR5KHVpbnQ2NF90IGZpZWxkKQoreworICAgIHN3aXRjaCAoZmll bGQpIHsKKyAgICBjYXNlIEdJQ19CQVNFUl9PdXRlclNoYXJlYWJsZToKKyAgICAgICAgcmV0dXJu IEdJQ19CQVNFUl9Jbm5lclNoYXJlYWJsZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g ZmllbGQ7CisgICAgfQorfQorCisvKiBBdm9pZCBhbnkgaW5uZXIgbm9uLWNhY2hlYWJsZSBtYXBw aW5nLiAqLworc3RhdGljIHVpbnQ2NF90IHZnaWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVhYmlsaXR5 KHVpbnQ2NF90IGZpZWxkKQoreworICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICBjYXNlIEdJQ19C QVNFUl9DQUNIRV9uQ25COgorICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX25DOgorICAgICAgICBy ZXR1cm4gR0lDX0JBU0VSX0NBQ0hFX1JhV2I7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu IGZpZWxkOworICAgIH0KK30KKworLyogTm9uLWNhY2hlYWJsZSBvciBzYW1lLWFzLWlubmVyIGFy ZSBPSy4gKi8KK3N0YXRpYyB1aW50NjRfdCB2Z2ljX3Nhbml0aXNlX291dGVyX2NhY2hlYWJpbGl0 eSh1aW50NjRfdCBmaWVsZCkKK3sKKyAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgY2FzZSBHSUNf QkFTRVJfQ0FDSEVfU2FtZUFzSW5uZXI6CisgICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkM6Cisg ICAgICAgIHJldHVybiBmaWVsZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gR0lDX0JB U0VSX0NBQ0hFX25DOworICAgIH0KK30KKworc3RhdGljIHVpbnQ2NF90IHNhbml0aXplX3Byb3Bi YXNlcih1aW50NjRfdCByZWcpCit7CisgICAgcmVnID0gdmdpY19zYW5pdGlzZV9maWVsZChyZWcs IEdJQ1JfUFJPUEJBU0VSX1NIQVJFQUJJTElUWV9NQVNLLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklMSVRZX1NISUZULAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9zaGFyZWFiaWxpdHkpOworICAgIHJlZyA9 IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BST1BCQVNFUl9JTk5FUl9DQUNIRUFCSUxJ VFlfTUFTSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJQ1JfUFJPUEJBU0VSX0lO TkVSX0NBQ0hFQUJJTElUWV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZn aWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVhYmlsaXR5KTsKKyAgICByZWcgPSB2Z2ljX3Nhbml0aXNl X2ZpZWxkKHJlZywgR0lDUl9QUk9QQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX01BU0ssCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNSX1BST1BCQVNFUl9PVVRFUl9DQUNIRUFCSUxJ VFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX291 dGVyX2NhY2hlYWJpbGl0eSk7CisKKyAgICByZWcgJj0gflBST1BCQVNFUl9SRVMwX01BU0s7Cisg ICAgcmVnICY9IH5HRU5NQVNLKDUxLCA0OCk7CisgICAgcmV0dXJuIHJlZzsKK30KKworc3RhdGlj IHVpbnQ2NF90IHNhbml0aXplX3BlbmRiYXNlcih1aW50NjRfdCByZWcpCit7CisgICAgcmVnID0g dmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9NQVNL LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklM SVRZX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9z aGFyZWFiaWxpdHkpOworICAgIHJlZyA9IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BF TkRCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfTUFTSywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVhYmlsaXR5KTsK KyAgICByZWcgPSB2Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QRU5EQkFTRVJfT1VURVJf Q0FDSEVBQklMSVRZX01BU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNSX1BF TkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2Z2ljX3Nhbml0aXNlX291dGVyX2NhY2hlYWJpbGl0eSk7CisKKyAgICByZWcgJj0g flBFTkRCQVNFUl9SRVMwX01BU0s7CisgICAgcmVnICY9IH5HRU5NQVNLKDUxLCA0OCk7CisgICAg cmV0dXJuIHJlZzsKK30KKworLyoKKyAqIEFsbG93IG1hcHBpbmcgc29tZSBwYXJ0cyBvZiBndWVz dCBtZW1vcnkgaW50byBYZW4ncyBWQSBzcGFjZSB0byBoYXZlIGVhc3kKKyAqIGFjY2VzcyB0byBp dC4gVGhpcyBpcyB0byBhbGxvdyBJVFMgY29uZmlndXJhdGlvbiBkYXRhIHRvIGJlIGhlbGQgaW4K KyAqIGd1ZXN0IG1lbW9yeSBhbmQgYXZvaWQgdXNpbmcgWGVuIG1lbW9yeSBmb3IgdGhhdC4KKyAq Lwordm9pZCAqbWFwX2d1ZXN0X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3Vlc3Rf YWRkciwgaW50IG5yX3BhZ2VzKQoreworICAgIG1mbl90IG9uZXBhZ2U7CisgICAgbWZuX3QgKnBh Z2VzOworICAgIGludCBpOworICAgIHZvaWQgKnB0cjsKKworICAgIC8qIFRPRE86IGZyZWUgcHJl dmlvdXMgbWFwcGluZywgY2hhbmdlIHByb3RvdHlwZT8gdXNlIGdldC1wdXQtcHV0PyAqLworCisg ICAgZ3Vlc3RfYWRkciAmPSBQQUdFX01BU0s7CisKKyAgICBpZiAoIG5yX3BhZ2VzID09IDEgKQor ICAgIHsKKyAgICAgICAgcGFnZXMgPSAmb25lcGFnZTsKKyAgICB9IGVsc2UKKyAgICB7CisgICAg ICAgIHBhZ2VzID0geG1hbGxvY19hcnJheShtZm5fdCwgbnJfcGFnZXMpOworICAgICAgICBpZiAo ICFwYWdlcyApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IG5yX3BhZ2VzOyBpKysgKQorICAgIHsKKyAgICAgICAgZ2V0X3BhZ2VfZnJvbV9n Zm4oZCwgKGd1ZXN0X2FkZHIgPj4gUEFHRV9TSElGVCkgKyBpLCBOVUxMLCBQMk1fQUxMT0MpOwor ICAgICAgICBwYWdlc1tpXSA9IF9tZm4oKGd1ZXN0X2FkZHIgKyBpICogUEFHRV9TSVpFKSA+PiBQ QUdFX1NISUZUKTsKKyAgICB9CisKKyAgICBwdHIgPSB2bWFwKHBhZ2VzLCBucl9wYWdlcyk7CisK KyAgICBpZiAoIG5yX3BhZ2VzID4gMSApCisgICAgICAgIHhmcmVlKHBhZ2VzKTsKKworICAgIHJl dHVybiBwdHI7Cit9CisKK3ZvaWQgdW5tYXBfZ3Vlc3RfcGFnZXModm9pZCAqdmEsIGludCBucl9w YWdlcykKK3sKKyAgICBwYWRkcl90IHBhOworICAgIHVuc2lnbmVkIGxvbmcgaTsKKworICAgIGlm ICggIXZhICkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmEgPSAodm9pZCAqKSgodWludHB0cl90 KXZhICYgUEFHRV9NQVNLKTsKKyAgICBwYSA9IHZpcnRfdG9fbWFkZHIodmEpOworCisgICAgdnVu bWFwKHZhKTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX3BhZ2VzOyBpKysgKQorICAgICAgICBw dXRfcGFnZShtZm5fdG9fcGFnZSgocGEgPj4gUEFHRV9TSElGVCkgKyBpKSk7CisKKyAgICByZXR1 cm47Cit9CisKIGludCB2Z2ljX2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWlu dDMyX3QgdmxwaSkKIHsKICAgICBpZiAoIHZscGkgPj0gZC0+YXJjaC52Z2ljLm5yX2xwaXMgKQpA QCAtMzM5LDExICs0NzUsMjAgQEAgaW50IHZnaWNfbHBpX2dldF9wcmlvcml0eShzdHJ1Y3QgZG9t YWluICpkLCB1aW50MzJfdCB2bHBpKQogICAgIHJldHVybiBkLT5hcmNoLnZnaWMucHJvcHRhYmxl W3ZscGkgLSA4MTkyXSAmIDB4ZmM7CiB9CiAKK2Jvb2wgdmdpY19scGlfaXNfZW5hYmxlZChzdHJ1 Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKQoreworICAgIGlmICggdmxwaSA+PSBkLT5hcmNo LnZnaWMubnJfbHBpcyApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkLT5h cmNoLnZnaWMucHJvcHRhYmxlW3ZscGkgLSA4MTkyXSAmIExQSV9QUk9QX0VOQUJMRUQ7Cit9CisK IHN0YXRpYyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2 LCBtbWlvX2luZm9fdCAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGdpY3JfcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVnaXN0ZXJfdCByKQogewogICAgIHN0cnVjdCBoc3JfZGFidCBkYWJ0ID0g aW5mby0+ZGFidDsKKyAgICB1aW50NjRfdCByZWc7CiAKICAgICBzd2l0Y2ggKCBnaWNyX3JlZyAp CiAgICAgewpAQCAtMzg0LDEzICs1MjksNDIgQEAgc3RhdGljIGludCBfX3ZnaWNfdjNfcmRpc3Ry X3JkX21taW9fd3JpdGUoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAogICAgIGNh c2UgMHgwMDUwOgogICAgICAgICBnb3RvIHdyaXRlX3Jlc2VydmVkOwogCi0gICAgY2FzZSBWUkVH NjQoR0lDUl9QUk9QQkFTRVIpOgotICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICov Ci0gICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzY0OworICAgIGNhc2UgVlJFRzY0KEdJQ1JfUFJP UEJBU0VSKTogeworICAgICAgICBpbnQgbnJfcGFnZXM7CisKKyAgICAgICAgaWYgKCBpbmZvLT5k YWJ0LnNpemUgPCBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKKyAgICAgICAgaWYgKCB2LT5h cmNoLnZnaWMuZmxhZ3MgJiBWR0lDX1YzX0xQSVNfRU5BQkxFRCApCisgICAgICAgICAgICByZXR1 cm4gMTsKIAorICAgICAgICByZWcgPSB2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9wcm9wYmFz ZTsKKyAgICAgICAgaWYgKCB2LT5kb21haW4tPmFyY2gudmdpYy5wcm9wdGFibGUgKQorICAgICAg ICB7CisgICAgICAgICAgICBucl9wYWdlcyA9IEJJVCgocmVnICYgMHgxZikgKyAxKSAtIDgxOTI7 CisgICAgICAgICAgICBucl9wYWdlcyA9IERJVl9ST1VORF9VUChucl9wYWdlcywgUEFHRV9TSVpF KTsKKyAgICAgICAgICAgIHVubWFwX2d1ZXN0X3BhZ2VzKHYtPmRvbWFpbi0+YXJjaC52Z2ljLnBy b3B0YWJsZSwgbnJfcGFnZXMpOworICAgICAgICB9CisgICAgICAgIHZnaWNfcmVnNjRfdXBkYXRl KCZyZWcsIHIsIGluZm8pOworICAgICAgICByZWcgPSBzYW5pdGl6ZV9wcm9wYmFzZXIocmVnKTsK KyAgICAgICAgdi0+ZG9tYWluLT5hcmNoLnZnaWMucmRpc3RfcHJvcGJhc2UgPSByZWc7CisKKyAg ICAgICAgdi0+ZG9tYWluLT5hcmNoLnZnaWMubnJfbHBpcyA9IEJJVCgocmVnICYgMHgxZikgKyAx KSAtIDgxOTI7CisgICAgICAgIG5yX3BhZ2VzID0gRElWX1JPVU5EX1VQKHYtPmRvbWFpbi0+YXJj aC52Z2ljLm5yX2xwaXMsIFBBR0VfU0laRSk7CisgICAgICAgIHYtPmRvbWFpbi0+YXJjaC52Z2lj LnByb3B0YWJsZSA9IG1hcF9ndWVzdF9wYWdlcyh2LT5kb21haW4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgJiBHRU5NQVNLKDQ3 LCAxMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBucl9wYWdlcyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBjYXNlIFZS RUc2NChHSUNSX1BFTkRCQVNFUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQg Ki8KLSAgICAgICAgZ290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAgICAgIGlmICggaW5mby0+ZGFi dC5zaXplIDwgREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7CisJcmVnID0gdi0+YXJjaC52Z2lj LnJkaXN0X3BlbmRiYXNlOworCXZnaWNfcmVnNjRfdXBkYXRlKCZyZWcsIHIsIGluZm8pOworCXJl ZyA9IHNhbml0aXplX3BlbmRiYXNlcihyZWcpOworCXYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFz ZSA9IHJlZzsKKworICAgICAgICB1bm1hcF9ndWVzdF9wYWdlcyh2LT5hcmNoLnZnaWMucGVuZHRh YmxlLCAxNik7CisJdi0+YXJjaC52Z2ljLnBlbmR0YWJsZSA9IG1hcF9ndWVzdF9wYWdlcyh2LT5k b21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVnICYgR0VOTUFTSyg0NywgMTIpLCAxNik7CisJcmV0dXJuIDE7CiAKICAgICBjYXNlIDB4MDA4 MDoKICAgICAgICAgZ290byB3cml0ZV9yZXNlcnZlZDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy bS92Z2ljLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy5jCmluZGV4IGYxNWViM2UuLjJhMzNhMGUgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLmMKKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMuYwpA QCAtNDk3LDYgKzQ5NywxMCBAQCBzdHJ1Y3QgcGVuZGluZ19pcnEgKmxwaV90b19wZW5kaW5nKHN0 cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgbHBpLAogICAgICAgICBlbXB0eS0+cGlycS5pcnEg PSBscGk7CiAgICAgfQogCisgICAgLyogVXBkYXRlIHRoZSBlbmFibGVkIHN0YXR1cyAqLworICAg IGlmICggdmdpY19scGlfaXNfZW5hYmxlZCh2LT5kb21haW4sIGxwaSkgKQorICAgICAgICBzZXRf Yml0KEdJQ19JUlFfR1VFU1RfRU5BQkxFRCwgJmVtcHR5LT5waXJxLnN0YXR1cyk7CisKICAgICBz cGluX3VubG9jaygmdi0+YXJjaC52Z2ljLnBlbmRpbmdfbHBpX2xpc3RfbG9jayk7CiAKICAgICBy ZXR1cm4gJmVtcHR5LT5waXJxOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21h aW4uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKaW5kZXggMDJhZTJjZC4uNTQzZDA1 OCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAorKysgYi94ZW4vaW5j bHVkZS9hc20tYXJtL2RvbWFpbi5oCkBAIC0xMDksNiArMTA5LDkgQEAgc3RydWN0IGFyY2hfZG9t YWluCiAgICAgICAgIH0gKnJkaXN0X3JlZ2lvbnM7CiAgICAgICAgIGludCBucl9yZWdpb25zOyAg ICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiByZGlzdCByZWdpb25zICovCiAgICAgICAg IHVpbnQzMl90IHJkaXN0X3N0cmlkZTsgICAgICAgICAgICAgIC8qIFJlLURpc3RyaWJ1dG9yIHN0 cmlkZSAqLworICAgICAgICBpbnQgbnJfbHBpczsKKyAgICAgICAgdWludDY0X3QgcmRpc3RfcHJv cGJhc2U7CisgICAgICAgIHVpbnQ4X3QgKnByb3B0YWJsZTsKICAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBpdHNfZGV2aWNlczsgICAgICAgLyogZGV2aWNlcyBtYXBwZWQgdG8gYW4gSVRTICovCiAg ICAgICAgIHNwaW5sb2NrX3QgaXRzX2RldmljZXNfbG9jazsgICAgICAgIC8qIHByb3RlY3RzIHRo ZSBpdHNfZGV2aWNlcyBsaXN0ICovCiAjZW5kaWYKQEAgLTI1NCw3ICsyNTcsMTAgQEAgc3RydWN0 IGFyY2hfdmNwdQogCiAgICAgICAgIC8qIEdJQ3YzOiByZWRpc3RyaWJ1dG9yIGJhc2UgYW5kIGZs YWdzIGZvciB0aGlzIHZDUFUgKi8KICAgICAgICAgcGFkZHJfdCByZGlzdF9iYXNlOwotI2RlZmlu ZSBWR0lDX1YzX1JESVNUX0xBU1QgICgxIDw8IDApICAgICAgICAvKiBsYXN0IHZDUFUgb2YgdGhl IHJkaXN0ICovCisjZGVmaW5lIFZHSUNfVjNfUkRJU1RfTEFTVCAgICAgICgxIDw8IDApICAgICAg ICAvKiBsYXN0IHZDUFUgb2YgdGhlIHJkaXN0ICovCisjZGVmaW5lIFZHSUNfVjNfTFBJU19FTkFC TEVEICAgICgxIDw8IDEpCisgICAgICAgIHVpbnQ2NF90IHJkaXN0X3BlbmRiYXNlOworICAgICAg ICB1bnNpZ25lZCBsb25nICpwZW5kdGFibGU7CiAgICAgICAgIHVpbnQ4X3QgZmxhZ3M7CiAgICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19scGlfbGlzdDsKICAgICAgICAgc3BpbmxvY2tf dCBwZW5kaW5nX2xwaV9saXN0X2xvY2s7ICAgLyogcHJvdGVjdHMgdGhlIHBlbmRpbmdfbHBpX2xp c3QgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oIGIveGVuL2luY2x1 ZGUvYXNtLWFybS92Z2ljLmgKaW5kZXggYTUwMzMyMS4uMWMxNTdkMyAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgK QEAgLTI4NSw2ICsyODUsOSBAQCBWR0lDX1JFR19IRUxQRVJTKDMyLCAweDMpOwogCiAjdW5kZWYg VkdJQ19SRUdfSEVMUEVSUwogCit2b2lkICptYXBfZ3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBndWVzdF9hZGRyLCBpbnQgbnJfcGFnZXMpOwordm9pZCB1bm1hcF9ndWVzdF9w YWdlcyh2b2lkICp2YSwgaW50IG5yX3BhZ2VzKTsKKwogZW51bSBnaWNfc2dpX21vZGU7CiAKIC8q CkBAIC0zMTIsNiArMzE1LDcgQEAgZXh0ZXJuIHN0cnVjdCB2Z2ljX2lycV9yYW5rICp2Z2ljX3Jh bmtfaXJxKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgaXJxKTsKIGV4dGVybiBib29sIHZn aWNfZW11bGF0ZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdW5pb24gaHNyIGhzcik7CiBl eHRlcm4gdm9pZCB2Z2ljX2Rpc2FibGVfaXJxcyhzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3Qgciwg aW50IG4pOwogZXh0ZXJuIHZvaWQgdmdpY19lbmFibGVfaXJxcyhzdHJ1Y3QgdmNwdSAqdiwgdWlu dDMyX3QgciwgaW50IG4pOworZXh0ZXJuIGJvb2wgdmdpY19scGlfaXNfZW5hYmxlZChzdHJ1Y3Qg ZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKTsKIGV4dGVybiBpbnQgdmdpY19scGlfZ2V0X3ByaW9y aXR5KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkpOwogZXh0ZXJuIHZvaWQgcmVnaXN0 ZXJfdmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHZnaWNfb3BzICpvcHMp OwogaW50IHZnaWNfdjJfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1taW9fY291bnQpOwot LSAKMi45LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK