diff options
author | Whi copybara merger <whitechapel-automerger@google.com> | 2023-03-27 09:57:12 -0700 |
---|---|---|
committer | Todd Poynor <toddpoynor@google.com> | 2023-03-29 20:42:29 +0000 |
commit | 9cbd6821b529a006762748c6feff21798240cffe (patch) | |
tree | cf103a98d8584c804342689734dee5bce520ee97 | |
parent | df31d3eff8937aa4ef42306358a906911fac479f (diff) | |
download | janeiro-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.c | 8 | ||||
-rw-r--r-- | drivers/edgetpu/edgetpu-dmabuf.c | 20 | ||||
-rw-r--r-- | drivers/edgetpu/edgetpu-fs.c | 14 | ||||
-rw-r--r-- | drivers/edgetpu/edgetpu-internal.h | 1 | ||||
-rw-r--r-- | drivers/edgetpu/mobile-pm.c | 2 |
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, ¶ms[i], - (edgetpu_async_job_t)edgetpu_map_iova_sgt_worker); + ret = edgetpu_async_add_job(ctx, ¶ms[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)) { |