mbox series

[v1,0/4] add Intel DCF PMD support

Message ID 20200309141437.11800-1-haiyue.wang@intel.com (mailing list archive)
Headers
Series add Intel DCF PMD support |

Message

Wang, Haiyue March 9, 2020, 2:14 p.m. UTC
  A DCF (Device Config Function) based approach is proposed where a device
bound to the device's VF0 can act as a sole controlling entity to exercise
advance functionality (such as switch, ACL) for rest of the VFs.

The DCF works as a standalone PMD to support this function, which shares the
ice PMD flow control core function and the iavf virtchnl mailbox core module.

This patchset is based on:
[1] https://patchwork.dpdk.org/cover/66417/ update ice base code

And it needs the coming iavf common lib update to compile, the modified
ice flow function to work.

Haiyue Wang (4):
  net/iavf: stop the PCI probe in DCF mode
  net/ice: export the DDP definition symbols
  net/ice: add the DCF framework
  doc: add release notes for Intel ice PMD

 doc/guides/nics/ice.rst                |  47 ++
 doc/guides/nics/img/ice_dcf.png        | Bin 0 -> 39168 bytes
 doc/guides/rel_notes/release_20_05.rst |   5 +
 drivers/common/Makefile                |   1 +
 drivers/net/iavf/iavf_ethdev.c         |  41 ++
 drivers/net/ice/Makefile               |   6 +
 drivers/net/ice/ice_dcf.c              | 651 +++++++++++++++++++++++++
 drivers/net/ice/ice_dcf.h              |  61 +++
 drivers/net/ice/ice_dcf_ethdev.c       | 319 ++++++++++++
 drivers/net/ice/ice_dcf_ethdev.h       |  33 ++
 drivers/net/ice/ice_dcf_parent.c       | 348 +++++++++++++
 drivers/net/ice/ice_ethdev.c           |   9 +-
 drivers/net/ice/ice_ethdev.h           |   8 +
 drivers/net/ice/meson.build            |   8 +-
 mk/rte.app.mk                          |   1 +
 15 files changed, 1528 insertions(+), 10 deletions(-)
 create mode 100644 doc/guides/nics/img/ice_dcf.png
 create mode 100644 drivers/net/ice/ice_dcf.c
 create mode 100644 drivers/net/ice/ice_dcf.h
 create mode 100644 drivers/net/ice/ice_dcf_ethdev.c
 create mode 100644 drivers/net/ice/ice_dcf_ethdev.h
 create mode 100644 drivers/net/ice/ice_dcf_parent.c
  

Comments

David Marchand March 9, 2020, 3:36 p.m. UTC | #1
On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>
> A DCF (Device Config Function) based approach is proposed where a device
> bound to the device's VF0 can act as a sole controlling entity to exercise
> advance functionality (such as switch, ACL) for rest of the VFs.
>
> The DCF works as a standalone PMD to support this function, which shares the
> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>
> This patchset is based on:
> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code

The problem is that the CI(s) won't handle this.
Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907

Maybe we could add something as an annotation to the cover letter or
the first patch of a series so that the CI(s) can detect and try to be
intelligent?
  
Xiaolong Ye March 9, 2020, 4:20 p.m. UTC | #2
Hi, David

On 03/09, David Marchand wrote:
>On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>>
>> A DCF (Device Config Function) based approach is proposed where a device
>> bound to the device's VF0 can act as a sole controlling entity to exercise
>> advance functionality (such as switch, ACL) for rest of the VFs.
>>
>> The DCF works as a standalone PMD to support this function, which shares the
>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>>
>> This patchset is based on:
>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
>
>The problem is that the CI(s) won't handle this.
>Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
>
>Maybe we could add something as an annotation to the cover letter or
>the first patch of a series so that the CI(s) can detect and try to be
>intelligent?

Agree, It'd be helpful if the cover letter of the first patch contains some
base tree info including the base commit and dependency patchset info (if any), 
so the CI can determine the correct base on top of which the developer's
patchset applies to avoid any apply issue and potential false positive. 

And I know there is one option '--base'' of `git format-patch` which is
dedicated for this kind of usage, it can help create the base tree info block
which can be easily consumed by the CI. Here is the simple intro of it.

