From: Peter Mikus Date: Tue, 10 May 2022 08:57:43 +0000 (+0200) Subject: feat(infra): Mellanox compatibility Matrix X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=9e5fff4c2f51f77f9bb44f09914e428a8e377597 feat(infra): Mellanox compatibility Matrix Signed-off-by: Peter Mikus Change-Id: Iec87340aed64dd72e5289bd13af27c177f92c466 --- diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml index 80d4733527..18ba2bfbfb 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.18.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk22.03" intel_800_matrix: "dpdk22.03" +mellanox_cx5_matrix: "dpdk22.03" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml index 5899df7d97..5ff676eb21 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.19.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk21.02" intel_800_matrix: "dpdk21.02" +mellanox_cx5_matrix: "dpdk21.02" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml index a7d6d4c02c..947242ed92 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.20.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk22.03" intel_800_matrix: "dpdk22.03" +mellanox_cx5_matrix: "dpdk22.03" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml index 907cc94be1..c4b626897e 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.21.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk21.02" intel_800_matrix: "dpdk21.02" +mellanox_cx5_matrix: "dpdk21.02" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml index a87d3a5834..5c51159813 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.22.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk22.03" intel_800_matrix: "dpdk22.03" +mellanox_cx5_matrix: "dpdk22.03" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml index 64ced29bf4..cfa84c784e 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.23.yaml @@ -31,3 +31,4 @@ cpu_microarchitecture: "cascadelake" intel_700_matrix: "dpdk21.02" intel_800_matrix: "dpdk21.02" +mellanox_cx5_matrix: "dpdk21.02" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml index c976b1e6c0..c0046ec862 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.24.yaml @@ -28,3 +28,4 @@ cpu_microarchitecture: "epyc" intel_700_matrix: "dpdk22.03" intel_800_matrix: "dpdk22.03" +mellanox_cx5_matrix: "dpdk22.03" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml index 5424a7fa1b..639e37bb20 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.32.8.25.yaml @@ -28,3 +28,4 @@ cpu_microarchitecture: "epyc" intel_700_matrix: "dpdk21.02" intel_800_matrix: "dpdk21.02" +mellanox_cx5_matrix: "dpdk21.02" diff --git a/fdio.infra.ansible/roles/intel/tasks/main.yaml b/fdio.infra.ansible/roles/intel/tasks/main.yaml index b70daf0315..c37a373db6 100644 --- a/fdio.infra.ansible/roles/intel/tasks/main.yaml +++ b/fdio.infra.ansible/roles/intel/tasks/main.yaml @@ -1,5 +1,5 @@ --- -# file: roles/performance_tuning/tasks/main.yaml +# file: roles/intel/tasks/main.yaml - name: Inst - Update Package Cache (APT) apt: @@ -10,7 +10,7 @@ tags: - intel-inst-drivers -- name: Inst - Machine Prerequisites +- name: Inst - Prerequisites package: name: "{{ packages | flatten(levels=1) }}" state: latest diff --git a/fdio.infra.ansible/roles/mellanox/defaults/main.yaml b/fdio.infra.ansible/roles/mellanox/defaults/main.yaml index 0caaae1e1a..a12a613f74 100644 --- a/fdio.infra.ansible/roles/mellanox/defaults/main.yaml +++ b/fdio.infra.ansible/roles/mellanox/defaults/main.yaml @@ -18,4 +18,13 @@ packages_by_arch: x86_64: - [] -mellanox_version: "5.2-1.0.4.0" +mellanox_download_url: "http://content.mellanox.com/ofed" +mellanox_extract_dir: "/opt" + +mellanox_cx5_compatibility_matrix: + dpdk21.02: + # https://doc.dpdk.org/guides/rel_notes/release_21_02.html + ofed: "5.3-1.0.5.0" + dpdk22.03: + # https://doc.dpdk.org/guides/rel_notes/release_22_03.html + ofed: "5.5-1.0.3.2" diff --git a/fdio.infra.ansible/roles/mellanox/tasks/main.yaml b/fdio.infra.ansible/roles/mellanox/tasks/main.yaml index 3cccdb7727..75964304ca 100644 --- a/fdio.infra.ansible/roles/mellanox/tasks/main.yaml +++ b/fdio.infra.ansible/roles/mellanox/tasks/main.yaml @@ -8,60 +8,35 @@ when: - ansible_distribution|lower == 'ubuntu' tags: - - mellanox-inst-prerequisites + - mellanox-inst-drivers - name: Inst - Prerequisites package: name: "{{ packages | flatten(levels=1) }}" state: latest tags: - - mellanox-inst-prerequisites + - mellanox-inst-drivers -- name: Inst - Check Presence of Mellanox Hardware +- name: Inst - Check Presence of Mellanox CX-5 shell: "lspci | grep Mellanox | awk '{print $1}'" register: mellanox_pcis failed_when: false changed_when: false tags: - - mellanox-inst + - mellanox-inst-drivers -- name: Inst - Get OFED - get_url: - url: "http://content.mellanox.com/ofed/MLNX_OFED-{{ mellanox_version }}/MLNX_OFED_LINUX-{{ mellanox_version }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" - dest: "/opt/MLNX_OFED_LINUX-{{ mellanox_version }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" - mode: 0644 - when: mellanox_pcis.stdout_lines | length > 0 +- name: Inst - Get Mellanox CX-5 OFED driver versions + set_fact: + ofed: "{{ mellanox_cx5_compatibility_matrix[mellanox_cx5_matrix]['ofed'] }}" + when: > + mellanox_pcis is defined tags: - - mellanox-inst + - mellanox-inst-drivers -- name: Inst - Extract OFED - unarchive: - remote_src: true - src: "/opt/MLNX_OFED_LINUX-{{ mellanox_version }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" - dest: "/opt/" - creates: "/opt/MLNX_OFED_LINUX-{{ mellanox_version }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}" - register: mellanox_firmware_extracted - when: mellanox_pcis.stdout_lines | length > 0 +- name: Inst - Driver Mellanox CX-5 + import_tasks: ofed.yaml + when: > + mellanox_pcis.stdout_lines | length > 0 and + mellanox_cx5_matrix is defined tags: - - mellanox-inst - -- name: Inst - OFED - command: "./mlnxofedinstall --with-mft --dpdk --force --upstream-libs" - args: - chdir: "/opt/MLNX_OFED_LINUX-{{ mellanox_version }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}" - when: mellanox_pcis.stdout_lines | length > 0 and mellanox_firmware_extracted - tags: - - mellanox-inst - -- name: Switch Infiniband to Ethernet - command: "mlxconfig --yes --dev {{ item }} set LINK_TYPE_P1=2 LINK_TYPE_P2=2" - with_items: "{{ mellanox_pcis.stdout_lines }}" - tags: - - mellanox-conf - -- name: FIX qemu-system removal - package: - name: "qemu-system" - state: latest - tags: - - mellanox-inst + - mellanox-inst-drivers diff --git a/fdio.infra.ansible/roles/mellanox/tasks/ofed.yaml b/fdio.infra.ansible/roles/mellanox/tasks/ofed.yaml new file mode 100644 index 0000000000..ed7d483db9 --- /dev/null +++ b/fdio.infra.ansible/roles/mellanox/tasks/ofed.yaml @@ -0,0 +1,42 @@ +--- +# file: roles/intel/tasks/i40e.yaml + +- name: Inst - Get OFED + get_url: + url: "{{ mellanox_download_url }}/MLNX_OFED-{{ ofed }}/MLNX_OFED_LINUX-{{ ofed }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" + dest: "{{ mellanox_extract_dir }}/MLNX_OFED_LINUX-{{ ofed }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" + mode: "0644" + when: mellanox_pcis.stdout_lines | length > 0 + tags: + - mellanox-inst-drivers + +- name: Inst - Extract OFED + unarchive: + remote_src: true + src: "{{ mellanox_extract_dir }}/MLNX_OFED_LINUX-{{ ofed }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}.tgz" + dest: "{{ mellanox_extract_dir }}/" + creates: "{{ mellanox_extract_dir }}/MLNX_OFED_LINUX-{{ ofed }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}" + register: mellanox_firmware_extracted + tags: + - mellanox-inst-drivers + +- name: Inst - OFED + command: "./mlnxofedinstall --with-mft --dpdk --force --upstream-libs --without-fw-update" + args: + chdir: "{{ mellanox_extract_dir }}/MLNX_OFED_LINUX-{{ ofed }}-{{ ansible_distribution|lower }}{{ ansible_distribution_version }}-{{ ansible_machine }}" + when: mellanox_firmware_extracted + tags: + - mellanox-inst-drivers + +- name: Inst - Switch Infiniband to Ethernet + command: "mlxconfig --yes --dev {{ item }} set LINK_TYPE_P1=2 LINK_TYPE_P2=2" + with_items: "{{ mellanox_pcis.stdout_lines }}" + tags: + - mellanox-inst-drivers + +- name: FIX qemu-system removal + package: + name: "qemu-system" + state: latest + tags: + - mellanox-inst-drivers