Loading drivers/gpu/msm/kgsl.c +26 −0 Original line number Diff line number Diff line Loading @@ -3624,12 +3624,16 @@ long kgsl_ioctl_sparse_phys_alloc(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_phys_alloc *param = data; struct kgsl_mem_entry *entry; uint64_t flags; int ret; int id; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ret = _sparse_alloc_param_sanity_check(param->size, param->pagesize); if (ret) return ret; Loading Loading @@ -3713,9 +3717,13 @@ long kgsl_ioctl_sparse_phys_free(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_phys_free *param = data; struct kgsl_mem_entry *entry; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; entry = kgsl_sharedmem_find_id_flags(process, param->id, KGSL_MEMFLAGS_SPARSE_PHYS); if (entry == NULL) Loading Loading @@ -3745,10 +3753,14 @@ long kgsl_ioctl_sparse_virt_alloc(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *private = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_virt_alloc *param = data; struct kgsl_mem_entry *entry; int ret; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ret = _sparse_alloc_param_sanity_check(param->size, param->pagesize); if (ret) return ret; Loading Loading @@ -3789,9 +3801,13 @@ long kgsl_ioctl_sparse_virt_free(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_virt_free *param = data; struct kgsl_mem_entry *entry = NULL; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; entry = kgsl_sharedmem_find_id_flags(process, param->id, KGSL_MEMFLAGS_SPARSE_VIRT); if (entry == NULL) Loading Loading @@ -4138,6 +4154,7 @@ long kgsl_ioctl_sparse_bind(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *private = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_bind *param = data; struct kgsl_sparse_binding_object obj; struct kgsl_mem_entry *virt_entry; Loading @@ -4146,6 +4163,9 @@ long kgsl_ioctl_sparse_bind(struct kgsl_device_private *dev_priv, int ret = 0; int i = 0; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ptr = (void __user *) (uintptr_t) param->list; if (param->size > sizeof(struct kgsl_sparse_binding_object) || Loading Loading @@ -4201,6 +4221,9 @@ long kgsl_ioctl_gpu_sparse_command(struct kgsl_device_private *dev_priv, long result; unsigned int i = 0; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; /* Make sure sparse and syncpoint count isn't too big */ if (param->numsparse > KGSL_MAX_SPARSE || param->numsyncs > KGSL_MAX_SYNCPOINTS) Loading Loading @@ -5011,6 +5034,9 @@ int kgsl_device_platform_probe(struct kgsl_device *device) if (status) return status; /* Disable the sparse ioctl invocation as they are not used */ device->flags &= ~KGSL_FLAG_SPARSE; kgsl_device_debugfs_init(device); status = kgsl_pwrctrl_init(device); Loading drivers/gpu/msm/kgsl_device.h +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ enum kgsl_event_results { }; #define KGSL_FLAG_WAKE_ON_TOUCH BIT(0) #define KGSL_FLAG_SPARSE BIT(1) /* * "list" of event types for ftrace symbolic magic Loading Loading
drivers/gpu/msm/kgsl.c +26 −0 Original line number Diff line number Diff line Loading @@ -3624,12 +3624,16 @@ long kgsl_ioctl_sparse_phys_alloc(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_phys_alloc *param = data; struct kgsl_mem_entry *entry; uint64_t flags; int ret; int id; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ret = _sparse_alloc_param_sanity_check(param->size, param->pagesize); if (ret) return ret; Loading Loading @@ -3713,9 +3717,13 @@ long kgsl_ioctl_sparse_phys_free(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_phys_free *param = data; struct kgsl_mem_entry *entry; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; entry = kgsl_sharedmem_find_id_flags(process, param->id, KGSL_MEMFLAGS_SPARSE_PHYS); if (entry == NULL) Loading Loading @@ -3745,10 +3753,14 @@ long kgsl_ioctl_sparse_virt_alloc(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *private = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_virt_alloc *param = data; struct kgsl_mem_entry *entry; int ret; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ret = _sparse_alloc_param_sanity_check(param->size, param->pagesize); if (ret) return ret; Loading Loading @@ -3789,9 +3801,13 @@ long kgsl_ioctl_sparse_virt_free(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *process = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_virt_free *param = data; struct kgsl_mem_entry *entry = NULL; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; entry = kgsl_sharedmem_find_id_flags(process, param->id, KGSL_MEMFLAGS_SPARSE_VIRT); if (entry == NULL) Loading Loading @@ -4138,6 +4154,7 @@ long kgsl_ioctl_sparse_bind(struct kgsl_device_private *dev_priv, unsigned int cmd, void *data) { struct kgsl_process_private *private = dev_priv->process_priv; struct kgsl_device *device = dev_priv->device; struct kgsl_sparse_bind *param = data; struct kgsl_sparse_binding_object obj; struct kgsl_mem_entry *virt_entry; Loading @@ -4146,6 +4163,9 @@ long kgsl_ioctl_sparse_bind(struct kgsl_device_private *dev_priv, int ret = 0; int i = 0; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; ptr = (void __user *) (uintptr_t) param->list; if (param->size > sizeof(struct kgsl_sparse_binding_object) || Loading Loading @@ -4201,6 +4221,9 @@ long kgsl_ioctl_gpu_sparse_command(struct kgsl_device_private *dev_priv, long result; unsigned int i = 0; if (!(device->flags & KGSL_FLAG_SPARSE)) return -ENOTSUPP; /* Make sure sparse and syncpoint count isn't too big */ if (param->numsparse > KGSL_MAX_SPARSE || param->numsyncs > KGSL_MAX_SYNCPOINTS) Loading Loading @@ -5011,6 +5034,9 @@ int kgsl_device_platform_probe(struct kgsl_device *device) if (status) return status; /* Disable the sparse ioctl invocation as they are not used */ device->flags &= ~KGSL_FLAG_SPARSE; kgsl_device_debugfs_init(device); status = kgsl_pwrctrl_init(device); Loading
drivers/gpu/msm/kgsl_device.h +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ enum kgsl_event_results { }; #define KGSL_FLAG_WAKE_ON_TOUCH BIT(0) #define KGSL_FLAG_SPARSE BIT(1) /* * "list" of event types for ftrace symbolic magic Loading