I've included this topic in today's ARCH call.
On Wed, Dec 7, 2016 at 6:09 AM, Savolainen, Petri (Nokia - FI/Espoo) <petri.savolai...@nokia-bell-labs.com> wrote: > DDF may be part of some implementations, but it's not compulsory. So, DFF > must be able utilize dev API, but dev API does not depend on DDF. Dev API > needs to provide freedom of implementation. > > Weather a device is behind PCI or not (or if SFP is used or not) is far > beyond the API level. Application may ask to open "eth0" or > "eth10g_backplane", which is the name of an Ethernet port on the blade (on > the system). Implementation knows which driver to use for that interface > (from system configuration, etc), application does not need to know about > drivers or other implementation details of the interface. > > -Petri > > > From: Francois Ozog [mailto:francois.o...@linaro.org] > Sent: Wednesday, December 07, 2016 1:34 PM > To: Savolainen, Petri (Nokia - FI/Espoo) > <petri.savolai...@nokia-bell-labs.com> > Cc: Bill Fischofer <bill.fischo...@linaro.org>; lng-odp-forward > <lng-odp@lists.linaro.org>; Christophe Milard <christophe.mil...@linaro.org> > Subject: Re: [lng-odp] [API-NEXT PATCHv3 1/3] api: dev: add device apis for > numa support > > Well, we need to formalize the scope and it looks like this is part of the > Device and Driver Framework (DDF) that Christophe works on. > > I have asked Christophe to create a document complementing the patches it > pushed so that we have a human readable reference on what the DDF does and > the general mechanics of it. > > For instance the DDF can build a "physical" view of things through the > various device enumerators (from DT to DPAA2 including ACPi, PCI, virtual, > static...). But applications should not care about that. They may care of a > "functional representation" derived from that hardware aspect. For instance > controlling SFP aspects of a port may require controlling a specific PCI > device ID while the port itself is under the control of another PCI device ID. > Additional information can be found here: > https://docs.google.com/a/linaro.org/presentation/d/1Ecb9-jA_7jbXtgMVImiTePzpOJsa6IldZMeFdjG8ypQ/edit?usp=sharing > > So until we know how (or even if) the proposed API fits in a functional > framework (how it is used by what - application, odp internal, drivers > only...) this is premature to introduce it. > > FF > > > On 7 December 2016 at 12:13, Savolainen, Petri (Nokia - FI/Espoo) > <petri.savolai...@nokia-bell-labs.com> wrote: > I know device trees and how ugly those can be …. values are not documented > but you (your driver) just have to know what some list of four integers (reg > = <4, 78865, 6, 565>) may actually mean… > > Anyway, the idea here is that > • an implementation has a way to enumerate resources to the user as > names > o a name may come from a standard or system specific tool (ifconfig), a > configuration file (even device trees), etc. API does not dictate how user > gets a resource name, or which kind of string that name is. > • User passes the name to the application (through command line, > config file, env variable). API don’t dictate how that happens. > • Application passes the name to the implementation and gets a device > ID (odp_dev_t), which it uses as a parameter on other calls > > Resource discovery/enumeration/management/etc is left to upper layer. API is > only needed for passing resource identifier information down to the > implementation. And this is how it should be: ODP is a passive library which > does what it’s told to do, the active role is on upper layers (user, scripts, > resource management SW, etc entity). > > So, no need to defer the API since it’s flexible enough (to pass any kind of > string down to implementation). Driver, cloud, etc frameworks may then > specify the dev name string format, etc later on, but it would not change the > API if a timer is called “timer0” or “timer0:2” or “/proc/soc/0/timer/1” or > something else. > > -Petri > > > > From: Francois Ozog [mailto:francois.o...@linaro.org] > Sent: Tuesday, December 06, 2016 5:10 PM > To: Bill Fischofer <bill.fischo...@linaro.org> > Cc: lng-odp-forward <lng-odp@lists.linaro.org>; Savolainen, Petri (Nokia - > FI/Espoo) <petri.savolai...@nokia-bell-labs.com>; Christophe Milard > <christophe.mil...@linaro.org> > Subject: Re: [lng-odp] [API-NEXT PATCHv3 1/3] api: dev: add device apis for > numa support > > For the link, I think it ate the .... following it. > Here it is without decoration: > http://free-electrons.com/pub/conferences/2013/elce/petazzoni-device-tree-dummies/petazzoni-device-tree-dummies.pdf > > > > On 6 December 2016 at 16:05, Francois Ozog <francois.o...@linaro.org> wrote: > OK. So let's defer the API but not the discussion. > I think we need a "strategic architecture" call. > > FF > > > > On 6 December 2016 at 15:59, Bill Fischofer <bill.fischo...@linaro.org> wrote: > I have no problem deferring this if we want to have one of the SoC vendors > drive a more comprehensive approach based on their capabilities which can > then be generalized. BTW, your link doesn't resolve. Typo somewhere? > > On Tue, Dec 6, 2016 at 8:47 AM, Francois Ozog <francois.o...@linaro.org> > wrote: > Devicetree has been formed by and for SoC vendors to represent what they have > on their platforms (CPUs, Memory, interconnects, IOMMUs, ports, IRQ lines, > firmware - > http://free-electrons.com/pub/conferences/2013/elce/petazzoni-device-tree-dummies/petazzoni-device-tree-dummies.pdf)..... > so it looks like very similar to what Petri is talking about. > > ACPI has also a concept of a proximity domains and the relative cost to use a > resource from another domain. > > Handling NUMA requires a well thought through approach because it has > implications at many levels in particular for device and driver framework. > > Bottom line, regardless if it's value, the introduction of the API seem too > early as I haven't seen the use case that it supports and in particular the > device and drivers framework. > > FF > > > > > > > On 6 December 2016 at 14:23, Bill Fischofer <bill.fischo...@linaro.org> wrote: > > > On Tue, Dec 6, 2016 at 5:03 AM, Francois Ozog <francois.o...@linaro.org> > wrote: > Hi Bill, > > could you clarify if this "device" is related to devicetree as defined by > Linaro (https://github.com/devicetree-org/devicetree-specification) or the > devices that are in the scope of Christophe Millard, or some other device > concept ? > > This is the Device ID proposal that Petri suggested at BKK16. It is not > related to devtree or any other specific taxonomy as the idea was to > establish an abstract "device" framework that would support both individual > sockets or multi-SoC environments. In odp-linux these are basically > placeholder functions as we don't have any cross-platform concept of NUMA. > The idea is that each individual platform that does support NUMA should be > able to map their native concepts into this framework to permit applications > to associate an internal odp_dev_t handle with named devices. > > > FF > > > > On 6 December 2016 at 04:43, Bill Fischofer <bill.fischo...@linaro.org> wrote: > Ping. v3 of this patch is still awaiting review. > > On Mon, Oct 24, 2016 at 4:29 PM, Bill Fischofer > <bill.fischo...@linaro.org> wrote: >> Add the odp_dev_id() API used for NUMA support >> >> Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org> >> --- >> Changes for v3: >> - Correct ODP_DEV_ANY to ODP_DEV_DEFAULT >> >> Changes for v2: >> - Incorporate changes suggested by Petri >> >> include/odp/api/spec/dev.h | 89 >> ++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 89 insertions(+) >> create mode 100644 include/odp/api/spec/dev.h >> >> diff --git a/include/odp/api/spec/dev.h b/include/odp/api/spec/dev.h >> new file mode 100644 >> index 0000000..76d861a >> --- /dev/null >> +++ b/include/odp/api/spec/dev.h >> @@ -0,0 +1,89 @@ >> +/* Copyright (c) 2016, Linaro Limited >> + * All rights reserved. >> + * >> + * SPDX-License-Identifier: BSD-3-Clause >> + */ >> + >> +/** >> + * @file >> + * >> + * ODP device >> + */ >> + >> +#ifndef ODP_API_DEV_H_ >> +#define ODP_API_DEV_H_ >> +#include <odp/visibility_begin.h> >> + >> +#ifdef __cplusplus >> +extern "C" { >> +#endif >> + >> +#include <odp/api/std_types.h> >> + >> +/** @defgroup odp_dev ODP DEVICE >> + * Operations on devices >> + * @{ >> + */ >> + >> +/** >> + * @typedef odp_dev_t >> + * ODP Device >> + */ >> + >> +/** >> + * @def ODP_DEV_NAME_LEN >> + * Maximum device name length in chars >> + */ >> + >> +/** >> + * @def ODP_DEV_DEFAULT >> + * Default device >> + */ >> + >> +/** >> + * @def ODP_DEV_INVALID >> + * Invalid device >> + */ >> + >> +/** >> + * Get Device ID by Name >> + * >> + * Get an implementation-defined device identifier from a device name. >> Device >> + * names are supplied as parameter info (command line, file, etc.) to the >> + * application. This routine translates this symbolic name into an internal >> + * identifier that can be used to define a device connection hierarchy for >> + * NUMA or other purposes. >> + * >> + * The reserved id ODP_DEV_DEFAULT may be used as a "don't care" placeholder >> + * wherever a device id is required. >> + * >> + * @param name Name of the device >> + * >> + * @return Device ID >> + * @retval ODP_DEV_INVALID Device is unknown >> + */ >> +odp_dev_t odp_dev_id(const char *name); >> + >> +/** >> + * Get printable value for an odp_dev_t >> + * >> + * @param hdl odp_dev_t handle to be printed >> + * @return uint64_t value that can be used to print/display this >> + * handle >> + * >> + * @note This routine is intended to be used for diagnostic purposes >> + * to enable applications to generate a printable value that represents >> + * an odp_dev_t handle. >> + */ >> +uint64_t odp_dev_to_u64(odp_dev_t hdl); >> + >> +/** >> + * @} >> + */ >> + >> +#ifdef __cplusplus >> +} >> +#endif >> + >> +#include <odp/visibility_end.h> >> +#endif >> -- >> 2.7.4 >> > > > > > -- > > François-Frédéric Ozog | Director Linaro Networking Group > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > > > > > > > > -- > > François-Frédéric Ozog | Director Linaro Networking Group > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > > > > > > > > -- > > François-Frédéric Ozog | Director Linaro Networking Group > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > > > > > > > -- > > François-Frédéric Ozog | Director Linaro Networking Group > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > > > > > > > -- > > François-Frédéric Ozog | Director Linaro Networking Group > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > >