From: Wu Hao <hao...@intel.com> Add basic skeleton for connect()/disconnect() handlers. The major steps are SPDM setup first and then IDE selective stream setup.
No detailed TDX Connect implementation. Signed-off-by: Wu Hao <hao...@intel.com> Signed-off-by: Xu Yilun <yilun...@linux.intel.com> --- drivers/virt/coco/host/tdx_tsm.c | 55 +++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/drivers/virt/coco/host/tdx_tsm.c b/drivers/virt/coco/host/tdx_tsm.c index 72f3705fe7bb..d1a8384d8339 100644 --- a/drivers/virt/coco/host/tdx_tsm.c +++ b/drivers/virt/coco/host/tdx_tsm.c @@ -79,13 +79,66 @@ static int tdx_tsm_guest_req(struct pci_dev *pdev, return -ENXIO; } +static int tdx_tsm_spdm_session_setup(struct tdx_tsm *ttsm) +{ + return 0; +} + +static int tdx_tsm_spdm_session_teardown(struct tdx_tsm *ttsm) +{ + return 0; +} + +static int tdx_tsm_ide_stream_setup(struct tdx_tsm *ttsm) +{ + return 0; +} + +static int tdx_tsm_ide_stream_teardown(struct tdx_tsm *ttsm) +{ + return 0; +} + static int tdx_tsm_connect(struct pci_dev *pdev) { - return -ENXIO; + struct tdx_tsm *ttsm = to_tdx_tsm(pdev->tsm); + int ret; + + ret = tdx_tsm_spdm_session_setup(ttsm); + if (ret) { + pci_err(pdev, "fail to setup spdm session\n"); + return ret; + } + + ret = tdx_tsm_ide_stream_setup(ttsm); + if (ret) { + pci_err(pdev, "fail to setup ide stream\n"); + tdx_tsm_spdm_session_teardown(ttsm); + return ret; + } + + pci_dbg(pdev, "%s complete\n", __func__); + return ret; } static void tdx_tsm_disconnect(struct pci_dev *pdev) { + struct tdx_tsm *ttsm = to_tdx_tsm(pdev->tsm); + int ret; + + ret = tdx_tsm_ide_stream_teardown(ttsm); + if (ret) { + pci_err(pdev, "fail to teardown ide stream\n"); + return; + } + + ret = tdx_tsm_spdm_session_teardown(ttsm); + if (ret) { + pci_err(pdev, "fail to teadown spdm session\n"); + return; + } + + pci_dbg(pdev, "%s complete\n", __func__); } static struct pci_tsm *tdx_tsm_pci_probe(struct pci_dev *pdev) -- 2.25.1