Linux-Next discussions
 help / color / mirror / Atom feed
* Re: linux-next: manual merge of the paulmck tree with the tip-fixes and tip trees
From: Paul E. McKenney @ 2026-07-23 16:03 UTC (permalink / raw)
  To: Mark Brown
  Cc: Chuyi Zhou, Linux Kernel Mailing List, Linux Next Mailing List,
	Thomas Gleixner, Usama Arif
In-Reply-To: <amInSCxaV5NRRWcT@sirena.org.uk>

On Thu, Jul 23, 2026 at 03:38:00PM +0100, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the paulmck tree got a conflict in:
> 
>   kernel/smp.c
> 
> between commits:
> 
>   35551efb155e3 ("smp: Make CSD lock acquisition atomic for debug mode")
>   ec9f57e6fefbc ("smp: Use release stores for csd_lock_record() state")
> 
> from the tip-fixes and tip trees and commit:
> 
>   c2d939be90724 ("smp: Make CSD lock acquisition atomic for debug mode")
> 
> from the paulmck tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.

Excellent!  I have dropped this from my tree in favor of tip-fixes.

							Thanx, Paul

> diff --combined kernel/smp.c
> index b696bcc60c08f,b9448fe3b84ff..0000000000000
> --- a/kernel/smp.c
> +++ b/kernel/smp.c
> @@@ -16,7 -16,6 +16,7 @@@
>   #include <linux/init.h>
>   #include <linux/interrupt.h>
>   #include <linux/gfp.h>
>  +#include <linux/slab.h>
>   #include <linux/smp.h>
>   #include <linux/cpu.h>
>   #include <linux/sched.h>
> @@@ -64,14 -63,7 +64,14 @@@ int smpcfd_prepare_cpu(unsigned int cpu
>   		free_cpumask_var(cfd->cpumask);
>   		return -ENOMEM;
>   	}
>  -	cfd->csd = alloc_percpu(call_single_data_t);
>  +
>  +	/*
>  +	 * Allocate the per-CPU CSD the first time a CPU comes up. It is
>  +	 * not freed when the CPU is offlined, so csd_lock_wait() can access
>  +	 * it even when the CPU was offlined after preemption was re-enabled.
>  +	 */
>  +	if (!cfd->csd)
>  +		cfd->csd = alloc_percpu(call_single_data_t);
>   	if (!cfd->csd) {
>   		free_cpumask_var(cfd->cpumask);
>   		free_cpumask_var(cfd->cpumask_ipi);
> @@@ -87,6 -79,7 +87,6 @@@ int smpcfd_dead_cpu(unsigned int cpu
>   
>   	free_cpumask_var(cfd->cpumask);
>   	free_cpumask_var(cfd->cpumask_ipi);
>  -	free_percpu(cfd->csd);
>   	return 0;
>   }
>   
> @@@ -189,22 -182,16 +189,22 @@@ static atomic_t csd_bug_count = ATOMIC_
>   static void __csd_lock_record(call_single_data_t *csd)
>   {
>   	if (!csd) {
>  -		smp_mb(); /* NULL cur_csd after unlock. */
>  -		__this_cpu_write(cur_csd, NULL);
>  +		/*
>  +		 * Pairs with smp_load_acquire() of cur_csd in
>  +		 * csd_lock_wait_toolong(): orders any preceding CSD
>  +		 * callback/unlock before a remote reader observes NULL.
>  +		 */
>  +		smp_store_release(this_cpu_ptr(&cur_csd), NULL);
>   		return;
>   	}
>   	__this_cpu_write(cur_csd_func, csd->func);
>   	__this_cpu_write(cur_csd_info, csd->info);
>  -	smp_wmb(); /* func and info before csd. */
>  -	__this_cpu_write(cur_csd, csd);
>  -	smp_mb(); /* Update cur_csd before function call. */
>  -		  /* Or before unlock, as the case may be. */
>  +	/*
>  +	 * Pairs with smp_load_acquire() of cur_csd in
>  +	 * csd_lock_wait_toolong(): publishes cur_csd_func and
>  +	 * cur_csd_info before the non-NULL pointer becomes visible.
>  +	 */
>  +	smp_store_release(this_cpu_ptr(&cur_csd), csd);
>   }
>   
>   static __always_inline void csd_lock_record(call_single_data_t *csd)
> @@@ -285,13 -272,7 +285,13 @@@ static bool csd_lock_wait_toolong(call_
>   		cpux = 0;
>   	else
>   		cpux = cpu;
>  -	cpu_cur_csd = smp_load_acquire(&per_cpu(cur_csd, cpux)); /* Before func and info. */
>  +	/*
>  +	 * Pairs with smp_store_release() of cur_csd in __csd_lock_record():
>  +	 * a non-NULL cur_csd here implies cur_csd_func and cur_csd_info
>  +	 * are the matching publication; a NULL value is ordered after any
>  +	 * preceding CSD callback/unlock on the remote CPU.
>  +	 */
>  +	cpu_cur_csd = smp_load_acquire(&per_cpu(cur_csd, cpux));
>   	/* How long since this CSD lock was stuck. */
>   	ts_delta = ts2 - ts0;
>   	pr_alert("csd: %s non-responsive CSD lock (#%d) on CPU#%d, waiting %lld ns for CPU#%02d %pS(%ps).\n",
> @@@ -342,8 -323,6 +342,8 @@@ static void __csd_lock_wait(call_single
>   	int bug_id = 0;
>   	u64 ts0, ts1;
>   
>  +	guard(preempt)();
>  +
>   	ts1 = ts0 = ktime_get_mono_fast_ns();
>   	for (;;) {
>   		if (csd_lock_wait_toolong(csd, ts0, &ts1, &bug_id, &nmessages))
> @@@ -381,15 -360,14 +381,15 @@@ static __always_inline void csd_lock(ca
>   {
>   	if (IS_ENABLED(CONFIG_CSD_LOCK_WAIT_DEBUG) &&
>   	    static_branch_unlikely(&csdlock_debug_enabled)) {
>  -		unsigned int flags;
>   
>   		for (;;) {
>  +			unsigned int flags;
>  +
>   			__csd_lock_wait(csd);
>   			flags = READ_ONCE(csd->node.u_flags);
>  +
>   			if (!(flags & CSD_FLAG_LOCK) &&
>  -			    try_cmpxchg_acquire(&csd->node.u_flags, &flags,
>  -						flags | CSD_FLAG_LOCK))
>  +			    try_cmpxchg_acquire(&csd->node.u_flags, &flags, flags | CSD_FLAG_LOCK))
>   				break;
>   		}
>   	} else {
> @@@ -680,9 -658,17 +680,9 @@@ void flush_smp_call_function_queue(void
>   	local_irq_restore(flags);
>   }
>   
>  -/**
>  - * smp_call_function_single - Run a function on a specific CPU
>  - * @cpu: Specific target CPU for this function.
>  - * @func: The function to run. This must be fast and non-blocking.
>  - * @info: An arbitrary pointer to pass to the function.
>  - * @wait: If true, wait until function has completed on other CPUs.
>  - *
>  - * Returns: %0 on success, else a negative status code.
>  - */
>  -int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
>  -			     int wait)
>  +static int __smp_call_function_single(int cpu, smp_call_func_t func,
>  +				      void *info, const struct cpumask *mask,
>  +				      bool wait)
>   {
>   	call_single_data_t *csd;
>   	call_single_data_t csd_stack = {
> @@@ -699,14 -685,6 +699,14 @@@
>   	 */
>   	this_cpu = get_cpu();
>   
>  +	if (mask) {
>  +		/* Try for same CPU (cheapest) */
>  +		if (!cpumask_test_cpu(this_cpu, mask))
>  +			cpu = sched_numa_find_nth_cpu(mask, 0, cpu_to_node(this_cpu));
>  +		else
>  +			cpu = this_cpu;
>  +	}
>  +
>   	/*
>   	 * Can deadlock when called with interrupts disabled.
>   	 * We allow cpu's that are not yet online though, as no one else can
> @@@ -739,32 -717,13 +739,32 @@@
>   
>   	err = generic_exec_single(cpu, csd);
>   
>  +	/*
>  +	 * @csd is stack-allocated when @wait is true. No concurrent access
>  +	 * except from the IPI completion path, so we can re-enable preemption
>  +	 * early to reduce latency.
>  +	 */
>  +	put_cpu();
>  +
>   	if (wait)
>   		csd_lock_wait(csd);
>   
>  -	put_cpu();
>  -
>   	return err;
>   }
>  +
>  +/**
>  + * smp_call_function_single - Run a function on a specific CPU
>  + * @cpu:	Specific target CPU for this function.
>  + * @func:	The function to run. This must be fast and non-blocking.
>  + * @info:	An arbitrary pointer to pass to the function.
>  + * @wait:	If true, wait until function has completed on other CPUs.
>  + *
>  + * Returns: %0 on success, else a negative status code.
>  + */
>  +int smp_call_function_single(int cpu, smp_call_func_t func, void *info, bool wait)
>  +{
>  +	return __smp_call_function_single(cpu, func, info, NULL, wait);
>  +}
>   EXPORT_SYMBOL(smp_call_function_single);
>   
>   /**
> @@@ -815,10 -774,10 +815,10 @@@ EXPORT_SYMBOL_GPL(smp_call_function_sin
>   
>   /**
>    * smp_call_function_any - Run a function on any of the given cpus
>  - * @mask: The mask of cpus it can run on.
>  - * @func: The function to run. This must be fast and non-blocking.
>  - * @info: An arbitrary pointer to pass to the function.
>  - * @wait: If true, wait until function has completed.
>  + * @mask:	The mask of cpus it can run on.
>  + * @func:	The function to run. This must be fast and non-blocking.
>  + * @info:	An arbitrary pointer to pass to the function.
>  + * @wait:	If true, wait until function has completed.
>    *
>    * Selection preference:
>    *	1) current cpu if in @mask
> @@@ -829,54 -788,20 +829,54 @@@
>   int smp_call_function_any(const struct cpumask *mask,
>   			  smp_call_func_t func, void *info, int wait)
>   {
>  -	unsigned int cpu;
>  -	int ret;
>  -
>  -	/* Try for same CPU (cheapest) */
>  -	cpu = get_cpu();
>  -	if (!cpumask_test_cpu(cpu, mask))
>  -		cpu = sched_numa_find_nth_cpu(mask, 0, cpu_to_node(cpu));
>  -
>  -	ret = smp_call_function_single(cpu, func, info, wait);
>  -	put_cpu();
>  -	return ret;
>  +	return __smp_call_function_single(-1, func, info, mask, wait);
>   }
>   EXPORT_SYMBOL_GPL(smp_call_function_any);
>   
>  +static DEFINE_STATIC_KEY_FALSE(ipi_mask_inlined);
>  +
>  +#ifdef CONFIG_PREEMPTION
>  +
>  +int smp_task_ipi_mask_alloc(struct task_struct *task)
>  +{
>  +	if (static_branch_unlikely(&ipi_mask_inlined))
>  +		return 0;
>  +
>  +	ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr =
>  +		kmalloc(cpumask_size(), GFP_KERNEL);
>  +	if (!ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr)
>  +		return -ENOMEM;
>  +
>  +	return 0;
>  +}
>  +
>  +void smp_task_ipi_mask_free(struct task_struct *task)
>  +{
>  +	if (static_branch_unlikely(&ipi_mask_inlined))
>  +		return;
>  +
>  +	kfree(ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr);
>  +}
>  +
>  +static cpumask_t *smp_task_ipi_mask(struct task_struct *cur)
>  +{
>  +	/*
>  +	 * If cpumask_size() is smaller than or equal to the pointer
>  +	 * size, it stashes the cpumask in the pointer itself to
>  +	 * avoid extra memory allocations.
>  +	 */
>  +	if (static_branch_unlikely(&ipi_mask_inlined))
>  +		return (cpumask_t *)&ACCESS_PRIVATE(cur, ipi_mask).ipi_mask_val;
>  +
>  +	return ACCESS_PRIVATE(cur, ipi_mask).ipi_mask_ptr;
>  +}
>  +#else
>  +static cpumask_t *smp_task_ipi_mask(struct task_struct *cur)
>  +{
>  +	return NULL;
>  +}
>  +#endif
>  +
>   /*
>    * Flags to be used as scf_flags argument of smp_call_function_many_cond().
>    *
> @@@ -891,20 -816,13 +891,20 @@@ static void smp_call_function_many_cond
>   					unsigned int scf_flags,
>   					smp_cond_func_t cond_func)
>   {
>  -	int cpu, last_cpu, this_cpu = smp_processor_id();
>  -	struct call_function_data *cfd;
>  +	struct cpumask *cpumask, *task_mask;
>   	bool wait = scf_flags & SCF_WAIT;
>  -	int nr_cpus = 0;
>  +	struct call_function_data *cfd;
>  +	int cpu, last_cpu, this_cpu;
>   	bool run_remote = false;
>  +	int nr_cpus = 0;
>   
>  -	lockdep_assert_preemption_disabled();
>  +	this_cpu = get_cpu();
>  +	cfd = this_cpu_ptr(&cfd_data);
>  +	task_mask = smp_task_ipi_mask(current);
>  +	if (task_mask)
>  +		cpumask = task_mask;
>  +	else
>  +		cpumask = cfd->cpumask;
>   
>   	/*
>   	 * Can deadlock when called with interrupts disabled.
> @@@ -926,15 -844,16 +926,15 @@@
>   
>   	/* Check if we need remote execution, i.e., any CPU excluding this one. */
>   	if (cpumask_any_and_but(mask, cpu_online_mask, this_cpu) < nr_cpu_ids) {
>  -		cfd = this_cpu_ptr(&cfd_data);
>  -		cpumask_and(cfd->cpumask, mask, cpu_online_mask);
>  -		__cpumask_clear_cpu(this_cpu, cfd->cpumask);
>  +		cpumask_and(cpumask, mask, cpu_online_mask);
>  +		__cpumask_clear_cpu(this_cpu, cpumask);
>   
>   		cpumask_clear(cfd->cpumask_ipi);
>  -		for_each_cpu(cpu, cfd->cpumask) {
>  +		for_each_cpu(cpu, cpumask) {
>   			call_single_data_t *csd = per_cpu_ptr(cfd->csd, cpu);
>   
>   			if (cond_func && !cond_func(cpu, info)) {
>  -				__cpumask_clear_cpu(cpu, cfd->cpumask);
>  +				__cpumask_clear_cpu(cpu, cpumask);
>   				continue;
>   			}
>   
> @@@ -984,18 -903,8 +984,18 @@@
>   		local_irq_restore(flags);
>   	}
>   
>  +	/*
>  +	 * The IPI work has been queued and dispatched. On PREEMPT kernels,
>  +	 * tasks created through dup_task_struct() have task-local wait masks.
>  +	 * The boot init_task can fall back to cfd->cpumask when the mask is
>  +	 * not inlined, but other tasks still use task-local masks and cannot
>  +	 * overwrite it. On !PREEMPT kernels, preempt_enable() cannot schedule
>  +	 * another task, so the per-CPU mask remains protected.
>  +	 */
>  +	put_cpu();
>  +
>   	if (run_remote && wait) {
>  -		for_each_cpu(cpu, cfd->cpumask) {
>  +		for_each_cpu(cpu, cpumask) {
>   			call_single_data_t *csd;
>   
>   			csd = per_cpu_ptr(cfd->csd, cpu);
> @@@ -1006,14 -915,15 +1006,14 @@@
>   
>   /**
>    * smp_call_function_many() - Run a function on a set of CPUs.
>  - * @mask: The set of cpus to run on (only runs on online subset).
>  - * @func: The function to run. This must be fast and non-blocking.
>  - * @info: An arbitrary pointer to pass to the function.
>  - * @wait: If true, wait (atomically) until function has completed
>  - *        on other CPUs.
>  + * @mask:	The set of cpus to run on (only runs on online subset).
>  + * @func:	The function to run. This must be fast and non-blocking.
>  + * @info:	An arbitrary pointer to pass to the function.
>  + * @wait:	If true, wait (atomically) until function has completed
>  + *		on other CPUs.
>    *
>    * You must not call this function with disabled interrupts or from a
>  - * hardware interrupt handler or from a bottom half handler. Preemption
>  - * must be disabled when calling this function.
>  + * hardware interrupt handler or from a bottom half handler.
>    *
>    * @func is not called on the local CPU even if @mask contains it.  Consider
>    * using on_each_cpu_cond_mask() instead if this is not desirable.
> @@@ -1027,10 -937,10 +1027,10 @@@ EXPORT_SYMBOL(smp_call_function_many)
>   
>   /**
>    * smp_call_function() - Run a function on all other CPUs.
>  - * @func: The function to run. This must be fast and non-blocking.
>  - * @info: An arbitrary pointer to pass to the function.
>  - * @wait: If true, wait (atomically) until function has completed
>  - *        on other CPUs.
>  + * @func:	The function to run. This must be fast and non-blocking.
>  + * @info:	An arbitrary pointer to pass to the function.
>  + * @wait:	If true, wait (atomically) until function has completed
>  + *		on other CPUs.
>    *
>    * If @wait is true, then returns once @func has returned; otherwise
>    * it returns just before the target cpu calls @func.
> @@@ -1040,8 -950,9 +1040,8 @@@
>    */
>   void smp_call_function(smp_call_func_t func, void *info, int wait)
>   {
>  -	preempt_disable();
>  -	smp_call_function_many(cpu_online_mask, func, info, wait);
>  -	preempt_enable();
>  +	smp_call_function_many_cond(cpu_online_mask, func, info,
>  +				    wait ? SCF_WAIT : 0, NULL);
>   }
>   EXPORT_SYMBOL(smp_call_function);
>   
> @@@ -1107,9 -1018,6 +1107,9 @@@ EXPORT_SYMBOL(nr_cpu_ids)
>   void __init setup_nr_cpu_ids(void)
>   {
>   	set_nr_cpu_ids(find_last_bit(cpumask_bits(cpu_possible_mask), NR_CPUS) + 1);
>  +
>  +	if (IS_ENABLED(CONFIG_PREEMPTION) && cpumask_size() <= sizeof(unsigned long))
>  +		static_branch_enable(&ipi_mask_inlined);
>   }
>   
>   /* Called by boot processor to activate the rest. */
> @@@ -1146,14 -1054,12 +1146,14 @@@ void __init smp_init(void
>    * @func:	The function to run on all applicable CPUs.
>    *		This must be fast and non-blocking.
>    * @info:	An arbitrary pointer to pass to both functions.
>  - * @wait:	If true, wait (atomically) until function has
>  - *		completed on other CPUs.
>  + * @wait:	If true, wait until function has completed on other CPUs.
>    * @mask:	The set of cpus to run on (only runs on online subset).
>    *
>  - * Preemption is disabled to protect against CPUs going offline but not online.
>  - * CPUs going online during the call will not be seen or sent an IPI.
>  + * Target CPU selection and work queueing are done with preemption
>  + * disabled. This protects against CPUs going offline, but not against
>  + * CPUs coming online concurrently; newly online CPUs are not guaranteed
>  + * to be seen or sent an IPI. If @wait is true, the final wait for remote
>  + * completion happens after that preemption-disabled section.
>    *
>    * You must not call this function with disabled interrupts or
>    * from a hardware interrupt handler or from a bottom half handler.
> @@@ -1166,7 -1072,9 +1166,7 @@@ void on_each_cpu_cond_mask(smp_cond_fun
>   	if (wait)
>   		scf_flags |= SCF_WAIT;
>   
>  -	preempt_disable();
>   	smp_call_function_many_cond(mask, func, info, scf_flags, cond_func);
>  -	preempt_enable();
>   }
>   EXPORT_SYMBOL(on_each_cpu_cond_mask);
>   



^ permalink raw reply

* Re: Missing signoff in the ntfs3 tree
From: Konstantin Komarov @ 2026-07-23 14:56 UTC (permalink / raw)
  To: Mark Brown; +Cc: linux-kernel, linux-next
In-Reply-To: <6bfccbc7-2b99-47ce-bc50-9cbb95b8969c@sirena.org.uk>

On 7/21/26 02:08, Mark Brown wrote:

> On Wed, Jul 15, 2026 at 12:08:16PM +0100, Mark Brown wrote:
>> Commit
>>
>>    f023839df8010 ("fs/ntfs3: fix out-of-bounds read of INDEX_ROOT in reparse/objid init")
>>
>> is missing a Signed-off-by from its author
> This issue is still present today.

I see. I'll fix it, thanks.

Regards,
Konstantin


^ permalink raw reply

* linux-next: manual merge of the kvm-arm tree with the arm64 tree
From: Mark Brown @ 2026-07-23 14:39 UTC (permalink / raw)
  To: Oliver Upton, Marc Zyngier
  Cc: Linux Kernel Mailing List, Linux Next Mailing List,
	Shanker Donthineni, Vikram Sethi, Will Deacon

[-- Attachment #1: Type: text/plain, Size: 1216 bytes --]

Hi all,

Today's linux-next merge of the kvm-arm tree got a conflict in:

  arch/arm64/tools/cpucaps

between commit:

  12aab25ca56ee ("arm64: errata: work around NVIDIA Olympus device store/load ordering")

from the arm64 tree and commit:

  27a263e1a0fa2 ("KVM: arm64: Move GICv3 broken SEIS implementation detection to a CPU errrata")

from the kvm-arm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc arch/arm64/tools/cpucaps
index e43c9095424bf,50373264ecde8..0000000000000
--- a/arch/arm64/tools/cpucaps
+++ b/arch/arm64/tools/cpucaps
@@@ -121,7 -121,7 +121,8 @@@ WORKAROUND_CAVIUM_TX2_219_TV
  WORKAROUND_CLEAN_CACHE
  WORKAROUND_DEVICE_LOAD_ACQUIRE
  WORKAROUND_DISABLE_CNP
+ WORKAROUND_GICv3_BROKEN_SEIS
 +WORKAROUND_NVIDIA_OLYMPUS_1027
  WORKAROUND_PMUV3_IMPDEF_TRAPS
  WORKAROUND_QCOM_FALKOR_E1003
  WORKAROUND_QCOM_ORYON_CNTVOFF

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: duplicate patch in the paulmck tree
From: Mark Brown @ 2026-07-23 14:38 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: Linux Kernel Mailing List, Linux Next Mailing List

[-- Attachment #1: Type: text/plain, Size: 183 bytes --]

Hi all,

The following commit is also in the tip-fixes tree as a different commit
(but the same patch):

  fbced06c64fd6 ("smp: Avoid invalid per-CPU CSD lookup with CSD lock debug")

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the paulmck tree with the tip-fixes and tip trees
From: Mark Brown @ 2026-07-23 14:38 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: Chuyi Zhou, Linux Kernel Mailing List, Linux Next Mailing List,
	Thomas Gleixner, Usama Arif

[-- Attachment #1: Type: text/plain, Size: 15572 bytes --]

Hi all,

Today's linux-next merge of the paulmck tree got a conflict in:

  kernel/smp.c

between commits:

  35551efb155e3 ("smp: Make CSD lock acquisition atomic for debug mode")
  ec9f57e6fefbc ("smp: Use release stores for csd_lock_record() state")

from the tip-fixes and tip trees and commit:

  c2d939be90724 ("smp: Make CSD lock acquisition atomic for debug mode")

from the paulmck tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --combined kernel/smp.c
index b696bcc60c08f,b9448fe3b84ff..0000000000000
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@@ -16,7 -16,6 +16,7 @@@
  #include <linux/init.h>
  #include <linux/interrupt.h>
  #include <linux/gfp.h>
 +#include <linux/slab.h>
  #include <linux/smp.h>
  #include <linux/cpu.h>
  #include <linux/sched.h>
@@@ -64,14 -63,7 +64,14 @@@ int smpcfd_prepare_cpu(unsigned int cpu
  		free_cpumask_var(cfd->cpumask);
  		return -ENOMEM;
  	}
 -	cfd->csd = alloc_percpu(call_single_data_t);
 +
 +	/*
 +	 * Allocate the per-CPU CSD the first time a CPU comes up. It is
 +	 * not freed when the CPU is offlined, so csd_lock_wait() can access
 +	 * it even when the CPU was offlined after preemption was re-enabled.
 +	 */
 +	if (!cfd->csd)
 +		cfd->csd = alloc_percpu(call_single_data_t);
  	if (!cfd->csd) {
  		free_cpumask_var(cfd->cpumask);
  		free_cpumask_var(cfd->cpumask_ipi);
@@@ -87,6 -79,7 +87,6 @@@ int smpcfd_dead_cpu(unsigned int cpu
  
  	free_cpumask_var(cfd->cpumask);
  	free_cpumask_var(cfd->cpumask_ipi);
 -	free_percpu(cfd->csd);
  	return 0;
  }
  
@@@ -189,22 -182,16 +189,22 @@@ static atomic_t csd_bug_count = ATOMIC_
  static void __csd_lock_record(call_single_data_t *csd)
  {
  	if (!csd) {
 -		smp_mb(); /* NULL cur_csd after unlock. */
 -		__this_cpu_write(cur_csd, NULL);
 +		/*
 +		 * Pairs with smp_load_acquire() of cur_csd in
 +		 * csd_lock_wait_toolong(): orders any preceding CSD
 +		 * callback/unlock before a remote reader observes NULL.
 +		 */
 +		smp_store_release(this_cpu_ptr(&cur_csd), NULL);
  		return;
  	}
  	__this_cpu_write(cur_csd_func, csd->func);
  	__this_cpu_write(cur_csd_info, csd->info);
 -	smp_wmb(); /* func and info before csd. */
 -	__this_cpu_write(cur_csd, csd);
 -	smp_mb(); /* Update cur_csd before function call. */
 -		  /* Or before unlock, as the case may be. */
 +	/*
 +	 * Pairs with smp_load_acquire() of cur_csd in
 +	 * csd_lock_wait_toolong(): publishes cur_csd_func and
 +	 * cur_csd_info before the non-NULL pointer becomes visible.
 +	 */
 +	smp_store_release(this_cpu_ptr(&cur_csd), csd);
  }
  
  static __always_inline void csd_lock_record(call_single_data_t *csd)
@@@ -285,13 -272,7 +285,13 @@@ static bool csd_lock_wait_toolong(call_
  		cpux = 0;
  	else
  		cpux = cpu;
 -	cpu_cur_csd = smp_load_acquire(&per_cpu(cur_csd, cpux)); /* Before func and info. */
 +	/*
 +	 * Pairs with smp_store_release() of cur_csd in __csd_lock_record():
 +	 * a non-NULL cur_csd here implies cur_csd_func and cur_csd_info
 +	 * are the matching publication; a NULL value is ordered after any
 +	 * preceding CSD callback/unlock on the remote CPU.
 +	 */
 +	cpu_cur_csd = smp_load_acquire(&per_cpu(cur_csd, cpux));
  	/* How long since this CSD lock was stuck. */
  	ts_delta = ts2 - ts0;
  	pr_alert("csd: %s non-responsive CSD lock (#%d) on CPU#%d, waiting %lld ns for CPU#%02d %pS(%ps).\n",
@@@ -342,8 -323,6 +342,8 @@@ static void __csd_lock_wait(call_single
  	int bug_id = 0;
  	u64 ts0, ts1;
  
 +	guard(preempt)();
 +
  	ts1 = ts0 = ktime_get_mono_fast_ns();
  	for (;;) {
  		if (csd_lock_wait_toolong(csd, ts0, &ts1, &bug_id, &nmessages))
@@@ -381,15 -360,14 +381,15 @@@ static __always_inline void csd_lock(ca
  {
  	if (IS_ENABLED(CONFIG_CSD_LOCK_WAIT_DEBUG) &&
  	    static_branch_unlikely(&csdlock_debug_enabled)) {
 -		unsigned int flags;
  
  		for (;;) {
 +			unsigned int flags;
 +
  			__csd_lock_wait(csd);
  			flags = READ_ONCE(csd->node.u_flags);
 +
  			if (!(flags & CSD_FLAG_LOCK) &&
 -			    try_cmpxchg_acquire(&csd->node.u_flags, &flags,
 -						flags | CSD_FLAG_LOCK))
 +			    try_cmpxchg_acquire(&csd->node.u_flags, &flags, flags | CSD_FLAG_LOCK))
  				break;
  		}
  	} else {
@@@ -680,9 -658,17 +680,9 @@@ void flush_smp_call_function_queue(void
  	local_irq_restore(flags);
  }
  
 -/**
 - * smp_call_function_single - Run a function on a specific CPU
 - * @cpu: Specific target CPU for this function.
 - * @func: The function to run. This must be fast and non-blocking.
 - * @info: An arbitrary pointer to pass to the function.
 - * @wait: If true, wait until function has completed on other CPUs.
 - *
 - * Returns: %0 on success, else a negative status code.
 - */
 -int smp_call_function_single(int cpu, smp_call_func_t func, void *info,
 -			     int wait)
 +static int __smp_call_function_single(int cpu, smp_call_func_t func,
 +				      void *info, const struct cpumask *mask,
 +				      bool wait)
  {
  	call_single_data_t *csd;
  	call_single_data_t csd_stack = {
@@@ -699,14 -685,6 +699,14 @@@
  	 */
  	this_cpu = get_cpu();
  
 +	if (mask) {
 +		/* Try for same CPU (cheapest) */
 +		if (!cpumask_test_cpu(this_cpu, mask))
 +			cpu = sched_numa_find_nth_cpu(mask, 0, cpu_to_node(this_cpu));
 +		else
 +			cpu = this_cpu;
 +	}
 +
  	/*
  	 * Can deadlock when called with interrupts disabled.
  	 * We allow cpu's that are not yet online though, as no one else can
@@@ -739,32 -717,13 +739,32 @@@
  
  	err = generic_exec_single(cpu, csd);
  
 +	/*
 +	 * @csd is stack-allocated when @wait is true. No concurrent access
 +	 * except from the IPI completion path, so we can re-enable preemption
 +	 * early to reduce latency.
 +	 */
 +	put_cpu();
 +
  	if (wait)
  		csd_lock_wait(csd);
  
 -	put_cpu();
 -
  	return err;
  }
 +
 +/**
 + * smp_call_function_single - Run a function on a specific CPU
 + * @cpu:	Specific target CPU for this function.
 + * @func:	The function to run. This must be fast and non-blocking.
 + * @info:	An arbitrary pointer to pass to the function.
 + * @wait:	If true, wait until function has completed on other CPUs.
 + *
 + * Returns: %0 on success, else a negative status code.
 + */
 +int smp_call_function_single(int cpu, smp_call_func_t func, void *info, bool wait)
 +{
 +	return __smp_call_function_single(cpu, func, info, NULL, wait);
 +}
  EXPORT_SYMBOL(smp_call_function_single);
  
  /**
@@@ -815,10 -774,10 +815,10 @@@ EXPORT_SYMBOL_GPL(smp_call_function_sin
  
  /**
   * smp_call_function_any - Run a function on any of the given cpus
 - * @mask: The mask of cpus it can run on.
 - * @func: The function to run. This must be fast and non-blocking.
 - * @info: An arbitrary pointer to pass to the function.
 - * @wait: If true, wait until function has completed.
 + * @mask:	The mask of cpus it can run on.
 + * @func:	The function to run. This must be fast and non-blocking.
 + * @info:	An arbitrary pointer to pass to the function.
 + * @wait:	If true, wait until function has completed.
   *
   * Selection preference:
   *	1) current cpu if in @mask
@@@ -829,54 -788,20 +829,54 @@@
  int smp_call_function_any(const struct cpumask *mask,
  			  smp_call_func_t func, void *info, int wait)
  {
 -	unsigned int cpu;
 -	int ret;
 -
 -	/* Try for same CPU (cheapest) */
 -	cpu = get_cpu();
 -	if (!cpumask_test_cpu(cpu, mask))
 -		cpu = sched_numa_find_nth_cpu(mask, 0, cpu_to_node(cpu));
 -
 -	ret = smp_call_function_single(cpu, func, info, wait);
 -	put_cpu();
 -	return ret;
 +	return __smp_call_function_single(-1, func, info, mask, wait);
  }
  EXPORT_SYMBOL_GPL(smp_call_function_any);
  
 +static DEFINE_STATIC_KEY_FALSE(ipi_mask_inlined);
 +
 +#ifdef CONFIG_PREEMPTION
 +
 +int smp_task_ipi_mask_alloc(struct task_struct *task)
 +{
 +	if (static_branch_unlikely(&ipi_mask_inlined))
 +		return 0;
 +
 +	ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr =
 +		kmalloc(cpumask_size(), GFP_KERNEL);
 +	if (!ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr)
 +		return -ENOMEM;
 +
 +	return 0;
 +}
 +
 +void smp_task_ipi_mask_free(struct task_struct *task)
 +{
 +	if (static_branch_unlikely(&ipi_mask_inlined))
 +		return;
 +
 +	kfree(ACCESS_PRIVATE(task, ipi_mask).ipi_mask_ptr);
 +}
 +
 +static cpumask_t *smp_task_ipi_mask(struct task_struct *cur)
 +{
 +	/*
 +	 * If cpumask_size() is smaller than or equal to the pointer
 +	 * size, it stashes the cpumask in the pointer itself to
 +	 * avoid extra memory allocations.
 +	 */
 +	if (static_branch_unlikely(&ipi_mask_inlined))
 +		return (cpumask_t *)&ACCESS_PRIVATE(cur, ipi_mask).ipi_mask_val;
 +
 +	return ACCESS_PRIVATE(cur, ipi_mask).ipi_mask_ptr;
 +}
 +#else
 +static cpumask_t *smp_task_ipi_mask(struct task_struct *cur)
 +{
 +	return NULL;
 +}
 +#endif
 +
  /*
   * Flags to be used as scf_flags argument of smp_call_function_many_cond().
   *
@@@ -891,20 -816,13 +891,20 @@@ static void smp_call_function_many_cond
  					unsigned int scf_flags,
  					smp_cond_func_t cond_func)
  {
 -	int cpu, last_cpu, this_cpu = smp_processor_id();
 -	struct call_function_data *cfd;
 +	struct cpumask *cpumask, *task_mask;
  	bool wait = scf_flags & SCF_WAIT;
 -	int nr_cpus = 0;
 +	struct call_function_data *cfd;
 +	int cpu, last_cpu, this_cpu;
  	bool run_remote = false;
 +	int nr_cpus = 0;
  
 -	lockdep_assert_preemption_disabled();
 +	this_cpu = get_cpu();
 +	cfd = this_cpu_ptr(&cfd_data);
 +	task_mask = smp_task_ipi_mask(current);
 +	if (task_mask)
 +		cpumask = task_mask;
 +	else
 +		cpumask = cfd->cpumask;
  
  	/*
  	 * Can deadlock when called with interrupts disabled.
@@@ -926,15 -844,16 +926,15 @@@
  
  	/* Check if we need remote execution, i.e., any CPU excluding this one. */
  	if (cpumask_any_and_but(mask, cpu_online_mask, this_cpu) < nr_cpu_ids) {
 -		cfd = this_cpu_ptr(&cfd_data);
 -		cpumask_and(cfd->cpumask, mask, cpu_online_mask);
 -		__cpumask_clear_cpu(this_cpu, cfd->cpumask);
 +		cpumask_and(cpumask, mask, cpu_online_mask);
 +		__cpumask_clear_cpu(this_cpu, cpumask);
  
  		cpumask_clear(cfd->cpumask_ipi);
 -		for_each_cpu(cpu, cfd->cpumask) {
 +		for_each_cpu(cpu, cpumask) {
  			call_single_data_t *csd = per_cpu_ptr(cfd->csd, cpu);
  
  			if (cond_func && !cond_func(cpu, info)) {
 -				__cpumask_clear_cpu(cpu, cfd->cpumask);
 +				__cpumask_clear_cpu(cpu, cpumask);
  				continue;
  			}
  
@@@ -984,18 -903,8 +984,18 @@@
  		local_irq_restore(flags);
  	}
  
 +	/*
 +	 * The IPI work has been queued and dispatched. On PREEMPT kernels,
 +	 * tasks created through dup_task_struct() have task-local wait masks.
 +	 * The boot init_task can fall back to cfd->cpumask when the mask is
 +	 * not inlined, but other tasks still use task-local masks and cannot
 +	 * overwrite it. On !PREEMPT kernels, preempt_enable() cannot schedule
 +	 * another task, so the per-CPU mask remains protected.
 +	 */
 +	put_cpu();
 +
  	if (run_remote && wait) {
 -		for_each_cpu(cpu, cfd->cpumask) {
 +		for_each_cpu(cpu, cpumask) {
  			call_single_data_t *csd;
  
  			csd = per_cpu_ptr(cfd->csd, cpu);
@@@ -1006,14 -915,15 +1006,14 @@@
  
  /**
   * smp_call_function_many() - Run a function on a set of CPUs.
 - * @mask: The set of cpus to run on (only runs on online subset).
 - * @func: The function to run. This must be fast and non-blocking.
 - * @info: An arbitrary pointer to pass to the function.
 - * @wait: If true, wait (atomically) until function has completed
 - *        on other CPUs.
 + * @mask:	The set of cpus to run on (only runs on online subset).
 + * @func:	The function to run. This must be fast and non-blocking.
 + * @info:	An arbitrary pointer to pass to the function.
 + * @wait:	If true, wait (atomically) until function has completed
 + *		on other CPUs.
   *
   * You must not call this function with disabled interrupts or from a
 - * hardware interrupt handler or from a bottom half handler. Preemption
 - * must be disabled when calling this function.
 + * hardware interrupt handler or from a bottom half handler.
   *
   * @func is not called on the local CPU even if @mask contains it.  Consider
   * using on_each_cpu_cond_mask() instead if this is not desirable.
@@@ -1027,10 -937,10 +1027,10 @@@ EXPORT_SYMBOL(smp_call_function_many)
  
  /**
   * smp_call_function() - Run a function on all other CPUs.
 - * @func: The function to run. This must be fast and non-blocking.
 - * @info: An arbitrary pointer to pass to the function.
 - * @wait: If true, wait (atomically) until function has completed
 - *        on other CPUs.
 + * @func:	The function to run. This must be fast and non-blocking.
 + * @info:	An arbitrary pointer to pass to the function.
 + * @wait:	If true, wait (atomically) until function has completed
 + *		on other CPUs.
   *
   * If @wait is true, then returns once @func has returned; otherwise
   * it returns just before the target cpu calls @func.
@@@ -1040,8 -950,9 +1040,8 @@@
   */
  void smp_call_function(smp_call_func_t func, void *info, int wait)
  {
 -	preempt_disable();
 -	smp_call_function_many(cpu_online_mask, func, info, wait);
 -	preempt_enable();
 +	smp_call_function_many_cond(cpu_online_mask, func, info,
 +				    wait ? SCF_WAIT : 0, NULL);
  }
  EXPORT_SYMBOL(smp_call_function);
  
@@@ -1107,9 -1018,6 +1107,9 @@@ EXPORT_SYMBOL(nr_cpu_ids)
  void __init setup_nr_cpu_ids(void)
  {
  	set_nr_cpu_ids(find_last_bit(cpumask_bits(cpu_possible_mask), NR_CPUS) + 1);
 +
 +	if (IS_ENABLED(CONFIG_PREEMPTION) && cpumask_size() <= sizeof(unsigned long))
 +		static_branch_enable(&ipi_mask_inlined);
  }
  
  /* Called by boot processor to activate the rest. */
@@@ -1146,14 -1054,12 +1146,14 @@@ void __init smp_init(void
   * @func:	The function to run on all applicable CPUs.
   *		This must be fast and non-blocking.
   * @info:	An arbitrary pointer to pass to both functions.
 - * @wait:	If true, wait (atomically) until function has
 - *		completed on other CPUs.
 + * @wait:	If true, wait until function has completed on other CPUs.
   * @mask:	The set of cpus to run on (only runs on online subset).
   *
 - * Preemption is disabled to protect against CPUs going offline but not online.
 - * CPUs going online during the call will not be seen or sent an IPI.
 + * Target CPU selection and work queueing are done with preemption
 + * disabled. This protects against CPUs going offline, but not against
 + * CPUs coming online concurrently; newly online CPUs are not guaranteed
 + * to be seen or sent an IPI. If @wait is true, the final wait for remote
 + * completion happens after that preemption-disabled section.
   *
   * You must not call this function with disabled interrupts or
   * from a hardware interrupt handler or from a bottom half handler.
@@@ -1166,7 -1072,9 +1166,7 @@@ void on_each_cpu_cond_mask(smp_cond_fun
  	if (wait)
  		scf_flags |= SCF_WAIT;
  
 -	preempt_disable();
  	smp_call_function_many_cond(mask, func, info, scf_flags, cond_func);
 -	preempt_enable();
  }
  EXPORT_SYMBOL(on_each_cpu_cond_mask);
  

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the bluetooth tree with the net tree
From: Mark Brown @ 2026-07-23 14:05 UTC (permalink / raw)
  To: Marcel Holtmann, Johan Hedberg
  Cc: Linux Kernel Mailing List, Linux Next Mailing List,
	Luiz Augusto von Dentz, Pengpeng Hou, Zijun Hu

[-- Attachment #1: Type: text/plain, Size: 12554 bytes --]

Hi all,

Today's linux-next merge of the bluetooth tree got a conflict in:

  drivers/bluetooth/btusb.c

between commit:

  df541cd485ff8 ("Bluetooth: btusb: validate Realtek vendor event length")

from the net tree and commits:

  891916abe16fc ("Bluetooth: btusb: validate Realtek vendor event length")
  90ae39404c94e ("Bluetooth: btusb: QCA: Replace HCI_VENDOR_PKT usages with HCI_EV_VENDOR")
  6f55ad8fb0acd ("Bluetooth: btusb: Realtek: Replace HCI_VENDOR_PKT usage with HCI_EV_VENDOR")

from the bluetooth tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --combined drivers/bluetooth/btusb.c
index 8f7ed469cac68,4d59b28ab30f2..0000000000000
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@@ -297,6 -297,8 +297,8 @@@ static const struct usb_device_id quirk
  						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x13d3, 0x3501), .driver_info = BTUSB_QCA_ROME |
  						     BTUSB_WIDEBAND_SPEECH },
+ 	{ USB_DEVICE(0x13d3, 0x3503), .driver_info = BTUSB_QCA_ROME |
+ 						     BTUSB_WIDEBAND_SPEECH },
  
  	/* QCA WCN6855 chipset */
  	{ USB_DEVICE(0x0489, 0xe0c7), .driver_info = BTUSB_QCA_WCN6855 |
@@@ -679,6 -681,8 +681,8 @@@
  	{ USB_DEVICE(0x13d3, 0x3606), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH },
  	/* MediaTek MT7902 Bluetooth devices */
+ 	{ USB_DEVICE(0x0489, 0xe156), .driver_info = BTUSB_MEDIATEK |
+ 						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x0e8d, 0x1ede), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x13d3, 0x3579), .driver_info = BTUSB_MEDIATEK |
@@@ -796,6 -800,8 +800,8 @@@
  						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x13d3, 0x3613), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH },
+ 	{ USB_DEVICE(0x13d3, 0x3625), .driver_info = BTUSB_MEDIATEK |
+ 						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x13d3, 0x3627), .driver_info = BTUSB_MEDIATEK |
  						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x13d3, 0x3628), .driver_info = BTUSB_MEDIATEK |
@@@ -850,6 -856,12 +856,12 @@@
  	{ USB_DEVICE(0x37ad, 0x0600), .driver_info = BTUSB_REALTEK |
  						     BTUSB_WIDEBAND_SPEECH },
  
+ 	/* Additional Realtek 8761CU Bluetooth devices */
+ 	{ USB_DEVICE(0x0b05, 0x1bef), .driver_info = BTUSB_REALTEK |
+ 						     BTUSB_WIDEBAND_SPEECH },
+ 	{ USB_DEVICE(0x0b05, 0x1d70), .driver_info = BTUSB_REALTEK |
+ 						     BTUSB_WIDEBAND_SPEECH },
+ 
  	/* Additional Realtek 8821AE Bluetooth devices */
  	{ USB_DEVICE(0x0b05, 0x17dc), .driver_info = BTUSB_REALTEK },
  	{ USB_DEVICE(0x13d3, 0x3414), .driver_info = BTUSB_REALTEK },
@@@ -882,6 -894,8 +894,8 @@@
  						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x0bda, 0xc123), .driver_info = BTUSB_REALTEK |
  						     BTUSB_WIDEBAND_SPEECH },
+ 	{ USB_DEVICE(0x1357, 0xc123), .driver_info = BTUSB_REALTEK |
+ 						     BTUSB_WIDEBAND_SPEECH },
  	{ USB_DEVICE(0x0cb5, 0xc547), .driver_info = BTUSB_REALTEK |
  						     BTUSB_WIDEBAND_SPEECH },
  
@@@ -937,6 -951,10 +951,10 @@@ struct qca_dump_info 
  	u16 ram_dump_seqno;
  };
  
+ struct btqca_data {
+ 	struct qca_dump_info qca_dump;
+ };
+ 
  #define BTUSB_MAX_ISOC_FRAMES	10
  
  #define BTUSB_INTR_RUNNING	0
@@@ -1010,6 -1028,7 +1028,7 @@@ struct btusb_data 
  	bool usb_alt6_packet_flow;
  	int isoc_altsetting;
  	int suspend_count;
+ 	const struct usb_device_id *match_id;
  
  	int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
  	int (*recv_acl)(struct hci_dev *hdev, struct sk_buff *skb);
@@@ -1022,8 -1041,6 +1041,6 @@@
  	int (*disconnect)(struct hci_dev *hdev);
  
  	int oob_wake_irq;   /* irq for out-of-band wake-on-bt */
- 
- 	struct qca_dump_info qca_dump;
  };
  
  static void btusb_reset(struct hci_dev *hdev)
@@@ -2783,7 -2800,7 +2800,7 @@@ static int btusb_setup_realtek(struct h
  static int btusb_recv_event_realtek(struct hci_dev *hdev, struct sk_buff *skb)
  {
  	if (skb->len >= HCI_EVENT_HDR_SIZE + 1 &&
- 	    skb->data[0] == HCI_VENDOR_PKT &&
+ 	    skb->data[0] == HCI_EV_VENDOR &&
  	    skb->data[2] == RTK_SUB_EVENT_CODE_COREDUMP) {
  		struct rtk_dev_coredump_hdr hdr = {
  			.code = RTK_DEVCOREDUMP_CODE_MEMDUMP,
@@@ -3072,14 -3089,15 +3089,15 @@@ static int btusb_set_bdaddr_ath3012(str
  static int btusb_set_bdaddr_wcn6855(struct hci_dev *hdev,
  				const bdaddr_t *bdaddr)
  {
+ 	bdaddr_t bdaddr_swapped;
  	struct sk_buff *skb;
- 	u8 buf[6];
  	long ret;
  
- 	memcpy(buf, bdaddr, sizeof(bdaddr_t));
+ 	baswap(&bdaddr_swapped, bdaddr);
  
- 	skb = __hci_cmd_sync_ev(hdev, 0xfc14, sizeof(buf), buf,
- 				HCI_EV_CMD_COMPLETE, HCI_INIT_TIMEOUT);
+ 	skb = __hci_cmd_sync_ev(hdev, 0xfc14, sizeof(bdaddr_swapped),
+ 				&bdaddr_swapped, HCI_EV_CMD_COMPLETE,
+ 				HCI_INIT_TIMEOUT);
  	if (IS_ERR(skb)) {
  		ret = PTR_ERR(skb);
  		bt_dev_err(hdev, "Change address command failed (%ld)", ret);
@@@ -3115,14 -3133,15 +3133,15 @@@ struct qca_dump_hdr 
  static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb)
  {
  	char buf[128];
- 	struct btusb_data *btdata = hci_get_drvdata(hdev);
+ 	struct btqca_data *btqca_data = hci_get_priv(hdev);
+ 	struct qca_dump_info *qca_dump_ptr = &btqca_data->qca_dump;
  
  	snprintf(buf, sizeof(buf), "Controller Name: 0x%x\n",
- 			btdata->qca_dump.controller_id);
+ 			qca_dump_ptr->controller_id);
  	skb_put_data(skb, buf, strlen(buf));
  
  	snprintf(buf, sizeof(buf), "Firmware Version: 0x%x\n",
- 			btdata->qca_dump.fw_version);
+ 			qca_dump_ptr->fw_version);
  	skb_put_data(skb, buf, strlen(buf));
  
  	snprintf(buf, sizeof(buf), "Driver: %s\nVendor: qca\n",
@@@ -3130,7 -3149,7 +3149,7 @@@
  	skb_put_data(skb, buf, strlen(buf));
  
  	snprintf(buf, sizeof(buf), "VID: 0x%x\nPID:0x%x\n",
- 			btdata->qca_dump.id_vendor, btdata->qca_dump.id_product);
+ 			qca_dump_ptr->id_vendor, qca_dump_ptr->id_product);
  	skb_put_data(skb, buf, strlen(buf));
  
  	snprintf(buf, sizeof(buf), "Lmp Subversion: 0x%x\n",
@@@ -3159,6 -3178,8 +3178,8 @@@ static int handle_dump_pkt_qca(struct h
  
  	struct qca_dump_hdr *dump_hdr;
  	struct btusb_data *btdata = hci_get_drvdata(hdev);
+ 	struct btqca_data *btqca_data = hci_get_priv(hdev);
+ 	struct qca_dump_info *qca_dump_ptr = &btqca_data->qca_dump;
  	struct usb_device *udev = btdata->udev;
  
  	pkt_type = hci_skb_pkt_type(skb);
@@@ -3186,8 -3207,8 +3207,8 @@@
  			goto out;
  		}
  
- 		btdata->qca_dump.ram_dump_size = dump_size;
- 		btdata->qca_dump.ram_dump_seqno = 0;
+ 		qca_dump_ptr->ram_dump_size = dump_size;
+ 		qca_dump_ptr->ram_dump_seqno = 0;
  
  		skb_pull(skb, offsetof(struct qca_dump_hdr, data0));
  
@@@ -3199,29 -3220,29 +3220,29 @@@
  		skb_pull(skb, offsetof(struct qca_dump_hdr, data));
  	}
  
- 	if (!btdata->qca_dump.ram_dump_size) {
+ 	if (!qca_dump_ptr->ram_dump_size) {
  		ret = -EINVAL;
  		bt_dev_err(hdev, "memdump is not active");
  		goto out;
  	}
  
- 	if ((seqno > btdata->qca_dump.ram_dump_seqno + 1) && (seqno != QCA_LAST_SEQUENCE_NUM)) {
- 		dump_size = QCA_MEMDUMP_PKT_SIZE * (seqno - btdata->qca_dump.ram_dump_seqno - 1);
+ 	if ((seqno > qca_dump_ptr->ram_dump_seqno + 1) && seqno != QCA_LAST_SEQUENCE_NUM) {
+ 		dump_size = QCA_MEMDUMP_PKT_SIZE * (seqno - qca_dump_ptr->ram_dump_seqno - 1);
  		hci_devcd_append_pattern(hdev, 0x0, dump_size);
  		bt_dev_err(hdev,
  			   "expected memdump seqno(%u) is not received(%u)\n",
- 			   btdata->qca_dump.ram_dump_seqno, seqno);
- 		btdata->qca_dump.ram_dump_seqno = seqno;
+ 			   qca_dump_ptr->ram_dump_seqno, seqno);
+ 		qca_dump_ptr->ram_dump_seqno = seqno;
  		kfree_skb(skb);
  		return ret;
  	}
  
  	hci_devcd_append(hdev, skb);
- 	btdata->qca_dump.ram_dump_seqno++;
+ 	qca_dump_ptr->ram_dump_seqno++;
  	if (seqno == QCA_LAST_SEQUENCE_NUM) {
  		bt_dev_info(hdev,
  				"memdump done: pkts(%u), total(%u)\n",
- 				btdata->qca_dump.ram_dump_seqno, btdata->qca_dump.ram_dump_size);
+ 				qca_dump_ptr->ram_dump_seqno, qca_dump_ptr->ram_dump_size);
  
  		hci_devcd_complete(hdev);
  		goto out;
@@@ -3229,10 -3250,10 +3250,10 @@@
  	return ret;
  
  out:
- 	if (btdata->qca_dump.ram_dump_size)
+ 	if (qca_dump_ptr->ram_dump_size)
  		usb_enable_autosuspend(udev);
- 	btdata->qca_dump.ram_dump_size = 0;
- 	btdata->qca_dump.ram_dump_seqno = 0;
+ 	qca_dump_ptr->ram_dump_size = 0;
+ 	qca_dump_ptr->ram_dump_seqno = 0;
  	clear_bit(BTUSB_HW_SSR_ACTIVE, &btdata->flags);
  
  	if (ret < 0)
@@@ -3257,7 -3278,7 +3278,7 @@@ static bool acl_pkt_is_dump_qca(struct 
  		goto out;
  
  	event_hdr = skb_pull_data(clone, sizeof(*event_hdr));
- 	if (!event_hdr || (event_hdr->evt != HCI_VENDOR_PKT))
+ 	if (!event_hdr || event_hdr->evt != HCI_EV_VENDOR)
  		goto out;
  
  	dump_hdr = skb_pull_data(clone, sizeof(*dump_hdr));
@@@ -3283,7 -3304,7 +3304,7 @@@ static bool evt_pkt_is_dump_qca(struct 
  		return false;
  
  	event_hdr = skb_pull_data(clone, sizeof(*event_hdr));
- 	if (!event_hdr || (event_hdr->evt != HCI_VENDOR_PKT))
+ 	if (!event_hdr || event_hdr->evt != HCI_EV_VENDOR)
  		goto out;
  
  	dump_hdr = skb_pull_data(clone, sizeof(*dump_hdr));
@@@ -3707,8 -3728,12 +3728,12 @@@ static int btusb_setup_qca(struct hci_d
  	if (err < 0)
  		return err;
  
- 	btdata->qca_dump.fw_version = le32_to_cpu(ver.patch_version);
- 	btdata->qca_dump.controller_id = le32_to_cpu(ver.rom_version);
+ 	if (btdata->match_id->driver_info & BTUSB_QCA_WCN6855) {
+ 		struct btqca_data *btqca_data = hci_get_priv(hdev);
+ 
+ 		btqca_data->qca_dump.fw_version = le32_to_cpu(ver.patch_version);
+ 		btqca_data->qca_dump.controller_id = le32_to_cpu(ver.rom_version);
+ 	}
  
  	if (!(status & QCA_SYSCFG_UPDATED)) {
  		err = btusb_setup_qca_load_nvm(hdev, &ver, info);
@@@ -3889,16 -3914,13 +3914,13 @@@ static bool btusb_wakeup(struct hci_de
  
  static int btusb_shutdown_qca(struct hci_dev *hdev)
  {
- 	struct sk_buff *skb;
+ 	int err;
  
- 	skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
- 	if (IS_ERR(skb)) {
+ 	err = __hci_reset_sync(hdev);
+ 	if (err)
  		bt_dev_err(hdev, "HCI reset during shutdown failed");
- 		return PTR_ERR(skb);
- 	}
- 	kfree_skb(skb);
  
- 	return 0;
+ 	return err;
  }
  
  static ssize_t force_poll_sync_read(struct file *file, char __user *user_buf,
@@@ -4082,7 -4104,7 +4104,7 @@@ static int btusb_probe(struct usb_inter
  	struct btusb_data *data;
  	struct hci_dev *hdev;
  	unsigned ifnum_base;
- 	int err, priv_size;
+ 	int err, priv_size = 0;
  
  	BT_DBG("intf %p id %p", intf, id);
  
@@@ -4101,7 -4123,7 +4123,7 @@@
  			id = match;
  	}
  
- 	if (id->driver_info == BTUSB_IGNORE)
+ 	if (id->driver_info & BTUSB_IGNORE)
  		return -ENODEV;
  
  	if (id->driver_info & BTUSB_ATH3012) {
@@@ -4119,6 -4141,7 +4141,7 @@@
  	if (!data)
  		return -ENOMEM;
  
+ 	data->match_id = id;
  	err = usb_find_common_endpoints(intf->cur_altsetting, &data->bulk_rx_ep,
  					&data->bulk_tx_ep, &data->intr_ep, NULL);
  	if (err)
@@@ -4152,8 -4175,6 +4175,6 @@@
  	init_usb_anchor(&data->ctrl_anchor);
  	spin_lock_init(&data->rxlock);
  
- 	priv_size = 0;
- 
  	data->recv_event = hci_recv_frame;
  	data->recv_bulk = btusb_recv_bulk;
  
@@@ -4172,6 -4193,9 +4193,9 @@@
  	} else if (id->driver_info & BTUSB_MEDIATEK) {
  		/* Allocate extra space for Mediatek device */
  		priv_size += sizeof(struct btmtk_data);
+ 	} else if (id->driver_info & BTUSB_QCA_WCN6855) {
+ 		/* Allocate extra space for QCA WCN6855 device */
+ 		priv_size += sizeof(struct btqca_data);
  	}
  
  	data->recv_acl = hci_recv_frame;
@@@ -4314,8 -4338,10 +4338,10 @@@
  	}
  
  	if (id->driver_info & BTUSB_QCA_WCN6855) {
- 		data->qca_dump.id_vendor = id->idVendor;
- 		data->qca_dump.id_product = id->idProduct;
+ 		struct btqca_data *btqca_data = hci_get_priv(hdev);
+ 
+ 		btqca_data->qca_dump.id_vendor = id->idVendor;
+ 		btqca_data->qca_dump.id_product = id->idProduct;
  		data->recv_event = btusb_recv_evt_qca;
  		data->recv_acl = btusb_recv_acl_qca;
  		hci_devcd_register(hdev, btusb_coredump_qca, btusb_dump_hdr_qca, NULL);

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: duplicate patch in the bluetooth tree
From: Mark Brown @ 2026-07-23 14:05 UTC (permalink / raw)
  To: Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz
  Cc: Linux Kernel Mailing List, Linux Next Mailing List

[-- Attachment #1: Type: text/plain, Size: 173 bytes --]

Hi all,

The following commit is also in the net tree as a different commit
(but the same patch):

   891916abe16fc (Bluetooth: btusb: validate Realtek vendor event length)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the net-next tree with the net tree
From: Mark Brown @ 2026-07-23 13:41 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski, Paolo Abeni, Networking
  Cc: Eric Dumazet, Linux Kernel Mailing List, Linux Next Mailing List,
	Michael Bommarito

[-- Attachment #1: Type: text/plain, Size: 1904 bytes --]

Hi all,

Today's linux-next merge of the net-next tree got a conflict in:

  drivers/net/amt.c

between commit:

  3656a79f94c47 ("amt: re-read skb header pointers after every pull")

from the net tree and commit:

  586c4dcf28eb6 ("amt: no longer rely on RTNL in amt_fill_info()")

from the net-next tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc drivers/net/amt.c
index b733309b866ff,f8169c5512a59..0000000000000
--- a/drivers/net/amt.c
+++ b/drivers/net/amt.c
@@@ -2811,7 -2775,8 +2814,8 @@@ drop
  static int amt_rcv(struct sock *sk, struct sk_buff *skb)
  {
  	struct amt_dev *amt;
 -	struct iphdr *iph;
 +	__be32 saddr;
+ 	__be32 remote_ip;
  	int type;
  	bool err;
  
@@@ -2822,9 -2787,10 +2826,10 @@@
  		kfree_skb(skb);
  		goto out;
  	}
+ 	remote_ip = READ_ONCE(amt->remote_ip);
  
  	skb->dev = amt->dev;
 -	iph = ip_hdr(skb);
 +	saddr = ip_hdr(skb)->saddr;
  	type = amt_parse_type(skb);
  	if (type == -1) {
  		err = true;
@@@ -2846,7 -2812,7 +2851,7 @@@
  			}
  			goto out;
  		case AMT_MSG_MULTICAST_DATA:
- 			if (saddr != amt->remote_ip) {
 -			if (iph->saddr != remote_ip) {
++			if (saddr != remote_ip) {
  				netdev_dbg(amt->dev, "Invalid Relay IP\n");
  				err = true;
  				goto drop;
@@@ -2857,7 -2823,7 +2862,7 @@@
  			else
  				goto out;
  		case AMT_MSG_MEMBERSHIP_QUERY:
- 			if (saddr != amt->remote_ip) {
 -			if (iph->saddr != remote_ip) {
++			if (saddr != remote_ip) {
  				netdev_dbg(amt->dev, "Invalid Relay IP\n");
  				err = true;
  				goto drop;

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the pci tree with the arm64 tree
From: Mark Brown @ 2026-07-23 13:41 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Bjorn Helgaas, Lorenzo Pieralisi,
	Krzysztof Wilczyński
  Cc: Linux Kernel Mailing List, Linux Next Mailing List, Marek Vasut,
	Shanker Donthineni, Vikram Sethi, Will Deacon, Yoshihiro Shimoda

[-- Attachment #1: Type: text/plain, Size: 2405 bytes --]

Hi all,

Today's linux-next merge of the pci tree got a conflict in:

  arch/arm64/Kconfig

between commit:

  12aab25ca56ee ("arm64: errata: work around NVIDIA Olympus device store/load ordering")

from the arm64 tree and commit:

  a8818827486cd ("irqchip/gic-v3: Add Renesas R-Car Gen4 erratum workaround")

from the pci tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc arch/arm64/Kconfig
index fe807d72a3e7b,b9e17ce475e61..0000000000000
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@@ -1405,28 -1382,15 +1405,37 @@@ config NVIDIA_CARMEL_CNP_ERRATU
  
  	  If unsure, say Y.
  
 +config NVIDIA_OLYMPUS_1027_ERRATUM
 +	bool "NVIDIA Olympus: device store/load ordering erratum"
 +	default y
 +	help
 +	  This option adds an alternative code sequence to work around an
 +	  NVIDIA Olympus core erratum where a Device-nGnR* store can be
 +	  observed by a peripheral after a younger Device-nGnR* load to the
 +	  same peripheral. This breaks the program order that drivers rely
 +	  on for MMIO and can leave a device in an incorrect state.
 +
 +	  The workaround inserts a DMB OSH immediately before raw MMIO loads.
 +	  The erratum cannot occur when a DMB that orders loads appears
 +	  between the store and load, preventing the younger load from being
 +	  observed before the older store.
 +
 +	  The alternatives framework patches in DMB OSH only when an affected
 +	  CPU is detected. Other CPUs execute a NOP in its place. Disabling
 +	  this option leaves the original MMIO read instruction stream
 +	  unchanged.
 +
 +	  If unsure, say Y.
 +
+ config RENESAS_ERRATUM_GEN4GICITS1
+ 	bool "Renesas R-Car Gen4: GIC600 can not access physical addresses above 4 GiB"
+ 	default y
+ 	help
+ 	  The Renesas R-Car Gen4 S4/V4H/V4M GIC600 SoC integrations have AXI
+ 	  addressing limited to the first 32-bit of physical address space.
+ 
+ 	  If unsure, say Y.
+ 
  config ROCKCHIP_ERRATUM_3568002
  	bool "Rockchip 3568002: GIC600 can not access physical addresses higher than 4GB"
  	default y

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: [Re] kernel panic during shutdown in v7.2-rc{3,4} and next-20260722 with PREEMPT_RT
From: Bert Karwatzki @ 2026-07-23 13:23 UTC (permalink / raw)
  To: linux-kernel, Rafal Ostrowski
  Cc: linux-next, linux-rt-devel, amd-gfx, Alex Deucher,
	Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner,
	spasswolf
In-Reply-To: <20260723131001.11565-1-spasswolf@web.de>

Am Donnerstag, dem 23.07.2026 um 15:10 +0200 schrieb Bert Karwatzki:
> I was able to gather the panic error message from a failed shutdown via netconsole,
> this time the kernel used was v7.2-rc3:
> #
> Bert Karwatzki

Unfortunatetly I can now reproduce these kernel panics in v7.1:

T1581;BUG: scheduling while atomic: Xorg/1581/0x00000003
T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common
snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl
wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore
aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic
drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp
drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16
nvme_auth i2c_piix4 gpio_amdpt usb_common i2c
T1581,ncfrag=955/979;_smbus gpio_generic wmi
T1581;CPU: 19 UID: 0 PID: 1581 Comm: Xorg Not tainted 7.1.0-stable #1241 PREEMPT_{RT,(full)} 
T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1581;Call Trace:
T1581; <TASK>
T1581; ? dump_stack_lvl+0x4b/0x70
T1581; ? __schedule_bug.cold+0x3e/0x4a
T1581; ? __schedule+0xf6f/0x1700
T1581; ? try_to_take_rt_mutex+0x191/0x300
T1581; ? rtlock_slowlock_locked+0x39/0xe50
T1581; ? schedule_rtlock+0x15/0x30
T1581; ? rtlock_slowlock_locked+0x30b/0xe50
T1581; ? rt_spin_lock+0xc3/0x120
T1581; ? get_page_from_freelist+0x221/0x15f0
T1581; ? dc_link_get_highest_encoding_format+0x61/0xb0 [amdgpu]
T1581; ? __alloc_frozen_pages_noprof+0x146/0x2b0
T1581; ? ___kmalloc_large_node+0xae/0xd0
T1581; ? __kvmalloc_node_noprof+0x398/0x540
T1581; ? dcn401_build_pipe_pix_clk_params+0x10a/0x1f0 [amdgpu]
T1581; ? dc_create_plane_state+0x24/0x80 [amdgpu]
T1581; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu]
T1581; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu]
T1581; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu]
T1581; ? sysvec_call_function_single+0xe/0x80
T1581; ? asm_sysvec_call_function_single+0x1a/0x20
T1581; ? try_to_take_rt_mutex+0x191/0x300
T1581; ? calculate_plane_rec_in_timing_active+0x142/0x1f0 [amdgpu]
T1581; ? spl_calculate_number_of_taps.constprop.0.isra.0+0x142/0xf00 [amdgpu]
T1581; ? spl_calculate_number_of_taps.constprop.0.isra.0+0xed4/0xf00 [amdgpu]
T1581; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu]
T1581; ? dc_validate_with_context+0x5cf/0x6b0 [amdgpu]
T1581; ? dc_commit_streams+0x27c/0x4e0 [amdgpu]
T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu]
T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm]
T1581; ? wait_for_completion_timeout+0x127/0x170
T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1581; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1581; ? drm_atomic_commit+0xac/0xe0 [drm]
T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm]
T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1581; ? __schedule+0x389/0x1700
T1581; ? rt_spin_lock+0x35/0x120
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1581; ? drm_ioctl+0x27f/0x520 [drm]
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1581; ? __x64_sys_ioctl+0x92/0xe0
T1581; ? do_syscall_64+0xdd/0x5d0
T1581; ? switch_fpu_return+0x42/0x70
T1581; ? handle_irq_event+0x4c/0x80
T1581; ? do_syscall_64+0x94/0x5d0
T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1581; </TASK>
T1581;------------[ cut here ]------------
T1581;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#20: Xorg/1581
T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common
snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl
wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore
aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic
drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp
drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16
nvme_auth i2c_piix4 gpio_amdpt usb_common i2c
T1581,ncfrag=955/979;_smbus gpio_generic wmi
T1581;CPU: 20 UID: 0 PID: 1581 Comm: Xorg Tainted: G        W           7.1.0-stable #1241 PREEMPT_{RT,(full)} 
T1581;Tainted: [W]=WARN
T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1581;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu]
T1581;Code: 05 0f 2b f7 d6 ff c8 74 10 78 1f 65 ff 0d 32 1b f6 d6 74 0c c3 cc cc cc cc e8 96 f7 f2 d5 eb eb e8 4f 65 f1 d5 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f
44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10
T1581;RSP: 0018:ffff9d3305d835b8 EFLAGS: 00010296
T1581;RAX: 00000000ffffffff RBX: ffff8face4600000 RCX: 0000000000000008
T1581;RDX: 0000000000000000 RSI: 00000000000006a4 RDI: ffffffffc15999d0
T1581;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001
T1581;R10: ffff8face4600000 R11: 0000000000000002 R12: ffff8fac0d6c0000
T1581;R13: ffff8faca1000000 R14: 0000000000000000 R15: ffff8faca1000000
T1581;FS:  00007ff40af34b80(0000) GS:ffff8fbba5c76000(0000) knlGS:0000000000000000
T1581;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1581;CR2: 0000559cb13d5018 CR3: 0000000120bd9000 CR4: 0000000000f50ef0
T1581;PKRU: 55555554
T1581;Call Trace:
T1581; <TASK>
T1581; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu]
T1581; ? dc_validate_with_context+0x5cf/0x6b0 [amdgpu]
T1581; ? dc_commit_streams+0x27c/0x4e0 [amdgpu]
T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu]
T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm]
T1581; ? wait_for_completion_timeout+0x127/0x170
T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1581; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1581; ? drm_atomic_commit+0xac/0xe0 [drm]
T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm]
T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1581; ? __schedule+0x389/0x1700
T1581; ? rt_spin_lock+0x35/0x120
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1581; ? drm_ioctl+0x27f/0x520 [drm]
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1581; ? __x64_sys_ioctl+0x92/0xe0
T1581; ? do_syscall_64+0xdd/0x5d0
T1581; ? switch_fpu_return+0x42/0x70
T1581; ? handle_irq_event+0x4c/0x80
T1581; ? do_syscall_64+0x94/0x5d0
T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1581; </TASK>
T1581;---[ end trace 0000000000000000 ]---
T1581;------------[ cut here ]------------
T1581;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#1: Xorg/1581
T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common
snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl
wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore
aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic
drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp
drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16
nvme_auth i2c_piix4 gpio_amdpt usb_common i2c
T1581,ncfrag=955/979;_smbus gpio_generic wmi
T1581;CPU: 1 UID: 0 PID: 1581 Comm: Xorg Tainted: G        W           7.1.0-stable #1241 PREEMPT_{RT,(full)} 
T1581;Tainted: [W]=WARN
T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1581;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu]
T1581;Code: d0 75 27 65 ff 05 81 1b f6 d6 b8 01 00 00 00 65 0f c1 05 44 2b f7 d6 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 51 f8 f2 d5 <0f> 0b eb d5 66 90 66
66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8
T1581;RSP: 0018:ffff9d3305d83640 EFLAGS: 00010206
T1581;RAX: 0000000000ff0000 RBX: ffff8fad48480000 RCX: ffff8face86d3e28
T1581;RDX: 0000000000ff0000 RSI: 000000000000011f RDI: ffffffffc15bcda0
T1581;RBP: ffff8fad65380000 R08: ffffffff97b01fc0 R09: 0000000000000006
T1581;R10: ffffffff97cb5440 R11: 0000000000000076 R12: ffff8fad48480000
T1581;R13: 0000000000000001 R14: ffff8faca1000000 R15: 0000000000000000
T1581;FS:  00007ff40af34b80(0000) GS:ffff8fbba57b6000(0000) knlGS:0000000000000000
T1581;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1581;CR2: 00007f593eec2478 CR3: 0000000120bd9000 CR4: 0000000000f50ef0
T1581;PKRU: 55555554
T1581;Call Trace:
T1581; <TASK>
T1581; ? dc_state_create_copy+0x76/0x120 [amdgpu]
T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu]
T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu]
T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm]
T1581; ? wait_for_completion_timeout+0x127/0x170
T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1581; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1581; ? drm_atomic_commit+0xac/0xe0 [drm]
T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm]
T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1581; ? __schedule+0x389/0x1700
T1581; ? rt_spin_lock+0x35/0x120
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1581; ? drm_ioctl+0x27f/0x520 [drm]
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1581; ? __x64_sys_ioctl+0x92/0xe0
T1581; ? do_syscall_64+0xdd/0x5d0
T1581; ? switch_fpu_return+0x42/0x70
T1581; ? handle_irq_event+0x4c/0x80
T1581; ? do_syscall_64+0x94/0x5d0
T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1581; </TASK>
T1581;---[ end trace 0000000000000000 ]---
T1581;------------[ cut here ]------------
T1581;kernel BUG at mm/vmalloc.c:3206!
T1581;Oops: invalid opcode: 0000 [#1] SMP NOPTI
T1581;CPU: 29 UID: 0 PID: 1581 Comm: Xorg Tainted: G        W           7.1.0-stable #1241 PREEMPT_{RT,(full)} 
T1581;Tainted: [W]=WARN
T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1581;RIP: 0010:__get_vm_area_node+0x113/0x130
T1581;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 23
51 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f
T1581;RSP: 0018:ffff9d3305d834f8 EFLAGS: 00010286
T1581;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022
T1581;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720
T1581;RBP: 000000000000000c R08: ffff9d3300000000 R09: ffffbd32ffffffff
T1581;R10: 00000000ffffffff R11: 0000000000000076 R12: ffff8fad48480000
T1581;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720
T1581;FS:  00007ff40af34b80(0000) GS:ffff8fbba5eb6000(0000) knlGS:0000000000000000
T1581;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1581;CR2: 00007f6ae0f90110 CR3: 0000000120bd9000 CR4: 0000000000f50ef0
T1581;PKRU: 55555554
T1581;Call Trace:
T1581; <TASK>
T1581; ? __vmalloc_node_range_noprof+0x14a/0x920
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? exc_invalid_op+0x18/0x70
T1581; ? __vmalloc_node_noprof+0x47/0x60
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_create_copy+0x16/0x40 [amdgpu]
T1581; ? dc_state_create_copy+0x89/0x120 [amdgpu]
T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu]
T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu]
T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm]
T1581; ? wait_for_completion_timeout+0x127/0x170
T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1581; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1581; ? drm_atomic_commit+0xac/0xe0 [drm]
T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm]
T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1581; ? __schedule+0x389/0x1700
T1581; ? rt_spin_lock+0x35/0x120
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1581; ? drm_ioctl+0x27f/0x520 [drm]
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1581; ? __x64_sys_ioctl+0x92/0xe0
T1581; ? do_syscall_64+0xdd/0x5d0
T1581; ? switch_fpu_return+0x42/0x70
T1581; ? handle_irq_event+0x4c/0x80
T1581; ? do_syscall_64+0x94/0x5d0
T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1581; </TASK>
T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common
snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl
wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore
aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic
drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp
drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16
nvme_auth i2c_piix4 gpio_amdpt usb_common i2c
T1581,ncfrag=955/979;_smbus gpio_generic wmi
T1581;---[ end trace 0000000000000000 ]---
T1581;------------[ cut here ]------------
T1581;WARNING: kernel/printk/nbcon.c:1739 at nbcon_cpu_emergency_exit+0x85/0xa0, CPU#26: Xorg/1581
T1581,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common
snd_usbmidi_lib mt792x_lib snd_ump mt76_connac_lib snd_rawmidi mt76 snd_seq_device intel_rapl_msr iosf_mbi intel_rapl_common snd_hda_codec_atihdmi mac80211 rapl
wmi_bmof snd_hda_codec_hdmi snd_hda_intel snd_hda_codec pcspkr libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm snd_timer snd rfkill soundcore
aead evdev spd5118 regmap_i2c ccp k10temp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic
drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm usbhid drm_exec drm_suballoc_helper mfd_core hid drm_panel_backlight_quirks gpu_sched amdxcp
drm_display_helper drm_kms_helper ahci libahci xhci_pci drm libata xhci_hcd nvme scsi_mod usbcore igc nvme_core video cec scsi_common nvme_keyring crc16
nvme_auth i2c_piix4 gpio_amdpt usb_common i2c
T1581,ncfrag=955/979;_smbus gpio_generic wmi
T1581;CPU: 26 UID: 0 PID: 1581 Comm: Xorg Tainted: G      D W           7.1.0-stable #1241 PREEMPT_{RT,(full)} 
T1581;Tainted: [D]=DIE, [W]=WARN
T1581;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1581;RIP: 0010:nbcon_cpu_emergency_exit+0x85/0xa0
T1581;Code: 75 38 48 83 c4 10 c3 cc cc cc cc 48 8d 7c 24 04 e8 e0 ef ff ff 80 7c 24 05 00 74 ce e8 74 fc ff ff eb c7 e8 0d 86 f2 ff eb c9 <0f> 0b 8b 05 c3 78 fc
00 85 c0 75 a2 0f 0b eb b0 e8 46 01 8a 00 66
T1581;RSP: 0018:ffff9d3305d83368 EFLAGS: 00010246
T1581;RAX: 0000000000000000 RBX: 000000000000000b RCX: 0000000000000000
T1581;RDX: ffff8fbb3da9b3c4 RSI: 0000000000000001 RDI: ffff8fbb3da9b200
T1581;RBP: 0000000000000246 R08: 0000000000000000 R09: 3fffffffffffdfff
T1581;R10: ffffffff97cd3dc0 R11: ffff9d3305d83170 R12: ffff9d3305d83448
T1581;R13: ffffffff96ec5913 R14: 0000000000000002 R15: 0000000000000004
T1581;FS:  00007ff40af34b80(0000) GS:ffff8fbba5df6000(0000) knlGS:0000000000000000
T1581;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1581;CR2: 00007f4d92ce39d0 CR3: 0000000120bd9000 CR4: 0000000000f50ef0
T1581;PKRU: 55555554
T1581;Call Trace:
T1581; <TASK>
T1581; ? oops_exit.cold+0x13/0x1f
T1581; ? oops_end+0x66/0xe0
T1581; ? do_trap+0xc5/0x110
T1581; ? do_error_trap+0x60/0x80
T1581; ? __get_vm_area_node+0x113/0x130
T1581; ? exc_invalid_op+0x4f/0x70
T1581; ? __get_vm_area_node+0x113/0x130
T1581; ? asm_exc_invalid_op+0x1a/0x20
T1581; ? __get_vm_area_node+0x113/0x130
T1581; ? __vmalloc_node_range_noprof+0x14a/0x920
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? exc_invalid_op+0x18/0x70
T1581; ? __vmalloc_node_noprof+0x47/0x60
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1581; ? dml21_create_copy+0x16/0x40 [amdgpu]
T1581; ? dc_state_create_copy+0x89/0x120 [amdgpu]
T1581; ? dc_commit_state_no_check+0x271/0xde0 [amdgpu]
T1581; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1581; ? amdgpu_dm_atomic_commit_tail+0x4ec/0x3610 [amdgpu]
T1581; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1581; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1581; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1581; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1581; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1581; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x176/0x3a0 [drm]
T1581; ? wait_for_completion_timeout+0x127/0x170
T1581; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1581; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1581; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1581; ? drm_atomic_commit+0xac/0xe0 [drm]
T1581; ? __drm_universal_plane_init.cold+0x12/0x12 [drm]
T1581; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1581; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1581; ? __schedule+0x389/0x1700
T1581; ? rt_spin_lock+0x35/0x120
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1581; ? drm_ioctl+0x27f/0x520 [drm]
T1581; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1581; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1581; ? __x64_sys_ioctl+0x92/0xe0
T1581; ? do_syscall_64+0xdd/0x5d0
T1581; ? switch_fpu_return+0x42/0x70
T1581; ? handle_irq_event+0x4c/0x80
T1581; ? do_syscall_64+0x94/0x5d0
T1581; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1581; </TASK>
T1581;---[ end trace 0000000000000000 ]---
C19;RIP: 0010:__get_vm_area_node+0x113/0x130
C28;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 23
51 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f
C28;RSP: 0018:ffff9d3305d834f8 EFLAGS: 00010286
C28;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022
C28;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720
C28;RBP: 000000000000000c R08: ffff9d3300000000 R09: ffffbd32ffffffff
C28;R10: 00000000ffffffff R11: 0000000000000076 R12: ffff8fad48480000
C28;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720
C28;FS:  00007ff40af34b80(0000) GS:ffff8fbba5e76000(0000) knlGS:0000000000000000
C28;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
C28;CR2: 00007f6ae2fa7010 CR3: 0000000120bd9000 CR4: 0000000000f50ef0
C28;PKRU: 55555554
T1581;Kernel panic - not syncing: Fatal exception in interrupt
T1581;Kernel Offset: 0x15a00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
T1581;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---

So now I'm going to use memtest86+ on my machine and then look at the changes I had in
my userspace as the first error occured on 22.7.2026. Let's hope this does not escalate ...

Bert Karwatzki

^ permalink raw reply

* [Re] kernel panic during shutdown in v7.2-rc{3,4} and next-20260722 with PREEMPT_RT
From: Bert Karwatzki @ 2026-07-23 13:10 UTC (permalink / raw)
  To: linux-kernel, Rafal Ostrowski
  Cc: Bert Karwatzki, linux-next, linux-rt-devel, amd-gfx, Alex Deucher,
	Mario Limonciello, Sebastian Andrzej Siewior, Thomas Gleixner
In-Reply-To: <20260723124353.13040-1-spasswolf@web.de>

I was able to gather the panic error message from a failed shutdown via netconsole,
this time the kernel used was v7.2-rc3:

T6298;netconsole: network logging started
T6298;netconsole-setup: Test log message to verify netconsole configuration.
T1575;BUG: scheduling while atomic: Xorg/1575/0x00000003
T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi
T1575,ncfrag=955/979;o_generic i2c_smbus wmi
T1575;CPU: 16 UID: 0 PID: 1575 Comm: Xorg Not tainted 7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} 
T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1575;Call Trace:
T1575; <TASK>
T1575; ? dump_stack_lvl+0x4b/0x70
T1575; ? __schedule_bug.cold+0x3e/0x4a
T1575; ? __schedule+0xf64/0x16f0
T1575; ? schedule_rtlock+0x15/0x30
T1575; ? rtlock_slowlock_locked+0x30c/0xe50
T1575; ? rt_spin_lock+0xc3/0x120
T1575; ? get_page_from_freelist+0x22e/0x1640
T1575; ? __alloc_frozen_pages_noprof+0x146/0x2b0
T1575; ? ___kmalloc_large_node+0xae/0xd0
T1575; ? __kvmalloc_node_noprof+0x36c/0x580
T1575; ? dc_create_plane_state+0x24/0x80 [amdgpu]
T1575; ? dc_create_plane_state+0x24/0x80 [amdgpu]
T1575; ? dc_state_create_phantom_plane+0x15/0x50 [amdgpu]
T1575; ? dml21_handle_phantom_streams_planes+0x292/0x510 [amdgpu]
T1575; ? dml21_mode_check_and_programming+0x157/0x7e0 [amdgpu]
T1575; ? try_to_wake_up+0x120/0x530
T1575; ? rt_mutex_setprio+0x61/0x340
T1575; ? calculate_plane_rec_in_timing_active+0x142/0x1f0 [amdgpu]
T1575; ? spl_calculate_number_of_taps.constprop.0.isra.0+0x142/0xf00 [amdgpu]
T1575; ? spl_calculate_number_of_taps.constprop.0.isra.0+0xed4/0xf00 [amdgpu]
T1575; ? dcn401_validate_bandwidth+0xb8/0x1f0 [amdgpu]
T1575; ? dc_validate_with_context+0x5ed/0x6b0 [amdgpu]
T1575; ? dc_commit_streams+0x27c/0x4e0 [amdgpu]
T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu]
T1575; ? generic_reg_get+0x1c/0x30 [amdgpu]
T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm]
T1575; ? wait_for_completion_timeout+0x127/0x170
T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1575; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1575; ? drm_atomic_commit+0xac/0xe0 [drm]
T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm]
T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1575; ? drm_ioctl+0x27f/0x500 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1575; ? __x64_sys_ioctl+0x92/0xe0
T1575; ? do_syscall_64+0xdd/0x5d0
T1575; ? do_syscall_64+0x94/0x5d0
T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1575; </TASK>
T1575;------------[ cut here ]------------
T1575;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:126 at dc_fpu_end+0x36/0x40 [amdgpu], CPU#22: Xorg/1575
T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi
T1575,ncfrag=955/979;o_generic i2c_smbus wmi
T1575;CPU: 22 UID: 0 PID: 1575 Comm: Xorg Tainted: G        W           7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} 
T1575;Tainted: [W]=WARN
T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1575;RIP: 0010:dc_fpu_end+0x36/0x40 [amdgpu]
T1575;Code: 05 cf e5 16 e6 ff c8 74 10 78 1f 65 ff 0d f2 d5 15 e6 74 0c c3 cc cc cc cc e8 16 9c 12 e5 eb eb e8 6f 10 11 e5 c3 cc cc cc cc <0f> 0b eb dd 66 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 83 ec 10
T1575;RSP: 0018:ffffa11ac5bfb638 EFLAGS: 00010296
T1575;RAX: 00000000ffffffff RBX: ffff9490f7480000 RCX: 0000000000000008
T1575;RDX: 0000000000000000 RSI: 0000000000000719 RDI: ffffffffc15b3550
T1575;RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000001
T1575;R10: ffff9490f7480000 R11: 0000000000000002 R12: ffff948e09668000
T1575;R13: ffff948e11400000 R14: 0000000000000000 R15: 0000000000000001
T1575;FS:  00007f2b496ccb80(0000) GS:ffff949d96af5000(0000) knlGS:0000000000000000
T1575;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1575;CR2: 0000557ef27b3000 CR3: 000000011543b000 CR4: 0000000000f50ef0
T1575;PKRU: 55555554
T1575;Call Trace:
T1575; <TASK>
T1575; ? dcn401_validate_bandwidth+0xd1/0x1f0 [amdgpu]
T1575; ? dc_validate_with_context+0x5ed/0x6b0 [amdgpu]
T1575; ? dc_commit_streams+0x27c/0x4e0 [amdgpu]
T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu]
T1575; ? generic_reg_get+0x1c/0x30 [amdgpu]
T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm]
T1575; ? wait_for_completion_timeout+0x127/0x170
T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1575; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1575; ? drm_atomic_commit+0xac/0xe0 [drm]
T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm]
T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1575; ? drm_ioctl+0x27f/0x500 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1575; ? __x64_sys_ioctl+0x92/0xe0
T1575; ? do_syscall_64+0xdd/0x5d0
T1575; ? do_syscall_64+0x94/0x5d0
T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1575; </TASK>
T1575;---[ end trace 0000000000000000 ]---
T1575;------------[ cut here ]------------
T1575;WARNING: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.c:97 at dc_fpu_begin+0x4f/0x60 [amdgpu], CPU#17: Xorg/1575
T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi
T1575,ncfrag=955/979;o_generic i2c_smbus wmi
T1575;CPU: 17 UID: 0 PID: 1575 Comm: Xorg Tainted: G        W           7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} 
T1575;Tainted: [W]=WARN
T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1575;RIP: 0010:dc_fpu_begin+0x4f/0x60 [amdgpu]
T1575;Code: d0 75 27 65 ff 05 41 d6 15 e6 b8 01 00 00 00 65 0f c1 05 04 e6 16 e6 85 c0 74 05 c3 cc cc cc cc bf 02 00 00 00 e9 d1 9c 12 e5 <0f> 0b eb d5 66 90 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 d6 b8
T1575;RSP: 0018:ffffa11ac5bfb6c8 EFLAGS: 00010206
T1575;RAX: 0000000000ff0000 RBX: ffff949040380000 RCX: ffff9490a92f96a0
T1575;RDX: 0000000000ff0000 RSI: 000000000000011f RDI: ffffffffc15de7a0
T1575;RBP: ffff948e14700000 R08: ffffffffa6d02440 R09: 0000000000000006
T1575;R10: ffffffffa6eb6440 R11: 0000000000000066 R12: ffff949040380000
T1575;R13: 0000000000000001 R14: 0000000000000000 R15: 0000000000000000
T1575;FS:  00007f2b496ccb80(0000) GS:ffff949d969b5000(0000) knlGS:0000000000000000
T1575;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1575;CR2: 00007fb5ea0bfa7c CR3: 000000011543b000 CR4: 0000000000f50ef0
T1575;PKRU: 55555554
T1575;Call Trace:
T1575; <TASK>
T1575; ? dc_state_create_copy+0x76/0x120 [amdgpu]
T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu]
T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu]
T1575; ? generic_reg_get+0x1c/0x30 [amdgpu]
T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm]
T1575; ? wait_for_completion_timeout+0x127/0x170
T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1575; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1575; ? drm_atomic_commit+0xac/0xe0 [drm]
T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm]
T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1575; ? drm_ioctl+0x27f/0x500 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1575; ? __x64_sys_ioctl+0x92/0xe0
T1575; ? do_syscall_64+0xdd/0x5d0
T1575; ? do_syscall_64+0x94/0x5d0
T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1575; </TASK>
T1575;---[ end trace 0000000000000000 ]---
T1575;------------[ cut here ]------------
T1575;kernel BUG at mm/vmalloc.c:3206!
T1575;Oops: invalid opcode: 0000 [#1] SMP NOPTI
T1575;CPU: 17 UID: 0 PID: 1575 Comm: Xorg Tainted: G        W           7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} 
T1575;Tainted: [W]=WARN
T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1575;RIP: 0010:__get_vm_area_node+0x113/0x130
T1575;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 e3 46 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f
T1575;RSP: 0018:ffffa11ac5bfb580 EFLAGS: 00010286
T1575;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022
T1575;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720
T1575;RBP: 000000000000000c R08: ffffa11ac0000000 R09: ffffc11abfffffff
T1575;R10: 00000000ffffffff R11: 0000000000000066 R12: ffff949040380000
T1575;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720
T1575;FS:  00007f2b496ccb80(0000) GS:ffff949d969b5000(0000) knlGS:0000000000000000
T1575;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1575;CR2: 00007fb5ea0bfa7c CR3: 000000011543b000 CR4: 0000000000f50ef0
T1575;PKRU: 55555554
T1575;Call Trace:
T1575; <TASK>
T1575; ? __vmalloc_node_range_noprof+0x14a/0x920
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dc_fpu_begin+0x51/0x60 [amdgpu]
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? asm_exc_invalid_op+0x1a/0x20
T1575; ? __vmalloc_node_noprof+0x47/0x60
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dml21_create_copy+0x16/0x40 [amdgpu]
T1575; ? dc_state_create_copy+0x89/0x120 [amdgpu]
T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu]
T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu]
T1575; ? generic_reg_get+0x1c/0x30 [amdgpu]
T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm]
T1575; ? wait_for_completion_timeout+0x127/0x170
T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1575; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1575; ? drm_atomic_commit+0xac/0xe0 [drm]
T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm]
T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1575; ? drm_ioctl+0x27f/0x500 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1575; ? __x64_sys_ioctl+0x92/0xe0
T1575; ? do_syscall_64+0xdd/0x5d0
T1575; ? do_syscall_64+0x94/0x5d0
T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1575; </TASK>
T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi
T1575,ncfrag=955/979;o_generic i2c_smbus wmi
T1575;---[ end trace 0000000000000000 ]---
T1575;------------[ cut here ]------------
T1575;WARNING: kernel/printk/nbcon.c:1739 at nbcon_cpu_emergency_exit+0x85/0xa0, CPU#23: Xorg/1575
T1575,ncfrag=0/979;Modules linked in: netconsole ccm snd_seq_dummy snd_hrtimer snd_seq nls_ascii nls_cp437 vfat fat joydev snd_usb_audio mt7925e mt7925_common snd_usbmidi_lib snd_ump mt792x_lib snd_rawmidi mt76_connac_lib snd_seq_device intel_rapl_msr iosf_mbi mt76 intel_rapl_common rapl mac80211 snd_hda_codec_atihdmi snd_hda_codec_hdmi pcspkr wmi_bmof snd_hda_intel snd_hda_codec libarc4 snd_hda_core cfg80211 snd_intel_dspcfg snd_hwdep snd_pcm spd5118 regmap_i2c snd_timer snd rfkill soundcore aead evdev k10temp ccp nct6775 nct6775_core hwmon_vid configfs efi_pstore efivarfs autofs4 ext4 mbcache jbd2 amdgpu hid_generic usbhid hid drm_client_lib i2c_algo_bit drm_buddy drm_ttm_helper ttm drm_exec drm_suballoc_helper mfd_core drm_panel_backlight_quirks gpu_sched amdxcp drm_display_helper ahci libahci xhci_pci libata xhci_hcd drm_kms_helper drm scsi_mod igc nvme usbcore cec scsi_common nvme_core crc16 video nvme_keyring gpio_amdpt i2c_piix4 nvme_auth usb_common gpi
T1575,ncfrag=955/979;o_generic i2c_smbus wmi
T1575;CPU: 23 UID: 0 PID: 1575 Comm: Xorg Tainted: G      D W           7.2.0-rc3-stable #1255 PREEMPT_{RT,(full)} 
T1575;Tainted: [D]=DIE, [W]=WARN
T1575;Hardware name: ASUS System Product Name/ROG STRIX B850-F GAMING WIFI, BIOS 1627 02/05/2026
T1575;RIP: 0010:nbcon_cpu_emergency_exit+0x85/0xa0
T1575;Code: 75 38 48 83 c4 10 c3 cc cc cc cc 48 8d 7c 24 04 e8 e0 ef ff ff 80 7c 24 05 00 74 ce e8 74 fc ff ff eb c7 e8 8d 67 f2 ff eb c9 <0f> 0b 8b 05 43 6a fc 00 85 c0 75 a2 0f 0b eb b0 e8 16 15 8b 00 66
T1575;RSP: 0018:ffffa11ac5bfb3f8 EFLAGS: 00010246
T1575;RAX: 0000000000000000 RBX: 000000000000000b RCX: 0000000000000000
T1575;RDX: ffff949d3d9db204 RSI: 0000000000000001 RDI: ffff949d3d9db040
T1575;RBP: 0000000000000246 R08: 0000000000000000 R09: 3fffffffffffdfff
T1575;R10: ffffffffa6ed4e20 R11: ffffa11ac5bfb200 R12: ffffa11ac5bfb4d8
T1575;R13: ffffffffa60d2ad3 R14: 0000000000000002 R15: 0000000000000004
T1575;FS:  00007f2b496ccb80(0000) GS:ffff949d96b35000(0000) knlGS:0000000000000000
T1575;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
T1575;CR2: 0000557ef2780ef8 CR3: 000000011543b000 CR4: 0000000000f50ef0
T1575;PKRU: 55555554
T1575;Call Trace:
T1575; <TASK>
T1575; ? oops_exit.cold+0x13/0x1f
T1575; ? oops_end+0x66/0xe0
T1575; ? do_trap+0xc5/0x110
T1575; ? do_error_trap+0x60/0x80
T1575; ? __get_vm_area_node+0x113/0x130
T1575; ? exc_invalid_op+0x4f/0x70
T1575; ? __get_vm_area_node+0x113/0x130
T1575; ? asm_exc_invalid_op+0x1a/0x20
T1575; ? __get_vm_area_node+0x113/0x130
T1575; ? __vmalloc_node_range_noprof+0x14a/0x920
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dc_fpu_begin+0x51/0x60 [amdgpu]
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? asm_exc_invalid_op+0x1a/0x20
T1575; ? __vmalloc_node_noprof+0x47/0x60
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dml21_allocate_memory+0x124/0x180 [amdgpu]
T1575; ? dml21_create_copy+0x16/0x40 [amdgpu]
T1575; ? dc_state_create_copy+0x89/0x120 [amdgpu]
T1575; ? dc_commit_state_no_check+0x271/0xe00 [amdgpu]
T1575; ? dc_commit_streams+0x2f4/0x4e0 [amdgpu]
T1575; ? amdgpu_dm_atomic_commit_tail+0x61f/0x3650 [amdgpu]
T1575; ? generic_reg_get+0x1c/0x30 [amdgpu]
T1575; ? optc1_get_crtc_scanoutpos+0x5f/0xa0 [amdgpu]
T1575; ? dc_stream_get_scanoutpos+0x7a/0xc0 [amdgpu]
T1575; ? amdgpu_display_get_crtc_scanoutpos+0xa5/0x1c0 [amdgpu]
T1575; ? amdgpu_display_crtc_idx_to_irq_type+0x30/0x30 [amdgpu]
T1575; ? amdgpu_crtc_get_scanout_position+0x23/0x30 [amdgpu]
T1575; ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x180/0x3b0 [drm]
T1575; ? wait_for_completion_timeout+0x127/0x170
T1575; ? drm_crtc_get_last_vbltimestamp+0x50/0x80 [drm]
T1575; ? commit_tail+0xad/0x140 [drm_kms_helper]
T1575; ? drm_atomic_helper_commit+0x137/0x180 [drm_kms_helper]
T1575; ? drm_atomic_commit+0xac/0xe0 [drm]
T1575; ? __drm_universal_plane_init.cold+0x11/0x11 [drm]
T1575; ? drm_atomic_helper_set_config+0x6f/0xb0 [drm_kms_helper]
T1575; ? drm_mode_setcrtc+0x443/0x8b0 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? drm_ioctl_kernel+0xa1/0xf0 [drm]
T1575; ? drm_ioctl+0x27f/0x500 [drm]
T1575; ? drm_mode_getcrtc+0x180/0x180 [drm]
T1575; ? amdgpu_drm_ioctl+0x45/0x80 [amdgpu]
T1575; ? __x64_sys_ioctl+0x92/0xe0
T1575; ? do_syscall_64+0xdd/0x5d0
T1575; ? do_syscall_64+0x94/0x5d0
T1575; ? entry_SYSCALL_64_after_hwframe+0x55/0x5d
T1575; </TASK>
T1575;---[ end trace 0000000000000000 ]---
C23;RIP: 0010:__get_vm_area_node+0x113/0x130
C5;Code: ff bd ff ff ff ff 48 0f bd e8 b8 0c 00 00 00 ff c5 39 c5 0f 4c e8 b8 1e 00 00 00 39 c5 0f 4f e8 c4 e2 d1 f7 ee e9 34 ff ff ff <0f> 0b 4c 89 ef e8 e3 46 01 00 45 31 ed eb ae 0f 1f 00 66 66 2e 0f
C5;RSP: 0018:ffffa11ac5bfb580 EFLAGS: 00010286
C5;RAX: 00000000ffffffff RBX: 0000000000000001 RCX: 0000000000000022
C5;RDX: 000000000000000c RSI: 0000000000000001 RDI: 000000000000f720
C5;RBP: 000000000000000c R08: ffffa11ac0000000 R09: ffffc11abfffffff
C5;R10: 00000000ffffffff R11: 0000000000000066 R12: ffff949040380000
C5;R13: 0000000000000001 R14: 0000000000000dc0 R15: 000000000000f720
C5;FS:  00007f2b496ccb80(0000) GS:ffff949d966b5000(0000) knlGS:0000000000000000
C5;CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
C5;CR2: 00007f17b8093940 CR3: 000000011543b000 CR4: 0000000000f50ef0
C5;PKRU: 55555554
T1575;Kernel panic - not syncing: Fatal exception in interrupt
T1575;Kernel Offset: 0x24c00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
T1575;---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---


Bert Karwatzki

^ permalink raw reply

* [STATUS] next/master - b4515cf4156356e8f4fe6e0fdc17f59adab9772f
From: KernelCI bot @ 2026-07-23  2:30 UTC (permalink / raw)
  To: kernelci-results; +Cc: linux-next



Hello,

Status summary for next/master

Dashboard:
https://d.kernelci.org/c/next/master/b4515cf4156356e8f4fe6e0fdc17f59adab9772f/

giturl: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
branch: master
commit hash: b4515cf4156356e8f4fe6e0fdc17f59adab9772f
origin: maestro
test start time: 2026-07-22 15:59:17.810000+00:00

Builds:	   68 ✅    4 ❌    0 ⚠️
Boots: 	  148 ✅    4 ❌    0 ⚠️
Tests: 	24904 ✅ 2220 ❌ 4126 ⚠️

### POSSIBLE REGRESSIONS
    
Hardware: imx8mp-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.alsa
      last run: https://d.kernelci.org/test/maestro:6a60f39a75cb84fb217c5bef
      history:  > ✅  > ✅  > ❌  
            
Hardware: kaanapali-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a60f98b75cb84fb217cb052
      history:  > ✅  > ❌  > ❌  > ❌  > ❌  
            
Hardware: qcs6490-rb3gen2
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.breakpoints
      last run: https://d.kernelci.org/test/maestro:6a60f37075cb84fb217c5a45
      history:  > ✅  > ❌  > ❌  > ❌  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_reboot-mode
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b5f
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b46
      history:  > ✅  > ❌  > ❌  > ❌  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_edp_aea0000
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b39
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_phy_aec2a00
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b36
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_geniqup_9c0000_serial_99c000_bluetooth
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b18
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_phy_88e8000
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2afa
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_adc_3100
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac5
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_adc-tm_3400
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac6
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_7000
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac3
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_7100
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac2
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_7400
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac1
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_7c00
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ac0
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_7d00
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2abf
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_8400
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2abe
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_8500
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2abd
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_8600
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2abc
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_9800
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2abb
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_nvram_9d00
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2aba
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_pon_1300
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab9
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_pon_1300_pwrkey
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab8
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_pon_1300_resin
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab7
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_0_rtc_6100
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab6
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_1_temp-alarm_a00
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab3
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_2_pwm
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2ab0
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_2_temp-alarm_a00
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2aaf
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_8_adc_3100
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2aad
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_spmi_c440000_pmic_8_temp-alarm_2400
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2aab
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_usb_a600000
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2a8a
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_video-codec_aa00000
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2a89
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_wcn6750-pmu
      last run: https://d.kernelci.org/test/maestro:6a6108b575cb84fb217d2a84
      history:  > ✅  > ✅  > ✅  > ✅  > ❌  
            
Hardware: lemans-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.device-error-logs
      last run: https://d.kernelci.org/test/maestro:6a60f3ad75cb84fb217c5ce8
      history:  > ✅  > ❌  > ❌  
            
Hardware: sm8750-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a60fbac75cb84fb217cc04c
      history:  > ✅  > ❌  > ❌  > ❌  
            
Hardware: qcs8300-ride
  > Config: defconfig+arm64-chromebook+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.gpio
      last run: https://d.kernelci.org/test/maestro:6a60f4d575cb84fb217c6ba4
      history:  > ✅  > ❌  > ❌  > ❌  > ❌  
            


### FIXED REGRESSIONS
    
Hardware: kaanapali-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.futex
      last run: https://d.kernelci.org/test/maestro:6a60f3d375cb84fb217c5de1
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_multiple
      last run: https://d.kernelci.org/test/maestro:6a60f9f375cb84fb217cb29b
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a60f9f375cb84fb217cb29c
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
Hardware: meson-gxl-s905x-libretech-cc
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.futex
      last run: https://d.kernelci.org/test/maestro:6a60f3e675cb84fb217c5f27
      history:  > ❌  > ❌  > ❌  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_multiple
      last run: https://d.kernelci.org/test/maestro:6a6175cf75cb84fb2182ffb2
      history:  > ❌  > ❌  > ❌  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a6175cf75cb84fb2182ffb3
      history:  > ❌  > ❌  > ❌  > ✅  
            
Hardware: qcs6490-rb3gen2
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.coredump
      last run: https://d.kernelci.org/test/maestro:6a60f39e75cb84fb217c5c05
      history:  > ❌  > ❌  > ❌  > ❌  > ✅  
            
      - kselftest.device-error-logs
      last run: https://d.kernelci.org/test/maestro:6a60f3b175cb84fb217c5cfa
      history:  > ❌  > ✅  > ✅  
            
      - kselftest.futex
      last run: https://d.kernelci.org/test/maestro:6a60f3ce75cb84fb217c5da5
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_multiple
      last run: https://d.kernelci.org/test/maestro:6a6108f875cb84fb217d2d4b
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a6108f875cb84fb217d2d4c
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
Hardware: lemans-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a61080475cb84fb217d26b6
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
Hardware: sm8750-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.futex
      last run: https://d.kernelci.org/test/maestro:6a60f3d275cb84fb217c5dc2
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_multiple
      last run: https://d.kernelci.org/test/maestro:6a60fad375cb84fb217cb748
      history:  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a60fad375cb84fb217cb749
      history:  > ❌  > ❌  > ✅  > ✅  
            
Hardware: qcs8300-ride
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.futex
      last run: https://d.kernelci.org/test/maestro:6a60f3cf75cb84fb217c5db0
      history:  > ❌  > ❌  > ❌  > ❌  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_multiple
      last run: https://d.kernelci.org/test/maestro:6a60fdc075cb84fb217cc82c
      history:  > ❌  > ❌  > ❌  > ❌  > ✅  
            
      - kselftest.futex.futex_run_sh_global_requeue_single
      last run: https://d.kernelci.org/test/maestro:6a60fdc075cb84fb217cc82d
      history:  > ❌  > ❌  > ❌  > ✅  > ✅  
            


### UNSTABLE TESTS
    
Hardware: bcm2837-rpi-3-b-plus
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.device_error_logs
      last run: https://d.kernelci.org/test/maestro:6a60f3c275cb84fb217c5d65
      history:  > ✅  > ✅  > ❌  > ✅  
            
      - kselftest.device_error_logs.devices_error_logs_test_device_error_logs_py
      last run: https://d.kernelci.org/test/maestro:6a61598675cb84fb21817430
      history:  > ✅  > ✅  > ❌  > ✅  
            
Hardware: k3-am625-verdin-wifi-mallow
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt
      last run: https://d.kernelci.org/test/maestro:6a60f3da75cb84fb217c5e07
      history:  > ❌  > ❌  > ❌  > ✅  > ❌  
            
Hardware: kaanapali-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.arm64
      last run: https://d.kernelci.org/test/maestro:6a60f36575cb84fb217c5a0a
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
      - kselftest.arm64.arm64_fp-stress
      last run: https://d.kernelci.org/test/maestro:6a60f47f75cb84fb217c647a
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_9800000_dsi_9ac0000_panel_0
      last run: https://d.kernelci.org/test/maestro:6a60f98b75cb84fb217cb04c
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
Hardware: meson-g12b-a311d-khadas-vim3
  > Config: defconfig+preempt_rt
    - Architecture/compiler: arm64/gcc-14
      - rt-tests.rt-migrate-test
      last run: https://d.kernelci.org/test/maestro:6a60f58475cb84fb217c700e
      history:  > ❌  > ✅  > ❌  > ❌  > ✅  
            
      - rt-tests.rt-migrate-test.rt-migrate-test
      last run: https://d.kernelci.org/test/maestro:6a60f8b075cb84fb217c8567
      history:  > ❌  > ✅  > ❌  > ❌  > ✅  
            
Hardware: qcs6490-rb3gen2
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.arm64
      last run: https://d.kernelci.org/test/maestro:6a60f36175cb84fb217c59f0
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
      - kselftest.arm64.arm64_fp-stress
      last run: https://d.kernelci.org/test/maestro:6a61064375cb84fb217d1ecb
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_iommu_3da0000
      last run: https://d.kernelci.org/test/maestro:6a6108b675cb84fb217d2b06
      history:  > ✅  > ❌  > ❌  > ✅  > ✅  
            
  > Config: defconfig+arm64-chromebook+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.gpio
      last run: https://d.kernelci.org/test/maestro:6a60f4d475cb84fb217c6ba1
      history:  > ❌  > ❌  > ❌  > ✅  > ❌  
            
Hardware: mt8395-genio-1200-evk
  > Config: defconfig+preempt_rt
    - Architecture/compiler: arm64/gcc-14
      - rt-tests.rt-migrate-test
      last run: https://d.kernelci.org/test/maestro:6a60f58775cb84fb217c7016
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
      - rt-tests.rt-migrate-test.rt-migrate-test
      last run: https://d.kernelci.org/test/maestro:6a60fada75cb84fb217cb7a1
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
Hardware: lemans-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.devices-probe
      last run: https://d.kernelci.org/test/maestro:6a60f42775cb84fb217c6038
      history:  > ❌  > ✅  > ❌  
            
      - kselftest.timers
      last run: https://d.kernelci.org/test/maestro:6a60f3f275cb84fb217c5f74
      history:  > ✅  > ❌  > ❌  > ✅  > ✅  
            
      - kselftest.timers.timers_posix_timers
      last run: https://d.kernelci.org/test/maestro:6a610b4075cb84fb217d484e
      history:  > ✅  > ❌  > ✅  > ✅  
            
Hardware: qcs8300-ride
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.coredump
      last run: https://d.kernelci.org/test/maestro:6a60f39f75cb84fb217c5c1d
      history:  > ❌  > ❌  > ✅  > ❌  > ❌  
            
      - kselftest.device-error-logs
      last run: https://d.kernelci.org/test/maestro:6a60f3b375cb84fb217c5cfd
      history:  > ❌  > ✅  > ❌  
            
      - kselftest.devices-exist
      last run: https://d.kernelci.org/test/maestro:6a60f41e75cb84fb217c601d
      history:  > ✅  > ❌  > ✅  
            
  > Config: defconfig+arm64-chromebook+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.efivars
      last run: https://d.kernelci.org/test/maestro:6a60f4b675cb84fb217c6b3b
      history:  > ❌  > ✅  > ❌  > ❌  > ❌  
            



This branch has 3 pre-existing build issues. See details in the dashboard.

Sent every day if there were changes in the past 24 hours.
Legend: ✅ PASS   ❌ FAIL  ⚠️ INCONCLUSIVE

--
This is an experimental report format. Please send feedback in!
Talk to us at kernelci@lists.linux.dev

Made with love by the KernelCI team - https://kernelci.org

^ permalink raw reply

* Re: Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
From: Matthew Brost @ 2026-07-22 23:15 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Mark Brown, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	Andrew Morton, Usama Arif, linux-mm, dri-devel, linux-next
In-Reply-To: <20260722225605.GA1910198@ax162>

On Wed, Jul 22, 2026 at 03:56:05PM -0700, Nathan Chancellor wrote:
> Hi Mark and drm and mm folks,
> 

Typically to get drm_pagemap.c to compile on various configs this is
what is needed:

109 #ifdef CONFIG_PGTABLE_HAS_HUGE_LEAVES
110 #define HPAGE_PMD_SHIFT PMD_SHIFT
111 #define HPAGE_PUD_SHIFT PUD_SHIFT
112 #else
113 #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
114 #define HPAGE_PUD_SHIFT ({ BUILD_BUG(); 0; })
115 #endif

So the drm_pagemap.c code could be:

-#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
+#if IS_ENABLED(CONFIG_PGTABLE_HAS_HUGE_LEAVES)
#define DRM_PAGEMAP_PMD_ORDER        HPAGE_PMD_ORDER
#else
#define DRM_PAGEMAP_PMD_ORDER        (-1)

This Kconfig has been around since 2024:
git format-patch -1 b979db1611a63

Would it be better for everyone for me to change this in the DRM branches?

Matt

> There is a semantic conflict between commit 04b177544a04 ("drm/pagemap:
> Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION") in the
> drm-misc-fixes tree and commit 0b6b1bb28482 ("mm: rename
> ARCH_ENABLE_THP_MIGRATION to ARCH_HAS_PMD_SOFTLEAVES"), resulting in a
> lone instance of CONFIG_ARCH_ENABLE_THP_MIGRATION with no way to define
> it.
> 
>   $ git grep ARCH_ENABLE_THP_MIGRATION
>   Next/merge.log:Merging drm-misc-fixes/for-linux-next-fixes (04b177544a040 drm/pagemap: Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION)
>   drivers/gpu/drm/drm_pagemap.c:#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
> 
> This results in an objtool warning (or error with CONFIG_OBJTOOL_WERROR)
> when building with clang because NR_PAGES(order) results in 1U << -1,
> which causes clang to stop generating code for
> drm_pagemap_migrate_to_devmem() when encountering unconditional
> undefined behavior.
> 
>   drivers/gpu/drm/drm_gpusvm_helper.o: error: objtool: drm_pagemap_migrate_to_devmem() falls through to next function drm_pagemap_zdd_alloc()
> 
> Mark, could please apply the following diff to the -mm merge to avoid
> this? Obviously, there will need to be further coordination for
> resolving this upstream when the time comes but it is only an issue in
> -next currently.
> 
> diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
> index 4a794544b7dc..f00c27edbfb9 100644
> --- a/drivers/gpu/drm/drm_pagemap.c
> +++ b/drivers/gpu/drm/drm_pagemap.c
> @@ -12,7 +12,7 @@
>  #include <drm/drm_pagemap_util.h>
>  #include <drm/drm_print.h>
>  
> -#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
> +#if IS_ENABLED(CONFIG_ARCH_HAS_PMD_SOFTLEAVES)
>  #define DRM_PAGEMAP_PMD_ORDER	HPAGE_PMD_ORDER
>  #else
>  #define DRM_PAGEMAP_PMD_ORDER	(-1)
> -- 
> Cheers,
> Nathan

^ permalink raw reply

* Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
From: Nathan Chancellor @ 2026-07-22 22:56 UTC (permalink / raw)
  To: Mark Brown, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	Matthew Brost, Andrew Morton, Usama Arif
  Cc: linux-mm, dri-devel, linux-next

Hi Mark and drm and mm folks,

There is a semantic conflict between commit 04b177544a04 ("drm/pagemap:
Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION") in the
drm-misc-fixes tree and commit 0b6b1bb28482 ("mm: rename
ARCH_ENABLE_THP_MIGRATION to ARCH_HAS_PMD_SOFTLEAVES"), resulting in a
lone instance of CONFIG_ARCH_ENABLE_THP_MIGRATION with no way to define
it.

  $ git grep ARCH_ENABLE_THP_MIGRATION
  Next/merge.log:Merging drm-misc-fixes/for-linux-next-fixes (04b177544a040 drm/pagemap: Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION)
  drivers/gpu/drm/drm_pagemap.c:#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)

This results in an objtool warning (or error with CONFIG_OBJTOOL_WERROR)
when building with clang because NR_PAGES(order) results in 1U << -1,
which causes clang to stop generating code for
drm_pagemap_migrate_to_devmem() when encountering unconditional
undefined behavior.

  drivers/gpu/drm/drm_gpusvm_helper.o: error: objtool: drm_pagemap_migrate_to_devmem() falls through to next function drm_pagemap_zdd_alloc()

Mark, could please apply the following diff to the -mm merge to avoid
this? Obviously, there will need to be further coordination for
resolving this upstream when the time comes but it is only an issue in
-next currently.

diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index 4a794544b7dc..f00c27edbfb9 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -12,7 +12,7 @@
 #include <drm/drm_pagemap_util.h>
 #include <drm/drm_print.h>
 
-#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
+#if IS_ENABLED(CONFIG_ARCH_HAS_PMD_SOFTLEAVES)
 #define DRM_PAGEMAP_PMD_ORDER	HPAGE_PMD_ORDER
 #else
 #define DRM_PAGEMAP_PMD_ORDER	(-1)
-- 
Cheers,
Nathan

^ permalink raw reply related

* Re: linux-next: manual merge of the wireless-next tree with the origin tree
From: Enderaoe Lyther @ 2026-07-22 20:53 UTC (permalink / raw)
  To: Mark Brown
  Cc: Johannes Berg, linux-wireless, Johannes Berg, linux-kernel,
	linux-next, Miri Korenblit, Pagadala Yesu Anjaneyulu
In-Reply-To: <amDoh8ypkkAY-vvc@sirena.org.uk>

Hi Mark,

Thanks for carrying the conflict resolution.

I noticed one semantic conflict later in ieee80211_rx_mgmt_assoc_resp().

Commit 035ed430ce6a2 ("wifi: mac80211: avoid non-S1G AID fallback for S1G
assoc") added:

	else if (status_code == WLAN_STATUS_SUCCESS)
		goto abandon_assoc;

where abandon_assoc destroyed the association data with ASSOC_ABANDON and
notified the driver.

After f13e573ab3f12 ("wifi: mac80211: notify driver before destroying
assoc link") folds the driver notification into
ieee80211_destroy_assoc_data(), the equivalent target is
destroy_assoc_data, since assoc_status is initialized to ASSOC_ABANDON.

next-20260722 instead has:

	else if (status_code == WLAN_STATUS_SUCCESS)
		goto notify_driver;

which bypasses ieee80211_destroy_assoc_data(). I believe this should
instead be:

	else if (status_code == WLAN_STATUS_SUCCESS)
		goto destroy_assoc_data;

Regards,
Zhao

On Wed, 22 Jul 2026 16:57:59 +0100, Mark Brown <broonie@kernel.org> wrote:
> Hi all,
>
> Today's linux-next merge of the wireless-next tree got a conflict in:
>
> net/mac80211/mlme.c
>
> between commit:
>
> 035ed430ce6a2 ("wifi: mac80211: avoid non-S1G AID fallback for S1G assoc")
>
> from the origin tree and commit:
>
> f13e573ab3f12 ("wifi: mac80211: notify driver before destroying assoc link")
>
> from the wireless-next tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
>
> diff --cc net/mac80211/mlme.c
> index fa773f3b0541a,d577252dbb9f1..0000000000000
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@@ -7140,7 -7191,8 +7193,8 @@@ static void ieee80211_rx_mgmt_assoc_res
> {
> struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
> struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data;
> + enum assoc_status assoc_status = ASSOC_ABANDON;
> - u16 capab_info, status_code, aid;
> + u16 capab_info, status_code, aid = 0;
> struct ieee80211_elems_parse_params parse_params = {
> .bss = NULL,
> .link_id = -1,

^ permalink raw reply

* Re: Policy regarding linux-next only changes
From: Theodore Tso @ 2026-07-22 17:47 UTC (permalink / raw)
  To: Tetsuo Handa
  Cc: Alexander Potapenko, Mark Brown, Christoph Hellwig,
	Aleksandr Nogikh, Boqun Feng, Gary Guo, linux-next, linux-kernel,
	Miguel Ojeda, Linus Torvalds, peterz, will, longman, mingo,
	gregkh, Miguel Ojeda
In-Reply-To: <bc3703bd-65ee-4182-a742-56603d9b9bac@I-love.SAKURA.ne.jp>

On Thu, Jul 23, 2026 at 12:07:44AM -0500, Tetsuo Handa wrote:
> The procedural problem is that developers / maintainers are too busy
> to respond to my debug patches. Since I am debugging difficult bugs
> where nobody else are willing to spend resources, this is an
> expected result. I am OK to post my debug patches to ML. But without
> responses / interests from developers / maintainers, this problem
> won't be able to make progress.
> 
> Just saying "Not my business." is not helpful.

Is what is happening that when your security LSM (Tomoyo) is enabled,
this causes lockdep or warnings or other issues in other subsystems?

If so the question is how much are other developers and maintainers
obliged to help you.  The historical answer has been that we help each
other out as a matter of professional courtesy, and if someone has
helped me out a lot, I will tend to return the favor when they ask me
for my help.  I've even used that as an argument for why a company
should dedicate some amount of their developer's time helping out
upstream code even if it's not directly related to their company's
direct interest, since that contribution builds up karma that may
cause the upstream maintainers to help debug a bug, or upstream some
feature, that the company *really* cares about.

But there is nothing which obliges other developers / maintainers to
help you out, other than their being nice.  This is another way of
saying that "free software" is free as in freedom, and not free as in
"free beer".  Responding to your debug patches is in effect demanding
free support.  If you can convince them that it is in their interest,
or their company's interest to help you debug your issue, then that's
fine.  But maybe there's a good *reason* why no one is willing to
spend resources debugging a particular issue --- namely, that it
doesn't help them or their company?

Regards,

						- Ted

^ permalink raw reply

* Re: linux-next: build failure after merge of the wireless-next tree
From: Johannes Berg @ 2026-07-22 16:10 UTC (permalink / raw)
  To: Wireless, Linux Kernel Mailing List, Linux Next Mailing List
In-Reply-To: <amDos20YUxH9DFgJ@sirena.org.uk>

Hi,

Thanks for the heads-up!

> /tmp/next/build/net/mac80211/mlme.c:
> In function 'ieee80211_rx_mgmt_assoc_resp':
> /tmp/next/build/net/mac80211/mlme.c:7279:17: error: label 'abandon_assoc'
> used but not defined
>  7279 |                 goto abandon_assoc;
>       |                 ^~~~
> 
> Caused by a semantic conflict (probably the same two patches as the
> merge I posted a minute ago).

Yeah. I was _just_ going to reply to that email asking if it actually
built! :-)

> I have applied the patch below and can
> carry as needed:
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 60fc407bb1ebb..5a1c022282202 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -7276,7 +7276,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
>  	else if (!assoc_data->s1g)
>  		aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
>  	else if (status_code == WLAN_STATUS_SUCCESS)
> -		goto abandon_assoc;
> +		goto notify_driver;

I think it needs to be "goto destroy_assoc_data" instead for
correctness, but that's just based on what Jeff told me last night.

Sorry for the mess! I didn't realize this was going to happen :(

Anyway, the plan is for me to do a (hopefully correct) merge after
wireless will is merged into net etc., test it, and then provide that
with the pull request of wireless-next into net-next. I think it'll take
a few days though, more likely early next week than late this week.

johannes

^ permalink raw reply

* linux-next: Tree for Jul 22
From: Mark Brown @ 2026-07-22 15:59 UTC (permalink / raw)
  To: Linux Next Mailing List; +Cc: Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 1859 bytes --]

Hi all,

Changes since 20260721:

The wireless-next tree acquired a conflict with the origin tree, and
also a semantic conflict for which I applied a fix.

The drm-misc tree lost it's build failure.

The drm-xe tree acquired a conflict with the origin tree.

The battery tree lost it's build failure.

Non-merge commits (relative to Linus' tree): 7761
 7440 files changed, 361298 insertions(+), 115875 deletions(-)

----------------------------------------------------------------------------

I have created today's linux-next tree at
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
(patches at https://www.kernel.org/pub/linux/kernel/next/ ).  If you
are tracking the linux-next tree using git, you should not use "git pull"
to do so as that will try to merge the new linux-next release with the
old one.  You should use "git fetch" and checkout or reset to the new
master.

You can see which trees have been included by looking in the Next/Trees
file in the source.  There is also the merge.log file in the Next
directory.  Between each merge, the tree was built with a defconfig
for arm64, an allmodconfig for x86_64, a multi_v7_defconfig for arm,
an arm64 build of various kselftests, a KUnit build and run on arm64,
and a native build of tools/perf.  After the final fixups (if any), I do
an x86_64 modules_install followed by builds for x86_64 allnoconfig,
arm64 allyesconfig, powerpc allnoconfig (32 and 64 bit),
ppc44x_defconfig and pseries_le_defconfig and i386, s390, sparc and
sparc64 defconfig and htmldocs.

Below is a summary of the state of the merge.

I am currently merging 429 trees (counting Linus' and 133 trees of bug
fix patches pending for the current release).

Stats about the size of the tree over time can be seen at
http://neuling.org/linux-next-size.html .

Thanks to Paul Gortmaker for triage and bug fixes.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the drm-xe tree with the origin tree
From: Mark Brown @ 2026-07-22 15:58 UTC (permalink / raw)
  To: Thomas Hellström, DRM XE List
  Cc: Linux Kernel Mailing List, Linux Next Mailing List, Matthew Brost

[-- Attachment #1: Type: text/plain, Size: 2051 bytes --]

Hi all,

Today's linux-next merge of the drm-xe tree got a conflict in:

  drivers/gpu/drm/xe/xe_sriov_vf_ccs.c

between commit:

  56441f9e08ad6 ("drm/xe/vf: Fix VF CCS attach/detach race with in-flight BO moves")

from the origin tree and commit:

  d45ad0aa7a1eb ("drm/xe/vf: Fix VF CCS attach/detach race with in-flight BO moves")

from the drm-xe tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --combined drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index 6787564629c65,a8c831fbee3b5..0000000000000
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@@ -3,6 -3,8 +3,8 @@@
   * Copyright © 2025 Intel Corporation
   */
  
+ #include <drm/drm_drv.h>
+ 
  #include "instructions/xe_mi_commands.h"
  #include "instructions/xe_gpu_commands.h"
  #include "xe_bb.h"
@@@ -446,7 -448,7 +448,7 @@@ err_unwind
  	 */
  	for_each_ccs_rw_ctx(ctx_id) {
  		if (bo->bb_ccs[ctx_id])
- 			xe_migrate_ccs_rw_copy_clear(bo, ctx_id);
+ 			xe_migrate_ccs_rw_copy_clear(bo, ctx_id, true);
  	}
  	return err;
  }
@@@ -466,19 -468,27 +468,27 @@@ int xe_sriov_vf_ccs_detach_bo(struct xe
  	struct xe_device *xe = xe_bo_device(bo);
  	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
  	struct xe_mem_pool_node *bb;
+ 	bool bound;
+ 	int idx;
  
  	xe_assert(xe, IS_VF_CCS_READY(xe));
  
  	if (!xe_bo_has_valid_ccs_bb(bo))
  		return 0;
  
+ 	bound = drm_dev_enter(&xe->drm, &idx);
+ 
  	for_each_ccs_rw_ctx(ctx_id) {
  		bb = bo->bb_ccs[ctx_id];
  		if (!bb)
  			continue;
  
- 		xe_migrate_ccs_rw_copy_clear(bo, ctx_id);
+ 		xe_migrate_ccs_rw_copy_clear(bo, ctx_id, bound);
  	}
+ 
+ 	if (bound)
+ 		drm_dev_exit(idx);
+ 
  	return 0;
  }
  

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: build failure after merge of the wireless-next tree
From: Mark Brown @ 2026-07-22 15:58 UTC (permalink / raw)
  To: Johannes Berg, Wireless
  Cc: Linux Kernel Mailing List, Linux Next Mailing List

[-- Attachment #1: Type: text/plain, Size: 1070 bytes --]

Hi all,

After merging the wireless-next tree, today's linux-next build
(arm64_defconfig.log /tmp/next/x86_64 allmodconfig) failed like this:

/tmp/next/build/net/mac80211/mlme.c:
In function 'ieee80211_rx_mgmt_assoc_resp':
/tmp/next/build/net/mac80211/mlme.c:7279:17: error: label 'abandon_assoc'
used but not defined
 7279 |                 goto abandon_assoc;
      |                 ^~~~

Caused by a semantic conflict (probably the same two patches as the
merge I posted a minute ago).  I have applied the patch below and can
carry as needed:

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 60fc407bb1ebb..5a1c022282202 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -7276,7 +7276,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
 	else if (!assoc_data->s1g)
 		aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
 	else if (status_code == WLAN_STATUS_SUCCESS)
-		goto abandon_assoc;
+		goto notify_driver;
 
 	/*
 	 * The 5 MSB of the AID field are reserved for a non-S1G STA. For

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply related

* Fixes tags need work in the drm-msm tree
From: Mark Brown @ 2026-07-22 15:58 UTC (permalink / raw)
  To: Rob Clark, Sean Paul; +Cc: linux-kernel, linux-next

[-- Attachment #1: Type: text/plain, Size: 312 bytes --]

In commit

  0aeed866cb938 ("drm/amd/display: Fix dangling pointer in CRTC reset function")

Fixes tag

  Fixes: e7b07ceef2a6 ("drm/amd/display: Merge amdgpu_dm_crtc and dm_crtc_state")

has these problem(s):

  - Subject does not match target commit subject
    Just use
	git log -1 --format='Fixes: %h ("%s")'

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* linux-next: manual merge of the wireless-next tree with the origin tree
From: Mark Brown @ 2026-07-22 15:57 UTC (permalink / raw)
  To: Johannes Berg, Wireless
  Cc: Johannes Berg, Linux Kernel Mailing List, Linux Next Mailing List,
	Miri Korenblit, Pagadala Yesu Anjaneyulu, Zhao Li

[-- Attachment #1: Type: text/plain, Size: 1300 bytes --]

Hi all,

Today's linux-next merge of the wireless-next tree got a conflict in:

  net/mac80211/mlme.c

between commit:

  035ed430ce6a2 ("wifi: mac80211: avoid non-S1G AID fallback for S1G assoc")

from the origin tree and commit:

  f13e573ab3f12 ("wifi: mac80211: notify driver before destroying assoc link")

from the wireless-next tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc net/mac80211/mlme.c
index fa773f3b0541a,d577252dbb9f1..0000000000000
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@@ -7140,7 -7191,8 +7193,8 @@@ static void ieee80211_rx_mgmt_assoc_res
  {
  	struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
  	struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data;
+ 	enum assoc_status assoc_status = ASSOC_ABANDON;
 -	u16 capab_info, status_code, aid;
 +	u16 capab_info, status_code, aid = 0;
  	struct ieee80211_elems_parse_params parse_params = {
  		.bss = NULL,
  		.link_id = -1,

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Fixes tags need work in the drm-msm tree
From: Mark Brown @ 2026-07-22 15:57 UTC (permalink / raw)
  To: Rob Clark, Sean Paul; +Cc: linux-kernel, linux-next

[-- Attachment #1: Type: text/plain, Size: 317 bytes --]

In commit

  3b1f4d5e47b36 ("drm/amd/display: Fix dangling pointer in connector reset function")

Fixes tag

  Fixes: e7b07ceef2a6 ("drm/amd/display: Merge amdgpu_dm_crtc and dm_crtc_state")

has these problem(s):

  - Subject does not match target commit subject
    Just use
	git log -1 --format='Fixes: %h ("%s")'

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply

* Re: Policy regarding linux-next only changes
From: Tetsuo Handa @ 2026-07-22 15:07 UTC (permalink / raw)
  To: Alexander Potapenko, Mark Brown, Christoph Hellwig
  Cc: Aleksandr Nogikh, Boqun Feng, Gary Guo, linux-next, linux-kernel,
	Miguel Ojeda, Linus Torvalds, peterz, will, longman, mingo,
	gregkh, Miguel Ojeda
In-Reply-To: <CAG_fn=UEo8PNvjAcTTqmskfPrJNSjshhuXsR_PaH0-YLWwMTRw@mail.gmail.com>

On 2026/07/22 23:19, Alexander Potapenko wrote:
> During that time, we would stop fuzzing the main net/net-next
> repositories.

I don't want to stop the main repositories. 

> I am afraid the only way to achieve that is to ensure the patch
> reaches upstream.

Yes, I know. I think there are two problems (technical one and procedural one).

The technical problem is that adding debug patches can impact performance
(especially when printk() is called frequently). We have CONFIG_KCOV in the
upstream kernels but we don't have something like CONFIG_DEBUG_AID_FOR_SYZBOT
in the upstream kernels. If we can assume that kernels built with CONFIG_KCOV=y
are not subjected to performance regression tests, I can try to minimize impact
by guarding with CONFIG_KCOV=y. But if we can't assume, I want a switch like
CONFIG_DEBUG_AID_FOR_SYZBOT.

The procedural problem is that developers / maintainers are too busy to respond
to my debug patches. Since I am debugging difficult bugs where nobody else are
willing to spend resources, this is an expected result. I am OK to post my debug
patches to ML. But without responses / interests from developers / maintainers,
this problem won't be able to make progress.

Just saying "Not my business." is not helpful.


^ permalink raw reply

* Re: Policy regarding linux-next only changes
From: Alexander Potapenko @ 2026-07-22 14:19 UTC (permalink / raw)
  To: Tetsuo Handa
  Cc: Aleksandr Nogikh, Boqun Feng, Gary Guo, Mark Brown, linux-next,
	linux-kernel, Miguel Ojeda, Linus Torvalds, peterz, will, longman,
	mingo, gregkh, Miguel Ojeda
In-Reply-To: <c0bd6bc6-17de-468d-850d-df9955e2c142@I-love.SAKURA.ne.jp>

On Tue, Jul 21, 2026 at 1:49 PM Tetsuo Handa
<penguin-kernel@i-love.sakura.ne.jp> wrote:
>
> On 2026/07/21 18:38, Alexander Potapenko wrote:
> > Hi Tetsuo,
> >
> > You can send patches to syzbot@lists.linux.dev.
> >
> > E.g. I ran
> >
> > $ git send-email  --suppress-cc=all --to=syzbot@lists.linux.dev
> > patches/kcov-tetsuo-v7/0001-kcov-fix-data-corruption-and-race-conditions-on-PREE.patch
> >
> > to test your latest kcov patch and got the results here:
> > https://ci.syzbot.org/series/33930a89-bb2a-4c5a-b6c5-d45829d5c94c
> >
> > The fuzzing ran on 8 VMs for 3 hours, and there were no new reports.
> >
> > Please let us know what you think of this workflow.
>
> Unfortunately, 8 VMs for 3 hours would be too little to stop my linux-next only patches.
>
> syzbot took more than one month in linux-next until I was able to report
> https://lkml.kernel.org/r/73ed3aa5-f6e1-47b6-9e5d-428ac1f4cbf3@I-love.SAKURA.ne.jp .
> I could have reported within 24 hours if all VMs (I don't know how many VMs are assigned)
> for networking trees were tested with my linux-next only patch.

Currently, two syzbot instances point at linux-next:
ci-upstream-linux-next-kasan-gce-root (10 VMs) and
ci-upstream-rust-kasan-gce (4 VMs).
So, we would need 420 VM-days of fuzzing to find that bug. Adding the
20 machines currently fuzzing net and net-next (assuming those are the
ones you refer to) would have reduced the time to 12.5 days, but not
to 24 hours.
During that time, we would stop fuzzing the main net/net-next
repositories. Another problem is that switching instances between
different Git trees is not zero-cost; it requires manual
reconfiguration and introduces maintenance overhead.

Now imagine that requests to extensively fuzz with a certain debug
patch arrive every week.
How do we decide which of those deserve more attention from the fuzzer?
For how long should we keep those patches?
How do we ensure these patches do not conflict with each other?

>
> syzbot was not able to trigger
> "BUG: %s/%u is doing I/O request on loop%d in Lo_rundown state.\n" message
> using https://lkml.kernel.org/r/30ccdd3c-6353-4a0f-bdc7-230ec3bf4765@I-love.SAKURA.ne.jp
> in linux-next tree. syzbot could have triggered this message within 24 hours if all VMs
> for upstream trees were tested with my linux-next only patch.
>
> What I want is a workflow that can test with patches for many days and many VMs.

I am afraid the only way to achieve that is to ensure the patch
reaches upstream.

I could imagine a compromise: a community-maintained repository
containing a bunch of debug patches applied on top of linux-next.
But we won't be able to allocate too many resources to fuzzing that
repository (it would be just one of the many), so reproducing certain
bugs may still take weeks.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox