diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c index 0eabf8914814..f0c00ed261e7 100644 --- a/drivers/gpu/msm/kgsl.c +++ b/drivers/gpu/msm/kgsl.c @@ -2591,7 +2591,8 @@ long kgsl_ioctl_gpuobj_import(struct kgsl_device_private *dev_priv, | KGSL_MEMFLAGS_USE_CPU_MAP | KGSL_MEMFLAGS_SECURE | KGSL_MEMFLAGS_FORCE_32BIT - | KGSL_MEMFLAGS_IOCOHERENT; + | KGSL_MEMFLAGS_IOCOHERENT + | KGSL_MEMFLAGS_GUARD_PAGE; kgsl_memdesc_init(dev_priv->device, &entry->memdesc, param->flags); if (param->type == KGSL_USER_MEM_TYPE_ADDR) @@ -3270,7 +3271,8 @@ struct kgsl_mem_entry *gpumem_alloc_entry( | KGSL_MEMFLAGS_USE_CPU_MAP | KGSL_MEMFLAGS_SECURE | KGSL_MEMFLAGS_FORCE_32BIT - | KGSL_MEMFLAGS_IOCOHERENT; + | KGSL_MEMFLAGS_IOCOHERENT + | KGSL_MEMFLAGS_GUARD_PAGE; /* Return not supported error if secure memory isn't enabled */ if (!kgsl_mmu_is_secured(mmu) && diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index 785f56445235..f5b3b9226e4b 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -595,7 +595,8 @@ void kgsl_memdesc_init(struct kgsl_device *device, cachemode == KGSL_CACHEMODE_UNCACHED)) flags &= ~((u64) KGSL_MEMFLAGS_IOCOHERENT); - if (kgsl_mmu_has_feature(device, KGSL_MMU_NEED_GUARD_PAGE)) + if (kgsl_mmu_has_feature(device, KGSL_MMU_NEED_GUARD_PAGE) || + (flags & KGSL_MEMFLAGS_GUARD_PAGE)) memdesc->priv |= KGSL_MEMDESC_GUARD_PAGE; if (flags & KGSL_MEMFLAGS_SECURE) diff --git a/include/uapi/linux/msm_kgsl.h b/include/uapi/linux/msm_kgsl.h index 2de01c5ab4d3..1c627345ea1c 100644 --- a/include/uapi/linux/msm_kgsl.h +++ b/include/uapi/linux/msm_kgsl.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* - * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #ifndef _UAPI_MSM_KGSL_H @@ -126,10 +126,10 @@ /* --- Memory allocation flags --- */ /* General allocation hints */ -#define KGSL_MEMFLAGS_SECURE 0x00000008ULL -#define KGSL_MEMFLAGS_GPUREADONLY 0x01000000U -#define KGSL_MEMFLAGS_GPUWRITEONLY 0x02000000U -#define KGSL_MEMFLAGS_FORCE_32BIT 0x100000000ULL +#define KGSL_MEMFLAGS_SECURE (1ULL << 3) +#define KGSL_MEMFLAGS_GPUREADONLY (1ULL << 24) +#define KGSL_MEMFLAGS_GPUWRITEONLY (1ULL << 25) +#define KGSL_MEMFLAGS_FORCE_32BIT (1ULL << 32) /* Flag for binding all the virt range to single phys data */ #define KGSL_SPARSE_BIND_MULTIPLE_TO_PHYS 0x400000000ULL @@ -145,10 +145,11 @@ #define KGSL_CACHEMODE_WRITETHROUGH 2 #define KGSL_CACHEMODE_WRITEBACK 3 -#define KGSL_MEMFLAGS_USE_CPU_MAP 0x10000000ULL -#define KGSL_MEMFLAGS_SPARSE_PHYS 0x20000000ULL -#define KGSL_MEMFLAGS_SPARSE_VIRT 0x40000000ULL -#define KGSL_MEMFLAGS_IOCOHERENT 0x80000000ULL +#define KGSL_MEMFLAGS_USE_CPU_MAP (1ULL << 28) +#define KGSL_MEMFLAGS_SPARSE_PHYS (1ULL << 29) +#define KGSL_MEMFLAGS_SPARSE_VIRT (1ULL << 30) +#define KGSL_MEMFLAGS_IOCOHERENT (1ULL << 31) +#define KGSL_MEMFLAGS_GUARD_PAGE (1ULL << 33) /* Memory types for which allocations are made */ #define KGSL_MEMTYPE_MASK 0x0000FF00