On Fri, May 31, 2024 at 1:57 AM Andy Shevchenko < andriy.shevche...@linux.intel.com> wrote:
> On Thu, May 30, 2024 at 10:36:57PM -0700, Chia-I Wu wrote: > > We can skip children resources when the parent resource does not cover > > the range. > > > > This should help vmf_insert_* users on x86, such as several DRM drivers. > > On my AMD Ryzen 5 7520C, when streaming data from cpu memory into amdgpu > > bo, the throughput goes from 5.1GB/s to 6.6GB/s. perf report says > > > > 34.69%--__do_fault > > 34.60%--amdgpu_gem_fault > > 34.00%--ttm_bo_vm_fault_reserved > > 32.95%--vmf_insert_pfn_prot > > 25.89%--track_pfn_insert > > 24.35%--lookup_memtype > > 21.77%--pat_pagerange_is_ram > > 20.80%--walk_system_ram_range > > 17.42%--find_next_iomem_res > > > > before this change, and > > > > 26.67%--__do_fault > > 26.57%--amdgpu_gem_fault > > 25.83%--ttm_bo_vm_fault_reserved > > 24.40%--vmf_insert_pfn_prot > > 14.30%--track_pfn_insert > > 12.20%--lookup_memtype > > 9.34%--pat_pagerange_is_ram > > 8.22%--walk_system_ram_range > > 5.09%--find_next_iomem_res > > > > after. > > Is there any documentation that explicitly says that the children resources > must not overlap parent's one? Do we have some test cases? (Either way they > needs to be added / expanded). > I think it's the opposite. The assumption here is that a child is always a subset of its parent. Thus, if the range to be checked is not covered by a parent, we can skip the children. That's guaranteed by __request_resource. I am less sure about __insert_resource but it appears to be the case too. FWIW, resource_is_exclusive has the same assumption already. It looks like I need to do some refactoring to add tests. > P.S> I'm not so sure about this change. It needs a thoroughly testing, esp. > in PCI case. Cc'ing to Ilpo. > What's special about PCI? -- > With Best Regards, > Andy Shevchenko > > >