diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2025-10-26 09:57:18 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2025-10-26 09:57:18 -0700 | 
| commit | dbfc6422a34d6cb28e5c0432af309b24f66ef27e (patch) | |
| tree | 74c1d2d7340f5ecb9f027c0c742840c5e237efe1 | |
| parent | 5fee0dafba0a5223fa1c1f0dd99af71256449d38 (diff) | |
| parent | 84dfce65a7ae7b11c7b13285a1b23e9a94ad37b7 (diff) | |
Merge tag 'x86_urgent_for_v6.18_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Borislav Petkov:
 - Remove dead code leftovers after a recent mitigations cleanup which
   fail a Clang build
 - Make sure a Retbleed mitigation message is printed only when
   necessary
 - Correct the last Zen1 microcode revision for which Entrysign sha256
   check is needed
 - Fix a NULL ptr deref when mounting the resctrl fs on a system which
   supports assignable counters but where L3 total and local bandwidth
   monitoring has been disabled at boot
* tag 'x86_urgent_for_v6.18_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/bugs: Remove dead code which might prevent from building
  x86/bugs: Qualify RETBLEED_INTEL_MSG
  x86/microcode: Fix Entrysign revision check for Zen1/Naples
  x86,fs/resctrl: Fix NULL pointer dereference with events force-disabled in mbm_event mode
| -rw-r--r-- | arch/x86/kernel/cpu/bugs.c | 11 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/resctrl/monitor.c | 11 | ||||
| -rw-r--r-- | fs/resctrl/monitor.c | 16 | 
4 files changed, 21 insertions, 19 deletions
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 6a526ae1fe99..d7fa03bf51b4 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -1463,7 +1463,9 @@ static void __init retbleed_update_mitigation(void)  			break;  		default:  			if (retbleed_mitigation != RETBLEED_MITIGATION_STUFF) { -				pr_err(RETBLEED_INTEL_MSG); +				if (retbleed_mitigation != RETBLEED_MITIGATION_NONE) +					pr_err(RETBLEED_INTEL_MSG); +  				retbleed_mitigation = RETBLEED_MITIGATION_NONE;  			}  		} @@ -1825,13 +1827,6 @@ void unpriv_ebpf_notify(int new_state)  }  #endif -static inline bool match_option(const char *arg, int arglen, const char *opt) -{ -	int len = strlen(opt); - -	return len == arglen && !strncmp(arg, opt, len); -} -  /* The kernel command line selection for spectre v2 */  enum spectre_v2_mitigation_cmd {  	SPECTRE_V2_CMD_NONE, diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index cdce885e2fd5..28ed8c089024 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -194,7 +194,7 @@ static bool need_sha_check(u32 cur_rev)  	}  	switch (cur_rev >> 8) { -	case 0x80012: return cur_rev <= 0x800126f; break; +	case 0x80012: return cur_rev <= 0x8001277; break;  	case 0x80082: return cur_rev <= 0x800820f; break;  	case 0x83010: return cur_rev <= 0x830107c; break;  	case 0x86001: return cur_rev <= 0x860010e; break; diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c index 2cd25a0d4637..fe1a2aa53c16 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -458,7 +458,16 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)  		r->mon.mbm_cfg_mask = ecx & MAX_EVT_CONFIG_BITS;  	} -	if (rdt_cpu_has(X86_FEATURE_ABMC)) { +	/* +	 * resctrl assumes a system that supports assignable counters can +	 * switch to "default" mode. Ensure that there is a "default" mode +	 * to switch to. This enforces a dependency between the independent +	 * X86_FEATURE_ABMC and X86_FEATURE_CQM_MBM_TOTAL/X86_FEATURE_CQM_MBM_LOCAL +	 * hardware features. +	 */ +	if (rdt_cpu_has(X86_FEATURE_ABMC) && +	    (rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL) || +	     rdt_cpu_has(X86_FEATURE_CQM_MBM_LOCAL))) {  		r->mon.mbm_cntr_assignable = true;  		cpuid_count(0x80000020, 5, &eax, &ebx, &ecx, &edx);  		r->mon.num_mbm_cntrs = (ebx & GENMASK(15, 0)) + 1; diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c index 4076336fbba6..572a9925bd6c 100644 --- a/fs/resctrl/monitor.c +++ b/fs/resctrl/monitor.c @@ -1782,15 +1782,13 @@ int resctrl_mon_resource_init(void)  		mba_mbps_default_event = QOS_L3_MBM_TOTAL_EVENT_ID;  	if (r->mon.mbm_cntr_assignable) { -		if (!resctrl_is_mon_event_enabled(QOS_L3_MBM_TOTAL_EVENT_ID)) -			resctrl_enable_mon_event(QOS_L3_MBM_TOTAL_EVENT_ID); -		if (!resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID)) -			resctrl_enable_mon_event(QOS_L3_MBM_LOCAL_EVENT_ID); -		mon_event_all[QOS_L3_MBM_TOTAL_EVENT_ID].evt_cfg = r->mon.mbm_cfg_mask; -		mon_event_all[QOS_L3_MBM_LOCAL_EVENT_ID].evt_cfg = r->mon.mbm_cfg_mask & -								   (READS_TO_LOCAL_MEM | -								    READS_TO_LOCAL_S_MEM | -								    NON_TEMP_WRITE_TO_LOCAL_MEM); +		if (resctrl_is_mon_event_enabled(QOS_L3_MBM_TOTAL_EVENT_ID)) +			mon_event_all[QOS_L3_MBM_TOTAL_EVENT_ID].evt_cfg = r->mon.mbm_cfg_mask; +		if (resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID)) +			mon_event_all[QOS_L3_MBM_LOCAL_EVENT_ID].evt_cfg = r->mon.mbm_cfg_mask & +									   (READS_TO_LOCAL_MEM | +									    READS_TO_LOCAL_S_MEM | +									    NON_TEMP_WRITE_TO_LOCAL_MEM);  		r->mon.mbm_assign_on_mkdir = true;  		resctrl_file_fflags_init("num_mbm_cntrs",  					 RFTYPE_MON_INFO | RFTYPE_RES_CACHE);  | 
