Commit 0f74d9cf authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'x86_urgent_for_v6.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Borislav Petkov:

 - Fix the GDS mitigation detection on some machines after the recent
   attack vectors conversion

 - Filter out the invalid machine reset reason value -1 when running as
   a guest as in such cases the reason why the machine was rebooted does
   not make a whole lot of sense

 - Init the resource control machinery on Hygon hw in order to avoid a
   division by zero and to actually enable the feature on hw which
   supports it

* tag 'x86_urgent_for_v6.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/bugs: Fix GDS mitigation selecting when mitigation is off
  x86/CPU/AMD: Ignore invalid reset reason value
  x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper
parents a69dfb4e d4932a1b
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1326,8 +1326,8 @@ static const char * const s5_reset_reason_txt[] = {

static __init int print_s5_reset_status_mmio(void)
{
	unsigned long value;
	void __iomem *addr;
	u32 value;
	int i;

	if (!cpu_feature_enabled(X86_FEATURE_ZEN))
@@ -1340,12 +1340,16 @@ static __init int print_s5_reset_status_mmio(void)
	value = ioread32(addr);
	iounmap(addr);

	/* Value with "all bits set" is an error response and should be ignored. */
	if (value == U32_MAX)
		return 0;

	for (i = 0; i < ARRAY_SIZE(s5_reset_reason_txt); i++) {
		if (!(value & BIT(i)))
			continue;

		if (s5_reset_reason_txt[i]) {
			pr_info("x86/amd: Previous system reset reason [0x%08lx]: %s\n",
			pr_info("x86/amd: Previous system reset reason [0x%08x]: %s\n",
				value, s5_reset_reason_txt[i]);
		}
	}
+1 −3
Original line number Diff line number Diff line
@@ -1068,10 +1068,8 @@ static void __init gds_select_mitigation(void)
	if (gds_mitigation == GDS_MITIGATION_AUTO) {
		if (should_mitigate_vuln(X86_BUG_GDS))
			gds_mitigation = GDS_MITIGATION_FULL;
		else {
		else
			gds_mitigation = GDS_MITIGATION_OFF;
			return;
		}
	}

	/* No microcode */
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <asm/spec-ctrl.h>
#include <asm/delay.h>
#include <asm/msr.h>
#include <asm/resctrl.h>

#include "cpu.h"

@@ -117,6 +118,8 @@ static void bsp_init_hygon(struct cpuinfo_x86 *c)
			x86_amd_ls_cfg_ssbd_mask = 1ULL << 10;
		}
	}

	resctrl_cpu_detect(c);
}

static void early_init_hygon(struct cpuinfo_x86 *c)