DPDK patches and discussions
 help / color / mirror / Atom feed
* Drivers, architectures, processor families, etc.
@ 2023-08-02 21:49 Philip Prindeville
  2023-08-02 22:47 ` Stephen Hemminger
  2023-08-14 15:31 ` Ferruh Yigit
  0 siblings, 2 replies; 9+ messages in thread
From: Philip Prindeville @ 2023-08-02 21:49 UTC (permalink / raw)
  To: dev

Hi,

I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.

Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.

Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.

Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?

Thanks,

-Philip


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-02 21:49 Drivers, architectures, processor families, etc Philip Prindeville
@ 2023-08-02 22:47 ` Stephen Hemminger
  2023-08-03  8:17   ` Bruce Richardson
  2023-08-03 16:40   ` Philip Prindeville
  2023-08-14 15:31 ` Ferruh Yigit
  1 sibling, 2 replies; 9+ messages in thread
From: Stephen Hemminger @ 2023-08-02 22:47 UTC (permalink / raw)
  To: Philip Prindeville; +Cc: dev

On Wed, 2 Aug 2023 15:49:54 -0600
Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:

> Hi,
> 
> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
> 
> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
> 
> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
> 
> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
> 
> Thanks,
> 
> -Philip
> 

DPDK now uses meson which by default builds everything available on the build architecture.
There is intentionally no way to disable drivers, you can disable some libraries though.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-02 22:47 ` Stephen Hemminger
@ 2023-08-03  8:17   ` Bruce Richardson
  2023-08-05 21:32     ` Philip Prindeville
  2023-08-03 16:40   ` Philip Prindeville
  1 sibling, 1 reply; 9+ messages in thread
From: Bruce Richardson @ 2023-08-03  8:17 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Philip Prindeville, dev

On Wed, Aug 02, 2023 at 03:47:59PM -0700, Stephen Hemminger wrote:
> On Wed, 2 Aug 2023 15:49:54 -0600
> Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:
> 
> > Hi,
> > 
> > I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
> > 
> > Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
> > 
> > Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
> > 
> > Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
> > 
> > Thanks,
> > 
> > -Philip
> > 
> 
> DPDK now uses meson which by default builds everything available on the build architecture.
> There is intentionally no way to disable drivers, you can disable some libraries though.

Actually, we do now support disabling drivers, and also only selectively
enabling specific ones. See disable_drivers and enable_drivers meson
options.

To find our different architecture support, I suggest looking in the config
directory. The subfolders there often contain cross-files for meson for
building for various architectures. For example, config/arm, contains a
number of reference files for cross-compiling for different arm platforms.

Regards,
/Bruce

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-02 22:47 ` Stephen Hemminger
  2023-08-03  8:17   ` Bruce Richardson
@ 2023-08-03 16:40   ` Philip Prindeville
  2023-08-08  8:29     ` Bruce Richardson
  1 sibling, 1 reply; 9+ messages in thread
From: Philip Prindeville @ 2023-08-03 16:40 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev



> On Aug 2, 2023, at 4:47 PM, Stephen Hemminger <stephen@networkplumber.org> wrote:
> 
> On Wed, 2 Aug 2023 15:49:54 -0600
> Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:
> 
>> Hi,
>> 
>> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
>> 
>> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
>> 
>> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
>> 
>> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
>> 
>> Thanks,
>> 
>> -Philip
>> 
> 
> DPDK now uses meson which by default builds everything available on the build architecture.
> There is intentionally no way to disable drivers, you can disable some libraries though.



The issue I'm trying to resolve is that if you're building for SoC Xyzzy that includes an on-chip NIC, then that driver should *only* ever be selectable when building for that SoC.

There's no point if generating (or packaging) combinations of platform + driver that aren't viable.

Are you suggesting that we just select the architecture, and let the available drivers fall out of that?


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-03  8:17   ` Bruce Richardson
@ 2023-08-05 21:32     ` Philip Prindeville
  2023-08-08  8:17       ` Bruce Richardson
  0 siblings, 1 reply; 9+ messages in thread
From: Philip Prindeville @ 2023-08-05 21:32 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Stephen Hemminger, dev



> On Aug 3, 2023, at 2:17 AM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Wed, Aug 02, 2023 at 03:47:59PM -0700, Stephen Hemminger wrote:
>> On Wed, 2 Aug 2023 15:49:54 -0600
>> Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:
>> 
>>> Hi,
>>> 
>>> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
>>> 
>>> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
>>> 
>>> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
>>> 
>>> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
>>> 
>>> Thanks,
>>> 
>>> -Philip
>>> 
>> 
>> DPDK now uses meson which by default builds everything available on the build architecture.
>> There is intentionally no way to disable drivers, you can disable some libraries though.
> 
> Actually, we do now support disabling drivers, and also only selectively
> enabling specific ones. See disable_drivers and enable_drivers meson
> options.
> 
> To find our different architecture support, I suggest looking in the config
> directory. The subfolders there often contain cross-files for meson for
> building for various architectures. For example, config/arm, contains a
> number of reference files for cross-compiling for different arm platforms.
> 
> Regards,
> /Bruce


Noticed also that the ARM architecture has configs, but AMD64 seems to be wide open...  just one generic config.

Is that because some chips, like Xeon-D have on-die NICs, and others like Xeon-E don't?

-Philip


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-05 21:32     ` Philip Prindeville
@ 2023-08-08  8:17       ` Bruce Richardson
  2023-08-08 16:38         ` Philip Prindeville
  0 siblings, 1 reply; 9+ messages in thread
From: Bruce Richardson @ 2023-08-08  8:17 UTC (permalink / raw)
  To: Philip Prindeville; +Cc: Stephen Hemminger, dev

On Sat, Aug 05, 2023 at 03:32:37PM -0600, Philip Prindeville wrote:
> 
> 
> > On Aug 3, 2023, at 2:17 AM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> > 
> > On Wed, Aug 02, 2023 at 03:47:59PM -0700, Stephen Hemminger wrote:
> >> On Wed, 2 Aug 2023 15:49:54 -0600
> >> Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:
> >> 
> >>> Hi,
> >>> 
> >>> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
> >>> 
> >>> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
> >>> 
> >>> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
> >>> 
> >>> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
> >>> 
> >>> Thanks,
> >>> 
> >>> -Philip
> >>> 
> >> 
> >> DPDK now uses meson which by default builds everything available on the build architecture.
> >> There is intentionally no way to disable drivers, you can disable some libraries though.
> > 
> > Actually, we do now support disabling drivers, and also only selectively
> > enabling specific ones. See disable_drivers and enable_drivers meson
> > options.
> > 
> > To find our different architecture support, I suggest looking in the config
> > directory. The subfolders there often contain cross-files for meson for
> > building for various architectures. For example, config/arm, contains a
> > number of reference files for cross-compiling for different arm platforms.
> > 
> > Regards,
> > /Bruce
> 
> 
> Noticed also that the ARM architecture has configs, but AMD64 seems to be wide open...  just one generic config.
> 
> Is that because some chips, like Xeon-D have on-die NICs, and others like Xeon-E don't?
> 

Its just that folks generally don't cross-compile for x86, and also the
fact that nobody has ever brought it up before. We have no "native-build"
files in DPDK, only cross-files for cross-compilation. However, if there is
demand for them no reason we can't store some.

/Bruce

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-03 16:40   ` Philip Prindeville
@ 2023-08-08  8:29     ` Bruce Richardson
  0 siblings, 0 replies; 9+ messages in thread
From: Bruce Richardson @ 2023-08-08  8:29 UTC (permalink / raw)
  To: Philip Prindeville; +Cc: Stephen Hemminger, dev

On Thu, Aug 03, 2023 at 10:40:47AM -0600, Philip Prindeville wrote:
> 
> 
> > On Aug 2, 2023, at 4:47 PM, Stephen Hemminger <stephen@networkplumber.org> wrote:
> > 
> > On Wed, 2 Aug 2023 15:49:54 -0600
> > Philip Prindeville <philipp_subx@redfish-solutions.com> wrote:
> > 
> >> Hi,
> >> 
> >> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
> >> 
> >> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
> >> 
> >> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
> >> 
> >> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
> >> 
> >> Thanks,
> >> 
> >> -Philip
> >> 
> > 
> > DPDK now uses meson which by default builds everything available on the build architecture.
> > There is intentionally no way to disable drivers, you can disable some libraries though.
> 
> 
> 
> The issue I'm trying to resolve is that if you're building for SoC Xyzzy that includes an on-chip NIC, then that driver should *only* ever be selectable when building for that SoC.
> 
> There's no point if generating (or packaging) combinations of platform + driver that aren't viable.
>
Actually, for development purposes there is good reason. By having e.g. NIC
drivers for ARM SoCs be built when doing an x86 build, it allows us to
catch changes that break that driver. It also allows one to do a generic
build where the one build could be used across multiple platforms.

