[PATCH v21 10/23] KVM: arm64: Add VM specific callback for S2 MMU operations
Suzuki K Poulose
suzuki.poulose at arm.com
Sat Oct 3 08:30:04 PDT 2026
On 03/10/2026 10:01, Marc Zyngier wrote:
> On Thu, 01 Oct 2026 22:06:50 +0100,
> Suzuki K Poulose <suzuki.poulose at arm.com> wrote:
>>
>> Add VM type specific S2 MMU operation backends which can be initialized per
>> VM flavor, to keep the handling cleaner.
>>
>> Reviewed-by: Jonathan Cameron <jonathan.cameron at oss.qualcomm.com>
>> Tested-by: Gavin Shan <gshan at redhat.com>
>> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
>> ---
>> Changes since v19:
>> - Add a blank line in kvm_arch_flush_remote_tlbs()
>> struct kvm_s2_mmu {
>> struct kvm_vmid vmid;
>>
>> @@ -332,6 +345,8 @@ struct kvm_arch {
>> */
>> u64 fgu[__NR_FGT_GROUP_IDS__];
>>
>> + const struct kvm_vm_s2_ops *vm_s2_ops;
>> +
>
> If you're touching this patch, can you please move this pointer next
> to the vcpu_ops pointer?
Sure, I will do that.
>> +
>> +static const struct kvm_vm_s2_ops protected_pkvm_vm_s2_ops = {
>> + .vm_flush_remote_tlbs = pkvm_flush_remote_tlbs,
>> + .vm_flush_remote_tlbs_range = pkvm_flush_remote_tlbs_range,
>> + /*
>> + * Not supported for Protected VMs under pKVM
>> + * .vm_age_gfn
>> + * .vm_test_age_gfn
>> + * .vm_stage2_unmap_range
>> + */
>
> I really think we should have *something* here that returns
> "unsupported", and avoid NULL-checks in the dispatchers.
Ack
>
>> +};
>> +
>> +static const struct kvm_vm_s2_ops pkvm_vm_s2_ops = {
>> + .vm_flush_remote_tlbs = pkvm_flush_remote_tlbs,
>> + .vm_flush_remote_tlbs_range = pkvm_flush_remote_tlbs_range,
>> + .vm_age_gfn = kvm_vm_age_gfn,
>> + .vm_test_age_gfn = kvm_vm_test_age_gfn,
>> + .vm_stage2_unmap_range = kvm_vm_stage2_unmap_range,
>
> and since we have this: can we get rid of the KVM_PGT_FN() hack?
Ack, I will give it a go.
>> +#define KVM_VM_S2_OPS(flavor, ops) \
>> + [flavor] = ops
>> +static const struct kvm_vm_s2_ops *arm64_vm_s2_ops[] = {
>> + KVM_VM_S2_OPS(VM_VHE, &kvm_default_vm_s2_ops),
>> + KVM_VM_S2_OPS(VM_NVHE, &kvm_default_vm_s2_ops),
>> + KVM_VM_S2_OPS(VM_PKVM, &pkvm_vm_s2_ops),
>> + KVM_VM_S2_OPS(VM_PROTECTED_PKVM, &protected_pkvm_vm_s2_ops),
>
> nit: move the '&' into the macro.
Ack.
Suzuki
More information about the linux-arm-kernel
mailing list