diff options
author | Davide Grohmann <davide.grohmann@arm.com> | 2022-04-25 12:52:38 +0200 |
---|---|---|
committer | Davide Grohmann <davide.grohmann@arm.com> | 2022-05-02 09:40:15 +0200 |
commit | 82d225899bd3d4fd07d70cac80f50c1b288dc4a3 (patch) | |
tree | d0edc8d0fa059bba99e00377feab1aad42385590 /kernel/ethosu_inference.c | |
parent | 415de582dcf6f06dc71c9c48eeed0a01bfefc222 (diff) | |
download | ethos-u-linux-driver-stack-82d225899bd3d4fd07d70cac80f50c1b288dc4a3.tar.gz |
Add support for rejected inference responses
Change-Id: I62e13df69c712ed4cf70766429b4cb13fc9c9dcb
Diffstat (limited to 'kernel/ethosu_inference.c')
-rw-r--r-- | kernel/ethosu_inference.c | 44 |
1 files changed, 28 insertions, 16 deletions
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 @@ static const char *status_to_string(const enum ethosu_uapi_status status) 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 @@ static int ethosu_inference_send(struct ethosu_inference *inf) if (ret) return ret; + inf->status = ETHOSU_UAPI_STATUS_RUNNING; + ethosu_inference_get(inf); return 0; @@ -412,29 +420,33 @@ void ethosu_inference_rsp(struct ethosu_device *edev, 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; + 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 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); + 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); |