remoteproc: rproc_va_to_pa returns invalid physical address when using sparse memory model

From: Mark-PK Tsai
Date: Mon Nov 08 2021 - 04:48:16 EST


On my arm platform with CONFIG_SPARSEMEM=y, when the virtual address comes
from ioremap, which map to a reserved memory region, rproc_va_to_pa
returns a invalid address. (no iommu)

It's because the corresponding struct page and section not present.
And then __page_to_pfn read the page->flags in the returned page which
is actually an invalid address.
(When CONFIG_SPARSMEM=y && CONFIG_SPARSEMEM_VMEMMAP=n, kernel get the
section the page belong to in flags field.)

I'm looking for suggestion to properly fix this problem.
Could you please give us some suggestion?