intel OPAE FPGA Linux tæki bílstjóri arkitektúr
OPAE Intel FPGA Linux tæki bílstjóri arkitektúr
OPAE Intel FPGA bílstjórinn býður upp á viðmót fyrir notendarýmisforrit til að stilla, telja upp, opna og fá aðgang að FPGA hröðum á kerfum sem eru búnir Intel FPGA lausnum og gerir stjórnunaraðgerðum á kerfisstigi kleift eins og FPGA endurstillingu, orkustjórnun og sýndarvæðingu.
Vélbúnaðararkitektúr
Frá sjónarhóli stýrikerfisins view, FPGA vélbúnaðurinn birtist sem venjulegt PCIe tæki. Minni FPGA tækisins er skipulagt með því að nota fyrirfram skilgreinda gagnauppbyggingu (Device Feature List). Eiginleikar studdir af FPGA tækinu eru afhjúpaðir í gegnum þessar gagnabyggingar, eins og sýnt er hér að neðan á eftirfarandi mynd:
FPGA PCIe tæki
Ökumaðurinn styður PCIe SR-IOV til að búa til sýndaraðgerðir (VF) sem hægt er að nota til að úthluta einstökum hröðum á sýndarvélar.
Intel Corporation. Allur réttur áskilinn. Intel, Intel lógóið og önnur Intel merki eru vörumerki Intel Corporation eða dótturfélaga þess. Intel ábyrgist frammistöðu FPGA- og hálfleiðaravara sinna samkvæmt gildandi forskriftum í samræmi við staðlaða ábyrgð Intel en áskilur sér rétt til að gera breytingar á hvaða vörum og þjónustu sem er hvenær sem er án fyrirvara. Intel tekur enga ábyrgð eða ábyrgð sem stafar af notkun eða notkun á neinum upplýsingum, vöru eða þjónustu sem lýst er hér nema sérstaklega hafi verið samið skriflega af Intel. Viðskiptavinum Intel er bent á að fá nýjustu útgáfuna af tækjaforskriftum áður en þeir treysta á birtar upplýsingar og áður en þeir panta vörur eða þjónustu.
Önnur nöfn og vörumerki má gera tilkall til sem eign annarra.
Sýndarvædd FPGA PCIe tæki
FPGA stjórnunarvél (FME)
FPGA stjórnunarvélin framkvæmir afl- og hitastjórnun, villuskýrslur, endurstillingar, frammistöðuskýrslu og aðrar innviðaaðgerðir. Hver FPGA hefur einn FME, sem alltaf er aðgangur að í gegnum Physical Function (PF). Notendarýmisforrit geta fengið einkaaðgang að FME með því að nota open(), og gefa það út með close() sem forréttindanotanda (rót).
Höfn
Port táknar viðmótið á milli kyrrstöðu FPGA efnisins („FPGA Interface Manager (FIM)“) og endurstillanlegs svæðis að hluta sem inniheldur hröðunaraðgerð (AF). Portið stjórnar samskiptum frá hugbúnaði yfir í eldsneytisgjöfina og afhjúpar eiginleika eins og endurstillingu og villuleit. PCIe tæki getur haft nokkur port og hægt er að afhjúpa hverja port í gegnum VF með því að úthluta því með því að nota FPGA_FME_PORT_ASSIGN ioctl á FME tækinu.
Accelerator Function (AF) Eining
- Accelerator Function (AF) eining er tengd við port og afhjúpar 256K MMIO svæði til að nota fyrir hröðunarsértækar stýriskrár.
- Notendarýmisforrit geta fengið einkaaðgang að AFU sem er tengt við Port með því að nota open() á Port tækinu og losa það með close().
- Notendarýmisforrit geta einnig mmap() hraðauppgjöf MMIO svæði.
Endurstilling að hluta
Eins og getið er hér að ofan er hægt að endurstilla hraða með því að endurstilla hröðunaraðgerð að hluta (AF) file. Hröðunaraðgerðin (AF) verður að hafa verið búin til fyrir nákvæmlega FIM og miðað kyrrstöðusvæði (Port) FPGA; annars mun endurstillingaraðgerðin mistakast og mögulega valda óstöðugleika kerfisins. Þessa eindrægni er hægt að athuga með því að bera saman auðkenni viðmóts sem tilgreint er í AF hausnum við auðkenni viðmóts sem FME birtir í gegnum sysfs. Þessi athugun er venjulega gerð af notendarými áður en hringt er í endurstillingu IOCTL.
Athugið:
Eins og er, verður að loka öllum hugbúnaði sem hefur aðgang að FPGA, þar með talið þeim sem keyra í sýndarhýsingu, áður en reynt er að endurstilla að hluta. Skrefin yrðu:
- Losaðu bílstjórinn af gestnum
- Taktu VF úr sambandi við gestinn
- Slökktu á SR-IOV
- Framkvæma endurstillingu að hluta
- Virkjaðu SR-IOV
- Tengdu VF við gestinn
- Hlaða bílstjóranum í gestinn
FPGA sýndarvæðing
Til að gera kleift að fá aðgang að eldsneytisgjöf frá forritum sem keyra í VM, þarf að tengja viðkomandi AFU tengi til VF með eftirfarandi skrefum:
- PF á sjálfgefið allar AFU höfn. Sérhvert tengi sem þarf að endurúthluta til VF verður fyrst að losa frá PF í gegnum FPGA_FME_PORT_RELEASE ioctl á FME tækinu.
- Þegar N tengi hafa verið losuð frá PF er hægt að nota skipunina hér að neðan til að virkja SRIOV og VFs. Hver VF á aðeins eina höfn með AFU. echo N > PCI_DEVICE_PATH/sriov_numvfs
- Farðu í gegnum VFs til VMs.
- AFU undir VF er aðgengilegur frá forritum í VM (með því að nota sama rekil inni í VF).
Athugið:
Ekki er hægt að úthluta FME til VF, þannig að PR og aðrar stjórnunaraðgerðir eru aðeins í boði í gegnum PF.
Bílstjóri stofnun
Bílstjóri fyrir PCIe Module tæki
Bílstjóri stofnun
FPGA tækin birtast sem venjuleg PCIe tæki; þannig er FPGA PCIe tækjadrifinn (intel-FPGA-PCI.ko) alltaf hlaðinn fyrst þegar FPGA PCIe PF eða VF greinist. Þessi ökumaður gegnir innviðahlutverki í ökumannsarkitektúrnum. Það:
- Býr til FPGA gámatæki sem foreldri eiginleika tækjanna.
- Gengur í gegnum Device Feature List, sem er útfærður í PCIe tæki BAR minni, til að uppgötva eiginleika tæki og undireiginleika þeirra og búa til vettvangstæki fyrir þau undir gámatækinu.
- Styður SR-IOV.
- Kynnir innviði eiginleika tækisins, sem tekur út aðgerðir fyrir undireiginleika og afhjúpar algengar aðgerðir fyrir eiginleikum tækjarekla.
PCIe Module Device Driver Aðgerðir
- Inniheldur PCIe uppgötvun, upptalningu tækja og uppgötvun eiginleika.
- Býr til sysfs möppur fyrir móðurtækið, FPGA Management Engine (FME) og Port.
- Býr til vettvangsreklatilvikin, sem veldur því að Linux kjarninn hleður viðkomandi vettvangseiningsrekla.
Bílstjóri FME Platform Module
- Rafmagns- og varmastjórnun, villuskýrslur, frammistöðuskýrslur og aðrar aðgerðir innviða. Þú getur fengið aðgang að þessum aðgerðum í gegnum sysfs tengi sem FME bílstjórinn sýnir.
- Endurstilling að hluta. FME bílstjórinn skráir FPGA stjórnanda við frumstillingu PR undireiginleika; þegar það fær FPGA_FME_PORT_PR ioctl frá þér, kallar það á sameiginlega viðmótsaðgerðina frá FPGA Manager til að ljúka endurstillingu bitastraumsins að hluta til í tiltekna höfn.
- Hafnarstjórnun fyrir sýndarvæðingu. FME bílstjórinn kynnir tvo ioctls, FPGA_FME_PORT_RELEASE, sem losar tiltekið port frá PF; og FPGA_FME_PORT_ASSIGN, sem úthlutar höfninni aftur til PF. Þegar portið hefur verið losað úr PF er hægt að tengja það til VF í gegnum SR-IOV tengi sem PCIe bílstjórinn gefur. Nánari upplýsingar er að finna í „FPGA sýndarvæðing“.
FME Platform Module Device Driver Aðgerðir
- Býr til FME-stafabúnaðarhnútinn.
- Býr til FME sysfs files og innleiðir FME sysfs file fylgihlutir.
- Innleiðir FME einkaeiginleika undirstýringa.
- FME einkaeiginleika undir-ökumenn:
- FME haus
- Varmastjórnun
- Orkustjórnun
- Global Villa
- Endurstilling að hluta
- Global árangur
Bílstjóri tækjabúnaðar fyrir höfn pallaeiningu
Svipað og FME bílstjórinn, er FPGA Port (og AFU) bílstjórinn (intel-fpga-afu. ko) rannsakaður þegar Port pallbúnaðurinn er búinn til. Meginhlutverk þessarar einingar er að útvega viðmót fyrir notendarýmisforrit til að fá aðgang að einstökum hröðum, þar á meðal grunnendurstillingarstýringu á höfn, AFU MMIO svæðisútflutningi, DMA biðminni kortlagningarþjónustu, UMsg(1) tilkynningu og fjarkembiforrit (e. sjá fyrir ofan).
UMsg er aðeins stutt í gegnum Acceleration Stack fyrir Intel Xeon® örgjörva með innbyggðum FPGA.
Port Platform Module Device Driver Aðgerðir
- Býr til Port character device hnút.
- Býr til Port sysfs files og innleiðir Port sysfs file fylgihlutir.
- Innleiðir Port private lögun undirrekla.
- Höfn einkaeiginleika undirrekla:
- Hafnarhaus
- AFU
- Gáttarvilla
- UMsg(2)
- Merkja tappa
Umsókn FPGA Tækjatalning
Þessi hluti kynnir hvernig forrit telja upp FPGA tækið úr sysfs stigveldinu undir /sys/class/fpga. Í fyrrvampHér fyrir neðan eru tvö Intel FPGA tæki uppsett í hýsilinn. Hvert FPGA tæki hefur eina FME og tvær Ports (AFU). Fyrir hvert FPGA tæki er tækjaskrá búin til undir /sys/class/fpga:
/sys/class/fpga/intel-fpga-dev.0
/sys/class/fpga/intel-fpga-dev.1
Hver hnút hefur eina FME og tvær ports (AFUs) sem barnatæki:
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.0
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.1
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-fme.1
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-port.2
/sys/class/fpga/intel-fpga-dev.1/intel-fpga-port.3
Almennt eru FME/Port sysfs tengin nefnd sem hér segir:
/sys/class/fpga/intel-fpga-dev.i/intel-fpga-fme.j/
/sys/class/fpga/intel-fpga-dev.i/intel-fpga-port.k/
með I að númera öll gámatækin í röð, j númera FME í röð og k númera allar hafnir í röð.
Hægt er að vísa til tækihnúta sem notaðir eru fyrir ioctl() og mmap() í gegnum:
/dev/intel-fpga-fme.j
/dev/intel-fpga-port.k
Upptalning PCIe bílstjóra
Þessi kafli gefur yfirview af kóðaflæðinu fyrir upptalningu tækja sem framkvæmd er af intel-fpga-pci.ko. Helstu gagnaskipulag og aðgerðir eru auðkenndar. Þessum kafla er best fylgt þegar viewmeðfylgjandi frumkóða (pcie.c).
Upptalningargagnauppbyggingar
enum fpga_id_type {
PARENT_ID,
FME_ID,
PORT_ID,
FPGA_ID_MAX
};
static struct idr fpga_ids[FPGA_ID_MAX];
struct fpga_chardev_info {
const bleikja *nafn;
dev_t devt;
};
struct fpga_chardev_info fpga_chrdevs[] = {
{ .name = FPGA_FEATURE_DEV_FME },
{ .name = FPGA_FEATURE_DEV_PORT },
};
static struct class *fpga_class;
static struct pci_device_id cci_pcie_id_tbl[] = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_MCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_MCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_SKX_P),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_SKX_P),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_RCiEP0_DCP),},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCIe_DEVICE_ID_VF_DCP),},
{0,}
};
static struct pci_driver cci_pci_driver = {
.name = DRV_NAME,
.id_table = cci_pcie_id_tbl,
.probe = cci_pci_probe,
.fjarlægja = cci_pci_fjarlægja,
.sriov_configure = cci_pci_sriov_configure
};
struct cci_drvdata {
int device_id;
struct tæki *fme_dev;
struct mutex læsa;
struct list_head port_dev_list;
int released_port_num;
struct list_head svæði;
};
struct build_feature_devs_info {
struct pci_dev *pdev;
ógilt __iomem *ioaddr;
ógilt __iomem *ioend;
int núverandi_bar;
ógilt __iomem *pfme_hdr;
struct tæki *foreldri_dev;
struct platform_device *feature_dev;
};
Upptalningarflæði
- ccidrv_init()
- Frumstilltu fpga_ids með idr_init().
- Frumstilla fpga_chrdevs[i].devt með alloc_chrdev_region().
- Frumstilla fpga_class með class_create().
- pci_register_driver(&cci_pci_driver);
- cci_pci_probe()
- Virkjaðu PCI tækið, biðja um aðgang að svæðum þess, stilla PCI master ham og stilla DMA.
- cci_pci_create_feature_devs() build_info_alloc_and_init()
- Úthlutaðu struct build_feature_devs_info, frumstilltu það.
.parent_dev er stillt á sysfs móðurskrá (intel-fpga-dev.id) sem inniheldur FME og Port sysfs möppurnar.
- Úthlutaðu struct build_feature_devs_info, frumstilltu það.
- parse_feature_list()
- Farðu yfir BAR0 tækjalistann til að uppgötva FME, höfnina og einkaeiginleika þeirra.
- parse_feature() parse_feature_afus() parse_feature_fme()
- Þegar FME rekst á:
- build_info_create_dev()
- Úthlutaðu vettvangstæki fyrir FME, geymt í build_feature_devs_info.feature_dev.
- feature_dev.id er frumstillt í niðurstöðu idr_alloc(fpga_ids[FME_ID],
- feature_dev.parent er stillt á build_feature_devs_info.parent_dev.
- Úthlutaðu fjölda skipulagsauðlinda í feature_dev.resource.
- Úthlutaðu struct feature_platform_data, frumstilltu þau og geymdu bendil í feature_dev.dev.platform_data
- create_feature_instance() build_info_add_sub_feature()
- Frumstilla feature_dev.resource[FME_FEATURE_ID_HEADER].
- feature_platform_data_add()
- Frumstilla feature_platform_data.features[FME_FEATURE_ID_HEADER], allt nema .fops.
- parse_feature() parse_feature_afus() parse_feature_port()
- Þegar höfn rekist á:
- build_info_create_dev()
- Úthlutaðu vettvangstæki fyrir höfnina, geymdu í build_feature_devs_info.feature_dev.
- feature_dev.id er frumstillt í niðurstöðu idr_alloc(fpga_ids[PORT_ID],
- feature_dev.parent er stillt á build_feature_devs_info.parent_dev.
- Úthlutaðu fylki af struct resource í feature_dev.resource.
- Úthlutaðu struct feature_platform_data, frumstilltu þau og geymdu bendil í feature_dev.dev.platform_data
- build_info_commit_dev()
- Bættu struct feature_platform_data.node fyrir höfnina við listann yfir hafnir í struct cci_drvdata.port_dev_list
- create_feature_instance() build_info_add_sub_feature()
- Frumstilla feature_dev.resource[PORT_FEATURE_ID_HEADER].
- feature_platform_data_add()
- Frumstilla feature_platform_data.features[PORT_FEATURE_ID_HEADER], allt nema .fops.
- parse_feature() parse_feature_afus() parse_feature_port_uafu()
- Þegar AFU rekst á:
- create_feature_instance() build_info_add_sub_feature()
- Frumstilla feature_dev.resource[PORT_FEATURE_ID_UAFU].
- feature_platform_data_add()
- Frumstilla feature_platform_data.features[PORT_FEATURE_ID_UAFU], allt nema .fops.
- parse_feature() parse_feature_private() parse_feature_fme_private()
- Þegar FME einkaeiginleiki kemur upp:
- create_feature_instance() build_info_add_sub_feature()
- Frumstilla feature_dev.resource[id].
- feature_platform_data_add()
- Frumstilla feature_platform_data.features[id], allt nema .fops.
- þátta_eiginleika() þátta_eiginleika_einka() þátta_eiginleika_port_einka()
- Þegar einkaeiginleiki Port rekst á: * create_feature_instance() build_info_add_sub_feature() * Frumstilla feature_dev.resource[id]. * feature_platform_data_add() Frumstilla feature_platform_data.features[id], allt nema .fops.
- parse_ports_from_fme()
- Ef ökumaðurinn er hlaðinn á Physical Function (PF), þá:
- Keyrðu parse_feature_list() flæðið á hverri höfn sem lýst er í FME hausnum.
- Notaðu BAR sem getið er um í hverri Port færslu í hausnum.
Frumstilling tækjabúnaðar FME
Þessi kafli gefur yfirview af kóðaflæði fyrir frumstillingu FME tækja sem framkvæmd er af intel-fpga-fme.ko. Helstu gagnaskipulag og aðgerðir eru auðkenndar. Þessum kafla er best fylgt þegar viewmeðfylgjandi frumkóða (fme-main.c).
Gagnauppbygging FME vettvangstækja
struct feature_ops {
int (*init)(struct platform_device *pdev, struct lögun *eiginleiki);
int (*uinit)(struct platform_device *pdev, struct lögun *eiginleiki);
langur (*ioctl)(struct platform_device *pdev, struct lögun *eiginleiki,
unsigned int cmd, unsigned long arg);
int (*próf)(struct platform_device *pdev, struct lögun *eiginleiki);
};
struct lögun {
const bleikja *nafn;
int resource_index;
ógilt __iomem *ioaddr;
struct feature_ops *ops;
};
struct feature_platform_data {
struct list_head hnútur;
struct mutex læsa;
óundirritaður langur dev_status;
struct cdev cdev;
struct platform_device *dev;
óundirritaður int disable_count;
ógilt *einkamál;
int númer;
int (*config_port)(struct platform_device *, u32, bool);
struct platform_device *(*fpga_for_each_port)(struct platform_device *,
void *, int (*match)(struct platform_device *, void *)); uppbygging
eiginleikar[0];
};
struct perf_object {
int auðkenni;
const struct eiginleiki_hópur **attr_hópar;
struct tæki *fme_dev;
struct list_head hnútur;
struct list_head börn;
struct kobject kobj;
};
struct fpga_fme {
u8 port_id;
u64 pr_villa;
struct tæki *dev_err;
struct perf_object *perf_dev;
struct feature_platform_data *pdata;
};
FME vettvangs frumstillingarflæði
FME frumstillingarflæði
- fme_probe() fme_dev_init()
- Frumstilltu struct fpga_fme og geymdu það í feature_platform_data.private reitnum.
- fme_probe() fpga_dev_feature_init() feature_instance_init()
- Vistaðu struct feature_ops í feature_platform_data.features fyrir hvern útsettan eiginleika.
- Hringdu í prófunaraðgerðina, ef einhver er, úr strúktúrnum.
- Hringdu í init fallið frá struct.
- fme_probe() fpga_register_dev_ops()
- Búðu til FME-stafabúnaðarhnútinn, skráðu strúktúr file_aðgerðir.
Frumstilling hafnarpalls tækis
Þessi kafli gefur yfirview af kóðaflæði fyrir frumstillingu hafnarbúnaðar sem framkvæmd er af intel-fpga-afu.ko. Helstu gagnaskipulag og aðgerðir eru auðkenndar. Þessum kafla er best fylgt þegar viewmeðfylgjandi frumkóða (afu.c).
Gagnauppbygging hafnarvettvangs tækis
struct feature_ops {
int (*init)(struct platform_device *pdev, struct lögun *eiginleiki);
int (*uinit)(struct platform_device *pdev, struct lögun *eiginleiki);
langur (*ioctl)(struct platform_device *pdev, struct lögun *eiginleiki,
unsigned int cmd, unsigned long arg);
int (*próf)(struct platform_device *pdev, struct lögun *eiginleiki);
};
struct lögun {
const bleikja *nafn;
int resource_index;
ógilt __iomem *ioaddr;
struct feature_ops *ops;
};
struct feature_platform_data {
struct list_head hnútur;
struct mutex læsa;
óundirritaður langur dev_status;
struct cdev cdev;
struct platform_device *dev;
óundirritaður int disable_count;
ógilt *einkamál;
int númer;
int (*config_port)(struct platform_device *, u32, bool);
struct platform_device *(*fpga_for_each_port)(struct platform_device *,
ógilt *, int (*passa)(struct platform_device *, ógilt *));
struct eiginleika eiginleika[0];
};
struct fpga_afu_region {
u32 vísitala;
u32 fánar;
u64 stærð;
u64 móti;
u64 eðlis;
struct list_head hnútur;
};
struct fpga_afu_dma_region {
u64 user_addr;
u64 lengd;
u64 iova;
struct síða **síður;
struct rb_node hnútur;
bool í_notkun;
};
struct fpga_afu {
u64 region_cur_offset;
int fjöldi_svæði;
u8 num_umsgs;
struct list_head svæði;
struct rb_root dma_regions;
struct feature_platform_data *pdata;
};
Port Platform Device Frumstillingarflæði
Port frumstillingarflæði
- afu_probe() afu_dev_init()
- Frumstilltu struct fpga_afu og geymdu hana í feature_platform_data.private reitnum.
- afu_probe() fpga_dev_feature_init() feature_instance_init()
- Vistaðu struct feature_ops í feature_platform_data.features fyrir hvern útsettan eiginleika.
- Hringdu í prófunaraðgerðina, ef einhver er, úr strúktúrnum.
- Hringdu í init fallið frá struct.
- afu_probe() fpga_register_dev_ops()
- Búðu til Port character device hnút, skráðu struct file_aðgerðir.
FME IOCTLs
IOCTL sem kallast á opnu file lýsing fyrir /dev/intel-fpga-fme.j FPGA_GET_API_VERSION—skila núverandi útgáfu sem heiltölu, frá 0.
FPGA_CHECK_EXTENSION—ekki stutt eins og er.
FPGA_FME_PORT_RELEASE—arg er bendi á:
struct fpga_fme_port_release {
__u32 argsz; // í: sizeof(struct fpga_fme_port_release)
__u32 fánar; // í: verður að vera 0
__u32 port_id; // í: auðkenni ports (frá 0) til að losa.
};
FPGA_FME_PORT_ASSIGN—arg er bendi á:
struct fpga_fme_port_assign {
__u32 argsz; // í: sizeof(struct fpga_fme_port_assign)
__u32 fánar; // í: verður að vera 0
__u32 port_id; // in: port ID (frá 0) til að úthluta. (hlýtur að hafa verið
áður gefið út af FPGA_FME_PORT_RELEASE)
};
FPGA_FME_PORT_PR—arg er vísbending á:
struct fpga_fme_port_pr {
__u32 argsz; // í: sizeof(struct fpga_fme_port_pr)
__u32 fánar; // í: verður að vera 0
__u32 port_id; // í: auðkenni ports (frá 0)
__u32 biðminni_stærð; // in: stærð bitastraums biðminni í bætum. Verður að vera 4-bæta
samræmd.
__u64 biðminni_vistfang; // in: vinnslu heimilisfang bitastraums biðminni
__u64 staða; // út: villustaða (bitamaska)
};
IOCTL hafnar
IOCTL sem kallast á opnu file lýsing fyrir /dev/intel-fpga-port.k FPGA_GET_API_VERSION—skila núverandi útgáfu sem heiltölu, frá 0. FPGA_CHECK_EXTENSION—ekki stutt eins og er.
FPGA_PORT_GET_INFO—arg er vísbending á:
struct fpga_port_info {
__u32 argsz; // í: sizeof(struct fpga_port_info)
__u32 fánar; // út: skilar 0
__u32 fjölda_svæði; // út: fjöldi MMIO svæða, 2 (1 fyrir AFU og 1 fyrir
STP)
__u32 num_umsgs; // út: fjöldi UMsg sem vélbúnaðurinn styður
};
FPGA_PORT_GET_REGION_INFO—arg er vísbending á:
struct fpga_port_region_info {
__u32 argsz; // í: sizeof(struct fpga_port_region_info)
__u32 fánar; // út: (bitamaska) { FPGA_REGION_READ, FPGA_REGION_WRITE,
FPGA_REGION_MMAP }
__u32 vísitala; // í: FPGA_PORT_INDEX_UAFU eða FPGA_PORT_INDEX_STP
__u32 fylling; // í: verður að vera 0
__u64 stærð; // út: stærð MMIO svæðis í bætum
__u64 móti; // út: á móti MMIO svæði frá upphafi tækis fd
};
FPGA_PORT_DMA_MAP—arg er bendi á:
struct fpga_port_dma_map {
__u32 argsz; // í: sizeof(struct fpga_port_dma_map)
__u32 fánar; // í: verður að vera 0 __u64 user_addr; // í: sýndarferli
heimilisfang. Verður að vera síðujafnað.
__u64 lengd; // in: lengd kortlagningar í bætum. Verður að vera margfeldi af síðu
stærð.
__u64 iova; // út: IO sýndarvistfang };
FPGA_PORT_DMA_UNMAP—arg er bendi á:
struct fpga_port_dma_unmap {
__u32 argsz; // í: sizeof(struct fpga_port_dma_unmap)
__u32 fánar; // í: verður að vera 0
__u64 iova; // in: IO sýndarvistfang skilað af fyrri
FPGA_PORT_DMA_MAP };
- FPGA_PORT_RESET—arg verður að vera NULL.
- FPGA_PORT_UMSG_ENABLE—arg verður að vera NULL.
- FPGA_PORT_UMSG_DISABLE—args verða að vera NULL.
FPGA_PORT_UMSG_SET_MODE—arg er bendi á:
struct fpga_port_umsg_cfg {
__u32 argsz; // í: sizeof(struct fpga_port_umsg_cfg)
__u32 fánar; // í: verður að vera 0
__u32 hint_bitmap; // í: UMsg hint mode bitmap. Táknar hvaða UMsg eru
virkt.
};
FPGA_PORT_UMSG_SET_BASE_ADDR—
- UMsg verður að vera óvirkt áður en þetta ioctl er gefið út.
- Iova-reiturinn verður að vera fyrir biðminni sem er nógu stór fyrir alla UMsg (num_umsgs * PAGE_SIZE).
- Biðminnið er merkt sem „í notkun“ af biðminni stjórnun ökumanns.
- Ef iova er NULL, er öll fyrri svæði ómerkt sem „í notkun“.
- arg er vísbending á:
struct fpga_port_umsg_base_addr {- u32 argsz; // í: sizeof(struct fpga_port_umsg_base_addr)
- u32 fánar; // í: verður að vera 0
- u64 iova; // í: IO sýndarvistfang frá FPGA_PORT_DMA_MAP. };
Athugið:
- Til að hreinsa gáttarvillurnar þarftu að skrifa nákvæma bitamaska yfir núverandi villur, til dæmisample, köttur villur > ljóst
- UMsg er aðeins stutt í gegnum Acceleration Stack fyrir Intel Xeon örgjörva með innbyggðum FPGA.
sysfs Files
FME Header sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/
sysfs file | mmio sviði | gerð | aðgangur |
ports_num | fme_header.capability.num_ports | aukastaf alþj | Eingöngu lesin |
skyndiminni_stærð | fme_header.capability.cache_size | aukastaf alþj | Eingöngu lesin |
útgáfu | fme_header.capability.fabric_verid | aukastaf alþj | Eingöngu lesin |
socket_id | fme_header.capability.socket_id | aukastaf alþj | Eingöngu lesin |
bitastraumskenni | fme_header.bitstream_id | hex uint64_t | Eingöngu lesin |
bitastraums_lýsigögn | fme_header.bitstream_md | hex uint64_t | Eingöngu lesin |
FME Thermal Management sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/thermal_mgmt/
sysfs file | mmio sviði | gerð | aðgangur |
þröskuldur 1 | varma.þröskuldur.tmp_þröskuldur1 | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
þröskuldur 2 | varma.þröskuldur.tmp_þröskuldur2 | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
threshold_trip | thermal.threshold.therm_trip_thshold | aukastaf alþj | Eingöngu lesin |
þröskuldi1_ náð | hitauppstreymi.þröskuldur1_staða | aukastaf alþj | Eingöngu lesin |
þröskuldi2_ náð | hitauppstreymi.þröskuldur2_staða | aukastaf alþj | Eingöngu lesin |
threshold1_policy | hitauppstreymi. threshold.thshold_policy | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
hitastig | thermal.rdsensor_fm1.fpga_temp | aukastaf alþj | Eingöngu lesin |
FME Power Management sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/power_mgmt/
sysfs file | mmio sviði | gerð | aðgangur |
neytt | power.status.pwr_consumed | hex uint64_t | Eingöngu lesin |
þröskuldur 1 | aflþröskuldur1 | hex uint64_t | Notandi: Read-only Root: Lesa-skrifa |
þröskuldur 2 | aflþröskuldur2 | hex uint64_t | Notandi: Read-only Root: Lesa-skrifa |
þröskuldur1_staða | power.threshold.threshold1_status | aukastaf ótáknuð | Eingöngu lesin |
þröskuldur2_staða | power.threshold.threshold2_status | aukastaf ótáknuð | Eingöngu lesin |
rtl | power.status.fpga_latency_report | aukastaf ótáknuð | Eingöngu lesin |
FME Global Error sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/errors/
sysfs file | mmio sviði | gerð | aðgangur |
pcie0_villur | gerror.pcie0_err | hex uint64_t | Lesa skrifa |
pcie1_villur | gerror.pcie1_err | hex uint64_t | Lesa skrifa |
inject_error | gerror.ras_error_inj | hex uint64_t | Lesa skrifa |
intel-fpga-dev.i/intel-fpga-fme.j/errors/fme-errors/
sysfs file | mmio sviði | gerð | aðgangur |
villur | gerror.fme_err | hex uint64_t | Eingöngu lesin |
fyrsta_villa | gerror.fme_first_err.err_reg_status | hex uint64_t | Eingöngu lesin |
næsta_villa | gerror.fme_next_err.err_reg_status | hex uint64_t | Eingöngu lesin |
skýr | Hreinsar villur, first_error, next_error | ýmis uint64_t | Skrifað eingöngu |
Athugið:
Til að hreinsa FME villurnar verður þú að skrifa nákvæma bitamaska yfir núverandi villur, tdample cat villur > ljóst.
FME Partial Reconfiguration sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/pr/
sysfs file | mmio sviði | gerð | aðgangur |
interface_id | pr.fme_pr_intfc_id0_h, pr.fme_pre_intfc_id0_l | hex 16-bæta | Eingöngu lesin |
FME Global Performance sysfs files
intel-fpga-dev.i/intel-fpga-fme.j/dperf/clock
sysfs file | mmio sviði | gerð | aðgangur |
klukka | gperf.clk.afu_interf_clock | hex uint64_t | Eingöngu lesin |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/cache/ (Gildir ekki fyrir hröðunarstafla fyrir Intel Xeon örgjörva með FPGA)
sysfs file | mmio sviði | gerð | aðgangur |
frysta | gperf.ch_ctl.freeze | aukastaf alþj | Lesa skrifa |
lesa_högg | gperf.CACHE_RD_HIT | hex uint64_t | Eingöngu lesin |
lesa_miss | gperf.CACHE_RD_MISS | hex uint64_t | Eingöngu lesin |
skrifa_högg | gperf.CACHE_WR_HIT | hex uint64_t | Eingöngu lesin |
skrifa_miss | gperf.CACHE_WR_MISS | hex uint64_t | Eingöngu lesin |
bið_beiðni | gperf.CACHE_HOLD_REQ | hex uint64_t | Eingöngu lesin |
tx_req_stall | gperf.CACHE_TX_REQ_STALL | hex uint64_t | Eingöngu lesin |
sysfs file | mmio sviði | gerð | aðgangur |
rx_req_stall | gperf.CACHE_RX_REQ_STALL | hex uint64_t | Eingöngu lesin |
data_write_port_contention | gperf.CACHE_DATA_WR_PORT_CONTEN | hex uint64_t | Eingöngu lesin |
tag_write_port_contention | gperf.CACHE_TAG_WR_PORT_CONTEN | hex uint64_t | Eingöngu lesin |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/ (Gildir ekki fyrir hröðunarstafla fyrir Intel Xeon örgjörva með FPGA)
sysfs file | mmio sviði | gerð | aðgangur |
frysta | gperf.vtd_ctl.freeze | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/iommu/afuk/ (Gildir ekki fyrir hröðunarstafla fyrir Intel Xeon örgjörva með FPGA)
sysfs file | mmio sviði | gerð | aðgangur |
lesa_færslu | gperf.VTD_AFU0_MEM_RD_TRANS | hex uint64_t | Eingöngu lesin |
skrifa_færslu | gperf.VTD_AFU0_MEM_WR_TRANS | hex uint64_t | Eingöngu lesin |
tlb_read_hit | gperf.VTD_AFU0_TLB_RD_HIT | hex uint64_t | Eingöngu lesin |
tlb_write_hit | gperf.VTD_AFU0_TLB_WR_HIT | hex uint64_t | Eingöngu lesin |
intel-fpga-dev.i/intel-fpga-fme.j/dperf/fabric/
sysfs file | mmio sviði | gerð | aðgangur |
virkja | gperf.fab_ctl.(virkt) | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
frysta | gperf.fab_ctl.freeze | aukastaf alþj | Notandi: Read-only Root: Lesa-skrifa |
pcie0_read | gperf.FAB_PCIE0_RD | hex uint64_t | Eingöngu lesin |
pcie0_skrifaðu | gperf.FAB_PCIE0_WR | hex uint64_t | Eingöngu lesin |
pcie1_read | gperf.FAB_PCIE1_RD | hex uint64_t | Eingöngu lesin |
pcie1_skrifaðu | gperf.FAB_PCIE1_WR | hex uint64_t | Eingöngu lesin |
upi_les | gperf.FAB_UPI_RD | hex uint64_t | Eingöngu lesin |
upi_skrifa | gperf.FAB_UPI_WR | hex uint64_t | Eingöngu lesin |
intel-fpga-ev.i/intel-fpga/fme.j/dperf/fabric/portk/
sysfs file | mmio sviði | gerð | aðgangur |
pcie0_read | gperf.FAB_PCIE0_RD | hex uint64_t | Eingöngu lesin |
pcie0_skrifaðu | gperf.FAB_PCIE0_WR | hex uint64_t | Eingöngu lesin |
pcie1_read | gperf.FAB_PCIE1_RD | hex uint64_t | Eingöngu lesin |
pcie1_skrifaðu | gperf.FAB_PCIE1_WR | hex uint64_t | Eingöngu lesin |
upi_les | gperf.FAB_UPI_RD | hex uint64_t | Eingöngu lesin |
upi_skrifa | gperf.FAB_UPI_WR | hex uint64_t | Eingöngu lesin |
Port Header sysfs files
intel-fpga-dev.i/intel-fpga-port.k/
sysfs file | mmio sviði | gerð | aðgangur |
id | port_header.capability.port_number | aukastaf alþj | Eingöngu lesin |
ltr | port_header.control.latency_tolerance | aukastaf alþj | Eingöngu lesin |
Port AFU Header sysfs files
intel-fpga-dev.i/intel-fpga-port.k/
sysfs file | mmio sviði | gerð | aðgangur |
afu_id | afu_header.guid | hex 16-bæta | Eingöngu lesin |
Port Villa sysfs files
intel-fpga-dev.i/intel-fpga-port.k/errors/
sysfs file | mmio sviði | gerð | aðgangur |
villur | perror.port_error | hex uint64_t | Eingöngu lesin |
fyrsta_villa | perror.port_first_error | hex uint64_t | Eingöngu lesin |
fyrst_vansköpuð_beiðni | perror.malreq | hex 16-bæta | Eingöngu lesin |
skýr | villa.(allar villur) | ýmis uint64_t | Skrifað eingöngu |
Athugið:
Til að hreinsa gáttarvillurnar verður þú að skrifa nákvæma bitamaska yfir núverandi villur, tdample cat villur > ljóst.
Endurskoðunarsaga
Skjalaútgáfa | Breytingar |
2017.10.02 | Upphafleg útgáfa. |
OPAE Intel FPGA Linux tækjabílstjóri arkitektúrleiðbeiningar
Skjöl / auðlindir
![]() |
intel OPAE FPGA Linux tæki bílstjóri arkitektúr [pdfNotendahandbók OPAE FPGA Linux tæki bílstjóri arkitektúr, OPAE FPGA, Linux tæki bílstjóri arkitektúr, bílstjóri arkitektúr, arkitektúr |