Re: [OPAE] Main Memory Access from FPGA

Adler, Michael <michael.adler at intel.com> Thu, 07 Feb 2019 15:41:00 +0000
Newsgroups dev.linux.lists.opae
Message-ID <[email protected]>
--===============0503425511122732376==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

The CCI-P interface differentiates between MMIO (memory mapped I/O) and mai=
n memory read/write requests. MMIO is an FPGA-side address space, mainly us=
ed for implementing FPGA-side CSRs. Those CSRs are exposed in the software=
=E2=80=99s address space but actually result in PCIe transactions to the FP=
GA.

CCI-P=E2=80=99s main memory read/write requests are exactly what you are as=
king for: DMA to host main memory. The primary address space used for those=
 requests is a =E2=80=9Cphysical=E2=80=9D I/O address space that maps to ho=
st physical addresses. It is also possible to use virtual addresses on the =
FPGA that correspond to the software=E2=80=99s virtual address space. For t=
hat you can use the MPF VTP extension. See section 3 of the tutorial<https:=
//github.com/OPAE/intel-fpga-bbb/tree/master/samples/tutorial/03_ccip>.

-Michael

From: OPAE <opae-bounces(a)lists.01.org> on behalf of David Nicuesa <david.=
nicuesa.aranda(a)gmail.com>
Date: Thursday, February 7, 2019 at 9:53 AM
To: "opae(a)lists.01.org" <opae(a)lists.01.org>
Subject: [OPAE] Main Memory Access from FPGA

Hi all,

I'm getting started with the examples, specifically with the hello_world fr=
om the intel-fpga-bbb<https://github.com/OPAE/intel-fpga-bbb/tree/master/sa=
mples/tutorial/01_hello_world> repository. Everything works just fine but I=
 was wondering if it is possible for me to access the Main Memory (Not IO) =
from the FPGA using the CCI protocol.

I have an rtl to sum two vectors, so my idea was to provide the addresses f=
or those two vectors from the software application, allocated in General Pu=
rpose Memory. This way, ideally, the FPGA should be able to access those ve=
ctors without having a shared buffer (MMIO).

Is it possible to do this, maybe using some MPF extension? In case this is =
not feasible, I should allocate a shared buffer in MMIO space and then comu=
nicate the vectors through that buffer, right?

Thanks!

--===============0503425511122732376==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"

PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4
bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIiB4bWxuczptPSJo
dHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA0LzEyL29tbWwiIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPG1l
dGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSAoZmlsdGVyZWQg
bWVkaXVtKSI+DQo8c3R5bGU+PCEtLQ0KLyogRm9udCBEZWZpbml0aW9ucyAqLw0KQGZvbnQtZmFj
ZQ0KCXtmb250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2
IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToy
IDE1IDUgMiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5Okdlb3JnaWE7
DQoJcGFub3NlLTE6MiA0IDUgMiA1IDQgNSAyIDMgMzt9DQovKiBTdHlsZSBEZWZpbml0aW9ucyAq
Lw0KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbA0KCXttYXJnaW46MGlu
Ow0KCW1hcmdpbi1ib3R0b206LjAwMDFwdDsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFt
aWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7
bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVu
ZGVybGluZTt9DQphOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQNCgl7bXNvLXN0
eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOnB1cnBsZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJs
aW5lO30NCnAubXNvbm9ybWFsMCwgbGkubXNvbm9ybWFsMCwgZGl2Lm1zb25vcm1hbDANCgl7bXNv
LXN0eWxlLW5hbWU6bXNvbm9ybWFsOw0KCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOw0KCW1hcmdp
bi1yaWdodDowaW47DQoJbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87DQoJbWFyZ2luLWxlZnQ6
MGluOw0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2Vy
aWY7fQ0Kc3Bhbi5FbWFpbFN0eWxlMTgNCgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7
DQoJZm9udC1mYW1pbHk6Ikdlb3JnaWEiLHNlcmlmOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0KLk1z
b0NocERlZmF1bHQNCgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1zaXplOjEw
LjBwdDt9DQpAcGFnZSBXb3JkU2VjdGlvbjENCgl7c2l6ZTo4LjVpbiAxMS4waW47DQoJbWFyZ2lu
OjEuMGluIDEuMGluIDEuMGluIDEuMGluO30NCmRpdi5Xb3JkU2VjdGlvbjENCgl7cGFnZTpXb3Jk
U2VjdGlvbjE7fQ0KLS0+PC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5r
PSJibHVlIiB2bGluaz0icHVycGxlIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7R2VvcmdpYSZx
dW90OyxzZXJpZiI+VGhlIENDSS1QIGludGVyZmFjZSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIE1N
SU8gKG1lbW9yeSBtYXBwZWQgSS9PKSBhbmQgbWFpbiBtZW1vcnkgcmVhZC93cml0ZSByZXF1ZXN0
cy4gTU1JTyBpcyBhbiBGUEdBLXNpZGUgYWRkcmVzcyBzcGFjZSwgbWFpbmx5IHVzZWQgZm9yIGlt
cGxlbWVudGluZyBGUEdBLXNpZGUgQ1NScy4gVGhvc2UgQ1NScw0KIGFyZSBleHBvc2VkIGluIHRo
ZSBzb2Z0d2FyZeKAmXMgYWRkcmVzcyBzcGFjZSBidXQgYWN0dWFsbHkgcmVzdWx0IGluIFBDSWUg
dHJhbnNhY3Rpb25zIHRvIHRoZSBGUEdBLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtHZW9yZ2lhJnF1b3Q7
LHNlcmlmIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7R2VvcmdpYSZxdW90OyxzZXJpZiI+Q0NJ
LVDigJlzIG1haW4gbWVtb3J5IHJlYWQvd3JpdGUgcmVxdWVzdHMgYXJlIGV4YWN0bHkgd2hhdCB5
b3UgYXJlIGFza2luZyBmb3I6IERNQSB0byBob3N0IG1haW4gbWVtb3J5LiBUaGUgcHJpbWFyeSBh
ZGRyZXNzIHNwYWNlIHVzZWQgZm9yIHRob3NlIHJlcXVlc3RzIGlzIGEg4oCccGh5c2ljYWzigJ0g
SS9PIGFkZHJlc3Mgc3BhY2UgdGhhdCBtYXBzDQogdG8gaG9zdCBwaHlzaWNhbCBhZGRyZXNzZXMu
IEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIHZpcnR1YWwgYWRkcmVzc2VzIG9uIHRoZSBGUEdB
IHRoYXQgY29ycmVzcG9uZCB0byB0aGUgc29mdHdhcmXigJlzIHZpcnR1YWwgYWRkcmVzcyBzcGFj
ZS4gRm9yIHRoYXQgeW91IGNhbiB1c2UgdGhlIE1QRiBWVFAgZXh0ZW5zaW9uLiBTZWUNCjxhIGhy
ZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9PUEFFL2ludGVsLWZwZ2EtYmJiL3RyZWUvbWFzdGVyL3Nh
bXBsZXMvdHV0b3JpYWwvMDNfY2NpcCI+DQpzZWN0aW9uIDMgb2YgdGhlIHR1dG9yaWFsPC9hPi48
bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6JnF1b3Q7R2VvcmdpYSZxdW90OyxzZXJpZiI+PG86cD4mbmJzcDs8L286cD48
L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWYiPi1NaWNoYWVsPG86cD48L286cD48L3NwYW4+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0dl
b3JnaWEmcXVvdDssc2VyaWYiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXYgc3R5
bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0I1QzRERiAxLjBwdDtwYWRkaW5nOjMu
MHB0IDBpbiAwaW4gMGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNrIj5Gcm9tOiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxl
PSJmb250LXNpemU6MTIuMHB0O2NvbG9yOmJsYWNrIj5PUEFFICZsdDtvcGFlLWJvdW5jZXNAbGlz
dHMuMDEub3JnJmd0OyBvbiBiZWhhbGYgb2YgRGF2aWQgTmljdWVzYSAmbHQ7ZGF2aWQubmljdWVz
YS5hcmFuZGFAZ21haWwuY29tJmd0Ozxicj4NCjxiPkRhdGU6IDwvYj5UaHVyc2RheSwgRmVicnVh
cnkgNywgMjAxOSBhdCA5OjUzIEFNPGJyPg0KPGI+VG86IDwvYj4mcXVvdDtvcGFlQGxpc3RzLjAx
Lm9yZyZxdW90OyAmbHQ7b3BhZUBsaXN0cy4wMS5vcmcmZ3Q7PGJyPg0KPGI+U3ViamVjdDogPC9i
PltPUEFFXSBNYWluIE1lbW9yeSBBY2Nlc3MgZnJvbSBGUEdBPG86cD48L286cD48L3NwYW4+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBhbGwsIDxvOnA+PC9v
OnA+PC9wPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w
Pg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SSdtIGdldHRpbmcgc3RhcnRl
ZCB3aXRoIHRoZSBleGFtcGxlcywgc3BlY2lmaWNhbGx5IHdpdGggdGhlIGhlbGxvX3dvcmxkIGZy
b20gdGhlJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09QQUUvaW50ZWwtZnBnYS1i
YmIvdHJlZS9tYXN0ZXIvc2FtcGxlcy90dXRvcmlhbC8wMV9oZWxsb193b3JsZCI+aW50ZWwtZnBn
YS1iYmI8L2E+Jm5ic3A7cmVwb3NpdG9yeS4gRXZlcnl0aGluZyB3b3JrcyBqdXN0IGZpbmUgYnV0
DQogSSB3YXMgd29uZGVyaW5nIGlmIGl0IGlzIHBvc3NpYmxlIGZvciBtZSB0byBhY2Nlc3MgdGhl
IE1haW4gTWVtb3J5IChOb3QgSU8pIGZyb20gdGhlIEZQR0EgdXNpbmcgdGhlIENDSSBwcm90b2Nv
bC4mbmJzcDs8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v
cm1hbCI+SSBoYXZlIGFuIHJ0bCB0byBzdW0gdHdvIHZlY3RvcnMsIHNvIG15IGlkZWEgd2FzIHRv
IHByb3ZpZGUgdGhlIGFkZHJlc3NlcyBmb3IgdGhvc2UgdHdvIHZlY3RvcnMgZnJvbSB0aGUgc29m
dHdhcmUgYXBwbGljYXRpb24sIGFsbG9jYXRlZCBpbiBHZW5lcmFsIFB1cnBvc2UgTWVtb3J5LiBU
aGlzIHdheSwgaWRlYWxseSwgdGhlIEZQR0Egc2hvdWxkIGJlIGFibGUgdG8gYWNjZXNzIHRob3Nl
IHZlY3RvcnMgd2l0aG91dA0KIGhhdmluZyBhIHNoYXJlZCBidWZmZXIgKE1NSU8pLjxvOnA+PC9v
OnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8
L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JcyBpdCBwb3Nz
aWJsZSB0byBkbyB0aGlzLCBtYXliZSB1c2luZyBzb21lIE1QRiBleHRlbnNpb24/IEluIGNhc2Ug
dGhpcyBpcyBub3QgZmVhc2libGUsIEkgc2hvdWxkIGFsbG9jYXRlIGEgc2hhcmVkIGJ1ZmZlciBp
biBNTUlPIHNwYWNlIGFuZCB0aGVuIGNvbXVuaWNhdGUgdGhlIHZlY3RvcnMgdGhyb3VnaCB0aGF0
IGJ1ZmZlciwgcmlnaHQ/PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPlRoYW5rcyE8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8L2Rp
dj4NCjwvYm9keT4NCjwvaHRtbD4NCg==

--===============0503425511122732376==--