Imagine that on top of the public commit P (already in upstream), the developer
applied well-known (on-flight, in the mailing list but not merged yet) patches
X, Y and Z from somebody else or himself, and then built his three-patch series
A, B, C, the commit history would be like:

................................................
---P---X---Y---Z---A---B---C
................................................

With `git format-patch --base=P -3 C`,

where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
--base=auto for convenience, the base tree information block will be shown at
the end of the first message the command outputs (either the first patch, or
the cover letter), like this:

------------
base-commit: P
prerequisite-patch-id: X
prerequisite-patch-id: Y
prerequisite-patch-id: Z
------------

Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.


With this info in place, I think CI should be able to setup the exact base for
the coming patchset, the missing part I can see is the mapping of 
(in-flight patch <-> patch id), since we have all the in-flight patches in
patchwork, creating and maintaining such mapping in DB is doable, what do you
think?


Thanks,
Xiaolong

>
>
>-- 
>David Marchand
>
  
Thomas Monjalon March 9, 2020, 5:57 p.m. UTC | #3
09/03/2020 17:20, Ye Xiaolong:
> Hi, David
> 
> On 03/09, David Marchand wrote:
> >On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
> >>
> >> A DCF (Device Config Function) based approach is proposed where a device
> >> bound to the device's VF0 can act as a sole controlling entity to exercise
> >> advance functionality (such as switch, ACL) for rest of the VFs.
> >>
> >> The DCF works as a standalone PMD to support this function, which shares the
> >> ice PMD flow control core function and the iavf virtchnl mailbox core module.
> >>
> >> This patchset is based on:
> >> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
> >
> >The problem is that the CI(s) won't handle this.
> >Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
> >
> >Maybe we could add something as an annotation to the cover letter or
> >the first patch of a series so that the CI(s) can detect and try to be
> >intelligent?
> 
> Agree, It'd be helpful if the cover letter of the first patch contains some
> base tree info including the base commit and dependency patchset info (if any), 
> so the CI can determine the correct base on top of which the developer's
> patchset applies to avoid any apply issue and potential false positive. 
> 
> And I know there is one option '--base'' of `git format-patch` which is
> dedicated for this kind of usage, it can help create the base tree info block
> which can be easily consumed by the CI. Here is the simple intro of it.
> 
> Imagine that on top of the public commit P (already in upstream), the developer
> applied well-known (on-flight, in the mailing list but not merged yet) patches
> X, Y and Z from somebody else or himself, and then built his three-patch series
> A, B, C, the commit history would be like:
> 
> ................................................
> ---P---X---Y---Z---A---B---C
> ................................................
> 
> With `git format-patch --base=P -3 C`,
> 
> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
> --base=auto for convenience, the base tree information block will be shown at
> the end of the first message the command outputs (either the first patch, or
> the cover letter), like this:
> 
> ------------
> base-commit: P
> prerequisite-patch-id: X
> prerequisite-patch-id: Y
> prerequisite-patch-id: Z
> ------------
> 
> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
> 
> 
> With this info in place, I think CI should be able to setup the exact base for
> the coming patchset, the missing part I can see is the mapping of 
> (in-flight patch <-> patch id), since we have all the in-flight patches in
> patchwork, creating and maintaining such mapping in DB is doable, what do you
> think?

I think it would simpler to list dependencies as patchwork ids.
Example:
	Depends-on: series-42, patch-12345
  
Kevin Traynor March 9, 2020, 7:34 p.m. UTC | #4
On 09/03/2020 17:57, Thomas Monjalon wrote:
> 09/03/2020 17:20, Ye Xiaolong:
>> Hi, David
>>
>> On 03/09, David Marchand wrote:
>>> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>>>>
>>>> A DCF (Device Config Function) based approach is proposed where a device
>>>> bound to the device's VF0 can act as a sole controlling entity to exercise
>>>> advance functionality (such as switch, ACL) for rest of the VFs.
>>>>
>>>> The DCF works as a standalone PMD to support this function, which shares the
>>>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>>>>
>>>> This patchset is based on:
>>>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
>>>
>>> The problem is that the CI(s) won't handle this.
>>> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
>>>
>>> Maybe we could add something as an annotation to the cover letter or
>>> the first patch of a series so that the CI(s) can detect and try to be
>>> intelligent?
>>
>> Agree, It'd be helpful if the cover letter of the first patch contains some
>> base tree info including the base commit and dependency patchset info (if any), 
>> so the CI can determine the correct base on top of which the developer's
>> patchset applies to avoid any apply issue and potential false positive. 
>>
>> And I know there is one option '--base'' of `git format-patch` which is
>> dedicated for this kind of usage, it can help create the base tree info block
>> which can be easily consumed by the CI. Here is the simple intro of it.
>>
>> Imagine that on top of the public commit P (already in upstream), the developer
>> applied well-known (on-flight, in the mailing list but not merged yet) patches
>> X, Y and Z from somebody else or himself, and then built his three-patch series
>> A, B, C, the commit history would be like:
>>
>> ................................................
>> ---P---X---Y---Z---A---B---C
>> ................................................
>>
>> With `git format-patch --base=P -3 C`,
>>
>> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
>> --base=auto for convenience, the base tree information block will be shown at
>> the end of the first message the command outputs (either the first patch, or
>> the cover letter), like this:
>>
>> ------------
>> base-commit: P
>> prerequisite-patch-id: X
>> prerequisite-patch-id: Y
>> prerequisite-patch-id: Z
>> ------------
>>
>> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
>>
>>
>> With this info in place, I think CI should be able to setup the exact base for
>> the coming patchset, the missing part I can see is the mapping of 
>> (in-flight patch <-> patch id), since we have all the in-flight patches in
>> patchwork, creating and maintaining such mapping in DB is doable, what do you
>> think?
> 
> I think it would simpler to list dependencies as patchwork ids.
> Example:
> 	Depends-on: series-42, patch-12345
> 

+1. I don't think it should depend on a base-commit. If it doesn't
apply/build/work with the latest upstream code then it's a valid error.

>
  
Wang, Haiyue March 10, 2020, 2 a.m. UTC | #5
> -----Original Message-----
> From: Kevin Traynor <ktraynor@redhat.com>
> Sent: Tuesday, March 10, 2020 03:34
> To: Thomas Monjalon <thomas@monjalon.net>; David Marchand <david.marchand@redhat.com>; Ye, Xiaolong
> <xiaolong.ye@intel.com>
> Cc: Wang, Haiyue <haiyue.wang@intel.com>; dev <dev@dpdk.org>; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang,
> Qiming <qiming.yang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>;
> Aaron Conole <aconole@redhat.com>; ci@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v1 0/4] add Intel DCF PMD support
> 
> On 09/03/2020 17:57, Thomas Monjalon wrote:
> > 09/03/2020 17:20, Ye Xiaolong:
> >> Hi, David
> >>
> >> On 03/09, David Marchand wrote:
> >>> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
> >>>>
> >>>> A DCF (Device Config Function) based approach is proposed where a device
> >>>> bound to the device's VF0 can act as a sole controlling entity to exercise
> >>>> advance functionality (such as switch, ACL) for rest of the VFs.
> >>>>
> >>>> The DCF works as a standalone PMD to support this function, which shares the
> >>>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
> >>>>
> >>>> This patchset is based on:
> >>>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
> >>>
> >>> The problem is that the CI(s) won't handle this.
> >>> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
> >>>
> >>> Maybe we could add something as an annotation to the cover letter or
> >>> the first patch of a series so that the CI(s) can detect and try to be
> >>> intelligent?
> >>
> >> Agree, It'd be helpful if the cover letter of the first patch contains some
> >> base tree info including the base commit and dependency patchset info (if any),
> >> so the CI can determine the correct base on top of which the developer's
> >> patchset applies to avoid any apply issue and potential false positive.
> >>
> >> And I know there is one option '--base'' of `git format-patch` which is
> >> dedicated for this kind of usage, it can help create the base tree info block
> >> which can be easily consumed by the CI. Here is the simple intro of it.
> >>
> >> Imagine that on top of the public commit P (already in upstream), the developer
> >> applied well-known (on-flight, in the mailing list but not merged yet) patches
> >> X, Y and Z from somebody else or himself, and then built his three-patch series
> >> A, B, C, the commit history would be like:
> >>
> >> ................................................
> >> ---P---X---Y---Z---A---B---C
> >> ................................................
> >>
> >> With `git format-patch --base=P -3 C`,
> >>
> >> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
> >> --base=auto for convenience, the base tree information block will be shown at
> >> the end of the first message the command outputs (either the first patch, or
> >> the cover letter), like this:
> >>
> >> ------------
> >> base-commit: P
> >> prerequisite-patch-id: X
> >> prerequisite-patch-id: Y
> >> prerequisite-patch-id: Z
> >> ------------
> >>
> >> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
> >>
> >>
> >> With this info in place, I think CI should be able to setup the exact base for
> >> the coming patchset, the missing part I can see is the mapping of
> >> (in-flight patch <-> patch id), since we have all the in-flight patches in
> >> patchwork, creating and maintaining such mapping in DB is doable, what do you
> >> think?
> >
> > I think it would simpler to list dependencies as patchwork ids.
> > Example:
> > 	Depends-on: series-42, patch-12345
> >
> 

