From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v4 06/27] ARM: GICv3 ITS: introduce ITS command handling Date: Mon, 3 Apr 2017 21:28:08 +0100 Message-ID: <20170403202829.7278-7-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 1cv8Yj-0004vw-J5 for xen-devel@lists.xenproject.org; Mon, 03 Apr 2017 20:26:41 +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 VG8gYmUgYWJsZSB0byBlYXNpbHkgc2VuZCBjb21tYW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhl IHJlc3BlY3RpdmUKd3JhcHBlciBmdW5jdGlvbnMsIHdoaWNoIHRha2UgY2FyZSBvZiB0aGUgcmlu ZyBidWZmZXIuClRoZSBmaXJzdCB0d28gY29tbWFuZHMgd2UgaW1wbGVtZW50IHByb3ZpZGUgbWV0 aG9kcyB0byBtYXAgYSBjb2xsZWN0aW9uCnRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3QgY29y ZSkgYW5kIHRvIGZsdXNoIHRoZSBjb21tYW5kIHF1ZXVlIChTWU5DKS4KU3RhcnQgdXNpbmcgdGhl c2UgY29tbWFuZHMgZm9yIG1hcHBpbmcgb25lIGNvbGxlY3Rpb24gdG8gZWFjaCBob3N0IENQVS4K ClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgot LS0KIHhlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMgICAgICAgICB8IDE4MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyAgICAg ICAgIHwgIDI4ICsrKysrKwogeGVuL2FyY2gvYXJtL2dpYy12My5jICAgICAgICAgICAgIHwgIDI2 ICsrKysrLQogeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIHwgICAyICsKIHhlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oICB8ICAzOCArKysrKysrLQogNSBmaWxlcyBjaGFu Z2VkLCAyNzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vZ2ljLXYzLWl0cy5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwppbmRleCA1 MWIxYjYwLi44Y2MwYWQ4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWl0cy5jCisr KyBiL3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMKQEAgLTE5LDExICsxOSwxNCBAQAogICovCiAK ICNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2RlbGF5Lmg+CiAjaW5jbHVkZSA8 eGVuL21tLmg+CiAjaW5jbHVkZSA8eGVuL3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2dpYy5oPgog I2luY2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgogI2luY2x1ZGUgPGFzbS9naWNfdjNfaXRzLmg+ CiAjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAogI2RlZmluZSBJ VFNfQ01EX1FVRVVFX1NaICAgICAgICAgICAgICAgIFNaXzFNCiAKQEAgLTM4LDYgKzQxLDE0NSBA QCBib29sIGdpY3YzX2l0c19ob3N0X2hhc19pdHModm9pZCkKICAgICByZXR1cm4gIWxpc3RfZW1w dHkoJmhvc3RfaXRzX2xpc3QpOwogfQogCisjZGVmaW5lIEJVRlBUUl9NQVNLICAgICAgICAgICAg ICAgICAgICAgR0VOTUFTS19VTEwoMTksIDUpCitzdGF0aWMgaW50IGl0c19zZW5kX2NvbW1hbmQo c3RydWN0IGhvc3RfaXRzICpod19pdHMsIGNvbnN0IHZvaWQgKml0c19jbWQpCit7CisgICAgLyog U29tZSBzbWFsbCBncmFjZSBwZXJpb2QgaW4gY2FzZSB0aGUgY29tbWFuZCBxdWV1ZSBpcyBjb25n ZXN0ZWQuICovCisgICAgc190aW1lX3QgZGVhZGxpbmUgPSBOT1coKSArIE1JTExJU0VDUygxKTsK KyAgICB1aW50NjRfdCByZWFkcCwgd3JpdGVwOworICAgIGludCByZXQgPSAtRUJVU1k7CisKKyAg ICAvKiBObyBJVFMgY29tbWFuZHMgZnJvbSBhbiBpbnRlcnJ1cHQgaGFuZGxlciAoYXQgdGhlIG1v bWVudCkuICovCisgICAgQVNTRVJUKCFpbl9pcnEoKSk7CisKKyAgICBzcGluX2xvY2soJmh3X2l0 cy0+Y21kX2xvY2spOworCisgICAgZG8geworICAgICAgICByZWFkcCA9IHJlYWRxX3JlbGF4ZWQo aHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1JFQURSKSAmIEJVRlBUUl9NQVNLOworICAgICAgICB3 cml0ZXAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRTX0NXUklURVIpICYg QlVGUFRSX01BU0s7CisKKyAgICAgICAgaWYgKCAoKHdyaXRlcCArIElUU19DTURfU0laRSkgJSBJ VFNfQ01EX1FVRVVFX1NaKSAhPSByZWFkcCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9 IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAg ICAqIElmIHRoZSBjb21tYW5kIHF1ZXVlIGlzIGZ1bGwsIHdhaXQgZm9yIGEgYml0IGluIHRoZSBo b3BlIGl0IGRyYWlucworICAgICAgICAgKiBiZWZvcmUgZ2l2aW5nIHVwLgorICAgICAgICAgKi8K KyAgICAgICAgc3Bpbl91bmxvY2soJmh3X2l0cy0+Y21kX2xvY2spOworICAgICAgICBjcHVfcmVs YXgoKTsKKyAgICAgICAgdWRlbGF5KDEpOworICAgICAgICBzcGluX2xvY2soJmh3X2l0cy0+Y21k X2xvY2spOworICAgIH0gd2hpbGUgKCBOT1coKSA8PSBkZWFkbGluZSApOworCisgICAgaWYgKCBy ZXQgKQorICAgIHsKKyAgICAgICAgc3Bpbl91bmxvY2soJmh3X2l0cy0+Y21kX2xvY2spOworICAg ICAgICBpZiAoIHByaW50a19yYXRlbGltaXQoKSApCisgICAgICAgICAgICBwcmludGsoWEVOTE9H X1dBUk5JTkcgImhvc3QgSVRTOiBjb21tYW5kIHF1ZXVlIGZ1bGwuXG4iKTsKKyAgICAgICAgcmV0 dXJuIHJldDsKKyAgICB9CisKKyAgICBtZW1jcHkoaHdfaXRzLT5jbWRfYnVmICsgd3JpdGVwLCBp dHNfY21kLCBJVFNfQ01EX1NJWkUpOworICAgIGlmICggaHdfaXRzLT5mbGFncyAmIEhPU1RfSVRT X0ZMVVNIX0NNRF9RVUVVRSApCisgICAgICAgIGNsZWFuX2FuZF9pbnZhbGlkYXRlX2RjYWNoZV92 YV9yYW5nZShod19pdHMtPmNtZF9idWYgKyB3cml0ZXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJVFNfQ01EX1NJWkUpOworICAgIGVsc2UKKyAgICAgICAg ZHNiKGlzaHN0KTsKKworICAgIHdyaXRlcCA9ICh3cml0ZXAgKyBJVFNfQ01EX1NJWkUpICUgSVRT X0NNRF9RVUVVRV9TWjsKKyAgICB3cml0ZXFfcmVsYXhlZCh3cml0ZXAgJiBCVUZQVFJfTUFTSywg aHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1dSSVRFUik7CisKKyAgICBzcGluX3VubG9jaygmaHdf aXRzLT5jbWRfbG9jayk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogV2FpdCBmb3IgYW4gSVRT IHRvIGZpbmlzaCBwcm9jZXNzaW5nIGFsbCBjb21tYW5kcy4gKi8KK3N0YXRpYyBpbnQgZ2ljdjNf aXRzX3dhaXRfY29tbWFuZHMoc3RydWN0IGhvc3RfaXRzICpod19pdHMpCit7CisgICAgLyogRGVm aW5lIGFuIHVwcGVyIGxpbWl0IGZvciBvdXIgd2FpdCB0aW1lLiAqLworICAgIHNfdGltZV90IGRl YWRsaW5lID0gTk9XKCkgKyBNSUxMSVNFQ1MoMTAwKTsKKyAgICB1aW50NjRfdCByZWFkcCwgd3Jp dGVwOworCisgICAgZG8geworICAgICAgICBzcGluX2xvY2soJmh3X2l0cy0+Y21kX2xvY2spOwor ICAgICAgICByZWFkcCA9IHJlYWRxX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1JF QURSKSAmIEJVRlBUUl9NQVNLOworICAgICAgICB3cml0ZXAgPSByZWFkcV9yZWxheGVkKGh3X2l0 cy0+aXRzX2Jhc2UgKyBHSVRTX0NXUklURVIpICYgQlVGUFRSX01BU0s7CisgICAgICAgIHNwaW5f dW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKKworICAgICAgICBpZiAoIHJlYWRwID09IHdyaXRl cCApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjcHVfcmVsYXgoKTsKKyAgICAg ICAgdWRlbGF5KDEpOworICAgIH0gd2hpbGUgKCBOT1coKSA8PSBkZWFkbGluZSApOworCisgICAg cmV0dXJuIC1FVElNRURPVVQ7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBlbmNvZGVfcmRiYXNlKHN0 cnVjdCBob3N0X2l0cyAqaHdfaXRzLCB1bnNpZ25lZCBpbnQgY3B1LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgcmVnKQoreworICAgIHJlZyAmPSB+R0VOTUFTS19VTEwo NTEsIDE2KTsKKworICAgIHJlZyB8PSBnaWN2M19nZXRfcmVkaXN0X2FkZHJlc3MoY3B1LCBod19p dHMtPmZsYWdzICYgSE9TVF9JVFNfVVNFU19QVEEpOworCisgICAgcmV0dXJuIHJlZzsKK30KKwor c3RhdGljIGludCBpdHNfc2VuZF9jbWRfc3luYyhzdHJ1Y3QgaG9zdF9pdHMgKml0cywgdW5zaWdu ZWQgaW50IGNwdSkKK3sKKyAgICB1aW50NjRfdCBjbWRbNF07CisKKyAgICBjbWRbMF0gPSBHSVRT X0NNRF9TWU5DOworICAgIGNtZFsxXSA9IDB4MDA7CisgICAgY21kWzJdID0gZW5jb2RlX3JkYmFz ZShpdHMsIGNwdSwgMHgwKTsKKyAgICBjbWRbM10gPSAweDAwOworCisgICAgcmV0dXJuIGl0c19z ZW5kX2NvbW1hbmQoaXRzLCBjbWQpOworfQorCitzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9tYXBj KHN0cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdCBjb2xsZWN0aW9uX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHVpbnQ2NF90IGNt ZFs0XTsKKworICAgIGNtZFswXSA9IEdJVFNfQ01EX01BUEM7CisgICAgY21kWzFdID0gMHgwMDsK KyAgICBjbWRbMl0gPSBlbmNvZGVfcmRiYXNlKGl0cywgY3B1LCBjb2xsZWN0aW9uX2lkKTsKKyAg ICBjbWRbMl0gfD0gR0lUU19WQUxJRF9CSVQ7CisgICAgY21kWzNdID0gMHgwMDsKKworICAgIHJl dHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKK30KKworLyogU2V0IHVwIHRoZSAoMTox KSBjb2xsZWN0aW9uIG1hcHBpbmcgZm9yIHRoZSBnaXZlbiBob3N0IENQVS4gKi8KK2ludCBnaWN2 M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHN0cnVjdCBo b3N0X2l0cyAqaXRzOworICAgIGludCByZXQ7CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0 cywgJmhvc3RfaXRzX2xpc3QsIGVudHJ5KQorICAgIHsKKyAgICAgICAgcmV0ID0gaXRzX3NlbmRf Y21kX21hcGMoaXRzLCBjcHUsIGNwdSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAg IHJldHVybiByZXQ7CisKKyAgICAgICAgcmV0ID0gaXRzX3NlbmRfY21kX3N5bmMoaXRzLCBjcHUp OworICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAg IHJldCA9IGdpY3YzX2l0c193YWl0X2NvbW1hbmRzKGl0cyk7CisgICAgICAgIGlmICggcmV0ICkK KyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKICNk ZWZpbmUgQkFTRVJfQVRUUl9NQVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgKCgweDNVTCA8PCBHSVRTX0JBU0VSX1NIQVJFQUJJTElUWV9TSElG VCkgICAgICAgICAgICAgICB8IFwKICAgICAgICAgICgweDdVTCA8PCBHSVRTX0JBU0VSX09VVEVS X0NBQ0hFQUJJTElUWV9TSElGVCkgICAgICAgICB8IFwKQEAgLTE4Miw2ICszMjQsMzggQEAgcmV0 cnk6CiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKKy8qCisgKiBCZWZvcmUgYW4gSVRTIGdldHMg aW5pdGlhbGl6ZWQsIGl0IHNob3VsZCBiZSBpbiBhIHF1aWVzY2VudCBzdGF0ZSwgd2hlcmUKKyAq IGFsbCBvdXRzdGFuZGluZyBjb21tYW5kcyBhbmQgdHJhbnNhY3Rpb25zIGhhdmUgZmluaXNoZWQu CisgKiBTbyBpZiB0aGUgSVRTIGlzIGFscmVhZHkgZW5hYmxlZCwgdHVybiBpdCBvZmYgYW5kIHdh aXQgZm9yIGFsbCBvdXRzdGFuZGluZworICogb3BlcmF0aW9ucyB0byBnZXQgcHJvY2Vzc2VkIGJ5 IHBvbGxpbmcgdGhlIFFVSUVTQ0VOVCBiaXQuCisgKi8KK3N0YXRpYyBpbnQgZ2ljdjNfZGlzYWJs ZV9pdHMoc3RydWN0IGhvc3RfaXRzICpod19pdHMpCit7CisgICAgdWludDMyX3QgcmVnOworICAg IC8qIEEgc2ltaWxhciBnZW5lcm91cyB3YWl0IGxpbWl0IGFzIHdlIHVzZSBmb3IgdGhlIGNvbW1h bmQgcXVldWUgd2FpdC4gKi8KKyAgICBzX3RpbWVfdCBkZWFkbGluZSA9IE5PVygpICsgTUlMTElT RUNTKDEwMCk7CisKKyAgICByZWcgPSByZWFkbF9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBH SVRTX0NUTFIpOworICAgIGlmICggIShyZWcgJiBHSVRTX0NUTFJfRU5BQkxFKSAmJiAocmVnICYg R0lUU19DVExSX1FVSUVTQ0VOVCkgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHdyaXRlbF9y ZWxheGVkKHJlZyAmIH5HSVRTX0NUTFJfRU5BQkxFLCBod19pdHMtPml0c19iYXNlICsgR0lUU19D VExSKTsKKworICAgIGRvIHsKKyAgICAgICAgcmVnID0gcmVhZGxfcmVsYXhlZChod19pdHMtPml0 c19iYXNlICsgR0lUU19DVExSKTsKKyAgICAgICAgaWYgKCByZWcgJiBHSVRTX0NUTFJfUVVJRVND RU5UICkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNwdV9yZWxheCgpOworICAg ICAgICB1ZGVsYXkoMSk7CisgICAgfSB3aGlsZSAoIE5PVygpIDw9IGRlYWRsaW5lICk7CisKKyAg ICBkcHJpbnRrKFhFTkxPR19FUlIsICJJVFMgbm90IHF1aWVzY2VudC5cbiIpOworCisgICAgcmV0 dXJuIC1FVElNRURPVVQ7Cit9CisKIC8qIEFsbG93IGEgdXNlciB0byBsaW1pdCB0aGUgbnVtYmVy IG9mIGRldmljZXMuICovCiBzdGF0aWMgdW5zaWduZWQgaW50IG1heF9pdHNfZGV2aWNlX2JpdHMg PSAzMjsKIGludGVnZXJfcGFyYW0oIm1heF9pdHNfZGV2aWNlX2JpdHMiLCBtYXhfaXRzX2Rldmlj ZV9iaXRzKTsKQEAgLTE5NSwxMSArMzY5LDE4IEBAIHN0YXRpYyBpbnQgZ2ljdjNfaXRzX2luaXRf c2luZ2xlX2l0cyhzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cykKICAgICBpZiAoICFod19pdHMtPml0 c19iYXNlICkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAKKyAgICByZXQgPSBnaWN2M19kaXNh YmxlX2l0cyhod19pdHMpOworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKwog ICAgIHJlZyA9IHJlYWRxX3JlbGF4ZWQoaHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfVFlQRVIpOwog ICAgIGh3X2l0cy0+ZGV2aWRfYml0cyA9IEdJVFNfVFlQRVJfREVWSUNFX0lEX0JJVFMocmVnKTsK ICAgICBod19pdHMtPmRldmlkX2JpdHMgPSBtaW4oaHdfaXRzLT5kZXZpZF9iaXRzLCBtYXhfaXRz X2RldmljZV9iaXRzKTsKICAgICBod19pdHMtPmV2aWRfYml0cyA9IEdJVFNfVFlQRVJfRVZFTlRf SURfQklUUyhyZWcpOwogICAgIGh3X2l0cy0+aXR0ZV9zaXplID0gR0lUU19UWVBFUl9JVFRfU0la RShyZWcpOworICAgIGlmICggcmVnICYgR0lUU19UWVBFUl9QVEEgKQorICAgICAgICBod19pdHMt PmZsYWdzIHw9IEhPU1RfSVRTX1VTRVNfUFRBOworICAgIHNwaW5fbG9ja19pbml0KCZod19pdHMt PmNtZF9sb2NrKTsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgR0lUU19CQVNFUl9OUl9SRUdTOyBp KysgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMgYi94ZW4v YXJjaC9hcm0vZ2ljLXYzLWxwaS5jCmluZGV4IGEwMDNhNzIuLjhiMzY2MGEgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMKKysrIGIveGVuL2FyY2gvYXJtL2dpYy12My1scGku YwpAQCAtNDMsNiArNDMsOCBAQCBzdGF0aWMgc3RydWN0IHsKIH0gbHBpX2RhdGE7CiAKIHN0cnVj dCBscGlfcmVkaXN0X2RhdGEgeworICAgIHBhZGRyX3QgICAgICAgICAgICAgcmVkaXN0X2FkZHI7 CisgICAgdW5zaWduZWQgaW50ICAgICAgICByZWRpc3RfaWQ7CiAgICAgdm9pZCAgICAgICAgICAg ICAgICAqcGVuZGluZ190YWJsZTsKIH07CiAKQEAgLTUwLDYgKzUyLDMyIEBAIHN0YXRpYyBERUZJ TkVfUEVSX0NQVShzdHJ1Y3QgbHBpX3JlZGlzdF9kYXRhLCBscGlfcmVkaXN0KTsKIAogI2RlZmlu ZSBNQVhfUEhZU19MUElTICAgKGxwaV9kYXRhLm5yX2hvc3RfbHBpcyAtIExQSV9PRkZTRVQpCiAK Ky8qCisgKiBBbiBJVFMgY2FuIHJlZmVyIHRvIHJlZGlzdHJpYnV0b3JzIGluIHR3byB3YXlzOiBl aXRoZXIgYnkgYW4gSUQgKHBvc3NpYmx5CisgKiB0aGUgQ1BVIG51bWJlcikgb3IgYnkgaXRzIE1N SU8gYWRkcmVzcy4gVG8gY29wZSB3aXRoIGJvdGggYXBwcm9hY2hlcywKKyAqIHRoZSBHSUN2MyBj b2RlIGNhbGN1bGF0ZXMgYm90aCB2YWx1ZXMgYW5kIGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gbGV0 IHRoZQorICogSVRTIHN0b3JlIHRoZW0gd2hlbiBpdCdzIGxhdGVyIHJlcXVpcmVkIHRvIHByb3Zp ZGUgdGhlbS4KKyAqIFRoaXMgaXMgZG9uZSBpbiBhIHBlci1DUFUgdmFyaWFibGUuCisgKi8KK3Zv aWQgZ2ljdjNfc2V0X3JlZGlzdF9hZGRyZXNzKHBhZGRyX3QgYWRkcmVzcywgdW5zaWduZWQgaW50 IHJlZGlzdF9pZCkKK3sKKyAgICB0aGlzX2NwdShscGlfcmVkaXN0KS5yZWRpc3RfYWRkciA9IGFk ZHJlc3M7CisgICAgdGhpc19jcHUobHBpX3JlZGlzdCkucmVkaXN0X2lkID0gcmVkaXN0X2lkOwor fQorCisvKgorICogUmV0dXJucyBhIHJlZGlzdHJpYnV0b3IncyBJRCAoZWl0aGVyIGFzIGFuIGFk ZHJlc3Mgb3IgYXMgYW4gSUQpLgorICogVGhpcyBtdXN0IGJlIChhbmQgaXMpIGNhbGxlZCBvbmx5 IGFmdGVyIGl0IGhhcyBiZWVuIHNldHVwIGJ5IHRoZSBhYm92ZQorICogZnVuY3Rpb24uCisgKi8K K3VpbnQ2NF90IGdpY3YzX2dldF9yZWRpc3RfYWRkcmVzcyh1bnNpZ25lZCBpbnQgY3B1LCBib29s IHVzZV9wdGEpCit7CisgICAgaWYgKCB1c2VfcHRhICkKKyAgICAgICAgcmV0dXJuIHBlcl9jcHUo bHBpX3JlZGlzdCwgY3B1KS5yZWRpc3RfYWRkciAmIEdFTk1BU0tfVUxMKDUxLCAxNik7CisgICAg ZWxzZQorICAgICAgICByZXR1cm4gcGVyX2NwdShscGlfcmVkaXN0LCBjcHUpLnJlZGlzdF9pZCA8 PCAxNjsKK30KKwogc3RhdGljIGludCBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxlKHVpbnQ2 NF90ICpyZWcpCiB7CiAgICAgdWludDY0X3QgdmFsOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2dpYy12My5jIGIveGVuL2FyY2gvYXJtL2dpYy12My5jCmluZGV4IDU0ZDIyMzUuLmE1NTllNWUg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYworKysgYi94ZW4vYXJjaC9hcm0vZ2lj LXYzLmMKQEAgLTY2NSw4ICs2NjUsMjUgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxh dGVfcmRpc3Qodm9pZCkKIAogICAgICAgICAgICAgICAgIGlmICggdHlwZXIgJiBHSUNSX1RZUEVS X1BMUElTICkKICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qg cmRpc3RfYWRkcjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHByb2NudW07CiAg ICAgICAgICAgICAgICAgICAgIGludCByZXQ7CiAKKyAgICAgICAgICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAgICAgICAgICogVGhlIElUUyByZWZlcnMgdG8gcmVkaXN0cmlidXRvcnMgZWl0 aGVyIGJ5IHRoZWlyIHBoeXNpY2FsCisgICAgICAgICAgICAgICAgICAgICAqIGFkZHJlc3Mgb3Ig YnkgdGhlaXIgSUQuIFdoaWNoIG9uZSB0byB1c2UgaXMgYW4gSVRTCisgICAgICAgICAgICAgICAg ICAgICAqIGNob2ljZS4gU28gZGV0ZXJtaW5lIHRob3NlIHR3byB2YWx1ZXMgaGVyZSAod2hpY2gg d2UKKyAgICAgICAgICAgICAgICAgICAgICogY2FuIGRvIG9ubHkgaGVyZSBpbiBHSUN2MyBjb2Rl KSBhbmQgdGVsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICogSVRTIGNvZGUgYWJvdXQgaXQs IHNvIGl0IGNhbiB1c2UgdGhlbSBsYXRlciB0byBiZSBhYmxlCisgICAgICAgICAgICAgICAgICAg ICAqIHRvIGFkZHJlc3MgdGhvc2UgcmVkaXN0cmlidXRvcnMgYWNjb3JkaW5nbHkuCisgICAgICAg ICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICByZGlzdF9hZGRyID0gZ2ljdjMu cmRpc3RfcmVnaW9uc1tpXS5iYXNlOworICAgICAgICAgICAgICAgICAgICByZGlzdF9hZGRyICs9 IHB0ciAtIGdpY3YzLnJkaXN0X3JlZ2lvbnNbaV0ubWFwX2Jhc2U7CisgICAgICAgICAgICAgICAg ICAgIHByb2NudW0gPSAodHlwZXIgJiBHSUNSX1RZUEVSX1BST0NfTlVNX01BU0spOworICAgICAg ICAgICAgICAgICAgICBwcm9jbnVtID4+PSBHSUNSX1RZUEVSX1BST0NfTlVNX1NISUZUOworCisg ICAgICAgICAgICAgICAgICAgIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhyZGlzdF9hZGRyLCBw cm9jbnVtKTsKKwogICAgICAgICAgICAgICAgICAgICByZXQgPSBnaWN2M19scGlfaW5pdF9yZGlz dChwdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAmJiByZXQgIT0gLUVOT0RFViAp CiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTcwNCw3ICs3MjEsNyBAQCBzdGF0aWMgaW50IF9f aW5pdCBnaWN2M19wb3B1bGF0ZV9yZGlzdCh2b2lkKQogCiBzdGF0aWMgaW50IGdpY3YzX2NwdV9p bml0KHZvaWQpCiB7Ci0gICAgaW50IGk7CisgICAgaW50IGksIHJldDsKICAgICB1aW50MzJfdCBw cmlvcml0eTsKIAogICAgIC8qIFJlZ2lzdGVyIG91cnNlbHZlcyB3aXRoIHRoZSByZXN0IG9mIHRo ZSB3b3JsZCAqLwpAQCAtNzE0LDYgKzczMSwxMyBAQCBzdGF0aWMgaW50IGdpY3YzX2NwdV9pbml0 KHZvaWQpCiAgICAgaWYgKCBnaWN2M19lbmFibGVfcmVkaXN0KCkgKQogICAgICAgICByZXR1cm4g LUVOT0RFVjsKIAorICAgIGlmICggZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cygpICkKKyAgICB7Cisg ICAgICAgIHJldCA9IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHNtcF9wcm9jZXNzb3JfaWQo KSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CiAgICAgLyogU2V0IHByaW9yaXR5IG9uIFBQSSBhbmQgU0dJIGludGVycnVwdHMgKi8KICAgICBw cmlvcml0eSA9IChHSUNfUFJJX0lQSSA8PCAyNCB8IEdJQ19QUklfSVBJIDw8IDE2IHwgR0lDX1BS SV9JUEkgPDwgOCB8CiAgICAgICAgICAgICAgICAgR0lDX1BSSV9JUEkpOwpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9n aWNfdjNfZGVmcy5oCmluZGV4IDdjZGViYzUuLmIwMWI2ZWQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192 M19kZWZzLmgKQEAgLTEwMyw2ICsxMDMsOCBAQAogI2RlZmluZSBHSUNSX1RZUEVSX1BMUElTICAg ICAgICAgICAgICgxVSA8PCAwKQogI2RlZmluZSBHSUNSX1RZUEVSX1ZMUElTICAgICAgICAgICAg ICgxVSA8PCAxKQogI2RlZmluZSBHSUNSX1RZUEVSX0xBU1QgICAgICAgICAgICAgICgxVSA8PCA0 KQorI2RlZmluZSBHSUNSX1RZUEVSX1BST0NfTlVNX1NISUZUICAgIDgKKyNkZWZpbmUgR0lDUl9U WVBFUl9QUk9DX05VTV9NQVNLICAgICAoMHhmZmZmIDw8IEdJQ1JfVFlQRVJfUFJPQ19OVU1fU0hJ RlQpCiAKIC8qIEZvciBzcGVjaWZ5aW5nIHRoZSBpbm5lciBjYWNoZWFiaWxpdHkgdHlwZSBvbmx5 ICovCiAjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9uQ25CICAgICAgICAgMFVMTApkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJt L2dpY192M19pdHMuaAppbmRleCAzNTAwYjA0Mi4uZjRmM2M5YiAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNf djNfaXRzLmgKQEAgLTQyLDExICs0MiwxMSBAQAogI2RlZmluZSBHSVRTX0NUTFJfUVVJRVNDRU5U ICAgICAgICAgICAgIEJJVCgzMSkKICNkZWZpbmUgR0lUU19DVExSX0VOQUJMRSAgICAgICAgICAg ICAgICBCSVQoMCkKIAorI2RlZmluZSBHSVRTX1RZUEVSX1BUQSAgICAgICAgICAgICAgICAgIEJJ VF9VTEwoMTkpCiAjZGVmaW5lIEdJVFNfVFlQRVJfREVWSURTX1NISUZUICAgICAgICAgMTMKICNk ZWZpbmUgR0lUU19UWVBFUl9ERVZJRFNfTUFTSyAgICAgICAgICAoMHgxZlVMIDw8IEdJVFNfVFlQ RVJfREVWSURTX1NISUZUKQogI2RlZmluZSBHSVRTX1RZUEVSX0RFVklDRV9JRF9CSVRTKHIpICAg ICgoKHIgJiBHSVRTX1RZUEVSX0RFVklEU19NQVNLKSA+PiBcCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdJVFNfVFlQRVJfREVWSURTX1NISUZUKSArIDEp Ci0KICNkZWZpbmUgR0lUU19UWVBFUl9JREJJVFNfU0hJRlQgICAgICAgICA4CiAjZGVmaW5lIEdJ VFNfVFlQRVJfSURCSVRTX01BU0sgICAgICAgICAgKDB4MWZVTCA8PCBHSVRTX1RZUEVSX0lEQklU U19TSElGVCkKICNkZWZpbmUgR0lUU19UWVBFUl9FVkVOVF9JRF9CSVRTKHIpICAgICAoKChyICYg R0lUU19UWVBFUl9JREJJVFNfTUFTSykgPj4gXApAQCAtODYsOSArODYsMjYgQEAKIAogI2RlZmlu ZSBHSVRTX0NCQVNFUl9TSVpFX01BU0sgICAgICAgICAgIDB4ZmYKIAorLyogSVRTIGNvbW1hbmQg ZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgSVRTX0NNRF9TSVpFICAgICAgICAgICAgICAgICAgICAz MgorCisjZGVmaW5lIEdJVFNfQ01EX01PVkkgICAgICAgICAgICAgICAgICAgMHgwMQorI2RlZmlu ZSBHSVRTX0NNRF9JTlQgICAgICAgICAgICAgICAgICAgIDB4MDMKKyNkZWZpbmUgR0lUU19DTURf Q0xFQVIgICAgICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIEdJVFNfQ01EX1NZTkMgICAgICAg ICAgICAgICAgICAgMHgwNQorI2RlZmluZSBHSVRTX0NNRF9NQVBEICAgICAgICAgICAgICAgICAg IDB4MDgKKyNkZWZpbmUgR0lUU19DTURfTUFQQyAgICAgICAgICAgICAgICAgICAweDA5CisjZGVm aW5lIEdJVFNfQ01EX01BUFRJICAgICAgICAgICAgICAgICAgMHgwYQorI2RlZmluZSBHSVRTX0NN RF9NQVBJICAgICAgICAgICAgICAgICAgIDB4MGIKKyNkZWZpbmUgR0lUU19DTURfSU5WICAgICAg ICAgICAgICAgICAgICAweDBjCisjZGVmaW5lIEdJVFNfQ01EX0lOVkFMTCAgICAgICAgICAgICAg ICAgMHgwZAorI2RlZmluZSBHSVRTX0NNRF9NT1ZBTEwgICAgICAgICAgICAgICAgIDB4MGUKKyNk ZWZpbmUgR0lUU19DTURfRElTQ0FSRCAgICAgICAgICAgICAgICAweDBmCisKICNpbmNsdWRlIDx4 ZW4vZGV2aWNlX3RyZWUuaD4KIAogI2RlZmluZSBIT1NUX0lUU19GTFVTSF9DTURfUVVFVUUgICAg ICAgICgxVSA8PCAwKQorI2RlZmluZSBIT1NUX0lUU19VU0VTX1BUQSAgICAgICAgICAgICAgICgx VSA8PCAxKQogCiAvKiBkYXRhIHN0cnVjdHVyZSBmb3IgZWFjaCBoYXJkd2FyZSBJVFMgKi8KIHN0 cnVjdCBob3N0X2l0cyB7CkBAIC0xMDAsNiArMTE3LDcgQEAgc3RydWN0IGhvc3RfaXRzIHsKICAg ICB1bnNpZ25lZCBpbnQgZGV2aWRfYml0czsKICAgICB1bnNpZ25lZCBpbnQgZXZpZF9iaXRzOwog ICAgIHVuc2lnbmVkIGludCBpdHRlX3NpemU7CisgICAgc3BpbmxvY2tfdCBjbWRfbG9jazsKICAg ICB2b2lkICpjbWRfYnVmOwogICAgIHVuc2lnbmVkIGludCBmbGFnczsKIH07CkBAIC0xMjAsNiAr MTM4LDEzIEBAIGludCBnaWN2M19scGlfaW5pdF9yZGlzdCh2b2lkIF9faW9tZW0gKiByZGlzdF9i YXNlKTsKIGludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IG5yX2xwaXMp OwogaW50IGdpY3YzX2l0c19pbml0KHZvaWQpOwogCisvKiBTdG9yZSB0aGUgcGh5c2ljYWwgYWRk cmVzcyBhbmQgSUQgZm9yIGVhY2ggcmVkaXN0cmlidXRvciBhcyByZWFkIGZyb20gRFQuICovCit2 b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90IGFkZHJlc3MsIHVuc2lnbmVkIGlu dCByZWRpc3RfaWQpOwordWludDY0X3QgZ2ljdjNfZ2V0X3JlZGlzdF9hZGRyZXNzKHVuc2lnbmVk IGludCBjcHUsIGJvb2wgdXNlX3B0YSk7CisKKy8qIE1hcCBhIGNvbGxlY3Rpb24gZm9yIHRoaXMg aG9zdCBDUFUgdG8gZWFjaCBob3N0IElUUy4gKi8KK2ludCBnaWN2M19pdHNfc2V0dXBfY29sbGVj dGlvbih1bnNpZ25lZCBpbnQgY3B1KTsKKwogI2Vsc2UKIAogc3RhdGljIExJU1RfSEVBRChob3N0 X2l0c19saXN0KTsKQEAgLTE0OCw2ICsxNzMsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2ljdjNf aXRzX2luaXQodm9pZCkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGdp Y3YzX3NldF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90IGFkZHJlc3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWRpc3RfaWQpCit7Cit9 CisKK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHVuc2lnbmVk IGludCBjcHUpCit7CisgICAgLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIHdpdGhvdXQgYW4g SVRTLiAqLworICAgIEJVRygpOworfQorCiAjZW5kaWYgLyogQ09ORklHX0hBU19JVFMgKi8KIAog I2VuZGlmCi0tIAoyLjkuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=