From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0118DC678D4 for ; Thu, 2 Mar 2023 12:43:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=/MQy3sHCgnXB3HvVXrX6CS3SrOVCqkbZTY5mOzBom4o=; b=4FyC3WL4P3+kDO IhmA54LRTSr2/xHyHT5b83o/JvfJ0tDUMDsdR1c9od+/BhLHlpKGxNEQIKJ15pUbxQm3jqR8hauSl PiJ6h0LNPqeuC9C6RHw1DtRKkD0Ccwiie6SJsxH7N5SURz9irmL5ANW47HBd2vS946quaLkkprNpt RbBufwclb/7gVbzWyH8I9/hkvjg1ttLHSDZLz3VX3FC/wqJnPbKmwemOXyCFvNk2VzEImJk6C036E Ee+RCy7kABFbtLLWJv2a8k0Fu7sF7cpfmvZei2suBGyaMxQr3SIQGzK8XoJjENEO0TO+R3FsLuKov TTTlgm3i3LiRbN/b1d7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXiGv-002CjU-NA; Thu, 02 Mar 2023 12:42:57 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pXiGs-002CiA-3n; Thu, 02 Mar 2023 12:42:56 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 55D84615AE; Thu, 2 Mar 2023 12:42:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D88CC433EF; Thu, 2 Mar 2023 12:42:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1677760972; bh=EEgAdGgMKd7fneB3MrCFQZbHHomNu4DMTJf0w8KbB54=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=K5fUrpjcyUHtyAF6mb07D67mmGoLTz8OwcbL8DE2io5oGi8HLXmeDqhcS0tgglb/u kfyicUcUs1bLXzhauAaKvzXglb79FFAEHAZ+hlFejF3q129Eprr+GZUBjtBuBeVdjn +MhWVpLwhZpu0eArl7VXllfVwWeB52l7DuW9FiOcfB+IgJVTxa3RoN3anM6S+j0E1+ avT+eFA9J4u9GL9GQp1XUMcazHj1GZ0uaD4i/rRNv/YU2N4L6Rk9PTisROse2jq0Wl NqslYHlKBGwqq2uOy1FIgXUbiR0dL1wRvPHi5Yq3//9FE9IS899zPjSPGhqdTzasVM JsYMMjUvTqcag== From: =?utf-8?B?QmrDtnJuIFTDtnBlbA==?= To: Andy Chiu , linux-riscv@lists.infradead.org, palmer@dabbelt.com, anup@brainfault.org, atishp@atishpatra.org, kvm-riscv@lists.infradead.org, kvm@vger.kernel.org Cc: vineetg@rivosinc.com, greentime.hu@sifive.com, guoren@linux.alibaba.com, Vincent Chen , Andy Chiu , Paul Walmsley , Albert Ou , Richard Henderson , Conor Dooley , Heiko Stuebner , Guo Ren , =?utf-8?B?QmrDtnJuIFQ=?= =?utf-8?B?w7ZwZWw=?= , Wenting Zhang , Jisheng Zhang , Xianting Tian , David Hildenbrand , Al Viro , Andrew Bresticker Subject: Re: [PATCH -next v14 13/19] riscv: signal: Add sigcontext save/restore for vector In-Reply-To: <20230224170118.16766-14-andy.chiu@sifive.com> References: <20230224170118.16766-1-andy.chiu@sifive.com> <20230224170118.16766-14-andy.chiu@sifive.com> Date: Thu, 02 Mar 2023 13:42:49 +0100 Message-ID: <87bklb494m.fsf@all.your.base.are.belong.to.us> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230302_044254_290890_981E6747 X-CRM114-Status: GOOD ( 29.97 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org QW5keSBDaGl1IDxhbmR5LmNoaXVAc2lmaXZlLmNvbT4gd3JpdGVzOgoKPiBkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3NldHVwLmMKPiBp bmRleCAzNzZkMjgyN2U3MzYuLmI5YjNlMDNiMjU2NCAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2 L2tlcm5lbC9zZXR1cC5jCj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAuYwo+IEBAIC0y NjIsNiArMjYyLDggQEAgc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX2R0Yih2b2lkKQo+ICAjZW5k aWYKPiAgfQo+ICAKPiArZXh0ZXJuIHZvaWQgX19pbml0IGluaXRfcnRfc2lnbmFsX2Vudih2b2lk KTsKPiArCj4gIHZvaWQgX19pbml0IHNldHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKPiAgewo+ ICAJcGFyc2VfZHRiKCk7Cj4gQEAgLTI5OSw2ICszMDEsNyBAQCB2b2lkIF9faW5pdCBzZXR1cF9h cmNoKGNoYXIgKipjbWRsaW5lX3ApCj4gIAo+ICAJcmlzY3ZfaW5pdF9jYm9tX2Jsb2Nrc2l6ZSgp Owo+ICAJcmlzY3ZfZmlsbF9od2NhcCgpOwo+ICsJaW5pdF9ydF9zaWduYWxfZW52KCk7Cj4gIAlh cHBseV9ib290X2FsdGVybmF0aXZlcygpOwo+ICAJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NW X0lTQV9aSUNCT00pICYmCj4gIAkgICAgcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVM TCwgWklDQk9NKSkKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc2lnbmFsLmMgYi9h cmNoL3Jpc2N2L2tlcm5lbC9zaWduYWwuYwo+IGluZGV4IDBjOGJlNTQwNGE3My4uNzZjMDQ4MGVl NGNkIDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3NpZ25hbC5jCj4gKysrIGIvYXJj aC9yaXNjdi9rZXJuZWwvc2lnbmFsLmMKPiBAQCAtMTgsOSArMTgsMTEgQEAKPiAgI2luY2x1ZGUg PGFzbS9zaWduYWwuaD4KPiAgI2luY2x1ZGUgPGFzbS9zaWduYWwzMi5oPgo+ICAjaW5jbHVkZSA8 YXNtL3N3aXRjaF90by5oPgo+ICsjaW5jbHVkZSA8YXNtL3ZlY3Rvci5oPgo+ICAjaW5jbHVkZSA8 YXNtL2Nzci5oPgo+ICAKPiAgZXh0ZXJuIHUzMiBfX3VzZXJfcnRfc2lncmV0dXJuWzJdOwo+ICtz dGF0aWMgc2l6ZV90IHJpc2N2X3Zfc2Nfc2l6ZTsKCl9fcm9fYWZ0ZXJfaW5pdD8KCj4gIAo+ICAj ZGVmaW5lIERFQlVHX1NJRyAwCj4gIAo+IEBAIC02MiwzNCArNjQsMTU5IEBAIHN0YXRpYyBsb25n IHNhdmVfZnBfc3RhdGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCj4gICNkZWZpbmUgcmVzdG9yZV9m cF9zdGF0ZSh0YXNrLCByZWdzKSAoMCkKPiAgI2VuZGlmCj4gIAo+ICsjaWZkZWYgQ09ORklHX1JJ U0NWX0lTQV9WCj4gKwo+ICtzdGF0aWMgbG9uZyBzYXZlX3Zfc3RhdGUoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHZvaWQgKipzY192ZWMpCj4gK3sKPiArCS8qCj4gKwkgKiBQdXQgX19zY19yaXNjdl92 X3N0YXRlIHRvIHRoZSB1c2VyJ3Mgc2lnbmFsIGNvbnRleHQgc3BhY2UgcG9pbnRlZAo+ICsJICog Ynkgc2NfdmVjIGFuZCB0aGUgZGF0YXAgcG9pbnQgdGhlIGFkZHJlc3MgcmlnaHQKPiArCSAqIGFm dGVyIF9fc2NfcmlzY3Zfdl9zdGF0ZS4KPiArCSAqLwo+ICsJc3RydWN0IF9fcmlzY3ZfY3R4X2hk ciBfX3VzZXIgKmhkciA9IChzdHJ1Y3QgX19yaXNjdl9jdHhfaGRyICopKCpzY192ZWMpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl4KUmVtb3ZlIHVubmVj Y2VyeSBjYXN0IGFuZCBwYXJlbnRoZXNpcy4KCj4gKwlzdHJ1Y3QgX19zY19yaXNjdl92X3N0YXRl IF9fdXNlciAqc3RhdGUgPSAoc3RydWN0IF9fc2NfcmlzY3Zfdl9zdGF0ZSAqKShoZHIgKyAxKTsK PiArCXZvaWQgX191c2VyICpkYXRhcCA9IHN0YXRlICsgMTsKPiArCWxvbmcgZXJyOwo+ICsKPiAr CS8qIGRhdGFwIGlzIGRlc2lnbmVkIHRvIGJlIDE2IGJ5dGUgYWxpZ25lZCBmb3IgYmV0dGVyIHBl cmZvcm1hbmNlICovCj4gKwlXQVJOX09OKHVubGlrZWx5KCFJU19BTElHTkVEKCh1bnNpZ25lZCBs b25nKWRhdGFwLCAxNikpKTsKPiArCj4gKwlyaXNjdl92X3ZzdGF0ZV9zYXZlKGN1cnJlbnQsIHJl Z3MpOwo+ICsJLyogQ29weSBldmVyeXRoaW5nIG9mIHZzdGF0ZSBidXQgZGF0YXAuICovCj4gKwll cnIgPSBfX2NvcHlfdG9fdXNlcigmc3RhdGUtPnZfc3RhdGUsICZjdXJyZW50LT50aHJlYWQudnN0 YXRlLAo+ICsJCQkgICAgIG9mZnNldG9mKHN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0YXRlLCBkYXRh cCkpOwo+ICsJLyogQ29weSB0aGUgcG9pbnRlciBkYXRhcCBpdHNlbGYuICovCj4gKwllcnIgfD0g X19wdXRfdXNlcihkYXRhcCwgJnN0YXRlLT52X3N0YXRlLmRhdGFwKTsKPiArCS8qIENvcHkgdGhl IHdob2xlIHZlY3RvciBjb250ZW50IHRvIHVzZXIgc3BhY2UgZGF0YXAuICovCj4gKwllcnIgfD0g X19jb3B5X3RvX3VzZXIoZGF0YXAsIGN1cnJlbnQtPnRocmVhZC52c3RhdGUuZGF0YXAsIHJpc2N2 X3ZfdnNpemUpOwo+ICsJLyogQ29weSBtYWdpYyB0byB0aGUgdXNlciBzcGFjZSBhZnRlciBzYXZp bmcgIGFsbCB2ZWN0b3IgY29uZXRleHQgKi8KPiArCWVyciB8PSBfX3B1dF91c2VyKFJJU0NWX1Zf TUFHSUMsICZoZHItPm1hZ2ljKTsKPiArCWVyciB8PSBfX3B1dF91c2VyKHJpc2N2X3Zfc2Nfc2l6 ZSwgJmhkci0+c2l6ZSk7Cj4gKwlpZiAodW5saWtlbHkoZXJyKSkKPiArCQlyZXR1cm4gZXJyOwo+ ICsKPiArCS8qIE9ubHkgcHJvZ3Jlc3MgdGhlIHN2X3ZlYyBpZiBldmVyeXRoaW5nIGhhcyBkb25l IHN1Y2Nlc3NmdWxseSAgKi8KPiArCSpzY192ZWMgKz0gcmlzY3Zfdl9zY19zaXplOwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFJlc3RvcmUgVmVjdG9yIGV4dGVuc2lvbiBjb250 ZXh0IGZyb20gdGhlIHVzZXIncyBzaWduYWwgZnJhbWUuIFRoaXMgZnVuY3Rpb24KPiArICogYXNz dW1lcyBhIHZhbGlkIGV4dGVuc2lvbiBoZWFkZXIuIFNvIG1hZ2ljIGFuZCBzaXplIGNoZWNraW5n IG11c3QgYmUgZG9uZSBieQo+ICsgKiB0aGUgY2FsbGVyLgo+ICsgKi8KPiArc3RhdGljIGxvbmcg X19yZXN0b3JlX3Zfc3RhdGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKnNjX3ZlYykKPiAr ewo+ICsJbG9uZyBlcnI7Cj4gKwlzdHJ1Y3QgX19zY19yaXNjdl92X3N0YXRlIF9fdXNlciAqc3Rh dGUgPSAoc3RydWN0IF9fc2NfcmlzY3Zfdl9zdGF0ZSAqKShzY192ZWMpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXgpSZW1vdmUgdW5uZWNjZXJ5 IGNhc3QgYW5kIHBhcmVudGhlc2lzLgoKPiArCXZvaWQgX191c2VyICpkYXRhcDsKPiArCj4gKwkv KiBDb3B5IGV2ZXJ5dGhpbmcgb2YgX19zY19yaXNjdl92X3N0YXRlIGV4Y2VwdCBkYXRhcC4gKi8K PiArCWVyciA9IF9fY29weV9mcm9tX3VzZXIoJmN1cnJlbnQtPnRocmVhZC52c3RhdGUsICZzdGF0 ZS0+dl9zdGF0ZSwKPiArCQkJICAgICAgIG9mZnNldG9mKHN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0 YXRlLCBkYXRhcCkpOwo+ICsJaWYgKHVubGlrZWx5KGVycikpCj4gKwkJcmV0dXJuIGVycjsKPiAr Cj4gKwkvKiBDb3B5IHRoZSBwb2ludGVyIGRhdGFwIGl0c2VsZi4gKi8KPiArCWVyciA9IF9fZ2V0 X3VzZXIoZGF0YXAsICZzdGF0ZS0+dl9zdGF0ZS5kYXRhcCk7Cj4gKwlpZiAodW5saWtlbHkoZXJy KSkKPiArCQlyZXR1cm4gZXJyOwo+ICsJLyoKPiArCSAqIENvcHkgdGhlIHdob2xlIHZlY3RvciBj b250ZW50IGZyb20gdXNlciBzcGFjZSBkYXRhcC4gVXNlCj4gKwkgKiBjb3B5X2Zyb21fdXNlciB0 byBwcmV2ZW50IGluZm9ybWF0aW9uIGxlYWsuCj4gKwkgKi8KPiArCWVyciA9IGNvcHlfZnJvbV91 c2VyKGN1cnJlbnQtPnRocmVhZC52c3RhdGUuZGF0YXAsIGRhdGFwLCByaXNjdl92X3ZzaXplKTsK PiArCWlmICh1bmxpa2VseShlcnIpKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJcmlzY3Zfdl92 c3RhdGVfcmVzdG9yZShjdXJyZW50LCByZWdzKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4g KyNlbHNlCj4gKyNkZWZpbmUgc2F2ZV92X3N0YXRlKHRhc2ssIHJlZ3MpICgwKQo+ICsjZGVmaW5l IF9fcmVzdG9yZV92X3N0YXRlKHRhc2ssIHJlZ3MpICgwKQo+ICsjZW5kaWYKPiArCj4gIHN0YXRp YyBsb25nIHJlc3RvcmVfc2lnY29udGV4dChzdHJ1Y3QgcHRfcmVncyAqcmVncywKPiAgCXN0cnVj dCBzaWdjb250ZXh0IF9fdXNlciAqc2MpCgpUaGlzIHdob2xlIGZ1bmN0aW9uOyByZXR1cm4gaW4g ZmF2b3Igb2YgZ290bywgYW5kIHJlbW92ZSB0aGUgbGFiZWxzIGF0CnRoZSBib3R0b20uCgo+ICB7 Cj4gKwl2b2lkICpzY19leHRfcHRyID0gJnNjLT5zY19leHRkZXNjLmhkcjsKPiArCV9fdTMyIHJz dmQ7Cj4gIAlsb25nIGVycjsKPiAtCXNpemVfdCBpOwo+IC0KPiAgCS8qIHNjX3JlZ3MgaXMgc3Ry dWN0dXJlZCB0aGUgc2FtZSBhcyB0aGUgc3RhcnQgb2YgcHRfcmVncyAqLwo+ICAJZXJyID0gX19j b3B5X2Zyb21fdXNlcihyZWdzLCAmc2MtPnNjX3JlZ3MsIHNpemVvZihzYy0+c2NfcmVncykpOwo+ ICAJaWYgKHVubGlrZWx5KGVycikpCj4gLQkJcmV0dXJuIGVycjsKPiArCQlnb3RvIGRvbmU7Cj4g IAkvKiBSZXN0b3JlIHRoZSBmbG9hdGluZy1wb2ludCBzdGF0ZS4gKi8KPiAgCWlmIChoYXNfZnB1 KCkpIHsKPiAgCQllcnIgPSByZXN0b3JlX2ZwX3N0YXRlKHJlZ3MsICZzYy0+c2NfZnByZWdzKTsK PiAgCQlpZiAodW5saWtlbHkoZXJyKSkKPiAtCQkJcmV0dXJuIGVycjsKPiArCQkJZ290byBkb25l Owo+ICAJfQo+ICAKPiAtCS8qIFdlIHN1cHBvcnQgbm8gb3RoZXIgZXh0ZW5zaW9uIHN0YXRlIGF0 IHRoaXMgdGltZS4gKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNjLT5zY19mcHJl Z3MucS5yZXNlcnZlZCk7IGkrKykgewo+IC0JCXUzMiB2YWx1ZTsKPiAtCj4gLQkJZXJyID0gX19n ZXRfdXNlcih2YWx1ZSwgJnNjLT5zY19mcHJlZ3MucS5yZXNlcnZlZFtpXSk7Cj4gLQkJaWYgKHVu bGlrZWx5KGVycikpCj4gKwkvKiBDaGVjayB0aGUgcmVzZXJ2ZWQgd29yZCBiZWZvcmUgZXh0ZW5z aW9ucyBwYXJzaW5nICovCj4gKwllcnIgPSBfX2dldF91c2VyKHJzdmQsICZzYy0+c2NfZXh0ZGVz Yy5yZXNlcnZlZCk7Cj4gKwlpZiAodW5saWtlbHkoZXJyKSkKPiArCQlnb3RvIGRvbmU7Cj4gKwlp ZiAodW5saWtlbHkocnN2ZCkpCj4gKwkJZ290byBpbnZhbGlkOwo+ICsKPiArCXdoaWxlICgxICYm ICFlcnIpIHsKPiArCQlfX3UzMiBtYWdpYywgc2l6ZTsKPiArCQlzdHJ1Y3QgX19yaXNjdl9jdHhf aGRyICpoZWFkID0gKHN0cnVjdCBfX3Jpc2N2X2N0eF9oZHIgKilzY19leHRfcHRyOwoKUmVtb3Zl IHVubmVjY2VyeSBjYXN0LgoKPiArCj4gKwkJZXJyIHw9IF9fZ2V0X3VzZXIobWFnaWMsICZoZWFk LT5tYWdpYyk7Cj4gKwkJZXJyIHw9IF9fZ2V0X3VzZXIoc2l6ZSwgJmhlYWQtPnNpemUpOwo+ICsJ CWlmIChlcnIpCj4gKwkJCWdvdG8gZG9uZTsKPiArCj4gKwkJc2NfZXh0X3B0ciArPSBzaXplb2Yo c3RydWN0IF9fcmlzY3ZfY3R4X2hkcik7CgpzaXplb2YoKmhlYWQpOwoKPiArCQlzd2l0Y2ggKG1h Z2ljKSB7Cj4gKwkJY2FzZSBFTkRfTUFHSUM6Cj4gKwkJCWlmIChzaXplICE9IEVORF9IRFJfU0la RSkKPiArCQkJCWdvdG8gaW52YWxpZDsKPiArCQkJZ290byBkb25lOwo+ICsJCWNhc2UgUklTQ1Zf Vl9NQUdJQzoKPiArCQkJaWYgKCFoYXNfdmVjdG9yKCkgfHwgIXJpc2N2X3ZfdnN0YXRlX3F1ZXJ5 KHJlZ3MpKQo+ICsJCQkJZ290byBpbnZhbGlkOwo+ICsJCQlpZiAoc2l6ZSAhPSByaXNjdl92X3Nj X3NpemUpCj4gKwkJCQlnb3RvIGludmFsaWQ7Cj4gKwkJCWVyciA9IF9fcmVzdG9yZV92X3N0YXRl KHJlZ3MsIHNjX2V4dF9wdHIpOwo+ICAJCQlicmVhazsKPiAtCQlpZiAodmFsdWUgIT0gMCkKPiAt CQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJZGVmYXVsdDoKPiArCQkJZ290byBpbnZhbGlkOwo+ICsJ CX0KPiArCQlzY19leHRfcHRyID0gKCh2b2lkICopKGhlYWQpICsgc2l6ZSk7CgpVbm5lY2Nlcnkg cGFyZW50aGVzaXMuICIodm9pZCAqKWhlYWQgKyBzaXplIiBpcyBlbm91Z2gKCj4gIAl9Cj4gK2Rv bmU6Cj4gIAlyZXR1cm4gZXJyOwo+ICtpbnZhbGlkOgo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30K PiArCj4gK3N0YXRpYyBzaXplX3QgY2FsX3J0X2ZyYW1lX3NpemUodm9pZCkKPiArewo+ICsJc3Ry dWN0IHJ0X3NpZ2ZyYW1lIF9fdXNlciAqZnJhbWU7Cj4gKwlzaXplX3QgZnJhbWVfc2l6ZTsKPiAr CXNpemVfdCB0b3RhbF9jb250ZXh0X3NpemUgPSAwOwo+ICsKPiArCWZyYW1lX3NpemUgPSBzaXpl b2YoKmZyYW1lKTsKPiArCj4gKwlpZiAoaGFzX3ZlY3RvcigpICYmIHJpc2N2X3ZfdnN0YXRlX3F1 ZXJ5KHRhc2tfcHRfcmVncyhjdXJyZW50KSkpCj4gKwkJdG90YWxfY29udGV4dF9zaXplICs9IHJp c2N2X3Zfc2Nfc2l6ZTsKPiArCS8qCj4gKwkgKiBQcmVzZXJ2ZWQgYSBfX3Jpc2N2X2N0eF9oZHIg Zm9yIEVORCBzaWduYWwgY29udGV4dCBoZWFkZXIgaWYgYW4KPiArCSAqIGV4dGVuc2lvbiB1c2Vz IF9fcmlzY3ZfZXh0cmFfZXh0X2hlYWRlcgo+ICsJICovCj4gKwlpZiAodG90YWxfY29udGV4dF9z aXplKQo+ICsJCXRvdGFsX2NvbnRleHRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IF9fcmlzY3ZfY3R4 X2hkcik7Cj4gKwo+ICsJZnJhbWVfc2l6ZSArPSAodG90YWxfY29udGV4dF9zaXplKTsKClJlbW92 ZSB1bm5lY2NlcnkgcGFyZW50aGVzaXMuCgo+ICsKPiArCWZyYW1lX3NpemUgPSByb3VuZF91cChm cmFtZV9zaXplLCAxNik7Cj4gKwlyZXR1cm4gZnJhbWVfc2l6ZTsKPiArCj4gIH0KPiAgCj4gIFNZ U0NBTExfREVGSU5FMChydF9zaWdyZXR1cm4pCj4gQEAgLTk4LDEzICsyMjUsMTQgQEAgU1lTQ0FM TF9ERUZJTkUwKHJ0X3NpZ3JldHVybikKPiAgCXN0cnVjdCBydF9zaWdmcmFtZSBfX3VzZXIgKmZy YW1lOwo+ICAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+ICAJc2lnc2V0X3Qgc2V0Owo+ICsJ c2l6ZV90IGZyYW1lX3NpemUgPSBjYWxfcnRfZnJhbWVfc2l6ZSgpOwo+ICAKPiAgCS8qIEFsd2F5 cyBtYWtlIGFueSBwZW5kaW5nIHJlc3RhcnRlZCBzeXN0ZW0gY2FsbHMgcmV0dXJuIC1FSU5UUiAq Lwo+ICAJY3VycmVudC0+cmVzdGFydF9ibG9jay5mbiA9IGRvX25vX3Jlc3RhcnRfc3lzY2FsbDsK PiAgCj4gIAlmcmFtZSA9IChzdHJ1Y3QgcnRfc2lnZnJhbWUgX191c2VyICopcmVncy0+c3A7Cj4g IAo+IC0JaWYgKCFhY2Nlc3Nfb2soZnJhbWUsIHNpemVvZigqZnJhbWUpKSkKPiArCWlmICghYWNj ZXNzX29rKGZyYW1lLCBmcmFtZV9zaXplKSkKPiAgCQlnb3RvIGJhZGZyYW1lOwo+ICAKPiAgCWlm IChfX2NvcHlfZnJvbV91c2VyKCZzZXQsICZmcmFtZS0+dWMudWNfc2lnbWFzaywgc2l6ZW9mKHNl dCkpKQo+IEBAIC0xMzgsMTcgKzI2NiwyMiBAQCBzdGF0aWMgbG9uZyBzZXR1cF9zaWdjb250ZXh0 KHN0cnVjdCBydF9zaWdmcmFtZSBfX3VzZXIgKmZyYW1lLAo+ICAJc3RydWN0IHB0X3JlZ3MgKnJl Z3MpCj4gIHsKPiAgCXN0cnVjdCBzaWdjb250ZXh0IF9fdXNlciAqc2MgPSAmZnJhbWUtPnVjLnVj X21jb250ZXh0Owo+ICsJdm9pZCAqc2NfZXh0X3B0ciA9ICZzYy0+c2NfZXh0ZGVzYy5oZHI7CgpB bGwgdGhlIGNhc3RzIGFuZCBwYXJlbnRoZXNpcyBtYWtlcyBpdCBoYXJkIHRvIHJlYWQuIENoYW5n ZSB0bwoJc3RydWN0IF9fcmlzY3ZfY3R4X2hkciAqc2NfZXh0X3B0ciA9ICZzYy0+c2NfZXh0ZGVz Yy5oZHI7CgoKPiAgCWxvbmcgZXJyOwo+IC0Jc2l6ZV90IGk7Cj4gIAo+ICAJLyogc2NfcmVncyBp cyBzdHJ1Y3R1cmVkIHRoZSBzYW1lIGFzIHRoZSBzdGFydCBvZiBwdF9yZWdzICovCj4gIAllcnIg PSBfX2NvcHlfdG9fdXNlcigmc2MtPnNjX3JlZ3MsIHJlZ3MsIHNpemVvZihzYy0+c2NfcmVncykp Owo+ICAJLyogU2F2ZSB0aGUgZmxvYXRpbmctcG9pbnQgc3RhdGUuICovCj4gIAlpZiAoaGFzX2Zw dSgpKQo+ICAJCWVyciB8PSBzYXZlX2ZwX3N0YXRlKHJlZ3MsICZzYy0+c2NfZnByZWdzKTsKPiAt CS8qIFdlIHN1cHBvcnQgbm8gb3RoZXIgZXh0ZW5zaW9uIHN0YXRlIGF0IHRoaXMgdGltZS4gKi8K PiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNjLT5zY19mcHJlZ3MucS5yZXNlcnZlZCk7 IGkrKykKPiAtCQllcnIgfD0gX19wdXRfdXNlcigwLCAmc2MtPnNjX2ZwcmVncy5xLnJlc2VydmVk W2ldKTsKPiArCS8qIFNhdmUgdGhlIHZlY3RvciBzdGF0ZS4gKi8KPiArCWlmIChoYXNfdmVjdG9y KCkgJiYgcmlzY3Zfdl92c3RhdGVfcXVlcnkocmVncykpCj4gKwkJZXJyIHw9IHNhdmVfdl9zdGF0 ZShyZWdzLCAmc2NfZXh0X3B0cik7CgouLi5hbmQgY2FzdCB0byAodm9pZCAqKikgYWZ0ZXIgdGhl IGNoYW5nZSBhYm92ZS4uLgoKPiArCS8qIFdyaXRlIHplcm8gdG8gZnAtcmVzZXJ2ZWQgc3BhY2Ug YW5kIGNoZWNrIGl0IG9uIHJlc3RvcmVfc2lnY29udGV4dCAqLwo+ICsJZXJyIHw9IF9fcHV0X3Vz ZXIoMCwgJnNjLT5zY19leHRkZXNjLnJlc2VydmVkKTsKPiArCS8qIEFuZCBwdXQgRU5EIF9fcmlz Y3ZfY3R4X2hkciBhdCB0aGUgZW5kLiAqLwo+ICsJZXJyIHw9IF9fcHV0X3VzZXIoRU5EX01BR0lD LCAmKChzdHJ1Y3QgX19yaXNjdl9jdHhfaGRyICopc2NfZXh0X3B0ciktPm1hZ2ljKTsKPiArCWVy ciB8PSBfX3B1dF91c2VyKEVORF9IRFJfU0laRSwgJigoc3RydWN0IF9fcmlzY3ZfY3R4X2hkciAq KXNjX2V4dF9wdHIpLT5zaXplKTsKCi4uLmFuZCBjaGFuZ2UgdG86CgllcnIgfD0gX19wdXRfdXNl cihFTkRfTUFHSUMsICZzY19leHRfcHRyLT5tYWdpYyk7CgllcnIgfD0gX19wdXRfdXNlcihFTkRf SERSX1NJWkUsICZzY19leHRfcHRyLT5zaXplKTsKCgo+ICAJcmV0dXJuIGVycjsKPiAgfQo+ICAK PiBAQCAtMTcyLDYgKzMwNSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX191c2VyICpnZXRfc2ln ZnJhbWUoc3RydWN0IGtzaWduYWwgKmtzaWcsCj4gIAkvKiBBbGlnbiB0aGUgc3RhY2sgZnJhbWUu ICovCj4gIAlzcCAmPSB+MHhmVUw7Cj4gIAo+ICsJLyoKPiArCSAqIEZhaWwgaWYgdGhlIHNpemUg b2YgdGhlIGFsdHN0YWNrIGlzIG5vdCBsYXJnZSBlbm91Z2ggZm9yIHRoZQo+ICsJICogc2lnZnJh bWUgY29uc3RydWN0aW9uLgo+ICsJICovCj4gKwlpZiAoY3VycmVudC0+c2FzX3NzX3NpemUgJiYg c3AgPCBjdXJyZW50LT5zYXNfc3Nfc3ApCj4gKwkJcmV0dXJuICh2b2lkIF9fdXNlciBfX2ZvcmNl ICopKC0xVUwpOwoKTml0OiBSZW1vdmUgdW5uZWNjZXJ5IHBhcmVudGhlc2lzLgoKCkJqw7ZybgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlz Y3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=