From 89a18e6a31a2e8fafb124758957ceb7a2060b247 Mon Sep 17 00:00:00 2001 From: Sugizaki Yukimasa Date: Wed, 10 Jan 2018 04:32:20 +0900 Subject: [PATCH 173/277] vcsm: Add no-op cache operation constant Signed-off-by: Sugizaki Yukimasa --- drivers/char/broadcom/vc_sm/vmcs_sm.c | 10 ++++++++++ include/linux/broadcom/vmcs_sm_ioctl.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/char/broadcom/vc_sm/vmcs_sm.c b/drivers/char/broadcom/vc_sm/vmcs_sm.c index 0d14c511da2a..122ea149790b 100644 --- a/drivers/char/broadcom/vc_sm/vmcs_sm.c +++ b/drivers/char/broadcom/vc_sm/vmcs_sm.c @@ -1269,6 +1269,8 @@ static int clean_invalid_mem_2d(const void __user *addr, } switch (cache_op) { + case VCSM_CACHE_OP_NOP: + return 0; case VCSM_CACHE_OP_INV: op_fn = dmac_inv_range; break; @@ -1312,6 +1314,8 @@ static int clean_invalid_resource(const void __user *addr, const size_t size, return 0; switch (cache_op) { + case VCSM_CACHE_OP_NOP: + return 0; case VCSM_CACHE_OP_INV: stat_attempt = INVALID; stat_failure = INVALID_FAIL; @@ -2936,6 +2940,9 @@ static long vc_sm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) goto out; } for (i = 0; i < sizeof(ioparam.s) / sizeof(*ioparam.s); i++) { + if (ioparam.s[i].cmd == VCSM_CACHE_OP_NOP) + break; + /* Locate resource from GUID. */ resource = vmcs_sm_acquire_resource(file_data, ioparam.s[i].handle); @@ -2989,6 +2996,9 @@ static long vc_sm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ret = clean_invalid_mem_2d((void __user*) op->start_address, op->block_count, op->block_size, op->inter_block_stride, op->invalidate_mode); + if (op->invalidate_mode == VCSM_CACHE_OP_NOP) + continue; + if (ret) break; } diff --git a/include/linux/broadcom/vmcs_sm_ioctl.h b/include/linux/broadcom/vmcs_sm_ioctl.h index e881fa8ee8e1..a4492b921b48 100644 --- a/include/linux/broadcom/vmcs_sm_ioctl.h +++ b/include/linux/broadcom/vmcs_sm_ioctl.h @@ -172,6 +172,7 @@ struct vmcs_sm_ioctl_cache { * Cache functions to be set to struct vmcs_sm_ioctl_clean_invalid cmd and * vmcs_sm_ioctl_clean_invalid2 invalidate_mode. */ +#define VCSM_CACHE_OP_NOP 0x00 #define VCSM_CACHE_OP_INV 0x01 #define VCSM_CACHE_OP_CLEAN 0x02 #define VCSM_CACHE_OP_FLUSH 0x03 -- 2.16.1