Skip to content

Commit f8e6f2a

Browse files
committed
Merge remote-tracking branch 'stable/linux-6.15.y' into v6.15+
2 parents 113147c + 097aa9a commit f8e6f2a

109 files changed

Lines changed: 996 additions & 450 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 = 15
4-
SUBLEVEL = 8
4+
SUBLEVEL = 9
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

arch/arm/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ config ARM
121121
select HAVE_KERNEL_XZ
122122
select HAVE_KPROBES if !XIP_KERNEL && !CPU_ENDIAN_BE32 && !CPU_V7M
123123
select HAVE_KRETPROBES if HAVE_KPROBES
124-
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_CAN_USE_KEEP_IN_OVERLAY)
124+
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION if (LD_VERSION >= 23600 || LD_IS_LLD) && LD_CAN_USE_KEEP_IN_OVERLAY
125125
select HAVE_MOD_ARCH_SPECIFIC
126126
select HAVE_NMI
127127
select HAVE_OPTPROBES if !THUMB2_KERNEL

arch/arm/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ endif
149149
# Need -Uarm for gcc < 3.x
150150
KBUILD_CPPFLAGS +=$(cpp-y)
151151
KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
152-
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include asm/unified.h -msoft-float
152+
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include $(srctree)/arch/arm/include/asm/unified.h -msoft-float
153153
KBUILD_RUSTFLAGS += --target=arm-unknown-linux-gnueabi
154154

155155
CHECKFLAGS += -D__arm__

arch/arm64/include/asm/assembler.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@
4141
/*
4242
* Save/restore interrupts.
4343
*/
44+
.macro save_and_disable_daif, flags
45+
mrs \flags, daif
46+
msr daifset, #0xf
47+
.endm
48+
4449
.macro save_and_disable_irq, flags
4550
mrs \flags, daif
4651
msr daifset, #3

arch/arm64/kernel/entry.S

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,7 @@ SYM_CODE_END(__bp_harden_el1_vectors)
825825
*
826826
*/
827827
SYM_FUNC_START(cpu_switch_to)
828+
save_and_disable_daif x11
828829
mov x10, #THREAD_CPU_CONTEXT
829830
add x8, x0, x10
830831
mov x9, sp
@@ -848,6 +849,7 @@ SYM_FUNC_START(cpu_switch_to)
848849
ptrauth_keys_install_kernel x1, x8, x9, x10
849850
scs_save x0
850851
scs_load_current
852+
restore_irq x11
851853
ret
852854
SYM_FUNC_END(cpu_switch_to)
853855
NOKPROBE(cpu_switch_to)
@@ -874,6 +876,7 @@ NOKPROBE(ret_from_fork)
874876
* Calls func(regs) using this CPU's irq stack and shadow irq stack.
875877
*/
876878
SYM_FUNC_START(call_on_irq_stack)
879+
save_and_disable_daif x9
877880
#ifdef CONFIG_SHADOW_CALL_STACK
878881
get_current_task x16
879882
scs_save x16
@@ -888,15 +891,18 @@ SYM_FUNC_START(call_on_irq_stack)
888891

889892
/* Move to the new stack and call the function there */
890893
add sp, x16, #IRQ_STACK_SIZE
894+
restore_irq x9
891895
blr x1
892896

897+
save_and_disable_daif x9
893898
/*
894899
* Restore the SP from the FP, and restore the FP and LR from the frame
895900
* record.
896901
*/
897902
mov sp, x29
898903
ldp x29, x30, [sp], #16
899904
scs_load_current
905+
restore_irq x9
900906
ret
901907
SYM_FUNC_END(call_on_irq_stack)
902908
NOKPROBE(call_on_irq_stack)

arch/x86/hyperv/irqdomain.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
192192
struct pci_dev *dev;
193193
struct hv_interrupt_entry out_entry, *stored_entry;
194194
struct irq_cfg *cfg = irqd_cfg(data);
195-
const cpumask_t *affinity;
196195
int cpu;
197196
u64 status;
198197

