[PATCH v19 09/20] KVM: arm64: Add VM specific callback for S2 MMU operations

Suzuki K Poulose suzuki.poulose at arm.com
Mon Sep 28 01:13:08 PDT 2026


On 28/09/2026 02:25, Gavin Shan wrote:
> On 9/28/26 11:09 AM, Gavin Shan wrote:
>> On 9/21/26 7:28 AM, Suzuki K Poulose wrote:
>>> Add VM type specific S2 MMU operation backends which can be 
>>> initialized per
>>> VM flavor, to keep the handling cleaner.
>>>
>>> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
>>> ---
>>>   arch/arm64/include/asm/kvm_host.h |  15 ++++
>>>   arch/arm64/kvm/mmu.c              | 137 +++++++++++++++++++++++++-----
>>>   2 files changed, 131 insertions(+), 21 deletions(-)

...

>>> +int kvm_arch_flush_remote_tlbs_range(struct kvm *kvm,
>>> +                     gfn_t gfn, u64 nr_pages)
>>> +{
>>> +    if (!kvm->arch.vm_s2_ops->vm_flush_remote_tlbs_range)
>>> +        return 1;
>>> +
>>
>> Realm would the only case where vm_s2_ops->vm_flush_remote_{tlbs, 
>> tlbs_range)
>> are NULL. On request to flush remote TLBs by 
>> kvm_flush_remote_tlbs_range(), it
>> ends up with event KVM_REQ_TLB_FLUSH queued for each vCPU. How this 
>> queued event
>> is linked to a remote TLB flush for realm? The problem is TLBs are 
>> owned by EL2
>> realm and there are no RMI calls for the management. So I'm wandering 
>> we should
>> return 0 here?
>>
> 
> vm_s2_ops->vm_flush_remote_{tlbs, tlbs_range} are added in PATCH[14] 
> where 0 is
> returned for both function. So I guess needn't this check at all?
> 
>       if (!kvm->arch.vm_s2_ops->vm_flush_remote_tlbs_range)

I would leave that check as they are. The only callback that
is mandatory is the vm_mem_abort and we do enforce it at init.

Cheers
Suzuki




More information about the linux-arm-kernel mailing list