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.



>
>
>>
>>>>
>>>>>
>>>>> 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 <javascript:void(0);>
francois.o...@linaro.org | Skype: ffozog

Reply via email to