Add support for rejected inference responses

Change-Id: I62e13df69c712ed4cf70766429b4cb13fc9c9dcb
diff --git a/kernel/ethosu_inference.c b/kernel/ethosu_inference.c
index 3c18bbd..73a8c06 100644
--- a/kernel/ethosu_inference.c
+++ b/kernel/ethosu_inference.c
@@ -70,6 +70,12 @@
 	case ETHOSU_UAPI_STATUS_ERROR: {
 		return "Error";
 	}
+	case ETHOSU_UAPI_STATUS_RUNNING: {
+		return "Running";
+	}
+	case ETHOSU_UAPI_STATUS_REJECTED: {
+		return "Rejected";
+	}
 	default: {
 		return "Unknown";
 	}
@@ -93,6 +99,8 @@
 	if (ret)
 		return ret;
 
+	inf->status = ETHOSU_UAPI_STATUS_RUNNING;
+
 	ethosu_inference_get(inf);
 
 	return 0;
@@ -412,30 +420,34 @@
 			if (ret)
 				inf->status = ETHOSU_UAPI_STATUS_ERROR;
 		}
+	} else if (rsp->status == ETHOSU_CORE_STATUS_REJECTED) {
+		inf->status = ETHOSU_UAPI_STATUS_REJECTED;
 	} else {
 		inf->status = ETHOSU_UAPI_STATUS_ERROR;
 	}
 
-	for (i = 0; i < ETHOSU_CORE_PMU_MAX; i++) {
-		inf->pmu_event_config[i] = rsp->pmu_event_config[i];
-		inf->pmu_event_count[i] = rsp->pmu_event_count[i];
+	if (inf->status == ETHOSU_UAPI_STATUS_OK) {
+		for (i = 0; i < ETHOSU_CORE_PMU_MAX; i++) {
+			inf->pmu_event_config[i] = rsp->pmu_event_config[i];
+			inf->pmu_event_count[i] = rsp->pmu_event_count[i];
+		}
+
+		inf->pmu_cycle_counter_enable = rsp->pmu_cycle_counter_enable;
+		inf->pmu_cycle_counter_count = rsp->pmu_cycle_counter_count;
+
+		dev_info(edev->dev,
+			 "PMU events. config=[%u, %u, %u, %u], count=[%u, %u, %u, %u]\n",
+			 inf->pmu_event_config[0], inf->pmu_event_config[1],
+			 inf->pmu_event_config[2], inf->pmu_event_config[3],
+			 inf->pmu_event_count[0], inf->pmu_event_count[1],
+			 inf->pmu_event_count[2], inf->pmu_event_count[3]);
+
+		dev_info(edev->dev,
+			 "PMU cycle counter. enable=%u, count=%llu\n",
+			 inf->pmu_cycle_counter_enable,
+			 inf->pmu_cycle_counter_count);
 	}
 
-	inf->pmu_cycle_counter_enable = rsp->pmu_cycle_counter_enable;
-	inf->pmu_cycle_counter_count = rsp->pmu_cycle_counter_count;
-
-	dev_info(edev->dev,
-		 "PMU events. config=[%u, %u, %u, %u], count=[%u, %u, %u, %u]\n",
-		 inf->pmu_event_config[0], inf->pmu_event_config[1],
-		 inf->pmu_event_config[2], inf->pmu_event_config[3],
-		 inf->pmu_event_count[0], inf->pmu_event_count[1],
-		 inf->pmu_event_count[2], inf->pmu_event_count[3]);
-
-	dev_info(edev->dev,
-		 "PMU cycle counter. enable=%u, count=%llu\n",
-		 inf->pmu_cycle_counter_enable,
-		 inf->pmu_cycle_counter_count);
-
 	inf->done = true;
 	wake_up_interruptible(&inf->waitq);