Le ven. 27 oct. 2017 à 23:54, Francois Ozog <francois.o...@linaro.org> a écrit :
> Le ven. 27 oct. 2017 à 23:51, Bill Fischofer <bill.fischo...@linaro.org> > a écrit : > >> On Fri, Oct 27, 2017 at 4:24 PM, Francois Ozog <francois.o...@linaro.org> >> wrote: >> >>> >>> Le ven. 27 oct. 2017 à 23:05, Honnappa Nagarahalli < >>> honnappa.nagaraha...@linaro.org> a écrit : >>> >>>> On 27 October 2017 at 13:35, Bill Fischofer <bill.fischo...@linaro.org> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Fri, Oct 27, 2017 at 10:45 AM, Francois Ozog < >>>>> francois.o...@linaro.org> wrote: >>>>> >>>>>> >>>>>> Le ven. 27 oct. 2017 à 17:17, Bill Fischofer < >>>>>> bill.fischo...@linaro.org> a écrit : >>>>>> >>>>>>> The problem with scanning, especially in a VNF environment, is that >>>>>>> (a) the application probably isn't authorized to to that >>>>>>> >>>>>> >>>>>> nothing prevents scanning what is available for n the vm. "Scale up" >>>>>> Events are triggered when increasing resources (memory cpus Ethernet >>>>>> ports...) >>>>>> >>>>>> and (b) the application certainly doesn't have real visibility into >>>>>>> what the actual device topology is. >>>>>>> >>>>>> >>>>>> Qemu allows to select if the VM has visibility of a real nuns >>>>>> topology or a virtua one >>>>>> >>>>> >>>>> Qemu may itself be running under a hypervisor and have limited >>>>> visibility as to the real HW configuration. The whole point of >>>>> virtualization/containerization is to limit what the VM/application can >>>>> see >>>>> and do to provide management controls over isolation and portability. >>>>> >>>> >>>> In this case, the 'platform' refers to what is available in the VM. >>>> There is no need to know what is available in the underlying hardware. >>>> >>> >>> Yes. That said there is a corner case with FPGA. When à VM loads a >>> bitstream to an FPGA slice , it is expected that a new PCI device to deal >>> with the configured FPGA is dynamically passed to the VM. The VM needs to >>> know the underlying FPGA chip to load the proper bitstream (altera Xilinx >>> microsemi...). >>> >> >> In that case either the VM has access to the "unconfigured" FPGA (which >> is still capable of identifying itself while unconfigured) and writes this >> directly, or else this is done at the host level and the result is made >> available to the VM. >> > > Nope. The idea is to have a generic interface with virtio to load > bitstreams. This was specified by altera . One of the concerns was to > enhance security and the availability of Sriov on existing chips. > What i just wrote is not precise. The fpga slice does not have an sriov bitstream loader. There souls be a need to virtualize the bitstream loader and provide an sriov interface to it. In any case they thought the easiest and simplest (to secure ) was the virtio route > > >> >> >>> >>>>> >>>>>> >>>>>> It only knows what it "needs to know" (as determined by higher-level >>>>>>> functions) so there's no point trying to second-guess that. Applications >>>>>>> will be told "use these devices" and that should be our design >>>>>>> assumption >>>>>>> in this support. >>>>>>> >>>>>> >>>>>> Vnf manager will know precisely the host vision of things (use this >>>>>> vhostuser interface) but don't don't know how it may end up being named >>>>>> in >>>>>> guest . This is a key problem that has been identified by British >>>>>> telecom . >>>>>> >>>>> >>>>> Sounds like we should follow whatever recommended solution OPNFV comes >>>>> up with in this area. In any event, that solution will be outside of ODP >>>>> and would still result in the application being told what devices to use >>>>> with names that are meaningful in the environment it's running in. >>>>> >>>>> >>>>>> >>>>>>> On Fri, Oct 27, 2017 at 10:10 AM, Honnappa Nagarahalli < >>>>>>> honnappa.nagaraha...@linaro.org> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 27 October 2017 at 09:50, Bill Fischofer < >>>>>>>> bill.fischo...@linaro.org> wrote: >>>>>>>> >>>>>>>>> ODP 2.0 assumes Linux system services are available so the >>>>>>>>> question of how to operate in bare metal environments is a separate >>>>>>>>> one and >>>>>>>>> up to those ODP implementations. Again the application will provide a >>>>>>>>> sufficiently-qualified device name string to identify which device it >>>>>>>>> wants >>>>>>>>> to open in an unambiguous manner. How it does that is again outside >>>>>>>>> the >>>>>>>>> scope of ODP so this isn't something we need to worry about. All ODP >>>>>>>>> needs >>>>>>>>> to do is be able to identify which driver needs to be loaded and >>>>>>>>> passed the >>>>>>>>> rest of the device name and then that driver handles the rest. >>>>>>>>> >>>>>>>>> By baremetal, I meant host with Linux OS. >>>>>>>> I agree, it is applications responsibility to provide the device >>>>>>>> string, how it does that is outside the scope of ODP. >>>>>>>> We will continue the discussion on the slides. But, in the >>>>>>>> meanwhile, I am thinking of possible design if we want to avoid >>>>>>>> complete >>>>>>>> scanning of the platform during initialization. In the current packet >>>>>>>> I/O >>>>>>>> framework, all the function pointers of the driver are known before >>>>>>>> odp_pktio_open API is called. If we have to stick to this design, the >>>>>>>> drivers for the PCI device should have registered their functions with >>>>>>>> the >>>>>>>> packet IO framework before odp_pktio_open is called. >>>>>>>> >>>>>>>> >>>>>>>>> On Fri, Oct 27, 2017 at 2:36 AM, Francois Ozog < >>>>>>>>> francois.o...@linaro.org> wrote: >>>>>>>>> >>>>>>>>>> Well, we do not need to scan all the platform because the >>>>>>>>>> pktio_open contains enough information to target the right device. >>>>>>>>>> This is almost true as we need to have an additional "selector" >>>>>>>>>> for the port on multiport NICs that are controlled by a single pci >>>>>>>>>> ID. >>>>>>>>>> <enumerator>:<enumerator specific string>:<port> or something >>>>>>>>>> like that. >>>>>>>>>> >>>>>>>>>> All ports may not be typically handled by ODP. For instance >>>>>>>>>> management network will most certainly be a native Linux one. >>>>>>>>>> >>>>>>>>>> Dpaa2 bus may impose us to full scan if we have to go the full >>>>>>>>>> driver route (vfio-pci) but this will not be necessary if we can >>>>>>>>>> have the >>>>>>>>>> net-mdev. In that case, the dpaa2 bus can be handled the same way as >>>>>>>>>> pci. >>>>>>>>>> >>>>>>>>>> Dynamic bus events (hot plug) are a nice to have and may be >>>>>>>>>> dropped from coding yet we can talk about it. and when it come to >>>>>>>>>> this, >>>>>>>>>> this is not about dealing with the bus controllers directly but >>>>>>>>>> tapping >>>>>>>>>> into Linux event framework. >>>>>>>>>> >>>>>>>>>> I know we can simplify things and I am very flexible in what we >>>>>>>>>> can decide not to do. That said I have been dealing with operational >>>>>>>>>> issues >>>>>>>>>> on that very topic since 2006 when I designed my first kernel based >>>>>>>>>> fast >>>>>>>>>> packet IO.... So there will be topics where I'll push hard to >>>>>>>>>> explain (not >>>>>>>>>> impose) why we should go a harder route. This slows things down but >>>>>>>>>> I think >>>>>>>>>> this is worth it. >>>>>>>>>> >>>>>>>>>> FF >>>>>>>>>> >>>>>>>>>> Le ven. 27 oct. 2017 à 06:23, Honnappa Nagarahalli < >>>>>>>>>> honnappa.nagaraha...@linaro.org> a écrit : >>>>>>>>>> >>>>>>>>>>> On 26 October 2017 at 16:34, Bill Fischofer < >>>>>>>>>>> bill.fischo...@linaro.org> wrote: >>>>>>>>>>> > I agree with Maxim. Best to get one or two working drivers and >>>>>>>>>>> see what else >>>>>>>>>>> > is needed. The intent here is not for ODP to become another >>>>>>>>>>> OS, so I'm not >>>>>>>>>>> > sure why we need to concern ourselves with bus walking and >>>>>>>>>>> similar arcana. >>>>>>>>>>> > Linux has already long solved this problem. We should leverage >>>>>>>>>>> what's there, >>>>>>>>>>> > not try to reinvent it. >>>>>>>>>>> > >>>>>>>>>>> > ODP applications are told what I/O interfaces to use, either >>>>>>>>>>> through an >>>>>>>>>>> > application configuration file, command line, or other means >>>>>>>>>>> outside the >>>>>>>>>>> > scope of ODP itself. ODP's job is simply to connect >>>>>>>>>>> applications to these >>>>>>>>>>> > configured I/O interfaces when they call odp_pktio_open(). The >>>>>>>>>>> name used for >>>>>>>>>>> > interfaces is simply a string that we've defined to have the >>>>>>>>>>> format: >>>>>>>>>>> > >>>>>>>>>>> > class: device: other-info-needed-by-driver >>>>>>>>>>> > >>>>>>>>>>> > We've defined a number of classes already: >>>>>>>>>>> > >>>>>>>>>>> > - loop >>>>>>>>>>> > - pcap >>>>>>>>>>> > - ipc >>>>>>>>>>> > - dpdk >>>>>>>>>>> > - socket >>>>>>>>>>> > - socket_mmap >>>>>>>>>>> > - tap >>>>>>>>>>> > etc. >>>>>>>>>>> > >>>>>>>>>>> > We simply need to define new classes (e.g., ddf, mdev) and the >>>>>>>>>>> names they >>>>>>>>>>> > need to take to identify a specific device and the associated >>>>>>>>>>> driver to use >>>>>>>>>>> > for operate that device. The driver is then loaded if >>>>>>>>>>> necessary and its >>>>>>>>>>> > open() interface is called. >>>>>>>>>>> > >>>>>>>>>>> >>>>>>>>>>> Coincidentally, internally we were discussing this exactly. >>>>>>>>>>> >>>>>>>>>>> Why do we need to scan and understand the complete platform >>>>>>>>>>> during >>>>>>>>>>> initialization? - I would think, mostly, ODP will run in a >>>>>>>>>>> platform >>>>>>>>>>> (baremetal, VM, container) where all the devices are supposed to >>>>>>>>>>> be >>>>>>>>>>> used by ODP (i.e. ODP will not run in a platform where it will >>>>>>>>>>> share >>>>>>>>>>> the platform with other applications). So why not scan and >>>>>>>>>>> identify >>>>>>>>>>> the devices/drivers and create the packet IO ops during >>>>>>>>>>> initialization. The packet I/O framework assumes that various >>>>>>>>>>> methods >>>>>>>>>>> (open, close, send, recv etc) of the device driver are known when >>>>>>>>>>> odp_pktio_open API is called. None of that has to change. >>>>>>>>>>> >>>>>>>>>>> Another solution I can think of is (tweak to reduce the time >>>>>>>>>>> spent in >>>>>>>>>>> scanning etc), instead of scanning all the devices, DDF >>>>>>>>>>> initialization >>>>>>>>>>> function can be provided with all the ports the user has >>>>>>>>>>> requested. >>>>>>>>>>> >>>>>>>>>>> If the scanning for the device and identifying the driver has to >>>>>>>>>>> be >>>>>>>>>>> triggered through the odp_pktio_open API, the current packet IO >>>>>>>>>>> framework needs to change. >>>>>>>>>>> >>>>>>>>>>> > On Thu, Oct 26, 2017 at 3:59 PM, Maxim Uvarov < >>>>>>>>>>> maxim.uva...@linaro.org> >>>>>>>>>>> > wrote: >>>>>>>>>>> >> >>>>>>>>>>> >> Hello Honnappa, >>>>>>>>>>> >> >>>>>>>>>>> >> I think we also need to take a look from bottom. I.e. from >>>>>>>>>>> exact drivers >>>>>>>>>>> >> to >>>>>>>>>>> >> implement. That it will be more clear which interface is >>>>>>>>>>> needed to be >>>>>>>>>>> >> created. >>>>>>>>>>> >> Do you have some list of drivers which needed to be >>>>>>>>>>> implemented? I.e. with >>>>>>>>>>> >> pci drivers I think we in a good way, but non pci drivers are >>>>>>>>>>> under >>>>>>>>>>> >> question. >>>>>>>>>>> >> I think we should not over-complicate odp itself with huge >>>>>>>>>>> discovery and >>>>>>>>>>> >> numeration of devices. Let's take a look what is the minimal >>>>>>>>>>> interface to >>>>>>>>>>> >> support >>>>>>>>>>> >> devices. >>>>>>>>>>> >> >>>>>>>>>>> >> Best regards, >>>>>>>>>>> >> Maxim. >>>>>>>>>>> >> >>>>>>>>>>> >> On 26 October 2017 at 23:35, Honnappa Nagarahalli < >>>>>>>>>>> >> honnappa.nagaraha...@linaro.org> wrote: >>>>>>>>>>> >> >>>>>>>>>>> >> > Hi, >>>>>>>>>>> >> > Agree, we have taken 2 hours and the progress has been >>>>>>>>>>> slow. But >>>>>>>>>>> >> > the discussions have been good and helpful to us at Arm. >>>>>>>>>>> The goal is >>>>>>>>>>> >> > to identify the gaps and work items. I am not sure if it >>>>>>>>>>> has been >>>>>>>>>>> >> > helpful to others, please let me know. >>>>>>>>>>> >> > >>>>>>>>>>> >> > To speed this up, I propose few options below, let me know >>>>>>>>>>> your opinion: >>>>>>>>>>> >> > >>>>>>>>>>> >> > 1) Have 2 additional (along with regular ODP 2.0) calls >>>>>>>>>>> next week - We >>>>>>>>>>> >> > can do Tuesday 7:00am and then another on Thursday 7:00am >>>>>>>>>>> (Austin, TX >>>>>>>>>>> >> > time, GMT-6, one hour before the regular ODP-2.0) >>>>>>>>>>> >> > >>>>>>>>>>> >> > 2) Resolve the pending PRs on emails >>>>>>>>>>> >> > >>>>>>>>>>> >> > 3) Discuss the DDF slides on email - Not sure how effective >>>>>>>>>>> it will be >>>>>>>>>>> >> > >>>>>>>>>>> >> > Any other solutions? >>>>>>>>>>> >> > >>>>>>>>>>> >> > Thank you, >>>>>>>>>>> >> > Honnappa >>>>>>>>>>> >> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> [image: Linaro] <http://www.linaro.org/> >>>>>>>>>> François-Frédéric Ozog | *Director Linaro Networking Group* >>>>>>>>>> T: +33.67221.6485 >>>>>>>>>> francois.o...@linaro.org | Skype: ffozog >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> -- >>>>>> [image: Linaro] <http://www.linaro.org/> >>>>>> François-Frédéric Ozog | *Director Linaro Networking Group* >>>>>> T: +33.67221.6485 >>>>>> francois.o...@linaro.org | Skype: ffozog >>>>>> >>>>>> >>>>> -- >>> [image: Linaro] <http://www.linaro.org/> >>> François-Frédéric Ozog | *Director Linaro Networking Group* >>> T: +33.67221.6485 >>> francois.o...@linaro.org | Skype: ffozog >>> >>> -- > [image: Linaro] <http://www.linaro.org/> > François-Frédéric Ozog | *Director Linaro Networking Group* > T: +33.67221.6485 > francois.o...@linaro.org | Skype: ffozog > > -- [image: Linaro] <http://www.linaro.org/> François-Frédéric Ozog | *Director Linaro Networking Group* T: +33.67221.6485 <javascript:void(0);> francois.o...@linaro.org | Skype: ffozog