From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH] AMD IOMMU: Introduce support for IVHD block type 11h Date: Fri, 13 May 2016 14:54:34 -0500 Message-ID: <1463169274-17225-1-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org, jbeulich@suse.com Cc: Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org RnJvbTogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxTdXJhdmVlLlN1dGhpa3VscGFuaXRAYW1kLmNv bT4KCkFsb25nIHdpdGggdGhlIElWSEQgYmxvY2sgdHlwZSAxMGgsIG5ld2VyIEFNRCBwbGF0Zm9y bXMgYWxzbyBjb21lIHdpdGgKdHlwZXMgMTFoLCB3aGljaCBpcyBhIHN1cGVyc2V0IG9mIHRoZSBv bGRlciBvbmUuIEhhdmluZyBtdWx0aXBsZSBJVkhECmJsb2NrIHR5cGVzIGluIHRoZSBzYW1lIHBs YXRmb3JtIGFsbG93cyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9mIG5ld2VyCnN5c3RlbXMgdG8g d29yayB3aXRoIGV4aXN0aW5nIGRyaXZlcnMuICBUaGUgZHJpdmVyIHNob3VsZCBvbmx5IHBhcnNl CnRoZSBoaWdoZXN0LWxldmVsIChuZXdlc3QpIHR5cGUgb2YgSVZIRCBibG9jayB0aGF0IGl0IGNh biBzdXBwb3J0LgpIb3dldmVyLCB0aGUgY3VycmVudCBkcml2ZXIgcmV0dXJucyBlcnJvciB3aGVu IGVuY291bnRlcnMgd2l0aCB1bmtub3duCklWSEQgYmxvY2sgdHlwZS4gVGhpcyBjYXVzZXMgZXhp c3RpbmcgZHJpdmVyIHRvIHVubmVjZXNzYXJpbHkgZmFpbCBJT01NVQppbml0aWFsaXphdGlvbiBv biBuZXcgc3lzdGVtcy4KClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBsb2dpYywgd2hpY2gg c2NhbnMgdGhyb3VnaCBJVlJTIHRhYmxlIGxvb2tpbmcKZm9yIHRoZSBoaWdoZXN0LWxldmVsIHN1 cHBvcnN0ZWQgSVZIRCBibG9jayB0eXBlLiBJdCBhbHNvIGFkZHMgc3VwcG9ydApmb3IgdGhlIG5l dyBJVkhEIGJsb2NrIHR5cGUgMTFoLiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBJVkhEIHR5 cGUgMTFoCmNhbiBiZSBmb3VuZCBpbiB0aGUgQU1EIEkvTyBWaXJ0dWFsaXphdGlvbiBUZWNobm9s b2d5IChJT01NVSkgU3BlY2lmaWNhdGlvbgpyZXYgMi42Mi4KCiAgICBodHRwOi8vc3VwcG9ydC5h bWQuY29tL1RlY2hEb2NzLzQ4ODgyX0lPTU1VLnBkZgoKU2lnbmVkLW9mZi1ieTogU3VyYXZlZSBT dXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KLS0tCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfYWNwaS5jICAgICAgfCAxMzMgKysrKysrKysrKysr KysrKystLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMg ICAgICB8ICAgNiArLQogeGVuL2luY2x1ZGUvYWNwaS9hY3RibDIuaCAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L2FtZC1pb21tdS5oICAgICAgICAgICAg ICAgfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5o IHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9hY3Bp LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfYWNwaS5jCmluZGV4IDc5YzFm OGMuLjJhMmQ2MWIgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21t dV9hY3BpLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2FjcGkuYwpA QCAtODIxLDEzICs4MjEsMjMgQEAgc3RhdGljIHUxNiBfX2luaXQgcGFyc2VfaXZoZF9kZXZpY2Vf c3BlY2lhbCgKICAgICByZXR1cm4gZGV2X2xlbmd0aDsKIH0KIAorc3RhdGljIGlubGluZSBpbnQg Z2V0X2l2aGRfaGVhZGVyX3NpemUoY29uc3Qgc3RydWN0IGFjcGlfaXZyc19oYXJkd2FyZSAqaXZo ZF9ibG9jaykKK3sKKyAgICBpZiAoIGl2aGRfYmxvY2stPmhlYWRlci50eXBlID09IEFDUElfSVZS U19UWVBFX0hBUkRXQVJFKQorICAgICAgICByZXR1cm4gMjQ7CisgICAgaWYgKCBpdmhkX2Jsb2Nr LT5oZWFkZXIudHlwZSA9PSBBQ1BJX0lWUlNfVFlQRV9IQVJEV0FSRV8xMUgpCisgICAgICAgIHJl dHVybiA0MDsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBfX2luaXQgcGFyc2VfaXZo ZF9ibG9jayhjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hhcmR3YXJlICppdmhkX2Jsb2NrKQogewog ICAgIGNvbnN0IHVuaW9uIGFjcGlfaXZoZF9kZXZpY2UgKml2aGRfZGV2aWNlOwogICAgIHUxNiBi bG9ja19sZW5ndGgsIGRldl9sZW5ndGg7CisgICAgaW50IGhkcl9zaXplID0gZ2V0X2l2aGRfaGVh ZGVyX3NpemUoaXZoZF9ibG9jaykgOwogICAgIHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11OwogCi0g ICAgaWYgKCBpdmhkX2Jsb2NrLT5oZWFkZXIubGVuZ3RoIDwgc2l6ZW9mKCppdmhkX2Jsb2NrKSAp CisgICAgaWYgKCBpdmhkX2Jsb2NrLT5oZWFkZXIubGVuZ3RoIDwgaGRyX3NpemUgKQogICAgIHsK ICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJVkhEIEVycm9yOiBJbnZhbGlkIEJsb2NrIExlbmd0 aCFcbiIpOwogICAgICAgICByZXR1cm4gLUVOT0RFVjsKQEAgLTg0NSw3ICs4NTUsNyBAQCBzdGF0 aWMgaW50IF9faW5pdCBwYXJzZV9pdmhkX2Jsb2NrKGNvbnN0IHN0cnVjdCBhY3BpX2l2cnNfaGFy ZHdhcmUgKml2aGRfYmxvY2spCiAgICAgfQogCiAgICAgLyogcGFyc2UgRGV2aWNlIEVudHJpZXMg Ki8KLSAgICBibG9ja19sZW5ndGggPSBzaXplb2YoKml2aGRfYmxvY2spOworICAgIGJsb2NrX2xl bmd0aCA9IGhkcl9zaXplOwogICAgIHdoaWxlICggaXZoZF9ibG9jay0+aGVhZGVyLmxlbmd0aCA+ PQogICAgICAgICAgICAgKGJsb2NrX2xlbmd0aCArIHNpemVvZihzdHJ1Y3QgYWNwaV9pdnJzX2Rl X2hlYWRlcikpICkKICAgICB7CkBAIC05MDEsNyArOTExLDcgQEAgc3RhdGljIGludCBfX2luaXQg cGFyc2VfaXZoZF9ibG9jayhjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hhcmR3YXJlICppdmhkX2Js b2NrKQogICAgICAgICAgICAgICAgIGl2aGRfYmxvY2stPmhlYWRlci5sZW5ndGgsIGJsb2NrX2xl bmd0aCwgaW9tbXUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg ICAgICAgICBBTURfSU9NTVVfREVCVUcoIklWSEQgRXJyb3I6IEludmFsaWQgRGV2aWNlIFR5cGUh XG4iKTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSVZIRCBFcnJvcjogJXM6IEludmFs aWQgRGV2aWNlIFR5cGUhXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICBkZXZfbGVuZ3RoID0g MDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC05MTQsMzQgKzkyNCw2IEBAIHN0 YXRpYyBpbnQgX19pbml0IHBhcnNlX2l2aGRfYmxvY2soY29uc3Qgc3RydWN0IGFjcGlfaXZyc19o YXJkd2FyZSAqaXZoZF9ibG9jaykKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBfX2lu aXQgcGFyc2VfaXZyc19ibG9jayhjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hlYWRlciAqaXZyc19i bG9jaykKLXsKLSAgICBjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hhcmR3YXJlICppdmhkX2Jsb2Nr OwotICAgIGNvbnN0IHN0cnVjdCBhY3BpX2l2cnNfbWVtb3J5ICppdm1kX2Jsb2NrOwotCi0gICAg c3dpdGNoICggaXZyc19ibG9jay0+dHlwZSApCi0gICAgewotICAgIGNhc2UgQUNQSV9JVlJTX1RZ UEVfSEFSRFdBUkU6Ci0gICAgICAgIGl2aGRfYmxvY2sgPSBjb250YWluZXJfb2YoaXZyc19ibG9j aywgY29uc3Qgc3RydWN0IGFjcGlfaXZyc19oYXJkd2FyZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoZWFkZXIpOwotICAgICAgICByZXR1cm4gcGFyc2VfaXZoZF9ibG9jayhp dmhkX2Jsb2NrKTsKLQotICAgIGNhc2UgQUNQSV9JVlJTX1RZUEVfTUVNT1JZX0FMTDoKLSAgICBj YXNlIEFDUElfSVZSU19UWVBFX01FTU9SWV9PTkU6Ci0gICAgY2FzZSBBQ1BJX0lWUlNfVFlQRV9N RU1PUllfUkFOR0U6Ci0gICAgY2FzZSBBQ1BJX0lWUlNfVFlQRV9NRU1PUllfSU9NTVU6Ci0gICAg ICAgIGl2bWRfYmxvY2sgPSBjb250YWluZXJfb2YoaXZyc19ibG9jaywgY29uc3Qgc3RydWN0IGFj cGlfaXZyc19tZW1vcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVy KTsKLSAgICAgICAgcmV0dXJuIHBhcnNlX2l2bWRfYmxvY2soaXZtZF9ibG9jayk7Ci0KLSAgICBk ZWZhdWx0OgotICAgICAgICBBTURfSU9NTVVfREVCVUcoIklWUlMgRXJyb3I6IEludmFsaWQgQmxv Y2sgVHlwZSFcbiIpOwotICAgICAgICByZXR1cm4gLUVOT0RFVjsKLSAgICB9Ci0KLSAgICByZXR1 cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgX19pbml0IGR1bXBfYWNwaV90YWJsZV9oZWFkZXIoc3Ry dWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkKIHsKICAgICBpbnQgaTsKQEAgLTk3OCw2ICs5 NjAsMjEgQEAgc3RhdGljIHZvaWQgX19pbml0IGR1bXBfYWNwaV90YWJsZV9oZWFkZXIoc3RydWN0 IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkKIAogfQogCisjZGVmaW5lIHRvX2l2aGRfYmxvY2so aGRyKSBcCisgICAgKCBjb250YWluZXJfb2YoaGRyLCBjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hh cmR3YXJlLCBoZWFkZXIpICkKKyNkZWZpbmUgdG9faXZtZF9ibG9jayhoZHIpIFwKKyAgICAoY29u dGFpbmVyX29mKGhkciwgY29uc3Qgc3RydWN0IGFjcGlfaXZyc19tZW1vcnksIGhlYWRlcikgKQor CisjZGVmaW5lIGlzX2l2aGRfYmxvY2soeCkgXAorICAgICggeCA9PSBBQ1BJX0lWUlNfVFlQRV9I QVJEV0FSRSB8fCBcCisgICAgICB4ID09IEFDUElfSVZSU19UWVBFX0hBUkRXQVJFXzExSCApCisK KyNkZWZpbmUgaXNfaXZtZF9ibG9jayh4KSBcCisgICAgKCB4ID09IEFDUElfSVZSU19UWVBFX01F TU9SWV9BTEwgfHwgXAorICAgICAgeCA9PSBBQ1BJX0lWUlNfVFlQRV9NRU1PUllfT05FIHx8IFwK KyAgICAgIHggPT0gQUNQSV9JVlJTX1RZUEVfTUVNT1JZX1JBTkdFIHx8IFwKKyAgICAgIHggPT0g QUNQSV9JVlJTX1RZUEVfTUVNT1JZX0lPTU1VICkKKwogc3RhdGljIGludCBfX2luaXQgcGFyc2Vf aXZyc190YWJsZShzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKQogewogICAgIGNvbnN0 IHN0cnVjdCBhY3BpX2l2cnNfaGVhZGVyICppdnJzX2Jsb2NrOwpAQCAtMTAxMCw3ICsxMDA3LDEw IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX2l2cnNfdGFibGUoc3RydWN0IGFjcGlfdGFibGVf aGVhZGVyICp0YWJsZSkKICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwogICAgICAgICB9CiAK LSAgICAgICAgZXJyb3IgPSBwYXJzZV9pdnJzX2Jsb2NrKGl2cnNfYmxvY2spOworICAgICAgICBp ZiAoIGl2cnNfYmxvY2stPnR5cGUgPT0gaXZoZF90eXBlICkKKyAgICAgICAgICAgIGVycm9yID0g cGFyc2VfaXZoZF9ibG9jayh0b19pdmhkX2Jsb2NrKGl2cnNfYmxvY2spKTsKKyAgICAgICAgZWxz ZSBpZiAoIGlzX2l2bWRfYmxvY2sgKGl2cnNfYmxvY2stPnR5cGUpICkKKyAgICAgICAgICAgIGVy cm9yID0gcGFyc2VfaXZtZF9ibG9jayh0b19pdm1kX2Jsb2NrKGl2cnNfYmxvY2spKTsKICAgICAg ICAgbGVuZ3RoICs9IGl2cnNfYmxvY2stPmxlbmd0aDsKICAgICB9CiAKQEAgLTEwODMsOSArMTA4 Myw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGRldGVjdF9pb21tdV9hY3BpKHN0cnVjdCBhY3BpX3Rh YmxlX2hlYWRlciAqdGFibGUpCiAgICAgICAgIGlmICggdGFibGUtPmxlbmd0aCA8IChsZW5ndGgg KyBpdnJzX2Jsb2NrLT5sZW5ndGgpICkKICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwogICAg ICAgICBpZiAoIGl2cnNfYmxvY2stPnR5cGUgPT0gQUNQSV9JVlJTX1RZUEVfSEFSRFdBUkUgJiYK LSAgICAgICAgICAgICBhbWRfaW9tbXVfZGV0ZWN0X29uZV9hY3BpKAotICAgICAgICAgICAgICAg ICBjb250YWluZXJfb2YoaXZyc19ibG9jaywgY29uc3Qgc3RydWN0IGFjcGlfaXZyc19oYXJkd2Fy ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcikpICE9IDAgKQorICAgICAg ICAgICAgIGFtZF9pb21tdV9kZXRlY3Rfb25lX2FjcGkodG9faXZoZF9ibG9jayhpdnJzX2Jsb2Nr KSkgIT0gMCApCiAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKICAgICAgICAgbGVuZ3RoICs9 IGl2cnNfYmxvY2stPmxlbmd0aDsKICAgICB9CkBAIC0xMTAyLDE1ICsxMTAwLDE2IEBAIHN0YXRp YyBpbnQgX19pbml0IGdldF9sYXN0X2JkZl9pdmhkKAogewogICAgIGNvbnN0IHVuaW9uIGFjcGlf aXZoZF9kZXZpY2UgKml2aGRfZGV2aWNlOwogICAgIHUxNiBibG9ja19sZW5ndGgsIGRldl9sZW5n dGg7CisgICAgaW50IGhkcl9zaXplID0gZ2V0X2l2aGRfaGVhZGVyX3NpemUoaXZoZF9ibG9jaykg OwogICAgIGludCBsYXN0X2JkZiA9IDA7CiAKLSAgICBpZiAoIGl2aGRfYmxvY2stPmhlYWRlci5s ZW5ndGggPCBzaXplb2YoKml2aGRfYmxvY2spICkKKyAgICBpZiAoIGl2aGRfYmxvY2stPmhlYWRl ci5sZW5ndGggPCBoZHJfc2l6ZSApCiAgICAgewogICAgICAgICBBTURfSU9NTVVfREVCVUcoIklW SEQgRXJyb3I6IEludmFsaWQgQmxvY2sgTGVuZ3RoIVxuIik7CiAgICAgICAgIHJldHVybiAtRU5P REVWOwogICAgIH0KIAotICAgIGJsb2NrX2xlbmd0aCA9IHNpemVvZigqaXZoZF9ibG9jayk7Cisg ICAgYmxvY2tfbGVuZ3RoID0gaGRyX3NpemU7CiAgICAgd2hpbGUgKCBpdmhkX2Jsb2NrLT5oZWFk ZXIubGVuZ3RoID49CiAgICAgICAgICAgICAoYmxvY2tfbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBh Y3BpX2l2cnNfZGVfaGVhZGVyKSkgKQogICAgIHsKQEAgLTExNTMsNyArMTE1Miw3IEBAIHN0YXRp YyBpbnQgX19pbml0IGdldF9sYXN0X2JkZl9pdmhkKAogICAgICAgICAgICAgZGV2X2xlbmd0aCA9 IHNpemVvZihpdmhkX2RldmljZS0+c3BlY2lhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSVZIRCBFcnJvcjogSW52 YWxpZCBEZXZpY2UgVHlwZSFcbiIpOworICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJVkhE IEVycm9yOiAlczogSW52YWxpZCBEZXZpY2UgVHlwZSFcbiIsIF9fZnVuY19fKTsKICAgICAgICAg ICAgIGRldl9sZW5ndGggPSAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEx NzcsMTIgKzExNzYsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBnZXRfbGFzdF9iZGZfYWNwaShzdHJ1 Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKQogICAgICAgICBpdnJzX2Jsb2NrID0gKHN0cnVj dCBhY3BpX2l2cnNfaGVhZGVyICopKCh1OCAqKXRhYmxlICsgbGVuZ3RoKTsKICAgICAgICAgaWYg KCB0YWJsZS0+bGVuZ3RoIDwgKGxlbmd0aCArIGl2cnNfYmxvY2stPmxlbmd0aCkgKQogICAgICAg ICAgICAgcmV0dXJuIC1FTk9ERVY7Ci0gICAgICAgIGlmICggaXZyc19ibG9jay0+dHlwZSA9PSBB Q1BJX0lWUlNfVFlQRV9IQVJEV0FSRSApCisgICAgICAgIGlmICggaXZyc19ibG9jay0+dHlwZSA9 PSBpdmhkX3R5cGUgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcmV0ID0gZ2V0X2xhc3Rf YmRmX2l2aGQoCi0gICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZihpdnJzX2Jsb2NrLCBjb25z dCBzdHJ1Y3QgYWNwaV9pdnJzX2hhcmR3YXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGVhZGVyKSk7Ci0KKyAgICAgICAgICAgIGludCByZXQgPSBnZXRfbGFzdF9iZGZfaXZoZCh0 b19pdmhkX2Jsb2NrKGl2cnNfYmxvY2spKTsKICAgICAgICAgICAgIGlmICggcmV0IDwgMCApCiAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgIFVQREFURV9MQVNUX0JERihy ZXQpOwpAQCAtMTIxMiwzICsxMjA4LDU0IEBAIGludCBfX2luaXQgYW1kX2lvbW11X3VwZGF0ZV9p dnJzX21hcHBpbmdfYWNwaSh2b2lkKQogCiAgICAgcmV0dXJuIGFjcGlfdGFibGVfcGFyc2UoQUNQ SV9TSUdfSVZSUywgcGFyc2VfaXZyc190YWJsZSk7CiB9CisKK3N0YXRpYyBpbnQgX19pbml0Citn ZXRfc3VwcG9ydGVkX2l2aGRfdHlwZShzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlKQor eworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX2l2 cnMpOworICAgIGNvbnN0IHN0cnVjdCBhY3BpX2l2cnNfaGVhZGVyICppdnJzX2Jsb2NrLCAqYmxr ID0gTlVMTDsKKworICAgIHdoaWxlICggdGFibGUtPmxlbmd0aCA+IChsZW5ndGggKyBzaXplb2Yo Kml2cnNfYmxvY2spKSApCisgICAgeworICAgICAgICBpdnJzX2Jsb2NrID0gKHN0cnVjdCBhY3Bp X2l2cnNfaGVhZGVyICopKCh1OCAqKXRhYmxlICsgbGVuZ3RoKTsKKworICAgICAgICBpZiAoIHRh YmxlLT5sZW5ndGggPCAobGVuZ3RoICsgaXZyc19ibG9jay0+bGVuZ3RoKSApCisgICAgICAgIHsK KyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSVZSUyBFcnJvcjogIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJUYWJsZSBMZW5ndGggRXhjZWVkZWQ6ICUjeCAtPiAlI2x4XG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5sZW5ndGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxlbmd0aCArIGl2cnNfYmxvY2stPmxlbmd0aCkpOworICAgICAgICAg ICAgcmV0dXJuIC1FTk9ERVY7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIGlzX2l2aGRfYmxv Y2sgKGl2cnNfYmxvY2stPnR5cGUpICkKKyAgICAgICAgeworICAgICAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJJVlJTIEJsb2NrOiBGb3VuZCB0eXBlICUjeCBmbGFncyAlI3ggbGVuICUjeCBpZCAl I3hcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZyc19ibG9jay0+dHlwZSwgaXZy c19ibG9jay0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZyc19ibG9jay0+ bGVuZ3RoLCBpdnJzX2Jsb2NrLT5kZXZpY2VfaWQpOworICAgICAgICAgICAgaWYgKCBpdnJzX2Js b2NrLT50eXBlID4gSVZIRF9ISUdIRVNUX1NVUFBPUlRfVFlQRSApCisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICBibGsgPSBpdnJzX2Jsb2NrOworICAgICAgICB9CisKKyAgICAg ICAgbGVuZ3RoICs9IGl2cnNfYmxvY2stPmxlbmd0aDsKKyAgICB9CisKKyAgICBpZiAoICFibGsg KQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIkNhbm5vdCBmaW5kIHN1cHBvcnRl ZCBJVkhEIHR5cGUuXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAg QU1EX0lPTU1VX0RFQlVHKCJVc2luZyBJVkhEIHR5cGUgJSN4XG4iLCBibGstPnR5cGUpOworCisg ICAgcmV0dXJuIGJsay0+dHlwZTsKK30KKworaW50IF9faW5pdCBhbWRfaW9tbXVfZ2V0X3N1cHBv cnRlZF9pdmhkX3R5cGUodm9pZCkKK3sKKyAgICBpZiAoIHVubGlrZWx5KGFjcGlfZ2JsX0ZBRFQu Ym9vdF9mbGFncyAmIEFDUElfRkFEVF9OT19NU0kpICkKKyAgICAgICAgcmV0dXJuIC1FUEVSTTsK KworICAgIHJldHVybiBhY3BpX3RhYmxlX3BhcnNlKEFDUElfU0lHX0lWUlMsIGdldF9zdXBwb3J0 ZWRfaXZoZF90eXBlKTsKK30KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9pb21tdV9pbml0LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5j CmluZGV4IGQ5MGEyZDIuLmQ3NmM5OTMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9pb21tdV9pbml0LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lv bW11X2luaXQuYwpAQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IF9faW5pdGRhdGEgbnJfYW1k X2lvbW11czsKIHN0YXRpYyBzdHJ1Y3QgdGFza2xldCBhbWRfaW9tbXVfaXJxX3Rhc2tsZXQ7CiAK IHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IGl2cnNfYmRmX2VudHJpZXM7Cit1bnNpZ25lZCBp bnQgX19yZWFkX21vc3RseSBpdmhkX3R5cGU7CiBzdGF0aWMgc3RydWN0IHJhZGl4X3RyZWVfcm9v dCBpdnJzX21hcHM7CiBzdHJ1Y3QgbGlzdF9oZWFkIGFtZF9pb21tdV9oZWFkOwogc3RydWN0IHRh YmxlX3N0cnVjdCBkZXZpY2VfdGFibGU7CkBAIC0xMjMzLDggKzEyMzQsMTEgQEAgaW50IF9faW5p dCBhbWRfaW9tbXVfaW5pdCh2b2lkKQogICAgICAgICAgYW1kX3NwNTEwMF9lcnJhdHVtMjgoKSAp CiAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OwogCi0gICAgaXZyc19iZGZfZW50cmllcyA9IGFtZF9p b21tdV9nZXRfaXZyc19kZXZfZW50cmllcygpOworICAgIGl2aGRfdHlwZSA9IGFtZF9pb21tdV9n ZXRfc3VwcG9ydGVkX2l2aGRfdHlwZSgpOworICAgIGlmICggIWl2aGRfdHlwZSApCisgICAgICAg IGdvdG8gZXJyb3Jfb3V0OwogCisgICAgaXZyc19iZGZfZW50cmllcyA9IGFtZF9pb21tdV9nZXRf aXZyc19kZXZfZW50cmllcygpOwogICAgIGlmICggIWl2cnNfYmRmX2VudHJpZXMgKQogICAgICAg ICBnb3RvIGVycm9yX291dDsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYWNwaS9hY3RibDIu aCBiL3hlbi9pbmNsdWRlL2FjcGkvYWN0YmwyLmgKaW5kZXggODdiYzZiMy4uNjk0ZDg3ZSAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYWNwaS9hY3RibDIuaAorKysgYi94ZW4vaW5jbHVkZS9hY3Bp L2FjdGJsMi5oCkBAIC01MjcsMTIgKzUyNywxNSBAQCBzdHJ1Y3QgYWNwaV9pdnJzX2hlYWRlciB7 CiAKIGVudW0gYWNwaV9pdnJzX3R5cGUgewogCUFDUElfSVZSU19UWVBFX0hBUkRXQVJFID0gMHgx MCwKKwlBQ1BJX0lWUlNfVFlQRV9IQVJEV0FSRV8xMUggPSAweDExLAogCUFDUElfSVZSU19UWVBF X01FTU9SWV9BTEwgLyogX01FTU9SWTEgKi8gPSAweDIwLAogCUFDUElfSVZSU19UWVBFX01FTU9S WV9PTkUgLyogX01FTU9SWTIgKi8gPSAweDIxLAogCUFDUElfSVZSU19UWVBFX01FTU9SWV9SQU5H RSAvKiBfTUVNT1JZMyAqLyA9IDB4MjIsCiAJQUNQSV9JVlJTX1RZUEVfTUVNT1JZX0lPTU1VID0g MHgyMwogfTsKIAorI2RlZmluZSBJVkhEX0hJR0hFU1RfU1VQUE9SVF9UWVBFCUFDUElfSVZSU19U WVBFX0hBUkRXQVJFXzExSAorCiAvKiBNYXNrcyBmb3IgRmxhZ3MgZmllbGQgYWJvdmUgZm9yIElW SEQgc3VidGFibGUgKi8KIAogI2RlZmluZSBBQ1BJX0lWSERfVFRfRU5BQkxFICAgICAgICAgKDEp CkBAIC01NjAsNyArNTYzLDkgQEAgc3RydWN0IGFjcGlfaXZyc19oYXJkd2FyZSB7CiAJdTY0IGJh c2VfYWRkcmVzczsJLyogSU9NTVUgY29udHJvbCByZWdpc3RlcnMgKi8KIAl1MTYgcGNpX3NlZ21l bnRfZ3JvdXA7CiAJdTE2IGluZm87CQkvKiBNU0kgbnVtYmVyIGFuZCB1bml0IElEICovCi0JdTMy IHJlc2VydmVkOworCXUzMiBpb21tdV9hdHRyOworCXU2NCBlZnJfaW1hZ2U7CQkvKiBFeHRkIGZl YXR1cmUgcmVnaXN0ZXIgKi8KKwl1NjQgcmVzZXJ2ZWQ7CiB9OwogCiAvKiBNYXNrcyBmb3IgSW5m byBmaWVsZCBhYm92ZSAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbWQtaW9t bXUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYW1kLWlvbW11LmgKaW5kZXggZTlmYTljMi4uNzIy ZTcyOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbWQtaW9tbXUuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2FtZC1pb21tdS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RydWN0 IGl2cnNfbWFwcGluZ3MgewogfTsKIAogZXh0ZXJuIHVuc2lnbmVkIGludCBpdnJzX2JkZl9lbnRy aWVzOworZXh0ZXJuIHVuc2lnbmVkIGludCBpdmhkX3R5cGU7CiAKIHN0cnVjdCBpdnJzX21hcHBp bmdzICpnZXRfaXZyc19tYXBwaW5ncyh1MTYgc2VnKTsKIGludCBpdGVyYXRlX2l2cnNfbWFwcGlu Z3MoaW50ICgqKSh1MTYgc2VnLCBzdHJ1Y3QgaXZyc19tYXBwaW5ncyAqKSk7CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgKaW5kZXggOWM1MTE3Mi4uZTYw NjVkMyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1w cm90by5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8u aApAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgYWNwaV9pdnJzX2hhcmR3YXJlOwogCiAvKiBhbWQt aW9tbXUtZGV0ZWN0IGZ1bmN0aW9ucyAqLwogaW50IGFtZF9pb21tdV9nZXRfaXZyc19kZXZfZW50 cmllcyh2b2lkKTsKK2ludCBhbWRfaW9tbXVfZ2V0X3N1cHBvcnRlZF9pdmhkX3R5cGUodm9pZCk7 CiBpbnQgYW1kX2lvbW11X2RldGVjdF9vbmVfYWNwaShjb25zdCBzdHJ1Y3QgYWNwaV9pdnJzX2hh cmR3YXJlICopOwogaW50IGFtZF9pb21tdV9kZXRlY3RfYWNwaSh2b2lkKTsKIHZvaWQgZ2V0X2lv bW11X2ZlYXR1cmVzKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11KTsKLS0gCjEuOS4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK