2024-02-01 06:03:57

by Alexey Kardashevskiy

[permalink] [raw]
Subject: [PATCH kernel 1/4] pci/doe: Define protocol types and make those public

Already public pci_doe() takes a protocol type argument.
PCIe 6.0 defines three, define them in a header for use with pci_doe().

Signed-off-by: Alexey Kardashevskiy <[email protected]>
---
include/linux/pci-doe.h | 4 ++++
drivers/pci/doe.c | 2 --
2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/include/linux/pci-doe.h b/include/linux/pci-doe.h
index 1f14aed4354b..5c33f7dc978b 100644
--- a/include/linux/pci-doe.h
+++ b/include/linux/pci-doe.h
@@ -13,6 +13,10 @@
#ifndef LINUX_PCI_DOE_H
#define LINUX_PCI_DOE_H

+#define PCI_DOE_PROTOCOL_DISCOVERY 0
+#define PCI_DOE_PROTOCOL_CMA_SPDM 1
+#define PCI_DOE_PROTOCOL_SECURED_CMA_SPDM 2
+
struct pci_doe_mb;

struct pci_doe_mb *pci_find_doe_mailbox(struct pci_dev *pdev, u16 vendor,
diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
index e3aab5edaf70..61f0531d2b1d 100644
--- a/drivers/pci/doe.c
+++ b/drivers/pci/doe.c
@@ -22,8 +22,6 @@

#include "pci.h"

-#define PCI_DOE_PROTOCOL_DISCOVERY 0
-
/* Timeout of 1 second from 6.30.2 Operation, PCI Spec r6.0 */
#define PCI_DOE_TIMEOUT HZ
#define PCI_DOE_POLL_INTERVAL (PCI_DOE_TIMEOUT / 128)
--
2.41.0



2024-02-01 10:17:06

by Alexey Kardashevskiy

[permalink] [raw]
Subject: Re: [PATCH kernel 1/4] pci/doe: Define protocol types and make those public

On 1/2/24 17:50, Lukas Wunner wrote:
> On Thu, Feb 01, 2024 at 05:02:25PM +1100, Alexey Kardashevskiy wrote:
>> Already public pci_doe() takes a protocol type argument.
>> PCIe 6.0 defines three, define them in a header for use with pci_doe().
> [...]
>> --- a/include/linux/pci-doe.h
>> +++ b/include/linux/pci-doe.h
>> @@ -13,6 +13,10 @@
>> #ifndef LINUX_PCI_DOE_H
>> #define LINUX_PCI_DOE_H
>>
>> +#define PCI_DOE_PROTOCOL_DISCOVERY 0
>> +#define PCI_DOE_PROTOCOL_CMA_SPDM 1
>> +#define PCI_DOE_PROTOCOL_SECURED_CMA_SPDM 2
>
> These are deliberately defined in the .c files which actually need them,
> i.e. DISCOVERY is defined in drivers/pci/doe.c and CMA_SPDM is defined in
> drivers/pci/cma.c:
>
> https://lore.kernel.org/all/7721bfa3b4f8a99a111f7808ad8890c3c13df56d.1695921657.git.lukas@wunner.de/
>
> I don't see why they would have to be public if they're each only needed
> in a single .c file.

SEV TIO needs both CMA and SECURED_CMA for DOE device<->firmware
bouncing and it is going to use pci_doe() for this. I should have put
this into the commit log, sorry about that.

Or the plan is to add pci_doe_secure_transport() to cma.c and force
everyone use that?

The PCI SIG DOE protocol numbers (discovery, CMA, secure CMA) are all
defined in one place in the PCIe spec and defining them in different
places (doe.c, cma.c) is weird imho.


>
> Thanks,
>
> Lukas

--
Alexey


2024-02-08 21:57:45

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH kernel 1/4] pci/doe: Define protocol types and make those public

On Thu, Feb 01, 2024 at 05:02:25PM +1100, Alexey Kardashevskiy wrote:
> Already public pci_doe() takes a protocol type argument.
> PCIe 6.0 defines three, define them in a header for use with pci_doe().
>
> Signed-off-by: Alexey Kardashevskiy <[email protected]>
> ---
> include/linux/pci-doe.h | 4 ++++
> drivers/pci/doe.c | 2 --
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/pci-doe.h b/include/linux/pci-doe.h
> index 1f14aed4354b..5c33f7dc978b 100644
> --- a/include/linux/pci-doe.h
> +++ b/include/linux/pci-doe.h
> @@ -13,6 +13,10 @@
> #ifndef LINUX_PCI_DOE_H
> #define LINUX_PCI_DOE_H
>
> +#define PCI_DOE_PROTOCOL_DISCOVERY 0
> +#define PCI_DOE_PROTOCOL_CMA_SPDM 1
> +#define PCI_DOE_PROTOCOL_SECURED_CMA_SPDM 2

So far these are only needed inside drivers/pci/. I don't want to
expose them to the rest of the kernel via include/linux/pci-doe.h
until they're needed elsewhere.

> struct pci_doe_mb;
>
> struct pci_doe_mb *pci_find_doe_mailbox(struct pci_dev *pdev, u16 vendor,
> diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
> index e3aab5edaf70..61f0531d2b1d 100644
> --- a/drivers/pci/doe.c
> +++ b/drivers/pci/doe.c
> @@ -22,8 +22,6 @@
>
> #include "pci.h"
>
> -#define PCI_DOE_PROTOCOL_DISCOVERY 0
> -
> /* Timeout of 1 second from 6.30.2 Operation, PCI Spec r6.0 */
> #define PCI_DOE_TIMEOUT HZ
> #define PCI_DOE_POLL_INTERVAL (PCI_DOE_TIMEOUT / 128)
> --
> 2.41.0
>

2024-02-09 08:52:37

by Lukas Wunner

[permalink] [raw]
Subject: Re: [PATCH kernel 1/4] pci/doe: Define protocol types and make those public

On Thu, Feb 01, 2024 at 09:16:37PM +1100, Alexey Kardashevskiy wrote:
> Or the plan is to add pci_doe_secure_transport() to cma.c and force everyone
> use that?

Right, the plan is to pass an additional callback to spdm_create()
which performs a secure transmission. And cma.c would define that
to use the separate DOE type.

Thanks,

Lukas

2024-02-15 11:44:22

by Alexey Kardashevskiy

[permalink] [raw]
Subject: Re: [PATCH kernel 1/4] pci/doe: Define protocol types and make those public



On 9/2/24 19:52, Lukas Wunner wrote:
> On Thu, Feb 01, 2024 at 09:16:37PM +1100, Alexey Kardashevskiy wrote:
>> Or the plan is to add pci_doe_secure_transport() to cma.c and force everyone
>> use that?
>
> Right, the plan is to pass an additional callback to spdm_create()
> which performs a secure transmission. And cma.c would define that
> to use the separate DOE type.

But it is no use for the TDISP case which won't be calling spdm_create()
and will have to define CMA_SPDM and SECURED_CMA_SPDM, again.


--
Alexey