[PATCH v5 09/23] KVM: arm/arm64: Keep GICv2 HYP VAs in kvm_vgic_global_state

Marc Zyngier marc.zyngier at arm.com
Tue Mar 13 04:40:13 PDT 2018


On 13/03/18 09:35, Suzuki K Poulose wrote:
> On 01/03/18 15:55, Marc Zyngier wrote:
>> As we're about to change the way we map devices at HYP, we need
>> to move away from kern_hyp_va on an IO address.
>>
>> One way of achieving this is to store the VAs in kvm_vgic_global_state,
>> and use that directly from the HYP code. This requires a small change
>> to create_hyp_io_mappings so that it can also return a HYP VA.
>>
>> We take this opportunity to nuke the vctrl_base field in the emulated
>> distributor, as it is not used anymore.
>>
>> Reviewed-by: Christoffer Dall <christoffer.dall at linaro.org>
>> Signed-off-by: Marc Zyngier <marc.zyngier at arm.com>
>> ---
>>   arch/arm/include/asm/kvm_mmu.h   |  3 ++-
>>   arch/arm64/include/asm/kvm_mmu.h |  3 ++-
>>   include/kvm/arm_vgic.h           | 12 ++++++------
>>   virt/kvm/arm/hyp/vgic-v2-sr.c    | 10 +++-------
>>   virt/kvm/arm/mmu.c               | 20 +++++++++++++++-----
>>   virt/kvm/arm/vgic/vgic-init.c    |  6 ------
>>   virt/kvm/arm/vgic/vgic-v2.c      | 13 +++++++------
>>   7 files changed, 35 insertions(+), 32 deletions(-)
>>
> 
> ...
> 
>> diff --git a/virt/kvm/arm/vgic/vgic-v2.c b/virt/kvm/arm/vgic/vgic-v2.c
>> index 21f963f9780e..38406825e663 100644
>> --- a/virt/kvm/arm/vgic/vgic-v2.c
>> +++ b/virt/kvm/arm/vgic/vgic-v2.c
>> @@ -364,7 +364,8 @@ int vgic_v2_probe(const struct gic_kvm_info *info)
>>   
>>   		ret = create_hyp_io_mappings(info->vcpu.start,
>>   					     resource_size(&info->vcpu),
>> -					     &kvm_vgic_global_state.vcpu_base_va);
>> +					     &kvm_vgic_global_state.vcpu_base_va,
>> +					     &kvm_vgic_global_state.vcpu_hyp_va);
>>   		if (ret) {
>>   			kvm_err("Cannot map GICV into hyp\n");
>>   			goto out;
>> @@ -375,7 +376,8 @@ int vgic_v2_probe(const struct gic_kvm_info *info)
>>   
>>   	ret = create_hyp_io_mappings(info->vctrl.start,
>>   				     resource_size(&info->vctrl),
>> -				     &kvm_vgic_global_state.vctrl_base);
>> +				     &kvm_vgic_global_state.vctrl_base,
>> +				     &kvm_vgic_global_state.vctrl_hyp);
> 
> Now that we have the hyp VA, does it make sense to unmap the hyp VA, just
> like we unmap the kernel io mapping if we fail to register the device ?
Unfortunately, we don't have such facility to unmap a single range yet.
All we can do is to teardown the whole HYP VA space, which is probably
what is happening when returning an error.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...



More information about the linux-arm-kernel mailing list