commit f30be1952fe55cc4a5e153bfd13863f527643d40
Author: Bernd Finger <bfinger@redhat.com>
Date: Wed Aug 11 21:38:45 2021 +0200
Solve issues #177, #193, and #194.
diff --git a/tasks/RedHat/generic/assert-tsx.yml b/tasks/RedHat/generic/assert-tsx.yml
index 4ace64c..d7da1d2 100644
--- a/tasks/RedHat/generic/assert-tsx.yml
+++ b/tasks/RedHat/generic/assert-tsx.yml
@@ -4,6 +4,24 @@
msg: "imported RedHat/generic/assert-tsx.yml"
- block:
+# There are CPUs which are not capable of enabling the rtm flag, so we just report the status:
+ - name: Get all CPU flags
+ shell: lscpu | grep "^Flags:"
+ register: __sap_hana_preconfigure_register_lscpu_flags
+ changed_when: no
+
+ - name: Report that the rtm CPU flag exists
+ debug:
+ msg: "INFO: The CPU flags contain ' rtm'."
+ when: "' rtm' in __sap_hana_preconfigure_register_lscpu_flags.stdout"
+
+ - name: Report that the rtm CPU flag does not exist
+ debug:
+ msg: "INFO: The CPU flags do not contain ' rtm'."
+ when: "' rtm' not in __sap_hana_preconfigure_register_lscpu_flags.stdout"
+
+# Note: Assertions are only necessary if rtm is not in the CPU flags.
+# If rtm is present, we just print an INFO message.
- name: Get contents of GRUB_CMDLINE_LINUX in /etc/default/grub
command: grep GRUB_CMDLINE_LINUX /etc/default/grub
register: __sap_hana_preconfigure_register_default_grub_cmdline_tsx_assert
@@ -15,6 +33,21 @@
fail_msg: "FAIL: 'tsx=on' is not in GRUB_CMDLINE_LINUX in /etc/default/grub!"
success_msg: "PASS: 'tsx=on' is in GRUB_CMDLINE_LINUX in /etc/default/grub."
ignore_errors: "{{ sap_hana_preconfigure_assert_ignore_errors|d(false) }}"
+ when: "' rtm' not in __sap_hana_preconfigure_register_lscpu_flags.stdout"
+
+ - name: Report if tsx=on is in GRUB_CMDLINE_LINUX in /etc/default/grub
+ debug:
+ msg: "INFO: 'tsx=on' is in GRUB_CMDLINE_LINUX in /etc/default/grub."
+ when:
+ - "'tsx=on' in __sap_hana_preconfigure_register_default_grub_cmdline_tsx_assert.stdout"
+ - "' rtm' in __sap_hana_preconfigure_register_lscpu_flags.stdout"
+
+ - name: Report if tsx=on is not in GRUB_CMDLINE_LINUX in /etc/default/grub
+ debug:
+ msg: "INFO: 'tsx=on' is not in GRUB_CMDLINE_LINUX in /etc/default/grub."
+ when:
+ - "'tsx=on' not in __sap_hana_preconfigure_register_default_grub_cmdline_tsx_assert.stdout"
+ - "' rtm' in __sap_hana_preconfigure_register_lscpu_flags.stdout"
- name: Get contents of /proc/cmdline
command: cat /proc/cmdline
@@ -27,20 +60,21 @@
fail_msg: "FAIL: 'tsx=on' is not in /proc/cmdline!"
success_msg: "PASS: 'tsx=on' is in /proc/cmdline."
ignore_errors: "{{ sap_hana_preconfigure_assert_ignore_errors|d(false) }}"
+ when: "' rtm' not in __sap_hana_preconfigure_register_lscpu_flags.stdout"
-# We are counting the number of cpuinfo lines which contain "flags" and subtracting those lines
-# which contain "flags" and " rtm ". If the result is 0, all CPUs contain flag "rtm".
- - name: Get rtm status of all CPUs
- shell: awk '$1=="flags"{n++}$1=="flags"&&$0~" rtm" {a++}END{print n-a}' /proc/cpuinfo
- register: __sap_hana_preconfigure_register_cpuinfo_flags_contain_rtm
- changed_when: no
+ - name: Report if tsx=on is in /proc/cmdline
+ debug:
+ msg: "INFO: 'tsx=on' is in /proc/cmdline."
+ when:
+ - "'tsx=on' in __sap_hana_preconfigure_register_proc_cmdline_tsx_assert.stdout"
+ - "' rtm' in __sap_hana_preconfigure_register_lscpu_flags.stdout"
- - name: Assert that all CPUs contain flag rtm
- assert:
- that: "__sap_hana_preconfigure_register_cpuinfo_flags_contain_rtm.stdout == '0'"
- fail_msg: "FAIL: At least one of the CPUs does not contain flag 'rtm'!"
- success_msg: "PASS: All CPUs contain flag 'rtm'."
- ignore_errors: "{{ sap_hana_preconfigure_assert_ignore_errors|d(false) }}"
+ - name: Report if tsx=on is not in /proc/cmdline
+ debug:
+ msg: "INFO: 'tsx=on' is not in /proc/cmdline."
+ when:
+ - "'tsx=on' not in __sap_hana_preconfigure_register_proc_cmdline_tsx_assert.stdout"
+ - "' rtm' in __sap_hana_preconfigure_register_lscpu_flags.stdout"
when: ansible_architecture == 'x86_64' and
ansible_distribution == 'RedHat' and
diff --git a/tasks/RedHat/generic/enable-tsx.yml b/tasks/RedHat/generic/enable-tsx.yml
index 879f0bf..3dd6d09 100644
--- a/tasks/RedHat/generic/enable-tsx.yml
+++ b/tasks/RedHat/generic/enable-tsx.yml
@@ -3,7 +3,16 @@
- debug:
msg: "imported RedHat/generic/enable-tsx.yml"
-- name: Enable TSX at boot time
+- name: Get the CPU flags
+ shell: lscpu | grep "^Flags"
+ register: __sap_hana_preconfigure_register_lscpu
+ when:
+ - ansible_architecture == 'x86_64'
+ - ansible_distribution == 'RedHat'
+ - ansible_distribution_major_version == '8'
+ - __sap_hana_preconfigure_fact_ansible_distribution_minor_version >= '3'
+
+- name: Enable TSX at boot time if CPU flag rtm is not present
lineinfile:
path: /etc/default/grub
backup: yes
@@ -14,10 +23,12 @@
with_items:
- "tsx=on"
notify: __sap_hana_preconfigure_regenerate_grub2_conf_handler
- when: ansible_architecture == 'x86_64' and
- ansible_distribution == 'RedHat' and
- ansible_distribution_major_version == '8' and
- __sap_hana_preconfigure_fact_ansible_distribution_minor_version >= '3'
+ when:
+ - ansible_architecture == 'x86_64'
+ - ansible_distribution == 'RedHat'
+ - ansible_distribution_major_version == '8'
+ - __sap_hana_preconfigure_fact_ansible_distribution_minor_version >= '3'
+ - not ' rtm' in __sap_hana_preconfigure_register_lscpu.stdout
tags: grubconfig
loop_control:
loop_var: line_item
diff --git a/tasks/RedHat/installation.yml b/tasks/RedHat/installation.yml
index fabeaac..a5bdb94 100644
--- a/tasks/RedHat/installation.yml
+++ b/tasks/RedHat/installation.yml
@@ -63,22 +63,19 @@
- ansible_architecture == "ppc64le"
- sap_hana_preconfigure_add_ibm_power_repo|d(true)
-- name: Accept the license for the IBM tools
- shell: |
- MORE=+1000 /opt/ibm/lop/configure <<-EOF
- y
- EOF
+- name: Accept the license for the IBM Service and Productivity Tools
+ shell: LESS=+q /opt/ibm/lop/configure <<<'y'
when:
- ansible_architecture == "ppc64le"
- sap_hana_preconfigure_add_ibm_power_repo|d(true)
-- name: Install IBM tools
+- name: Install the IBM Service and Productivity Tools
package:
state: latest
name: "{{ __sap_hana_preconfigure_required_ppc64le }}"
when: ansible_architecture == "ppc64le"
-- name: Get status of installed IBM tools
+- name: Get the status of installed IBM Service and Productivity Tools
yum:
name: "{{ __sap_hana_preconfigure_required_ppc64le }}"
register: __sap_hana_preconfigure_register_required_ppc64le_packages
diff --git a/tasks/sapnote/2055470.yml b/tasks/sapnote/2055470.yml
index 5efbd6d..697913c 100644
--- a/tasks/sapnote/2055470.yml
+++ b/tasks/sapnote/2055470.yml
@@ -32,7 +32,7 @@
loop_var: line_item
## This only works if interfacename=device name, otherwise it fails
-- name: add largesend options to interface
+- name: Add largesend options to interfaces
lineinfile:
regexp: '^ETHTOOL_OPTIONS_tso='
line: ETHTOOL_OPTIONS_tso='-K iface tso on'
@@ -45,8 +45,9 @@
)
loop_control:
loop_var: line_item
+ ignore_errors: true
-- name: Add largesend parameters for ppc64le
+- name: Add largesend kernel parameters for ppc64le
sysctl:
sysctl_file: /etc/sysctl.d/ibm_largesend.conf
name: "{{ line_item.name }}"