From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v2 12/27] ARM: vGICv3: handle virtual LPI pending and property tables Date: Thu, 16 Mar 2017 11:20:15 +0000 Message-ID: <20170316112030.20419-13-andre.przywara@arm.com> References: <20170316112030.20419-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coTQw-0007oY-R7 for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:19:07 +0000 In-Reply-To: <20170316112030.20419-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: Stefano Stabellini , Julien Grall Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org QWxsb3cgYSBndWVzdCB0byBwcm92aWRlIHRoZSBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGUgbWVt b3J5IHJlZ2lvbnMKaXQgaGFzIHJlc2VydmVkIGZvciB0aGUgR0lDdjMgcGVuZGluZyBhbmQgcHJv cGVydHkgdGFibGVzLgpXZSBzYW5pdGlzZSB0aGUgdmFyaW91cyBmaWVsZHMgb2YgdGhlIHJlc3Bl Y3RpdmUgcmVkaXN0cmlidXRvcgpyZWdpc3RlcnMgYW5kIG1hcCB0aG9zZSBwYWdlcyBpbnRvIFhl bidzIGFkZHJlc3Mgc3BhY2UgdG8gaGF2ZSBlYXN5CmFjY2Vzcy4KClNpZ25lZC1vZmYtYnk6IEFu ZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS92 Z2ljLXYzLmMgICAgICAgfCAyMjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQogeGVuL2FyY2gvYXJtL3ZnaWMuYyAgICAgICAgICB8ICAgNCArCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL2RvbWFpbi5oIHwgICA4ICstCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCAg IHwgIDI0ICsrKystCiA0IGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAyMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy12My5jIGIveGVuL2FyY2gv YXJtL3ZnaWMtdjMuYwppbmRleCBiMDY1M2MyLi5jNmRiMmQ3IDEwMDY0NAotLS0gYS94ZW4vYXJj aC9hcm0vdmdpYy12My5jCisrKyBiL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMKQEAgLTIwLDEyICsy MCwxNCBAQAogCiAjaW5jbHVkZSA8eGVuL2JpdG9wcy5oPgogI2luY2x1ZGUgPHhlbi9jb25maWcu aD4KKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAj aW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgogI2luY2x1ZGUg PHhlbi9pcnEuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4ZW4vc2l6ZXMu aD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5j bHVkZSA8YXNtL21taW8uaD4KICNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KQEAgLTIyOSwx MiArMjMxLDE1IEBAIHN0YXRpYyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3JlYWQoc3Ry dWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAogICAgICAgICBnb3RvIHJlYWRfcmVzZXJ2 ZWQ7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX1BST1BCQVNFUik6Ci0gICAgICAgIC8qIExQSSdz IG5vdCBpbXBsZW1lbnRlZCAqLwotICAgICAgICBnb3RvIHJlYWRfYXNfemVyb182NDsKKyAgICAg ICAgaWYgKCAhdmdpY19yZWc2NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsK KyAgICAgICAgKnIgPSB2Z2ljX3JlZzY0X2V4dHJhY3Qodi0+ZG9tYWluLT5hcmNoLnZnaWMucmRp c3RfcHJvcGJhc2UsIGluZm8pOworICAgICAgICByZXR1cm4gMTsKIAogICAgIGNhc2UgVlJFRzY0 KEdJQ1JfUEVOREJBU0VSKToKLSAgICAgICAgLyogTFBJJ3Mgbm90IGltcGxlbWVudGVkICovCi0g ICAgICAgIGdvdG8gcmVhZF9hc196ZXJvXzY0OworICAgICAgICBpZiAoICF2Z2ljX3JlZzY0X2No ZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOworICAgICAgICAqciA9IHZnaWNfcmVn NjRfZXh0cmFjdCh2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2UsIGluZm8pOworICAgICAgICAq ciAmPSB+R0lDUl9QRU5EQkFTRVJfUFRaOyAgICAgICAvKiBXTywgcmVhZHMgYXMgMCAqLworICAg ICAgICByZXR1cm4gMTsKIAogICAgIGNhc2UgMHgwMDgwOgogICAgICAgICBnb3RvIHJlYWRfcmVz ZXJ2ZWQ7CkBAIC0zMDIsMTEgKzMwNyw2IEBAIGJhZF93aWR0aDoKICAgICBkb21haW5fY3Jhc2hf c3luY2hyb25vdXMoKTsKICAgICByZXR1cm4gMDsKIAotcmVhZF9hc196ZXJvXzY0OgotICAgIGlm ICggIXZnaWNfcmVnNjRfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7Ci0gICAg KnIgPSAwOwotICAgIHJldHVybiAxOwotCiByZWFkX2FzX3plcm9fMzI6CiAgICAgaWYgKCBkYWJ0 LnNpemUgIT0gREFCVF9XT1JEICkgZ290byBiYWRfd2lkdGg7CiAgICAgKnIgPSAwOwpAQCAtMzMx LDExICszMzEsMTc5IEBAIHJlYWRfdW5rbm93bjoKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGlj IHVpbnQ2NF90IHZnaWNfc2FuaXRpc2VfZmllbGQodWludDY0X3QgcmVnLCB1aW50NjRfdCBmaWVs ZF9tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkX3No aWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKCpzYW5p dGlzZV9mbikodWludDY0X3QpKQoreworICAgIHVpbnQ2NF90IGZpZWxkID0gKHJlZyAmIGZpZWxk X21hc2spID4+IGZpZWxkX3NoaWZ0OworCisgICAgZmllbGQgPSBzYW5pdGlzZV9mbihmaWVsZCkg PDwgZmllbGRfc2hpZnQ7CisKKyAgICByZXR1cm4gKHJlZyAmIH5maWVsZF9tYXNrKSB8IGZpZWxk OworfQorCisvKiBXZSB3YW50IHRvIGF2b2lkIG91dGVyIHNoYXJlYWJsZS4gKi8KK3N0YXRpYyB1 aW50NjRfdCB2Z2ljX3Nhbml0aXNlX3NoYXJlYWJpbGl0eSh1aW50NjRfdCBmaWVsZCkKK3sKKyAg ICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgY2FzZSBHSUNfQkFTRVJfT3V0ZXJTaGFyZWFibGU6Cisg ICAgICAgIHJldHVybiBHSUNfQkFTRVJfSW5uZXJTaGFyZWFibGU7CisgICAgZGVmYXVsdDoKKyAg ICAgICAgcmV0dXJuIGZpZWxkOworICAgIH0KK30KKworLyogQXZvaWQgYW55IGlubmVyIG5vbi1j YWNoZWFibGUgbWFwcGluZy4gKi8KK3N0YXRpYyB1aW50NjRfdCB2Z2ljX3Nhbml0aXNlX2lubmVy X2NhY2hlYWJpbGl0eSh1aW50NjRfdCBmaWVsZCkKK3sKKyAgICBzd2l0Y2ggKGZpZWxkKSB7Cisg ICAgY2FzZSBHSUNfQkFTRVJfQ0FDSEVfbkNuQjoKKyAgICBjYXNlIEdJQ19CQVNFUl9DQUNIRV9u QzoKKyAgICAgICAgcmV0dXJuIEdJQ19CQVNFUl9DQUNIRV9SYVdiOworICAgIGRlZmF1bHQ6Cisg ICAgICAgIHJldHVybiBmaWVsZDsKKyAgICB9Cit9CisKKy8qIE5vbi1jYWNoZWFibGUgb3Igc2Ft ZS1hcy1pbm5lciBhcmUgT0suICovCitzdGF0aWMgdWludDY0X3QgdmdpY19zYW5pdGlzZV9vdXRl cl9jYWNoZWFiaWxpdHkodWludDY0X3QgZmllbGQpCit7CisgICAgc3dpdGNoIChmaWVsZCkgewor ICAgIGNhc2UgR0lDX0JBU0VSX0NBQ0hFX1NhbWVBc0lubmVyOgorICAgIGNhc2UgR0lDX0JBU0VS X0NBQ0hFX25DOgorICAgICAgICByZXR1cm4gZmllbGQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAg cmV0dXJuIEdJQ19CQVNFUl9DQUNIRV9uQzsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBz YW5pdGl6ZV9wcm9wYmFzZXIodWludDY0X3QgcmVnKQoreworICAgIHJlZyA9IHZnaWNfc2FuaXRp c2VfZmllbGQocmVnLCBHSUNSX1BST1BCQVNFUl9TSEFSRUFCSUxJVFlfTUFTSywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdJQ1JfUFJPUEJBU0VSX1NIQVJFQUJJTElUWV9TSElGVCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZnaWNfc2FuaXRpc2Vfc2hhcmVhYmlsaXR5 KTsKKyAgICByZWcgPSB2Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QUk9QQkFTRVJfSU5O RVJfQ0FDSEVBQklMSVRZX01BU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNS X1BST1BCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2Z2ljX3Nhbml0aXNlX2lubmVyX2NhY2hlYWJpbGl0eSk7CisgICAgcmVnID0g dmdpY19zYW5pdGlzZV9maWVsZChyZWcsIEdJQ1JfUFJPUEJBU0VSX09VVEVSX0NBQ0hFQUJJTElU WV9NQVNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lDUl9QUk9QQkFTRVJfT1VU RVJfQ0FDSEVBQklMSVRZX1NISUZULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdp Y19zYW5pdGlzZV9vdXRlcl9jYWNoZWFiaWxpdHkpOworCisgICAgcmVnICY9IH5HSUNSX1BST1BC QVNFUl9SRVMwX01BU0s7CisgICAgcmV0dXJuIHJlZzsKK30KKworc3RhdGljIHVpbnQ2NF90IHNh bml0aXplX3BlbmRiYXNlcih1aW50NjRfdCByZWcpCit7CisgICAgcmVnID0gdmdpY19zYW5pdGlz ZV9maWVsZChyZWcsIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9NQVNLLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX1NISUZULAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdpY19zYW5pdGlzZV9zaGFyZWFiaWxpdHkp OworICAgIHJlZyA9IHZnaWNfc2FuaXRpc2VfZmllbGQocmVnLCBHSUNSX1BFTkRCQVNFUl9JTk5F Ul9DQUNIRUFCSUxJVFlfTUFTSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJQ1Jf UEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZnaWNfc2FuaXRpc2VfaW5uZXJfY2FjaGVhYmlsaXR5KTsKKyAgICByZWcgPSB2 Z2ljX3Nhbml0aXNlX2ZpZWxkKHJlZywgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZ X01BU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSUNSX1BFTkRCQVNFUl9PVVRF Ul9DQUNIRUFCSUxJVFlfU0hJRlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2lj X3Nhbml0aXNlX291dGVyX2NhY2hlYWJpbGl0eSk7CisKKyAgICByZWcgJj0gfkdJQ1JfUEVOREJB U0VSX1JFUzBfTUFTSzsKKyAgICByZXR1cm4gcmVnOworfQorCisvKgorICogTWFyayBhIGdpdmVu IG51bWJlciBvZiBndWVzdCBwYWdlcyBhcyB1c2VkIChieSBpbmNyZWFzaW5nIHRoZWlyIHJlZmNv dW50KSwKKyAqIHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIGd1ZXN0IGFkZHJlc3MuIFRoaXMgbmVl ZHMgdG8gYmUgY2FsbGVkIG9uY2UgYmVmb3JlCisgKiBjYWxsaW5nIChwb3NzaWJseSByZXBlYXRl ZGx5KSBtYXBfZ3Vlc3RfcGFnZXMoKS4KKyAqIEJlZm9yZSB0aGUgZG9tYWluIGdldHMgZGVzdHJv eWVkLCBjYWxsIHB1dF9ndWVzdF9wYWdlcygpIHRvIGRyb3AgdGhlCisgKiByZWZlcmVuY2UuCisg Ki8KK2ludCBnZXRfZ3Vlc3RfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBncGEsIGlu dCBucl9wYWdlcykKK3sKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwor CisgICAgZm9yICggaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrICkKKyAgICB7CisgICAgICAgIHBh Z2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCAoZ3BhID4+IFBBR0VfU0hJRlQpICsgaSwgTlVMTCwg UDJNX0FMTE9DKTsKKyAgICAgICAgaWYgKCAhIHBhZ2UgKQorICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgcHV0X2d1ZXN0X3BhZ2Vz KHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgZ3BhLCBpbnQgbnJfcGFnZXMpCit7CisgICAgbWZu X3QgbWZuOworICAgIGludCBpOworCisgICAgcDJtX3JlYWRfbG9jaygmZC0+YXJjaC5wMm0pOwor ICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKyApCisgICAgeworICAgICAgICBtZm4g PSBwMm1fZ2V0X2VudHJ5KCZkLT5hcmNoLnAybSwgX2dmbigoZ3BhID4+IFBBR0VfU0hJRlQpICsg aSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAg ICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKKyAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm4pKSk7CisgICAgfQorICAg IHAybV9yZWFkX3VubG9jaygmZC0+YXJjaC5wMm0pOworfQorCisvKgorICogUHJvdmlkZXMgZWFz eSBhY2Nlc3MgdG8gZ3Vlc3QgbWVtb3J5IGJ5ICJtYXBwaW5nIiBzb21lIHBhcnRzIG9mIGl0IGlu dG8KKyAqIFhlbidzIFZBIHNwYWNlLiBJbiBmYWN0IGl0IHJlbGllcyBvbiB0aGUgbWVtb3J5IGJl aW5nIGFscmVhZHkgbWFwcGVkCisgKiBhbmQganVzdCBwcm92aWRlcyBhIHBvaW50ZXIgdG8gaXQu CisgKiBUaGlzIGFsbG93cyB0aGUgSVRTIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSBoZWxkIGlu IGd1ZXN0IG1lbW9yeSBhbmQKKyAqIGF2b2lkcyB1c2luZyBYZW4ncyBtZW1vcnkgZm9yIHRoYXQu CisgKi8KK3ZvaWQgKm1hcF9ndWVzdF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGd1 ZXN0X2FkZHIsIGludCBucl9wYWdlcykKK3sKKyAgICBpbnQgaTsKKyAgICB2b2lkICpwdHIsICpm b2xsb3c7CisKKyAgICBwdHIgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihndWVzdF9hZGRyID4+IFBB R0VfU0hJRlQpKTsKKworICAgIC8qIE1ha2Ugc3VyZSBzdWJzZXF1ZW50IHBhZ2VzIGFyZSBtYXBw ZWQgaW4gYSB2aXJ0dWFsbHkgY29udGlnaW91cyB3YXkuICovCisgICAgZm9yICggaSA9IDE7IGkg PCBucl9wYWdlczsgaSsrICkKKyAgICB7CisgICAgICAgIGZvbGxvdyA9IG1hcF9kb21haW5fcGFn ZShfbWZuKChndWVzdF9hZGRyID4+IFBBR0VfU0hJRlQpICsgaSkpOworICAgICAgICBpZiAoIGZv bGxvdyAhPSBwdHIgKyAoKGxvbmcpaSA8PCBQQUdFX1NISUZUKSApCisgICAgICAgICAgICByZXR1 cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcHRyICsgKGd1ZXN0X2FkZHIgJiB+UEFHRV9N QVNLKTsKK30KKworLyogIlVubWFwIiBwcmV2aW91c2x5IG1hcHBlZCBndWVzdCBwYWdlcy4gU2hv dWxkIGJlIG9wdGltaXplZCBhd2F5IG9uIGFybTY0LiAqLwordm9pZCB1bm1hcF9ndWVzdF9wYWdl cyh2b2lkICp2YSwgaW50IG5yX3BhZ2VzKQoreworICAgIGxvbmcgaTsKKworICAgIGZvciAoIGkg PSBucl9wYWdlcyAtIDE7IGkgPj0gMDsgaS0tICkKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo KCh1aW50cHRyX3QpdmEgJiBQQUdFX01BU0spICsgKGkgPDwgUEFHRV9TSElGVCkpOworfQorCitp bnQgdmdpY19scGlfZ2V0X3ByaW9yaXR5KHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkp Cit7CisgICAgaWYgKCB2bHBpID49IGQtPmFyY2gudmdpYy5ucl9scGlzICkKKyAgICAgICAgcmV0 dXJuIEdJQ19QUklfSVJROworCisgICAgcmV0dXJuIGQtPmFyY2gudmdpYy5wcm9wdGFibGVbdmxw aSAtIExQSV9PRkZTRVRdICYgTFBJX1BST1BfUFJJT19NQVNLOworfQorCitib29sIHZnaWNfbHBp X2lzX2VuYWJsZWQoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgdmxwaSkKK3sKKyAgICBpZiAo IHZscGkgPj0gZC0+YXJjaC52Z2ljLm5yX2xwaXMgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK KyAgICByZXR1cm4gZC0+YXJjaC52Z2ljLnByb3B0YWJsZVt2bHBpIC0gTFBJX09GRlNFVF0gJiBM UElfUFJPUF9FTkFCTEVEOworfQorCiBzdGF0aWMgaW50IF9fdmdpY192M19yZGlzdHJfcmRfbW1p b193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBnaWNyX3JlZywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgcikKIHsKICAgICBz dHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7CisgICAgdWludDY0X3QgcmVnOwogCiAg ICAgc3dpdGNoICggZ2ljcl9yZWcgKQogICAgIHsKQEAgLTM2NiwzNiArNTM0LDU0IEBAIHN0YXRp YyBpbnQgX192Z2ljX3YzX3JkaXN0cl9yZF9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywKICAgICAgICAgZ290byB3cml0ZV9pbXBsX2RlZmluZWQ7CiAKICAgICBj YXNlIFZSRUc2NChHSUNSX1NFVExQSVIpOgotICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVu dGVkICovCisgICAgICAgIC8qIExQSXMgd2l0aG91dCBhbiBJVFMgYXJlIG5vdCBpbXBsZW1lbnRl ZCAqLwogICAgICAgICBnb3RvIHdyaXRlX2lnbm9yZV82NDsKIAogICAgIGNhc2UgVlJFRzY0KEdJ Q1JfQ0xSTFBJUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KKyAgICAg ICAgLyogTFBJcyB3aXRob3V0IGFuIElUUyBhcmUgbm90IGltcGxlbWVudGVkICovCiAgICAgICAg IGdvdG8gd3JpdGVfaWdub3JlXzY0OwogCiAgICAgY2FzZSAweDAwNTA6CiAgICAgICAgIGdvdG8g d3JpdGVfcmVzZXJ2ZWQ7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX1BST1BCQVNFUik6Ci0gICAg ICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KLSAgICAgICAgZ290byB3cml0ZV9pZ25v cmVfNjQ7CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290 byBiYWRfd2lkdGg7CisKKyAgICAgICAgLyogV3JpdGluZyBQUk9QQkFTRVIgd2l0aCBMUElzIGVu YWJsZWQgaXMgVU5QUkVESUNUQUJMRS4gKi8KKyAgICAgICAgaWYgKCB2LT5hcmNoLnZnaWMuZmxh Z3MgJiBWR0lDX1YzX0xQSVNfRU5BQkxFRCApCisgICAgICAgICAgICByZXR1cm4gMTsKKworICAg ICAgICByZWcgPSB2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9wcm9wYmFzZTsKKyAgICAgICAg dmdpY19yZWc2NF91cGRhdGUoJnJlZywgciwgaW5mbyk7CisgICAgICAgIHJlZyA9IHNhbml0aXpl X3Byb3BiYXNlcihyZWcpOworICAgICAgICB2LT5kb21haW4tPmFyY2gudmdpYy5yZGlzdF9wcm9w YmFzZSA9IHJlZzsKKyAgICAgICAgcmV0dXJuIDE7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX1BF TkRCQVNFUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQgKi8KLSAgICAgICAg Z290byB3cml0ZV9pZ25vcmVfNjQ7CisgICAgICAgIGlmICggIXZnaWNfcmVnNjRfY2hlY2tfYWNj ZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7CisKKyAgICAgICAgLyogV3JpdGluZyBQRU5EQkFT RVIgd2l0aCBMUElzIGVuYWJsZWQgaXMgVU5QUkVESUNUQUJMRS4gKi8KKyAgICAgICAgaWYgKCB2 LT5hcmNoLnZnaWMuZmxhZ3MgJiBWR0lDX1YzX0xQSVNfRU5BQkxFRCApCisgICAgICAgICAgICBy ZXR1cm4gMTsKKworCXJlZyA9IHYtPmFyY2gudmdpYy5yZGlzdF9wZW5kYmFzZTsKKwl2Z2ljX3Jl ZzY0X3VwZGF0ZSgmcmVnLCByLCBpbmZvKTsKKwlyZWcgPSBzYW5pdGl6ZV9wZW5kYmFzZXIocmVn KTsKKwl2LT5hcmNoLnZnaWMucmRpc3RfcGVuZGJhc2UgPSByZWc7CisJcmV0dXJuIDE7CiAKICAg ICBjYXNlIDB4MDA4MDoKICAgICAgICAgZ290byB3cml0ZV9yZXNlcnZlZDsKIAogICAgIGNhc2Ug VlJFRzY0KEdJQ1JfSU5WTFBJUik6Ci0gICAgICAgIC8qIExQSSBpcyBub3QgaW1wbGVtZW50ZWQg Ki8KKyAgICAgICAgLyogTFBJcyB3aXRob3V0IGFuIElUUyBhcmUgbm90IGltcGxlbWVudGVkICov CiAgICAgICAgIGdvdG8gd3JpdGVfaWdub3JlXzY0OwogCiAgICAgY2FzZSAweDAwQTg6CiAgICAg ICAgIGdvdG8gd3JpdGVfcmVzZXJ2ZWQ7CiAKICAgICBjYXNlIFZSRUc2NChHSUNSX0lOVkFMTFIp OgotICAgICAgICAvKiBMUEkgaXMgbm90IGltcGxlbWVudGVkICovCisgICAgICAgIC8qIExQSXMg d2l0aG91dCBhbiBJVFMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLwogICAgICAgICBnb3RvIHdyaXRl X2lnbm9yZV82NDsKIAogICAgIGNhc2UgMHgwMEI4OgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L3ZnaWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljLmMKaW5kZXggZTVjZmE1NC4uNDdiYThjMCAxMDA2 NDQKLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMuYworKysgYi94ZW4vYXJjaC9hcm0vdmdpYy5jCkBA IC00OTQsNiArNDk0LDEwIEBAIHN0cnVjdCBwZW5kaW5nX2lycSAqbHBpX3RvX3BlbmRpbmcoc3Ry dWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBscGksCiAgICAgICAgIGVtcHR5LT5waXJxLmlycSA9 IGxwaTsKICAgICB9CiAKKyAgICAvKiBVcGRhdGUgdGhlIGVuYWJsZWQgc3RhdHVzICovCisgICAg aWYgKCB2Z2ljX2xwaV9pc19lbmFibGVkKHYtPmRvbWFpbiwgbHBpKSApCisgICAgICAgIHNldF9i aXQoR0lDX0lSUV9HVUVTVF9FTkFCTEVELCAmZW1wdHktPnBpcnEuc3RhdHVzKTsKKwogICAgIHNw aW5fdW5sb2NrKCZ2LT5hcmNoLnZnaWMucGVuZGluZ19scGlfbGlzdF9sb2NrKTsKIAogICAgIHJl dHVybiAmZW1wdHktPnBpcnE7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFp bi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAppbmRleCBmNDRhODRiLi4zM2MxODUx IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vZG9tYWluLmgKQEAgLTExMCw2ICsxMTAsOSBAQCBzdHJ1Y3QgYXJjaF9kb21h aW4KICAgICAgICAgfSAqcmRpc3RfcmVnaW9uczsKICAgICAgICAgaW50IG5yX3JlZ2lvbnM7ICAg ICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJkaXN0IHJlZ2lvbnMgKi8KICAgICAgICAg dWludDMyX3QgcmRpc3Rfc3RyaWRlOyAgICAgICAgICAgICAgLyogUmUtRGlzdHJpYnV0b3Igc3Ry aWRlICovCisgICAgICAgIGludCBucl9scGlzOworICAgICAgICB1aW50NjRfdCByZGlzdF9wcm9w YmFzZTsKKyAgICAgICAgdWludDhfdCAqcHJvcHRhYmxlOwogICAgICAgICBzdHJ1Y3QgcmJfcm9v dCBpdHNfZGV2aWNlczsgICAgICAgICAvKiBkZXZpY2VzIG1hcHBlZCB0byBhbiBJVFMgKi8KICAg ICAgICAgc3BpbmxvY2tfdCBpdHNfZGV2aWNlc19sb2NrOyAgICAgICAgLyogcHJvdGVjdHMgdGhl IGl0c19kZXZpY2VzIHRyZWUgKi8KICNlbmRpZgpAQCAtMjU1LDcgKzI1OCwxMCBAQCBzdHJ1Y3Qg YXJjaF92Y3B1CiAKICAgICAgICAgLyogR0lDdjM6IHJlZGlzdHJpYnV0b3IgYmFzZSBhbmQgZmxh Z3MgZm9yIHRoaXMgdkNQVSAqLwogICAgICAgICBwYWRkcl90IHJkaXN0X2Jhc2U7Ci0jZGVmaW5l IFZHSUNfVjNfUkRJU1RfTEFTVCAgKDEgPDwgMCkgICAgICAgIC8qIGxhc3QgdkNQVSBvZiB0aGUg cmRpc3QgKi8KKyNkZWZpbmUgVkdJQ19WM19SRElTVF9MQVNUICAgICAgKDEgPDwgMCkgICAgICAg IC8qIGxhc3QgdkNQVSBvZiB0aGUgcmRpc3QgKi8KKyNkZWZpbmUgVkdJQ19WM19MUElTX0VOQUJM RUQgICAgKDEgPDwgMSkKKyAgICAgICAgdWludDY0X3QgcmRpc3RfcGVuZGJhc2U7CisgICAgICAg IHVuc2lnbmVkIGxvbmcgKnBlbmR0YWJsZTsKICAgICAgICAgdWludDhfdCBmbGFnczsKICAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX2xwaV9saXN0OwogICAgICAgICBzcGlubG9ja190 IHBlbmRpbmdfbHBpX2xpc3RfbG9jazsgICAvKiBwcm90ZWN0cyB0aGUgcGVuZGluZ19scGlfbGlz dCAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmggYi94ZW4vaW5jbHVk ZS9hc20tYXJtL3ZnaWMuaAppbmRleCA4ZjEwOTljLi5mOGJjY2ZhIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9hc20tYXJtL3ZnaWMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaApA QCAtMjg1LDYgKzI4NSwxMSBAQCBWR0lDX1JFR19IRUxQRVJTKDMyLCAweDMpOwogCiAjdW5kZWYg VkdJQ19SRUdfSEVMUEVSUwogCitpbnQgZ2V0X2d1ZXN0X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQs IHBhZGRyX3QgZ3BhLCBpbnQgbnJfcGFnZXMpOwordm9pZCBwdXRfZ3Vlc3RfcGFnZXMoc3RydWN0 IGRvbWFpbiAqZCwgcGFkZHJfdCBncGEsIGludCBucl9wYWdlcyk7Cit2b2lkICptYXBfZ3Vlc3Rf cGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBndWVzdF9hZGRyLCBpbnQgbnJfcGFnZXMp Owordm9pZCB1bm1hcF9ndWVzdF9wYWdlcyh2b2lkICp2YSwgaW50IG5yX3BhZ2VzKTsKKwogZW51 bSBnaWNfc2dpX21vZGU7CiAKIC8qCkBAIC0zMTIsMTQgKzMxNywyMyBAQCBleHRlcm4gc3RydWN0 IHZnaWNfaXJxX3JhbmsgKnZnaWNfcmFua19pcnEoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGlu dCBpcnEpOwogZXh0ZXJuIGJvb2wgdmdpY19lbXVsYXRlKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzLCB1bmlvbiBoc3IgaHNyKTsKIGV4dGVybiB2b2lkIHZnaWNfZGlzYWJsZV9pcnFzKHN0cnVj dCB2Y3B1ICp2LCB1aW50MzJfdCByLCBpbnQgbik7CiBleHRlcm4gdm9pZCB2Z2ljX2VuYWJsZV9p cnFzKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCByLCBpbnQgbik7Ci0vKiBwbGFjZWhvbGRlciBm dW5jdGlvbiB1bnRpbCB0aGUgcHJvcGVydHkgdGFibGUgZ2V0cyBpbnRyb2R1Y2VkICovCi1zdGF0 aWMgaW5saW5lIGludCB2Z2ljX2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWlu dDMyX3QgdmxwaSkKLXsKLSAgICByZXR1cm4gMHhhOwotfQogZXh0ZXJuIHZvaWQgcmVnaXN0ZXJf dmdpY19vcHMoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IHZnaWNfb3BzICpvcHMpOwog aW50IHZnaWNfdjJfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1taW9fY291bnQpOwogaW50 IHZnaWNfdjNfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1taW9fY291bnQpOworI2lmZGVm IENPTkZJR19IQVNfR0lDVjMKK2V4dGVybiBpbnQgdmdpY19scGlfZ2V0X3ByaW9yaXR5KHN0cnVj dCBkb21haW4gKmQsIHVpbnQzMl90IHZscGkpOworZXh0ZXJuIGJvb2wgdmdpY19scGlfaXNfZW5h YmxlZChzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2bHBpKTsKKyNlbHNlCitzdGF0aWMgaW5s aW5lIGludCB2Z2ljX2xwaV9nZXRfcHJpb3JpdHkoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3Qg dmxwaSkKK3sKKyAgICByZXR1cm4gMHhhMDsKK30KKworc3RhdGljIGlubGluZSBib29sIHZnaWNf bHBpX2lzX2VuYWJsZWQoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgdmxwaSkKK3sKKyAgICBy ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKIAogZXh0ZXJuIGludCBkb21haW5fdmdpY19yZWdpc3Rl cihzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKm1taW9fY291bnQpOwogZXh0ZXJuIGludCB2Y3B1X3Zn aWNfZnJlZShzdHJ1Y3QgdmNwdSAqdik7Ci0tIAoyLjkuMAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=