Ich habe jetzt mehrere Tage damit verbracht und es geschafft, SR-IOV mit der Mellanox Infiniband-Karte unter Verwendung der neuesten Firmware zum Laufen zu bringen.
Die virtuellen Funktionen werden in Dom0 als angezeigt
06: 00.1 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion] 06: 00.2 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion] 06: 00.3 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion ] 06: 00.4 Netzwerkcontroller: MT27500-Familie von Mellanox Technologies [Virtuelle ConnectX-3-Funktion]
Ich habe dann 06: 00.1 von Dom0 getrennt und es xen-pciback zugewiesen.
Ich habe dies an eine Xen-Testdomäne übergeben.
lspci im Test DomU zeigt:
00: 01.1 Netzwerkcontroller: MT27500-Familie von Mellanox Technologies [Virtuelle ConnectX-3-Funktion]
Ich habe die folgenden Module in DomU geladen
mlx4_ib
rdma_ucm
ib_umad
ib_uverbs
ib_ipoib
Die dmesg-Ausgabe für mlx4-Treiber zeigt:
[ 11.956787] mlx4_core: Mellanox ConnectX core driver v1.1 (Dec, 2011)
[ 11.956789] mlx4_core: Initializing 0000:00:01.1
[ 11.956859] mlx4_core 0000:00:01.1: enabling device (0000 -> 0002)
[ 11.957242] mlx4_core 0000:00:01.1: Xen PCI mapped GSI0 to IRQ30
[ 11.957581] mlx4_core 0000:00:01.1: Detected virtual function - running in slave mode
[ 11.957606] mlx4_core 0000:00:01.1: Sending reset
[ 11.957699] mlx4_core 0000:00:01.1: Sending vhcr0
[ 11.976090] mlx4_core 0000:00:01.1: HCA minimum page size:512
[ 11.976672] mlx4_core 0000:00:01.1: Timestamping is not supported in slave mode.
[ 12.068079] <mlx4_ib> mlx4_ib_add: mlx4_ib: Mellanox ConnectX InfiniBand driver v1.0 (April 4, 2008)
[ 12.184072] mlx4_core 0000:00:01.1: mlx4_ib: multi-function enabled
[ 12.184075] mlx4_core 0000:00:01.1: mlx4_ib: operating in qp1 tunnel mode
Ich habe sogar das ib0-Gerät angezeigt.
ib0 Link encap:UNSPEC HWaddr 80-00-05-49-FE-80-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.10.10 Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:2044 Metric:1
RX packets:117303 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:256
RX bytes:6576132 (6.5 MB) TX bytes:0 (0.0 B)
Ich kann sogar lokal 10.10.10.10 pingen.
Diese Pings werden jedoch nicht auf dem Infiniband-Stoff gesendet.
Es scheint, weil die Verbindung unterbrochen ist. ibstat zeigt:
CA 'mlx4_0'
CA type: MT4100
Number of ports: 1
Firmware version: 2.30.3000
Hardware version: 0
Node GUID: 0x001405005ef41f25
System image GUID: 0x002590ffff175727
Port 1:
State: Down
Physical state: LinkUp
Rate: 10
Base lid: 9
LMC: 0
SM lid: 1
Capability mask: 0x02514868
Port GUID: 0x0000000000000000
Wie bekomme ich es auf? Der DomU-Link ist UP, aber nicht der VF?
Und die Antwort finden Sie tatsächlich hier: Laut diesem Link: http://www.spinics.net/lists/linux-rdma/msg13307.html
Was brauche ich, damit der Port des Slave-VF aktiv wird? Ich verwende opensm 3.3.13 auf einer anderen Box. Ist das neu genug? (Benötigt SR-IOV SM-Unterstützung?)
Ja, wie Hal bemerkte, benötigen Sie mindestens opensm 3.3.14 ( http://marc.info/?l=linux-rdma&m=133819320432335&w=2 ), da dies die erste Version ist, die Alias-Guid et al. Unterstützt SRIOV, 3.3.15 ist ebenfalls erhältlich. Sie möchten also die 2. Version, die dies unterstützt. Grundsätzlich benötigen Sie einen IB-Link für die PPF und den Slave, um eine Alias-Guid für die SM zu registrieren. Wir (IL-Team) waren dienstags / mittwochs wegen eines Feiertags abwesend. Wir werden versuchen, Ihnen heute Abend weitere Einzelheiten mitzuteilen, und wenn nicht, bis morgen sicher.
Ich habe jetzt OpenSM aktualisiert und werde bald darüber berichten.
EDIT: OK, es funktioniert jetzt. Allerdings bekomme ich einen Log Blowout für opensm. Der OpenSM-Prozess schreibt Hunderte von Einträgen pro Sekunde des Formulars:
Sep 30 20:36:26 707784 [7DC1700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 707810 [7DC1700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708096 [8DC3700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708119 [8DC3700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708391 [FF5B0700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708421 [FF5B0700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708696 [3DB9700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708719 [3DB9700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Und die obigen Fehlermeldungen verschwanden, als ich neu startete und Dom0 mehr Speicher gab. Ich habe derzeit 2 GB mit ausgeschaltetem Autoballooning zugewiesen. Leider sind sie ohne ersichtlichen Grund zurück. So habe ich eine neue Frage gestellt, die das bezieht sich hier
Ich bin mir nicht sicher, warum es in dom0 funktioniert, aber in meinem Fall muss OpenSM auf dem Dom0 mit den VFs ausgeführt werden. Ich nehme an, das liegt daran, dass die auf Dom0 ausgeführte OpenSM-Instanz die VFs kennt und sie ankündigen kann, während ein Subnetzmanager auf einem anderen Knoten dies nicht tut. das ist meine Vermutung. Ich hoffe, dass der andere Xen-Knoten auch seine VFs aufnimmt. Das könnte zu einer anderen Frage werden. Im Moment funktioniert es mit einem einzelnen Xen-Knoten.