Re: [PATCH v14 00/13] SMMUv3 Nested Stage Setup (IOMMU part)

Sumit Gupta
2021-04-24T11:29:40Z

>> I have worked around the issue by filtering out the request if the
>> pfn is not valid in __clean_dcache_guest_page(). As the patch
>> wasn't posted in the community, reverted it as well.
>
> That's papering over the real issue, and this mapping path needs
> fixing as it was only ever expected to be called for CoW.
>
> Can you please try the following patch and let me know if that fixes
> the issue for good?
>

Hi Marc,

Thank you for the patch. This patch fixed the crash for me.
For the formal patch, please add:

Tested-by: Sumit Gupta <sumitg@nvidia.com>

>
> diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
> index 77cb2d28f2a4..b62dd40a4083 100644
> --- a/arch/arm64/kvm/mmu.c
> +++ b/arch/arm64/kvm/mmu.c
> @@ -1147,7 +1147,8 @@ int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte)
> * We've moved a page around, probably through CoW, so let's treat it
> * just like a translation fault and clean the cache to the PoC.
> */
> - clean_dcache_guest_page(pfn, PAGE_SIZE);
> + if (!kvm_is_device_pfn(pfn))
> + clean_dcache_guest_page(pfn, PAGE_SIZE);
> handle_hva_to_gpa(kvm, hva, end, &kvm_set_spte_handler, &pfn);
> return 0;
> }
>
>
> --
> Without deviation from the norm, progress is not possible.
>