Loading drivers/gpu/msm/adreno_a5xx_preempt.c +3 −2 Original line number Diff line number Diff line /* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2017,2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -407,7 +407,8 @@ unsigned int a5xx_preemption_pre_ibsubmit( /* Enable CP_CONTEXT_SWITCH_YIELD packets in the IB2s */ *cmds++ = cp_type7_packet(CP_YIELD_ENABLE, 1); *cmds++ = 2; *cmds++ = ((preempt_style == KGSL_CONTEXT_PREEMPT_STYLE_RINGBUFFER) ? 0 : 2); return (unsigned int) (cmds - cmds_orig); } Loading drivers/gpu/msm/kgsl.c +10 −3 Original line number Diff line number Diff line Loading @@ -265,8 +265,9 @@ kgsl_mem_entry_create(void) /* put this ref in the caller functions after init */ kref_get(&entry->refcount); } atomic_set(&entry->map_count, 0); } return entry; } #ifdef CONFIG_DMA_SHARED_BUFFER Loading Loading @@ -2200,6 +2201,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 @@ -2209,7 +2212,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.flags |= 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 @@ -2221,7 +2223,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; } static int match_file(const void *p, struct file *file, unsigned int fd) Loading drivers/gpu/msm/kgsl_iommu.c +2 −1 Original line number Diff line number Diff line Loading @@ -199,8 +199,9 @@ static void kgsl_iommu_remove_global(struct kgsl_mmu *mmu, static void kgsl_iommu_add_global(struct kgsl_mmu *mmu, struct kgsl_memdesc *memdesc, const char *name) { u32 bit, start = 0; u32 bit; u64 size = kgsl_memdesc_footprint(memdesc); int start = 0; if (memdesc->gpuaddr != 0) return; Loading drivers/gpu/msm/kgsl_mmu.c +2 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,8 @@ 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 drivers/md/dm-verity-target.c +10 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,14 @@ struct dm_verity_prefetch_work { struct buffer_aux { int hash_verified; }; /* * While system shutdown, skip verity work for I/O error. */ static inline bool verity_is_system_shutting_down(void) { return system_state == SYSTEM_HALT || system_state == SYSTEM_POWER_OFF || system_state == SYSTEM_RESTART; } /* * Initialize struct buffer_aux for a freshly created buffer. Loading Loading @@ -509,7 +517,8 @@ static void verity_end_io(struct bio *bio) { struct dm_verity_io *io = bio->bi_private; if (bio->bi_error && !verity_fec_is_enabled(io->v)) { if (bio->bi_error && (!verity_fec_is_enabled(io->v) || verity_is_system_shutting_down())) { verity_finish_io(io, bio->bi_error); return; } Loading Loading
drivers/gpu/msm/adreno_a5xx_preempt.c +3 −2 Original line number Diff line number Diff line /* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2017,2021, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -407,7 +407,8 @@ unsigned int a5xx_preemption_pre_ibsubmit( /* Enable CP_CONTEXT_SWITCH_YIELD packets in the IB2s */ *cmds++ = cp_type7_packet(CP_YIELD_ENABLE, 1); *cmds++ = 2; *cmds++ = ((preempt_style == KGSL_CONTEXT_PREEMPT_STYLE_RINGBUFFER) ? 0 : 2); return (unsigned int) (cmds - cmds_orig); } Loading
drivers/gpu/msm/kgsl.c +10 −3 Original line number Diff line number Diff line Loading @@ -265,8 +265,9 @@ kgsl_mem_entry_create(void) /* put this ref in the caller functions after init */ kref_get(&entry->refcount); } atomic_set(&entry->map_count, 0); } return entry; } #ifdef CONFIG_DMA_SHARED_BUFFER Loading Loading @@ -2200,6 +2201,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 @@ -2209,7 +2212,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable, entry->memdesc.flags |= 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 @@ -2221,7 +2223,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; } static int match_file(const void *p, struct file *file, unsigned int fd) Loading
drivers/gpu/msm/kgsl_iommu.c +2 −1 Original line number Diff line number Diff line Loading @@ -199,8 +199,9 @@ static void kgsl_iommu_remove_global(struct kgsl_mmu *mmu, static void kgsl_iommu_add_global(struct kgsl_mmu *mmu, struct kgsl_memdesc *memdesc, const char *name) { u32 bit, start = 0; u32 bit; u64 size = kgsl_memdesc_footprint(memdesc); int start = 0; if (memdesc->gpuaddr != 0) return; Loading
drivers/gpu/msm/kgsl_mmu.c +2 −1 Original line number Diff line number Diff line Loading @@ -432,7 +432,8 @@ 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
drivers/md/dm-verity-target.c +10 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,14 @@ struct dm_verity_prefetch_work { struct buffer_aux { int hash_verified; }; /* * While system shutdown, skip verity work for I/O error. */ static inline bool verity_is_system_shutting_down(void) { return system_state == SYSTEM_HALT || system_state == SYSTEM_POWER_OFF || system_state == SYSTEM_RESTART; } /* * Initialize struct buffer_aux for a freshly created buffer. Loading Loading @@ -509,7 +517,8 @@ static void verity_end_io(struct bio *bio) { struct dm_verity_io *io = bio->bi_private; if (bio->bi_error && !verity_fec_is_enabled(io->v)) { if (bio->bi_error && (!verity_fec_is_enabled(io->v) || verity_is_system_shutting_down())) { verity_finish_io(io, bio->bi_error); return; } Loading