On Fri, Oct 03, 2025 at 01:18:32PM -0400, John David Anglin wrote: > On 2025-10-03 11:01 a.m., Jason Gunthorpe wrote: > > This doesn't actually use the virt at all: > > > > offset = ((unsigned long) addr) & ~IOVP_MASK; > > if((size % L1_CACHE_BYTES) || ((unsigned long)addr % L1_CACHE_BYTES)) > > ccio_io_pdir_entry(pdir_start, KERNEL_SPACE, (unsigned > > long)addr, hint); > > > > And ccio_io_pdir_entry(): > > pa = lpa(vba); > > > > Is a special instruction that uses virt but AI tells me that special > > LPA instruction is returning phys. Not sure if that is a different > > value than virt_to_phys().. > > ccio_io_pdir_entry currently only supports KERNEL_SPACE. For KERNEL_SPACE, > lpa() and > virt_to_phys() are equivalent if page is mapped. lpa() returns 0 if a > non-access data > TLB fault occurs (i.e., page isn't mapped). Not sure if that > matters.
After unfolding everything the expression is lpa(phys_to_virt(pa)) So if that is always equal to pa then lets just drop it. phys_to_virt() always returns something kernel mapped, and it can't be unmapped. Jason