summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWhi copybara merger <whitechapel-automerger@google.com>2023-03-27 09:57:12 -0700
committerTodd Poynor <toddpoynor@google.com>2023-03-29 20:42:29 +0000
commit9cbd6821b529a006762748c6feff21798240cffe (patch)
treecf103a98d8584c804342689734dee5bce520ee97
parentdf31d3eff8937aa4ef42306358a906911fac479f (diff)
downloadjaneiro-9cbd6821b529a006762748c6feff21798240cffe.tar.gz
[Copybara Auto Merge] Merge branch pro into android13-gs-pixel-5.10-udc
edgetpu: fix -Wcast-function-type-strict Bug: 264965700 edgetpu: Make group required for creating fence Bug: 258868303 edgetpu: create debugfs symlinks for non-default device names Revert "edgetpu: Continue powering up if the block is still on" Bug: 272701322 GitOrigin-RevId: 80b26b9415c1973231e58edb036959418a3d5af1 Change-Id: I1f98a50db75381929521ec61350619babf30290e
-rw-r--r--drivers/edgetpu/edgetpu-device-group.c8
-rw-r--r--drivers/edgetpu/edgetpu-dmabuf.c20
-rw-r--r--drivers/edgetpu/edgetpu-fs.c14
-rw-r--r--drivers/edgetpu/edgetpu-internal.h1
-rw-r--r--drivers/edgetpu/mobile-pm.c2
5 files changed, 22 insertions, 23 deletions
diff --git a/drivers/edgetpu/edgetpu-device-group.c b/drivers/edgetpu/edgetpu-device-group.c
index 7734f33..2b13cf0 100644
--- a/drivers/edgetpu/edgetpu-device-group.c
+++ b/drivers/edgetpu/edgetpu-device-group.c
@@ -949,8 +949,9 @@ struct iova_mapping_worker_param {
uint idx;
};
-static int edgetpu_map_iova_sgt_worker(struct iova_mapping_worker_param *param)
+static int edgetpu_map_iova_sgt_worker(void *p)
{
+ struct iova_mapping_worker_param *param = p;
struct edgetpu_device_group *group = param->group;
uint i = param->idx;
struct edgetpu_host_map *hmap = param->hmap;
@@ -1006,9 +1007,8 @@ static int edgetpu_device_group_map_iova_sgt(struct edgetpu_device_group *group,
params[i].hmap = hmap;
params[i].group = group;
params[i].idx = i + 1;
- ret = edgetpu_async_add_job(
- ctx, &params[i],
- (edgetpu_async_job_t)edgetpu_map_iova_sgt_worker);
+ ret = edgetpu_async_add_job(ctx, &params[i],
+ edgetpu_map_iova_sgt_worker);
if (ret)
goto out_free;
}
diff --git a/drivers/edgetpu/edgetpu-dmabuf.c b/drivers/edgetpu/edgetpu-dmabuf.c
index 72072f6..fbc9f48 100644
--- a/drivers/edgetpu/edgetpu-dmabuf.c
+++ b/drivers/edgetpu/edgetpu-dmabuf.c
@@ -888,7 +888,7 @@ static void edgetpu_dma_fence_release(struct dma_fence *fence)
list_del(&etfence->etfence_list);
spin_unlock_irqrestore(&etfence_list_lock, flags);
- /* TODO(b/258868303): Don't remove this check when group required, might not yet be set. */
+ /* group might not yet be set if error at init time. */
group = etfence->group;
if (group) {
mutex_lock(&group->lock);
@@ -963,15 +963,10 @@ int edgetpu_sync_fence_create(struct edgetpu_device_group *group,
spin_lock_irqsave(&etfence_list_lock, flags);
list_add_tail(&etfence->etfence_list, &etfence_list_head);
spin_unlock_irqrestore(&etfence_list_lock, flags);
-
- /* TODO(b/258868303): Make group required, disallow creating fence we can't track. */
- if (group) {
- etfence->group = edgetpu_device_group_get(group);
- mutex_lock(&group->lock);
- list_add_tail(&etfence->group_list, &group->dma_fence_list);
- mutex_unlock(&group->lock);
- }
-
+ etfence->group = edgetpu_device_group_get(group);
+ mutex_lock(&group->lock);
+ list_add_tail(&etfence->group_list, &group->dma_fence_list);
+ mutex_unlock(&group->lock);
fd_install(fd, sync_file->file);
datap->fence = fd;
return 0;
@@ -1098,10 +1093,7 @@ int edgetpu_sync_fence_debugfs_show(struct seq_file *s, void *unused)
if (fence->error)
seq_printf(s, " err=%d", fence->error);
- /* TODO(b/258868303): Remove check when group is required. */
- if (etfence->group)
- seq_printf(s, " group=%u", etfence->group->workload_id);
- seq_putc(s, '\n');
+ seq_printf(s, " group=%u\n", etfence->group->workload_id);
spin_unlock_irq(&etfence->lock);
}
diff --git a/drivers/edgetpu/edgetpu-fs.c b/drivers/edgetpu/edgetpu-fs.c
index e87c276..854c14c 100644
--- a/drivers/edgetpu/edgetpu-fs.c
+++ b/drivers/edgetpu/edgetpu-fs.c
@@ -441,10 +441,11 @@ static int edgetpu_ioctl_sync_fence_create(
if (copy_from_user(&data, (void __user *)datap, sizeof(data)))
return -EFAULT;
LOCK(client);
- if (!client->group)
- /* TODO(b/258868303): Require a group, disallow creating a fence we can't track. */
- etdev_warn(client->etdev,
- "client creating sync fence not joined to a device group");
+ if (!client->group) {
+ etdev_err(client->etdev, "client creating sync fence not joined to a device group");
+ UNLOCK(client);
+ return -EINVAL;
+ }
ret = edgetpu_sync_fence_create(client->group, &data);
UNLOCK(client);
if (ret)
@@ -1264,6 +1265,10 @@ static int edgeptu_fs_add_interface(struct edgetpu_dev *etdev, struct edgetpu_de
return ret;
}
+ if (etiparams->name)
+ etiface->d_entry =
+ debugfs_create_symlink(etiparams->name, edgetpu_debugfs_dir,
+ etdev->dev_name);
return 0;
}
@@ -1299,6 +1304,7 @@ void edgetpu_fs_remove(struct edgetpu_dev *etdev)
for (i = 0; i < etdev->num_ifaces; i++) {
struct edgetpu_dev_iface *etiface = &etdev->etiface[i];
+ debugfs_remove(etiface->d_entry);
device_destroy(edgetpu_class, etiface->devno);
etiface->etcdev = NULL;
cdev_del(&etiface->cdev);
diff --git a/drivers/edgetpu/edgetpu-internal.h b/drivers/edgetpu/edgetpu-internal.h
index 37ea27f..e8cbf9a 100644
--- a/drivers/edgetpu/edgetpu-internal.h
+++ b/drivers/edgetpu/edgetpu-internal.h
@@ -238,6 +238,7 @@ struct edgetpu_dev_iface {
struct edgetpu_dev *etdev; /* Pointer to core device struct */
dev_t devno; /* char device dev_t */
const char *name; /* interface specific device name */
+ struct dentry *d_entry; /* debugfs symlink if not default device name iface */
};
/* Firmware crash_type codes */
diff --git a/drivers/edgetpu/mobile-pm.c b/drivers/edgetpu/mobile-pm.c
index 63dc60e..2aafd4c 100644
--- a/drivers/edgetpu/mobile-pm.c
+++ b/drivers/edgetpu/mobile-pm.c
@@ -448,7 +448,7 @@ static int mobile_power_up(struct edgetpu_pm *etpm)
usleep_range(BLOCK_DOWN_MIN_DELAY_US, BLOCK_DOWN_MAX_DELAY_US);
} while (++times < BLOCK_DOWN_RETRY_TIMES);
if (times >= BLOCK_DOWN_RETRY_TIMES && !platform_pwr->is_block_down(etdev))
- etdev_warn(etdev, "Block is still on\n");
+ return -EAGAIN;
}
if (edgetpu_thermal_is_suspended(etdev->thermal)) {