Saya telah menghabiskan beberapa hari untuk hal ini sekarang dan saya berhasil membuat SR-IOV bekerja dengan kartu Mellanox Infiniband menggunakan firmware terbaru.
Fungsi Virtual muncul di Dom0 sebagai
06: 00.1 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3] 06: 00.2 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3] 06: 00.3 Pengontrol jaringan: Mellanox Technologies MT27500 Family [ConnectX-3 Fungsi Virtual ] 06: 00.4 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3]
Saya kemudian terlepas 06: 00.1 dari Dom0 dan menugaskannya ke xen-pciback.
Saya telah melewati ini ke domain uji Xen.
lspci di dalam DomU tes menunjukkan:
00: 01.1 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3]
Saya memiliki modul-modul berikut dimuat di DomU
mlx4_ib
rdma_ucm
ib_umad
ib_uverbs
ib_ipoib
Output dmesg untuk driver mlx4 menunjukkan:
[ 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
Saya bahkan punya perangkat ib0 yang muncul.
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)
Saya bahkan dapat melakukan ping lokal 10.10.10.10.
Namun, ping itu tidak dikirim pada kain infiniband.
Tampaknya karena tautannya sedang down. ibstat menunjukkan:
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
Bagaimana saya mendapatkannya? tautan domU adalah UP tetapi bukan yang VF?
Dan jawabannya sebenarnya ditemukan di sini: Menurut tautan ini: http://www.spinics.net/lists/linux-rdma/msg13307.html
Apa yang saya perlukan agar port budak VF menjadi aktif? Saya menjalankan opensm 3.3.13 pada kotak yang berbeda, apakah itu cukup baru? (apakah SR-IOV memerlukan dukungan SM?)
Ya, seperti yang dicatat Hal, setidaknya Anda memerlukan opensm 3.3.14 ( http://marc.info/?l=linux-rdma&m=133819320432335&w=2 ) karena ini adalah versi pertama yang mendukung barang-barang alias-guid et al yang diperlukan untuk SRIOV, 3.3.15 juga keluar sekarang, jadi Anda ingin versi ke-2 yang mendukung ini ... pada dasarnya Anda memerlukan tautan IB untuk PPF dan slave untuk mendapatkan pemandu alias terdaftar untuknya @ SM. Kami (tim IL) tidak aktif pada hari Selasa / Rabu pada hari libur, akan mencoba memberi Anda detail lebih lanjut malam ini dan jika tidak, besok, tentu saja.
Saya sekarang telah meningkatkan OpenSM dan akan segera melaporkan kembali.
EDIT: OK, sekarang sudah berfungsi. Namun saya mendapatkan semburan log untuk openm. Proses OpenSM menulis ratusan entri per detik dari formulir:
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
Dan pesan kesalahan di atas hilang ketika saya reboot dan memberi Dom0 lebih banyak memori. Saat ini saya memiliki 2GB yang dialokasikan untuk itu dengan menonaktifkan autoballooning. Sayangnya, mereka kembali tanpa alasan yang jelas. Jadi saya telah mengajukan pertanyaan baru yang berhubungan dengan itu di sini
Saya tidak begitu yakin mengapa ia bekerja di dom0 tetapi dalam kasus saya, saya harus menjalankan OpenSM di Dom0 yang memiliki VF. Saya kira ini karena contoh OpenSM yang berjalan di Dom0 tahu tentang VF dan dapat mengiklankannya sementara manajer subnet pada node lain tidak? itu dugaanku. Saya berharap node xen lainnya akan mengambil itu VF juga. Itu mungkin akhirnya menjadi pertanyaan lain. Untuk saat ini ia bekerja dengan satu simpul Xen.