summaryrefslogtreecommitdiffstats
path: root/ansible/roles/enable_iommu_on_boot
diff options
context:
space:
mode:
authorVolodymyr Mytnyk <volodymyrx.mytnyk@intel.com>2018-12-06 13:26:43 +0000
committerGerrit Code Review <gerrit@opnfv.org>2018-12-06 13:26:43 +0000
commit09360f2133b0b9bfe5449cc340af63aaab2d0c96 (patch)
treebf9047fd748785a0c3a030ac1b86829bda692e9c /ansible/roles/enable_iommu_on_boot
parent470029d121ad332b5b7aa388bdb211eb4b47cfb9 (diff)
parent5875c74b0b63f4e04549e4d9933cf702d29dae8b (diff)
Merge "Add IOMMU to grub to support OVS/SRIOV SA contexts"
Diffstat (limited to 'ansible/roles/enable_iommu_on_boot')
-rw-r--r--ansible/roles/enable_iommu_on_boot/tasks/main.yml54
-rw-r--r--ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml12
-rw-r--r--ansible/roles/enable_iommu_on_boot/vars/main.yml4
3 files changed, 37 insertions, 33 deletions
diff --git a/ansible/roles/enable_iommu_on_boot/tasks/main.yml b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
index 1b98a50b1..e406fcc1e 100644
--- a/ansible/roles/enable_iommu_on_boot/tasks/main.yml
+++ b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -22,41 +22,45 @@
iommu_boot_params: ' amd_iommu=on iommu=pt'
when: hostvars[inventory_hostname]['ansible_system_vendor'] == "AuthenticAMD"
-- name: Set facts for this role
+- name: Define grub string for IOMMU
set_fact:
- hugepages_help_string: ' # added by hugepages role'
- iommu_help_string: ', added by iommu role'
- hugepages_params: " default_hugepagesz=1G hugepagesz=1G hugepages=8"
- iommu_original_kernel_params: 'GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX{{ hugepages_params }}'
- iommu_enabled_kernel_params: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"'
- iommu_enabled_kernel_params_with_help: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
+ enable_iommu: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX{{ iommu_boot_params }}'
-- name: check if iommu is set by this role in /etc/default/grub
+- name: check if iommu is set by this role in {{ grub_file}}
lineinfile:
- path: /etc/default/grub
- line: '{{ iommu_enabled_kernel_params_with_help }}'
- #changed_when: no
+ path: "{{ grub_file}}"
+ regexp: '{{ iommu_help_string }}'
+ line: '{{ iommu_help_string }}'
+ state: absent
check_mode: yes
- register: is_mine_iommu_etc_grub
+ register: is_nsb_iommu_role
ignore_errors: True
-- name: check if iommu is set by someone else
- command: "grep -o 'iommu' /etc/default/grub"
+- name: Check if IOMMU is set by someone else
+ lineinfile:
+ path: "{{ grub_file}}"
+ regexp: "_iommu="
+ line: '{{ iommu_help_string }}'
+ state: absent
+ check_mode: yes
register: is_iommu
ignore_errors: True
-- fail:
- msg: "Iommu already set by someone else"
- when: is_mine_iommu_etc_grub.changed == false and is_iommu.stdout != ""
+- name: Send info that IOMMU is configured by someone else
+ debug:
+ msg: "INFO: NOT modified, IOMMU is already configured by someone."
+ when:
+ - not is_nsb_iommu_role.changed
+ - is_iommu.changed
-- name: 'Configure iommu in /etc/default/grub'
-# and /boot/grub/grub.cfg(when: ansible_distribution == "Ubuntu")'
+- name: Add IOMMU when it is not set
lineinfile:
- path: /etc/default/grub
- regexp: '({{ iommu_original_kernel_params }})"{{ hugepages_help_string }}'
- line: '\1{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
- backrefs: yes
- when: is_mine_iommu_etc_grub.changed == true
+ path: "{{ grub_file }}"
+ regexp: "{{ iommu_help_string }}"
+ line: '{{ enable_iommu }}" {{ iommu_help_string }}'
+ when:
+ - not is_nsb_iommu_role.changed
+ - not is_iommu.changed
- name: find boot grub.cfg
find:
diff --git a/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml b/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml
index 6760c3f9d..e0c880912 100644
--- a/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml
+++ b/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,14 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-
-
- name: check if iommu is set by this role in /boot grub.cfg files
lineinfile:
path: "{{ item.path }}"
- regexp: '{{ hugepages_params }}{{ iommu_boot_params }}'
- line: ''
- #changed_when: no
+ regexp: '{{ iommu_boot_params }}'
+ line: '{{ iommu_boot_params }}'
+ state: absent
check_mode: yes
register: is_mine_iommu_boot_grub
ignore_errors: True
@@ -29,6 +27,6 @@
path: "{{ item.path }}"
regexp: '(.*linux\s+/boot/vmlinuz.*)$'
replace: '\1{{ iommu_boot_params }}'
- when: is_mine_iommu_boot_grub.msg != "line replaced"
+ when: not is_mine_iommu_boot_grub.changed
- debug: var=ansible_kernel
diff --git a/ansible/roles/enable_iommu_on_boot/vars/main.yml b/ansible/roles/enable_iommu_on_boot/vars/main.yml
index 1b642dcb5..d2575ffd6 100644
--- a/ansible/roles/enable_iommu_on_boot/vars/main.yml
+++ b/ansible/roles/enable_iommu_on_boot/vars/main.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
+grub_file: "/etc/default/grub"
+iommu_help_string: ' # added by Yardstick ansible iommu role'
update_grub:
Debian: "update-grub2"
RedHat: "grub2-mkconfig -o /boot/grub2/grub.cfg"