[Skiboot] [PATCH V6 04/21] core/pldm: Add PLDM responder support

Christophe Lombard clombard at linux.vnet.ibm.com
Thu Apr 13 03:05:56 AEST 2023



Le 12/04/2023 à 16:45, Frederic Barrat a écrit :
>
>
> On 13/09/2022 12:26, Christophe Lombard wrote:
>> PLDM defines data representations and commands that abstract the 
>> platform
>> management hardware.
>>
>> A PLDM Terminus (or responder) is defined as the point of communication
>> termination for PLDM messages and the PLDM functions associated with 
>> those
>> messages.
>> A PLDM terminus is not required to process more than one request at a 
>> time
>> (that is, it can be "single threaded" and does not have to accept and 
>> act
>> on new requests until it has finished responding to any previous 
>> request).
>>
>> Some PLDM control and discovery requests (PLDM_TYPE = PLDM_BASE) are
>> mandatory a PLDM terminus has to answer.
>>
>> These following mandatory PLDM command codes for PLDM messaging control
>> and discovery will be defined in next patches.
>>      GetTID          0x02
>>      GetPLDMVersion  0x03
>>      GetPLDMTypes    0x04
>>      GetPLDMCommands 0x05
>>
>> Signed-off-by: Christophe Lombard <clombard at linux.vnet.ibm.com>
>> ---
>>   core/pldm/Makefile.inc     |   2 +-
>>   core/pldm/pldm-mctp.c      |  18 ++++-
>>   core/pldm/pldm-responder.c | 145 +++++++++++++++++++++++++++++++++++++
>>   core/pldm/pldm.h           |   6 ++
>>   4 files changed, 169 insertions(+), 2 deletions(-)
>>   create mode 100644 core/pldm/pldm-responder.c
>>
>> diff --git a/core/pldm/Makefile.inc b/core/pldm/Makefile.inc
>> index c878ef1f..dbca102a 100644
>> --- a/core/pldm/Makefile.inc
>> +++ b/core/pldm/Makefile.inc
>> @@ -7,7 +7,7 @@ SUBDIRS += $(PLDM_DIR)
>>   CPPFLAGS += -I$(SRC)/pldm/libpldm/
>>   CPPFLAGS += -I$(SRC)/pldm/ibm/libpldm/
>>   -PLDM_OBJS = pldm-mctp.o
>> +PLDM_OBJS = pldm-mctp.o pldm-responder.o
>>     PLDM = $(PLDM_DIR)/built-in.a
>>   $(PLDM): $(PLDM_OBJS:%=$(PLDM_DIR)/%)
>> diff --git a/core/pldm/pldm-mctp.c b/core/pldm/pldm-mctp.c
>> index 832b767a..51dbad0a 100644
>> --- a/core/pldm/pldm-mctp.c
>> +++ b/core/pldm/pldm-mctp.c
>> @@ -75,6 +75,14 @@ static int handle_message_rx(uint8_t eid, const 
>> uint8_t *buf, int len)
>>           return OPAL_EMPTY;
>>       }
>>   +    switch (rx.hdrinf.msg_type) {
>> +    case PLDM_REQUEST:
>> +        return pldm_responder_handle_request(&rx);
>> +    break;
>> +    default:
>> +    break;
>
>
> The indentation of "break" should be further.
> Print an error in the default case, just in case? With prlog_once() to 
> avoid flooding the log
>

sounds good.

>
>
>> diff --git a/core/pldm/pldm.h b/core/pldm/pldm.h
>> index a006d1f4..3add1bac 100644
>> --- a/core/pldm/pldm.h
>> +++ b/core/pldm/pldm.h
>> @@ -20,6 +20,8 @@ void printbuf(const char *name, const char *msg, 
>> int len);
>>   #define BMC_EID  8
>>   #define HOST_EID 9
>>   +#define PKT_SIZE(x) (sizeof(struct pldm_msg_hdr) + sizeof(x))
>
>
> This is where I'm thinking we could add the +1 byte mentioned in the 
> previous patch. And maybe provide macros to easily access the header, 
> payload and MCTP type byte.
>
> Regarding the name, it is my understanding that MCTP can break a 
> single PLDM message into several packets. Here, we're allocating the 
> full PLDM message. Maybe rename to PLDM_MSG_SIZE(x) or someting 
> similar, avoiding 'PKT' to avoid confusion?
>
>   Fred


That could be an idea, but don't forget that some callers are not using 
PKT_SIZE.
They need to allocate a local buffer.



More information about the Skiboot mailing list