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 X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A243C10F11 for ; Wed, 24 Apr 2019 15:21:37 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 462F1218FD for ; Wed, 24 Apr 2019 15:21:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="A5WlneLw"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ONzFn4+7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 462F1218FD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date: In-reply-to:Subject:To:From:References:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=6ID2xk3A8cPQScI9FCNlWe0l97V7SBXSQT/dl9C2WaM=; b=A5WlneLwQIg6/ZE1VgCUkixE2V J9LDJqoB5dQN9wxntO0YGMlOsUkvvBHhkEI+ecqETeSk3TTU0vEsZ4m2svm4k9y+EfcbtJLURB8ht 2vRWDLErRqucrtiBKVg2+oaputNvnu9ekgwe6r0VZEejpM1huqxNkj7HLP8hsk9eykC5vgiCU7VlD b4JTnZXbmRRxFxU6khUW3RiVOy8O+lw6Z0I/6Hn0jL44fjlg2Xr7fSHwvdImemH8O19jK6R+EOHRe r/4AXX9k3cz6KkpHM38YbTQfNMoB4cxgFy4JwBIenUwAGW15HacXNJq6TAw5txmHCtAhNZhntOUz2 pjWJ83Bg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJJiD-0005wz-BY; Wed, 24 Apr 2019 15:21:29 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJJiA-0005wc-H6 for linux-arm-kernel@lists.infradead.org; Wed, 24 Apr 2019 15:21:28 +0000 Received: by mail-wr1-x444.google.com with SMTP id t17so25681297wrw.13 for ; Wed, 24 Apr 2019 08:21:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version:content-transfer-encoding; bh=P721i9CCgkmVWXeuEwPdTZlUoSquOhc4NdI0PCP+Rxs=; b=ONzFn4+7VixY1Je52akMABlshVD/8R8PRnTfkSvhzcIy//cJUCC4B1/TwN/Mc83dSI CjisqRLQq0lrgFIJOQJ+dSfgn66ZCIAHO/zC35BNPcvE5GyFuW9aFHm65ZziNp68/T2w 0Z7R6PjI65jGy8oQW+QgrgvtaQdWix5wqRpcr/maZOZ2O9cJs62RBAasm04cBuhDx2aC wS5oIoeJrCy8K7uF1IYTUUlUgHQQc03sHd6lnAV+ZANwUW4irq9tHHg3n69F6xOBmuew 70ZKCCVSROh0qjBZrJ+8EzGR+Kytas1Fz35IAsMnVwBEMxP7++NRrSi4nn8E+zSVVjBB heMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version:content-transfer-encoding; bh=P721i9CCgkmVWXeuEwPdTZlUoSquOhc4NdI0PCP+Rxs=; b=mNyQ0CH/ulYB4hx6/0obSrEZvhcYxSadgLcpOOZv1hopKsARns2BX8Dtc6vy+1Nt73 z1Bl+kKwAGkTI1BAqQl6tElgFIW/xPqnqZcreS1uV0mIfeu4g9wwELODqr4OJAmeMHkH SkBgWgeOn5kDB0TEt/F2fb4lbhE6pLquvaXNRNYF+7ha4nGMqo/+a4Uve1uNolC28kw7 KjmgkQd2naGpA0bCrGDZyTvkPONYZEsg57thPE12OmzOvrDLNbFEc8LW/3sQvZungpgJ y+4Tbayktr5TERUtxehRuYqrKcHkGNLNj4MvhG66LwbqkXxIhMSIwVFwtEhnIympu9bz qYrA== X-Gm-Message-State: APjAAAWuMYIywCQ47CfJJD6CZmetgCFEfUYG6sjfUmSPchBcU369Cady KVxlUePK5FX/IHX+3eVsQgZOOw== X-Google-Smtp-Source: APXvYqxUodVwvam5xjj4/nXNLct9z4rQGqVot/kwRAamjsZmYU8Gd5tkYeiw8N9c9LJ5aMfePZZQXQ== X-Received: by 2002:adf:de0f:: with SMTP id b15mr20953096wrm.308.1556119284269; Wed, 24 Apr 2019 08:21:24 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id o20sm14478207wmh.21.2019.04.24.08.21.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 24 Apr 2019 08:21:23 -0700 (PDT) Received: from zen (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id D51C21FF87; Wed, 24 Apr 2019 15:21:22 +0000 (UTC) References: <1553864452-15080-1-git-send-email-Dave.Martin@arm.com> <1553864452-15080-13-git-send-email-Dave.Martin@arm.com> User-agent: mu4e 1.3.1; emacs 26.1 From: Alex =?utf-8?Q?Benn=C3=A9e?= To: Dave Martin Subject: Re: [PATCH v7 12/27] KVM: arm64/sve: System register context switch and access support In-reply-to: <1553864452-15080-13-git-send-email-Dave.Martin@arm.com> Date: Wed, 24 Apr 2019 16:21:22 +0100 Message-ID: <87bm0vwhsd.fsf@zen.linaroharston> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190424_082126_583929_303C8562 X-CRM114-Status: GOOD ( 34.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Okamoto Takayuki , Christoffer Dall , Ard Biesheuvel , Marc Zyngier , Catalin Marinas , Will Deacon , Zhang Lei , Julien Grall , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IFRoaXMgcGF0Y2gg YWRkcyB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgZm9yIGNvbnRleHQgc3dpdGNoaW5nIFpDUl9FTDEK PiBmb3IgZWFjaCB2Y3B1Lgo+Cj4gWkNSX0VMMSBpcyB0cmFwcGVkIGFsb25nc2lkZSB0aGUgRlBT SU1EL1NWRSByZWdpc3RlcnMsIHNvIGl0IG1ha2VzCj4gc2Vuc2UgZm9yIGl0IHRvIGJlIGhhbmRs ZWQgYXMgcGFydCBvZiB0aGUgZ3Vlc3QgRlBTSU1EL1NWRSBjb250ZXh0Cj4gZm9yIGNvbnRleHQg c3dpdGNoIHB1cnBvc2VzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgYXMgYSBnZW5lcmFsCj4gc3lz dGVtIHJlZ2lzdGVyLiAgVGhpcyBtZWFucyB0aGF0IGl0IGNhbiBiZSBzd2l0Y2hlZCBpbiBsYXpp bHkgYXQKPiB0aGUgYXBwcm9wcmlhdGUgdGltZS4gIE5vIGVmZm9ydCBpcyBtYWRlIHRvIHRyYWNr IGhvc3QgY29udGV4dCBmb3IKPiB0aGlzIHJlZ2lzdGVyLCBzaW5jZSBTVkUgcmVxdWlyZXMgVkhF OiB0aHVzIHRoZSBob3N0cydzIHZhbHVlIGZvcgo+IHRoaXMgcmVnaXN0ZXIgbGl2ZXMgcGVybWFu ZW50bHkgaW4gWkNSX0VMMiBhbmQgZG9lcyBub3QgYWxpYXMgdGhlCj4gZ3Vlc3QncyB2YWx1ZSBh dCBhbnkgdGltZS4KPgo+IFRoZSBIeXAgc3dpdGNoIGFuZCBmcHNpbWQgY29udGV4dCBoYW5kbGlu ZyBjb2RlIGlzIGV4dGVuZGVkCj4gYXBwcm9wcmlhdGVseS4KPgo+IEFjY2Vzc29ycyBhcmUgYWRk ZWQgaW4gc3lzX3JlZ3MuYyB0byBleHBvc2UgdGhlIFNWRSBzeXN0ZW0KPiByZWdpc3RlcnMgYW5k IElEIHJlZ2lzdGVyIGZpZWxkcy4gIEJlY2F1c2UgdGhlc2UgbmVlZCB0byBiZQo+IGNvbmRpdGlv bmFsbHkgdmlzaWJsZSBiYXNlZCBvbiB0aGUgZ3Vlc3QgY29uZmlndXJhdGlvbiwgdGhleSBhcmUK PiBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5IGZvciBub3cgcmF0aGVyIHRoYW4gYnkgdXNlIG9mIHRo ZSBnZW5lcmljCj4gc3lzdGVtIHJlZ2lzdGVyIGhlbHBlcnMuICBUaGlzIG1heSBiZSBhYnN0cmFj dGVkIGJldHRlciBsYXRlciBvbgo+IHdoZW4vaWYgdGhlcmUgYXJlIG1vcmUgZmVhdHVyZXMgcmVx dWlyaW5nIHRoaXMgbW9kZWwuCj4KPiBJRF9BQTY0WkZSMF9FTDEgaXMgUk8tUkFaIGZvciBNUlMv TVNSIHdoZW4gU1ZFIGlzIGRpc2FibGVkIGZvciB0aGUKPiBndWVzdCwgYnV0IGZvciBjb21wYXRp YmlsaXR5IHdpdGggbm9uLVNWRSBhd2FyZSBLVk0gaW1wbGVtZW50YXRpb25zCj4gdGhlIHJlZ2lz dGVyIHNob3VsZCBub3QgYmUgZW51bWVyYXRlZCBhdCBhbGwgZm9yIEtWTV9HRVRfUkVHX0xJU1QK PiBpbiB0aGlzIGNhc2UuICBGb3IgY29uc2lzdGVuY3kgd2UgYWxzbyByZWplY3QgaW9jdGwgYWNj ZXNzIHRvIHRoZQo+IHJlZ2lzdGVyLiAgVGhpcyBlbnN1cmVzIHRoYXQgYSBub24tU1ZFLWVuYWJs ZWQgZ3Vlc3QgbG9va3MgdGhlIHNhbWUKPiB0byB1c2Vyc3BhY2UsIGlycmVzcGVjdGl2ZSBvZiB3 aGV0aGVyIHRoZSBrZXJuZWwgS1ZNIGltcGxlbWVudGF0aW9uCj4gc3VwcG9ydHMgU1ZFLgo+Cj4g U2lnbmVkLW9mZi1ieTogRGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5jb20+Cj4gUmV2aWV3 ZWQtYnk6IEp1bGllbiBUaGllcnJ5IDxqdWxpZW4udGhpZXJyeUBhcm0uY29tPgo+IFRlc3RlZC1i eTogemhhbmcubGVpIDx6aGFuZy5sZWlAanAuZnVqaXRzdS5jb20+Cj4KPiAtLS0KPgo+IENoYW5n ZXMgc2luY2UgdjU6Cj4KPiAgKiBQb3J0IHRvIHRoZSByZW5hbWVkIHZpc2liaWxpdHkoKSBmcmFt ZXdvcmsuCj4KPiAgKiBTd2FwIHZpc2libGl0eSgpIGhlbHBlcnMgc28gdGhhdCB0aGV5IGFwcGVh ciBieSB0aGUgcmVsZXZhbnQgYWNjZXNzb3IKPiAgICBmdW5jdGlvbnMuCj4KPiAgKiBbSnVsaWVu IEdyYWxsXSBXaXRoIHRoZSB2aXNpYmlsaXR5KCkgY2hlY2tzLCB7Z2V0LHNldH1femNyX2VsMSgp Cj4gICAgZGVnZW5lcmF0ZSB0byBkb2luZyBleGFjdGx5IHdoYXQgdGhlIGNvbW1vbiBjb2RlIGRv ZXMsIHNvIGRyb3AgdGhlbS4KPgo+ICAgIFRoZSBJRF9BQTY0WkZSMF9FTDEgaGFuZGxlcnMgYXJl IHN0aWxsIG5lZWRlZCB0byBwcm92aWRlIGNvbnRpdGlvbmFsCj4gICAgUkFaIGJlaGF2aW91ci4g IFRoaXMgY291bGQgYmUgbW92ZWQgdG8gdGhlIGNvbW1vbiBjb2RlIHRvbywgYnV0IHNpbmNlCj4g ICAgdGhpcyBpcyBhIG9uZS1vZmYgY2FzZSBJIGRvbid0IGRvIHRoaXMgZm9yIG5vdy4gIFdlIGNh biBhZGRyZXNzIHRoaXMKPiAgICBsYXRlciBpZiBvdGhlciByZWdzIG5lZWQgdG8gZm9sbG93IHRo ZSBzYW1lIHBhdHRlcm4uCj4KPiAgKiBbSnVsaWVuIFRoaWVycnldIFJlc2V0IFpDUl9FTDEgdG8g YSBmaXhlZCB2YWx1ZSB1c2luZyByZXNldF92YWwKPiAgICBpbnN0ZWFkIG9mIHVzaW5nIHJlbHlp bmcgb24gcmVzZXRfdW5rbm93bigpIGhvbm91cmluZyBzZXQgYml0cyBpbiB2YWwKPiAgICBhcyBS RVMwLgo+Cj4gICAgTW9zdCBvZiB0aGUgYml0cyBpbiBaQ1JfRUwxIGFyZSBSRVMwIGFueXdheSwg YW5kIG1hbnkgaW1wbGVtZW50YXRpb25zCj4gICAgb2YgU1ZFIHdpbGwgc3VwcG9ydCBsYXJnZXIg dmVjdG9ycyB0aGFuIDEyOCBiaXRzLCBzbyAwIHNlZW1zIGFzIGdvb2QKPiAgICBhIHZhbHVlIGFz IGFueSB0byBleHBvc2UgZ3Vlc3RzIHRoYXQgZm9yZ2V0IHRvIGluaXRpYWxpc2UgdGhpcwo+ICAg IHJlZ2lzdGVyIHByb3Blcmx5Lgo+IC0tLQo+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9o b3N0LmggfCAgMSArCj4gIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzcmVnLmggICB8ICAzICsr Cj4gIGFyY2gvYXJtNjQva3ZtL2Zwc2ltZC5jICAgICAgICAgICB8ICA5ICsrKystCj4gIGFyY2gv YXJtNjQva3ZtL2h5cC9zd2l0Y2guYyAgICAgICB8ICAzICsrCj4gIGFyY2gvYXJtNjQva3ZtL3N5 c19yZWdzLmMgICAgICAgICB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gaW5kZXggYWQ0ZjdmMC4uMjJjZjQ4NCAx MDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPiArKysgYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPiBAQCAtMTIxLDYgKzEyMSw3IEBAIGVu dW0gdmNwdV9zeXNyZWcgewo+ICAJU0NUTFJfRUwxLAkvKiBTeXN0ZW0gQ29udHJvbCBSZWdpc3Rl ciAqLwo+ICAJQUNUTFJfRUwxLAkvKiBBdXhpbGlhcnkgQ29udHJvbCBSZWdpc3RlciAqLwo+ICAJ Q1BBQ1JfRUwxLAkvKiBDb3Byb2Nlc3NvciBBY2Nlc3MgQ29udHJvbCAqLwo+ICsJWkNSX0VMMSwJ LyogU1ZFIENvbnRyb2wgKi8KPiAgCVRUQlIwX0VMMSwJLyogVHJhbnNsYXRpb24gVGFibGUgQmFz ZSBSZWdpc3RlciAwICovCj4gIAlUVEJSMV9FTDEsCS8qIFRyYW5zbGF0aW9uIFRhYmxlIEJhc2Ug UmVnaXN0ZXIgMSAqLwo+ICAJVENSX0VMMSwJLyogVHJhbnNsYXRpb24gQ29udHJvbCBSZWdpc3Rl ciAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9zeXNyZWcuaAo+IGluZGV4IDViMjY3ZGUuLjRkNjI2MmQgMTAw NjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXNyZWcuaAo+ICsrKyBiL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vc3lzcmVnLmgKPiBAQCAtNDU0LDYgKzQ1NCw5IEBACj4gICNkZWZp bmUgU1lTX0lDSF9MUjE0X0VMMgkJX19TWVNfX0xSOF9FTDIoNikKPiAgI2RlZmluZSBTWVNfSUNI X0xSMTVfRUwyCQlfX1NZU19fTFI4X0VMMig3KQo+Cj4gKy8qIFZIRSBlbmNvZGluZ3MgZm9yIGFy Y2hpdGVjdHVyYWwgRUwwLzEgc3lzdGVtIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIFNZU19aQ1Jf RUwxMgkJCXN5c19yZWcoMywgNSwgMSwgMiwgMCkKPiArCj4gIC8qIENvbW1vbiBTQ1RMUl9FTHgg ZmxhZ3MuICovCj4gICNkZWZpbmUgU0NUTFJfRUx4X0RTU0JTCShfQklUVUwoNDQpKQo+ICAjZGVm aW5lIFNDVExSX0VMeF9FTklBCShfQklUVUwoMzEpKQo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L2t2bS9mcHNpbWQuYyBiL2FyY2gvYXJtNjQva3ZtL2Zwc2ltZC5jCj4gaW5kZXggMWNmNGYwMi4u NzA1M2JmNCAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2t2bS9mcHNpbWQuYwo+ICsrKyBiL2Fy Y2gvYXJtNjQva3ZtL2Zwc2ltZC5jCj4gQEAgLTEwMywxNCArMTAzLDIxIEBAIHZvaWQga3ZtX2Fy Y2hfdmNwdV9jdHhzeW5jX2ZwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgdm9pZCBrdm1fYXJj aF92Y3B1X3B1dF9mcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gIHsKPiAgCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gKwlib29sIGhvc3RfaGFzX3N2ZSA9IHN5c3RlbV9zdXBwb3J0c19zdmUoKTsK PiArCWJvb2wgZ3Vlc3RfaGFzX3N2ZSA9IHZjcHVfaGFzX3N2ZSh2Y3B1KTsKPgo+ICAJbG9jYWxf aXJxX3NhdmUoZmxhZ3MpOwo+Cj4gIAlpZiAodmNwdS0+YXJjaC5mbGFncyAmIEtWTV9BUk02NF9G UF9FTkFCTEVEKSB7Cj4gKwkJdTY0ICpndWVzdF96Y3IgPSAmdmNwdS0+YXJjaC5jdHh0LnN5c19y ZWdzW1pDUl9FTDFdOwo+ICsKCklzIHRoaXMganVzdCB0byBhdm9pZDoKCiAgIHZjcHUtPmFyY2gu Y3R4dC5zeXNfcmVnc1taQ1JfRUwxXSA9IHJlYWRfc3lzcmVnX3MoU1lTX1pDUl9FTDEyKTsKCmlu IGZhY3Qgd291bGRuJ3Q6CgogICBfX3ZjcHVfc3lzX3JlZyh2Y3B1LFpDUl9FTDEpID0gcmVhZF9z eXNyZWdfcyhTWVNfWkNSX0VMMTIpOwoKZG8/Cgo+ICAJCS8qIENsZWFuIGd1ZXN0IEZQIHN0YXRl IHRvIG1lbW9yeSBhbmQgaW52YWxpZGF0ZSBjcHUgdmlldyAqLwo+ICAJCWZwc2ltZF9zYXZlKCk7 Cj4gIAkJZnBzaW1kX2ZsdXNoX2NwdV9zdGF0ZSgpOwo+IC0JfSBlbHNlIGlmIChzeXN0ZW1fc3Vw cG9ydHNfc3ZlKCkpIHsKPiArCj4gKwkJaWYgKGd1ZXN0X2hhc19zdmUpCj4gKwkJCSpndWVzdF96 Y3IgPSByZWFkX3N5c3JlZ19zKFNZU19aQ1JfRUwxMik7Cj4gKwl9IGVsc2UgaWYgKGhvc3RfaGFz X3N2ZSkgewo+ICAJCS8qCj4gIAkJICogVGhlIEZQU0lNRC9TVkUgc3RhdGUgaW4gdGhlIENQVSBo YXMgbm90IGJlZW4gdG91Y2hlZCwgYW5kIHdlCj4gIAkJICogaGF2ZSBTVkUgKGFuZCBWSEUpOiBD UEFDUl9FTDEgKGFsaWFzIENQVFJfRUwyKSBoYXMgYmVlbgo+IGRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2t2bS9oeXAvc3dpdGNoLmMgYi9hcmNoL2FybTY0L2t2bS9oeXAvc3dpdGNoLmMKPiBpbmRl eCAzNTYzZmU2Li45ZDQ2MDY2IDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0 Y2guYwo+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYwo+IEBAIC0zNTEsNiArMzUx LDkgQEAgc3RhdGljIGJvb2wgX19oeXBfdGV4dCBfX2h5cF9zd2l0Y2hfZnBzaW1kKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSkKPgo+ICAJX19mcHNpbWRfcmVzdG9yZV9zdGF0ZSgmdmNwdS0+YXJjaC5j dHh0LmdwX3JlZ3MuZnBfcmVncyk7Cj4KPiArCWlmICh2Y3B1X2hhc19zdmUodmNwdSkpCj4gKwkJ d3JpdGVfc3lzcmVnX3ModmNwdS0+YXJjaC5jdHh0LnN5c19yZWdzW1pDUl9FTDFdLCBTWVNfWkNS X0VMMTIpOwo+ICsKCl9fdmNwdV9zeXNfcmVnPwoKPiAgCS8qIFNraXAgcmVzdG9yaW5nIGZwZXhj MzIgZm9yIEFBcmNoNjQgZ3Vlc3RzICovCj4gIAlpZiAoIShyZWFkX3N5c3JlZyhoY3JfZWwyKSAm IEhDUl9SVykpCj4gIAkJd3JpdGVfc3lzcmVnKHZjcHUtPmFyY2guY3R4dC5zeXNfcmVnc1tGUEVY QzMyX0VMMl0sCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMgYi9hcmNo L2FybTY0L2t2bS9zeXNfcmVncy5jCj4gaW5kZXggYzg2YTdiMC4uMDllOWIwNiAxMDA2NDQKPiAt LS0gYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCj4gKysrIGIvYXJjaC9hcm02NC9rdm0vc3lz X3JlZ3MuYwo+IEBAIC0xMDUxLDEwICsxMDUxLDcgQEAgc3RhdGljIHU2NCByZWFkX2lkX3JlZyhj b25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gIAkJCSAodTMyKXItPkNSbiwgKHUzMilyLT5D Um0sICh1MzIpci0+T3AyKTsKPiAgCXU2NCB2YWwgPSByYXogPyAwIDogcmVhZF9zYW5pdGlzZWRf ZnRyX3JlZyhpZCk7Cj4KPiAtCWlmIChpZCA9PSBTWVNfSURfQUE2NFBGUjBfRUwxKSB7Cj4gLQkJ aWYgKHZhbCAmICgweGZVTCA8PCBJRF9BQTY0UEZSMF9TVkVfU0hJRlQpKQo+IC0JCQlrdm1fZGVi dWcoIlNWRSB1bnN1cHBvcnRlZCBmb3IgZ3Vlc3RzLCBzdXBwcmVzc2luZ1xuIik7Cj4gLQo+ICsJ aWYgKGlkID09IFNZU19JRF9BQTY0UEZSMF9FTDEgJiYgIXZjcHVfaGFzX3N2ZSh2Y3B1KSkgewo+ ICAJCXZhbCAmPSB+KDB4ZlVMIDw8IElEX0FBNjRQRlIwX1NWRV9TSElGVCk7Cj4gIAl9IGVsc2Ug aWYgKGlkID09IFNZU19JRF9BQTY0SVNBUjFfRUwxKSB7Cj4gIAkJY29uc3QgdTY0IHB0cmF1dGhf bWFzayA9ICgweGZVTCA8PCBJRF9BQTY0SVNBUjFfQVBBX1NISUZUKSB8Cj4gQEAgLTExMDEsNiAr MTA5OCw4MSBAQCBzdGF0aWMgaW50IHJlZ19mcm9tX3VzZXIodTY0ICp2YWwsIGNvbnN0IHZvaWQg X191c2VyICp1YWRkciwgdTY0IGlkKTsKPiAgc3RhdGljIGludCByZWdfdG9fdXNlcih2b2lkIF9f dXNlciAqdWFkZHIsIGNvbnN0IHU2NCAqdmFsLCB1NjQgaWQpOwo+ICBzdGF0aWMgdTY0IHN5c19y ZWdfdG9faW5kZXgoY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmVnKTsKPgo+ICsvKiBWaXNp YmlsaXR5IG92ZXJyaWRlcyBmb3IgU1ZFLXNwZWNpZmljIGNvbnRyb2wgcmVnaXN0ZXJzICovCj4g K3N0YXRpYyB1bnNpZ25lZCBpbnQgc3ZlX3Zpc2liaWxpdHkoY29uc3Qgc3RydWN0IGt2bV92Y3B1 ICp2Y3B1LAo+ICsJCQkJICAgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmQpCj4gK3sKPiAr CWlmICh2Y3B1X2hhc19zdmUodmNwdSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIFJF R19ISURERU5fVVNFUiB8IFJFR19ISURERU5fR1VFU1Q7Cj4gK30KPiArCj4gKy8qIFZpc2liaWxp dHkgb3ZlcnJpZGVzIGZvciBTVkUtc3BlY2lmaWMgSUQgcmVnaXN0ZXJzICovCj4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgc3ZlX2lkX3Zpc2liaWxpdHkoY29uc3Qgc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LAo+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmQpCj4gK3sKPiArCWlm ICh2Y3B1X2hhc19zdmUodmNwdSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIFJFR19I SURERU5fVVNFUjsKPiArfQo+ICsKPiArLyogR2VuZXJhdGUgdGhlIGVtdWxhdGVkIElEX0FBNjRa RlIwX0VMMSB2YWx1ZSBleHBvc2VkIHRvIHRoZSBndWVzdCAqLwo+ICtzdGF0aWMgdTY0IGd1ZXN0 X2lkX2FhNjR6ZnIwX2VsMShjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gK3sKPiArCWlm ICghdmNwdV9oYXNfc3ZlKHZjcHUpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXJldHVybiByZWFk X3Nhbml0aXNlZF9mdHJfcmVnKFNZU19JRF9BQTY0WkZSMF9FTDEpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgYm9vbCBhY2Nlc3NfaWRfYWE2NHpmcjBfZWwxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAr CQkJCSAgIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCwKPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBz eXNfcmVnX2Rlc2MgKnJkKQo+ICt7Cj4gKwlpZiAocC0+aXNfd3JpdGUpCj4gKwkJcmV0dXJuIHdy aXRlX3RvX3JlYWRfb25seSh2Y3B1LCBwLCByZCk7Cj4gKwo+ICsJcC0+cmVndmFsID0gZ3Vlc3Rf aWRfYWE2NHpmcjBfZWwxKHZjcHUpOwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgZ2V0X2lkX2FhNjR6ZnIwX2VsMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gKwkJY29u c3Qgc3RydWN0IHN5c19yZWdfZGVzYyAqcmQsCj4gKwkJY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVn ICpyZWcsIHZvaWQgX191c2VyICp1YWRkcikKPiArewo+ICsJdTY0IHZhbDsKPiArCj4gKwlpZiAo IXZjcHVfaGFzX3N2ZSh2Y3B1KSkKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwl2YWwgPSBn dWVzdF9pZF9hYTY0emZyMF9lbDEodmNwdSk7Cj4gKwlyZXR1cm4gcmVnX3RvX3VzZXIodWFkZHIs ICZ2YWwsIHJlZy0+aWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHNldF9pZF9hYTY0emZyMF9l bDEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICsJCWNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2Mg KnJkLAo+ICsJCWNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnLCB2b2lkIF9fdXNlciAqdWFk ZHIpCj4gK3sKPiArCWNvbnN0IHU2NCBpZCA9IHN5c19yZWdfdG9faW5kZXgocmQpOwo+ICsJaW50 IGVycjsKPiArCXU2NCB2YWw7Cj4gKwo+ICsJaWYgKCF2Y3B1X2hhc19zdmUodmNwdSkpCj4gKwkJ cmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJZXJyID0gcmVnX2Zyb21fdXNlcigmdmFsLCB1YWRkciwg aWQpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCS8qIFRoaXMgaXMgd2hh dCB3ZSBtZWFuIGJ5IGludmFyaWFudDogeW91IGNhbid0IGNoYW5nZSBpdC4gKi8KPiArCWlmICh2 YWwgIT0gZ3Vlc3RfaWRfYWE2NHpmcjBfZWwxKHZjcHUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBjcHVmZWF0dXJlIElEIHJlZ2lz dGVyIHVzZXIgYWNjZXNzb3JzCj4gICAqCj4gQEAgLTEzNDYsNyArMTQxOCw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc3lzX3JlZ19kZXNjIHN5c19yZWdfZGVzY3NbXSA9IHsKPiAgCUlEX1NBTklU SVNFRChJRF9BQTY0UEZSMV9FTDEpLAo+ICAJSURfVU5BTExPQ0FURUQoNCwyKSwKPiAgCUlEX1VO QUxMT0NBVEVEKDQsMyksCj4gLQlJRF9VTkFMTE9DQVRFRCg0LDQpLAo+ICsJeyBTWVNfREVTQyhT WVNfSURfQUE2NFpGUjBfRUwxKSwgYWNjZXNzX2lkX2FhNjR6ZnIwX2VsMSwgLmdldF91c2VyID0g Z2V0X2lkX2FhNjR6ZnIwX2VsMSwgLnNldF91c2VyID0gc2V0X2lkX2FhNjR6ZnIwX2VsMSwgLnZp c2liaWxpdHkgPSBzdmVfaWRfdmlzaWJpbGl0eSB9LAoKbG9uZyBsaW5lLi4uCgo+ICAJSURfVU5B TExPQ0FURUQoNCw1KSwKPiAgCUlEX1VOQUxMT0NBVEVEKDQsNiksCj4gIAlJRF9VTkFMTE9DQVRF RCg0LDcpLAo+IEBAIC0xMzgzLDYgKzE0NTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5c19y ZWdfZGVzYyBzeXNfcmVnX2Rlc2NzW10gPSB7Cj4KPiAgCXsgU1lTX0RFU0MoU1lTX1NDVExSX0VM MSksIGFjY2Vzc192bV9yZWcsIHJlc2V0X3ZhbCwgU0NUTFJfRUwxLCAweDAwQzUwMDc4IH0sCj4g IAl7IFNZU19ERVNDKFNZU19DUEFDUl9FTDEpLCBOVUxMLCByZXNldF92YWwsIENQQUNSX0VMMSwg MCB9LAo+ICsJeyBTWVNfREVTQyhTWVNfWkNSX0VMMSksIE5VTEwsIHJlc2V0X3ZhbCwgWkNSX0VM MSwgMCwgLnZpc2liaWxpdHkgPSBzdmVfdmlzaWJpbGl0eSB9LAo+ICAJeyBTWVNfREVTQyhTWVNf VFRCUjBfRUwxKSwgYWNjZXNzX3ZtX3JlZywgcmVzZXRfdW5rbm93biwgVFRCUjBfRUwxIH0sCj4g IAl7IFNZU19ERVNDKFNZU19UVEJSMV9FTDEpLCBhY2Nlc3Nfdm1fcmVnLCByZXNldF91bmtub3du LCBUVEJSMV9FTDEgfSwKPiAgCXsgU1lTX0RFU0MoU1lTX1RDUl9FTDEpLCBhY2Nlc3Nfdm1fcmVn LCByZXNldF92YWwsIFRDUl9FTDEsIDAgfSwKCk1pbm9yIG5pdHMgYXNpZGU6CgpSZXZpZXdlZC1i eTogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgoKLS0KQWxleCBCZW5uw6ll CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==