diff --git a/drivers/accel/amdxdna/Kbuild b/drivers/accel/amdxdna/Kbuild index 999894be5..4054badc2 100644 --- a/drivers/accel/amdxdna/Kbuild +++ b/drivers/accel/amdxdna/Kbuild @@ -21,13 +21,15 @@ ccflags-y += -g -Werror ccflags-${UMQ_HELLO_TEST} += -DUMQ_HELLO_TEST obj-m += amdxdna.o + # Only objects that have corresponding .c sources in this directory amdxdna-y := \ + amdxdna_drv.o \ + amdxdna_solver.o \ amdxdna_ctx.o \ amdxdna_gem.o \ amdxdna_mailbox.o \ amdxdna_mailbox_helper.o \ - amdxdna_pci_drv.o \ amdxdna_pm.o \ amdxdna_sysfs.o \ amdxdna_ubuf.o \ @@ -40,8 +42,11 @@ amdxdna-$(OFT_CONFIG_AMDXDNA_PCI) += \ aie2_pm.o \ aie2_psp.o \ aie2_smu.o \ - aie2_solver.o \ npu1_regs.o \ npu4_regs.o \ npu5_regs.o \ npu6_regs.o \ + amdxdna_pci_drv.o \ + +amdxdna-$(OFT_CONFIG_AMDXDNA_AUX) += \ + amdxdna_aux_drv.o diff --git a/drivers/accel/amdxdna/Makefile b/drivers/accel/amdxdna/Makefile index cc47dc216..d66706535 100644 --- a/drivers/accel/amdxdna/Makefile +++ b/drivers/accel/amdxdna/Makefile @@ -9,10 +9,10 @@ XDNA_BUS_TYPE := pci ifeq ($(XDNA_BUS_TYPE), pci) PCI = y -OF = n -else ifeq ($(XDNA_BUS_TYPE), of) +AUX = n +else ifeq ($(XDNA_BUS_TYPE), aux) PCI = n -OF = y +AUX = y else $(error Unknown XDNA_BUS_TYPE $(XDNA_BUS_TYPE))!! endif @@ -51,19 +51,19 @@ endif DEFINES += -DMODULE_VER_STR='\"$(MODULE_VER_STR)\"' -ifeq ($(XDNA_BUS_TYPE), of) -DEFINES += -DAMDXDNA_OF +ifeq ($(XDNA_BUS_TYPE), aux) +DEFINES += -DAMDXDNA_AUX # Generate config_kernel.h when building directly (Yocto/DKMS flow) modules: $(SRC_DIR)/config_kernel.h - $(MAKE) -C $(KERNEL_SRC) M=$(SRC_DIR) CFLAGS_MODULE="$(DEFINES)" OFT_CONFIG_AMDXDNA_PCI=$(PCI) OFT_CONFIG_AMDXDNA_OF=$(OF) $(USE_LLVM) modules + $(MAKE) -C $(KERNEL_SRC) M=$(SRC_DIR) CFLAGS_MODULE="$(DEFINES)" OFT_CONFIG_AMDXDNA_PCI=$(PCI) OFT_CONFIG_AMDXDNA_AUX=$(AUX) $(USE_LLVM) modules $(SRC_DIR)/config_kernel.h: - @echo "[INFO] Generating config_kernel.h for OF build..." + @echo "[INFO] Generating config_kernel.h for AUX build..." @KERNEL_SRC=$(KERNEL_SRC) OUT="$(SRC_DIR)/config_kernel.h" bash $(SRC_DIR)/../../../../tools/configure_kernel.sh else # PCI builds: CMake generates config_kernel.h modules: - $(MAKE) -C $(KERNEL_SRC) M=$(SRC_DIR) CFLAGS_MODULE="$(DEFINES)" OFT_CONFIG_AMDXDNA_PCI=$(PCI) OFT_CONFIG_AMDXDNA_OF=$(OF) $(USE_LLVM) modules + $(MAKE) -C $(KERNEL_SRC) M=$(SRC_DIR) CFLAGS_MODULE="$(DEFINES)" OFT_CONFIG_AMDXDNA_PCI=$(PCI) OFT_CONFIG_AMDXDNA_AUX=$(AUX) $(USE_LLVM) modules endif modules_install: diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_ctx.c index 2f5a0c65c..11d252ea3 100644 --- a/drivers/accel/amdxdna/aie2_ctx.c +++ b/drivers/accel/amdxdna/aie2_ctx.c @@ -16,7 +16,7 @@ #include "aie2_msg_priv.h" #include "aie2_pci.h" -#include "aie2_solver.h" +#include "amdxdna_solver.h" #include "amdxdna_ctx.h" #include "amdxdna_gem.h" #include "amdxdna_mailbox.h" diff --git a/drivers/accel/amdxdna/aie2_message.c b/drivers/accel/amdxdna/aie2_message.c index 817cedbe5..6b16865fc 100644 --- a/drivers/accel/amdxdna/aie2_message.c +++ b/drivers/accel/amdxdna/aie2_message.c @@ -845,7 +845,6 @@ static int aie2_init_exec_req(void *req, struct amdxdna_gem_obj *cmd_abo, int ret; u32 op; - op = amdxdna_cmd_get_op(cmd_abo); switch (op) { case ERT_START_CU: diff --git a/drivers/accel/amdxdna/aie2_pci.c b/drivers/accel/amdxdna/aie2_pci.c index ee3246bef..284c8f301 100644 --- a/drivers/accel/amdxdna/aie2_pci.c +++ b/drivers/accel/amdxdna/aie2_pci.c @@ -21,7 +21,7 @@ #include "aie2_msg_priv.h" #include "aie2_pci.h" -#include "aie2_solver.h" +#include "amdxdna_solver.h" #include "amdxdna_ctx.h" #include "amdxdna_gem.h" #include "amdxdna_mailbox.h" diff --git a/drivers/accel/amdxdna/amdxdna_aux_drv.c b/drivers/accel/amdxdna/amdxdna_aux_drv.c new file mode 100644 index 000000000..3b6982f96 --- /dev/null +++ b/drivers/accel/amdxdna/amdxdna_aux_drv.c @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2022-2026, Advanced Micro Devices, Inc. + */ + +#include +#include + +#include "amdxdna_drv.h" + +#define AMDXDNA_VE2_AUX_NAME "amdxdna_ve2" + +static const struct auxiliary_device_id amdxdna_ve2_aux_id_table[] = { + { .name = AMDXDNA_VE2_AUX_NAME }, + {} +}; + +MODULE_DEVICE_TABLE(auxiliary, amdxdna_ve2_aux_id_table); + +static int amdxdna_ve2_aux_probe(struct auxiliary_device *auxdev, + const struct auxiliary_device_id *id) +{ + /* Placeholder: full VE2 DRM accel device init to be implemented */ + return -ENODEV; +} + +static void amdxdna_ve2_aux_remove(struct auxiliary_device *auxdev) +{ + /* Placeholder: full VE2 device teardown to be implemented */ +} + +static struct auxiliary_driver amdxdna_ve2_aux_driver = { + .name = AMDXDNA_VE2_AUX_NAME, + .probe = amdxdna_ve2_aux_probe, + .remove = amdxdna_ve2_aux_remove, + .id_table = amdxdna_ve2_aux_id_table, +}; + +module_auxiliary_driver(amdxdna_ve2_aux_driver); + +MODULE_LICENSE(AMDXDNA_MODULE_LICENSE); +MODULE_AUTHOR(AMDXDNA_MODULE_AUTHOR); +MODULE_VERSION(AMDXDNA_MODULE_VERSION); +MODULE_DESCRIPTION(AMDXDNA_MODULE_DESCRIPTION); diff --git a/drivers/accel/amdxdna/amdxdna_ctx.c b/drivers/accel/amdxdna/amdxdna_ctx.c index 49e8ddf53..24b498dfb 100644 --- a/drivers/accel/amdxdna/amdxdna_ctx.c +++ b/drivers/accel/amdxdna/amdxdna_ctx.c @@ -16,7 +16,7 @@ #include "amdxdna_ctx.h" #include "amdxdna_gem.h" -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" #define MAX_HWCTX_ID 255 #define MAX_ARG_COUNT 4095 @@ -503,7 +503,6 @@ int amdxdna_cmd_submit(struct amdxdna_client *client, goto unlock_srcu; } - job->hwctx = hwctx; job->mm = current->mm; diff --git a/drivers/accel/amdxdna/amdxdna_drv.c b/drivers/accel/amdxdna/amdxdna_drv.c new file mode 100644 index 000000000..5cf255f25 --- /dev/null +++ b/drivers/accel/amdxdna/amdxdna_drv.c @@ -0,0 +1,299 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2022-2026, Advanced Micro Devices, Inc. + */ + +#include "drm/amdxdna_accel.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "amdxdna_ctx.h" +#include "amdxdna_gem.h" +#include "amdxdna_drv.h" +#include "amdxdna_pm.h" + +static int amdxdna_drm_open(struct drm_device *ddev, struct drm_file *filp) +{ + struct amdxdna_dev *xdna = to_xdna_dev(ddev); + struct amdxdna_client *client; + int ret; + +#ifdef HAVE_7_0_kmalloc_ops + client = kzalloc_obj(*client); +#else + client = kzalloc(sizeof(*client), GFP_KERNEL); +#endif + if (!client) + return -ENOMEM; + + client->pid = pid_nr(rcu_access_pointer(filp->pid)); + client->xdna = xdna; + + client->sva = iommu_sva_bind_device(xdna->ddev.dev, current->mm); + if (IS_ERR(client->sva)) { + ret = PTR_ERR(client->sva); + XDNA_ERR(xdna, "SVA bind device failed, ret %d", ret); + goto failed; + } + client->pasid = iommu_sva_get_pasid(client->sva); + if (client->pasid == IOMMU_PASID_INVALID) { + XDNA_ERR(xdna, "SVA get pasid failed"); + ret = -ENODEV; + goto unbind_sva; + } + client->mm = current->mm; + mmgrab(client->mm); + init_srcu_struct(&client->hwctx_srcu); + xa_init_flags(&client->hwctx_xa, XA_FLAGS_ALLOC); + mutex_init(&client->mm_lock); + + mutex_lock(&xdna->dev_lock); + list_add_tail(&client->node, &xdna->client_list); + mutex_unlock(&xdna->dev_lock); + + filp->driver_priv = client; + client->filp = filp; + + XDNA_DBG(xdna, "pid %d opened", client->pid); + return 0; + +unbind_sva: + iommu_sva_unbind_device(client->sva); +failed: + kfree(client); + + return ret; +} + +static void amdxdna_client_cleanup(struct amdxdna_client *client) +{ + list_del(&client->node); + amdxdna_hwctx_remove_all(client); + xa_destroy(&client->hwctx_xa); + cleanup_srcu_struct(&client->hwctx_srcu); + mutex_destroy(&client->mm_lock); + + if (client->dev_heap) + drm_gem_object_put(to_gobj(client->dev_heap)); + + iommu_sva_unbind_device(client->sva); + mmdrop(client->mm); + + kfree(client); +} + +static void amdxdna_drm_close(struct drm_device *ddev, struct drm_file *filp) +{ + struct amdxdna_client *client = filp->driver_priv; + struct amdxdna_dev *xdna = to_xdna_dev(ddev); + int idx; + + XDNA_DBG(xdna, "closing pid %d", client->pid); + + if (!drm_dev_enter(&xdna->ddev, &idx)) + return; + + mutex_lock(&xdna->dev_lock); + amdxdna_client_cleanup(client); + mutex_unlock(&xdna->dev_lock); + + drm_dev_exit(idx); +} + +static int amdxdna_drm_get_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) +{ + struct amdxdna_client *client = filp->driver_priv; + struct amdxdna_dev *xdna = to_xdna_dev(dev); + struct amdxdna_drm_get_info *args = data; + int ret; + + if (!xdna->dev_info->ops->get_aie_info) + return -EOPNOTSUPP; + + XDNA_DBG(xdna, "Request parameter %u", args->param); + mutex_lock(&xdna->dev_lock); + ret = xdna->dev_info->ops->get_aie_info(client, args); + mutex_unlock(&xdna->dev_lock); + return ret; +} + +static int amdxdna_drm_get_array_ioctl(struct drm_device *dev, void *data, + struct drm_file *filp) +{ + struct amdxdna_client *client = filp->driver_priv; + struct amdxdna_dev *xdna = to_xdna_dev(dev); + struct amdxdna_drm_get_array *args = data; + + if (!xdna->dev_info->ops->get_array) + return -EOPNOTSUPP; + + if (args->pad || !args->num_element || !args->element_size) + return -EINVAL; + + guard(mutex)(&xdna->dev_lock); + return xdna->dev_info->ops->get_array(client, args); +} + +static int amdxdna_drm_set_state_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) +{ + struct amdxdna_client *client = filp->driver_priv; + struct amdxdna_dev *xdna = to_xdna_dev(dev); + struct amdxdna_drm_set_state *args = data; + int ret; + + if (!xdna->dev_info->ops->set_aie_state) + return -EOPNOTSUPP; + + XDNA_DBG(xdna, "Request parameter %u", args->param); + mutex_lock(&xdna->dev_lock); + ret = xdna->dev_info->ops->set_aie_state(client, args); + mutex_unlock(&xdna->dev_lock); + + return ret; +} + +static const struct drm_ioctl_desc amdxdna_drm_ioctls[] = { + /* Context */ + DRM_IOCTL_DEF_DRV(AMDXDNA_CREATE_HWCTX, amdxdna_drm_create_hwctx_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_DESTROY_HWCTX, amdxdna_drm_destroy_hwctx_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_CONFIG_HWCTX, amdxdna_drm_config_hwctx_ioctl, 0), + /* BO */ + DRM_IOCTL_DEF_DRV(AMDXDNA_CREATE_BO, amdxdna_drm_create_bo_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_GET_BO_INFO, amdxdna_drm_get_bo_info_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_SYNC_BO, amdxdna_drm_sync_bo_ioctl, 0), + /* Execution */ + DRM_IOCTL_DEF_DRV(AMDXDNA_EXEC_CMD, amdxdna_drm_submit_cmd_ioctl, 0), + /* AIE hardware */ + DRM_IOCTL_DEF_DRV(AMDXDNA_GET_INFO, amdxdna_drm_get_info_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_GET_ARRAY, amdxdna_drm_get_array_ioctl, 0), + DRM_IOCTL_DEF_DRV(AMDXDNA_SET_STATE, amdxdna_drm_set_state_ioctl, DRM_ROOT_ONLY), +}; + +static const struct file_operations amdxdna_fops = { + .owner = THIS_MODULE, + .open = accel_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, + .compat_ioctl = drm_compat_ioctl, + .poll = drm_poll, + .read = drm_read, + .llseek = noop_llseek, + .mmap = drm_gem_mmap, +#ifdef FOP_UNSIGNED_OFFSET + .fop_flags = FOP_UNSIGNED_OFFSET, +#endif +}; + +const struct drm_driver amdxdna_drm_drv = { + .driver_features = DRIVER_GEM | DRIVER_COMPUTE_ACCEL | + DRIVER_SYNCOBJ | DRIVER_SYNCOBJ_TIMELINE, + .fops = &amdxdna_fops, + .name = "amdxdna_accel_driver", + .desc = "AMD XDNA DRM implementation", + .major = AMDXDNA_DRIVER_MAJOR, + .minor = AMDXDNA_DRIVER_MINOR, + .open = amdxdna_drm_open, + .postclose = amdxdna_drm_close, + .ioctls = amdxdna_drm_ioctls, + .num_ioctls = ARRAY_SIZE(amdxdna_drm_ioctls), + + .gem_create_object = amdxdna_gem_create_object_cb, + .gem_prime_import = amdxdna_gem_prime_import, +}; + +/** + * amdxdna_dev_init - amdxdna device init and registration + * @xdna: Pointer to amdxdna device + * + * Initializes common device structures (mutex, rwsem, client list, workqueue), + * hardware via ops->init, sysfs, and registers the DRM device in drm_dev_register() function. + * + * Return: 0 on success, negative error code on failure + */ +int amdxdna_dev_init(struct amdxdna_dev *xdna) +{ + int ret; + + drmm_mutex_init(&xdna->ddev, &xdna->dev_lock); + init_rwsem(&xdna->notifier_lock); + INIT_LIST_HEAD(&xdna->client_list); + + if (IS_ENABLED(CONFIG_LOCKDEP)) { + fs_reclaim_acquire(GFP_KERNEL); + might_lock(&xdna->notifier_lock); + fs_reclaim_release(GFP_KERNEL); + } + + xdna->notifier_wq = alloc_ordered_workqueue("notifier_wq", WQ_MEM_RECLAIM); + if (!xdna->notifier_wq) + return -ENOMEM; + + mutex_lock(&xdna->dev_lock); + ret = xdna->dev_info->ops->init(xdna); + mutex_unlock(&xdna->dev_lock); + if (ret) { + XDNA_ERR(xdna, "Hardware init failed, ret %d", ret); + goto destroy_notifier_wq; + } + + ret = amdxdna_sysfs_init(xdna); + if (ret) { + XDNA_ERR(xdna, "Create amdxdna attrs failed: %d", ret); + goto failed_dev_fini; + } + + ret = drm_dev_register(&xdna->ddev, 0); + if (ret) { + XDNA_ERR(xdna, "DRM register failed, ret %d", ret); + goto failed_sysfs_fini; + } + + return 0; + +failed_sysfs_fini: + amdxdna_sysfs_fini(xdna); +failed_dev_fini: + mutex_lock(&xdna->dev_lock); + xdna->dev_info->ops->fini(xdna); + mutex_unlock(&xdna->dev_lock); +destroy_notifier_wq: + destroy_workqueue(xdna->notifier_wq); + return ret; +} + +/** + * amdxdna_dev_cleanup - amdxdna device cleanup + * @xdna: Pointer to amdxdna device + * + * Cleans up all clients, finalizes hardware, and destroys workqueue. + */ +void amdxdna_dev_cleanup(struct amdxdna_dev *xdna) +{ + struct amdxdna_client *client; + + destroy_workqueue(xdna->notifier_wq); + + drm_dev_unplug(&xdna->ddev); + amdxdna_sysfs_fini(xdna); + + mutex_lock(&xdna->dev_lock); + client = list_first_entry_or_null(&xdna->client_list, + struct amdxdna_client, node); + while (client) { + amdxdna_client_cleanup(client); + + client = list_first_entry_or_null(&xdna->client_list, + struct amdxdna_client, node); + } + + xdna->dev_info->ops->fini(xdna); + mutex_unlock(&xdna->dev_lock); +} + diff --git a/drivers/accel/amdxdna/amdxdna_drv.h b/drivers/accel/amdxdna/amdxdna_drv.h new file mode 100644 index 000000000..ca045c370 --- /dev/null +++ b/drivers/accel/amdxdna/amdxdna_drv.h @@ -0,0 +1,164 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2022-2026, Advanced Micro Devices, Inc. + */ + +#ifndef _AMDXDNA_DRV_H_ +#define _AMDXDNA_DRV_H_ + +#include +#include +#include + +#define XDNA_INFO(xdna, fmt, args...) drm_info(&(xdna)->ddev, fmt, ##args) +#define XDNA_WARN(xdna, fmt, args...) drm_warn(&(xdna)->ddev, "%s: "fmt, __func__, ##args) +#define XDNA_ERR(xdna, fmt, args...) drm_err(&(xdna)->ddev, "%s: "fmt, __func__, ##args) +#define XDNA_DBG(xdna, fmt, args...) drm_dbg(&(xdna)->ddev, fmt, ##args) +#define XDNA_INFO_ONCE(xdna, fmt, args...) drm_info_once(&(xdna)->ddev, fmt, ##args) + +#define XDNA_MBZ_DBG(xdna, ptr, sz) \ + ({ \ + int __i; \ + int __ret = 0; \ + u8 *__ptr = (u8 *)(ptr); \ + for (__i = 0; __i < (sz); __i++) { \ + if (__ptr[__i]) { \ + XDNA_DBG(xdna, "MBZ check failed"); \ + __ret = -EINVAL; \ + break; \ + } \ + } \ + __ret; \ + }) + +#define to_xdna_dev(drm_dev) \ + ((struct amdxdna_dev *)container_of(drm_dev, struct amdxdna_dev, ddev)) + +extern const struct drm_driver amdxdna_drm_drv; + +struct amdxdna_client; +struct amdxdna_dev; +struct amdxdna_drm_get_array; +struct amdxdna_drm_get_info; +struct amdxdna_drm_set_state; +struct amdxdna_gem_obj; +struct amdxdna_hwctx; +struct amdxdna_sched_job; + +/* + * 0.0: Initial version + * 0.1: Support getting all hardware contexts by DRM_IOCTL_AMDXDNA_GET_ARRAY + * 0.2: Support getting last error hardware error + * 0.3: Support firmware debug buffer + * 0.4: Support getting resource information + * 0.5: Support getting telemetry data + * 0.6: Support preemption + */ +#define AMDXDNA_DRIVER_MAJOR 0 +#define AMDXDNA_DRIVER_MINOR 6 + +#define AMDXDNA_MODULE_LICENSE "GPL" +#define AMDXDNA_MODULE_AUTHOR "XRT Team " +#define AMDXDNA_MODULE_VERSION "0.1" +#define AMDXDNA_MODULE_DESCRIPTION "amdxdna driver" + +/* + * struct amdxdna_dev_ops - Device hardware operation callbacks + */ +struct amdxdna_dev_ops { + int (*init)(struct amdxdna_dev *xdna); + void (*fini)(struct amdxdna_dev *xdna); + int (*resume)(struct amdxdna_dev *xdna); + int (*suspend)(struct amdxdna_dev *xdna); + int (*hwctx_init)(struct amdxdna_hwctx *hwctx); + void (*hwctx_fini)(struct amdxdna_hwctx *hwctx); + int (*hwctx_config)(struct amdxdna_hwctx *hwctx, u32 type, u64 value, void *buf, u32 size); + int (*hwctx_sync_debug_bo)(struct amdxdna_hwctx *hwctx, u32 debug_bo_hdl); + void (*hmm_invalidate)(struct amdxdna_gem_obj *abo, unsigned long cur_seq); + int (*cmd_submit)(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job, u64 *seq); + int (*get_aie_info)(struct amdxdna_client *client, struct amdxdna_drm_get_info *args); + int (*set_aie_state)(struct amdxdna_client *client, struct amdxdna_drm_set_state *args); + int (*get_array)(struct amdxdna_client *client, struct amdxdna_drm_get_array *args); +}; + +/* + * struct amdxdna_dev_info - Device hardware information + * Record device static information, like reg, mbox, PSP, SMU bar index + */ +struct amdxdna_dev_info { + int reg_bar; + int mbox_bar; + int sram_bar; + int psp_bar; + int smu_bar; + int device_type; + int first_col; + u32 dev_mem_buf_shift; + u64 dev_mem_base; + size_t dev_mem_size; + char *vbnv; + const struct amdxdna_dev_priv *dev_priv; + const struct amdxdna_dev_ops *ops; +}; + +struct amdxdna_fw_ver { + u32 major; + u32 minor; + u32 sub; + u32 build; +}; + +struct amdxdna_dev { + struct drm_device ddev; + struct amdxdna_dev_hdl *dev_handle; + const struct amdxdna_dev_info *dev_info; + void *xrs_hdl; + + struct mutex dev_lock; /* per device lock */ + struct list_head client_list; + struct amdxdna_fw_ver fw_ver; + struct rw_semaphore notifier_lock; /* for mmu notifier*/ + struct workqueue_struct *notifier_wq; +}; + +/* + * struct amdxdna_device_id - device info + */ +struct amdxdna_device_id { + unsigned short device; + u8 revision; + const struct amdxdna_dev_info *dev_info; +}; + +/* + * struct amdxdna_client - amdxdna client + * A per fd data structure for managing context and other user process stuffs. + */ +struct amdxdna_client { + struct list_head node; + pid_t pid; + struct srcu_struct hwctx_srcu; + struct xarray hwctx_xa; + u32 next_hwctxid; + struct amdxdna_dev *xdna; + struct drm_file *filp; + + struct mutex mm_lock; /* protect memory related */ + struct amdxdna_gem_obj *dev_heap; + + struct iommu_sva *sva; + int pasid; + struct mm_struct *mm; +}; + +#define amdxdna_for_each_hwctx(client, hwctx_id, entry) \ + xa_for_each(&(client)->hwctx_xa, hwctx_id, entry) + +int amdxdna_sysfs_init(struct amdxdna_dev *xdna); +void amdxdna_sysfs_fini(struct amdxdna_dev *xdna); + +/* Common device initialization and registration */ +int amdxdna_dev_init(struct amdxdna_dev *xdna); +void amdxdna_dev_cleanup(struct amdxdna_dev *xdna); + +#endif /* _AMDXDNA_DRV_H_ */ diff --git a/drivers/accel/amdxdna/amdxdna_gem.c b/drivers/accel/amdxdna/amdxdna_gem.c index 47dce41dd..0386a7836 100644 --- a/drivers/accel/amdxdna/amdxdna_gem.c +++ b/drivers/accel/amdxdna/amdxdna_gem.c @@ -18,7 +18,7 @@ #include "amdxdna_ctx.h" #include "amdxdna_gem.h" -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" #include "amdxdna_ubuf.h" #ifdef HAVE_6_13_MODULE_IMPORT_NS diff --git a/drivers/accel/amdxdna/amdxdna_gem.h b/drivers/accel/amdxdna/amdxdna_gem.h index f79fc7f3c..64be773f5 100644 --- a/drivers/accel/amdxdna/amdxdna_gem.h +++ b/drivers/accel/amdxdna/amdxdna_gem.h @@ -7,7 +7,7 @@ #define _AMDXDNA_GEM_H_ #include -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" struct amdxdna_umap { struct vm_area_struct *vma; diff --git a/drivers/accel/amdxdna/amdxdna_mailbox.c b/drivers/accel/amdxdna/amdxdna_mailbox.c index e390d5fac..5203f1aba 100644 --- a/drivers/accel/amdxdna/amdxdna_mailbox.c +++ b/drivers/accel/amdxdna/amdxdna_mailbox.c @@ -199,7 +199,6 @@ mailbox_send_msg(struct mailbox_channel *mb_chann, struct mailbox_msg *mb_msg) start_addr = mb_chann->res[CHAN_RES_X2I].rb_start_addr; tmp_tail = tail + mb_msg->pkg_size; - check_again: if (tail >= head && tmp_tail > ringbuf_size) { write_addr = mb_chann->mb->res.ringbuf_base + start_addr + tail; diff --git a/drivers/accel/amdxdna/amdxdna_mailbox.h b/drivers/accel/amdxdna/amdxdna_mailbox.h index 8b1e00945..b1cabcd07 100644 --- a/drivers/accel/amdxdna/amdxdna_mailbox.h +++ b/drivers/accel/amdxdna/amdxdna_mailbox.h @@ -3,8 +3,8 @@ * Copyright (C) 2022-2024, Advanced Micro Devices, Inc. */ -#ifndef _AIE2_MAILBOX_H_ -#define _AIE2_MAILBOX_H_ +#ifndef _AMDXDNA_MAILBOX_H_ +#define _AMDXDNA_MAILBOX_H_ struct mailbox; struct mailbox_channel; @@ -124,4 +124,4 @@ void xdna_mailbox_stop_channel(struct mailbox_channel *mailbox_chann); int xdna_mailbox_send_msg(struct mailbox_channel *mailbox_chann, const struct xdna_mailbox_msg *msg, u64 tx_timeout); -#endif /* _AIE2_MAILBOX_ */ +#endif /* _AMDXDNA_MAILBOX_H_ */ diff --git a/drivers/accel/amdxdna/amdxdna_mailbox_helper.c b/drivers/accel/amdxdna/amdxdna_mailbox_helper.c index e7510814c..8d35c3966 100644 --- a/drivers/accel/amdxdna/amdxdna_mailbox_helper.c +++ b/drivers/accel/amdxdna/amdxdna_mailbox_helper.c @@ -14,7 +14,7 @@ #include "amdxdna_gem.h" #include "amdxdna_mailbox.h" #include "amdxdna_mailbox_helper.h" -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" int xdna_msg_cb(void *handle, void __iomem *data, size_t size) { diff --git a/drivers/accel/amdxdna/amdxdna_pci_drv.c b/drivers/accel/amdxdna/amdxdna_pci_drv.c index f3422f94d..21be1068a 100644 --- a/drivers/accel/amdxdna/amdxdna_pci_drv.c +++ b/drivers/accel/amdxdna/amdxdna_pci_drv.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include "amdxdna_ctx.h" @@ -31,18 +32,6 @@ MODULE_FIRMWARE("amdnpu/1502_00/npu_7.sbin"); MODULE_FIRMWARE("amdnpu/17f0_10/npu_7.sbin"); MODULE_FIRMWARE("amdnpu/17f0_11/npu_7.sbin"); -/* - * 0.0: Initial version - * 0.1: Support getting all hardware contexts by DRM_IOCTL_AMDXDNA_GET_ARRAY - * 0.2: Support getting last error hardware error - * 0.3: Support firmware debug buffer - * 0.4: Support getting resource information - * 0.5: Support getting telemetry data - * 0.6: Support preemption - */ -#define AMDXDNA_DRIVER_MAJOR 0 -#define AMDXDNA_DRIVER_MINOR 6 - /* * Bind the driver base on (vendor_id, device_id) pair and later use the * (device_id, rev_id) pair as a key to select the devices. The devices with @@ -64,195 +53,6 @@ static const struct amdxdna_device_id amdxdna_ids[] = { {0} }; -static int amdxdna_drm_open(struct drm_device *ddev, struct drm_file *filp) -{ - struct amdxdna_dev *xdna = to_xdna_dev(ddev); - struct amdxdna_client *client; - int ret; - -#ifdef HAVE_7_0_kmalloc_ops - client = kzalloc_obj(*client); -#else - client = kzalloc(sizeof(*client), GFP_KERNEL); -#endif - if (!client) - return -ENOMEM; - - client->pid = pid_nr(rcu_access_pointer(filp->pid)); - client->xdna = xdna; - - client->sva = iommu_sva_bind_device(xdna->ddev.dev, current->mm); - if (IS_ERR(client->sva)) { - ret = PTR_ERR(client->sva); - XDNA_ERR(xdna, "SVA bind device failed, ret %d", ret); - goto failed; - } - client->pasid = iommu_sva_get_pasid(client->sva); - if (client->pasid == IOMMU_PASID_INVALID) { - XDNA_ERR(xdna, "SVA get pasid failed"); - ret = -ENODEV; - goto unbind_sva; - } - client->mm = current->mm; - mmgrab(client->mm); - init_srcu_struct(&client->hwctx_srcu); - xa_init_flags(&client->hwctx_xa, XA_FLAGS_ALLOC); - mutex_init(&client->mm_lock); - - mutex_lock(&xdna->dev_lock); - list_add_tail(&client->node, &xdna->client_list); - mutex_unlock(&xdna->dev_lock); - - filp->driver_priv = client; - client->filp = filp; - - XDNA_DBG(xdna, "pid %d opened", client->pid); - return 0; - -unbind_sva: - iommu_sva_unbind_device(client->sva); -failed: - kfree(client); - - return ret; -} - -static void amdxdna_client_cleanup(struct amdxdna_client *client) -{ - list_del(&client->node); - amdxdna_hwctx_remove_all(client); - xa_destroy(&client->hwctx_xa); - cleanup_srcu_struct(&client->hwctx_srcu); - mutex_destroy(&client->mm_lock); - - if (client->dev_heap) - drm_gem_object_put(to_gobj(client->dev_heap)); - - iommu_sva_unbind_device(client->sva); - mmdrop(client->mm); - - kfree(client); -} - -static void amdxdna_drm_close(struct drm_device *ddev, struct drm_file *filp) -{ - struct amdxdna_client *client = filp->driver_priv; - struct amdxdna_dev *xdna = to_xdna_dev(ddev); - int idx; - - XDNA_DBG(xdna, "closing pid %d", client->pid); - - if (!drm_dev_enter(&xdna->ddev, &idx)) - return; - - mutex_lock(&xdna->dev_lock); - amdxdna_client_cleanup(client); - mutex_unlock(&xdna->dev_lock); - - drm_dev_exit(idx); -} - -static int amdxdna_drm_get_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) -{ - struct amdxdna_client *client = filp->driver_priv; - struct amdxdna_dev *xdna = to_xdna_dev(dev); - struct amdxdna_drm_get_info *args = data; - int ret; - - if (!xdna->dev_info->ops->get_aie_info) - return -EOPNOTSUPP; - - XDNA_DBG(xdna, "Request parameter %u", args->param); - mutex_lock(&xdna->dev_lock); - ret = xdna->dev_info->ops->get_aie_info(client, args); - mutex_unlock(&xdna->dev_lock); - return ret; -} - -static int amdxdna_drm_get_array_ioctl(struct drm_device *dev, void *data, - struct drm_file *filp) -{ - struct amdxdna_client *client = filp->driver_priv; - struct amdxdna_dev *xdna = to_xdna_dev(dev); - struct amdxdna_drm_get_array *args = data; - - if (!xdna->dev_info->ops->get_array) - return -EOPNOTSUPP; - - if (args->pad || !args->num_element || !args->element_size) - return -EINVAL; - - guard(mutex)(&xdna->dev_lock); - return xdna->dev_info->ops->get_array(client, args); -} - -static int amdxdna_drm_set_state_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) -{ - struct amdxdna_client *client = filp->driver_priv; - struct amdxdna_dev *xdna = to_xdna_dev(dev); - struct amdxdna_drm_set_state *args = data; - int ret; - - if (!xdna->dev_info->ops->set_aie_state) - return -EOPNOTSUPP; - - XDNA_DBG(xdna, "Request parameter %u", args->param); - mutex_lock(&xdna->dev_lock); - ret = xdna->dev_info->ops->set_aie_state(client, args); - mutex_unlock(&xdna->dev_lock); - - return ret; -} - -static const struct drm_ioctl_desc amdxdna_drm_ioctls[] = { - /* Context */ - DRM_IOCTL_DEF_DRV(AMDXDNA_CREATE_HWCTX, amdxdna_drm_create_hwctx_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_DESTROY_HWCTX, amdxdna_drm_destroy_hwctx_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_CONFIG_HWCTX, amdxdna_drm_config_hwctx_ioctl, 0), - /* BO */ - DRM_IOCTL_DEF_DRV(AMDXDNA_CREATE_BO, amdxdna_drm_create_bo_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_GET_BO_INFO, amdxdna_drm_get_bo_info_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_SYNC_BO, amdxdna_drm_sync_bo_ioctl, 0), - /* Execution */ - DRM_IOCTL_DEF_DRV(AMDXDNA_EXEC_CMD, amdxdna_drm_submit_cmd_ioctl, 0), - /* AIE hardware */ - DRM_IOCTL_DEF_DRV(AMDXDNA_GET_INFO, amdxdna_drm_get_info_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_GET_ARRAY, amdxdna_drm_get_array_ioctl, 0), - DRM_IOCTL_DEF_DRV(AMDXDNA_SET_STATE, amdxdna_drm_set_state_ioctl, DRM_ROOT_ONLY), -}; - -static const struct file_operations amdxdna_fops = { - .owner = THIS_MODULE, - .open = accel_open, - .release = drm_release, - .unlocked_ioctl = drm_ioctl, - .compat_ioctl = drm_compat_ioctl, - .poll = drm_poll, - .read = drm_read, - .llseek = noop_llseek, - .mmap = drm_gem_mmap, -#ifdef FOP_UNSIGNED_OFFSET - .fop_flags = FOP_UNSIGNED_OFFSET, -#endif -}; - -const struct drm_driver amdxdna_drm_drv = { - .driver_features = DRIVER_GEM | DRIVER_COMPUTE_ACCEL | - DRIVER_SYNCOBJ | DRIVER_SYNCOBJ_TIMELINE, - .fops = &amdxdna_fops, - .name = "amdxdna_accel_driver", - .desc = "AMD XDNA DRM implementation", - .major = AMDXDNA_DRIVER_MAJOR, - .minor = AMDXDNA_DRIVER_MINOR, - .open = amdxdna_drm_open, - .postclose = amdxdna_drm_close, - .ioctls = amdxdna_drm_ioctls, - .num_ioctls = ARRAY_SIZE(amdxdna_drm_ioctls), - - .gem_create_object = amdxdna_gem_create_object_cb, - .gem_prime_import = amdxdna_gem_prime_import, -}; - static const struct amdxdna_dev_info * amdxdna_get_dev_info(struct pci_dev *pdev) { @@ -270,7 +70,6 @@ static int amdxdna_probe(struct pci_dev *pdev, const struct pci_device_id *id) { struct device *dev = &pdev->dev; struct amdxdna_dev *xdna; - int ret; xdna = devm_drm_dev_alloc(dev, &amdxdna_drm_drv, typeof(*xdna), ddev); if (IS_ERR(xdna)) @@ -280,76 +79,16 @@ static int amdxdna_probe(struct pci_dev *pdev, const struct pci_device_id *id) if (!xdna->dev_info) return -ENODEV; - drmm_mutex_init(&xdna->ddev, &xdna->dev_lock); - init_rwsem(&xdna->notifier_lock); - INIT_LIST_HEAD(&xdna->client_list); pci_set_drvdata(pdev, xdna); - if (IS_ENABLED(CONFIG_LOCKDEP)) { - fs_reclaim_acquire(GFP_KERNEL); - might_lock(&xdna->notifier_lock); - fs_reclaim_release(GFP_KERNEL); - } - - xdna->notifier_wq = alloc_ordered_workqueue("notifier_wq", WQ_MEM_RECLAIM); - if (!xdna->notifier_wq) - return -ENOMEM; - - mutex_lock(&xdna->dev_lock); - ret = xdna->dev_info->ops->init(xdna); - mutex_unlock(&xdna->dev_lock); - if (ret) { - XDNA_ERR(xdna, "Hardware init failed, ret %d", ret); - goto destroy_notifier_wq; - } - - ret = amdxdna_sysfs_init(xdna); - if (ret) { - XDNA_ERR(xdna, "Create amdxdna attrs failed: %d", ret); - goto failed_dev_fini; - } - - ret = drm_dev_register(&xdna->ddev, 0); - if (ret) { - XDNA_ERR(xdna, "DRM register failed, ret %d", ret); - goto failed_sysfs_fini; - } - - return 0; - -failed_sysfs_fini: - amdxdna_sysfs_fini(xdna); -failed_dev_fini: - mutex_lock(&xdna->dev_lock); - xdna->dev_info->ops->fini(xdna); - mutex_unlock(&xdna->dev_lock); -destroy_notifier_wq: - destroy_workqueue(xdna->notifier_wq); - return ret; + return amdxdna_dev_init(xdna); } static void amdxdna_remove(struct pci_dev *pdev) { struct amdxdna_dev *xdna = pci_get_drvdata(pdev); - struct amdxdna_client *client; - - destroy_workqueue(xdna->notifier_wq); - - drm_dev_unplug(&xdna->ddev); - amdxdna_sysfs_fini(xdna); - - mutex_lock(&xdna->dev_lock); - client = list_first_entry_or_null(&xdna->client_list, - struct amdxdna_client, node); - while (client) { - amdxdna_client_cleanup(client); - - client = list_first_entry_or_null(&xdna->client_list, - struct amdxdna_client, node); - } - xdna->dev_info->ops->fini(xdna); - mutex_unlock(&xdna->dev_lock); + amdxdna_dev_cleanup(xdna); } static const struct dev_pm_ops amdxdna_pm_ops = { @@ -367,7 +106,7 @@ static struct pci_driver amdxdna_pci_driver = { module_pci_driver(amdxdna_pci_driver); -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("XRT Team "); -MODULE_VERSION("0.1"); -MODULE_DESCRIPTION("amdxdna driver"); +MODULE_LICENSE(AMDXDNA_MODULE_LICENSE); +MODULE_AUTHOR(AMDXDNA_MODULE_AUTHOR); +MODULE_VERSION(AMDXDNA_MODULE_VERSION); +MODULE_DESCRIPTION(AMDXDNA_MODULE_DESCRIPTION); diff --git a/drivers/accel/amdxdna/amdxdna_pci_drv.h b/drivers/accel/amdxdna/amdxdna_pci_drv.h index f08406b8f..c89606588 100644 --- a/drivers/accel/amdxdna/amdxdna_pci_drv.h +++ b/drivers/accel/amdxdna/amdxdna_pci_drv.h @@ -6,135 +6,7 @@ #ifndef _AMDXDNA_PCI_DRV_H_ #define _AMDXDNA_PCI_DRV_H_ -#include -#include -#include - -#define XDNA_INFO(xdna, fmt, args...) drm_info(&(xdna)->ddev, fmt, ##args) -#define XDNA_WARN(xdna, fmt, args...) drm_warn(&(xdna)->ddev, "%s: "fmt, __func__, ##args) -#define XDNA_ERR(xdna, fmt, args...) drm_err(&(xdna)->ddev, "%s: "fmt, __func__, ##args) -#define XDNA_DBG(xdna, fmt, args...) drm_dbg(&(xdna)->ddev, fmt, ##args) -#define XDNA_INFO_ONCE(xdna, fmt, args...) drm_info_once(&(xdna)->ddev, fmt, ##args) - -#define XDNA_MBZ_DBG(xdna, ptr, sz) \ - ({ \ - int __i; \ - int __ret = 0; \ - u8 *__ptr = (u8 *)(ptr); \ - for (__i = 0; __i < (sz); __i++) { \ - if (__ptr[__i]) { \ - XDNA_DBG(xdna, "MBZ check failed"); \ - __ret = -EINVAL; \ - break; \ - } \ - } \ - __ret; \ - }) - -#define to_xdna_dev(drm_dev) \ - ((struct amdxdna_dev *)container_of(drm_dev, struct amdxdna_dev, ddev)) - -extern const struct drm_driver amdxdna_drm_drv; - -struct amdxdna_client; -struct amdxdna_dev; -struct amdxdna_drm_get_info; -struct amdxdna_drm_set_state; -struct amdxdna_gem_obj; -struct amdxdna_hwctx; -struct amdxdna_sched_job; - -/* - * struct amdxdna_dev_ops - Device hardware operation callbacks - */ -struct amdxdna_dev_ops { - int (*init)(struct amdxdna_dev *xdna); - void (*fini)(struct amdxdna_dev *xdna); - int (*resume)(struct amdxdna_dev *xdna); - int (*suspend)(struct amdxdna_dev *xdna); - int (*hwctx_init)(struct amdxdna_hwctx *hwctx); - void (*hwctx_fini)(struct amdxdna_hwctx *hwctx); - int (*hwctx_config)(struct amdxdna_hwctx *hwctx, u32 type, u64 value, void *buf, u32 size); - int (*hwctx_sync_debug_bo)(struct amdxdna_hwctx *hwctx, u32 debug_bo_hdl); - void (*hmm_invalidate)(struct amdxdna_gem_obj *abo, unsigned long cur_seq); - int (*cmd_submit)(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job, u64 *seq); - int (*get_aie_info)(struct amdxdna_client *client, struct amdxdna_drm_get_info *args); - int (*set_aie_state)(struct amdxdna_client *client, struct amdxdna_drm_set_state *args); - int (*get_array)(struct amdxdna_client *client, struct amdxdna_drm_get_array *args); -}; - -/* - * struct amdxdna_dev_info - Device hardware information - * Record device static information, like reg, mbox, PSP, SMU bar index - */ -struct amdxdna_dev_info { - int reg_bar; - int mbox_bar; - int sram_bar; - int psp_bar; - int smu_bar; - int device_type; - int first_col; - u32 dev_mem_buf_shift; - u64 dev_mem_base; - size_t dev_mem_size; - char *vbnv; - const struct amdxdna_dev_priv *dev_priv; - const struct amdxdna_dev_ops *ops; -}; - -struct amdxdna_fw_ver { - u32 major; - u32 minor; - u32 sub; - u32 build; -}; - -struct amdxdna_dev { - struct drm_device ddev; - struct amdxdna_dev_hdl *dev_handle; - const struct amdxdna_dev_info *dev_info; - void *xrs_hdl; - - struct mutex dev_lock; /* per device lock */ - struct list_head client_list; - struct amdxdna_fw_ver fw_ver; - struct rw_semaphore notifier_lock; /* for mmu notifier*/ - struct workqueue_struct *notifier_wq; -}; - -/* - * struct amdxdna_device_id - PCI device info - */ -struct amdxdna_device_id { - unsigned short device; - u8 revision; - const struct amdxdna_dev_info *dev_info; -}; - -/* - * struct amdxdna_client - amdxdna client - * A per fd data structure for managing context and other user process stuffs. - */ -struct amdxdna_client { - struct list_head node; - pid_t pid; - struct srcu_struct hwctx_srcu; - struct xarray hwctx_xa; - u32 next_hwctxid; - struct amdxdna_dev *xdna; - struct drm_file *filp; - - struct mutex mm_lock; /* protect memory related */ - struct amdxdna_gem_obj *dev_heap; - - struct iommu_sva *sva; - int pasid; - struct mm_struct *mm; -}; - -#define amdxdna_for_each_hwctx(client, hwctx_id, entry) \ - xa_for_each(&(client)->hwctx_xa, hwctx_id, entry) +#include "amdxdna_drv.h" /* Add device info below */ extern const struct amdxdna_dev_info dev_npu1_info; @@ -142,7 +14,4 @@ extern const struct amdxdna_dev_info dev_npu4_info; extern const struct amdxdna_dev_info dev_npu5_info; extern const struct amdxdna_dev_info dev_npu6_info; -int amdxdna_sysfs_init(struct amdxdna_dev *xdna); -void amdxdna_sysfs_fini(struct amdxdna_dev *xdna); - #endif /* _AMDXDNA_PCI_DRV_H_ */ diff --git a/drivers/accel/amdxdna/amdxdna_pm.h b/drivers/accel/amdxdna/amdxdna_pm.h index 3d26b973e..709bb8548 100644 --- a/drivers/accel/amdxdna/amdxdna_pm.h +++ b/drivers/accel/amdxdna/amdxdna_pm.h @@ -6,7 +6,7 @@ #ifndef _AMDXDNA_PM_H_ #define _AMDXDNA_PM_H_ -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" int amdxdna_pm_suspend(struct device *dev); int amdxdna_pm_resume(struct device *dev); diff --git a/drivers/accel/amdxdna/aie2_solver.c b/drivers/accel/amdxdna/amdxdna_solver.c similarity index 99% rename from drivers/accel/amdxdna/aie2_solver.c rename to drivers/accel/amdxdna/amdxdna_solver.c index fd2931282..5896196f2 100644 --- a/drivers/accel/amdxdna/aie2_solver.c +++ b/drivers/accel/amdxdna/amdxdna_solver.c @@ -10,7 +10,7 @@ #include #include -#include "aie2_solver.h" +#include "amdxdna_solver.h" struct partition_node { struct list_head list; diff --git a/drivers/accel/amdxdna/aie2_solver.h b/drivers/accel/amdxdna/amdxdna_solver.h similarity index 97% rename from drivers/accel/amdxdna/aie2_solver.h rename to drivers/accel/amdxdna/amdxdna_solver.h index a2e3c5222..8688d6c46 100644 --- a/drivers/accel/amdxdna/aie2_solver.h +++ b/drivers/accel/amdxdna/amdxdna_solver.h @@ -3,8 +3,8 @@ * Copyright (C) 2023-2024, Advanced Micro Devices, Inc. */ -#ifndef _AIE2_SOLVER_H -#define _AIE2_SOLVER_H +#ifndef _AMDXDNA_SOLVER_H +#define _AMDXDNA_SOLVER_H #define XRS_MAX_COL 128 @@ -152,4 +152,4 @@ int xrs_allocate_resource(void *hdl, struct alloc_requests *req, void *cb_arg); * @rid: The Request ID to identify the requesting context */ int xrs_release_resource(void *hdl, u64 rid); -#endif /* _AIE2_SOLVER_H */ +#endif /* _AMDXDNA_SOLVER_H */ diff --git a/drivers/accel/amdxdna/amdxdna_sysfs.c b/drivers/accel/amdxdna/amdxdna_sysfs.c index 32003144c..49b478489 100644 --- a/drivers/accel/amdxdna/amdxdna_sysfs.c +++ b/drivers/accel/amdxdna/amdxdna_sysfs.c @@ -11,7 +11,7 @@ #include #include "amdxdna_gem.h" -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" static ssize_t vbnv_show(struct device *dev, struct device_attribute *attr, char *buf) { diff --git a/drivers/accel/amdxdna/amdxdna_ubuf.c b/drivers/accel/amdxdna/amdxdna_ubuf.c index b6e7abab9..642b104c5 100644 --- a/drivers/accel/amdxdna/amdxdna_ubuf.c +++ b/drivers/accel/amdxdna/amdxdna_ubuf.c @@ -11,7 +11,7 @@ #include #include -#include "amdxdna_pci_drv.h" +#include "amdxdna_drv.h" #include "amdxdna_ubuf.h" struct amdxdna_ubuf_priv {