/Bruce

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-08  8:17       ` Bruce Richardson
@ 2023-08-08 16:38         ` Philip Prindeville
  0 siblings, 0 replies; 9+ messages in thread
From: Philip Prindeville @ 2023-08-08 16:38 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: Stephen Hemminger, dev



> On Aug 8, 2023, at 2:17 AM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Sat, Aug 05, 2023 at 03:32:37PM -0600, Philip Prindeville wrote:
>> 
>> Noticed also that the ARM architecture has configs, but AMD64 seems to be wide open...  just one generic config.
>> 
>> Is that because some chips, like Xeon-D have on-die NICs, and others like Xeon-E don't?
>> 
> 
> Its just that folks generally don't cross-compile for x86, and also the
> fact that nobody has ever brought it up before. We have no "native-build"
> files in DPDK, only cross-files for cross-compilation. However, if there is
> demand for them no reason we can't store some.
> 
> /Bruce


We bought a Mac Studio (fully configured) for doing in-house CI/CD, and it was beating the pants off of any of our Xeon servers, so now we build everything either on an M2 Mac or on a Graviton EC2 instance.

Native builds are overrated. :-)

-Philip


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Drivers, architectures, processor families, etc.
  2023-08-02 21:49 Drivers, architectures, processor families, etc Philip Prindeville
  2023-08-02 22:47 ` Stephen Hemminger
@ 2023-08-14 15:31 ` Ferruh Yigit
  1 sibling, 0 replies; 9+ messages in thread
From: Ferruh Yigit @ 2023-08-14 15:31 UTC (permalink / raw)
  To: Philip Prindeville, dev; +Cc: Bruce Richardson, Stephen Hemminger

On 8/2/2023 10:49 PM, Philip Prindeville wrote:
> Hi,
> 
> I'm trying to come up with some Kconfig logic for OpenWRT packaging to help users select the right build options for their hardware.
> 
> Most OpenWRT developers typically cross-compile, so we obviously can't rely on detection on the build host as that's rarely the same as the target machine.
> 
> Looking in the DPDK repo, I don't see any description of the available architectures, drivers, etc. and what I had seen previously was (if I remember) only for x86_64 hardware, and even that I can't seem to locate again.
> 
> Would it make sense to put some of these definitions into the repo itself, so that when new drivers are added, that stands out (at least in the commit logs) and we can capture the permutations of what driver goes with which SoC on what architecture, etc?
> 

Hi Philip,

DPDK builds x86 architecture as natively, and rest (arm, ppc, riscv, ..)
as cross compile and doesn't select drivers based on architecture but
tries to build as much driver as possible.

But there is an OS based filtering, like some drivers are disabled if
the build OS is Windows or FreeBSD etc..

As most of the devices are external devices, unlike on-chip devices in
SoC, it make sense to build them into final binary.


Still there are on-chip devices, or there are combinations that some
devices can't be used in an architecture but still included, to NOT have
a finer granularity here helps DPDK binary distributions also helps
build testing.

There are meson build options to limit which driver to built in or not,
if there is a specific embedded platform target and if binary size
matters, these arguments can be used.
But we don't have a generic config or logic that can be used for OpenWRT
builds.

Thanks,
ferruh

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-08-14 15:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-02 21:49 Drivers, architectures, processor families, etc Philip Prindeville
2023-08-02 22:47 ` Stephen Hemminger
2023-08-03  8:17   ` Bruce Richardson
2023-08-05 21:32     ` Philip Prindeville
2023-08-08  8:17       ` Bruce Richardson
2023-08-08 16:38         ` Philip Prindeville
2023-08-03 16:40   ` Philip Prindeville
2023-08-08  8:29     ` Bruce Richardson
2023-08-14 15:31 ` Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).