2021-11-08 13:26:02

by Mark-PK Tsai

[permalink] [raw]
Subject: remoteproc: rproc_va_to_pa returns invalid physical address when using sparse memory model

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?