From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v2 4/7] xen/arm: Move sysreg emulation outside of traps.c Date: Tue, 12 Sep 2017 11:36:19 +0100 Message-ID: <20170912103622.18562-5-julien.grall@arm.com> References: <20170912103622.18562-1-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170912103622.18562-1-julien.grall@arm.com> 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 Cc: bhupinder.thakur@linaro.org, Julien Grall , sstabellini@kernel.org List-Id: xen-devel@lists.xenproject.org VGhlIHN5c3JlZyBlbXVsYXRpb24gaXMgNjQtYml0IHNwZWNpZmljIGFuZCBzdXJyb3VuZGVkIGJ5 ICNpZmRlZi4gTW92ZQp0aGVtIGluIGEgc2VwYXJhdGUgZmlsZSBhcm0vYXJtNjQvdnN5c3JlZy5j IHRvIHNocmluayBkb3duIGEgYml0IHRyYXBzLmMKCk5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKU2ln bmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KLS0tCiB4ZW4v YXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUgICAgICAgfCAgIDEgKwogeGVuL2FyY2gvYXJtL2FybTY0 L3ZzeXNyZWcuYyAgICAgIHwgMjI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB4ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgICAgICAgfCAxOTggLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vYXJtNjQvdHJhcHMuaCB8 ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAxOTggZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2FybTY0L3ZzeXNyZWcuYwoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9hcm02 NC9NYWtlZmlsZQppbmRleCAxNDliNmIzOTAxLi43MThmZTQ0NDU1IDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxl CkBAIC0xMCwzICsxMCw0IEBAIG9iai0kKENPTkZJR19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5v CiBvYmoteSArPSBzbXBib290Lm8KIG9iai15ICs9IHRyYXBzLm8KIG9iai15ICs9IHZmcC5vCitv YmoteSArPSB2c3lzcmVnLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm02NC92c3lzcmVn LmMgYi94ZW4vYXJjaC9hcm0vYXJtNjQvdnN5c3JlZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmM1N2FjMTI1MDMKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9h cm0vYXJtNjQvdnN5c3JlZy5jCkBAIC0wLDAgKzEsMjI5IEBACisvKgorICogeGVuL2FyY2gvYXJt L2FybTY0L3N5c3JlZy5jCisgKgorICogRW11bGF0ZSBzeXN0ZW0gcmVnaXN0ZXJzIHRyYXBwZWQu CisgKgorICogQ29weXJpZ2h0IChjKSAyMDExIENpdHJpeCBTeXN0ZW1zLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5j bHVkZSA8eGVuL3NjaGVkLmg+CisKKyNpbmNsdWRlIDxhc20vY3VycmVudC5oPgorI2luY2x1ZGUg PGFzbS9yZWdzLmg+CisjaW5jbHVkZSA8YXNtL3RyYXBzLmg+CisjaW5jbHVkZSA8YXNtL3Z0aW1l ci5oPgorCit2b2lkIGRvX3N5c3JlZyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKKyAgICAg ICAgICAgICAgIGNvbnN0IHVuaW9uIGhzciBoc3IpCit7CisgICAgaW50IHJlZ2lkeCA9IGhzci5z eXNyZWcucmVnOworICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKKworICAgIHN3aXRjaCAo IGhzci5iaXRzICYgSFNSX1NZU1JFR19SRUdTX01BU0sgKQorICAgIHsKKyAgICAvKgorICAgICAq IEhDUl9FTDIuVEFDUgorICAgICAqCisgICAgICogQVJNdjggKERESSAwNDg3QS5kKTogRDcuMi4x CisgICAgICovCisgICAgY2FzZSBIU1JfU1lTUkVHX0FDVExSX0VMMToKKyAgICAgICAgaWYgKCBw c3JfbW9kZV9pc191c2VyKHJlZ3MpICkKKyAgICAgICAgICAgIHJldHVybiBpbmplY3RfdW5kZWZf ZXhjZXB0aW9uKHJlZ3MsIGhzcik7CisgICAgICAgIGlmICggaHNyLnN5c3JlZy5yZWFkICkKKyAg ICAgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCByZWdpZHgsIHYtPmFyY2guYWN0bHIpOworICAg ICAgICBicmVhazsKKworICAgIC8qCisgICAgICogTURDUl9FTDIuVERSQQorICAgICAqCisgICAg ICogQVJNdjggKERESSAwNDg3QS5kKTogRDEtMTUwOCBUYWJsZSBEMS01NworICAgICAqLworICAg IGNhc2UgSFNSX1NZU1JFR19NRFJBUl9FTDE6CisgICAgICAgIHJldHVybiBoYW5kbGVfcm9fcmF6 KHJlZ3MsIHJlZ2lkeCwgaHNyLnN5c3JlZy5yZWFkLCBoc3IsIDEpOworCisgICAgLyoKKyAgICAg KiBNRENSX0VMMi5URE9TQQorICAgICAqCisgICAgICogQVJNdjggKERESSAwNDg3QS5kKTogRDEt MTUwOSBUYWJsZSBEMS01OAorICAgICAqCisgICAgICogVW5oYW5kbGVkOgorICAgICAqICAgIE9T TFNSX0VMMQorICAgICAqICAgIERCR1BSQ1JfRUwxCisgICAgICovCisgICAgY2FzZSBIU1JfU1lT UkVHX09TTEFSX0VMMToKKyAgICAgICAgcmV0dXJuIGhhbmRsZV93b193aShyZWdzLCByZWdpZHgs IGhzci5zeXNyZWcucmVhZCwgaHNyLCAxKTsKKyAgICBjYXNlIEhTUl9TWVNSRUdfT1NETFJfRUwx OgorICAgICAgICByZXR1cm4gaGFuZGxlX3Jhel93aShyZWdzLCByZWdpZHgsIGhzci5zeXNyZWcu cmVhZCwgaHNyLCAxKTsKKworICAgIC8qCisgICAgICogTURDUl9FTDIuVERBCisgICAgICoKKyAg ICAgKiBBUk12OCAoRERJIDA0ODdBLmQpOiBEMS0xNTEwIFRhYmxlIEQxLTU5CisgICAgICoKKyAg ICAgKiBVbmhhbmRsZWQ6CisgICAgICogICAgTURDQ0lOVF9FTDEKKyAgICAgKiAgICBEQkdEVFJf RUwwCisgICAgICogICAgREJHRFRSUlhfRUwwCisgICAgICogICAgREJHRFRSVFhfRUwwCisgICAg ICogICAgT1NEVFJSWF9FTDEKKyAgICAgKiAgICBPU0RUUlRYX0VMMQorICAgICAqICAgIE9TRUND Ul9FTDEKKyAgICAgKiAgICBEQkdDTEFJTVNFVF9FTDEKKyAgICAgKiAgICBEQkdDTEFJTUNMUl9F TDEKKyAgICAgKiAgICBEQkdBVVRIU1RBVFVTX0VMMQorICAgICAqLworICAgIGNhc2UgSFNSX1NZ U1JFR19NRFNDUl9FTDE6CisgICAgICAgIHJldHVybiBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lk eCwgaHNyLnN5c3JlZy5yZWFkLCBoc3IsIDEpOworICAgIGNhc2UgSFNSX1NZU1JFR19NRENDU1Jf RUwwOgorICAgICAgICAvKgorICAgICAgICAgKiBBY2Nlc3NpYmxlIGF0IEVMMCBvbmx5IGlmIE1E U0NSX0VMMS5URENDIGlzIHNldCB0byAwLiBXZSBlbXVsYXRlIHRoYXQKKyAgICAgICAgICogcmVn aXN0ZXIgYXMgUkFaL1dJIGFib3ZlLiBTbyBSTyBhdCBib3RoIEVMMCBhbmQgRUwxLgorICAgICAg ICAgKi8KKyAgICAgICAgcmV0dXJuIGhhbmRsZV9yb19yYXoocmVncywgcmVnaWR4LCBoc3Iuc3lz cmVnLnJlYWQsIGhzciwgMCk7CisgICAgSFNSX1NZU1JFR19EQkdfQ0FTRVMoREJHQlZSKToKKyAg ICBIU1JfU1lTUkVHX0RCR19DQVNFUyhEQkdCQ1IpOgorICAgIEhTUl9TWVNSRUdfREJHX0NBU0VT KERCR1dWUik6CisgICAgSFNSX1NZU1JFR19EQkdfQ0FTRVMoREJHV0NSKToKKyAgICAgICAgcmV0 dXJuIGhhbmRsZV9yYXpfd2kocmVncywgcmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMSk7 CisKKyAgICAvKgorICAgICAqIE1EQ1JfRUwyLlRQTQorICAgICAqCisgICAgICogQVJNdjggKERE SSAwNDg3QS5kKTogRDEtMTUxMSBUYWJsZSBEMS02MQorICAgICAqCisgICAgICogVW5oYW5kbGVk OgorICAgICAqICAgIFBNRVZDTlRSPG4+X0VMMAorICAgICAqICAgIFBNRVZUWVBFUjxuPl9FTDAK KyAgICAgKiAgICBQTUNDRklMVFJfRUwwCisgICAgICogTURDUl9FTDIuVFBNQ1IKKyAgICAgKgor ICAgICAqIEFSTXY3IChEREkgMDQwNkMuYik6IEIxLjE0LjE3CisgICAgICogQVJNdjggKERESSAw NDg3QS5kKTogRDEtMTUxMSBUYWJsZSBEMS02MgorICAgICAqCisgICAgICogTkI6IEJvdGggTURD Ul9FTDIuVFBNIGFuZCBNRENSX0VMMi5UUE1DUiBjYXVzZSB0cmFwcGluZyBvZiBQTUNSLgorICAg ICAqLworICAgIGNhc2UgSFNSX1NZU1JFR19QTUlOVEVOU0VUX0VMMToKKyAgICBjYXNlIEhTUl9T WVNSRUdfUE1JTlRFTkNMUl9FTDE6CisgICAgICAgIC8qCisgICAgICAgICAqIEFjY2Vzc2libGUg ZnJvbSBFTDEgb25seSwgYnV0IGlmIEVMMCB0cmFwIGhhcHBlbnMgaGFuZGxlIGFzCisgICAgICAg ICAqIHVuZGVmLgorICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIGhhbmRsZV9yYXpfd2kocmVn cywgcmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMSk7CisgICAgY2FzZSBIU1JfU1lTUkVH X1BNVVNFUkVOUl9FTDA6CisgICAgICAgIC8qIFJPIGF0IEVMMC4gUkFaL1dJIGF0IEVMMSAqLwor ICAgICAgICBpZiAoIHBzcl9tb2RlX2lzX3VzZXIocmVncykgKQorICAgICAgICAgICAgcmV0dXJu IGhhbmRsZV9yb19yYXoocmVncywgcmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMCk7Cisg ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lk eCwgaHNyLnN5c3JlZy5yZWFkLCBoc3IsIDEpOworICAgIGNhc2UgSFNSX1NZU1JFR19QTUNSX0VM MDoKKyAgICBjYXNlIEhTUl9TWVNSRUdfUE1DTlRFTlNFVF9FTDA6CisgICAgY2FzZSBIU1JfU1lT UkVHX1BNQ05URU5DTFJfRUwwOgorICAgIGNhc2UgSFNSX1NZU1JFR19QTU9WU0NMUl9FTDA6Cisg ICAgY2FzZSBIU1JfU1lTUkVHX1BNU1dJTkNfRUwwOgorICAgIGNhc2UgSFNSX1NZU1JFR19QTVNF TFJfRUwwOgorICAgIGNhc2UgSFNSX1NZU1JFR19QTUNFSUQwX0VMMDoKKyAgICBjYXNlIEhTUl9T WVNSRUdfUE1DRUlEMV9FTDA6CisgICAgY2FzZSBIU1JfU1lTUkVHX1BNQ0NOVFJfRUwwOgorICAg IGNhc2UgSFNSX1NZU1JFR19QTVhFVlRZUEVSX0VMMDoKKyAgICBjYXNlIEhTUl9TWVNSRUdfUE1Y RVZDTlRSX0VMMDoKKyAgICBjYXNlIEhTUl9TWVNSRUdfUE1PVlNTRVRfRUwwOgorICAgICAgICAv KgorICAgICAgICAgKiBBY2Nlc3NpYmxlIGF0IEVMMCBvbmx5IGlmIFBNVVNFUkVOUl9FTDAuRU4g aXMgc2V0LiBXZQorICAgICAgICAgKiBlbXVsYXRlIHRoYXQgcmVnaXN0ZXIgYXMgMCBhYm92ZS4K KyAgICAgICAgICovCisgICAgICAgIHJldHVybiBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lkeCwg aHNyLnN5c3JlZy5yZWFkLCBoc3IsIDEpOworCisgICAgLyoKKyAgICAgKiAhQ05USENUTF9FTDIu RUwxUENFTgorICAgICAqCisgICAgICogQVJNdjggKERESSAwNDg3QS5kKTogRDEtMTUxMCBUYWJs ZSBEMS02MAorICAgICAqLworICAgIGNhc2UgSFNSX1NZU1JFR19DTlRQX0NUTF9FTDA6CisgICAg Y2FzZSBIU1JfU1lTUkVHX0NOVFBfVFZBTF9FTDA6CisgICAgY2FzZSBIU1JfU1lTUkVHX0NOVFBf Q1ZBTF9FTDA6CisgICAgICAgIGlmICggIXZ0aW1lcl9lbXVsYXRlKHJlZ3MsIGhzcikgKQorICAg ICAgICAgICAgcmV0dXJuIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsKKyAgICAg ICAgYnJlYWs7CisKKyAgICAvKgorICAgICAqIEhDUl9FTDIuRk1PIG9yIEhDUl9FTDIuSU1PCisg ICAgICoKKyAgICAgKiBHSUMgQXJjaGl0ZWN0dXJlIFNwZWNpZmljYXRpb24gKElISSAwMDY5Qyk6 IFNlY3Rpb24gNC42LjMKKyAgICAgKi8KKyAgICBjYXNlIEhTUl9TWVNSRUdfSUNDX1NHSTFSX0VM MToKKyAgICBjYXNlIEhTUl9TWVNSRUdfSUNDX0FTR0kxUl9FTDE6CisgICAgY2FzZSBIU1JfU1lT UkVHX0lDQ19TR0kwUl9FTDE6CisKKyAgICAgICAgaWYgKCAhdmdpY19lbXVsYXRlKHJlZ3MsIGhz cikgKQorICAgICAgICAgICAgcmV0dXJuIGluamVjdF91bmRlZjY0X2V4Y2VwdGlvbihyZWdzLCBo c3IubGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvKgorICAgICAqICBJQ0NfU1JFX0VMMi5F bmFibGUgPSAwCisgICAgICoKKyAgICAgKiAgR0lDIEFyY2hpdGVjdHVyZSBTcGVjaWZpY2F0aW9u IChJSEkgMDA2OUMpOiBTZWN0aW9uIDguMS45CisgICAgICovCisgICAgY2FzZSBIU1JfU1lTUkVH X0lDQ19TUkVfRUwxOgorICAgICAgICAvKgorICAgICAgICAgKiBUcmFwcGVkIHdoZW4gdGhlIGd1 ZXN0IGlzIHVzaW5nIEdJQ3YyIHdoaWxzdCB0aGUgcGxhdGZvcm0KKyAgICAgICAgICogaW50ZXJy dXB0IGNvbnRyb2xsZXIgaXMgR0lDdjMuIEluIHRoaXMgY2FzZSwgdGhlIHJlZ2lzdGVyCisgICAg ICAgICAqIHNob3VsZCBiZSBlbXVsYXRlIGFzIFJBWi9XSSB0byB0ZWxsIHRoZSBndWVzdCB0byB1 c2UgdGhlIEdJQworICAgICAgICAgKiBtZW1vcnkgbWFwcGVkIGludGVyZmFjZSAoaS5lIEdJQ3Yy IGNvbXBhdGliaWxpdHkpLgorICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIGhhbmRsZV9yYXpf d2kocmVncywgcmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMSk7CisKKyAgICAvKgorICAg ICAqIEhDUl9FTDIuVElEQ1AKKyAgICAgKgorICAgICAqIEFSTXY4IChEREkgMDQ4N0EuZCk6IEQx LTE1MDEgVGFibGUgRDEtNDMKKyAgICAgKgorICAgICAqICAtIFJlc2VydmVkIGNvbnRyb2wgc3Bh Y2UgZm9yIElNUExFTUVOVEFUSU9OIERFRklORUQgZnVuY3Rpb25hbGl0eS4KKyAgICAgKgorICAg ICAqIENQVFJfRUwyLlRUQQorICAgICAqCisgICAgICogQVJNdjggKERESSAwNDg3QS5kKTogRDEt MTUwNyBUYWJsZSBEMS01NAorICAgICAqCisgICAgICogIC0gQWxsIGltcGxlbWVudGVkIHRyYWNl IHJlZ2lzdGVycy4KKyAgICAgKgorICAgICAqIEFuZCBhbGwgb3RoZXIgdW5rbm93biByZWdpc3Rl cnMuCisgICAgICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qg c3RydWN0IGhzcl9zeXNyZWcgc3lzcmVnID0gaHNyLnN5c3JlZzsKKworICAgICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICIlcyAlZCwgJWQsIGMlZCwg YyVkLCAlZCAlcyB4JWQgQCAweCUiUFJJcmVnaXN0ZXIiXG4iLAorICAgICAgICAgICAgICAgICAg ICAgc3lzcmVnLnJlYWQgPyAibXJzIiA6ICJtc3IiLAorICAgICAgICAgICAgICAgICAgICAgc3lz cmVnLm9wMCwgc3lzcmVnLm9wMSwKKyAgICAgICAgICAgICAgICAgICAgIHN5c3JlZy5jcm4sIHN5 c3JlZy5jcm0sCisgICAgICAgICAgICAgICAgICAgICBzeXNyZWcub3AyLAorICAgICAgICAgICAg ICAgICAgICAgc3lzcmVnLnJlYWQgPyAiPT4iIDogIjw9IiwKKyAgICAgICAgICAgICAgICAgICAg IHN5c3JlZy5yZWcsIHJlZ3MtPnBjKTsKKyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIs ICJ1bmhhbmRsZWQgNjQtYml0IHN5c3JlZyBhY2Nlc3MgJSN4XG4iLAorICAgICAgICAgICAgICAg ICAgICAgaHNyLmJpdHMgJiBIU1JfU1lTUkVHX1JFR1NfTUFTSyk7CisgICAgICAgICAgICBpbmpl Y3RfdW5kZWZfZXhjZXB0aW9uKHJlZ3MsIGhzcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKyAgICB9CisKKyAgICByZWdzLT5wYyArPSA0OworfQorCisvKgorICogTG9jYWwgdmFy aWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1v ZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCmluZGV4IDFj MzM0YTdiOTkuLmYwMGFhNDg4OTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS90cmFwcy5jCisr KyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCkBAIC0yMjk1LDIwNCArMjI5NSw2IEBAIHN0YXRpYyB2 b2lkIGRvX2NwKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBjb25zdCB1bmlvbiBoc3IgaHNy KQogICAgIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsKIH0KIAotI2lmZGVmIENP TkZJR19BUk1fNjQKLXN0YXRpYyB2b2lkIGRvX3N5c3JlZyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlvbiBoc3IgaHNyKQotewotICAg IGludCByZWdpZHggPSBoc3Iuc3lzcmVnLnJlZzsKLSAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJl bnQ7Ci0KLSAgICBzd2l0Y2ggKCBoc3IuYml0cyAmIEhTUl9TWVNSRUdfUkVHU19NQVNLICkKLSAg ICB7Ci0gICAgLyoKLSAgICAgKiBIQ1JfRUwyLlRBQ1IKLSAgICAgKgotICAgICAqIEFSTXY4IChE REkgMDQ4N0EuZCk6IEQ3LjIuMQotICAgICAqLwotICAgIGNhc2UgSFNSX1NZU1JFR19BQ1RMUl9F TDE6Ci0gICAgICAgIGlmICggcHNyX21vZGVfaXNfdXNlcihyZWdzKSApCi0gICAgICAgICAgICBy ZXR1cm4gaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOwotICAgICAgICBpZiAoIGhz ci5zeXNyZWcucmVhZCApCi0gICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgcmVnaWR4LCB2 LT5hcmNoLmFjdGxyKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvKgotICAgICAqIE1EQ1JfRUwy LlREUkEKLSAgICAgKgotICAgICAqIEFSTXY4IChEREkgMDQ4N0EuZCk6IEQxLTE1MDggVGFibGUg RDEtNTcKLSAgICAgKi8KLSAgICBjYXNlIEhTUl9TWVNSRUdfTURSQVJfRUwxOgotICAgICAgICBy ZXR1cm4gaGFuZGxlX3JvX3JheihyZWdzLCByZWdpZHgsIGhzci5zeXNyZWcucmVhZCwgaHNyLCAx KTsKLQotICAgIC8qCi0gICAgICogTURDUl9FTDIuVERPU0EKLSAgICAgKgotICAgICAqIEFSTXY4 IChEREkgMDQ4N0EuZCk6IEQxLTE1MDkgVGFibGUgRDEtNTgKLSAgICAgKgotICAgICAqIFVuaGFu ZGxlZDoKLSAgICAgKiAgICBPU0xTUl9FTDEKLSAgICAgKiAgICBEQkdQUkNSX0VMMQotICAgICAq LwotICAgIGNhc2UgSFNSX1NZU1JFR19PU0xBUl9FTDE6Ci0gICAgICAgIHJldHVybiBoYW5kbGVf d29fd2kocmVncywgcmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMSk7Ci0gICAgY2FzZSBI U1JfU1lTUkVHX09TRExSX0VMMToKLSAgICAgICAgcmV0dXJuIGhhbmRsZV9yYXpfd2kocmVncywg cmVnaWR4LCBoc3Iuc3lzcmVnLnJlYWQsIGhzciwgMSk7Ci0KLSAgICAvKgotICAgICAqIE1EQ1Jf RUwyLlREQQotICAgICAqCi0gICAgICogQVJNdjggKERESSAwNDg3QS5kKTogRDEtMTUxMCBUYWJs ZSBEMS01OQotICAgICAqCi0gICAgICogVW5oYW5kbGVkOgotICAgICAqICAgIE1EQ0NJTlRfRUwx Ci0gICAgICogICAgREJHRFRSX0VMMAotICAgICAqICAgIERCR0RUUlJYX0VMMAotICAgICAqICAg IERCR0RUUlRYX0VMMAotICAgICAqICAgIE9TRFRSUlhfRUwxCi0gICAgICogICAgT1NEVFJUWF9F TDEKLSAgICAgKiAgICBPU0VDQ1JfRUwxCi0gICAgICogICAgREJHQ0xBSU1TRVRfRUwxCi0gICAg ICogICAgREJHQ0xBSU1DTFJfRUwxCi0gICAgICogICAgREJHQVVUSFNUQVRVU19FTDEKLSAgICAg Ki8KLSAgICBjYXNlIEhTUl9TWVNSRUdfTURTQ1JfRUwxOgotICAgICAgICByZXR1cm4gaGFuZGxl X3Jhel93aShyZWdzLCByZWdpZHgsIGhzci5zeXNyZWcucmVhZCwgaHNyLCAxKTsKLSAgICBjYXNl IEhTUl9TWVNSRUdfTURDQ1NSX0VMMDoKLSAgICAgICAgLyoKLSAgICAgICAgICogQWNjZXNzaWJs ZSBhdCBFTDAgb25seSBpZiBNRFNDUl9FTDEuVERDQyBpcyBzZXQgdG8gMC4gV2UgZW11bGF0ZSB0 aGF0Ci0gICAgICAgICAqIHJlZ2lzdGVyIGFzIFJBWi9XSSBhYm92ZS4gU28gUk8gYXQgYm90aCBF TDAgYW5kIEVMMS4KLSAgICAgICAgICovCi0gICAgICAgIHJldHVybiBoYW5kbGVfcm9fcmF6KHJl Z3MsIHJlZ2lkeCwgaHNyLnN5c3JlZy5yZWFkLCBoc3IsIDApOwotICAgIEhTUl9TWVNSRUdfREJH X0NBU0VTKERCR0JWUik6Ci0gICAgSFNSX1NZU1JFR19EQkdfQ0FTRVMoREJHQkNSKToKLSAgICBI U1JfU1lTUkVHX0RCR19DQVNFUyhEQkdXVlIpOgotICAgIEhTUl9TWVNSRUdfREJHX0NBU0VTKERC R1dDUik6Ci0gICAgICAgIHJldHVybiBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lkeCwgaHNyLnN5 c3JlZy5yZWFkLCBoc3IsIDEpOwotCi0gICAgLyoKLSAgICAgKiBNRENSX0VMMi5UUE0KLSAgICAg KgotICAgICAqIEFSTXY4IChEREkgMDQ4N0EuZCk6IEQxLTE1MTEgVGFibGUgRDEtNjEKLSAgICAg KgotICAgICAqIFVuaGFuZGxlZDoKLSAgICAgKiAgICBQTUVWQ05UUjxuPl9FTDAKLSAgICAgKiAg ICBQTUVWVFlQRVI8bj5fRUwwCi0gICAgICogICAgUE1DQ0ZJTFRSX0VMMAotICAgICAqIE1EQ1Jf RUwyLlRQTUNSCi0gICAgICoKLSAgICAgKiBBUk12NyAoRERJIDA0MDZDLmIpOiBCMS4xNC4xNwot ICAgICAqIEFSTXY4IChEREkgMDQ4N0EuZCk6IEQxLTE1MTEgVGFibGUgRDEtNjIKLSAgICAgKgot ICAgICAqIE5COiBCb3RoIE1EQ1JfRUwyLlRQTSBhbmQgTURDUl9FTDIuVFBNQ1IgY2F1c2UgdHJh cHBpbmcgb2YgUE1DUi4KLSAgICAgKi8KLSAgICBjYXNlIEhTUl9TWVNSRUdfUE1JTlRFTlNFVF9F TDE6Ci0gICAgY2FzZSBIU1JfU1lTUkVHX1BNSU5URU5DTFJfRUwxOgotICAgICAgICAvKgotICAg ICAgICAgKiBBY2Nlc3NpYmxlIGZyb20gRUwxIG9ubHksIGJ1dCBpZiBFTDAgdHJhcCBoYXBwZW5z IGhhbmRsZSBhcwotICAgICAgICAgKiB1bmRlZi4KLSAgICAgICAgICovCi0gICAgICAgIHJldHVy biBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lkeCwgaHNyLnN5c3JlZy5yZWFkLCBoc3IsIDEpOwot ICAgIGNhc2UgSFNSX1NZU1JFR19QTVVTRVJFTlJfRUwwOgotICAgICAgICAvKiBSTyBhdCBFTDAu IFJBWi9XSSBhdCBFTDEgKi8KLSAgICAgICAgaWYgKCBwc3JfbW9kZV9pc191c2VyKHJlZ3MpICkK LSAgICAgICAgICAgIHJldHVybiBoYW5kbGVfcm9fcmF6KHJlZ3MsIHJlZ2lkeCwgaHNyLnN5c3Jl Zy5yZWFkLCBoc3IsIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gaGFuZGxl X3Jhel93aShyZWdzLCByZWdpZHgsIGhzci5zeXNyZWcucmVhZCwgaHNyLCAxKTsKLSAgICBjYXNl IEhTUl9TWVNSRUdfUE1DUl9FTDA6Ci0gICAgY2FzZSBIU1JfU1lTUkVHX1BNQ05URU5TRVRfRUww OgotICAgIGNhc2UgSFNSX1NZU1JFR19QTUNOVEVOQ0xSX0VMMDoKLSAgICBjYXNlIEhTUl9TWVNS RUdfUE1PVlNDTFJfRUwwOgotICAgIGNhc2UgSFNSX1NZU1JFR19QTVNXSU5DX0VMMDoKLSAgICBj YXNlIEhTUl9TWVNSRUdfUE1TRUxSX0VMMDoKLSAgICBjYXNlIEhTUl9TWVNSRUdfUE1DRUlEMF9F TDA6Ci0gICAgY2FzZSBIU1JfU1lTUkVHX1BNQ0VJRDFfRUwwOgotICAgIGNhc2UgSFNSX1NZU1JF R19QTUNDTlRSX0VMMDoKLSAgICBjYXNlIEhTUl9TWVNSRUdfUE1YRVZUWVBFUl9FTDA6Ci0gICAg Y2FzZSBIU1JfU1lTUkVHX1BNWEVWQ05UUl9FTDA6Ci0gICAgY2FzZSBIU1JfU1lTUkVHX1BNT1ZT U0VUX0VMMDoKLSAgICAgICAgLyoKLSAgICAgICAgICogQWNjZXNzaWJsZSBhdCBFTDAgb25seSBp ZiBQTVVTRVJFTlJfRUwwLkVOIGlzIHNldC4gV2UKLSAgICAgICAgICogZW11bGF0ZSB0aGF0IHJl Z2lzdGVyIGFzIDAgYWJvdmUuCi0gICAgICAgICAqLwotICAgICAgICByZXR1cm4gaGFuZGxlX3Jh el93aShyZWdzLCByZWdpZHgsIGhzci5zeXNyZWcucmVhZCwgaHNyLCAxKTsKLQotICAgIC8qCi0g ICAgICogIUNOVEhDVExfRUwyLkVMMVBDRU4KLSAgICAgKgotICAgICAqIEFSTXY4IChEREkgMDQ4 N0EuZCk6IEQxLTE1MTAgVGFibGUgRDEtNjAKLSAgICAgKi8KLSAgICBjYXNlIEhTUl9TWVNSRUdf Q05UUF9DVExfRUwwOgotICAgIGNhc2UgSFNSX1NZU1JFR19DTlRQX1RWQUxfRUwwOgotICAgIGNh c2UgSFNSX1NZU1JFR19DTlRQX0NWQUxfRUwwOgotICAgICAgICBpZiAoICF2dGltZXJfZW11bGF0 ZShyZWdzLCBoc3IpICkKLSAgICAgICAgICAgIHJldHVybiBpbmplY3RfdW5kZWZfZXhjZXB0aW9u KHJlZ3MsIGhzcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLyoKLSAgICAgKiBIQ1JfRUwyLkZN TyBvciBIQ1JfRUwyLklNTwotICAgICAqCi0gICAgICogR0lDIEFyY2hpdGVjdHVyZSBTcGVjaWZp Y2F0aW9uIChJSEkgMDA2OUMpOiBTZWN0aW9uIDQuNi4zCi0gICAgICovCi0gICAgY2FzZSBIU1Jf U1lTUkVHX0lDQ19TR0kxUl9FTDE6Ci0gICAgY2FzZSBIU1JfU1lTUkVHX0lDQ19BU0dJMVJfRUwx OgotICAgIGNhc2UgSFNSX1NZU1JFR19JQ0NfU0dJMFJfRUwxOgotCi0gICAgICAgIGlmICggIXZn aWNfZW11bGF0ZShyZWdzLCBoc3IpICkKLSAgICAgICAgICAgIHJldHVybiBpbmplY3RfdW5kZWY2 NF9leGNlcHRpb24ocmVncywgaHNyLmxlbik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLyoKLSAg ICAgKiAgSUNDX1NSRV9FTDIuRW5hYmxlID0gMAotICAgICAqCi0gICAgICogIEdJQyBBcmNoaXRl Y3R1cmUgU3BlY2lmaWNhdGlvbiAoSUhJIDAwNjlDKTogU2VjdGlvbiA4LjEuOQotICAgICAqLwot ICAgIGNhc2UgSFNSX1NZU1JFR19JQ0NfU1JFX0VMMToKLSAgICAgICAgLyoKLSAgICAgICAgICog VHJhcHBlZCB3aGVuIHRoZSBndWVzdCBpcyB1c2luZyBHSUN2MiB3aGlsc3QgdGhlIHBsYXRmb3Jt Ci0gICAgICAgICAqIGludGVycnVwdCBjb250cm9sbGVyIGlzIEdJQ3YzLiBJbiB0aGlzIGNhc2Us IHRoZSByZWdpc3RlcgotICAgICAgICAgKiBzaG91bGQgYmUgZW11bGF0ZSBhcyBSQVovV0kgdG8g dGVsbCB0aGUgZ3Vlc3QgdG8gdXNlIHRoZSBHSUMKLSAgICAgICAgICogbWVtb3J5IG1hcHBlZCBp bnRlcmZhY2UgKGkuZSBHSUN2MiBjb21wYXRpYmlsaXR5KS4KLSAgICAgICAgICovCi0gICAgICAg IHJldHVybiBoYW5kbGVfcmF6X3dpKHJlZ3MsIHJlZ2lkeCwgaHNyLnN5c3JlZy5yZWFkLCBoc3Is IDEpOwotCi0gICAgLyoKLSAgICAgKiBIQ1JfRUwyLlRJRENQCi0gICAgICoKLSAgICAgKiBBUk12 OCAoRERJIDA0ODdBLmQpOiBEMS0xNTAxIFRhYmxlIEQxLTQzCi0gICAgICoKLSAgICAgKiAgLSBS ZXNlcnZlZCBjb250cm9sIHNwYWNlIGZvciBJTVBMRU1FTlRBVElPTiBERUZJTkVEIGZ1bmN0aW9u YWxpdHkuCi0gICAgICoKLSAgICAgKiBDUFRSX0VMMi5UVEEKLSAgICAgKgotICAgICAqIEFSTXY4 IChEREkgMDQ4N0EuZCk6IEQxLTE1MDcgVGFibGUgRDEtNTQKLSAgICAgKgotICAgICAqICAtIEFs bCBpbXBsZW1lbnRlZCB0cmFjZSByZWdpc3RlcnMuCi0gICAgICoKLSAgICAgKiBBbmQgYWxsIG90 aGVyIHVua25vd24gcmVnaXN0ZXJzLgotICAgICAqLwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHsK LSAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBoc3Jfc3lzcmVnIHN5c3JlZyA9IGhzci5zeXNyZWc7 Ci0KLSAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsCi0gICAgICAgICAgICAgICAgICAg ICAiJXMgJWQsICVkLCBjJWQsIGMlZCwgJWQgJXMgeCVkIEAgMHglIlBSSXJlZ2lzdGVyIlxuIiwK LSAgICAgICAgICAgICAgICAgICAgIHN5c3JlZy5yZWFkID8gIm1ycyIgOiAibXNyIiwKLSAgICAg ICAgICAgICAgICAgICAgIHN5c3JlZy5vcDAsIHN5c3JlZy5vcDEsCi0gICAgICAgICAgICAgICAg ICAgICBzeXNyZWcuY3JuLCBzeXNyZWcuY3JtLAotICAgICAgICAgICAgICAgICAgICAgc3lzcmVn Lm9wMiwKLSAgICAgICAgICAgICAgICAgICAgIHN5c3JlZy5yZWFkID8gIj0+IiA6ICI8PSIsCi0g ICAgICAgICAgICAgICAgICAgICBzeXNyZWcucmVnLCByZWdzLT5wYyk7Ci0gICAgICAgICAgICBn ZHByaW50ayhYRU5MT0dfRVJSLCAidW5oYW5kbGVkIDY0LWJpdCBzeXNyZWcgYWNjZXNzICUjeFxu IiwKLSAgICAgICAgICAgICAgICAgICAgIGhzci5iaXRzICYgSFNSX1NZU1JFR19SRUdTX01BU0sp OwotICAgICAgICAgICAgaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOwotICAgICAg ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVncy0+cGMgKz0gNDsKLX0K LSNlbmRpZgotCiB2b2lkIGR1bXBfZ3Vlc3RfczFfd2FsayhzdHJ1Y3QgZG9tYWluICpkLCB2YWRk cl90IGFkZHIpCiB7CiAgICAgcmVnaXN0ZXJfdCB0dGJjciA9IFJFQURfU1lTUkVHKFRDUl9FTDEp OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9hcm02NC90cmFwcy5oIGIveGVuL2lu Y2x1ZGUvYXNtLWFybS9hcm02NC90cmFwcy5oCmluZGV4IGU1ZTVhNGEwMzYuLjIzNzliNTc4Y2Ig MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYXJtNjQvdHJhcHMuaAorKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL2FybTY0L3RyYXBzLmgKQEAgLTMsNiArMyw5IEBACiAKIHZvaWQgaW5q ZWN0X3VuZGVmNjRfZXhjZXB0aW9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBpbnQgaW5z dHJfbGVuKTsKIAordm9pZCBkb19zeXNyZWcoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCisg ICAgICAgICAgICAgICBjb25zdCB1bmlvbiBoc3IgaHNyKTsKKwogI2VuZGlmIC8qIF9fQVNNX0FS TTY0X1RSQVBTX18gKi8KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6Ci0tIAoyLjExLjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK