Function report |
Source Code:arch\x86\kernel\cpu\bugs.c |
Create Date:2022-07-28 07:56:16 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:spectre_v2_select_mitigation
Proto:static void __init spectre_v2_select_mitigation(void)
Type:void
Parameter:Nothing
761 | cmd = spectre_v2_parse_cmdline() |
762 | mode = SPECTRE_V2_NONE |
768 | If Not boot_cpu_has_bug(CPU is affected by Spectre variant 2 attack with indirect branches ) && ( cmd == SPECTRE_V2_CMD_NONE || cmd == SPECTRE_V2_CMD_AUTO ) Then Return |
773 | Case cmd == SPECTRE_V2_CMD_NONE |
774 | Return |
776 | Case cmd == SPECTRE_V2_CMD_FORCE |
777 | Case cmd == SPECTRE_V2_CMD_AUTO |
778 | If boot_cpu_has(Enhanced IBRS ) Then |
779 | mode = SPECTRE_V2_IBRS_ENHANCED |
781 | The base value of the SPEC_CTRL MSR that always has to be preserved. |= Indirect Branch Restricted Speculation |
782 | wrmsrl(Speculation Control , The base value of the SPEC_CTRL MSR that always has to be preserved. ) |
783 | Go to specv2_set_mode |
785 | If IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RETPOLINE) Then Go to retpoline_auto |
787 | Break |
788 | Case cmd == SPECTRE_V2_CMD_RETPOLINE_AMD |
789 | If IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RETPOLINE) Then Go to retpoline_amd |
791 | Break |
792 | Case cmd == SPECTRE_V2_CMD_RETPOLINE_GENERIC |
793 | If IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RETPOLINE) Then Go to retpoline_generic |
795 | Break |
796 | Case cmd == SPECTRE_V2_CMD_RETPOLINE |
797 | If IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RETPOLINE) Then Go to retpoline_auto |
799 | Break |
801 | pr_err("Spectre mitigation: kernel not compiled with retpoline; no mitigation available!") |
802 | Return |
804 | retpoline_auto : |
805 | If CPU vendor == X86_VENDOR_AMD || CPU vendor == X86_VENDOR_HYGON Then |
807 | retpoline_amd : |
808 | If Not boot_cpu_has("" LFENCE synchronizes RDTSC ) Then |
809 | pr_err("Spectre mitigation: LFENCE not serializing, switching to generic retpoline\n") |
810 | Go to retpoline_generic |
812 | mode = SPECTRE_V2_RETPOLINE_AMD |
815 | Else |
816 | retpoline_generic : |
821 | specv2_set_mode : |
822 | spectre_v2_enabled = mode |
823 | pr_info("%s\n", spectre_v2_strings[mode]) |
834 | pr_info("Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch\n") |
847 | If boot_cpu_has(Indirect Branch Restricted Speculation ) && mode != SPECTRE_V2_IBRS_ENHANCED Then |
849 | pr_info("Enabling Restricted Speculation for firmware calls\n") |
Name | Describe |
---|---|
check_bugs |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |