Loading drivers/gpu/msm/kgsl.c +9 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2008-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2008-2021, The Linux Foundation. All rights reserved. */ #include <uapi/linux/sched/types.h> Loading Loading @@ -2451,6 +2451,8 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, { /* Map an anonymous memory chunk */ int ret; if (size == 0 || offset != 0 || !IS_ALIGNED(size, PAGE_SIZE)) return -EINVAL; Loading @@ -2460,7 +2462,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.flags |= (uint64_t)KGSL_MEMFLAGS_USERMEM_ADDR; if (kgsl_memdesc_use_cpu_map(&entry->memdesc)) { int ret; /* Register the address in the database */ ret = kgsl_mmu_set_svm_region(pagetable, Loading @@ -2472,7 +2473,12 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.gpuaddr = (uint64_t) hostptr; } return memdesc_sg_virt(&entry->memdesc, hostptr); ret = memdesc_sg_virt(&entry->memdesc, hostptr); if (ret && kgsl_memdesc_use_cpu_map(&entry->memdesc)) kgsl_mmu_put_gpuaddr(&entry->memdesc); return ret; } #ifdef CONFIG_DMA_SHARED_BUFFER Loading drivers/gpu/msm/kgsl_mmu.c +2 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2002,2007-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2002,2007-2021, The Linux Foundation. All rights reserved. */ #include <linux/slab.h> Loading Loading @@ -398,7 +398,7 @@ void kgsl_mmu_put_gpuaddr(struct kgsl_memdesc *memdesc) if (memdesc->size == 0 || memdesc->gpuaddr == 0) return; if (!kgsl_memdesc_is_global(memdesc)) if (!kgsl_memdesc_is_global(memdesc) && (KGSL_MEMDESC_MAPPED & memdesc->priv)) unmap_fail = kgsl_mmu_unmap(pagetable, memdesc); /* Loading Loading
drivers/gpu/msm/kgsl.c +9 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2008-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2008-2021, The Linux Foundation. All rights reserved. */ #include <uapi/linux/sched/types.h> Loading Loading @@ -2451,6 +2451,8 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, { /* Map an anonymous memory chunk */ int ret; if (size == 0 || offset != 0 || !IS_ALIGNED(size, PAGE_SIZE)) return -EINVAL; Loading @@ -2460,7 +2462,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.flags |= (uint64_t)KGSL_MEMFLAGS_USERMEM_ADDR; if (kgsl_memdesc_use_cpu_map(&entry->memdesc)) { int ret; /* Register the address in the database */ ret = kgsl_mmu_set_svm_region(pagetable, Loading @@ -2472,7 +2473,12 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.gpuaddr = (uint64_t) hostptr; } return memdesc_sg_virt(&entry->memdesc, hostptr); ret = memdesc_sg_virt(&entry->memdesc, hostptr); if (ret && kgsl_memdesc_use_cpu_map(&entry->memdesc)) kgsl_mmu_put_gpuaddr(&entry->memdesc); return ret; } #ifdef CONFIG_DMA_SHARED_BUFFER Loading
drivers/gpu/msm/kgsl_mmu.c +2 −2 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2002,2007-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2002,2007-2021, The Linux Foundation. All rights reserved. */ #include <linux/slab.h> Loading Loading @@ -398,7 +398,7 @@ void kgsl_mmu_put_gpuaddr(struct kgsl_memdesc *memdesc) if (memdesc->size == 0 || memdesc->gpuaddr == 0) return; if (!kgsl_memdesc_is_global(memdesc)) if (!kgsl_memdesc_is_global(memdesc) && (KGSL_MEMDESC_MAPPED & memdesc->priv)) unmap_fail = kgsl_mmu_unmap(pagetable, memdesc); /* Loading