Received: by 10.192.165.148 with SMTP id m20csp4326147imm; Tue, 8 May 2018 06:47:41 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo/2lEiSWEivJ5bLkQSZ5XtOQkh7UzRQRYp1RuP1iczq6ClAZ+g6OA/I6iLY4q5KfwzxyXU X-Received: by 10.98.127.145 with SMTP id a139mr40241351pfd.25.1525787261730; Tue, 08 May 2018 06:47:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525787261; cv=none; d=google.com; s=arc-20160816; b=XeJ3Q3gfK7WILhp2pD29ha4+LyU8gfsPU9lsmmgBsgxVfglua1zkuV7oFxJ9BnaPoG I/s/4pTuhn2CFr8nqaShgntgZ0VWXKtN+6qzq4lX5iLLgWU0AEes5IE1MVeJh1mTDTFd oivuFH45UT95AG3IjVhR/v5pWnrOnPpimSF3+PMLgAojpjSauX3aNvqtCvW6NHQjmuPA Ia0RtolNBlM0yN2GC/87rWpzFAHoy9MQ1up0prlpCu4kmv1DNSI7oC+89FaO/MGRSRFv lkZnQAd/HxXY7Jb6G74enZNak7UNRqnmbbPEH1BiK7nziuIgolqMJnBSfAd0ylA2MHrZ N5sw== 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:arc-authentication-results; bh=JjyDWPKVCQ3hj5Yeo1FtOM1REPGH19V/59qzq8PcYi0=; b=ml7UPaV4G6BYhs54IxNqfIRo72/daj3bpUO4romKFThPGDPNHE0A6IBjBsAje2ipJT CqgQOm8AsmSTfY9Doa9Gmkg84xko87/5jQNuCdHDIHyCpkRBEJ8LIj/tprwFeXXn5j7n kPR82PYfzPkAqEqReutv7RP8IJzNq39xkDIFp0RjZyirL9DyKOBDd9f8bq2NVX4DWP05 0fJwjAWoZ5O27WL0HnByb63ocEb6ZWrasDaBBbE93a5FWOou4ewVwjyPfPUR1XobuW6e gQzQ8ttFtVTyC8cmVG+DWVN6EU/WlpkQ+P/Mfj0b87xHFhgn56jhNgsxyluyW9NNqW1R Ubyg== 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 y6-v6si18738622pgv.520.2018.05.08.06.47.27; Tue, 08 May 2018 06:47:41 -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 S1755286AbeEHNrK (ORCPT + 99 others); Tue, 8 May 2018 09:47:10 -0400 Received: from foss.arm.com ([217.140.101.70]:58752 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754777AbeEHNrH (ORCPT ); Tue, 8 May 2018 09:47:07 -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 5F9C315BE; Tue, 8 May 2018 06:47:07 -0700 (PDT) Received: from [10.1.206.73] (en101.cambridge.arm.com [10.1.206.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5AF303F25D; Tue, 8 May 2018 06:47:05 -0700 (PDT) Subject: Re: [PATCH v2 05/17] arm64: Helper for parange to PASize To: James Morse Cc: linux-arm-kernel@lists.infradead.org, ard.biesheuvel@linaro.org, kvm@vger.kernel.org, marc.zyngier@arm.com, catalin.marinas@arm.com, punit.agrawal@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, kristina.martsenko@arm.com, pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu References: <1522156531-28348-1-git-send-email-suzuki.poulose@arm.com> <1522156531-28348-6-git-send-email-suzuki.poulose@arm.com> From: Suzuki K Poulose Message-ID: <89d5f41c-56e1-9195-ec08-05a708bf15f0@arm.com> Date: Tue, 8 May 2018 14:47:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed 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 03/05/18 15:39, James Morse wrote: > Hi Suzuki, > > Nit: KVM in the subject line? Well, the helper is generic and its just that KVM makes use of it. > > On 27/03/18 14:15, Suzuki K Poulose wrote: >> Add a helper to convert ID_AA64MMFR0_EL1:PARange to they physical >> size shift. Limit the size to the maximum supported by the kernel. >> We are about to move the user of this code and this helps to >> keep the changes cleaner. > >> diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h >> index fbf0aab..1f2a5dd 100644 >> --- a/arch/arm64/include/asm/cpufeature.h >> +++ b/arch/arm64/include/asm/cpufeature.h >> @@ -311,6 +311,22 @@ static inline u64 read_zcr_features(void) >> return zcr; >> } >> >> +static inline u32 id_aa64mmfr0_parange_to_phys_shift(int parange) >> +{ >> + switch (parange) { >> + case 0: return 32; >> + case 1: return 36; >> + case 2: return 40; >> + case 3: return 42; >> + case 4: return 44; >> + /* Report 48 bit if the kernel doesn't support 52bit */ >> + default: >> + case 5: return 48; >> +#ifdef CONFIG_ARM64_PA_BITS_52 >> + case 6: return 52; >> +#endif > > Eeew. I thought 'default' had to appear at the end of the list, but evidently > not! If the last three bit value ever gets used this is going to look really weird. I could rearrange them a bit to : case 4: .. #ifdef CONFIG_ARM64_PA_BITS_52 case 6: ... #endif case 5: /* Report 48 bit if the kernel doesn't support 52bit */ default: return 48; > > Can't we have a helper that just does the mapping, then apply the clamping with > something like: > | parange = min(CONFIG_ARM64_PA_BITS, parange); Yes, I think that might be a bit cleaner. > > > Its odd that the helper has the id-register in the name, but expects you do the > shift and mask for it... > > (and for this patch, KVM has already done the 52bit clamping with: > | if (parange > ID_AA64MMFR0_PARANGE_MAX) > | parange = ID_AA64MMFR0_PARANGE_MAX; > ) > As mentioned in the other thread, I will change the name of the helper. > >> diff --git a/arch/arm64/kvm/hyp/s2-setup.c b/arch/arm64/kvm/hyp/s2-setup.c >> index 603e1ee..b1129c8 100644 >> --- a/arch/arm64/kvm/hyp/s2-setup.c >> +++ b/arch/arm64/kvm/hyp/s2-setup.c >> @@ -19,11 +19,13 @@ >> #include >> #include >> #include >> +#include >> >> u32 __hyp_text __init_stage2_translation(void) >> { > > Nit: Why change the variable you put this in, if its all removed again in patch 11? The parange holds the PARange initially, used to set the VTCR.IPS and is then overloaded with the converted "phys-shift". The change is a minor cleanup to make that clear, even though we remove it later as we don't deal with the phys-shifts anymore. I would prefer to keep it as it is. Cheers Suzuki