Just list the 'series' ? Since it can download the whole patchset with
the single link format like:

Depends-on: series-8843  --> https://patchwork.dpdk.org/series/8843/mbox/

> +1. I don't think it should depend on a base-commit. If it doesn't
> apply/build/work with the latest upstream code then it's a valid error.
> 
> >
  
Thomas Monjalon March 10, 2020, 7:48 a.m. UTC | #6
10/03/2020 03:00, Wang, Haiyue:
> > -----Original Message-----
> > From: Kevin Traynor <ktraynor@redhat.com>
> > Sent: Tuesday, March 10, 2020 03:34
> > To: Thomas Monjalon <thomas@monjalon.net>; David Marchand <david.marchand@redhat.com>; Ye, Xiaolong
> > <xiaolong.ye@intel.com>
> > Cc: Wang, Haiyue <haiyue.wang@intel.com>; dev <dev@dpdk.org>; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang,
> > Qiming <qiming.yang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>;
> > Aaron Conole <aconole@redhat.com>; ci@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
> > Subject: Re: [dpdk-dev] [PATCH v1 0/4] add Intel DCF PMD support
> > 
> > On 09/03/2020 17:57, Thomas Monjalon wrote:
> > > 09/03/2020 17:20, Ye Xiaolong:
> > >> Hi, David
> > >>
> > >> On 03/09, David Marchand wrote:
> > >>> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
> > >>>>
> > >>>> A DCF (Device Config Function) based approach is proposed where a device
> > >>>> bound to the device's VF0 can act as a sole controlling entity to exercise
> > >>>> advance functionality (such as switch, ACL) for rest of the VFs.
> > >>>>
> > >>>> The DCF works as a standalone PMD to support this function, which shares the
> > >>>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
> > >>>>
> > >>>> This patchset is based on:
> > >>>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
> > >>>
> > >>> The problem is that the CI(s) won't handle this.
> > >>> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
> > >>>
> > >>> Maybe we could add something as an annotation to the cover letter or
> > >>> the first patch of a series so that the CI(s) can detect and try to be
> > >>> intelligent?
> > >>
> > >> Agree, It'd be helpful if the cover letter of the first patch contains some
> > >> base tree info including the base commit and dependency patchset info (if any),
> > >> so the CI can determine the correct base on top of which the developer's
> > >> patchset applies to avoid any apply issue and potential false positive.
> > >>
> > >> And I know there is one option '--base'' of `git format-patch` which is
> > >> dedicated for this kind of usage, it can help create the base tree info block
> > >> which can be easily consumed by the CI. Here is the simple intro of it.
> > >>
> > >> Imagine that on top of the public commit P (already in upstream), the developer
> > >> applied well-known (on-flight, in the mailing list but not merged yet) patches
> > >> X, Y and Z from somebody else or himself, and then built his three-patch series
> > >> A, B, C, the commit history would be like:
> > >>
> > >> ................................................
> > >> ---P---X---Y---Z---A---B---C
> > >> ................................................
> > >>
> > >> With `git format-patch --base=P -3 C`,
> > >>
> > >> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
> > >> --base=auto for convenience, the base tree information block will be shown at
> > >> the end of the first message the command outputs (either the first patch, or
> > >> the cover letter), like this:
> > >>
> > >> ------------
> > >> base-commit: P
> > >> prerequisite-patch-id: X
> > >> prerequisite-patch-id: Y
> > >> prerequisite-patch-id: Z
> > >> ------------
> > >>
> > >> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
> > >>
> > >>
> > >> With this info in place, I think CI should be able to setup the exact base for
> > >> the coming patchset, the missing part I can see is the mapping of
> > >> (in-flight patch <-> patch id), since we have all the in-flight patches in
> > >> patchwork, creating and maintaining such mapping in DB is doable, what do you
> > >> think?
> > >
> > > I think it would simpler to list dependencies as patchwork ids.
> > > Example:
> > > 	Depends-on: series-42, patch-12345
> > >
> > 
> 
> Just list the 'series' ? Since it can download the whole patchset with
> the single link format like:
> 
> Depends-on: series-8843  --> https://patchwork.dpdk.org/series/8843/mbox/

