Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp54842img; Wed, 20 Mar 2019 13:57:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqwC/RUAb5wZChlgi0Magon2xJ5dPAD6wfmO7D31/y6gHRoGhMeksZPjZ9ZZdzs+4FPsOXUk X-Received: by 2002:a63:2c87:: with SMTP id s129mr9256448pgs.311.1553115463578; Wed, 20 Mar 2019 13:57:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553115463; cv=none; d=google.com; s=arc-20160816; b=K9sLBX5D561BFH7xB1dDPPyfcn8i+5GXLWddS1JpfSrsIKROH814Q0Mv55KUhX3jHT td0mgxtxv/LrW/oT7nzf68GuA6N2skKVK62v2Tu8HRJ/W0KpDrMvCKs5q/620VTOQKCj wDZN0JQwhWpizkWLpeoTvTn/19E8jH6ctBTpF1RqjjUBQt7PmVg0k16eydeyM1Ji52fE aaIkWc11N4xdJg4ZCep0jIMZvkfQsmHJWo/m8aJBtiYxvZ6pMjY1nKGJBbX0NWleIvDK J52L5NHFpRJK2eg9iDDPaSAE+uNYqvsJOZFNOuWT39ZlCd1/YxaOAGBand644Sjl5oY5 kyXQ== 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:from:references:cc:to:subject; bh=4o9HmSyX9yeLgkdzKVSnU3WJG8v2PmF54CMuhIT4nTs=; b=sCmdF3AfWui7c5JOSdIzaPX7Yyyj93nhaniNVl6VfLyfWK2mIRN6So8PX6z/JgwDZj N1GwBnr9sjLoVwBev1/FUEpIl0rD6hM5y6JnqpC6n0P6km/mYoTfwTZAn7qNM3fJkNQb FdvhUZtMNzxg+Jy/4IIz44GN4Y3+UKEC2VPNsu16/AJrTDKgH//2ODYW5JZ2h5Di4Yab MEFtmWgRbAUANQ/pd/AtQ9BBY9iL8xnz+jq0BUHwkP6NnbuupHDy/aANqCtG+umSaE/P rwSWcuJrrTUUHcgOWemmm8XiTqyO9d3HFIjX1huvh/1P9u2XdI4kXUZiMKwokiwnKL7i nYhA== 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 q6si2647016pll.130.2019.03.20.13.57.27; Wed, 20 Mar 2019 13:57:43 -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 S1727382AbfCTU4k (ORCPT + 99 others); Wed, 20 Mar 2019 16:56:40 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:46866 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726647AbfCTU4k (ORCPT ); Wed, 20 Mar 2019 16:56:40 -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 912B61650; Wed, 20 Mar 2019 13:56:39 -0700 (PDT) Received: from [10.1.197.21] (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 585273F59C; Wed, 20 Mar 2019 13:56:37 -0700 (PDT) Subject: Re: [PATCH v7 9/10] KVM: arm64: docs: document KVM support of pointer authentication To: Julien Thierry , Amit Daniel Kachhap , linux-arm-kernel@lists.infradead.org Cc: Christoffer Dall , Marc Zyngier , Catalin Marinas , Will Deacon , Andrew Jones , Dave Martin , Ramana Radhakrishnan , kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org, Mark Rutland , James Morse References: <1552984243-7689-1-git-send-email-amit.kachhap@arm.com> <1552984243-7689-10-git-send-email-amit.kachhap@arm.com> <7bf19035-02ba-ae47-b08c-7d7622a45dbf@arm.com> <648d66dd-519c-7567-a3e1-c23208f68cf2@arm.com> <52d3f9c8-fc27-bf3d-f8f3-1b3921508a8c@arm.com> From: Kristina Martsenko Message-ID: <6d84723d-e00e-e89f-4c42-d48d0eb03443@arm.com> Date: Wed, 20 Mar 2019 20:56:35 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <52d3f9c8-fc27-bf3d-f8f3-1b3921508a8c@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 20/03/2019 18:06, Julien Thierry wrote: > > > On 20/03/2019 15:04, Kristina Martsenko wrote: >> On 20/03/2019 13:37, Julien Thierry wrote: >>> Hi Amit, >>> >>> On 19/03/2019 08:30, Amit Daniel Kachhap wrote: >>>> This adds sections for KVM API extension for pointer authentication. >>>> A brief description about usage of pointer authentication for KVM guests >>>> is added in the arm64 documentations. >> >> [...] >> >>>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt >>>> index 7de9eee..b5c66bc 100644 >>>> --- a/Documentation/virtual/kvm/api.txt >>>> +++ b/Documentation/virtual/kvm/api.txt >>>> @@ -2659,6 +2659,12 @@ Possible features: >>>> Depends on KVM_CAP_ARM_PSCI_0_2. >>>> - KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU. >>>> Depends on KVM_CAP_ARM_PMU_V3. >>>> + - KVM_ARM_VCPU_PTRAUTH_ADDRESS: >>>> + - KVM_ARM_VCPU_PTRAUTH_GENERIC: >>>> + Enables Pointer authentication for the CPU. >>>> + Depends on KVM_CAP_ARM_PTRAUTH and only on arm64 architecture. If >>>> + set, then the KVM guest allows the execution of pointer authentication >>>> + instructions. Otherwise, KVM treats these instructions as undefined. >>>> >>> >>> Overall I feel one could easily get confused to whether >>> PTRAUTH_ADDRESS/GENERIC are two individual features, whether one is a >>> superset of the other, if the names are just an alias of one another, etc... >>> >>> I think the doc should at least stress out that *both* flags are >>> required to enable ptrauth in a guest. However it raises the question, >>> if we don't plan to support the features individually (because we >>> can't), should we really expose two feature flags? I seems odd to >>> introduce two flags that only do something if used together... >> >> Why can't we support the features individually? For example, if we ever >> get a system where all CPUs support address authentication and none of >> them support generic authentication, then we could still support address >> authentication in the guest. >> >> > > That's a good point, I didn't think of that. > > Although, currently we don't have a way to detect that we are in such a > configuration. So as is, both flags are required to enable either > feature, and I feel the documentation should be clear on that aspect. For now we only support enabling both features together, so both flags need to be set. I agree that the documentation should be made clear on this. In the future, if we need to, we can add "negative" cpucaps to detect that a feature is absent on all CPUs. > > Another option would be to introduce a flag that enables both for now, > and if one day we decide to support the configuration you mentioned we > could add "more modular" flags that allow you to control those features > individually. While a bit cumbersome, I would find that less awkward > than having two flags that only do something if both are present. That would work too. I find it more logical to have two flags since there are two features (two ID register fields), and KVM enables two features for the guest. The fact that KVM does not currently support enabling them separately is a KVM implementation choice, and could change in the future. Thanks, Kristina