On 2025-10-03 1:26 p.m., Jason Gunthorpe wrote: > 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.
If lpa() was replaced by virt_to_phys(), the result would always be equal to pa. So, I think it can be dropped. Dave -- John David Anglin dave.ang...@bell.net