Yes, I was proposing both format: series-X and patch-Y (on top of series-X).
But we probably never need to be specific about a single patch.
I think you are right, we can keep only "series-X" syntax,
and allow describing a list of series, ordered and separated with comma.
  
Ferruh Yigit March 10, 2020, 9:36 a.m. UTC | #7
On 3/10/2020 7:48 AM, Thomas Monjalon wrote:
> 10/03/2020 03:00, Wang, Haiyue:
>>> -----Original Message-----
>>> From: Kevin Traynor <ktraynor@redhat.com>
>>> Sent: Tuesday, March 10, 2020 03:34
>>> To: Thomas Monjalon <thomas@monjalon.net>; David Marchand <david.marchand@redhat.com>; Ye, Xiaolong
>>> <xiaolong.ye@intel.com>
>>> Cc: Wang, Haiyue <haiyue.wang@intel.com>; dev <dev@dpdk.org>; Zhang, Qi Z <qi.z.zhang@intel.com>; Yang,
>>> Qiming <qiming.yang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>;
>>> Aaron Conole <aconole@redhat.com>; ci@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
>>> Subject: Re: [dpdk-dev] [PATCH v1 0/4] add Intel DCF PMD support
>>>
>>> On 09/03/2020 17:57, Thomas Monjalon wrote:
>>>> 09/03/2020 17:20, Ye Xiaolong:
>>>>> Hi, David
>>>>>
>>>>> On 03/09, David Marchand wrote:
>>>>>> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>>>>>>>
>>>>>>> A DCF (Device Config Function) based approach is proposed where a device
>>>>>>> bound to the device's VF0 can act as a sole controlling entity to exercise
>>>>>>> advance functionality (such as switch, ACL) for rest of the VFs.
>>>>>>>
>>>>>>> The DCF works as a standalone PMD to support this function, which shares the
>>>>>>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>>>>>>>
>>>>>>> This patchset is based on:
>>>>>>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
>>>>>>
>>>>>> The problem is that the CI(s) won't handle this.
>>>>>> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
>>>>>>
>>>>>> Maybe we could add something as an annotation to the cover letter or
>>>>>> the first patch of a series so that the CI(s) can detect and try to be
>>>>>> intelligent?
>>>>>
>>>>> Agree, It'd be helpful if the cover letter of the first patch contains some
>>>>> base tree info including the base commit and dependency patchset info (if any),
>>>>> so the CI can determine the correct base on top of which the developer's
>>>>> patchset applies to avoid any apply issue and potential false positive.
>>>>>
>>>>> And I know there is one option '--base'' of `git format-patch` which is
>>>>> dedicated for this kind of usage, it can help create the base tree info block
>>>>> which can be easily consumed by the CI. Here is the simple intro of it.
>>>>>
>>>>> Imagine that on top of the public commit P (already in upstream), the developer
>>>>> applied well-known (on-flight, in the mailing list but not merged yet) patches
>>>>> X, Y and Z from somebody else or himself, and then built his three-patch series
>>>>> A, B, C, the commit history would be like:
>>>>>
>>>>> ................................................
>>>>> ---P---X---Y---Z---A---B---C
>>>>> ................................................
>>>>>
>>>>> With `git format-patch --base=P -3 C`,
>>>>>
>>>>> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
>>>>> --base=auto for convenience, the base tree information block will be shown at
>>>>> the end of the first message the command outputs (either the first patch, or
>>>>> the cover letter), like this:
>>>>>
>>>>> ------------
>>>>> base-commit: P
>>>>> prerequisite-patch-id: X
>>>>> prerequisite-patch-id: Y
>>>>> prerequisite-patch-id: Z
>>>>> ------------
>>>>>
>>>>> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
>>>>>
>>>>>
>>>>> With this info in place, I think CI should be able to setup the exact base for
>>>>> the coming patchset, the missing part I can see is the mapping of
>>>>> (in-flight patch <-> patch id), since we have all the in-flight patches in
>>>>> patchwork, creating and maintaining such mapping in DB is doable, what do you
>>>>> think?
>>>>
>>>> I think it would simpler to list dependencies as patchwork ids.
>>>> Example:
>>>> 	Depends-on: series-42, patch-12345
>>>>
>>>
>>
>> Just list the 'series' ? Since it can download the whole patchset with
>> the single link format like:
>>
>> Depends-on: series-8843  --> https://patchwork.dpdk.org/series/8843/mbox/
> 
> Yes, I was proposing both format: series-X and patch-Y (on top of series-X).
> But we probably never need to be specific about a single patch.
> I think you are right, we can keep only "series-X" syntax,
> and allow describing a list of series, ordered and separated with comma.
> 
+1 to "Depends-on: series-#####" syntax
  
