}
switch (cache_op) {
+ case VCSM_CACHE_OP_NOP:
+ return 0;
case VCSM_CACHE_OP_INV:
op_fn = dmac_inv_range;
break;
return 0;
switch (cache_op) {
+ case VCSM_CACHE_OP_NOP:
+ return 0;
case VCSM_CACHE_OP_INV:
stat_attempt = INVALID;
stat_failure = INVALID_FAIL;
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);
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;
}
* 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