From 61631dadb37ff0b1e270aa8ae1c6713673d25ac2 Mon Sep 17 00:00:00 2001 From: paul luse Date: Wed, 6 Jul 2022 14:28:52 -0700 Subject: [PATCH] lib/idxd: Save device version during kernel and user initialization We'll likely need this eventually to address silicon version specific workarounds. Signed-off-by: paul luse Change-Id: Ie6957674113cf0c7b7d695b468c694668ebbf2bd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13571 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/idxd/idxd_internal.h | 1 + lib/idxd/idxd_kernel.c | 1 + lib/idxd/idxd_user.c | 5 +++++ 3 files changed, 7 insertions(+) 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. */