[dpdk-dev] [PATCH v5 06/21] eal/soc: introduce very essential SoC infra definitions

Shreyansh Jain shreyansh.jain at nxp.com
Tue Oct 25 14:38:39 CEST 2016


On Tuesday 25 October 2016 11:06 AM, Shreyansh Jain wrote:
> Hello Jan,
>
> On Monday 24 October 2016 09:51 PM, Jan Viktorin wrote:
>> On Mon, 24 Oct 2016 17:29:25 +0530
>> Shreyansh Jain <shreyansh.jain at nxp.com> wrote:
>>
>>> From: Jan Viktorin <viktorin at rehivetech.com>
>>>
>>> Define initial structures and functions for the SoC infrastructure.
>>> This patch supports only a very minimal functions for now.
>>> More features will be added in the following commits.
>>>
>>> Includes rte_device/rte_driver inheritance of
>>> rte_soc_device/rte_soc_driver.
>>>
>>> Signed-off-by: Jan Viktorin <viktorin at rehivetech.com>
>>> Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com>
>>> Signed-off-by: Hemant Agrawal <hemant.agrawal at nxp.com>
>>> ---
>>>  app/test/Makefile                       |   1 +
>>>  app/test/test_soc.c                     |  90 +++++++++++++++++++++
>>>  lib/librte_eal/common/Makefile          |   2 +-
>>>  lib/librte_eal/common/eal_private.h     |   4 +
>>>  lib/librte_eal/common/include/rte_soc.h | 138
>>> ++++++++++++++++++++++++++++++++
>>>  5 files changed, 234 insertions(+), 1 deletion(-)
>>>  create mode 100644 app/test/test_soc.c
>>>  create mode 100644 lib/librte_eal/common/include/rte_soc.h
>>>
>>> diff --git a/app/test/Makefile b/app/test/Makefile
>>
>> [...]
>>
>>> +++ b/lib/librte_eal/common/include/rte_soc.h
>>> @@ -0,0 +1,138 @@
>>
>> [...]
>>
>>> +
>>> +#include <stdio.h>
>>> +#include <stdlib.h>
>>> +#include <stdint.h>
>>> +#include <inttypes.h>
>>> +#include <string.h>
>>> +
>>> +#include <rte_dev.h>
>>> +#include <rte_debug.h>
>>> +
>>> +struct rte_soc_id {
>>> +    const char *compatible; /**< OF compatible specification */
>>> +    uint64_t priv_data;     /**< SoC Driver specific data */
>>
>> Do you expect this to be a pointer?
>
> A 64 bit entry, which can be typecasted to pointer by implementations,
> if required. Or, it might as well remain as a 64bit entry as ID.
>
>>
>>> +};
>>> +
>>
>> [...]
>>
>>> +
>>> +/**
>>> + * Initialization function for the driver called during SoC probing.
>>> + */
>>> +typedef int (soc_devinit_t)(struct rte_soc_driver *, struct
>>> rte_soc_device *);
>>> +
>>> +/**
>>> + * Uninitialization function for the driver called during hotplugging.
>>> + */
>>> +typedef int (soc_devuninit_t)(struct rte_soc_device *);
>>> +
>>> +/**
>>> + * A structure describing a SoC driver.
>>> + */
>>> +struct rte_soc_driver {
>>> +    TAILQ_ENTRY(rte_soc_driver) next;  /**< Next in list */
>>> +    struct rte_driver driver;          /**< Inherit core driver. */
>>> +    soc_devinit_t *devinit;            /**< Device initialization */
>>> +    soc_devuninit_t *devuninit;        /**< Device uninitialization */
>>
>> Shouldn't those functions be named probe/remove?
>
> Indeed. I think there was a comment on v4 as well - I thought I had
> fixed it but it seems I have mixed up my patches. I will send v6
> immediately with this fixed. Thanks for pointing out.

Ah, I just noticed that I did change it - but in Patch 11. Ideally, it 
should have been done here itself. My bad.

>
>>
>>> +    const struct rte_soc_id *id_table; /**< ID table, NULL
>>> terminated */
>>> +};
>>> +
>>
>> [...]
>>
>>> +#endif
>>
>>
>>
>
> -
> Shreyansh
>

-
Shreyansh


More information about the dev mailing list