Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3649303yba; Tue, 9 Apr 2019 01:39:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqxU+PikuMpM513WTPHDylfsUpEuRfklW279HXqtemzVtT0yqO0AgAQWG0McOZKY1mlIsdDR X-Received: by 2002:a17:902:d701:: with SMTP id w1mr36374243ply.124.1554799144798; Tue, 09 Apr 2019 01:39:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554799144; cv=none; d=google.com; s=arc-20160816; b=zS00TnS1NnGvLqAsVyWz8MD5TJsti1aEt1zyU8tTISxNnfIJTI7ZkJJP6dtjH/Ap7Y t4Zzg/RRxBtocOAqzDkOFYcZz2sWbzbXemtPrsXDNPpWLOJLeuIgg3H2NKaTk1wqMN+z E3eRaY5OQDpqAFr7mtYjPKm93hnW9EF1Xb0ADVwEBJqnC72Xq/r5pT/AmFoDKqsAV9B8 7PvAgNqLdMZJSjd4p0Tw/t5ZzgcG84Gy+zmWa62Z38U5Y89dCWgbvXoaxxms0BmpoHZc N6nvV9VBeNA8lAVyIyP1DFGwwP+Xy3QrJVIWBnHIQE3I3ha++S127rWfJWYjSC9hV03V HK+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:autocrypt:openpgp:from:references:cc:to :subject; bh=gPpj3HxNisv63qLPcceiTFNojoxUe3jtmfBfU02RNfs=; b=cL3PZoeLU1O4ovaXlrM128eVRIz79Nqc8ofu3H6gc3bSs7yjuD9kDqRWUOKzXjMNNz /Wk76Qnr31JCWunwb1kwMqE4QZyN9YE+Q6joHRMgT2PKNBmdOCcWP+nPinJ+hEDkUhbU P423decYnx7jSFwT+ovoRpjDv9xJKBQn2LBZtd66CVXV9NslJRxv0oBQBFuq2eU6+vYm edURbPHRM7ZQrOGxHvsnvidwFQnlx7S/uuNeb9VxYk5mAvzufyb4we+XjeruBeiMamm5 Sn5v8XU+fe7gRmUPBxuPHP25+7Ukj7zCZdihL+vJvR1s+EFV0c1FaefkJbkpnQos3xAQ RCVQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z4si27657092plk.385.2019.04.09.01.38.49; Tue, 09 Apr 2019 01:39:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726736AbfDIIiJ (ORCPT + 99 others); Tue, 9 Apr 2019 04:38:09 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33712 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbfDIIiJ (ORCPT ); Tue, 9 Apr 2019 04:38:09 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9E48AA78; Tue, 9 Apr 2019 01:38:08 -0700 (PDT) Received: from [10.1.196.92] (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 634C13F557; Tue, 9 Apr 2019 01:38:06 -0700 (PDT) Subject: Re: [PATCH v8 4/9] KVM: arm/arm64: preserve host HCR_EL2 value To: Kristina Martsenko , Amit Daniel Kachhap , James Morse , linux-arm-kernel@lists.infradead.org Cc: Christoffer Dall , Catalin Marinas , Will Deacon , Andrew Jones , Dave Martin , Ramana Radhakrishnan , kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org, Mark Rutland , Julien Thierry References: <1554172037-4516-1-git-send-email-amit.kachhap@arm.com> <1554172037-4516-5-git-send-email-amit.kachhap@arm.com> <6131d2cb-1062-6331-c2c3-7026081c458a@arm.com> <9a373ede-cdf8-c992-6f4b-352e46e0030a@arm.com> From: Marc Zyngier Openpgp: preference=signencrypt Autocrypt: addr=marc.zyngier@arm.com; prefer-encrypt=mutual; keydata= mQINBE6Jf0UBEADLCxpix34Ch3kQKA9SNlVQroj9aHAEzzl0+V8jrvT9a9GkK+FjBOIQz4KE g+3p+lqgJH4NfwPm9H5I5e3wa+Scz9wAqWLTT772Rqb6hf6kx0kKd0P2jGv79qXSmwru28vJ t9NNsmIhEYwS5eTfCbsZZDCnR31J6qxozsDHpCGLHlYym/VbC199Uq/pN5gH+5JHZyhyZiNW ozUCjMqC4eNW42nYVKZQfbj/k4W9xFfudFaFEhAf/Vb1r6F05eBP1uopuzNkAN7vqS8XcgQH qXI357YC4ToCbmqLue4HK9+2mtf7MTdHZYGZ939OfTlOGuxFW+bhtPQzsHiW7eNe0ew0+LaL 3wdNzT5abPBscqXWVGsZWCAzBmrZato+Pd2bSCDPLInZV0j+rjt7MWiSxEAEowue3IcZA++7 ifTDIscQdpeKT8hcL+9eHLgoSDH62SlubO/y8bB1hV8JjLW/jQpLnae0oz25h39ij4ijcp8N t5slf5DNRi1NLz5+iaaLg4gaM3ywVK2VEKdBTg+JTg3dfrb3DH7ctTQquyKun9IVY8AsxMc6 lxl4HxrpLX7HgF10685GG5fFla7R1RUnW5svgQhz6YVU33yJjk5lIIrrxKI/wLlhn066mtu1 DoD9TEAjwOmpa6ofV6rHeBPehUwMZEsLqlKfLsl0PpsJwov8TQARAQABtCNNYXJjIFp5bmdp ZXIgPG1hcmMuenluZ2llckBhcm0uY29tPokCOwQTAQIAJQIbAwYLCQgHAwIGFQgCCQoLBBYC AwECHgECF4AFAk6NvYYCGQEACgkQI9DQutE9ekObww/+NcUATWXOcnoPflpYG43GZ0XjQLng LQFjBZL+CJV5+1XMDfz4ATH37cR+8gMO1UwmWPv5tOMKLHhw6uLxGG4upPAm0qxjRA/SE3LC 22kBjWiSMrkQgv5FDcwdhAcj8A+gKgcXBeyXsGBXLjo5UQOGvPTQXcqNXB9A3ZZN9vS6QUYN TXFjnUnzCJd+PVI/4jORz9EUVw1q/+kZgmA8/GhfPH3xNetTGLyJCJcQ86acom2liLZZX4+1 6Hda2x3hxpoQo7pTu+XA2YC4XyUstNDYIsE4F4NVHGi88a3N8yWE+Z7cBI2HjGvpfNxZnmKX 6bws6RQ4LHDPhy0yzWFowJXGTqM/e79c1UeqOVxKGFF3VhJJu1nMlh+5hnW4glXOoy/WmDEM UMbl9KbJUfo+GgIQGMp8mwgW0vK4HrSmevlDeMcrLdfbbFbcZLNeFFBn6KqxFZaTd+LpylIH bOPN6fy1Dxf7UZscogYw5Pt0JscgpciuO3DAZo3eXz6ffj2NrWchnbj+SpPBiH4srfFmHY+Y LBemIIOmSqIsjoSRjNEZeEObkshDVG5NncJzbAQY+V3Q3yo9og/8ZiaulVWDbcpKyUpzt7pv cdnY3baDE8ate/cymFP5jGJK++QCeA6u6JzBp7HnKbngqWa6g8qDSjPXBPCLmmRWbc5j0lvA 6ilrF8m5Ag0ETol/RQEQAM/2pdLYCWmf3rtIiP8Wj5NwyjSL6/UrChXtoX9wlY8a4h3EX6E3 64snIJVMLbyr4bwdmPKULlny7T/R8dx/mCOWu/DztrVNQiXWOTKJnd/2iQblBT+W5W8ep/nS w3qUIckKwKdplQtzSKeE+PJ+GMS+DoNDDkcrVjUnsoCEr0aK3cO6g5hLGu8IBbC1CJYSpple VVb/sADnWF3SfUvJ/l4K8Uk4B4+X90KpA7U9MhvDTCy5mJGaTsFqDLpnqp/yqaT2P7kyMG2E w+eqtVIqwwweZA0S+tuqput5xdNAcsj2PugVx9tlw/LJo39nh8NrMxAhv5aQ+JJ2I8UTiHLX QvoC0Yc/jZX/JRB5r4x4IhK34Mv5TiH/gFfZbwxd287Y1jOaD9lhnke1SX5MXF7eCT3cgyB+ hgSu42w+2xYl3+rzIhQqxXhaP232t/b3ilJO00ZZ19d4KICGcakeiL6ZBtD8TrtkRiewI3v0 o8rUBWtjcDRgg3tWx/PcJvZnw1twbmRdaNvsvnlapD2Y9Js3woRLIjSAGOijwzFXSJyC2HU1 AAuR9uo4/QkeIrQVHIxP7TJZdJ9sGEWdeGPzzPlKLHwIX2HzfbdtPejPSXm5LJ026qdtJHgz BAb3NygZG6BH6EC1NPDQ6O53EXorXS1tsSAgp5ZDSFEBklpRVT3E0NrDABEBAAGJAh8EGAEC AAkFAk6Jf0UCGwwACgkQI9DQutE9ekMLBQ//U+Mt9DtFpzMCIHFPE9nNlsCm75j22lNiw6mX mx3cUA3pl+uRGQr/zQC5inQNtjFUmwGkHqrAw+SmG5gsgnM4pSdYvraWaCWOZCQCx1lpaCOl MotrNcwMJTJLQGc4BjJyOeSH59HQDitKfKMu/yjRhzT8CXhys6R0kYMrEN0tbe1cFOJkxSbV 0GgRTDF4PKyLT+RncoKxQe8lGxuk5614aRpBQa0LPafkirwqkUtxsPnarkPUEfkBlnIhAR8L kmneYLu0AvbWjfJCUH7qfpyS/FRrQCoBq9QIEcf2v1f0AIpA27f9KCEv5MZSHXGCdNcbjKw1 39YxYZhmXaHFKDSZIC29YhQJeXWlfDEDq6nIhvurZy3mSh2OMQgaIoFexPCsBBOclH8QUtMk a3jW/qYyrV+qUq9Wf3SKPrXf7B3xB332jFCETbyZQXqmowV+2b3rJFRWn5hK5B+xwvuxKyGq qDOGjof2dKl2zBIxbFgOclV7wqCVkhxSJi/QaOj2zBqSNPXga5DWtX3ekRnJLa1+ijXxmdjz hApihi08gwvP5G9fNGKQyRETePEtEAWt0b7dOqMzYBYGRVr7uS4uT6WP7fzOwAJC4lU7ZYWZ yVshCa0IvTtp1085RtT3qhh9mobkcZ+7cQOY+Tx2RGXS9WeOh2jZjdoWUv6CevXNQyOUXMM= Organization: ARM Ltd Message-ID: <1c4e4f50-8324-ed78-1bfd-aee05b6d4fc5@arm.com> Date: Tue, 9 Apr 2019 09:38:04 +0100 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <9a373ede-cdf8-c992-6f4b-352e46e0030a@arm.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/04/2019 19:39, Kristina Martsenko wrote: > On 08/04/2019 14:05, Amit Daniel Kachhap wrote: >> Hi James, >> >> On 4/6/19 4:07 PM, James Morse wrote: >>> Hi Amit, >>> >>> On 02/04/2019 03:27, Amit Daniel Kachhap wrote: >>>> From: Mark Rutland >>>> >>>> When restoring HCR_EL2 for the host, KVM uses HCR_HOST_VHE_FLAGS, which >>>> is a constant value. This works today, as the host HCR_EL2 value is >>>> always the same, but this will get in the way of supporting extensions >>>> that require HCR_EL2 bits to be set conditionally for the host. >>>> >>>> To allow such features to work without KVM having to explicitly handle >>>> every possible host feature combination, this patch has KVM save/restore >>>> for the host HCR when switching to/from a guest HCR. The saving of the >>>> register is done once during cpu hypervisor initialization state and is >>>> just restored after switch from guest. >>>> >>>> For fetching HCR_EL2 during kvm initialisation, a hyp call is made using >>>> kvm_call_hyp and is helpful in non-VHE case. >>>> >>>> For the hyp TLB maintenance code, __tlb_switch_to_host_vhe() is updated >>>> to toggle the TGE bit with a RMW sequence, as we already do in >>>> __tlb_switch_to_guest_vhe(). >>>> >>>> The value of hcr_el2 is now stored in struct kvm_cpu_context as both host >>>> and guest can now use this field in a common way. >>> >>> These HCR_EL2 flags have had me confused for quite a while. >>> I thought this was preserving the value that head.S or cpufeature.c had set, and with >>> ptrauth we couldn't know what this register should be anymore, the host flags has to vary. >>> >>> Kristina's explanation of it[0], clarified things, and with a bit more digging it appears >>> we always set API/APK, even if the hardware doesn't support the feature (as its harmless). >>> So we don't need to vary the host flags... >> >> API/APK is always set for NVHE host mode. >>> >>> My question is, what breaks if this patch isn't merged? (the MDCR change is cleanup we can >>> do because of this HCR change), is this HCR change just cleanup too? If so, can we merge >>> ptrauth without either, so we only make the change when its needed? (it will cause some >>> changes in your patch 7, but I can't see where you depend on the host flags). >> >> Yes you are right that this patch does not directly effect pointer authentication functionality but contains several optimizations and cleanups such as, >> >> * Removes assigning static flags HCR_HOST_VHE_FLAGS/HCR_HOST_NVHE_FLAGS from switch.c so switching functions now are more generic in nature. >> * Currently the variation in hcr_el2 flags is across modes (VHE/NVHE). Any future conditional change within those modes in host HCR_EL2 may not effect code changes in switch.c >> * Save of hcr_el2 done at hyp init time so not expensive switching wise. >> >> I am fine on posting it separately also. > > FWIW I think it makes sense to post the HCR and MDCR patches separately > from this series. That should make it clear that pointer auth does not > depend on these changes, and should make it easier to evaluate the > changes on their own. > > Others' opinions are welcome as well. Agreed. I'm quite eager to move forward with this series, and the least unrelated changes it makes, the better. Cleanups and optimizations can always be merged at a later time. Thanks, M. -- Jazz is not dead. It just smells funny...