[dpdk-dev] [PATCH v3 0/6] Introduce Intel FPGA BUS

Xu, Rosen rosen.xu at intel.com
Wed Apr 4 03:57:03 CEST 2018


Hi Gaetan,

> -----Original Message-----
> From: Gaëtan Rivet [mailto:gaetan.rivet at 6wind.com]
> Sent: Wednesday, March 28, 2018 21:18
> To: Xu, Rosen <rosen.xu at intel.com>
> Cc: dev at dpdk.org; Doherty, Declan <declan.doherty at intel.com>;
> Richardson, Bruce <bruce.richardson at intel.com>; shreyansh.jain at nxp.com;
> Zhang, Tianfei <tianfei.zhang at intel.com>; Wu, Hao <hao.wu at intel.com>
> Subject: Re: [PATCH v3 0/6] Introduce Intel FPGA BUS
> 
> Hi Rosen,
> 
> On Wed, Mar 28, 2018 at 05:29:50PM +0800, Rosen Xu wrote:
> > Intel FPGA BUS in DPDK
> > -------------------------
> >
> > This patch set introduces Intel FPGA BUS support in DPDK.
> >
> > v3 updates:
> > ===========
> >  - Remove all modifications of bus scan and probe
> >  - FPGA BUS Scan is trigged by hotplug of Rawdev
> >  - Took Modifications of comments
> >  - Move AFU Device to IFPGA
> >  - FPGA BUS Scan depend on it¡¯s IFPGA Rawdev
> >  - Add Build Macros for FPGA BUS and IFPGA Rawdev
> >
> > Questions
> > =========
> > Why not PCI Bus?
> > All of the AFUs of one FPGA may share same PCI BDF.
> > Why not vdev Bus?
> > Because AFUs depend on Rawdev, and it's hardware specpic.
> >
> > Motivation
> > ==========
> > FPGA is used more and more widely in Cloud and NFV, one primary reason
> > is that FPGA not only provide ASIC performance but also it's more
> > flexible than ASIC. FPGA use Partial Reconfigure(PR) Parts of
> > Bitstream to achieve its flexibility. Another reason is that one FPGA
> > can be shared by different Users, and each User can use some of AFUs of
> One FPGA.
> >
> > That means One FPGA Device Bitstream is divided into many Parts of
> > Bitstream(each Part of Bitstream is defined as AFU-Accelerated
> > Function Unit), and each AFU is a Hardware Acceleration Unit and it
> > can dynamically Reload respectively.
> >
> > Proposed Solution
> > =================
> >  - Involve Rawdev to take FPGA Partial Configuration(Download/PR)
> >  - Defined FPGA-BUS for Acceleration Drivers of AFUs
> >    - FPGA PCI Scan(1st Scan) follows DPDK UIO/VFIO PCI Scan Process,
> >      probe Intel FPGA Rawdev Driver. FPGA-BUS scan is called, but AFU
> >      depend on Rawdev, so this scan doesn't trig AFU device create.
> >    - AFU Scan(2nd Scan) bind DPDK Driver to FPGA Partial-Bitstream.
> >      This scan is trigged by hotplug of IFPGA Rawdev probe, in this
> >      scan the AFUs will be created and their dirves are also probed.
> >
> > Scope
> > =====
> > The Intel FPGA BUS implementation is target towards various FPGA
> > Devices use PR to provide many Acceleration Function. Specific PMDs
> > may also bind to its AFU. And Applications don't care they are using
> > ASIC Acceleration or FPGA AFU Acceleration.
> >
> >
> > Status
> > =====
> > With integrating Intel PSG FPGA Software Stack OPAE(Open Programmable
> > Acceleration Engine) Share Code, Intel FPGA BUS runs well in Intel PSG
> > FPGA Cards.
> >
> 
> Which compiler did you use and in which version? With GCC 6.3 I got these
> errors:
> 
> == Build drivers/raw/ifpga_rawdev
>   CC skeleton_rawdev.o
>   CC skeleton_rawdev_test.o
>   CC ifpga_api.o
>   CC ifpga_enumerate.o
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_enumera
> te.c: In function ‘parse_feature_afus’:
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_enumera
> te.c:334:3: error: this ‘if’ clause does not guard... [-Werror=misleading-
> indentation]
>    if (feature_is_UAFU(binfo))
>    ^~
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_enumera
> te.c:336:4: note: ...this statement, but the latter is misleadinglyindented as if
> it is guarded by the ‘if’
>     if (ret)
>     ^~
>   CC ifpga_feature_dev.o
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_feature_
> dev.c: In function ‘port_hw_init’:
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_feature_
> dev.c:272:3: error: this ‘if’ clause does not guard... [-Werror=misleading-
> indentation]
>    if (feature->ops && feature->ops->init)
>    ^~
> /home/rivet/dev/dpdk.org/drivers/raw/ifpga_rawdev/base/ifpga_feature_
> dev.c:274:4: note: ...this statement, but the latter is misleadingly indented as
> if it is guarded by the ‘if’
>     if (ret) {
>     ^~
> cc1: all warnings being treated as errors

For PATCH v4, we have fixed it, and try it by GCC 6.4, is it ok in your server?

> --
> Gaëtan Rivet
> 6WIND


More information about the dev mailing list