|
Torsten Duwe |
55964e |
From 09ce899a592f7a8ee19857ad0ef394e31be83c1d Mon Sep 17 00:00:00 2001
|
|
Torsten Duwe |
55964e |
From: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
55964e |
Date: Wed, 17 Nov 2021 14:30:51 +0000
|
|
Torsten Duwe |
55964e |
Subject: [PATCH] crypto: qat - reorganize PFVF code
|
|
Torsten Duwe |
55964e |
Git-commit: 09ce899a592f7a8ee19857ad0ef394e31be83c1d
|
|
Torsten Duwe |
55964e |
Patch-mainline: v5.17-rc1
|
|
Torsten Duwe |
55964e |
References: jsc#PED-1073
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
Reorganize the structure of the PFVF code by moving the content of
|
|
Torsten Duwe |
55964e |
adf_pf2vf_msg.c and adf_vf2pf_msg.c.
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
The logic that handles high level messages has been moved to
|
|
Torsten Duwe |
55964e |
adf_pfvf_pf_msg.c and adf_pfvf_vf_msg.c.
|
|
Torsten Duwe |
55964e |
The implementation of low level communication primitives and the
|
|
Torsten Duwe |
55964e |
protocol is now included in adf_pfvf_pf_proto.c and adf_pfvf_vf_proto.c.
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
In addition, the file adf_pf2vf_msg.h has been renamed in adf_pfvf_msg.h
|
|
Torsten Duwe |
55964e |
since it common to PF and VF and the copyright date for the touched
|
|
Torsten Duwe |
55964e |
files has been updated.
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
|
|
Torsten Duwe |
55964e |
Co-developed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
|
|
Torsten Duwe |
55964e |
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
|
|
Torsten Duwe |
55964e |
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Torsten Duwe |
55964e |
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
---
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_4xxx/adf_4xxx_hw_data.c | 4 +-
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c | 4 +-
|
|
Torsten Duwe |
55964e |
.../qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c | 5 +-
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_c62x/adf_c62x_hw_data.c | 4 +-
|
|
Torsten Duwe |
55964e |
.../qat/qat_c62xvf/adf_c62xvf_hw_data.c | 5 +-
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/Makefile | 5 +-
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_common_drv.h | 22 +-
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_gen2_pfvf.c | 4 +-
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c | 283 ------------------
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_pf2vf_msg.h | 94 ------
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_pfvf_msg.h | 94 ++++++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_pf_msg.c | 21 ++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_pf_msg.h | 10 +
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_pf_proto.c | 158 ++++++++++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_pf_proto.h | 13 +
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_vf_msg.c | 93 ++++++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_vf_msg.h | 21 ++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_vf_proto.c | 133 ++++++++
|
|
Torsten Duwe |
55964e |
.../crypto/qat/qat_common/adf_pfvf_vf_proto.h | 14 +
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_sriov.c | 4 +-
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_vf2pf_msg.c | 100 -------
|
|
Torsten Duwe |
55964e |
drivers/crypto/qat/qat_common/adf_vf_isr.c | 1 -
|
|
Torsten Duwe |
55964e |
.../qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 4 +-
|
|
Torsten Duwe |
55964e |
.../qat_dh895xccvf/adf_dh895xccvf_hw_data.c | 5 +-
|
|
Torsten Duwe |
55964e |
24 files changed, 583 insertions(+), 518 deletions(-)
|
|
Torsten Duwe |
55964e |
delete mode 100644 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
55964e |
delete mode 100644 drivers/crypto/qat/qat_common/adf_pf2vf_msg.h
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_msg.h
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.h
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.h
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.h
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
|
|
Torsten Duwe |
55964e |
create mode 100644 drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.h
|
|
Torsten Duwe |
55964e |
delete mode 100644 drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c b/drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
index ec57a2e2d1fcb..2a878d98f81aa 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,10 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2020 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <linux/iopoll.h>
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen4_hw_data.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_4xxx_hw_data.h"
|
|
Torsten Duwe |
55964e |
#include "icp_qat_hw.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c b/drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
index d25f78660b8cb..94a11e72edae1 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,10 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2014 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2014 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_c3xxx_hw_data.h"
|
|
Torsten Duwe |
55964e |
#include "icp_qat_hw.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c b/drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c
|
|
Torsten Duwe |
55964e |
index c39733320063a..4c43a0d93fa60 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,11 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_c3xxxvf_hw_data.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
static struct adf_hw_device_class c3xxxiov_class = {
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c b/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
|
|
Torsten Duwe |
55964e |
index f24a01e1bc1a1..3cb1a88d97aec 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,10 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2014 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2014 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_c62x_hw_data.h"
|
|
Torsten Duwe |
55964e |
#include "icp_qat_hw.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c b/drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c
|
|
Torsten Duwe |
55964e |
index 03097bbe600a2..c4b23e2cd5796 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,11 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_c62xvf_hw_data.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
static struct adf_hw_device_class c62xiov_class = {
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/Makefile b/drivers/crypto/qat/qat_common/Makefile
|
|
Torsten Duwe |
55964e |
index 676aef6533e0f..1376504d16ff7 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/Makefile
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/Makefile
|
|
Torsten Duwe |
55964e |
@@ -19,6 +19,7 @@ intel_qat-objs := adf_cfg.o \
|
|
Torsten Duwe |
55964e |
qat_hal.o
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
intel_qat-$(CONFIG_DEBUG_FS) += adf_transport_debug.o
|
|
Torsten Duwe |
55964e |
-intel_qat-$(CONFIG_PCI_IOV) += adf_sriov.o adf_pf2vf_msg.o \
|
|
Torsten Duwe |
55964e |
- adf_vf2pf_msg.o adf_vf_isr.o \
|
|
Torsten Duwe |
55964e |
+intel_qat-$(CONFIG_PCI_IOV) += adf_sriov.o adf_vf_isr.o \
|
|
Torsten Duwe |
55964e |
+ adf_pfvf_pf_msg.o adf_pfvf_pf_proto.o \
|
|
Torsten Duwe |
55964e |
+ adf_pfvf_vf_msg.o adf_pfvf_vf_proto.o \
|
|
Torsten Duwe |
55964e |
adf_gen2_pfvf.o
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_common_drv.h b/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
Torsten Duwe |
55964e |
index c0699e4535027..2d8b720855054 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
Torsten Duwe |
55964e |
@@ -1,5 +1,5 @@
|
|
Torsten Duwe |
55964e |
/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2014 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2014 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#ifndef ADF_DRV_H
|
|
Torsten Duwe |
55964e |
#define ADF_DRV_H
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
@@ -62,8 +62,6 @@ int adf_dev_start(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_dev_stop(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_dev_shutdown(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
-void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
-int adf_enable_vf2pf_comms(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_devmgr_update_class_index(struct adf_hw_device_data *hw_data);
|
|
Torsten Duwe |
55964e |
void adf_clean_vf_map(bool);
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
@@ -199,13 +197,9 @@ void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev,
|
|
Torsten Duwe |
55964e |
bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr);
|
|
Torsten Duwe |
55964e |
int adf_pf2vf_handle_pf_restarting(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
-int adf_enable_pf2vf_comms(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_enable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
void adf_schedule_vf2pf_handler(struct adf_accel_vf_info *vf_info);
|
|
Torsten Duwe |
55964e |
-int adf_send_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 msg);
|
|
Torsten Duwe |
55964e |
-int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
-void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
int adf_init_pf_wq(void);
|
|
Torsten Duwe |
55964e |
void adf_exit_pf_wq(void);
|
|
Torsten Duwe |
55964e |
int adf_init_vf_wq(void);
|
|
Torsten Duwe |
55964e |
@@ -214,11 +208,6 @@ void adf_flush_vf_wq(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
#else
|
|
Torsten Duwe |
55964e |
#define adf_sriov_configure NULL
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
-static inline int adf_enable_pf2vf_comms(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
static inline void adf_disable_sriov(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
{
|
|
Torsten Duwe |
55964e |
}
|
|
Torsten Duwe |
55964e |
@@ -231,15 +220,6 @@ static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
{
|
|
Torsten Duwe |
55964e |
}
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
-static inline int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-static inline void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
static inline int adf_init_pf_wq(void)
|
|
Torsten Duwe |
55964e |
{
|
|
Torsten Duwe |
55964e |
return 0;
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
|
|
Torsten Duwe |
55964e |
index f79c3ca28283a..f3a0a9d651e0d 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_gen2_pfvf.c
|
|
Torsten Duwe |
55964e |
@@ -6,7 +6,9 @@
|
|
Torsten Duwe |
55964e |
#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
#include "adf_gen2_pfvf.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_pf2vf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_pf_proto.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_vf_proto.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
/* VF2PF interrupts */
|
|
Torsten Duwe |
55964e |
#define ADF_GEN2_ERR_REG_VF2PF(vf_src) (((vf_src) & 0x01FFFE00) >> 9)
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
55964e |
deleted file mode 100644
|
|
Torsten Duwe |
55964e |
index c064e8bab50dd..0000000000000
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c
|
|
Torsten Duwe |
55964e |
+++ /dev/null
|
|
Torsten Duwe |
55964e |
@@ -1,283 +0,0 @@
|
|
Torsten Duwe |
55964e |
-// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
-#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_pf2vf_msg.h"
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-#define ADF_PFVF_MSG_COLLISION_DETECT_DELAY 10
|
|
Torsten Duwe |
55964e |
-#define ADF_PFVF_MSG_ACK_DELAY 2
|
|
Torsten Duwe |
55964e |
-#define ADF_PFVF_MSG_ACK_MAX_RETRY 100
|
|
Torsten Duwe |
55964e |
-#define ADF_PFVF_MSG_RESP_TIMEOUT (ADF_PFVF_MSG_ACK_DELAY * \
|
|
Torsten Duwe |
55964e |
- ADF_PFVF_MSG_ACK_MAX_RETRY + \
|
|
Torsten Duwe |
55964e |
- ADF_PFVF_MSG_COLLISION_DETECT_DELAY)
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_send_pf2vf_msg() - send PF to VF message
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
- * @vf_nr: VF number to which the message will be sent
|
|
Torsten Duwe |
55964e |
- * @msg: Message to send
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function allows the PF to send a message to a specific VF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-static int adf_send_pf2vf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr, u32 msg)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return GET_PFVF_OPS(accel_dev)->send_msg(accel_dev, msg, vf_nr);
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_send_vf2pf_msg() - send VF to PF message
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
- * @msg: Message to send
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function allows the VF to send a message to the PF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-int adf_send_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return GET_PFVF_OPS(accel_dev)->send_msg(accel_dev, msg, 0);
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_recv_vf2pf_msg() - receive a VF to PF message
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
- * @vf_nr: Number of the VF from where the message will be received
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function allows the PF to receive a message from a specific VF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: a valid message on success, zero otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-static u32 adf_recv_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return GET_PFVF_OPS(accel_dev)->recv_msg(accel_dev, vf_nr);
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_send_vf2pf_req() - send VF2PF request message
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device.
|
|
Torsten Duwe |
55964e |
- * @msg: Request message to send
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function sends a message that requires a response from the VF to the PF
|
|
Torsten Duwe |
55964e |
- * and waits for a reply.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-static int adf_send_vf2pf_req(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- unsigned long timeout = msecs_to_jiffies(ADF_PFVF_MSG_RESP_TIMEOUT);
|
|
Torsten Duwe |
55964e |
- int ret;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- reinit_completion(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- /* Send request from VF to PF */
|
|
Torsten Duwe |
55964e |
- ret = adf_send_vf2pf_msg(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
- if (ret) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Failed to send request msg to PF\n");
|
|
Torsten Duwe |
55964e |
- return ret;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- /* Wait for response */
|
|
Torsten Duwe |
55964e |
- if (!wait_for_completion_timeout(&accel_dev->vf.iov_msg_completion,
|
|
Torsten Duwe |
55964e |
- timeout)) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "PFVF request/response message timeout expired\n");
|
|
Torsten Duwe |
55964e |
- return -EIO;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
|
|
Torsten Duwe |
55964e |
- u32 msg, u32 *response)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- struct adf_accel_vf_info *vf_info = &accel_dev->pf.vf_info[vf_nr];
|
|
Torsten Duwe |
55964e |
- struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
|
Torsten Duwe |
55964e |
- u32 resp = 0;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- switch ((msg & ADF_VF2PF_MSGTYPE_MASK) >> ADF_VF2PF_MSGTYPE_SHIFT) {
|
|
Torsten Duwe |
55964e |
- case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ:
|
|
Torsten Duwe |
55964e |
- {
|
|
Torsten Duwe |
55964e |
- u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
- (ADF_PF2VF_MSGTYPE_VERSION_RESP <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_MSGTYPE_SHIFT) |
|
|
Torsten Duwe |
55964e |
- (ADF_PFVF_COMPAT_THIS_VERSION <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_VERS_SHIFT));
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Compatibility Version Request from VF%d vers=%u\n",
|
|
Torsten Duwe |
55964e |
- vf_nr + 1, vf_compat_ver);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- if (vf_compat_ver < hw_data->min_iov_compat_ver) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "VF (vers %d) incompatible with PF (vers %d)\n",
|
|
Torsten Duwe |
55964e |
- vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
- resp |= ADF_PF2VF_VF_INCOMPATIBLE <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
- } else if (vf_compat_ver > ADF_PFVF_COMPAT_THIS_VERSION) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "VF (vers %d) compat with PF (vers %d) unkn.\n",
|
|
Torsten Duwe |
55964e |
- vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
- resp |= ADF_PF2VF_VF_COMPAT_UNKNOWN <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
- } else {
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "VF (vers %d) compatible with PF (vers %d)\n",
|
|
Torsten Duwe |
55964e |
- vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
- resp |= ADF_PF2VF_VF_COMPATIBLE <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- case ADF_VF2PF_MSGTYPE_VERSION_REQ:
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Legacy VersionRequest received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
- vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
- resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
- (ADF_PF2VF_MSGTYPE_VERSION_RESP <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_MSGTYPE_SHIFT) |
|
|
Torsten Duwe |
55964e |
- (ADF_PFVF_COMPAT_THIS_VERSION <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_VERS_SHIFT));
|
|
Torsten Duwe |
55964e |
- resp |= ADF_PF2VF_VF_COMPATIBLE <<
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
- /* Set legacy major and minor version num */
|
|
Torsten Duwe |
55964e |
- resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT |
|
|
Torsten Duwe |
55964e |
- 1 << ADF_PF2VF_MINORVERSION_SHIFT;
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- case ADF_VF2PF_MSGTYPE_INIT:
|
|
Torsten Duwe |
55964e |
- {
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Init message received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
- vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
- vf_info->init = true;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- case ADF_VF2PF_MSGTYPE_SHUTDOWN:
|
|
Torsten Duwe |
55964e |
- {
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Shutdown message received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
- vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
- vf_info->init = false;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- default:
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev), "Unknown message from VF%d (0x%x)\n",
|
|
Torsten Duwe |
55964e |
- vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
- return -ENOMSG;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- *response = resp;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- u32 resp = 0;
|
|
Torsten Duwe |
55964e |
- u32 msg;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- msg = adf_recv_vf2pf_msg(accel_dev, vf_nr);
|
|
Torsten Duwe |
55964e |
- if (!msg)
|
|
Torsten Duwe |
55964e |
- return true;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- if (adf_handle_vf2pf_msg(accel_dev, vf_nr, msg, &resp))
|
|
Torsten Duwe |
55964e |
- return false;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- if (resp && adf_send_pf2vf_msg(accel_dev, vf_nr, resp))
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev), "Failed to send response to VF\n");
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return true;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- struct adf_accel_vf_info *vf;
|
|
Torsten Duwe |
55964e |
- u32 msg = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
- (ADF_PF2VF_MSGTYPE_RESTARTING << ADF_PF2VF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
- int i, num_vfs = pci_num_vf(accel_to_pci_dev(accel_dev));
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- for (i = 0, vf = accel_dev->pf.vf_info; i < num_vfs; i++, vf++) {
|
|
Torsten Duwe |
55964e |
- if (vf->init && adf_send_pf2vf_msg(accel_dev, i, msg))
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Failed to send restarting msg to VF%d\n", i);
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
|
Torsten Duwe |
55964e |
- u32 msg = 0;
|
|
Torsten Duwe |
55964e |
- int ret;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- msg = ADF_VF2PF_MSGORIGIN_SYSTEM;
|
|
Torsten Duwe |
55964e |
- msg |= ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ << ADF_VF2PF_MSGTYPE_SHIFT;
|
|
Torsten Duwe |
55964e |
- msg |= ADF_PFVF_COMPAT_THIS_VERSION << ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
|
|
Torsten Duwe |
55964e |
- BUILD_BUG_ON(ADF_PFVF_COMPAT_THIS_VERSION > 255);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- ret = adf_send_vf2pf_req(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
- if (ret) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Failed to send Compatibility Version Request.\n");
|
|
Torsten Duwe |
55964e |
- return ret;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- /* Response from PF received, check compatibility */
|
|
Torsten Duwe |
55964e |
- switch (accel_dev->vf.compatible) {
|
|
Torsten Duwe |
55964e |
- case ADF_PF2VF_VF_COMPATIBLE:
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- case ADF_PF2VF_VF_COMPAT_UNKNOWN:
|
|
Torsten Duwe |
55964e |
- /* VF is newer than PF and decides whether it is compatible */
|
|
Torsten Duwe |
55964e |
- if (accel_dev->vf.pf_version >= hw_data->min_iov_compat_ver) {
|
|
Torsten Duwe |
55964e |
- accel_dev->vf.compatible = ADF_PF2VF_VF_COMPATIBLE;
|
|
Torsten Duwe |
55964e |
- break;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- fallthrough;
|
|
Torsten Duwe |
55964e |
- case ADF_PF2VF_VF_INCOMPATIBLE:
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "PF (vers %d) and VF (vers %d) are not compatible\n",
|
|
Torsten Duwe |
55964e |
- accel_dev->vf.pf_version,
|
|
Torsten Duwe |
55964e |
- ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
- return -EINVAL;
|
|
Torsten Duwe |
55964e |
- default:
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Invalid response from PF; assume not compatible\n");
|
|
Torsten Duwe |
55964e |
- return -EINVAL;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- return ret;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_enable_vf2pf_comms() - Function enables communication from vf to pf
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device virtual function.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-int adf_enable_vf2pf_comms(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- adf_enable_pf2vf_interrupts(accel_dev);
|
|
Torsten Duwe |
55964e |
- return adf_vf2pf_request_version(accel_dev);
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-EXPORT_SYMBOL_GPL(adf_enable_vf2pf_comms);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_enable_pf2vf_comms() - Function enables communication from pf to vf
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device virtual function.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function carries out the necessary steps to setup and start the PFVF
|
|
Torsten Duwe |
55964e |
- * communication channel, if any.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-int adf_enable_pf2vf_comms(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- spin_lock_init(&accel_dev->pf.vf2pf_ints_lock);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-EXPORT_SYMBOL_GPL(adf_enable_pf2vf_comms);
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.h b/drivers/crypto/qat/qat_common/adf_pf2vf_msg.h
|
|
Torsten Duwe |
55964e |
deleted file mode 100644
|
|
Torsten Duwe |
55964e |
index 73eb8f13ad095..0000000000000
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_pf2vf_msg.h
|
|
Torsten Duwe |
55964e |
+++ /dev/null
|
|
Torsten Duwe |
55964e |
@@ -1,94 +0,0 @@
|
|
Torsten Duwe |
55964e |
-/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
-#ifndef ADF_PF2VF_MSG_H
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSG_H
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/*
|
|
Torsten Duwe |
55964e |
- * PF<->VF Messaging
|
|
Torsten Duwe |
55964e |
- * The PF has an array of 32-bit PF2VF registers, one for each VF. The
|
|
Torsten Duwe |
55964e |
- * PF can access all these registers; each VF can access only the one
|
|
Torsten Duwe |
55964e |
- * register associated with that particular VF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * The register functionally is split into two parts:
|
|
Torsten Duwe |
55964e |
- * The bottom half is for PF->VF messages. In particular when the first
|
|
Torsten Duwe |
55964e |
- * bit of this register (bit 0) gets set an interrupt will be triggered
|
|
Torsten Duwe |
55964e |
- * in the respective VF.
|
|
Torsten Duwe |
55964e |
- * The top half is for VF->PF messages. In particular when the first bit
|
|
Torsten Duwe |
55964e |
- * of this half of register (bit 16) gets set an interrupt will be triggered
|
|
Torsten Duwe |
55964e |
- * in the PF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * The remaining bits within this register are available to encode messages.
|
|
Torsten Duwe |
55964e |
- * and implement a collision control mechanism to prevent concurrent use of
|
|
Torsten Duwe |
55964e |
- * the PF2VF register by both the PF and VF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
|
|
Torsten Duwe |
55964e |
- * _______________________________________________
|
|
Torsten Duwe |
55964e |
- * | | | | | | | | | | | | | | | | |
|
|
Torsten Duwe |
55964e |
- * +-----------------------------------------------+
|
|
Torsten Duwe |
55964e |
- * \___________________________/ \_________/ ^ ^
|
|
Torsten Duwe |
55964e |
- * ^ ^ | |
|
|
Torsten Duwe |
55964e |
- * | | | VF2PF Int
|
|
Torsten Duwe |
55964e |
- * | | Message Origin
|
|
Torsten Duwe |
55964e |
- * | Message Type
|
|
Torsten Duwe |
55964e |
- * Message-specific Data/Reserved
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
Torsten Duwe |
55964e |
- * _______________________________________________
|
|
Torsten Duwe |
55964e |
- * | | | | | | | | | | | | | | | | |
|
|
Torsten Duwe |
55964e |
- * +-----------------------------------------------+
|
|
Torsten Duwe |
55964e |
- * \___________________________/ \_________/ ^ ^
|
|
Torsten Duwe |
55964e |
- * ^ ^ | |
|
|
Torsten Duwe |
55964e |
- * | | | PF2VF Int
|
|
Torsten Duwe |
55964e |
- * | | Message Origin
|
|
Torsten Duwe |
55964e |
- * | Message Type
|
|
Torsten Duwe |
55964e |
- * Message-specific Data/Reserved
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Message Origin (Should always be 1)
|
|
Torsten Duwe |
55964e |
- * A legacy out-of-tree QAT driver allowed for a set of messages not supported
|
|
Torsten Duwe |
55964e |
- * by this driver; these had a Msg Origin of 0 and are ignored by this driver.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * When a PF or VF attempts to send a message in the lower or upper 16 bits,
|
|
Torsten Duwe |
55964e |
- * respectively, the other 16 bits are written to first with a defined
|
|
Torsten Duwe |
55964e |
- * IN_USE_BY pattern as part of a collision control scheme (see function
|
|
Torsten Duwe |
55964e |
- * adf_gen2_pfvf_send() in adf_pf2vf_msg.c).
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-#define ADF_PFVF_COMPAT_THIS_VERSION 0x1 /* PF<->VF compat */
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/* PF->VF messages */
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_INT BIT(0)
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSGORIGIN_SYSTEM BIT(1)
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSGTYPE_MASK 0x0000003C
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSGTYPE_SHIFT 2
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSGTYPE_RESTARTING 0x01
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MSGTYPE_VERSION_RESP 0x02
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_IN_USE_BY_PF 0x6AC20000
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_IN_USE_BY_PF_MASK 0xFFFE0000
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/* PF->VF Version Response */
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VERSION_RESP_VERS_MASK 0x00003FC0
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VERSION_RESP_VERS_SHIFT 6
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VERSION_RESP_RESULT_MASK 0x0000C000
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VERSION_RESP_RESULT_SHIFT 14
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MINORVERSION_SHIFT 6
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_MAJORVERSION_SHIFT 10
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VF_COMPATIBLE 1
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VF_INCOMPATIBLE 2
|
|
Torsten Duwe |
55964e |
-#define ADF_PF2VF_VF_COMPAT_UNKNOWN 3
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/* VF->PF messages */
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_IN_USE_BY_VF 0x00006AC2
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_IN_USE_BY_VF_MASK 0x0000FFFE
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_INT BIT(16)
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGORIGIN_SYSTEM BIT(17)
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_MASK 0x003C0000
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_SHIFT 18
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_INIT 0x3
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_SHUTDOWN 0x4
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_VERSION_REQ 0x5
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ 0x6
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/* VF->PF Compatible Version Request */
|
|
Torsten Duwe |
55964e |
-#define ADF_VF2PF_COMPAT_VER_REQ_SHIFT 22
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-#endif /* ADF_IOV_MSG_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_msg.h b/drivers/crypto/qat/qat_common/adf_pfvf_msg.h
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..0520466563fd6
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_msg.h
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,94 @@
|
|
Torsten Duwe |
55964e |
+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#ifndef ADF_PFVF_MSG_H
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_MSG_H
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/*
|
|
Torsten Duwe |
55964e |
+ * PF<->VF Messaging
|
|
Torsten Duwe |
55964e |
+ * The PF has an array of 32-bit PF2VF registers, one for each VF. The
|
|
Torsten Duwe |
55964e |
+ * PF can access all these registers; each VF can access only the one
|
|
Torsten Duwe |
55964e |
+ * register associated with that particular VF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * The register functionally is split into two parts:
|
|
Torsten Duwe |
55964e |
+ * The bottom half is for PF->VF messages. In particular when the first
|
|
Torsten Duwe |
55964e |
+ * bit of this register (bit 0) gets set an interrupt will be triggered
|
|
Torsten Duwe |
55964e |
+ * in the respective VF.
|
|
Torsten Duwe |
55964e |
+ * The top half is for VF->PF messages. In particular when the first bit
|
|
Torsten Duwe |
55964e |
+ * of this half of register (bit 16) gets set an interrupt will be triggered
|
|
Torsten Duwe |
55964e |
+ * in the PF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * The remaining bits within this register are available to encode messages.
|
|
Torsten Duwe |
55964e |
+ * and implement a collision control mechanism to prevent concurrent use of
|
|
Torsten Duwe |
55964e |
+ * the PF2VF register by both the PF and VF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
|
|
Torsten Duwe |
55964e |
+ * _______________________________________________
|
|
Torsten Duwe |
55964e |
+ * | | | | | | | | | | | | | | | | |
|
|
Torsten Duwe |
55964e |
+ * +-----------------------------------------------+
|
|
Torsten Duwe |
55964e |
+ * \___________________________/ \_________/ ^ ^
|
|
Torsten Duwe |
55964e |
+ * ^ ^ | |
|
|
Torsten Duwe |
55964e |
+ * | | | VF2PF Int
|
|
Torsten Duwe |
55964e |
+ * | | Message Origin
|
|
Torsten Duwe |
55964e |
+ * | Message Type
|
|
Torsten Duwe |
55964e |
+ * Message-specific Data/Reserved
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
Torsten Duwe |
55964e |
+ * _______________________________________________
|
|
Torsten Duwe |
55964e |
+ * | | | | | | | | | | | | | | | | |
|
|
Torsten Duwe |
55964e |
+ * +-----------------------------------------------+
|
|
Torsten Duwe |
55964e |
+ * \___________________________/ \_________/ ^ ^
|
|
Torsten Duwe |
55964e |
+ * ^ ^ | |
|
|
Torsten Duwe |
55964e |
+ * | | | PF2VF Int
|
|
Torsten Duwe |
55964e |
+ * | | Message Origin
|
|
Torsten Duwe |
55964e |
+ * | Message Type
|
|
Torsten Duwe |
55964e |
+ * Message-specific Data/Reserved
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Message Origin (Should always be 1)
|
|
Torsten Duwe |
55964e |
+ * A legacy out-of-tree QAT driver allowed for a set of messages not supported
|
|
Torsten Duwe |
55964e |
+ * by this driver; these had a Msg Origin of 0 and are ignored by this driver.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * When a PF or VF attempts to send a message in the lower or upper 16 bits,
|
|
Torsten Duwe |
55964e |
+ * respectively, the other 16 bits are written to first with a defined
|
|
Torsten Duwe |
55964e |
+ * IN_USE_BY pattern as part of a collision control scheme (see function
|
|
Torsten Duwe |
55964e |
+ * adf_gen2_pfvf_send() in adf_pf2vf_msg.c).
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_COMPAT_THIS_VERSION 0x1 /* PF<->VF compat */
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/* PF->VF messages */
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_INT BIT(0)
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MSGORIGIN_SYSTEM BIT(1)
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MSGTYPE_MASK 0x0000003C
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MSGTYPE_SHIFT 2
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MSGTYPE_RESTARTING 0x01
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MSGTYPE_VERSION_RESP 0x02
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_IN_USE_BY_PF 0x6AC20000
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_IN_USE_BY_PF_MASK 0xFFFE0000
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/* PF->VF Version Response */
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VERSION_RESP_VERS_MASK 0x00003FC0
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VERSION_RESP_VERS_SHIFT 6
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VERSION_RESP_RESULT_MASK 0x0000C000
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VERSION_RESP_RESULT_SHIFT 14
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MINORVERSION_SHIFT 6
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_MAJORVERSION_SHIFT 10
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VF_COMPATIBLE 1
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VF_INCOMPATIBLE 2
|
|
Torsten Duwe |
55964e |
+#define ADF_PF2VF_VF_COMPAT_UNKNOWN 3
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/* VF->PF messages */
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_IN_USE_BY_VF 0x00006AC2
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_IN_USE_BY_VF_MASK 0x0000FFFE
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_INT BIT(16)
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGORIGIN_SYSTEM BIT(17)
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_MASK 0x003C0000
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_SHIFT 18
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_INIT 0x3
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_SHUTDOWN 0x4
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_VERSION_REQ 0x5
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ 0x6
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/* VF->PF Compatible Version Request */
|
|
Torsten Duwe |
55964e |
+#define ADF_VF2PF_COMPAT_VER_REQ_SHIFT 22
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#endif /* ADF_PFVF_MSG_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..647b82e6c4baf
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.c
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,21 @@
|
|
Torsten Duwe |
55964e |
+// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#include <linux/pci.h>
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_pf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_pf_proto.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ struct adf_accel_vf_info *vf;
|
|
Torsten Duwe |
55964e |
+ u32 msg = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
+ (ADF_PF2VF_MSGTYPE_RESTARTING << ADF_PF2VF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
+ int i, num_vfs = pci_num_vf(accel_to_pci_dev(accel_dev));
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ for (i = 0, vf = accel_dev->pf.vf_info; i < num_vfs; i++, vf++) {
|
|
Torsten Duwe |
55964e |
+ if (vf->init && adf_send_pf2vf_msg(accel_dev, i, msg))
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Failed to send restarting msg to VF%d\n", i);
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.h b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.h
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..187807b1ff880
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_msg.h
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,10 @@
|
|
Torsten Duwe |
55964e |
+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#ifndef ADF_PFVF_PF_MSG_H
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_PF_MSG_H
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+void adf_pf2vf_notify_restarting(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#endif /* ADF_PFVF_PF_MSG_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..ac6a54cf17f6d
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,158 @@
|
|
Torsten Duwe |
55964e |
+// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#include <linux/spinlock.h>
|
|
Torsten Duwe |
55964e |
+#include <linux/types.h>
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_pf_proto.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_send_pf2vf_msg() - send PF to VF message
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
+ * @vf_nr: VF number to which the message will be sent
|
|
Torsten Duwe |
55964e |
+ * @msg: Message to send
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function allows the PF to send a message to a specific VF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_send_pf2vf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr, u32 msg)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ return GET_PFVF_OPS(accel_dev)->send_msg(accel_dev, msg, vf_nr);
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_recv_vf2pf_msg() - receive a VF to PF message
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
+ * @vf_nr: Number of the VF from where the message will be received
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function allows the PF to receive a message from a specific VF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: a valid message on success, zero otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+static u32 adf_recv_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ return GET_PFVF_OPS(accel_dev)->recv_msg(accel_dev, vf_nr);
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
|
|
Torsten Duwe |
55964e |
+ u32 msg, u32 *response)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ struct adf_accel_vf_info *vf_info = &accel_dev->pf.vf_info[vf_nr];
|
|
Torsten Duwe |
55964e |
+ struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
|
Torsten Duwe |
55964e |
+ u32 resp = 0;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ switch ((msg & ADF_VF2PF_MSGTYPE_MASK) >> ADF_VF2PF_MSGTYPE_SHIFT) {
|
|
Torsten Duwe |
55964e |
+ case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ:
|
|
Torsten Duwe |
55964e |
+ {
|
|
Torsten Duwe |
55964e |
+ u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
+ (ADF_PF2VF_MSGTYPE_VERSION_RESP <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_MSGTYPE_SHIFT) |
|
|
Torsten Duwe |
55964e |
+ (ADF_PFVF_COMPAT_THIS_VERSION <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_VERS_SHIFT));
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Compatibility Version Request from VF%d vers=%u\n",
|
|
Torsten Duwe |
55964e |
+ vf_nr + 1, vf_compat_ver);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ if (vf_compat_ver < hw_data->min_iov_compat_ver) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "VF (vers %d) incompatible with PF (vers %d)\n",
|
|
Torsten Duwe |
55964e |
+ vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
+ resp |= ADF_PF2VF_VF_INCOMPATIBLE <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
+ } else if (vf_compat_ver > ADF_PFVF_COMPAT_THIS_VERSION) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "VF (vers %d) compat with PF (vers %d) unkn.\n",
|
|
Torsten Duwe |
55964e |
+ vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
+ resp |= ADF_PF2VF_VF_COMPAT_UNKNOWN <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
+ } else {
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "VF (vers %d) compatible with PF (vers %d)\n",
|
|
Torsten Duwe |
55964e |
+ vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
+ resp |= ADF_PF2VF_VF_COMPATIBLE <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ case ADF_VF2PF_MSGTYPE_VERSION_REQ:
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Legacy VersionRequest received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
+ vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
+ resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
+ (ADF_PF2VF_MSGTYPE_VERSION_RESP <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_MSGTYPE_SHIFT) |
|
|
Torsten Duwe |
55964e |
+ (ADF_PFVF_COMPAT_THIS_VERSION <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_VERS_SHIFT));
|
|
Torsten Duwe |
55964e |
+ resp |= ADF_PF2VF_VF_COMPATIBLE <<
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
+ /* Set legacy major and minor version num */
|
|
Torsten Duwe |
55964e |
+ resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT |
|
|
Torsten Duwe |
55964e |
+ 1 << ADF_PF2VF_MINORVERSION_SHIFT;
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ case ADF_VF2PF_MSGTYPE_INIT:
|
|
Torsten Duwe |
55964e |
+ {
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Init message received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
+ vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
+ vf_info->init = true;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ case ADF_VF2PF_MSGTYPE_SHUTDOWN:
|
|
Torsten Duwe |
55964e |
+ {
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Shutdown message received from VF%d 0x%x\n",
|
|
Torsten Duwe |
55964e |
+ vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
+ vf_info->init = false;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ default:
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev), "Unknown message from VF%d (0x%x)\n",
|
|
Torsten Duwe |
55964e |
+ vf_nr + 1, msg);
|
|
Torsten Duwe |
55964e |
+ return -ENOMSG;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ *response = resp;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return 0;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+bool adf_recv_and_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ u32 resp = 0;
|
|
Torsten Duwe |
55964e |
+ u32 msg;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ msg = adf_recv_vf2pf_msg(accel_dev, vf_nr);
|
|
Torsten Duwe |
55964e |
+ if (!msg)
|
|
Torsten Duwe |
55964e |
+ return true;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ if (adf_handle_vf2pf_msg(accel_dev, vf_nr, msg, &resp))
|
|
Torsten Duwe |
55964e |
+ return false;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ if (resp && adf_send_pf2vf_msg(accel_dev, vf_nr, resp))
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev), "Failed to send response to VF\n");
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return true;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_enable_pf2vf_comms() - Function enables communication from pf to vf
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device virtual function.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function carries out the necessary steps to setup and start the PFVF
|
|
Torsten Duwe |
55964e |
+ * communication channel, if any.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_enable_pf2vf_comms(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ spin_lock_init(&accel_dev->pf.vf2pf_ints_lock);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return 0;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+EXPORT_SYMBOL_GPL(adf_enable_pf2vf_comms);
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.h b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.h
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..63245407bfb6f
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.h
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,13 @@
|
|
Torsten Duwe |
55964e |
+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#ifndef ADF_PFVF_PF_PROTO_H
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_PF_PROTO_H
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#include <linux/types.h>
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+int adf_send_pf2vf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr, u32 msg);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+int adf_enable_pf2vf_comms(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#endif /* ADF_PFVF_PF_PROTO_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..7969a644e24b7
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,93 @@
|
|
Torsten Duwe |
55964e |
+// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_vf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_vf_proto.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_vf2pf_notify_init() - send init msg to PF
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration VF device.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Function sends an init message from the VF to a PF
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
+ (ADF_VF2PF_MSGTYPE_INIT << ADF_VF2PF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ if (adf_send_vf2pf_msg(accel_dev, msg)) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Failed to send Init event to PF\n");
|
|
Torsten Duwe |
55964e |
+ return -EFAULT;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ set_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status);
|
|
Torsten Duwe |
55964e |
+ return 0;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+EXPORT_SYMBOL_GPL(adf_vf2pf_notify_init);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_vf2pf_notify_shutdown() - send shutdown msg to PF
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration VF device.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Function sends a shutdown message from the VF to a PF
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: void
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
+ (ADF_VF2PF_MSGTYPE_SHUTDOWN << ADF_VF2PF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ if (test_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status))
|
|
Torsten Duwe |
55964e |
+ if (adf_send_vf2pf_msg(accel_dev, msg))
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Failed to send Shutdown event to PF\n");
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+EXPORT_SYMBOL_GPL(adf_vf2pf_notify_shutdown);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
|
Torsten Duwe |
55964e |
+ u32 msg = 0;
|
|
Torsten Duwe |
55964e |
+ int ret;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ msg = ADF_VF2PF_MSGORIGIN_SYSTEM;
|
|
Torsten Duwe |
55964e |
+ msg |= ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ << ADF_VF2PF_MSGTYPE_SHIFT;
|
|
Torsten Duwe |
55964e |
+ msg |= ADF_PFVF_COMPAT_THIS_VERSION << ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
|
|
Torsten Duwe |
55964e |
+ BUILD_BUG_ON(ADF_PFVF_COMPAT_THIS_VERSION > 255);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ ret = adf_send_vf2pf_req(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
+ if (ret) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Failed to send Compatibility Version Request.\n");
|
|
Torsten Duwe |
55964e |
+ return ret;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ /* Response from PF received, check compatibility */
|
|
Torsten Duwe |
55964e |
+ switch (accel_dev->vf.compatible) {
|
|
Torsten Duwe |
55964e |
+ case ADF_PF2VF_VF_COMPATIBLE:
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ case ADF_PF2VF_VF_COMPAT_UNKNOWN:
|
|
Torsten Duwe |
55964e |
+ /* VF is newer than PF and decides whether it is compatible */
|
|
Torsten Duwe |
55964e |
+ if (accel_dev->vf.pf_version >= hw_data->min_iov_compat_ver) {
|
|
Torsten Duwe |
55964e |
+ accel_dev->vf.compatible = ADF_PF2VF_VF_COMPATIBLE;
|
|
Torsten Duwe |
55964e |
+ break;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ fallthrough;
|
|
Torsten Duwe |
55964e |
+ case ADF_PF2VF_VF_INCOMPATIBLE:
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "PF (vers %d) and VF (vers %d) are not compatible\n",
|
|
Torsten Duwe |
55964e |
+ accel_dev->vf.pf_version,
|
|
Torsten Duwe |
55964e |
+ ADF_PFVF_COMPAT_THIS_VERSION);
|
|
Torsten Duwe |
55964e |
+ return -EINVAL;
|
|
Torsten Duwe |
55964e |
+ default:
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Invalid response from PF; assume not compatible\n");
|
|
Torsten Duwe |
55964e |
+ return -EINVAL;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+ return ret;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.h b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.h
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..5091b5b2fd8f3
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.h
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,21 @@
|
|
Torsten Duwe |
55964e |
+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#ifndef ADF_PFVF_VF_MSG_H
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_VF_MSG_H
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#if defined(CONFIG_PCI_IOV)
|
|
Torsten Duwe |
55964e |
+int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+#else
|
|
Torsten Duwe |
55964e |
+static inline int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ return 0;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+static inline void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+#endif
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#endif /* ADF_PFVF_VF_MSG_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..62817bcec121e
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.c
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,133 @@
|
|
Torsten Duwe |
55964e |
+// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#include <linux/completion.h>
|
|
Torsten Duwe |
55964e |
+#include <linux/types.h>
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_vf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_vf_proto.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_MSG_COLLISION_DETECT_DELAY 10
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_MSG_ACK_DELAY 2
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_MSG_ACK_MAX_RETRY 100
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_MSG_RESP_TIMEOUT (ADF_PFVF_MSG_ACK_DELAY * \
|
|
Torsten Duwe |
55964e |
+ ADF_PFVF_MSG_ACK_MAX_RETRY + \
|
|
Torsten Duwe |
55964e |
+ ADF_PFVF_MSG_COLLISION_DETECT_DELAY)
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_send_vf2pf_msg() - send VF to PF message
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
+ * @msg: Message to send
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function allows the VF to send a message to the PF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_send_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ return GET_PFVF_OPS(accel_dev)->send_msg(accel_dev, msg, 0);
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_recv_pf2vf_msg() - receive a PF to VF message
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function allows the VF to receive a message from the PF.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: a valid message on success, zero otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+static u32 adf_recv_pf2vf_msg(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ return GET_PFVF_OPS(accel_dev)->recv_msg(accel_dev, 0);
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_send_vf2pf_req() - send VF2PF request message
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device.
|
|
Torsten Duwe |
55964e |
+ * @msg: Request message to send
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * This function sends a message that requires a response from the VF to the PF
|
|
Torsten Duwe |
55964e |
+ * and waits for a reply.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_send_vf2pf_req(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ unsigned long timeout = msecs_to_jiffies(ADF_PFVF_MSG_RESP_TIMEOUT);
|
|
Torsten Duwe |
55964e |
+ int ret;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ reinit_completion(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ /* Send request from VF to PF */
|
|
Torsten Duwe |
55964e |
+ ret = adf_send_vf2pf_msg(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
+ if (ret) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Failed to send request msg to PF\n");
|
|
Torsten Duwe |
55964e |
+ return ret;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ /* Wait for response */
|
|
Torsten Duwe |
55964e |
+ if (!wait_for_completion_timeout(&accel_dev->vf.iov_msg_completion,
|
|
Torsten Duwe |
55964e |
+ timeout)) {
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "PFVF request/response message timeout expired\n");
|
|
Torsten Duwe |
55964e |
+ return -EIO;
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return 0;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+static bool adf_handle_pf2vf_msg(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ switch ((msg & ADF_PF2VF_MSGTYPE_MASK) >> ADF_PF2VF_MSGTYPE_SHIFT) {
|
|
Torsten Duwe |
55964e |
+ case ADF_PF2VF_MSGTYPE_RESTARTING:
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Restarting msg received from PF 0x%x\n", msg);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ adf_pf2vf_handle_pf_restarting(accel_dev);
|
|
Torsten Duwe |
55964e |
+ return false;
|
|
Torsten Duwe |
55964e |
+ case ADF_PF2VF_MSGTYPE_VERSION_RESP:
|
|
Torsten Duwe |
55964e |
+ dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Version resp received from PF 0x%x\n", msg);
|
|
Torsten Duwe |
55964e |
+ accel_dev->vf.pf_version =
|
|
Torsten Duwe |
55964e |
+ (msg & ADF_PF2VF_VERSION_RESP_VERS_MASK) >>
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_VERS_SHIFT;
|
|
Torsten Duwe |
55964e |
+ accel_dev->vf.compatible =
|
|
Torsten Duwe |
55964e |
+ (msg & ADF_PF2VF_VERSION_RESP_RESULT_MASK) >>
|
|
Torsten Duwe |
55964e |
+ ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
+ complete(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
55964e |
+ return true;
|
|
Torsten Duwe |
55964e |
+ default:
|
|
Torsten Duwe |
55964e |
+ dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
+ "Unknown PF2VF message(0x%x)\n", msg);
|
|
Torsten Duwe |
55964e |
+ }
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return false;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ u32 msg;
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ msg = adf_recv_pf2vf_msg(accel_dev);
|
|
Torsten Duwe |
55964e |
+ if (msg)
|
|
Torsten Duwe |
55964e |
+ return adf_handle_pf2vf_msg(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+ return true;
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+/**
|
|
Torsten Duwe |
55964e |
+ * adf_enable_vf2pf_comms() - Function enables communication from vf to pf
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * @accel_dev: Pointer to acceleration device virtual function.
|
|
Torsten Duwe |
55964e |
+ *
|
|
Torsten Duwe |
55964e |
+ * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
+ */
|
|
Torsten Duwe |
55964e |
+int adf_enable_vf2pf_comms(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
+{
|
|
Torsten Duwe |
55964e |
+ adf_enable_pf2vf_interrupts(accel_dev);
|
|
Torsten Duwe |
55964e |
+ return adf_vf2pf_request_version(accel_dev);
|
|
Torsten Duwe |
55964e |
+}
|
|
Torsten Duwe |
55964e |
+EXPORT_SYMBOL_GPL(adf_enable_vf2pf_comms);
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.h b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.h
|
|
Torsten Duwe |
55964e |
new file mode 100644
|
|
Torsten Duwe |
55964e |
index 0000000000000..a3ab24c7d18bd
|
|
Torsten Duwe |
55964e |
--- /dev/null
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_proto.h
|
|
Torsten Duwe |
55964e |
@@ -0,0 +1,14 @@
|
|
Torsten Duwe |
55964e |
+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+#ifndef ADF_PFVF_VF_PROTO_H
|
|
Torsten Duwe |
55964e |
+#define ADF_PFVF_VF_PROTO_H
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#include <linux/types.h>
|
|
Torsten Duwe |
55964e |
+#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+int adf_send_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 msg);
|
|
Torsten Duwe |
55964e |
+int adf_send_vf2pf_req(struct adf_accel_dev *accel_dev, u32 msg);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+int adf_enable_vf2pf_comms(struct adf_accel_dev *accel_dev);
|
|
Torsten Duwe |
55964e |
+
|
|
Torsten Duwe |
55964e |
+#endif /* ADF_PFVF_VF_PROTO_H */
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_sriov.c b/drivers/crypto/qat/qat_common/adf_sriov.c
|
|
Torsten Duwe |
55964e |
index 342063406c196..429990c5e0f34 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_sriov.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_sriov.c
|
|
Torsten Duwe |
55964e |
@@ -1,12 +1,12 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <linux/workqueue.h>
|
|
Torsten Duwe |
55964e |
#include <linux/pci.h>
|
|
Torsten Duwe |
55964e |
#include <linux/device.h>
|
|
Torsten Duwe |
55964e |
#include <linux/iommu.h>
|
|
Torsten Duwe |
55964e |
#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
#include "adf_cfg.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_pf2vf_msg.h"
|
|
Torsten Duwe |
55964e |
+#include "adf_pfvf_pf_msg.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
static struct workqueue_struct *pf2vf_resp_wq;
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c b/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
|
|
Torsten Duwe |
55964e |
deleted file mode 100644
|
|
Torsten Duwe |
55964e |
index f3660981ad6aa..0000000000000
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_vf2pf_msg.c
|
|
Torsten Duwe |
55964e |
+++ /dev/null
|
|
Torsten Duwe |
55964e |
@@ -1,100 +0,0 @@
|
|
Torsten Duwe |
55964e |
-// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
-#include "adf_accel_devices.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_common_drv.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_pf2vf_msg.h"
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_vf2pf_notify_init() - send init msg to PF
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration VF device.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Function sends an init message from the VF to a PF
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: 0 on success, error code otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
- (ADF_VF2PF_MSGTYPE_INIT << ADF_VF2PF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- if (adf_send_vf2pf_msg(accel_dev, msg)) {
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Failed to send Init event to PF\n");
|
|
Torsten Duwe |
55964e |
- return -EFAULT;
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
- set_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status);
|
|
Torsten Duwe |
55964e |
- return 0;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-EXPORT_SYMBOL_GPL(adf_vf2pf_notify_init);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_vf2pf_notify_shutdown() - send shutdown msg to PF
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration VF device.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Function sends a shutdown message from the VF to a PF
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: void
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
|
|
Torsten Duwe |
55964e |
- (ADF_VF2PF_MSGTYPE_SHUTDOWN << ADF_VF2PF_MSGTYPE_SHIFT));
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- if (test_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status))
|
|
Torsten Duwe |
55964e |
- if (adf_send_vf2pf_msg(accel_dev, msg))
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Failed to send Shutdown event to PF\n");
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-EXPORT_SYMBOL_GPL(adf_vf2pf_notify_shutdown);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-/**
|
|
Torsten Duwe |
55964e |
- * adf_recv_pf2vf_msg() - receive a PF to VF message
|
|
Torsten Duwe |
55964e |
- * @accel_dev: Pointer to acceleration device
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * This function allows the VF to receive a message from the PF.
|
|
Torsten Duwe |
55964e |
- *
|
|
Torsten Duwe |
55964e |
- * Return: a valid message on success, zero otherwise.
|
|
Torsten Duwe |
55964e |
- */
|
|
Torsten Duwe |
55964e |
-static u32 adf_recv_pf2vf_msg(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- return GET_PFVF_OPS(accel_dev)->recv_msg(accel_dev, 0);
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-static bool adf_handle_pf2vf_msg(struct adf_accel_dev *accel_dev, u32 msg)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- switch ((msg & ADF_PF2VF_MSGTYPE_MASK) >> ADF_PF2VF_MSGTYPE_SHIFT) {
|
|
Torsten Duwe |
55964e |
- case ADF_PF2VF_MSGTYPE_RESTARTING:
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Restarting msg received from PF 0x%x\n", msg);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- adf_pf2vf_handle_pf_restarting(accel_dev);
|
|
Torsten Duwe |
55964e |
- return false;
|
|
Torsten Duwe |
55964e |
- case ADF_PF2VF_MSGTYPE_VERSION_RESP:
|
|
Torsten Duwe |
55964e |
- dev_dbg(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Version resp received from PF 0x%x\n", msg);
|
|
Torsten Duwe |
55964e |
- accel_dev->vf.pf_version =
|
|
Torsten Duwe |
55964e |
- (msg & ADF_PF2VF_VERSION_RESP_VERS_MASK) >>
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_VERS_SHIFT;
|
|
Torsten Duwe |
55964e |
- accel_dev->vf.compatible =
|
|
Torsten Duwe |
55964e |
- (msg & ADF_PF2VF_VERSION_RESP_RESULT_MASK) >>
|
|
Torsten Duwe |
55964e |
- ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
|
|
Torsten Duwe |
55964e |
- complete(&accel_dev->vf.iov_msg_completion);
|
|
Torsten Duwe |
55964e |
- return true;
|
|
Torsten Duwe |
55964e |
- default:
|
|
Torsten Duwe |
55964e |
- dev_err(&GET_DEV(accel_dev),
|
|
Torsten Duwe |
55964e |
- "Unknown PF2VF message(0x%x)\n", msg);
|
|
Torsten Duwe |
55964e |
- }
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return false;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
-bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev)
|
|
Torsten Duwe |
55964e |
-{
|
|
Torsten Duwe |
55964e |
- u32 msg;
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- msg = adf_recv_pf2vf_msg(accel_dev);
|
|
Torsten Duwe |
55964e |
- if (msg)
|
|
Torsten Duwe |
55964e |
- return adf_handle_pf2vf_msg(accel_dev, msg);
|
|
Torsten Duwe |
55964e |
-
|
|
Torsten Duwe |
55964e |
- return true;
|
|
Torsten Duwe |
55964e |
-}
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_common/adf_vf_isr.c b/drivers/crypto/qat/qat_common/adf_vf_isr.c
|
|
Torsten Duwe |
55964e |
index b17040b8a4b9f..fe094178f065e 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_common/adf_vf_isr.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_common/adf_vf_isr.c
|
|
Torsten Duwe |
55964e |
@@ -15,7 +15,6 @@
|
|
Torsten Duwe |
55964e |
#include "adf_cfg_common.h"
|
|
Torsten Duwe |
55964e |
#include "adf_transport_access_macros.h"
|
|
Torsten Duwe |
55964e |
#include "adf_transport_internal.h"
|
|
Torsten Duwe |
55964e |
-#include "adf_pf2vf_msg.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
#define ADF_VINTSOU_OFFSET 0x204
|
|
Torsten Duwe |
55964e |
#define ADF_VINTMSK_OFFSET 0x208
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c b/drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c
|
|
Torsten Duwe |
55964e |
index aa42373a7118d..37f43b8c29eb7 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,10 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2014 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2014 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_dh895xcc_hw_data.h"
|
|
Torsten Duwe |
55964e |
#include "icp_qat_hw.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
diff --git a/drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c b/drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c
|
|
Torsten Duwe |
55964e |
index 2e2ef6b5bd2a2..d3795bab37255 100644
|
|
Torsten Duwe |
55964e |
--- a/drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c
|
|
Torsten Duwe |
55964e |
+++ b/drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c
|
|
Torsten Duwe |
55964e |
@@ -1,10 +1,11 @@
|
|
Torsten Duwe |
55964e |
// SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only)
|
|
Torsten Duwe |
55964e |
-/* Copyright(c) 2015 - 2020 Intel Corporation */
|
|
Torsten Duwe |
55964e |
+/* Copyright(c) 2015 - 2021 Intel Corporation */
|
|
Torsten Duwe |
55964e |
#include <adf_accel_devices.h>
|
|
Torsten Duwe |
55964e |
-#include <adf_pf2vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include <adf_common_drv.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_hw_data.h>
|
|
Torsten Duwe |
55964e |
#include <adf_gen2_pfvf.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_msg.h>
|
|
Torsten Duwe |
55964e |
+#include <adf_pfvf_vf_msg.h>
|
|
Torsten Duwe |
55964e |
#include "adf_dh895xccvf_hw_data.h"
|
|
Torsten Duwe |
55964e |
|
|
Torsten Duwe |
55964e |
static struct adf_hw_device_class dh895xcciov_class = {
|
|
Torsten Duwe |
55964e |
--
|
|
Torsten Duwe |
55964e |
2.35.3
|
|
Torsten Duwe |
55964e |
|