This currently very much a PoC. Currently the SPDM library only provides a single function to allow a challenge / authentication of the PCI EP. SPDM exchanges must occur in one of a small set of valid squences over which the message digest used in authentication is built up. Placing that complexity in the SPDM library seems like a good way to enforce that logic, without having to do it for each transport. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> --- drivers/pci/Kconfig | 9 +++++++++ drivers/pci/Makefile | 1 + drivers/pci/doe.c | 2 -- include/linux/pci-doe.h | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index a30c59cf5e27..43e3b0d5e8cd 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig @@ -198,6 +198,15 @@ config PCI_DOE used by a number of different protocols. DOE is defined in the Data Object Exchange ECN to the PCIe r5.0 spec. +config PCI_CMA + tristate + select PCI_DOE + select ASN1_ENCODER + select SPDM + help + This enables library support for the PCI Component Measurement and + Authentication ECN. This uses DMTF SPDM 1.1 + choice prompt "PCI Express hierarchy optimization setting" default PCIE_BUS_DEFAULT diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile index 1b61c1a1c232..3f6b3543d565 100644 --- a/drivers/pci/Makefile +++ b/drivers/pci/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_PCI_PF_STUB) += pci-pf-stub.o obj-$(CONFIG_PCI_ECAM) += ecam.o obj-$(CONFIG_PCI_P2PDMA) += p2pdma.o obj-$(CONFIG_PCI_DOE) += doe.o +obj-$(CONFIG_PCI_CMA) += cma.o obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen-pcifront.o # Endpoint library must be initialized before its users diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c index 2d20f59e42c6..f6aaeed01010 100644 --- a/drivers/pci/doe.c +++ b/drivers/pci/doe.c @@ -20,8 +20,6 @@ /* Maximum number of DOE instances in the system */ #define PCI_DOE_MAX_CNT 65536 -#define PCI_DOE_PROTOCOL_DISCOVERY 0 - #define PCI_DOE_BUSY_MAX_RETRIES 16 #define PCI_DOE_POLL_INTERVAL (HZ / 128) diff --git a/include/linux/pci-doe.h b/include/linux/pci-doe.h index bdc5f15f14ab..1347c124ed70 100644 --- a/include/linux/pci-doe.h +++ b/include/linux/pci-doe.h @@ -19,6 +19,8 @@ struct pci_doe_prot { u8 type; }; +#define PCI_DOE_PROTOCOL_DISCOVERY 0 +#define PCI_DOE_PROTOCOL_CMA 1 struct workqueue_struct; enum pci_doe_state { -- 2.19.1