On Wed, Sep 30, 2020 at 03:50:48PM -0700, Dave Ertman wrote: > +/* > + * The IPC test client creates a couple of debugfs entries that will be used > + * flood tests. Users can write to these entries to execute the IPC flood test > + * by specifying either the number of IPCs to flood the DSP with or the duration > + * (in ms) for which the DSP should be flooded with test IPCs. At the > + * end of each test, the average, min and max response times are reported back. > + * The results of the last flood test can be accessed by reading the debugfs > + * entries. > + */ > +static int sof_ipc_test_probe(struct ancillary_device *ancildev, > + const struct ancillary_device_id *id) > +{ > + struct sof_client_dev *cdev = ancillary_dev_to_sof_client_dev(ancildev); > + struct sof_ipc_client_data *ipc_client_data; > + > + /* > + * The ancillary device has a usage count of 0 even before runtime PM > + * is enabled. So, increment the usage count to let the device > + * suspend after probe is complete. > + */ > + pm_runtime_get_noresume(&ancildev->dev); > + > + /* allocate memory for client data */ > + ipc_client_data = devm_kzalloc(&ancildev->dev, sizeof(*ipc_client_data), GFP_KERNEL); > + if (!ipc_client_data) > + return -ENOMEM; > + > + ipc_client_data->buf = devm_kzalloc(&ancildev->dev, IPC_FLOOD_TEST_RESULT_LEN, GFP_KERNEL); > + if (!ipc_client_data->buf) > + return -ENOMEM; > + > + cdev->data = ipc_client_data; > + > + /* create debugfs root folder with device name under parent SOF dir */ > + ipc_client_data->dfs_root = debugfs_create_dir(dev_name(&ancildev->dev), > + sof_client_get_debugfs_root(cdev)); > + > + /* create read-write ipc_flood_count debugfs entry */ > + debugfs_create_file("ipc_flood_count", 0644, ipc_client_data->dfs_root, > + cdev, &sof_ipc_dfs_fops); > + > + /* create read-write ipc_flood_duration_ms debugfs entry */ > + debugfs_create_file("ipc_flood_duration_ms", 0644, ipc_client_data->dfs_root, > + cdev, &sof_ipc_dfs_fops); These debugfs files are never removed, why not? thanks, greg k-h