@@ -204,8 +203,7 @@ static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
204203
return;
205204
}
206205

207-
affinity = irq_data_get_effective_affinity_mask(data);
208-
cpu = cpumask_first_and(affinity, cpu_online_mask);
206+
cpu = cpumask_first(irq_data_get_effective_affinity_mask(data));
209207

210208
if (data->chip_data) {
211209
/*

arch/x86/include/asm/debugreg.h

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99
#include <asm/cpufeature.h>
1010
#include <asm/msr.h>
1111

12+
/*
13+
* Define bits that are always set to 1 in DR7, only bit 10 is
14+
* architecturally reserved to '1'.
15+
*
16+
* This is also the init/reset value for DR7.
17+
*/
18+
#define DR7_FIXED_1 0x00000400
19+
1220
DECLARE_PER_CPU(unsigned long, cpu_dr7);
1321

1422
#ifndef CONFIG_PARAVIRT_XXL
@@ -100,8 +108,8 @@ static __always_inline void native_set_debugreg(int regno, unsigned long value)
100108

101109
static inline void hw_breakpoint_disable(void)
102110
{
103-
/* Zero the control register for HW Breakpoint */
104-
set_debugreg(0UL, 7);
111+
/* Reset the control register for HW Breakpoint */
112+
set_debugreg(DR7_FIXED_1, 7);
105113

106114
/* Zero-out the individual HW breakpoint address registers */
107115
set_debugreg(0UL, 0);
@@ -125,9 +133,12 @@ static __always_inline unsigned long local_db_save(void)
125133
return 0;
126134

127135
get_debugreg(dr7, 7);
128-
dr7 &= ~0x400; /* architecturally set bit */
136+
137+
/* Architecturally set bit */
138+
dr7 &= ~DR7_FIXED_1;
129139
if (dr7)
130-
set_debugreg(0, 7);
140+
set_debugreg(DR7_FIXED_1, 7);
141+
131142
/*
132143
* Ensure the compiler doesn't lower the above statements into
133144
* the critical section; disabling breakpoints late would not

arch/x86/include/asm/kvm_host.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
#include <asm/apic.h>
3333
#include <asm/pvclock-abi.h>
34+
#include <asm/debugreg.h>
3435
#include <asm/desc.h>
3536
#include <asm/mtrr.h>
3637
#include <asm/msr-index.h>
@@ -247,7 +248,6 @@ enum x86_intercept_stage;
247248
#define DR7_BP_EN_MASK 0x000000ff
248249
#define DR7_GE (1 << 9)
249250
#define DR7_GD (1 << 13)
250-
#define DR7_FIXED_1 0x00000400
251251
#define DR7_VOLATILE 0xffff2bff
252252

253253
#define KVM_GUESTDBG_VALID_MASK \

arch/x86/kernel/cpu/common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2262,7 +2262,7 @@ EXPORT_PER_CPU_SYMBOL(__stack_chk_guard);
22622262
static void initialize_debug_regs(void)
22632263
{
22642264
/* Control register first -- to make sure everything is disabled. */
2265-
set_debugreg(0, 7);
2265+
set_debugreg(DR7_FIXED_1, 7);
22662266
set_debugreg(DR6_RESERVED, 6);
22672267
/* dr5 and dr4 don't exist */
22682268
set_debugreg(0, 3);

arch/x86/kernel/kgdb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ static void kgdb_disable_hw_debug(struct pt_regs *regs)
385385
struct perf_event *bp;
386386

387387
/* Disable hardware debugging while we are in kgdb: */
388-
set_debugreg(0UL, 7);
388+
set_debugreg(DR7_FIXED_1, 7);
389389
for (i = 0; i < HBP_NUM; i++) {
390390
if (!breakinfo[i].enabled)
391391
continue;

0 commit comments

Comments
 (0)