commit f30be1952fe55cc4a5e153bfd13863f527643d40 Author: Bernd Finger 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 }}"