Received: by 10.192.165.148 with SMTP id m20csp840715imm; Fri, 27 Apr 2018 08:20:20 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo11zuyVSVgFctsp3XRxbTeTgNj4eZZHiUv6p1vLjGYynN6f/XpA55bSWMZkOWC6R+c0/v0 X-Received: by 2002:a17:902:b490:: with SMTP id y16-v6mr2658865plr.92.1524842420256; Fri, 27 Apr 2018 08:20:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524842420; cv=none; d=google.com; s=arc-20160816; b=Vk67yASejSb5iEkH+f0qltdSbckV+8ELYqS1E5gJWUO/sJDuGKIEpye4R8urUJEdhF v0xccYlna3FpLPUEKLX3x/mF5whOgLw47Lr2jX8PX4kqUVD05CSq4gAYSGL9PFnMXNY/ m/8Cqb8DYRQITZgwDjUu7Q+1SQF/H33PqEwxLB5d4NbS7B8H2U+H60vFK9xOtt/YQLvC DFXZ31jvTePo3NQf1LAJNwfoyAHafy0jP89xKLeCJFEyY0NUBZYUzi86Qol8gnLxCxSL ppa9iyIH4PE9Zk9eFe9gXY0ZQ6fyvIQsaUTw/GmoKRsS/uMc0DsDZO4OKoJPkHIh+dkk GVKQ== 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=QNqKk2IQy5NNsAFs5LABTVD+2dHy59RINrRWtgzs9Zo=; b=I+5i0QhpcgjFi/HK17uGkdmf1qTNLcrTsL6lx0/jwhC6uufxaHVllFsAm3UphT7RX6 kfXvTGUZc+LLDQCL4mZ3+Pb/fGHBTsj1GmL8I3E9gWIVMSEcLQRL8lmthawzEG4LF4/i pWaCpVwg8J2BczpWe1QX/spPoOsnSXxne8XBLCscXuk6nBfVSjpYaT4ELWVAFhQVViON v2JWgm9KbKewUv+aQWslSowTbyqeZbULfUwAeb+f5n4kiBRujHTz3pqjBCQNhd6MUYae d6Rlcp9/2afPj2l3/d5nczN3PJDqyfbwO3AyUQmzKgw6Me+K4I6zMtr46q0lQmWOfTG0 yKWA== 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 70-v6si1421933ple.372.2018.04.27.08.20.06; Fri, 27 Apr 2018 08:20:20 -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 S933653AbeD0PTE (ORCPT + 99 others); Fri, 27 Apr 2018 11:19:04 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:41956 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932850AbeD0PTB (ORCPT ); Fri, 27 Apr 2018 11:19:01 -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 40B8515AD; Fri, 27 Apr 2018 08:19:01 -0700 (PDT) Received: from [10.1.206.53] (e108454-lin.cambridge.arm.com [10.1.206.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4D0343F487; Fri, 27 Apr 2018 08:18:59 -0700 (PDT) Subject: Re: [PATCH v2 05/17] arm64: Helper for parange to PASize To: Suzuki K Poulose , linux-arm-kernel@lists.infradead.org Cc: 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> <2910d406-315f-6f0f-7456-df9d80a08087@arm.com> From: Julien Grall Message-ID: Date: Fri, 27 Apr 2018 16:18:57 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27/04/18 16:18, Suzuki K Poulose wrote: > On 26/04/18 11:58, Julien Grall wrote: >> Hi Suzuki, >> >> 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. >> >> It is probably worth to mention that you are also adding 52-bit >> support in the patch. > > Sure, will do. Can I take that as a Reviewed-by with the fixed > commit description ? Yes. Here we go: Reviewed-by: Julien Grall Cheers, > > Cheers > Suzuki > >> >> Cheers, >> >>> >>> Cc: Mark Rutland >>> Cc: Catalin Marinas >>> Cc: Will Deacon >>> Cc: Marc Zyngier >>> Cc: Christoffer Dall >>> Signed-off-by: Suzuki K Poulose >>> --- >>>   arch/arm64/include/asm/cpufeature.h | 16 ++++++++++++++++ >>>   arch/arm64/kvm/hyp/s2-setup.c       | 28 +++++----------------------- >>>   2 files changed, 21 insertions(+), 23 deletions(-) >>> >>> 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 >>> +    } >>> +} >>>   #endif /* __ASSEMBLY__ */ >>>   #endif >>> 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) >>>   { >>>       u64 val = VTCR_EL2_FLAGS; >>>       u64 parange; >>> +    u32 phys_shift; >>>       u64 tmp; >>>       /* >>> @@ -37,27 +39,7 @@ u32 __hyp_text __init_stage2_translation(void) >>>       val |= parange << 16; >>>       /* Compute the actual PARange... */ >>> -    switch (parange) { >>> -    case 0: >>> -        parange = 32; >>> -        break; >>> -    case 1: >>> -        parange = 36; >>> -        break; >>> -    case 2: >>> -        parange = 40; >>> -        break; >>> -    case 3: >>> -        parange = 42; >>> -        break; >>> -    case 4: >>> -        parange = 44; >>> -        break; >>> -    case 5: >>> -    default: >>> -        parange = 48; >>> -        break; >>> -    } >>> +    phys_shift = id_aa64mmfr0_parange_to_phys_shift(parange); >>>       /* >>>        * ... and clamp it to 40 bits, unless we have some braindead >>> @@ -65,7 +47,7 @@ u32 __hyp_text __init_stage2_translation(void) >>>        * return that value for the rest of the kernel to decide what >>>        * to do. >>>        */ >>> -    val |= 64 - (parange > 40 ? 40 : parange); >>> +    val |= 64 - (phys_shift > 40 ? 40 : phys_shift); >>>       /* >>>        * Check the availability of Hardware Access Flag / Dirty Bit >>> @@ -86,5 +68,5 @@ u32 __hyp_text __init_stage2_translation(void) >>>       write_sysreg(val, vtcr_el2); >>> -    return parange; >>> +    return phys_shift; >>>   } >>> >> > -- Julien Grall