This will be later used by iommufd to bind a tdi to guest. Signed-off-by: Aneesh Kumar K.V (Arm) <aneesh.kumar@xxxxxxxxxx> --- drivers/virt/coco/host/tsm-core.c | 18 ++++++++++++++++++ include/linux/tsm.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/drivers/virt/coco/host/tsm-core.c b/drivers/virt/coco/host/tsm-core.c index bd9e09b07412..0a7c9aa46c56 100644 --- a/drivers/virt/coco/host/tsm-core.c +++ b/drivers/virt/coco/host/tsm-core.c @@ -116,6 +116,24 @@ void tsm_ide_stream_unregister(struct pci_ide *ide) } EXPORT_SYMBOL_GPL(tsm_ide_stream_unregister); +int tsm_bind(struct device *dev, struct kvm *kvm, u64 tdi_id) +{ + if (!dev_is_pci(dev)) + return -EINVAL; + + return pci_tsm_bind(to_pci_dev(dev), kvm, tdi_id); +} +EXPORT_SYMBOL_GPL(tsm_bind); + +int tsm_unbind(struct device *dev) +{ + if (!dev_is_pci(dev)) + return -EINVAL; + + return pci_tsm_unbind(to_pci_dev(dev)); +} +EXPORT_SYMBOL_GPL(tsm_unbind); + static void tsm_release(struct device *dev) { struct tsm_core_dev *core = container_of(dev, typeof(*core), dev); diff --git a/include/linux/tsm.h b/include/linux/tsm.h index 915c4c8b061b..0aab8d037e71 100644 --- a/include/linux/tsm.h +++ b/include/linux/tsm.h @@ -118,6 +118,9 @@ struct tsm_core_dev *tsm_register(struct device *parent, void tsm_unregister(struct tsm_core_dev *tsm_core); struct pci_dev; struct pci_ide; +struct kvm; int tsm_ide_stream_register(struct pci_dev *pdev, struct pci_ide *ide); void tsm_ide_stream_unregister(struct pci_ide *ide); +int tsm_bind(struct device *dev, struct kvm *kvm, u64 tdi_id); +int tsm_unbind(struct device *dev); #endif /* __TSM_H */ -- 2.43.0