Aaron Conole March 10, 2020, 2:09 p.m. UTC | #8
David Marchand <david.marchand@redhat.com> writes:

> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>>
>> A DCF (Device Config Function) based approach is proposed where a device
>> bound to the device's VF0 can act as a sole controlling entity to exercise
>> advance functionality (such as switch, ACL) for rest of the VFs.
>>
>> The DCF works as a standalone PMD to support this function, which shares the
>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>>
>> This patchset is based on:
>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
>
> The problem is that the CI(s) won't handle this.
> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
>
> Maybe we could add something as an annotation to the cover letter or
> the first patch of a series so that the CI(s) can detect and try to be
> intelligent?

It's something that's possibly worth doing; I can update the bot to
recognize:

  series_XXX

in the cover-letter metadata (IE: between the '[...]'), and
automatically check out the correct branch.

Additionally, if the idea is not to get the patch applied right away
while finalizing on the preceding series, the RFC keyword will prevent
the bot from running.

THAT SAID

In general, I dislike posting series that depend on other series.  It
makes review much harder, and if there's a feedback on the preceding
series that requires lots of change, the dependent series may also need
to be re-done completely.

I see there are more replies to this thread - sorry I didn't get to it
yesterday (personal stuff).
  
Aaron Conole March 10, 2020, 2:11 p.m. UTC | #9
Ferruh Yigit <ferruh.yigit@intel.com> writes:

> On 3/10/2020 7:48 AM, Thomas Monjalon wrote:
>> 10/03/2020 03:00, Wang, Haiyue:
>>>> -----Original Message-----
>>>> From: Kevin Traynor <ktraynor@redhat.com>
>>>> Sent: Tuesday, March 10, 2020 03:34
>>>> To: Thomas Monjalon <thomas@monjalon.net>; David Marchand
>>>> <david.marchand@redhat.com>; Ye, Xiaolong
>>>> <xiaolong.ye@intel.com>
>>>> Cc: Wang, Haiyue <haiyue.wang@intel.com>; dev <dev@dpdk.org>;
>>>> Zhang, Qi Z <qi.z.zhang@intel.com>; Yang,
>>>> Qiming <qiming.yang@intel.com>; Xing, Beilei
>>>> <beilei.xing@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>;
>>>> Aaron Conole <aconole@redhat.com>; ci@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
>>>> Subject: Re: [dpdk-dev] [PATCH v1 0/4] add Intel DCF PMD support
>>>>
>>>> On 09/03/2020 17:57, Thomas Monjalon wrote:
>>>>> 09/03/2020 17:20, Ye Xiaolong:
>>>>>> Hi, David
>>>>>>
>>>>>> On 03/09, David Marchand wrote:
>>>>>>> On Mon, Mar 9, 2020 at 3:22 PM Haiyue Wang <haiyue.wang@intel.com> wrote:
>>>>>>>>
>>>>>>>> A DCF (Device Config Function) based approach is proposed where a device
>>>>>>>> bound to the device's VF0 can act as a sole controlling entity to exercise
>>>>>>>> advance functionality (such as switch, ACL) for rest of the VFs.
>>>>>>>>
>>>>>>>> The DCF works as a standalone PMD to support this function, which shares the
>>>>>>>> ice PMD flow control core function and the iavf virtchnl mailbox core module.
>>>>>>>>
>>>>>>>> This patchset is based on:
>>>>>>>> [1] https://patchwork.dpdk.org/cover/66417/ update ice base code
>>>>>>>
>>>>>>> The problem is that the CI(s) won't handle this.
>>>>>>> Example for the robot: https://travis-ci.com/ovsrobot/dpdk/builds/152461907
>>>>>>>
>>>>>>> Maybe we could add something as an annotation to the cover letter or
>>>>>>> the first patch of a series so that the CI(s) can detect and try to be
>>>>>>> intelligent?
>>>>>>
>>>>>> Agree, It'd be helpful if the cover letter of the first patch contains some
>>>>>> base tree info including the base commit and dependency patchset info (if any),
>>>>>> so the CI can determine the correct base on top of which the developer's
>>>>>> patchset applies to avoid any apply issue and potential false positive.
>>>>>>
>>>>>> And I know there is one option '--base'' of `git format-patch` which is
>>>>>> dedicated for this kind of usage, it can help create the base tree info block
>>>>>> which can be easily consumed by the CI. Here is the simple intro of it.
>>>>>>
>>>>>> Imagine that on top of the public commit P (already in upstream), the developer
>>>>>> applied well-known (on-flight, in the mailing list but not merged yet) patches
>>>>>> X, Y and Z from somebody else or himself, and then built his three-patch series
>>>>>> A, B, C, the commit history would be like:
>>>>>>
>>>>>> ................................................
>>>>>> ---P---X---Y---Z---A---B---C
>>>>>> ................................................
>>>>>>
>>>>>> With `git format-patch --base=P -3 C`,
>>>>>>
>>>>>> where P could be the exact commit sha, or variants e.g. HEAD~6, we can also use
>>>>>> --base=auto for convenience, the base tree information block will be shown at
>>>>>> the end of the first message the command outputs (either the first patch, or
>>>>>> the cover letter), like this:
>>>>>>
>>>>>> ------------
>>>>>> base-commit: P
>>>>>> prerequisite-patch-id: X
>>>>>> prerequisite-patch-id: Y
>>>>>> prerequisite-patch-id: Z
>>>>>> ------------
>>>>>>
>>>>>> Here P is the commit sha, and X,Y,Z are the patch ids of the dependency patches.
>>>>>>
>>>>>>
>>>>>> With this info in place, I think CI should be able to setup the exact base for
>>>>>> the coming patchset, the missing part I can see is the mapping of
>>>>>> (in-flight patch <-> patch id), since we have all the in-flight patches in
>>>>>> patchwork, creating and maintaining such mapping in DB is doable, what do you
>>>>>> think?
>>>>>
>>>>> I think it would simpler to list dependencies as patchwork ids.
>>>>> Example:
>>>>> 	Depends-on: series-42, patch-12345
>>>>>
>>>>
>>>
>>> Just list the 'series' ? Since it can download the whole patchset with
>>> the single link format like:
>>>
>>> Depends-on: series-8843  --> https://patchwork.dpdk.org/series/8843/mbox/
>> 
>> Yes, I was proposing both format: series-X and patch-Y (on top of series-X).
>> But we probably never need to be specific about a single patch.
>> I think you are right, we can keep only "series-X" syntax,
>> and allow describing a list of series, ordered and separated with comma.
>> 
> +1 to "Depends-on: series-#####" syntax

I can do this - but I actually prefer just putting the series in the
brackets.  Metadata tags in the message will be preserved in the commit
history, but the details of which series to start with for checking out
don't really need to be preserved.  It's just a way to get the bot to
test, right?  Maybe it can help maintainers to script an auto-fetch,
too.