Skip to content

Commit c8765ac

Browse files
committed
Merge remote-tracking branch 'stable/linux-6.8.y' into v6.8+
2 parents ab2ae22 + 9fbb5fc commit c8765ac

178 files changed

Lines changed: 1902 additions & 827 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 8
4-
SUBLEVEL = 7
4+
SUBLEVEL = 8
55
EXTRAVERSION =
66
NAME = Hurr durr I'ma ninja sloth
77

arch/arm64/kernel/head.S

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,11 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL)
569569
adr_l x1, __hyp_text_end
570570
adr_l x2, dcache_clean_poc
571571
blr x2
572+
573+
mov_q x0, INIT_SCTLR_EL2_MMU_OFF
574+
pre_disable_mmu_workaround
575+
msr sctlr_el2, x0
576+
isb
572577
0:
573578
mov_q x0, HCR_HOST_NVHE_FLAGS
574579
msr hcr_el2, x0

arch/arm64/mm/pageattr.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,6 @@ bool kernel_page_present(struct page *page)
219219
pte_t *ptep;
220220
unsigned long addr = (unsigned long)page_address(page);
221221

222-
if (!can_set_direct_map())
223-
return true;
224-
225222
pgdp = pgd_offset_k(addr);
226223
if (pgd_none(READ_ONCE(*pgdp)))
227224
return false;

arch/x86/include/asm/barrier.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ do { \
7979
#define __smp_mb__before_atomic() do { } while (0)
8080
#define __smp_mb__after_atomic() do { } while (0)
8181

82+
/* Writing to CR3 provides a full memory barrier in switch_mm(). */
83+
#define smp_mb__after_switch_mm() do { } while (0)
84+
8285
#include <asm-generic/barrier.h>
8386

8487
#endif /* _ASM_X86_BARRIER_H */

arch/x86/include/asm/kvm_host.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,7 @@ struct kvm_vcpu_arch {
854854
int cpuid_nent;
855855
struct kvm_cpuid_entry2 *cpuid_entries;
856856
struct kvm_hypervisor_cpuid kvm_cpuid;
857+
bool is_amd_compatible;
857858

858859
/*
859860
* FIXME: Drop this macro and use KVM_NR_GOVERNED_FEATURES directly

arch/x86/kernel/cpu/bugs.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,8 @@ static void __init bhi_select_mitigation(void)
16511651
return;
16521652

16531653
/* Retpoline mitigates against BHI unless the CPU has RRSBA behavior */
1654-
if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
1654+
if (boot_cpu_has(X86_FEATURE_RETPOLINE) &&
1655+
!boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE)) {
16551656
spec_ctrl_disable_kernel_rrsba();
16561657
if (rrsba_disabled)
16571658
return;
@@ -2803,11 +2804,13 @@ static const char *spectre_bhi_state(void)
28032804
{
28042805
if (!boot_cpu_has_bug(X86_BUG_BHI))
28052806
return "; BHI: Not affected";
2806-
else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW))
2807+
else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW))
28072808
return "; BHI: BHI_DIS_S";
2808-
else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP))
2809+
else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP))
28092810
return "; BHI: SW loop, KVM: SW loop";
2810-
else if (boot_cpu_has(X86_FEATURE_RETPOLINE) && rrsba_disabled)
2811+
else if (boot_cpu_has(X86_FEATURE_RETPOLINE) &&
2812+
!boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE) &&
2813+
rrsba_disabled)
28112814
return "; BHI: Retpoline";
28122815
else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT))
28132816
return "; BHI: Vulnerable, KVM: SW loop";

arch/x86/kernel/cpu/cpuid-deps.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ static const struct cpuid_dep cpuid_deps[] = {
4444
{ X86_FEATURE_F16C, X86_FEATURE_XMM2, },
4545
{ X86_FEATURE_AES, X86_FEATURE_XMM2 },
4646
{ X86_FEATURE_SHA_NI, X86_FEATURE_XMM2 },
47+
{ X86_FEATURE_GFNI, X86_FEATURE_XMM2 },
4748
{ X86_FEATURE_FMA, X86_FEATURE_AVX },
49+
{ X86_FEATURE_VAES, X86_FEATURE_AVX },
50+
{ X86_FEATURE_VPCLMULQDQ, X86_FEATURE_AVX },
4851
{ X86_FEATURE_AVX2, X86_FEATURE_AVX, },
4952
{ X86_FEATURE_AVX512F, X86_FEATURE_AVX, },
5053
{ X86_FEATURE_AVX512IFMA, X86_FEATURE_AVX512F },
@@ -56,9 +59,6 @@ static const struct cpuid_dep cpuid_deps[] = {
5659
{ X86_FEATURE_AVX512VL, X86_FEATURE_AVX512F },
5760
{ X86_FEATURE_AVX512VBMI, X86_FEATURE_AVX512F },
5861
{ X86_FEATURE_AVX512_VBMI2, X86_FEATURE_AVX512VL },
59-
{ X86_FEATURE_GFNI, X86_FEATURE_AVX512VL },
60-
{ X86_FEATURE_VAES, X86_FEATURE_AVX512VL },
61-
{ X86_FEATURE_VPCLMULQDQ, X86_FEATURE_AVX512VL },
6262
{ X86_FEATURE_AVX512_VNNI, X86_FEATURE_AVX512VL },
6363
{ X86_FEATURE_AVX512_BITALG, X86_FEATURE_AVX512VL },
6464
{ X86_FEATURE_AVX512_4VNNIW, X86_FEATURE_AVX512F },

arch/x86/kvm/cpuid.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ static void kvm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu)
366366

367367
kvm_update_pv_runtime(vcpu);
368368

369+
vcpu->arch.is_amd_compatible = guest_cpuid_is_amd_or_hygon(vcpu);
369370
vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu);
370371
vcpu->arch.reserved_gpa_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu);
371372

arch/x86/kvm/cpuid.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ static inline bool guest_cpuid_is_intel(struct kvm_vcpu *vcpu)
120120
return best && is_guest_vendor_intel(best->ebx, best->ecx, best->edx);
121121
}
122122

123+
static inline bool guest_cpuid_is_amd_compatible(struct kvm_vcpu *vcpu)
124+
{
125+
return vcpu->arch.is_amd_compatible;
126+
}
127+
128+
static inline bool guest_cpuid_is_intel_compatible(struct kvm_vcpu *vcpu)
129+
{
130+
return !guest_cpuid_is_amd_compatible(vcpu);
131+
}
132+
123133
static inline int guest_cpuid_family(struct kvm_vcpu *vcpu)
124134
{
125135
struct kvm_cpuid_entry2 *best;

arch/x86/kvm/lapic.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2771,7 +2771,8 @@ int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type)
27712771
trig_mode = reg & APIC_LVT_LEVEL_TRIGGER;
27722772

27732773
r = __apic_accept_irq(apic, mode, vector, 1, trig_mode, NULL);
2774-
if (r && lvt_type == APIC_LVTPC)
2774+
if (r && lvt_type == APIC_LVTPC &&
2775+
guest_cpuid_is_intel_compatible(apic->vcpu))
27752776
kvm_lapic_set_reg(apic, APIC_LVTPC, reg | APIC_LVT_MASKED);
27762777
return r;
27772778
}

0 commit comments

Comments
 (0)