From: Liam R. Howlett Date: Mon, 4 Jan 2021 19:28:48 +0000 (-0500) Subject: arch/powerpc: Optimize cell spu task sync. X-Git-Tag: howlett/maple_spf/20210104~38 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5147d8eff59c43d06c8ab805527fc31349f3442a;p=users%2Fjedix%2Flinux-maple.git arch/powerpc: Optimize cell spu task sync. Use the vma api to look up the spu reference instead of walking the linked list. Signed-off-by: Liam R. Howlett --- diff --git a/arch/powerpc/oprofile/cell/spu_task_sync.c b/arch/powerpc/oprofile/cell/spu_task_sync.c index 489f993100d5..47b4d4e9b628 100644 --- a/arch/powerpc/oprofile/cell/spu_task_sync.c +++ b/arch/powerpc/oprofile/cell/spu_task_sync.c @@ -333,19 +333,17 @@ get_exec_dcookie_and_offset(struct spu *spu, unsigned int *offsetp, } mmap_read_lock(mm); - for (vma = mm->mmap; vma; vma = vma->vm_next) { - if (vma->vm_start > spu_ref || vma->vm_end <= spu_ref) - continue; - my_offset = spu_ref - vma->vm_start; - if (!vma->vm_file) - goto fail_no_image_cookie; - - pr_debug("Found spu ELF at %X(object-id:%lx) for file %pD\n", - my_offset, spu_ref, vma->vm_file); - *offsetp = my_offset; - break; - } + vma = find_vma_intersection(mm, spu_ref, spu_ref + 1); + if (!vma) + goto fail_no_image_cookie; + + my_offset = spu_ref - vma->vm_start; + if (!vma->vm_file) + goto fail_no_image_cookie; + pr_debug("Found spu ELF at %X(object-id:%lx) for file %pD\n", + my_offset, spu_ref, vma->vm_file); + *offsetp = my_offset; *spu_bin_dcookie = fast_get_dcookie(&vma->vm_file->f_path); pr_debug("got dcookie for %pD\n", vma->vm_file);