From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC 41/44] x86/smp: Switch to using the percpu stacks Date: Thu, 4 Jan 2018 20:22:06 +0000 Message-ID: <1515097329-31902-42-git-send-email-andrew.cooper3@citrix.com> References: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyB2ZXJ5IGVhc3kgZm9yIHRoZSBBUHMuICBfX2hpZ2hfc3RhcnQoKSBpcyBtb2RpZmll ZCB0byBzd2l0Y2ggc3RhY2tzCmJlZm9yZSBlbnRlcmluZyBDLiAgVGhlIEJTUCBob3dldmVyIGlz IG1vcmUgY29tcGxpY2F0ZWQsIGFuZCBuZWVkcyB0byBzdGF5IG9uCmNwdTBfc3RhY2tbXSB1bnRp bCBzZXR1cCBpcyBjb21wbGV0ZS4KClRoZSBlbmQgb2YgX19zdGFydF94ZW4oKSBpcyBtb2RpZmll ZCB0byBjb3B5IHRoZSB0b3Atb2Ytc3RhY2sgZGF0YSB0byB0aGUKcGVyY3B1IHN0YWNrIGltbWVk aWF0ZWx5IGJlZm9yZSBqdW1waW5nIHRoZXJlLiAgVGhlIFZNQ1MgSG9zdCBhbmQgU1lTRU5URVIK c3RhY2tzIGFyZSBzdWl0YWJseSBhZGp1c3RlZCwgYW5kIGJlY29tZSBjb25zdHJ1Y3Rpb24tdGlt ZSBjb25zdGFudC4KClRoZSBzdGFja19zdGFydCBhbmQgc3RhY2tfYmFzZVtdIGFycmF5IGFyZSBy ZW1vdmVkIGNvbXBsZXRlbHksIGFzIHdlbGwgYXMgdGhlCm1lbWd1YXJkX2d1YXJkX3N0YWNrKCkg aW5mcmFzdHJ1Y3R1cmUuICBUaGUgU1RBQ0tfT1JERVIgeGVuaGVhcCBhbGxvY2F0aW9ucwphcmUg bm8gbG9uZ2VyIG5lZWRlZCwgYW5kIGhpZ2hlciBDUFVzIG9uIGxhcmdlIG1hY2hpbmVzIGFyZSBm aW5hbGx5Cm51bWEtbG9jYWwuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TICB8IDE1 ICsrKysrKysrLS0tLS0tLQogeGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oIHwgIDggKysrKy0t LS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyB8IDIxICsrKysrKysrKystLS0tLS0tLS0t LQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgIHwgMTUgLS0tLS0tLS0tLS0tLS0tCiB4ZW4v YXJjaC94ODYvc2V0dXAuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LQogeGVuL2FyY2gveDg2L3NtcGJvb3QuYyAgICAgIHwgMTggLS0tLS0tLS0tLS0tLS0tLS0tCiB4 ZW4vYXJjaC94ODYvdGJvb3QuYyAgICAgICAgfCAyOSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogeGVuL2FyY2gveDg2L3RyYXBzLmMgICAgICAgIHwgMTAgKystLS0tLS0tLQogeGVuL2lu Y2x1ZGUvYXNtLWFybS9tbS5oICAgIHwgIDEgLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAg IHwgIDMgLS0tCiB4ZW4vaW5jbHVkZS94ZW4vc21wLmggICAgICAgfCAgMiAtLQogMTEgZmlsZXMg Y2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9ib290L3g4Nl82NC5TIGIveGVuL2FyY2gveDg2L2Jvb3QveDg2XzY0LlMK aW5kZXggYjFmMDQ1Ny4uZWQ0YzgwNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QveDg2 XzY0LlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QveDg2XzY0LlMKQEAgLTE1LDIxICsxNSwyNSBA QCBFTlRSWShfX2hpZ2hfc3RhcnQpCiAgICAgICAgIG1vdiAgICAgJFhFTl9NSU5JTUFMX0NSNCwl cmN4CiAgICAgICAgIG1vdiAgICAgJXJjeCwlY3I0CiAKLSAgICAgICAgLyogU2V0IHVwICVjcjMg KGRpZmZlcnMgYmV0d2VlbiBCU1AgYW5kIEFQcykuICovCisgICAgICAgIC8qIFNldCB1cCAlY3Iz IGFuZCAlcnNwIChkaWZmZXJzIGJldHdlZW4gQlNQIGFuZCBBUHMpLiAqLwogICAgICAgICB0ZXN0 ICAgICVlYngsICVlYngKICAgICAgICAganogICAgICAuTGJzcF9zZXR1cAogCiAgICAgICAgIC8q IEFQcyBzd2l0Y2ggb250byBwZXJjcHVfaWRsZV9wdFtdLCBhcyBwcm92aWRlZCBieSBkb19ib290 X2NwdSgpLiAqLwogICAgICAgICBtb3YgICAgIGFwX2NyMyglcmlwKSwgJXJheAogICAgICAgICBt b3YgICAgICVyYXgsICVjcjMKKworICAgICAgICAvKiBBUHMgbW92ZSBzdHJhaWdodCBvbnRvIHRo ZSBQRVJDUFUgc3RhY2suICovCisgICAgICAgIG1vdmFicyAgJFNUQUNLX1NJWkUgLSBDUFVJTkZP X3NpemVvZiArIFBFUkNQVV9TVEFDS19NQVBQSU5HLCAlcnNwCisKICAgICAgICAgam1wICAgICAu TGRvbmUKIAogLkxic3Bfc2V0dXA6CiAgICAgICAgIC8qIFRoZSBCU1Agc3RheXMgb24gdGhlIGlk bGVfcGdfdGFibGVbXSBkdXJpbmcgZWFybHkgYm9vdC4gKi8KLS5MZG9uZToKIAotICAgICAgICBt b3YgICAgIHN0YWNrX3N0YXJ0KCVyaXApLCVyc3AKLSAgICAgICAgb3IgICAgICAkKFNUQUNLX1NJ WkUtQ1BVSU5GT19zaXplb2YpLCVyc3AKKyAgICAgICAgLyogVGhlIEJTUCBzdGFydHMgb24gY3B1 MF9zdGFjay4gKi8KKyAgICAgICAgbGVhICAgICBTVEFDS19TSVpFIC0gQ1BVSU5GT19zaXplb2Yg KyBjcHUwX3N0YWNrKCVyaXApLCAlcnNwCisuTGRvbmU6CiAKICAgICAgICAgLyogUmVzZXQgRUZM QUdTIChzdWJzdW1lcyBDTEkgYW5kIENMRCkuICovCiAgICAgICAgIHB1c2hxICAgJDAKQEAgLTYx LDkgKzY1LDYgQEAgR0xPQkFMKGdkdF9kZXNjcikKICAgICAgICAgLndvcmQgICBMQVNUX1JFU0VS VkVEX0dEVF9CWVRFCiAgICAgICAgIC5xdWFkICAgYm9vdF9jcHVfZ2R0X3RhYmxlIC0gRklSU1Rf UkVTRVJWRURfR0RUX0JZVEUKIAotR0xPQkFMKHN0YWNrX3N0YXJ0KQotICAgICAgICAucXVhZCAg IGNwdTBfc3RhY2sKLQogICAgICAgICAuc2VjdGlvbiAuZGF0YS5wYWdlX2FsaWduZWQsICJhdyIs IEBwcm9nYml0cwogICAgICAgICAuYWxpZ24gUEFHRV9TSVpFLCAwCiBHTE9CQUwoYm9vdF9jcHVf Z2R0X3RhYmxlKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oIGIveGVu L2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCmluZGV4IGQzMGY2ODguLjhhZjY2MWIgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAorKysgYi94ZW4vYXJjaC94ODYvZWZpL2Vm aS1ib290LmgKQEAgLTI1MSwxNSArMjUxLDE1IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBub3JldHVy biBlZmlfYXJjaF9wb3N0X2V4aXRfYm9vdCh2b2lkKQogI2VuZGlmCiAgICAgICAgICAgICAgICAg ICAgIm1vdmFicyAkX19zdGFydF94ZW4sICVbcmlwXVxuXHQiCiAgICAgICAgICAgICAgICAgICAg ImxnZHQgICBnZHRfZGVzY3IoJSVyaXApXG5cdCIKLSAgICAgICAgICAgICAgICAgICAibW92ICAg IHN0YWNrX3N0YXJ0KCUlcmlwKSwgJSVyc3Bcblx0IgorICAgICAgICAgICAgICAgICAgICJsZWEg ICAgJWNbc3Rrb2ZmXSArIGNwdTBfc3RhY2soJSVyaXApLCAlJXJzcFxuXHQiCiAgICAgICAgICAg ICAgICAgICAgIm1vdiAgICAlW2RzXSwgJSVzc1xuXHQiCiAgICAgICAgICAgICAgICAgICAgIm1v diAgICAlW2RzXSwgJSVkc1xuXHQiCiAgICAgICAgICAgICAgICAgICAgIm1vdiAgICAlW2RzXSwg JSVlc1xuXHQiCiAgICAgICAgICAgICAgICAgICAgIm1vdiAgICAlW2RzXSwgJSVmc1xuXHQiCiAg ICAgICAgICAgICAgICAgICAgIm1vdiAgICAlW2RzXSwgJSVnc1xuXHQiCi0gICAgICAgICAgICAg ICAgICAgIm1vdmwgICAlW2NzXSwgOCglJXJzcClcblx0IgotICAgICAgICAgICAgICAgICAgICJt b3YgICAgJVtyaXBdLCAoJSVyc3ApXG5cdCIKLSAgICAgICAgICAgICAgICAgICAibHJldHEgICVb c3Rrb2ZmXS0xNiIKKyAgICAgICAgICAgICAgICAgICAicHVzaCAgICVbY3NdXG5cdCIKKyAgICAg ICAgICAgICAgICAgICAicHVzaCAgICVbcmlwXVxuXHQiCisgICAgICAgICAgICAgICAgICAgImxy ZXRxIgogICAgICAgICAgICAgICAgICAgIDogW3JpcF0gIj0mciIgKGVmZXIvKiBhbnkgZGVhZCA2 NC1iaXQgdmFyaWFibGUgKi8pLAogICAgICAgICAgICAgICAgICAgICAgW2NyNF0gIismciIgKGNy NCkKICAgICAgICAgICAgICAgICAgICA6IFtjcjNdICJyIiAoaWRsZV9wZ190YWJsZSksCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC92bWNzLmMKaW5kZXggNzk1MjEwZi4uNDgzZjcyZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h2bS92bXgvdm1jcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwpAQCAtODA0 LDE1ICs4MDQsNiBAQCBzdGF0aWMgdm9pZCB2bXhfc2V0X2hvc3RfZW52KHN0cnVjdCB2Y3B1ICp2 KQogCiAgICAgX192bXdyaXRlKEhPU1RfVFJfQkFTRSwgKHVuc2lnbmVkIGxvbmcpJnBlcl9jcHUo aW5pdF90c3MsIGNwdSkpOwogCi0gICAgX192bXdyaXRlKEhPU1RfU1lTRU5URVJfRVNQLCBnZXRf c3RhY2tfYm90dG9tKCkpOwotCi0gICAgLyoKLSAgICAgKiBTa2lwIGVuZCBvZiBjcHVfdXNlcl9y ZWdzIHdoZW4gZW50ZXJpbmcgdGhlIGh5cGVydmlzb3IgYmVjYXVzZSB0aGUKLSAgICAgKiBDUFUg ZG9lcyBub3Qgc2F2ZSBjb250ZXh0IG9udG8gdGhlIHN0YWNrLiBTUyxSU1AsQ1MsUklQLFJGTEFH UyxldGMKLSAgICAgKiBhbGwgZ2V0IHNhdmVkIGludG8gdGhlIFZNQ1MgaW5zdGVhZC4KLSAgICAg Ki8KLSAgICBfX3Ztd3JpdGUoSE9TVF9SU1AsCi0gICAgICAgICAgICAgICh1bnNpZ25lZCBsb25n KSZnZXRfY3B1X2luZm8oKS0+Z3Vlc3RfY3B1X3VzZXJfcmVncy5lcnJvcl9jb2RlKTsKIH0KIAog dm9pZCB2bXhfY2xlYXJfbXNyX2ludGVyY2VwdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50 IG1zciwKQEAgLTExNDgsMTMgKzExMzksMjEgQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhz dHJ1Y3QgdmNwdSAqdikKICAgICBfX3Ztd3JpdGUoSE9TVF9DUjAsIHYtPmFyY2guaHZtX3ZteC5o b3N0X2NyMCk7CiAgICAgX192bXdyaXRlKEhPU1RfQ1I0LCBtbXVfY3I0X2ZlYXR1cmVzKTsKIAot ICAgIC8qIEhvc3QgQ1M6UklQLiAqLworICAgIC8qIEhvc3QgY29kZS9zdGFjay4gKi8KICAgICBf X3Ztd3JpdGUoSE9TVF9DU19TRUxFQ1RPUiwgX19IWVBFUlZJU09SX0NTKTsKICAgICBfX3Ztd3Jp dGUoSE9TVF9SSVAsICh1bnNpZ25lZCBsb25nKXZteF9hc21fdm1leGl0X2hhbmRsZXIpOworICAg IF9fdm13cml0ZShIT1NUX1JTUCwgLyogVk1FeGl0IGRvZXNuJ3QgcHVzaCBhbiBleGNwZXRpb24g ZnJhbWUuICovCisgICAgICAgICAgICAgIChQRVJDUFVfU1RBQ0tfTUFQUElORyArIFNUQUNLX1NJ WkUgLQorICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBjcHVfaW5mbykgKworICAgICAgICAg ICAgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV9pbmZvLCBndWVzdF9jcHVfdXNlcl9yZWdzLmVycm9y X2NvZGUpKSk7CiAKLSAgICAvKiBIb3N0IFNZU0VOVEVSIENTOlJJUC4gKi8KKyAgICAvKiBIb3N0 IFNZU0VOVEVSIGNvZGUvc3RhY2suICovCiAgICAgX192bXdyaXRlKEhPU1RfU1lTRU5URVJfQ1Ms IF9fSFlQRVJWSVNPUl9DUyk7CiAgICAgX192bXdyaXRlKEhPU1RfU1lTRU5URVJfRUlQLCAodW5z aWduZWQgbG9uZylzeXNlbnRlcl9lbnRyeSk7CisgICAgX192bXdyaXRlKEhPU1RfU1lTRU5URVJf RVNQLAorICAgICAgICAgICAgICAoUEVSQ1BVX1NUQUNLX01BUFBJTkcgKyBTVEFDS19TSVpFIC0K KyAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgY3B1X2luZm8pICsKKyAgICAgICAgICAgICAg IG9mZnNldG9mKHN0cnVjdCBjcHVfaW5mbywgZ3Vlc3RfY3B1X3VzZXJfcmVncy5lcykpKTsKIAog ICAgIC8qIE1TUiBpbnRlcmNlcHRzLiAqLwogICAgIF9fdm13cml0ZShWTV9FWElUX01TUl9MT0FE X0NPVU5ULCAwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2 L21tLmMKaW5kZXggOTMzYmQ2Ny4uY2I1NDkyMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21t LmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTUyODEsMjEgKzUyODEsNiBAQCB2b2lkIG1l bWd1YXJkX3VuZ3VhcmRfcmFuZ2Uodm9pZCAqcCwgdW5zaWduZWQgbG9uZyBsKQogCiAjZW5kaWYK IAotdm9pZCBtZW1ndWFyZF9ndWFyZF9zdGFjayh2b2lkICpwKQotewotICAgIEJVSUxEX0JVR19P TigoUFJJTUFSWV9TVEFDS19TSVpFICsgUEFHRV9TSVpFKSA+IFNUQUNLX1NJWkUpOwotICAgIHAg PSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylwICsgU1RBQ0tfU0laRSAtCi0gICAgICAgICAgICAg ICAgIFBSSU1BUllfU1RBQ0tfU0laRSAtIFBBR0VfU0laRSk7Ci0gICAgbWVtZ3VhcmRfZ3VhcmRf cmFuZ2UocCwgUEFHRV9TSVpFKTsKLX0KLQotdm9pZCBtZW1ndWFyZF91bmd1YXJkX3N0YWNrKHZv aWQgKnApCi17Ci0gICAgcCA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXAgKyBTVEFDS19TSVpF IC0KLSAgICAgICAgICAgICAgICAgUFJJTUFSWV9TVEFDS19TSVpFIC0gUEFHRV9TSVpFKTsKLSAg ICBtZW1ndWFyZF91bmd1YXJkX3JhbmdlKHAsIFBBR0VfU0laRSk7Ci19Ci0KIHZvaWQgYXJjaF9k dW1wX3NoYXJlZF9tZW1faW5mbyh2b2lkKQogewogICAgIHByaW50aygiU2hhcmVkIGZyYW1lcyAl dSAtLSBTYXZlZCBmcmFtZXMgJXVcbiIsCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAu YyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4IGQ2MjRiOTUuLmMwZjcyODkgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC02 NTEsOCArNjUxLDYgQEAgc3RhdGljIHZvaWQgbm9pbmxpbmUgaW5pdF9kb25lKHZvaWQpCiAvKiBS ZWluaXRhbGlzZSBhbGwgc3RhdGUgcmVmZXJyaW5nIHRvIHRoZSBvbGQgdmlydHVhbCBhZGRyZXNz IG9mIHRoZSBzdGFjay4gKi8KIHN0YXRpYyB2b2lkIF9faW5pdCBub3JldHVybiByZWluaXRfYnNw X3N0YWNrKHZvaWQpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyAqc3RhY2sgPSAodm9pZCopKGdldF9z dGFja19ib3R0b20oKSAmIH4oU1RBQ0tfU0laRSAtIDEpKTsKLQogICAgIC8qIFNhbml0eSBjaGVj ayB0aGF0IElTVCBzZXR0aW5ncyB3ZXJlbid0IHNldCB1cCBiZWZvcmUgdGhpcyBwb2ludC4gKi8K ICAgICBBU1NFUlQoTUFTS19FWFRSKGlkdF90YWJsZXNbMF1bVFJBUF9ubWldLmEsIDdVTCA8PCAz MikgPT0gMCk7CiAKQEAgLTY2NCw5ICs2NjIsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbm9yZXR1 cm4gcmVpbml0X2JzcF9zdGFjayh2b2lkKQogICAgIC8qIFVwZGF0ZSBTWVNDQUxMIHRyYW1wb2xp bmVzICovCiAgICAgcGVyY3B1X3RyYXBzX2luaXQoKTsKIAotICAgIHN0YWNrX2Jhc2VbMF0gPSBz dGFjazsKLSAgICBtZW1ndWFyZF9ndWFyZF9zdGFjayhzdGFjayk7Ci0KICAgICByZXNldF9zdGFj a19hbmRfanVtcChpbml0X2RvbmUpOwogfQogCkBAIC0xNzQ0LDExICsxNzM5LDI1IEBAIHZvaWQg X19pbml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAKICAgICBz ZXR1cF9pb19iaXRtYXAoZG9tMCk7CiAKLSAgICAvKiBKdW1wIHRvIHRoZSAxOjEgdmlydHVhbCBt YXBwaW5ncyBvZiBjcHUwX3N0YWNrLiAqLwotICAgIGFzbSB2b2xhdGlsZSAoIm1vdiAlW3N0a10s ICUlcnNwOyBqbXAgJWNbZm5dIiA6OgotICAgICAgICAgICAgICAgICAgW3N0a10gImciIChfX3Zh KF9fcGEoZ2V0X3N0YWNrX2JvdHRvbSgpKSkpLAotICAgICAgICAgICAgICAgICAgW2ZuXSAiaSIg KHJlaW5pdF9ic3Bfc3RhY2spIDogIm1lbW9yeSIpOwotICAgIHVucmVhY2hhYmxlKCk7CisgICAg LyoKKyAgICAgKiBTd2l0Y2ggZnJvbSBjcHUwX3N0YWNrIHRvIHRoZSBwZXJjcHUgc3RhY2ssIGNv cHlpbmcgdGhlIG5vbi1HUFIKKyAgICAgKiBjcHVfaW5mbyBkYXRhIGludG8gcGxhY2UgYmVmb3Jl IGhhbmQuCisgICAgICovCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1X2luZm8gKnNy YyA9IGdldF9jcHVfaW5mbygpOworICAgICAgICBzdHJ1Y3QgY3B1X2luZm8gKmRzdCA9IF9wKFBF UkNQVV9TVEFDS19NQVBQSU5HICsgU1RBQ0tfU0laRSAtCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKCpkc3QpKTsKKworICAgICAgICBkc3QtPnByb2Nlc3Nvcl9pZCAg ID0gc3JjLT5wcm9jZXNzb3JfaWQ7CisgICAgICAgIGRzdC0+Y3VycmVudF92Y3B1ICAgPSBzcmMt PmN1cnJlbnRfdmNwdTsKKyAgICAgICAgZHN0LT5wZXJfY3B1X29mZnNldCA9IHNyYy0+cGVyX2Nw dV9vZmZzZXQ7CisgICAgICAgIGRzdC0+Y3I0ICAgICAgICAgICAgPSBzcmMtPmNyNDsKKworICAg ICAgICBhc20gdm9sYXRpbGUgKCJtb3YgJVtzdGtdLCAlJXJzcDsgam1wICVjW2ZuXSIgOjoKKyAg ICAgICAgICAgICAgICAgICAgICBbc3RrXSAiZyIgKCZkc3QtPmd1ZXN0X2NwdV91c2VyX3JlZ3Mu ZXMpLAorICAgICAgICAgICAgICAgICAgICAgIFtmbl0gImkiIChyZWluaXRfYnNwX3N0YWNrKSA6 ICJtZW1vcnkiKTsKKyAgICAgICAgdW5yZWFjaGFibGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgYXJj aF9nZXRfeGVuX2NhcHMoeGVuX2NhcGFiaWxpdGllc19pbmZvX3QgKmluZm8pCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvc21wYm9vdC5jIGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCBm Nzg1ZDVmLi43N2VlODgzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9zbXBib290LmMKQEAgLTkxLDggKzkxLDYgQEAgc3RhdGljIGVudW0gY3B1 X3N0YXRlIHsKIH0gY3B1X3N0YXRlOwogI2RlZmluZSBzZXRfY3B1X3N0YXRlKHN0YXRlKSBkbyB7 IHNtcF9tYigpOyBjcHVfc3RhdGUgPSAoc3RhdGUpOyB9IHdoaWxlICgwKQogCi12b2lkICpzdGFj a19iYXNlW05SX0NQVVNdOwotCiB2b2lkIGluaXRpYWxpemVfY3B1X2RhdGEodW5zaWduZWQgaW50 IGNwdSkKIHsKICAgICBjcHVfZGF0YVtjcHVdID0gYm9vdF9jcHVfZGF0YTsKQEAgLTM4Niw3ICsz ODQsNiBAQCB2b2lkIHN0YXJ0X3NlY29uZGFyeSh2b2lkICp1bnVzZWQpCiAKIC8qIFVzZWQgdG8g cGFzcyBwZXJjcHVfaWRsZV9wdCB0byB0aGUgYm9vdGluZyBBUC4gKi8KIHBhZGRyX3QgYXBfY3Iz OwotZXh0ZXJuIHZvaWQgKnN0YWNrX3N0YXJ0OwogCiBzdGF0aWMgaW50IHdha2V1cF9zZWNvbmRh cnlfY3B1KGludCBwaHlzX2FwaWNpZCwgdW5zaWduZWQgbG9uZyBzdGFydF9laXApCiB7CkBAIC01 MjksNyArNTI2LDYgQEAgc3RhdGljIGludCBkb19ib290X2NwdShpbnQgYXBpY2lkLCBpbnQgY3B1 KQogICAgICAgICAgICAgICAgY3B1LCBhcGljaWQsIHN0YXJ0X2VpcCk7CiAKICAgICBhcF9jcjMg PSBwZXJfY3B1KHBlcmNwdV9pZGxlX3B0LCBjcHUpOwotICAgIHN0YWNrX3N0YXJ0ID0gc3RhY2tf YmFzZVtjcHVdOwogCiAgICAgLyogVGhpcyBncnVuZ2UgcnVucyB0aGUgc3RhcnR1cCBwcm9jZXNz IGZvciB0aGUgdGFyZ2V0ZWQgcHJvY2Vzc29yLiAqLwogCkBAIC0xMDAyLDEzICs5OTgsNiBAQCBz dGF0aWMgdm9pZCBjcHVfc21wYm9vdF9mcmVlKHVuc2lnbmVkIGludCBjcHUpCiAgICAgZnJlZV94 ZW5oZWFwX3BhZ2UoaWR0X3RhYmxlc1tjcHVdKTsKICAgICBpZHRfdGFibGVzW2NwdV0gPSBOVUxM OwogCi0gICAgaWYgKCBzdGFja19iYXNlW2NwdV0gIT0gTlVMTCApCi0gICAgewotICAgICAgICBt ZW1ndWFyZF91bmd1YXJkX3N0YWNrKHN0YWNrX2Jhc2VbY3B1XSk7Ci0gICAgICAgIGZyZWVfeGVu aGVhcF9wYWdlcyhzdGFja19iYXNlW2NwdV0sIFNUQUNLX09SREVSKTsKLSAgICAgICAgc3RhY2tf YmFzZVtjcHVdID0gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIHBlcl9jcHUocGVyY3B1X2lkbGVf cHQsIGNwdSkgKQogICAgIHsKICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UobWFkZHJfdG9fcGFn ZShwZXJfY3B1KHBlcmNwdV9pZGxlX3B0LCBjcHUpKSk7CkBAIC0xMDMwLDExICsxMDE5LDYgQEAg c3RhdGljIGludCBjcHVfc21wYm9vdF9hbGxvYyh1bnNpZ25lZCBpbnQgY3B1KQogICAgIGlmICgg bm9kZSAhPSBOVU1BX05PX05PREUgKQogICAgICAgICBtZW1mbGFncyA9IE1FTUZfbm9kZShub2Rl KTsKIAotICAgIHN0YWNrX2Jhc2VbY3B1XSA9IGFsbG9jX3hlbmhlYXBfcGFnZXMoU1RBQ0tfT1JE RVIsIG1lbWZsYWdzKTsKLSAgICBpZiAoIHN0YWNrX2Jhc2VbY3B1XSA9PSBOVUxMICkKLSAgICAg ICAgZ290byBvdXQ7Ci0gICAgbWVtZ3VhcmRfZ3VhcmRfc3RhY2soc3RhY2tfYmFzZVtjcHVdKTsK LQogICAgIG9yZGVyID0gZ2V0X29yZGVyX2Zyb21fcGFnZXMoTlJfUkVTRVJWRURfR0RUX1BBR0VT KTsKICAgICBwZXJfY3B1KGdkdF90YWJsZSwgY3B1KSA9IGdkdCA9IGFsbG9jX3hlbmhlYXBfcGFn ZXMob3JkZXIsIG1lbWZsYWdzKTsKICAgICBpZiAoIGdkdCA9PSBOVUxMICkKQEAgLTExNDgsOCAr MTEzMiw2IEBAIHZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2NwdXModW5zaWduZWQgaW50IG1heF9j cHVzKQogICAgIGJvb3RfY3B1X3BoeXNpY2FsX2FwaWNpZCA9IGdldF9hcGljX2lkKCk7CiAgICAg eDg2X2NwdV90b19hcGljaWRbMF0gPSBib290X2NwdV9waHlzaWNhbF9hcGljaWQ7CiAKLSAgICBz dGFja19iYXNlWzBdID0gc3RhY2tfc3RhcnQ7Ci0KICAgICBzZXRfbnJfc29ja2V0cygpOwogCiAg ICAgc29ja2V0X2NwdW1hc2sgPSB4emFsbG9jX2FycmF5KGNwdW1hc2tfdCAqLCBucl9zb2NrZXRz KTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jIGIveGVuL2FyY2gveDg2L3Rib290 LmMKaW5kZXggNTlkN2M0Ny4uYzI4M2I5MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Rib290 LmMKKysrIGIveGVuL2FyY2gveDg2L3Rib290LmMKQEAgLTI0MywyOSArMjQzLDYgQEAgc3RhdGlj IHZvaWQgdGJvb3RfZ2VuX2RvbWFpbl9pbnRlZ3JpdHkoY29uc3QgdWludDhfdCBrZXlbVEJfS0VZ X1NJWkVdLAogICAgIG1lbXNldCgmY3R4LCAwLCBzaXplb2YoY3R4KSk7CiB9CiAKLS8qCi0gKiBG b3Igc3RhY2sgb3ZlcmZsb3cgZGV0ZWN0aW9uIGluIGRlYnVnIGJ1aWxkLCBhIGd1YXJkIHBhZ2Ug aXMgc2V0IHVwLgotICogVGhpcyBmbiBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgcGFnZSBp cyBpbiB0aGUgZ3VhcmRlZCBwYWdlcyBmb3IKLSAqIHRoZSBhYm92ZSByZWFzb24uCi0gKi8KLXN0 YXRpYyBpbnQgbWZuX2luX2d1YXJkZWRfc3RhY2sodW5zaWduZWQgbG9uZyBtZm4pCi17Ci0gICAg dm9pZCAqcDsKLSAgICBpbnQgaTsKLQotICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfY3B1X2lkczsg aSsrICkKLSAgICB7Ci0gICAgICAgIGlmICggIXN0YWNrX2Jhc2VbaV0gKQotICAgICAgICAgICAg Y29udGludWU7Ci0gICAgICAgIHAgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFja19iYXNl W2ldICsgU1RBQ0tfU0laRSAtCi0gICAgICAgICAgICAgICAgICAgICBQUklNQVJZX1NUQUNLX1NJ WkUgLSBQQUdFX1NJWkUpOwotICAgICAgICBpZiAoIG1mbiA9PSB2aXJ0X3RvX21mbihwKSApCi0g ICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRp YyB2b2lkIHRib290X2dlbl94ZW5oZWFwX2ludGVncml0eShjb25zdCB1aW50OF90IGtleVtUQl9L RVlfU0laRV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1hY190 ICptYWMpCiB7CkBAIC0yOTAsMTIgKzI2Nyw4IEBAIHN0YXRpYyB2b2lkIHRib290X2dlbl94ZW5o ZWFwX2ludGVncml0eShjb25zdCB1aW50OF90IGtleVtUQl9LRVlfU0laRV0sCiAKICAgICAgICAg aWYgKCBpc19wYWdlX2luX3VzZShwYWdlKSAmJiBpc194ZW5faGVhcF9wYWdlKHBhZ2UpICkKICAg ICAgICAgewotICAgICAgICAgICAgdm9pZCAqcGc7Ci0KLSAgICAgICAgICAgIGlmICggbWZuX2lu X2d1YXJkZWRfc3RhY2sobWZuKSApCi0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIHNraXAg Z3VhcmQgc3RhY2ssIHNlZSBtZW1ndWFyZF9ndWFyZF9zdGFjaygpIGluIG1tLmMgKi8KKyAgICAg ICAgICAgIHZvaWQgKnBnID0gbWZuX3RvX3ZpcnQobWZuKTsKIAotICAgICAgICAgICAgcGcgPSBt Zm5fdG9fdmlydChtZm4pOwogICAgICAgICAgICAgdm1hY191cGRhdGUoKHVpbnQ4X3QgKilwZywg UEFHRV9TSVpFLCAmY3R4KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggZWVhYmI0YS4uNDkzZjhm MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3Ry YXBzLmMKQEAgLTM1Niw5ICszNTYsNiBAQCB1bnNpZ25lZCBsb25nIGdldF9zdGFja190cmFjZV9i b3R0b20odW5zaWduZWQgbG9uZyBzcCkKICAgICAgICAgcmV0dXJuIFJPVU5EVVAoc3AsIFBBR0Vf U0laRSkgLQogICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3MsIGVzKSAt IHNpemVvZih1bnNpZ25lZCBsb25nKTsKIAotI2lmbmRlZiBNRU1PUllfR1VBUkQKLSAgICBjYXNl IDMgLi4uIDU6Ci0jZW5kaWYKICAgICBjYXNlIDYgLi4uIDc6CiAgICAgICAgIHJldHVybiBST1VO RFVQKHNwLCBTVEFDS19TSVpFKSAtCiAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGNwdV9pbmZv KSAtIHNpemVvZih1bnNpZ25lZCBsb25nKTsKQEAgLTM3NSw5ICszNzIsNiBAQCB1bnNpZ25lZCBs b25nIGdldF9zdGFja19kdW1wX2JvdHRvbSh1bnNpZ25lZCBsb25nIHNwKQogICAgIGNhc2UgMCAu Li4gMjoKICAgICAgICAgcmV0dXJuIFJPVU5EVVAoc3AsIFBBR0VfU0laRSkgLSBzaXplb2YodW5z aWduZWQgbG9uZyk7CiAKLSNpZm5kZWYgTUVNT1JZX0dVQVJECi0gICAgY2FzZSAzIC4uLiA1Ogot I2VuZGlmCiAgICAgY2FzZSA2IC4uLiA3OgogICAgICAgICByZXR1cm4gUk9VTkRVUChzcCwgU1RB Q0tfU0laRSkgLSBzaXplb2YodW5zaWduZWQgbG9uZyk7CiAKQEAgLTUxOCw5ICs1MTIsOSBAQCB2 b2lkIHNob3dfc3RhY2tfb3ZlcmZsb3codW5zaWduZWQgaW50IGNwdSwgY29uc3Qgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgdW5zaWduZWQgbG9uZyBlc3BfdG9wLCBlc3BfYm90dG9t OwogI2VuZGlmCiAKLSAgICBpZiAoIF9wKGN1cnJfc3RhY2tfYmFzZSkgIT0gc3RhY2tfYmFzZVtj cHVdICkKKyAgICBpZiAoIGN1cnJfc3RhY2tfYmFzZSAhPSBQRVJDUFVfU1RBQ0tfTUFQUElORyAp CiAgICAgICAgIHByaW50aygiQ3VycmVudCBzdGFjayBiYXNlICVwIGRpZmZlcnMgZnJvbSBleHBl Y3RlZCAlcFxuIiwKLSAgICAgICAgICAgICAgIF9wKGN1cnJfc3RhY2tfYmFzZSksIHN0YWNrX2Jh c2VbY3B1XSk7CisgICAgICAgICAgICAgICBfcChjdXJyX3N0YWNrX2Jhc2UpLCBfcChQRVJDUFVf U1RBQ0tfTUFQUElORykpOwogCiAjaWZkZWYgTUVNT1JZX0dVQVJECiAgICAgZXNwX2JvdHRvbSA9 IChlc3AgfCAoU1RBQ0tfU0laRSAtIDEpKSArIDE7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20tYXJtL21tLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKaW5kZXggNGQ1NTYzYi4uODZi OGZjYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vbW0uaApAQCAtMzYyLDcgKzM2Miw2IEBAIHVuc2lnbmVkIGxvbmcgZG9tYWlu X2dldF9tYXhpbXVtX2dwZm4oc3RydWN0IGRvbWFpbiAqZCk7CiAKIGV4dGVybiBzdHJ1Y3QgZG9t YWluICpkb21feGVuLCAqZG9tX2lvLCAqZG9tX2NvdzsKIAotI2RlZmluZSBtZW1ndWFyZF9ndWFy ZF9zdGFjayhfcCkgICAgICAgKCh2b2lkKTApCiAjZGVmaW5lIG1lbWd1YXJkX2d1YXJkX3Jhbmdl KF9wLF9sKSAgICAoKHZvaWQpMCkKICNkZWZpbmUgbWVtZ3VhcmRfdW5ndWFyZF9yYW5nZShfcCxf bCkgICgodm9pZCkwKQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKaW5kZXggMjJjMjgwOS4uMmMxZWQxZCAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0u aApAQCAtNTIxLDkgKzUyMSw2IEBAIHZvaWQgbWVtZ3VhcmRfdW5ndWFyZF9yYW5nZSh2b2lkICpw LCB1bnNpZ25lZCBsb25nIGwpOwogI2RlZmluZSBtZW1ndWFyZF91bmd1YXJkX3JhbmdlKF9wLF9s KSAgKCh2b2lkKTApCiAjZW5kaWYKIAotdm9pZCBtZW1ndWFyZF9ndWFyZF9zdGFjayh2b2lkICpw KTsKLXZvaWQgbWVtZ3VhcmRfdW5ndWFyZF9zdGFjayh2b2lkICpwKTsKLQogc3RydWN0IG1taW9f cm9fZW11bGF0ZV9jdHh0IHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBjcjI7CiAgICAgICAgIHVu c2lnbmVkIGludCBzZWcsIGJkZjsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zbXAuaCBi L3hlbi9pbmNsdWRlL3hlbi9zbXAuaAppbmRleCBjNTVmNTdmLi5kMzBmMzY5IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS94ZW4vc21wLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3NtcC5oCkBAIC02 OSw4ICs2OSw2IEBAIHZvaWQgc21wX3NlbmRfY2FsbF9mdW5jdGlvbl9tYXNrKGNvbnN0IGNwdW1h c2tfdCAqbWFzayk7CiAKIGludCBhbGxvY19jcHVfaWQodm9pZCk7CiAKLWV4dGVybiB2b2lkICpz dGFja19iYXNlW05SX0NQVVNdOwotCiB2b2lkIGluaXRpYWxpemVfY3B1X2RhdGEodW5zaWduZWQg aW50IGNwdSk7CiAKICNlbmRpZiAvKiBfX1hFTl9TTVBfSF9fICovCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=