Re: [PATCH v4 1/2] platforms/x86: Add AMD system management interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/10/22 14:32, Song Liu wrote:
> On Thu, Feb 10, 2022 at 11:52 AM Nathan Fontenot <nafonten@xxxxxxx> wrote:
>>
>> On 2/9/22 19:10, Song Liu wrote:
>>> On Wed, Feb 9, 2022 at 1:08 PM Nathan Fontenot <nafonten@xxxxxxx> wrote:
>>>>
>>> [...]
>>>>> +
>>>>> +static const struct hsmp_msg_desc msg_desc_table[] = {
>>>>> +     /* num_args, response_size, type */
>>>>> +     {0, 0, RSVD},   /* RESERVED */
>>>>> +     {1, 1, GET},    /* HSMP_TEST */
>>>>> +     {0, 1, GET},    /* HSMP_GET_SMU_VER */
>>>>> +     {0, 1, GET},    /* HSMP_GET_PROTO_VER */
>>>>> +     {0, 1, GET},    /* HSMP_GET_SOCKET_POWER */
>>>>> +     {1, 0, SET},    /* HSMP_SET_SOCKET_POWER_LIMIT */
>>>>> +     {0, 1, GET},    /* HSMP_GET_SOCKET_POWER_LIMIT */
>>>>> +     {0, 1, GET},    /* HSMP_GET_SOCKET_POWER_LIMIT_MAX */
>>>>> +     {1, 0, SET},    /* HSMP_SET_BOOST_LIMIT */
>>>>> +     {1, 0, SET},    /* HSMP_SET_BOOST_LIMIT_SOCKET */
>>>>> +     {1, 1, GET},    /* HSMP_GET_BOOST_LIMIT */
>>>>> +     {0, 1, GET},    /* HSMP_GET_PROC_HOT */
>>>>> +     {1, 0, SET},    /* HSMP_SET_XGMI_LINK_WIDTH */
>>>>> +     {1, 0, SET},    /* HSMP_SET_DF_PSTATE */
>>>>> +     {0, 0, SET},    /* HSMP_SET_AUTO_DF_PSTATE */
>>>>> +     {0, 2, GET},    /* HSMP_GET_FCLK_MCLK */
>>>>> +     {0, 1, GET},    /* HSMP_GET_CCLK_THROTTLE_LIMIT */
>>>>> +     {0, 1, GET},    /* HSMP_GET_C0_PERCENT */
>>>>> +     {1, 0, SET},    /* HSMP_SET_NBIO_DPM_LEVEL */
>>>>> +     {0, 0, RSVD},   /* RESERVED */
>>>>> +     {0, 1, GET},    /* HSMP_GET_DDR_BANDWIDTH */
>>>>> +     {0, 1, GET},    /* HSMP_GET_TEMP_MONITOR */
>>>>> +};
>>>>
>>>> The hsmp_msg_desc, hsmp_msg_type, and msg_desc_table are used by the driver for
>>>> validating user data. These aren't part of the user API.
>>>>
>>>> Perhaps these should be defined in the driver itself instead of being a part of
>>>> the uapi header.
>>>
>>> This was my idea. While I agree it is a little weird to have these
>>> tables in a uapi
>>> header, I think it is helpful to give the user some reference about
>>> proper num_args
>>> and response_size for each message. I don't have a better idea to achieve this.
>>>
>>
>> I like the idea to give users a reference on args and responses for each HSMP function.
>> If this table is kept in the uapi header perhaps we should add a short description of
>> what the expected args and responses are for each HSMP function with a pointer to the
>> full documentation of the HSMP functions in the PPR.
> 
> I guess we can use unions do give full descriptions, like:
> 
> struct hsmp_message {
>        __u32   msg_id;                         /* Message ID */
>        __u16   num_args;                       /* Number of arguments
> in message */
>        __u16   response_sz;                    /* Number of expected
> response words */
>        union {
>               struct {
>                       __u32   args[HSMP_MAX_MSG_LEN];
>                }; /* ensure size of args */
>               struct {
>                        __u32 test_arg1;
>               } hsmp_test;
>               /* args for other commands */
>        } args;
>        union {
>               struct {
>                       __u32   response[HSMP_MAX_MSG_LEN];
>                }; /* ensure size of response */
>               struct {
>                        __u32 test_response1; /* or better name */
>               } hsmp_test;
>               /* reponse for other commands */
>        } response;
>         __u16   sock_ind;                       /* socket number */
> };
> 

I was thinking of keeping the msg_desc_table as is, just provide more details
about the expected args and responses in a comment. I think creating a union
of structs for each HSMP function (and there are more functions coming) would
get a bit messy.

> btw: do we really need HSMP_MAX_MSG_LEN of 8? The list above
> have at most 2 args/responses.

The PPR spec defines the args and responses as having up to 8 so we ned to keep
the max length at 8. No current HSMP has more than 2 though.

-Nathan

> 
> Thanks,
> Song



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux