diff --git a/lib/idxd/idxd_internal.h b/lib/idxd/idxd_internal.h index 92fa327ed..7153ab8f5 100644 --- a/lib/idxd/idxd_internal.h +++ b/lib/idxd/idxd_internal.h @@ -140,6 +140,7 @@ struct spdk_idxd_device { pthread_mutex_t num_channels_lock; enum idxd_dev type; struct iaa_aecs *aecs; + uint32_t version; }; void idxd_impl_register(struct spdk_idxd_impl *impl); diff --git a/lib/idxd/idxd_kernel.c b/lib/idxd/idxd_kernel.c index fb1f898df..9174a984e 100644 --- a/lib/idxd/idxd_kernel.c +++ b/lib/idxd/idxd_kernel.c @@ -90,6 +90,7 @@ kernel_idxd_probe(void *cb_ctx, spdk_idxd_attach_cb attach_cb, spdk_idxd_probe_c kernel_idxd->idxd.socket_id = accfg_device_get_numa_node(device); kernel_idxd->idxd.impl = &g_kernel_idxd_impl; kernel_idxd->fd = -1; + kernel_idxd->idxd.version = accfg_device_get_version(device); accfg_wq_foreach(device, wq) { enum accfg_wq_state wstate; diff --git a/lib/idxd/idxd_user.c b/lib/idxd/idxd_user.c index ee39c417b..6b36e3c77 100644 --- a/lib/idxd/idxd_user.c +++ b/lib/idxd/idxd_user.c @@ -256,6 +256,11 @@ idxd_device_configure(struct spdk_user_idxd_device *user_idxd) goto err_reset; } + /* + * Save the device version for use in the common library code. + */ + user_idxd->idxd.version = user_idxd->registers->version; + /* * Configure groups and work queues. */