diff --git a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/Makefile b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/Makefile index e5c78b69b89f76e56ac3cc501c78ae8205228947..4513c767a8e0229864be3af7fee3463c3da18138 100644 --- a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/Makefile +++ b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/Makefile @@ -1,4 +1,4 @@ -KERNEL_VERSION_BY_BUILDENV :=`rpm -q --qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel-devel | head -n 1` +KERNEL_VERSION_BY_BUILDENV :=`uname -r` KERNEL_PATH := /lib/modules/$(KERNEL_VERSION_BY_BUILDENV)/build # KSP := $(shell if test -d /lib/modules/$(KERNEL_VERSION_BY_BUILDENV)/source; then \ # echo /lib/modules/$(KERNEL_VERSION_BY_BUILDENV)/source; \ diff --git a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/hisilicon/vfio/hisi_acc_vfio_pci.c b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/hisilicon/vfio/hisi_acc_vfio_pci.c index 33a3db01ed04560570bc025c435da751e24eeaa1..92212585786d2f43d2ee361d8e11929867f469c5 100644 --- a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/hisilicon/vfio/hisi_acc_vfio_pci.c +++ b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/hisilicon/vfio/hisi_acc_vfio_pci.c @@ -389,7 +389,7 @@ static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, struct hisi_qm *pf_qm = hisi_acc_vdev->pf_qm; struct device *dev = &vf_qm->pdev->dev; u32 que_iso_state; - int ret; + int qp_num, ret; if (migf->total_length < QM_MATCH_SIZE || hisi_acc_vdev->match_done) return 0; @@ -406,18 +406,18 @@ static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, } /* VF qp num check */ - ret = qm_get_vft(vf_qm, &vf_qm->qp_base); - if (ret <= 0) { + qp_num = qm_get_vft(vf_qm, &vf_qm->qp_base); + if (qp_num <= 0) { dev_err(dev, "failed to get vft qp nums\n"); - return ret; + return -EINVAL; } - if (ret != vf_data->qp_num) { + if (qp_num != vf_data->qp_num) { dev_err(dev, "failed to match VF qp num\n"); return -EINVAL; } - vf_qm->qp_num = ret; + vf_qm->qp_num = qp_num; /* VF isolation state check */ ret = qm_read_regs(pf_qm, QM_QUE_ISO_CFG_V, &que_iso_state, 1); @@ -430,7 +430,13 @@ static int vf_qm_check_match(struct hisi_acc_vf_core_device *hisi_acc_vdev, dev_err(dev, "failed to match isolation state\n"); return -EINVAL; } + ret = qm_write_regs(vf_qm, QM_VF_STATE, &vf_data->vf_qm_state, 1); + if (ret) { + dev_err(dev, "failed to write QM_VF_STATE\n"); + return ret; + } + hisi_acc_vdev->vf_qm_state = vf_data->vf_qm_state; hisi_acc_vdev->match_done = true; return 0; } @@ -503,13 +509,6 @@ static int vf_qm_load_data(struct hisi_acc_vf_core_device *hisi_acc_vdev, return 0; } - ret = qm_write_regs(qm, QM_VF_STATE, &vf_data->vf_qm_state, 1); - if (ret) { - dev_err(dev, "failed to write QM_VF_STATE\n"); - return ret; - } - hisi_acc_vdev->vf_qm_state = vf_data->vf_qm_state; - qm->eqe_dma = vf_data->eqe_dma; qm->aeqe_dma = vf_data->aeqe_dma; qm->sqc_dma = vf_data->sqc_dma; @@ -1183,7 +1182,7 @@ static void hisi_acc_vf_pci_aer_reset_done(struct pci_dev *pdev) { struct hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_drvdata(pdev); - if (hisi_acc_vdev->core_device.vdev.mig_ops) + if (!hisi_acc_vdev->core_device.vdev.mig_ops) return; mutex_lock(&hisi_acc_vdev->state_mutex); diff --git a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/include_linux/uacce.h b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/include_linux/uacce.h index c745f4dea50a41d1627085852c22fc0d471053c0..89dbb567a685baed7a66961e10e0edfbba5fb769 100644 --- a/KAEKernelDriver/KAEKernelDriver-OLK-6.6/include_linux/uacce.h +++ b/KAEKernelDriver/KAEKernelDriver-OLK-6.6/include_linux/uacce.h @@ -159,30 +159,10 @@ struct uacce_device { struct list_head queues; }; -#if IS_ENABLED(CONFIG_UACCE) - struct uacce_device *uacce_alloc(struct device *parent, struct uacce_interface *interface); int uacce_register(struct uacce_device *uacce); void uacce_remove(struct uacce_device *uacce); void uacce_wake_up(struct uacce_queue *q); -#else /* CONFIG_UACCE */ - -static inline -struct uacce_device *uacce_alloc(struct device *parent, - struct uacce_interface *interface) -{ - return ERR_PTR(-ENODEV); -} - -static inline int uacce_register(struct uacce_device *uacce) -{ - return -EINVAL; -} - -static inline void uacce_remove(struct uacce_device *uacce) {} - -static inline void uacce_wake_up(struct uacce_queue *q) {} -#endif /* CONFIG_UACCE */ #endif /* _LINUX_UACCE_H */ \ No newline at end of file diff --git a/build.sh b/build.sh index 4f834b81ef57f611d891d287e45006813425059f..2b05ec8fa2c64e1e66da6b8ea25478f2c28c06f7 100644 --- a/build.sh +++ b/build.sh @@ -20,7 +20,7 @@ CPUPART="" function build_check_OS_version() { - local KERNEL_VERSION=`rpm -q --qf '%{VERSION}\n' kernel-devel | head -n 1` + local KERNEL_VERSION=`uname -r` if [[ "$KERNEL_VERSION" == 6.6.* ]]; then KAE_KERNEL_DIR=${SRC_PATH}/KAEKernelDriver/KAEKernelDriver-OLK-6.6 KAE_SPEC_FILE=${SRC_PATH}/scripts/specFile/kae_openeuler2403.spec