[PATCH] arm64: KVM: Add 48bit PA support for EL2 translations
Chalamarla, Tirumalesh
Tirumalesh.Chalamarla at caviumnetworks.com
Sat Feb 6 14:31:38 PST 2016
On 2/6/16, 4:05 AM, "Marc Zyngier" <marc.zyngier at arm.com> wrote:
>Tirumalesh,
>
>On Fri, 5 Feb 2016 11:28:16 -0800
><tchalamarla at caviumnetworks.com> wrote:
>
>> From: Tirumalesh Chalamarla <tchalamarla at caviumnetworks.com>
>>
>> Systems where RAM is at higher address and MultiNode systems
>
>What influence a "MultiNode" (for whatever definition of node you have)
>system has on the memory map?
>
>> whith higher address RAM, 39 bit max PA for EL2 translations
>> is not sufficient.
>
>I read it as 40 bits, not 39.
My bad.
>
>>
>> This patch sets max possible PA(48bit) for EL2 translations.
>
>From the ARM ARM:
>
>"If {I}PS is programmed to a value larger than the implemented physical
>address size, then the PE behaves as if programmed with the implemented
>physical address size, but software must not rely on this behavior.
>That is, the output address size is never larger than the implemented
>physical address size."
>
>> Signed-off-by: Tirumalesh Chalamarla <tchalamarla at caviumnetworks.com>
>> ---
>> arch/arm64/include/asm/kvm_arm.h | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
>> index 738a95f..3fc38a4 100644
>> --- a/arch/arm64/include/asm/kvm_arm.h
>> +++ b/arch/arm64/include/asm/kvm_arm.h
>> @@ -98,7 +98,12 @@
>> #define TCR_EL2_RES1 ((1 << 31) | (1 << 23))
>> #define TCR_EL2_TBI (1 << 20)
>> #define TCR_EL2_PS (7 << 16)
>> +#define TCR_EL2_PS_32B (0 << 16)
>> +#define TCR_EL2_PS_36B (1 << 16)
>> #define TCR_EL2_PS_40B (2 << 16)
>> +#define TCR_EL2_PS_42B (3 << 16)
>> +#define TCR_EL2_PS_44B (4 << 16)
>> +#define TCR_EL2_PS_48B (5 << 16)
>> #define TCR_EL2_TG0 (1 << 14)
>> #define TCR_EL2_SH0 (3 << 12)
>> #define TCR_EL2_ORGN0 (3 << 10)
>> @@ -107,7 +112,10 @@
>> #define TCR_EL2_MASK (TCR_EL2_TG0 | TCR_EL2_SH0 | \
>> TCR_EL2_ORGN0 | TCR_EL2_IRGN0 | TCR_EL2_T0SZ)
>>
>> -#define TCR_EL2_FLAGS (TCR_EL2_RES1 | TCR_EL2_PS_40B)
>> +/*
>> + * Assign the highest possible PS.
>> + */
>> +#define TCR_EL2_FLAGS (TCR_EL2_RES1 | TCR_EL2_PS_48B)
>>
>> /* VTCR_EL2 Registers bits */
>> #define VTCR_EL2_RES1 (1 << 31)
>
>So this is a NAK. If you want to address this problem, do it properly
>(hint: look at how we deal with VTCR_EL2).
Sure, will reimplement it.
>
>Thanks,
>
> M.
>--
>Jazz is not dead. It just smells funny.
More information about the linux-arm-kernel
mailing list