iaa_device
struct iaa_device *iaa_device;
struct iaa_device *iaa_device;
iaa_device = iaa_wq->iaa_device;
idxd = iaa_device->idxd;
active_compression_mode = get_iaa_device_compression_mode(iaa_device,
struct iaa_device *iaa_device;
iaa_device = iaa_wq->iaa_device;
idxd = iaa_device->idxd;
active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode);
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
struct iaa_device *iaa_device;
iaa_device = iaa_wq->iaa_device;
idxd = iaa_device->idxd;
active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode);
struct iaa_device *iaa_device;
iaa_device = iaa_wq->iaa_device;
idxd = iaa_device->idxd;
active_compression_mode = get_iaa_device_compression_mode(iaa_device, ctx->mode);
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
" wq %d: ret=%d\n", iaa_wq->iaa_device->idxd->id,
get_iaa_device_compression_mode(struct iaa_device *iaa_device, int idx)
return iaa_device->compression_modes[idx];
static void free_device_compression_mode(struct iaa_device *iaa_device,
struct device *dev = &iaa_device->idxd->pdev->dev;
static int init_device_compression_mode(struct iaa_device *iaa_device,
struct device *dev = &iaa_device->idxd->pdev->dev;
iaa_device->compression_modes[idx] = device_mode;
mode->name, iaa_device->idxd->id);
mode->name, iaa_device->idxd->id);
free_device_compression_mode(iaa_device, device_mode);
static int init_device_compression_modes(struct iaa_device *iaa_device,
ret = init_device_compression_mode(iaa_device, mode, i, wq);
static void remove_device_compression_modes(struct iaa_device *iaa_device)
device_mode = iaa_device->compression_modes[i];
free_device_compression_mode(iaa_device, device_mode);
iaa_device->compression_modes[i] = NULL;
static struct iaa_device *iaa_device_alloc(void)
struct iaa_device *iaa_device;
iaa_device = kzalloc_obj(*iaa_device);
if (!iaa_device)
INIT_LIST_HEAD(&iaa_device->wqs);
return iaa_device;
static bool iaa_has_wq(struct iaa_device *iaa_device, struct idxd_wq *wq)
list_for_each_entry(iaa_wq, &iaa_device->wqs, list) {
static struct iaa_device *add_iaa_device(struct idxd_device *idxd)
struct iaa_device *iaa_device;
iaa_device = iaa_device_alloc();
if (!iaa_device)
iaa_device->idxd = idxd;
list_add_tail(&iaa_device->list, &iaa_devices);
return iaa_device;
static int init_iaa_device(struct iaa_device *iaa_device, struct iaa_wq *iaa_wq)
return init_device_compression_modes(iaa_device, iaa_wq->wq);
static void del_iaa_device(struct iaa_device *iaa_device)
list_del(&iaa_device->list);
static int add_iaa_wq(struct iaa_device *iaa_device, struct idxd_wq *wq,
struct idxd_device *idxd = iaa_device->idxd;
iaa_wq->iaa_device = iaa_device;
list_add_tail(&iaa_wq->list, &iaa_device->wqs);
iaa_device->n_wq++;
wq->id, iaa_device->idxd->id, iaa_device->n_wq);
static void del_iaa_wq(struct iaa_device *iaa_device, struct idxd_wq *wq)
struct idxd_device *idxd = iaa_device->idxd;
list_for_each_entry(iaa_wq, &iaa_device->wqs, list) {
iaa_device->n_wq--;
wq->id, iaa_device->idxd->id,
iaa_device->n_wq, nr_iaa);
if (iaa_device->n_wq == 0)
del_iaa_device(iaa_device);
static void free_iaa_device(struct iaa_device *iaa_device)
if (!iaa_device)
remove_device_compression_modes(iaa_device);
kfree(iaa_device);
struct iaa_device *iaa_device;
iaa_device = iaa_wq->iaa_device;
if (iaa_device->n_wq == 0)
free_iaa_device(iaa_wq->iaa_device);
struct iaa_device *iaa_device, *found = NULL;
list_for_each_entry(iaa_device, &iaa_devices, list) {
if (iaa_device->idxd == wq->idxd) {
idxd = iaa_device->idxd;
if (iaa_has_wq(iaa_device, wq)) {
iaa_device);
found = iaa_device;
ret = add_iaa_wq(iaa_device, wq, NULL);
struct iaa_device *new_device;
struct iaa_device *iaa_device;
list_for_each_entry(iaa_device, &iaa_devices, list) {
if (iaa_has_wq(iaa_device, wq)) {
del_iaa_wq(iaa_device, wq);
struct iaa_device *iaa_device, *found_device = NULL;
list_for_each_entry(iaa_device, &iaa_devices, list) {
idxd = iaa_device->idxd;
found_device = iaa_device;
struct iaa_device, list);
atomic64_add(n, &wq->iaa_device->decomp_bytes);
static void reset_device_stats(struct iaa_device *iaa_device)
atomic64_set(&iaa_device->comp_calls, 0);
atomic64_set(&iaa_device->comp_bytes, 0);
atomic64_set(&iaa_device->decomp_calls, 0);
atomic64_set(&iaa_device->decomp_bytes, 0);
list_for_each_entry(iaa_wq, &iaa_device->wqs, list)
static void device_stats_show(struct seq_file *m, struct iaa_device *iaa_device)
seq_printf(m, " id: %d\n", iaa_device->idxd->id);
seq_printf(m, " n_wqs: %d\n", iaa_device->n_wq);
atomic64_read(&iaa_device->comp_calls));
atomic64_read(&iaa_device->comp_bytes));
atomic64_read(&iaa_device->decomp_calls));
atomic64_read(&iaa_device->decomp_bytes));
list_for_each_entry(iaa_wq, &iaa_device->wqs, list)
struct iaa_device *iaa_device;
list_for_each_entry(iaa_device, &iaa_devices, list)
device_stats_show(m, iaa_device);
struct iaa_device *iaa_device;
list_for_each_entry(iaa_device, &iaa_devices, list)
reset_device_stats(iaa_device);
atomic64_inc(&wq->iaa_device->comp_calls);
atomic64_add(n, &wq->iaa_device->comp_bytes);
atomic64_inc(&wq->iaa_device->decomp_calls);