Skip to content

Commit dc9b2e6

Browse files
committed
Merge tag 'x86-urgent-2023-10-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar: "Fix a false-positive KASAN warning, fix an AMD erratum on Zen4 CPUs, and fix kernel-doc build warnings" * tag 'x86-urgent-2023-10-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/alternatives: Disable KASAN in apply_alternatives() x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs x86/resctrl: Fix kernel-doc warnings
2 parents 42578c7 + d35652a commit dc9b2e6

File tree

4 files changed

+33
-7
lines changed

4 files changed

+33
-7
lines changed

arch/x86/include/asm/msr-index.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,12 +637,17 @@
637637
/* AMD Last Branch Record MSRs */
638638
#define MSR_AMD64_LBR_SELECT 0xc000010e
639639

640-
/* Fam 17h MSRs */
641-
#define MSR_F17H_IRPERF 0xc00000e9
640+
/* Zen4 */
641+
#define MSR_ZEN4_BP_CFG 0xc001102e
642+
#define MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT 5
642643

644+
/* Zen 2 */
643645
#define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3
644646
#define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1)
645647

648+
/* Fam 17h MSRs */
649+
#define MSR_F17H_IRPERF 0xc00000e9
650+
646651
/* Fam 16h MSRs */
647652
#define MSR_F16H_L2I_PERF_CTL 0xc0010230
648653
#define MSR_F16H_L2I_PERF_CTR 0xc0010231

arch/x86/kernel/alternative.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,17 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
403403
u8 insn_buff[MAX_PATCH_LEN];
404404

405405
DPRINTK(ALT, "alt table %px, -> %px", start, end);
406+
407+
/*
408+
* In the case CONFIG_X86_5LEVEL=y, KASAN_SHADOW_START is defined using
409+
* cpu_feature_enabled(X86_FEATURE_LA57) and is therefore patched here.
410+
* During the process, KASAN becomes confused seeing partial LA57
411+
* conversion and triggers a false-positive out-of-bound report.
412+
*
413+
* Disable KASAN until the patching is complete.
414+
*/
415+
kasan_disable_current();
416+
406417
/*
407418
* The scan order should be from start to end. A later scanned
408419
* alternative code can overwrite previously scanned alternative code.
@@ -452,6 +463,8 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
452463

453464
text_poke_early(instr, insn_buff, insn_buff_sz);
454465
}
466+
467+
kasan_enable_current();
455468
}
456469

457470
static inline bool is_jcc32(struct insn *insn)

arch/x86/kernel/cpu/amd.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ static const int amd_div0[] =
8080
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x17, 0x00, 0x0, 0x2f, 0xf),
8181
AMD_MODEL_RANGE(0x17, 0x50, 0x0, 0x5f, 0xf));
8282

83+
static const int amd_erratum_1485[] =
84+
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x19, 0x10, 0x0, 0x1f, 0xf),
85+
AMD_MODEL_RANGE(0x19, 0x60, 0x0, 0xaf, 0xf));
86+
8387
static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum)
8488
{
8589
int osvw_id = *erratum++;
@@ -1149,6 +1153,10 @@ static void init_amd(struct cpuinfo_x86 *c)
11491153
pr_notice_once("AMD Zen1 DIV0 bug detected. Disable SMT for full protection.\n");
11501154
setup_force_cpu_bug(X86_BUG_DIV0);
11511155
}
1156+
1157+
if (!cpu_has(c, X86_FEATURE_HYPERVISOR) &&
1158+
cpu_has_amd_erratum(c, amd_erratum_1485))
1159+
msr_set_bit(MSR_ZEN4_BP_CFG, MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT);
11521160
}
11531161

11541162
#ifdef CONFIG_X86_32

arch/x86/kernel/cpu/resctrl/monitor.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,23 @@ struct rmid_entry {
3030
struct list_head list;
3131
};
3232

33-
/**
34-
* @rmid_free_lru A least recently used list of free RMIDs
33+
/*
34+
* @rmid_free_lru - A least recently used list of free RMIDs
3535
* These RMIDs are guaranteed to have an occupancy less than the
3636
* threshold occupancy
3737
*/
3838
static LIST_HEAD(rmid_free_lru);
3939

40-
/**
41-
* @rmid_limbo_count count of currently unused but (potentially)
40+
/*
41+
* @rmid_limbo_count - count of currently unused but (potentially)
4242
* dirty RMIDs.
4343
* This counts RMIDs that no one is currently using but that
4444
* may have a occupancy value > resctrl_rmid_realloc_threshold. User can
4545
* change the threshold occupancy value.
4646
*/
4747
static unsigned int rmid_limbo_count;
4848

49-
/**
49+
/*
5050
* @rmid_entry - The entry in the limbo and free lists.
5151
*/
5252
static struct rmid_entry *rmid_ptrs;

0 commit comments

Comments
 (0)