Linux-Next discussions
 help / color / mirror / Atom feed
* Re: linux-next: manual merge of the rdma tree with the origin tree
From: Leon Romanovsky @ 2026-07-20 15:03 UTC (permalink / raw)
  To: Mark Brown, Jason Gunthorpe
  Cc: Jacob Moroni, Jason Gunthorpe, Linux Kernel Mailing List,
	Linux Next Mailing List
In-Reply-To: <al40KAaJ0Qiy-lTs@sirena.org.uk>

On Mon, Jul 20, 2026 at 03:43:52PM +0100, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the rdma tree got a conflict in:
> 
>   drivers/infiniband/hw/irdma/verbs.c
> 
> between commit:
> 
>   b9b0889071569 ("RDMA/irdma: Prevent user-triggered null deref on QP create")
> 
> from the origin tree and commit:
> 
>   d83bf998f719d ("RDMA/irdma: Prevent user-triggered null deref on QP create")

Jason,

By mistake, we ended up with two identical commits: one applied by
you to rdma-rc, and the other applied by me to rdma-next.

Thanks

^ permalink raw reply

* linux-next: manual merge of the nvmem tree with the char-misc tree
From: Mark Brown @ 2026-07-20 14:59 UTC (permalink / raw)
  To: Srinivas Kandagatla
  Cc: Arnd Bergmann, Bartosz Golaszewski, Christian Marangi,
	Greg Kroah-Hartman, Julian Braha, Linux Kernel Mailing List,
	Linux Next Mailing List

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

Hi all,

Today's linux-next merge of the nvmem tree got conflicts in:

  drivers/nvmem/Makefile
  drivers/nvmem/Kconfig

between commits:

  b7846af2e6ca8 ("nvmem: airoha: Add support for SMC eFUSE")
  804a588eb58a2 ("nvmem: cleanup dead code in Kconfig")

from the char-misc tree and commits:

  b13e7886c2e16 ("nvmem: airoha: Add support for SMC eFUSE")
  d5bd22d9d2032 ("nvmem: cleanup dead code in Kconfig")
  addd9b7203a3d ("eeprom: move nvmem EEPROM drivers to drivers/nvmem/")
  29d8d70e55efe ("nvmem: airoha: add ARM64 dependency")

from the nvmem 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/nvmem/Kconfig
index e10f7ff725ff9,c36c2a4c2a0b7..0000000000000
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
@@@ -28,8 -28,96 +28,96 @@@ source "drivers/nvmem/layouts/Kconfig
  
  # Devices
  
+ if NVMEM_SYSFS
+ 
+ config EEPROM_AT24
+ 	tristate "I2C EEPROMs / RAMs / ROMs from most vendors"
+ 	depends on I2C && SYSFS
+ 	select REGMAP
+ 	select REGMAP_I2C
+ 	help
+ 	  Enable this driver to get read/write support to most I2C EEPROMs
+ 	  and compatible devices like FRAMs, SRAMs, ROMs etc. After you
+ 	  configure the driver to know about each chip on your target
+ 	  board.  Use these generic chip names, instead of vendor-specific
+ 	  ones like at24c64, 24lc02 or fm24c04:
+ 
+ 	     24c00, 24c01, 24c02, spd (readonly 24c02), 24c04, 24c08,
+ 	     24c16, 24c32, 24c64, 24c128, 24c256, 24c512, 24c1024, 24c2048
+ 
+ 	  Unless you like data loss puzzles, always be sure that any chip
+ 	  you configure as a 24c32 (32 kbit) or larger is NOT really a
+ 	  24c16 (16 kbit) or smaller, and vice versa. Marking the chip
+ 	  as read-only won't help recover from this. Also, if your chip
+ 	  has any software write-protect mechanism you may want to review the
+ 	  code to make sure this driver won't turn it on by accident.
+ 
+ 	  If you use this with an SMBus adapter instead of an I2C adapter,
+ 	  full functionality is not available.  Only smaller devices are
+ 	  supported (24c16 and below, max 4 kByte).
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called at24.
+ 
+ config EEPROM_AT25
+ 	tristate "SPI EEPROMs (FRAMs) from most vendors"
+ 	depends on SPI && SYSFS
+ 	select SPI_MEM
+ 	help
+ 	  Enable this driver to get read/write support to most SPI EEPROMs
+ 	  and Cypress FRAMs,
+ 	  after you configure the board init code to know about each eeprom
+ 	  on your target board.
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called at25.
+ 
+ config EEPROM_93XX46
+ 	tristate "Microwire EEPROM 93XX46 support"
+ 	depends on SPI && SYSFS
+ 	select REGMAP
+ 	help
+ 	  Driver for the microwire EEPROM chipsets 93xx46x. The driver
+ 	  supports both read and write commands and also the command to
+ 	  erase the whole EEPROM.
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called eeprom_93xx46.
+ 
+ 	  If unsure, say N.
+ 
+ config EEPROM_EE1004
+ 	tristate "SPD EEPROMs on DDR4 memory modules"
+ 	depends on I2C && SYSFS
+ 	help
+ 	  Enable this driver to get read support to SPD EEPROMs following
+ 	  the JEDEC EE1004 standard. These are typically found on DDR4
+ 	  SDRAM memory modules.
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called ee1004.
+ 
+ config EEPROM_M24LR
+ 	tristate "STMicroelectronics M24LR RFID/NFC EEPROM support"
+ 	depends on I2C && SYSFS
+ 	select REGMAP_I2C
+ 	help
+ 	  This enables support for STMicroelectronics M24LR RFID/NFC EEPROM
+ 	  chips. These dual-interface devices expose two I2C addresses:
+ 	  one for EEPROM memory access and another for control and system
+ 	  configuration (e.g. UID, password handling).
+ 
+ 	  This driver provides a sysfs interface for control functions and
+ 	  integrates with the nvmem subsystem for EEPROM access.
+ 
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called m24lr.
+ 
+ endif # NVMEM_SYSFS
+ 
  config NVMEM_AIROHA_SMC_EFUSES
  	tristate "Airoha SMC eFuse support"
+ 	depends on ARM64
  	depends on ARCH_AIROHA || COMPILE_TEST
  	depends on HAVE_ARM_SMCCC
  	default ARCH_AIROHA
diff --combined drivers/nvmem/Makefile
index f6f2bc51dee19,2bbfb9ff18859..0000000000000
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
@@@ -10,6 -10,11 +10,11 @@@ nvmem_layouts-y			:= layouts.
  obj-y				+= layouts/
  
  # Devices
+ obj-$(CONFIG_EEPROM_AT24)		+= at24.o
+ obj-$(CONFIG_EEPROM_AT25)		+= at25.o
+ obj-$(CONFIG_EEPROM_93XX46)		+= eeprom_93xx46.o
+ obj-$(CONFIG_EEPROM_EE1004)		+= ee1004.o
+ obj-$(CONFIG_EEPROM_M24LR)		+= m24lr.o
  obj-$(CONFIG_NVMEM_AIROHA_SMC_EFUSES)	+= nvmem-airoha-smc-efuses.o
  nvmem-airoha-smc-efuses-y 		:= airoha-smc-efuses.o
  obj-$(CONFIG_NVMEM_AN8855_EFUSE)	+= nvmem-an8855-efuse.o

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

^ permalink raw reply

* linux-next: duplicate patch in the nvmem tree
From: Mark Brown @ 2026-07-20 14:55 UTC (permalink / raw)
  To: Srinivas Kandagatla; +Cc: Linux Kernel Mailing List, Linux Next Mailing List

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

Hi all,

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

  b13e7886c2e16 (nvmem: airoha: Add support for SMC eFUSE)
  d5bd22d9d2032 (nvmem: cleanup dead code in Kconfig)

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

^ permalink raw reply

* linux-next: manual merge of the char-misc tree with the security tree
From: Mark Brown @ 2026-07-20 14:48 UTC (permalink / raw)
  To: Greg KH, Arnd Bergmann
  Cc: Alice Ryhl, Greg Kroah-Hartman, Jahnavi MN, Jann Horn,
	Linux Kernel Mailing List, Linux Next Mailing List, Paul Moore

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

Hi all,

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

  rust/kernel/task.rs

between commits:

  ef2d3e4635761 ("rust: task: clarify comments on task UID accessors")
  15c1f17979712 ("cred: delete task_euid()")

from the security tree and commit:

  2847d9ab088bb ("rust_binder: Add dynamic debug logging mask")

from the char-misc 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 rust/kernel/task.rs
index c2b3457b700c1,1b290c61714db..0000000000000
--- a/rust/kernel/task.rs
+++ b/rust/kernel/task.rs
@@@ -210,7 -210,14 +210,14 @@@ impl Task 
          unsafe { *ptr::addr_of!((*self.as_ptr()).pid) }
      }
  
+     /// Returns the TGID (Thread Group ID / Process ID) of the given task.
+     pub fn tgid(&self) -> Pid {
+         // SAFETY: The tgid of a task never changes after initialization, so reading this field is
+         // not a data race.
+         unsafe { *ptr::addr_of!((*self.as_ptr()).tgid) }
+     }
+ 
 -    /// Returns the UID of the given task.
 +    /// Returns the objective real UID of the given task.
      #[inline]
      pub fn uid(&self) -> Kuid {
          // SAFETY: It's always safe to call `task_uid` on a valid task.

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

^ permalink raw reply

* linux-next: manual merge of the char-misc tree with the char-misc.current tree
From: Mark Brown @ 2026-07-20 14:46 UTC (permalink / raw)
  To: Greg KH, Arnd Bergmann
  Cc: Greg Kroah-Hartman, Linux Kernel Mailing List,
	Linux Next Mailing List, Runyu Xiao, Vu Nguyen Anh Khoa

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

Hi all,

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

  drivers/misc/nsm.c

between commit:

  ce1fed11d18e1 ("misc: nsm: only unlock nsm_dev on post-lock error paths")

from the char-misc.current tree and commit:

  937cd823bb2c9 ("misc: nsm: do not unlock mutex before locking it")

from the char-misc 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/misc/nsm.c
index 3960506eb7ab3,bb254ee65b840..0000000000000
--- a/drivers/misc/nsm.c
+++ b/drivers/misc/nsm.c
@@@ -243,7 -243,7 +243,7 @@@ static int nsm_sendrecv_msg_locked(stru
  		goto cleanup;
  	}
  
- 	msg->resp.len = len;
+ 	msg->resp.len = min_t(unsigned int, len, sizeof(msg->resp.data));
  
  	rc = 0;
  
@@@ -365,9 -365,8 +365,8 @@@ static long nsm_dev_ioctl(struct file *
  		return -EINVAL;
  
  	/* Copy user argument struct to kernel argument struct */
- 	r = -EFAULT;
  	if (copy_from_user(&raw, argp, _IOC_SIZE(cmd)))
- 		return r;
+ 		return -EFAULT;
  
  	mutex_lock(&nsm->lock);
  
@@@ -413,7 -412,6 +412,7 @@@ static int nsm_device_init_vq(struct vi
  }
  
  static const struct file_operations nsm_dev_fops = {
 +	.owner = THIS_MODULE,
  	.unlocked_ioctl = nsm_dev_ioctl,
  	.compat_ioctl = compat_ptr_ioctl,
  };

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

^ permalink raw reply

* Re: linux-next: manual merge of the mm-unstable tree with the drm-misc-fixes tree
From: Matthew Wilcox @ 2026-07-20 14:46 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Mark Brown, Andrew Morton, Linux Kernel Mailing List,
	Linux Next Mailing List, Matthew Brost, Hugh Dickins, Baolin Wang,
	linux-mm, Christian Koenig, Huang Rui, dri-devel
In-Reply-To: <20260720144141.GA16699@lst.de>

On Mon, Jul 20, 2026 at 04:41:41PM +0200, Christoph Hellwig wrote:
> >   /**
> >  - * ttm_backup_backup_page() - Backup a page
> >  + * ttm_backup_backup_folio() - Backup a folio
> >    * @backup: The struct backup pointer to use.
> >  - * @page: The page to back up.
> >  - * @writeback: Whether to perform immediate writeback of the page.
> >  + * @folio: The folio to back up.
> >  + * @order: The allocation order of @folio.  Since TTM allocates higher-order
> >  + *         pages without __GFP_COMP, folio_nr_pages(@folio) would always
> >  + *         return 1; the caller must pass the true order explicitly.

Wait, what?  This is just broken.  TTM should change to allocate using
GFP_COMP.  Why can't graphics people ask questions before writing stupid
patches?


^ permalink raw reply

* linux-next: manual merge of the char-misc tree with the char-misc.current tree
From: Mark Brown @ 2026-07-20 14:44 UTC (permalink / raw)
  To: Greg KH, Arnd Bergmann
  Cc: Alice Ryhl, Greg Kroah-Hartman, Jahnavi MN,
	Linux Kernel Mailing List, Linux Next Mailing List

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

Hi all,

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

  drivers/android/binder/thread.rs

between commit:

  bb66b1a345253 ("rust_binder: only print failure if error has source")

from the char-misc.current tree and commit:

  c61f3ad2213cf ("rust_binder: Implement BINDER_DEBUG_FAILED_TRANSACTION")

from the char-misc 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/android/binder/thread.rs
index bc0ef8927905c,a51821dde0adf..0000000000000
--- a/drivers/android/binder/thread.rs
+++ b/drivers/android/binder/thread.rs
@@@ -1273,14 -1295,25 +1295,24 @@@ impl Thread 
                          inner.extended_error =
                              ExtendedError::new(info.debug_id as u32, err.reply, source.to_errno());
                      }
 -                }
  
-                     pr_warn!(
-                         "{}:{} transaction to {} failed: {err:?}",
-                         info.from_pid,
-                         info.from_tid,
-                         info.to_pid
 -                binder_debug!(
 -                    FailedTransaction,
 -                    "transaction {} to {}:{} failed {:?}, code {} size {}-{}",
 -                    if info.is_reply {
 -                        "reply"
 -                    } else if info.is_oneway() {
 -                        "async"
 -                    } else {
 -                        "call"
 -                    },
 -                    info.to_pid,
 -                    info.to_tid,
 -                    err,
 -                    info.code,
 -                    info.data_size,
 -                    info.offsets_size
 -                );
++                    binder_debug!(
++                        FailedTransaction,
++                        "transaction {} to {}:{} failed {:?}, code {} size {}-{}",
++                        if info.is_reply {
++                            "reply"
++                        } else if info.is_oneway() {
++                            "async"
++                        } else {
++                            "call"
++                        },
++                        info.to_pid,
++                        info.to_tid,
++                        err,
++                        info.code,
++                        info.data_size,
++                        info.offsets_size
 +                    );
-                 }
              }
          }
  

[-- 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-20 14:44 UTC (permalink / raw)
  To: Thomas Hellström, DRM XE List
  Cc: Arvind Yadav, Linux Kernel Mailing List, Linux Next Mailing List,
	Niranjana Vishwanathapura, Tejas Upadhyay

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

Hi all,

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

  drivers/gpu/drm/xe/xe_guc_submit.c

between commit:

  9b7e60184f4b2 ("drm/xe/guc: Hold device ref until queue teardown completes")

from the origin tree and commits:

  da1124abac689 ("drm/xe/guc: Hold device ref until queue teardown completes")
  5d5a729cc9780 ("drm/xe/multi_queue: preempt primary on queue group suspend")

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_guc_submit.c
index 3188cd1658fe4,8aaed4fd13ea3..0000000000000
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@@ -961,6 -961,27 +961,27 @@@ static void __register_exec_queue(struc
  	xe_guc_ct_send(&guc->ct, action, ARRAY_SIZE(action), 0, 0);
  }
  
+ static u32 xe_hwe_guc_logical_to_submit_mask(struct xe_hw_engine *hwe, u32 logical_mask)
+ {
+ 	struct xe_gt *gt = hwe->gt;
+ 
+ 	if (xe_gt_is_usm_hwe(gt, hwe)) {
+ 		int shift = gt->usm.paging_hwe0->logical_instance;
+ 		u32 paging_logical_mask = gt->usm.paging_logical_mask;
+ 
+ 		xe_gt_assert(gt, (logical_mask & paging_logical_mask) == logical_mask);
+ 
+ 		/*
+ 		 * Remap to GUC_PAGING_CLASS logical instance mask, if
+ 		 * applicable.
+ 		 */
+ 		if (xe_guc_has_paging_engine(&hwe->gt->uc.guc))
+ 			return logical_mask >> shift;
+ 	}
+ 
+ 	return logical_mask;
+ }
+ 
  static void register_exec_queue(struct xe_exec_queue *q, int ctx_type)
  {
  	struct xe_guc *guc = exec_queue_to_guc(q);
@@@ -973,8 -994,9 +994,9 @@@
  
  	memset(&info, 0, sizeof(info));
  	info.context_idx = q->guc->id;
- 	info.engine_class = xe_engine_class_to_guc_class(q->class);
- 	info.engine_submit_mask = q->logical_mask;
+ 	info.engine_class = xe_hwe_to_guc_class(q->hwe);
+ 	info.engine_submit_mask =
+ 		xe_hwe_guc_logical_to_submit_mask(q->hwe, q->logical_mask);
  	info.hwlrca_lo = lower_32_bits(xe_lrc_descriptor(lrc));
  	info.hwlrca_hi = upper_32_bits(xe_lrc_descriptor(lrc));
  	info.flags = CONTEXT_REGISTRATION_FLAG_KMD |
@@@ -1671,12 -1693,37 +1693,37 @@@ handle_vf_resume
  	return DRM_GPU_SCHED_STAT_NO_HANG;
  }
  
+ static void guc_exec_queue_multi_queue_drop_suspend(struct xe_exec_queue *q);
+ static int guc_exec_queue_suspend_wait_blocking(struct xe_exec_queue *q);
+ 
  static void guc_exec_queue_fini(struct xe_exec_queue *q)
  {
  	struct xe_guc_exec_queue *ge = q->guc;
  	struct xe_guc *guc = exec_queue_to_guc(q);
  	struct drm_device *drm = &guc_to_xe(guc)->drm;
  
+ 	/*
+ 	 * A secondary can leave the group while still preempt suspended (e.g.
+ 	 * xe_vm_remove_compute_exec_queue() forces its preempt fence to signal,
+ 	 * which suspends it). It holds one forwarded suspend reference on the
+ 	 * primary, so drop it and resume the primary if it was the last member
+ 	 * that had it suspended. Primaries forward to nobody, so they don't need
+ 	 * this.
+ 	 *
+ 	 * First make sure the primary's forwarded suspend has completed. If the
+ 	 * secondary was killed/reset before its preempt fence worker ran, that
+ 	 * worker skips suspend_wait() (see preempt_fence_work_func()), leaving
+ 	 * the primary's suspend possibly in flight. drop_suspend() runs under a
+ 	 * spinlock and cannot wait, so drain it here with the uninterruptible
+ 	 * blocking wait; otherwise resuming the primary in drop_suspend() could
+ 	 * trip the !suspend_pending assert.
+ 	 */
+ 	if (xe_exec_queue_is_multi_queue_secondary(q)) {
+ 		if (READ_ONCE(q->guc->suspend_count))
+ 			guc_exec_queue_suspend_wait_blocking(q);
+ 		guc_exec_queue_multi_queue_drop_suspend(q);
+ 	}
+ 
  	if (xe_exec_queue_is_multi_queue_secondary(q)) {
  		struct xe_exec_queue_group *group = q->multi_queue.group;
  
@@@ -2176,23 -2223,147 +2223,147 @@@ static int guc_exec_queue_set_multi_que
  	return 0;
  }
  
+ /*
+  * Core suspend: take a suspend reference on @q and, on the first reference,
+  * disable its GuC context so the GPU is actually preempted. Caller must have
+  * ensured @q is not killed/banned/wedged. Returns true if this was the first
+  * suspend reference (the 0->1 transition).
+  */
+ static bool __guc_exec_queue_suspend(struct xe_exec_queue *q)
+ {
+ 	struct xe_guc_exec_queue *ge = q->guc;
+ 	struct xe_gpu_scheduler *sched = &ge->sched;
+ 	struct xe_sched_msg *msg = ge->static_msgs + STATIC_MSG_SUSPEND;
+ 	bool first;
+ 
+ 	xe_sched_msg_lock(sched);
+ 	first = (++ge->suspend_count == 1);
+ 	if (first) {
+ 		bool added = guc_exec_queue_try_add_msg(q, msg, SUSPEND);
+ 
+ 		/* slot must be free at 0->1 */
+ 		xe_gt_assert(guc_to_gt(exec_queue_to_guc(q)), added);
+ 		ge->suspend_pending = true;
+ 	}
+ 	xe_sched_msg_unlock(sched);
+ 
+ 	return first;
+ }
+ 
+ /*
+  * Core resume: drop a suspend reference on @q and, on the last reference,
+  * re-enable its GuC context. Returns true if this dropped the last suspend
+  * reference (the 1->0 transition).
+  */
+ static bool __guc_exec_queue_resume(struct xe_exec_queue *q)
+ {
+ 	struct xe_guc_exec_queue *ge = q->guc;
+ 	struct xe_gpu_scheduler *sched = &ge->sched;
+ 	struct xe_sched_msg *msg = ge->static_msgs + STATIC_MSG_RESUME;
+ 	struct xe_guc *guc = exec_queue_to_guc(q);
+ 	bool last;
+ 
+ 	xe_sched_msg_lock(sched);
+ 	xe_gt_assert(guc_to_gt(guc), !ge->suspend_pending);
+ 	xe_gt_assert(guc_to_gt(guc), ge->suspend_count > 0);
+ 	last = (--ge->suspend_count == 0);
+ 	if (last) {
+ 		bool added = guc_exec_queue_try_add_msg(q, msg, RESUME);
+ 
+ 		/* slot must be free at 1->0 */
+ 		xe_gt_assert(guc_to_gt(guc), added);
+ 	}
+ 	xe_sched_msg_unlock(sched);
+ 
+ 	return last;
+ }
+ 
  static int guc_exec_queue_suspend(struct xe_exec_queue *q)
  {
- 	struct xe_gpu_scheduler *sched = &q->guc->sched;
- 	struct xe_sched_msg *msg = q->guc->static_msgs + STATIC_MSG_SUSPEND;
- 
  	if (exec_queue_killed_or_banned_or_wedged(q))
  		return -EINVAL;
  
- 	xe_sched_msg_lock(sched);
- 	if (guc_exec_queue_try_add_msg(q, msg, SUSPEND))
- 		q->guc->suspend_pending = true;
- 	xe_sched_msg_unlock(sched);
+ 	/*
+ 	 * Non-multi-queue queues and multi-queue primaries suspend themselves
+ 	 * directly: their own msg_lock makes the suspend_count 0->1 transition
+ 	 * and the suspend_pending update atomic, so no group level serialization
+ 	 * is needed.
+ 	 */
+ 	if (!xe_exec_queue_is_multi_queue_secondary(q)) {
+ 		__guc_exec_queue_suspend(q);
+ 		return 0;
+ 	}
+ 
+ 	/*
+ 	 * A secondary's suspend is meaningless once the primary - which owns the
+ 	 * group's GuC context - is gone, so fail it too. This keeps the
+ 	 * secondary's effective state consistent with guc_exec_queue_reset_status(),
+ 	 * which already reports the primary's killed/banned/wedged state for
+ 	 * secondaries. A primary killed *after* this check is still handled at
+ 	 * message-processing time, where the SUSPEND is a no-op for a killed
+ 	 * context; this only covers an already-dead primary.
+ 	 */
+ 	if (exec_queue_killed_or_banned_or_wedged(xe_exec_queue_multi_queue_primary(q)))
+ 		return -EINVAL;
+ 
+ 	/*
+ 	 * A secondary doesn't interface with GuC: suspend it like any other
+ 	 * queue (its own suspend_count drives its internally handled scheduler
+ 	 * state) and, only on its own 0->1 transition, forward the suspend to the
+ 	 * primary so the GPU is actually preempted. Hold @suspend_lock so that
+ 	 * observing the secondary's transition and forwarding it to the primary
+ 	 * happen atomically; this keeps the primary's refcount paired with member
+ 	 * transitions even if the same secondary is suspended and resumed
+ 	 * concurrently across rebind cycles.
+ 	 */
+ 	scoped_guard(spinlock, &q->multi_queue.group->suspend_lock) {
+ 		if (__guc_exec_queue_suspend(q))
+ 			__guc_exec_queue_suspend(xe_exec_queue_multi_queue_primary(q));
+ 	}
  
  	return 0;
  }
  
- static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q)
+ static void guc_exec_queue_suspend_timeout_ban(struct xe_exec_queue *q)
+ {
+ 	struct xe_guc *guc = exec_queue_to_guc(q);
+ 
+ 	xe_gt_warn(guc_to_gt(guc),
+ 		   "Suspend fence, guc_id=%d, failed to respond, banning queue",
+ 		   q->guc->id);
+ 	/*
+ 	 * The GuC failed to respond to the suspend within the timeout. This is
+ 	 * not recoverable for this context, so ban it and tear it down via
+ 	 * cleanup rather than leave it suspended forever. __suspend_fence_signal
+ 	 * clears suspend_pending and wakes any waiter.
+ 	 *
+ 	 * @q is the primary here; it owns the group's GuC context, so a failure
+ 	 * to suspend it wedges the whole group. Ban and tear down the entire
+ 	 * group in the multi-queue case.
+ 	 */
+ 	if (xe_exec_queue_is_multi_queue(q)) {
+ 		set_exec_queue_group_banned(q);
+ 		__suspend_fence_signal(q);
+ 		xe_guc_exec_queue_group_trigger_cleanup(q);
+ 	} else {
+ 		set_exec_queue_banned(q);
+ 		__suspend_fence_signal(q);
+ 		xe_guc_exec_queue_trigger_cleanup(q);
+ 	}
+ }
+ 
+ /*
+  * Wait for @q's own suspend to complete: suspend_pending cleared, or the queue
+  * killed / GuC stopped. With @blocking, wait uninterruptibly and do not handle
+  * VF recovery (for callers that must complete on behalf of a possibly
+  * cross-process queue); otherwise wait interruptibly.
+  *
+  * Returns 0 on completion or -ETIME on timeout. Interruptible waits may also
+  * return -EAGAIN (VF recovery in progress, retry) or -ERESTARTSYS (aborted by a
+  * signal; suspend_pending may still be set, so callers must not resume()
+  * without re-confirming the suspend).
+  */
+ static int guc_exec_queue_wait_suspend_done(struct xe_exec_queue *q, bool blocking)
  {
  	struct xe_guc *guc = exec_queue_to_guc(q);
  	struct xe_device *xe = guc_to_xe(guc);
@@@ -2208,44 -2379,146 +2379,146 @@@
  	 xe_guc_read_stopped(guc))
  
  retry:
- 	if (IS_SRIOV_VF(xe))
+ 	if (blocking) {
+ 		if (IS_SRIOV_VF(xe))
+ 			ret = wait_event_timeout(guc->ct.wq, WAIT_COND, HZ * 5);
+ 		else
+ 			ret = wait_event_timeout(q->guc->suspend_wait, WAIT_COND,
+ 						 HZ * 5);
+ 	} else if (IS_SRIOV_VF(xe)) {
  		ret = wait_event_interruptible_timeout(guc->ct.wq, WAIT_COND ||
- 						       vf_recovery(guc),
- 						       HZ * 5);
- 	else
+ 						       vf_recovery(guc), HZ * 5);
+ 	} else {
  		ret = wait_event_interruptible_timeout(q->guc->suspend_wait,
  						       WAIT_COND, HZ * 5);
+ 	}
  
- 	if (vf_recovery(guc) && !xe_device_wedged((guc_to_xe(guc))))
+ 	if (!blocking && vf_recovery(guc) && !xe_device_wedged(xe))
  		return -EAGAIN;
  
- 	if (!ret) {
- 		xe_gt_warn(guc_to_gt(guc),
- 			   "Suspend fence, guc_id=%d, failed to respond",
- 			   q->guc->id);
- 		/* XXX: Trigger GT reset? */
+ 	if (!ret)
  		return -ETIME;
- 	} else if (IS_SRIOV_VF(xe) && !WAIT_COND) {
+ 	else if (!blocking && IS_SRIOV_VF(xe) && !WAIT_COND)
  		/* Corner case on RESFIX DONE where vf_recovery() changes */
  		goto retry;
- 	}
  
  #undef WAIT_COND
  
  	return ret < 0 ? ret : 0;
  }
  
+ static int guc_exec_queue_suspend_wait_common(struct xe_exec_queue *q, bool blocking)
+ {
+ 	int ret;
+ 
+ 	/*
+ 	 * A secondary's suspend rides the sched-message worker (short-circuited,
+ 	 * no GuC round-trip) and so is not synchronous with
+ 	 * guc_exec_queue_suspend(): its own suspend_pending may still be set
+ 	 * here. Waiting on the primary alone is not sufficient - if the primary
+ 	 * was already suspended, the forward is a refcount-only transition that
+ 	 * queues no new primary SUSPEND and leaves the primary's suspend_pending
+ 	 * clear, so the primary wait would return immediately while the
+ 	 * secondary's suspend is still in flight, and a later resume() would trip
+ 	 * the secondary's !suspend_pending assert. So first wait for the
+ 	 * secondary's own suspend to complete, then wait on the primary.
+ 	 *
+ 	 * A timeout on either bans the queue (being multi-queue, that tears down
+ 	 * the whole group). A secondary suspend has no real GuC round-trip, so
+ 	 * its timeout is a software scheduler stall rather than a GuC fault, but
+ 	 * banning is still the safe recovery: otherwise the queue is left with
+ 	 * suspend_pending set and a subsequent resume() trips the !suspend_pending
+ 	 * assert.
+ 	 */
+ 	if (xe_exec_queue_is_multi_queue_secondary(q)) {
+ 		ret = guc_exec_queue_wait_suspend_done(q, blocking);
+ 		if (ret == -ETIME)
+ 			guc_exec_queue_suspend_timeout_ban(q);
+ 		if (ret)
+ 			return ret;
+ 	}
+ 
+ 	q = xe_exec_queue_multi_queue_primary(q);
+ 	ret = guc_exec_queue_wait_suspend_done(q, blocking);
+ 	if (ret == -ETIME)
+ 		guc_exec_queue_suspend_timeout_ban(q);
+ 
+ 	return ret;
+ }
+ 
+ static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q)
+ {
+ 	return guc_exec_queue_suspend_wait_common(q, false);
+ }
+ 
+ /*
+  * Uninterruptible variant of guc_exec_queue_suspend_wait() for callers that
+  * must complete the wait on behalf of a queue possibly owned by a different
+  * process (e.g. cleanup/undo paths). An interruptible wait could return
+  * -ERESTARTSYS if the calling task is signalled, leaving that queue suspended
+  * forever (cross-process DoS). VF recovery is deliberately not handled (no
+  * -EAGAIN) since a blocking caller cannot retry.
+  */
+ static int guc_exec_queue_suspend_wait_blocking(struct xe_exec_queue *q)
+ {
+ 	return guc_exec_queue_suspend_wait_common(q, true);
+ }
+ 
  static void guc_exec_queue_resume(struct xe_exec_queue *q)
  {
- 	struct xe_gpu_scheduler *sched = &q->guc->sched;
- 	struct xe_sched_msg *msg = q->guc->static_msgs + STATIC_MSG_RESUME;
- 	struct xe_guc *guc = exec_queue_to_guc(q);
+ 	/*
+ 	 * Non-multi-queue queues and multi-queue primaries resume themselves
+ 	 * directly; their own msg_lock is sufficient.
+ 	 */
+ 	if (!xe_exec_queue_is_multi_queue_secondary(q)) {
+ 		__guc_exec_queue_resume(q);
+ 		return;
+ 	}
  
- 	xe_gt_assert(guc_to_gt(guc), !q->guc->suspend_pending);
+ 	/*
+ 	 * Mirror of guc_exec_queue_suspend(): resume the secondary like any
+ 	 * other queue and, only on its own 1->0 transition, forward the resume
+ 	 * to the primary so the primary's GuC context is re-enabled once the
+ 	 * last member that suspended it resumes. @suspend_lock keeps the
+ 	 * secondary transition and the primary forward atomic.
+ 	 */
+ 	scoped_guard(spinlock, &q->multi_queue.group->suspend_lock) {
+ 		if (__guc_exec_queue_resume(q))
+ 			__guc_exec_queue_resume(xe_exec_queue_multi_queue_primary(q));
+ 	}
+ }
  
- 	xe_sched_msg_lock(sched);
- 	guc_exec_queue_try_add_msg(q, msg, RESUME);
- 	xe_sched_msg_unlock(sched);
+ /*
+  * Drop a leaving secondary's forwarded suspend reference on the primary and
+  * resume the primary if this was the last member that had it suspended.
+  * See guc_exec_queue_fini().
+  */
+ static void guc_exec_queue_multi_queue_drop_suspend(struct xe_exec_queue *q)
+ {
+ 	scoped_guard(spinlock, &q->multi_queue.group->suspend_lock) {
+ 		struct xe_exec_queue *primary = xe_exec_queue_multi_queue_primary(q);
+ 
+ 		/*
+ 		 * A suspended secondary holds exactly one suspend reference on the
+ 		 * primary (forwarded on its 0->1 transition). If it leaves while
+ 		 * still suspended, release that reference so the primary is not
+ 		 * kept disabled forever.
+ 		 */
+ 		if (!READ_ONCE(q->guc->suspend_count))
+ 			break;
+ 
+ 		if (exec_queue_killed_or_banned_or_wedged(primary))
+ 			break;
+ 
+ 		/*
+ 		 * No suspend_wait() here (and we can't - suspend_lock is a
+ 		 * spinlock). guc_exec_queue_fini() has already drained the
+ 		 * primary's forwarded suspend with the blocking wait, so its
+ 		 * suspend has completed (suspend_pending cleared) by the time we
+ 		 * resume it here. __guc_exec_queue_resume() asserts this.
+ 		 */
+ 		__guc_exec_queue_resume(primary);
+ 	}
  }
  
  static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
@@@ -2274,6 -2547,7 +2547,7 @@@ static const struct xe_exec_queue_ops g
  	.set_multi_queue_priority = guc_exec_queue_set_multi_queue_priority,
  	.suspend = guc_exec_queue_suspend,
  	.suspend_wait = guc_exec_queue_suspend_wait,
+ 	.suspend_wait_blocking = guc_exec_queue_suspend_wait_blocking,
  	.resume = guc_exec_queue_resume,
  	.reset_status = guc_exec_queue_reset_status,
  };
@@@ -3030,6 -3304,38 +3304,38 @@@ int xe_guc_exec_queue_memory_cat_error_
  
  	/* Treat the same as engine reset */
  	xe_guc_exec_queue_reset_trigger_cleanup(q);
+ 
+ 	return 0;
+ }
+ 
+ int xe_guc_uncorrectable_error_handler(struct xe_guc *guc, u32 *msg, u32 len)
+ {
+ 	struct xe_gt *gt = guc_to_gt(guc);
+ 	struct xe_exec_queue *q;
+ 	u32 guc_id;
+ 
+ 	if (unlikely(!len || len > 1))
+ 		return -EPROTO;
+ 
+ 	guc_id = msg[0];
+ 
+ 	if (guc_id == GUC_ID_UNKNOWN) {
+ 		xe_gt_err(gt, "GuC: Uncorrectable local error with unknown GuC id\n");
+ 		return 0;
+ 	}
+ 
+ 	q = g2h_exec_queue_lookup(guc, guc_id);
+ 	if (unlikely(!q))
+ 		return -EPROTO;
+ 
+ 	xe_gt_err(gt,
+ 		  "GuC: Uncorrectable local error! guc_id=%d class=%s, logical_mask=0x%x",
+ 		  guc_id, xe_hw_engine_class_to_str(q->class), q->logical_mask);
+ 
+ 	trace_xe_guc_uncorrectable_error(q);
+ 
+ 	/* Treat the same as engine reset */
+ 	xe_guc_exec_queue_reset_trigger_cleanup(q);
  
  	return 0;
  }

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

^ permalink raw reply

* linux-next: manual merge of the drm tree with the origin tree
From: Mark Brown @ 2026-07-20 14:44 UTC (permalink / raw)
  To: Dave Airlie, DRI
  Cc: Linux Kernel Mailing List, Linux Next Mailing List, Matt Roper,
	Rodrigo Vivi, Satyanarayana K V P, Thomas Hellström

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

Hi all,

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

  drivers/gpu/drm/xe/xe_pci.c

between commit:

  130910bac905a ("drm/xe/pf: Disable display in admin only PF mode")

from the origin tree and commit:

  b623bd790db04 ("drm/xe: Drop 'force_execlist' module parameter")

from the drm 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_pci.c
index 9cd873708136c,91af603e94315..0000000000000
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@@ -26,6 -26,7 +26,7 @@@
  #include "xe_guc.h"
  #include "xe_mmio.h"
  #include "xe_module.h"
+ #include "xe_pci_error.h"
  #include "xe_pci_rebar.h"
  #include "xe_pci_sriov.h"
  #include "xe_pci_types.h"
@@@ -355,6 -356,7 +356,7 @@@ static const __maybe_unused struct xe_d
  	PLATFORM(PVC),
  	.dma_mask_size = 52,
  	.has_display = false,
+ 	.has_drm_ras = true,
  	.has_gsc_nvm = 1,
  	.has_heci_gscfi = 1,
  	.max_gt_per_tile = 1,
@@@ -457,6 -459,7 +459,7 @@@ static const struct xe_device_desc cri_
  	PLATFORM(CRESCENTISLAND),
  	.dma_mask_size = 52,
  	.has_display = false,
+ 	.has_drm_ras = true,
  	.has_flat_ccs = false,
  	.has_gsc_nvm = 1,
  	.has_i2c = true,
@@@ -599,8 -602,6 +602,6 @@@ static int read_gmdid(struct xe_device 
  	struct xe_reg gmdid_reg = GMD_ID;
  	u32 val;
  
- 	KUNIT_STATIC_STUB_REDIRECT(read_gmdid, xe, type, ver, revid);
- 
  	if (IS_SRIOV_VF(xe)) {
  		/*
  		 * To get the value of the GMDID register, VFs must obtain it
@@@ -726,14 -727,30 +727,30 @@@ static int handle_gmdid(struct xe_devic
  	return 0;
  }
  
- static void init_devid(struct xe_device *xe)
+ struct xe_probed_info {
+ 	u16 devid;
+ 	u8 revid;
+ 	u8 tile_count;
+ 	struct xe_step_info step;
+ 	const struct xe_ip *graphics_ip;
+ 	const struct xe_ip *media_ip;
+ };
+ 
+ /*
+  * Probe from the hardware the info required by xe_info_init_early().
+  */
+ static int xe_probe_info_early(struct xe_device *xe,
+ 			       const struct xe_device_desc *desc,
+ 			       struct xe_probed_info *probed_info)
  {
  	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
  
- 	KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
+ 	probed_info->devid = pdev->device;
+ 	probed_info->revid = pdev->revision;
  
- 	xe->info.devid = pdev->device;
- 	xe->info.revid = pdev->revision;
+ 	xe_step_platform_get(desc->platform, probed_info->revid, &probed_info->step);
+ 
+ 	return 0;
  }
  
  /*
@@@ -742,17 -759,20 +759,20 @@@
   */
  static int xe_info_init_early(struct xe_device *xe,
  			      const struct xe_device_desc *desc,
- 			      const struct xe_subplatform_desc *subplatform_desc)
+ 			      const struct xe_subplatform_desc *subplatform_desc,
+ 			      struct xe_probed_info *probed_info)
  {
  	int err;
  
+ 	xe->info.devid = probed_info->devid;
+ 	xe->info.revid = probed_info->revid;
+ 	xe->info.step.platform = probed_info->step.platform;
+ 
  	xe->info.platform_name = desc->platform_name;
  	xe->info.platform = desc->platform;
  	xe->info.subplatform = subplatform_desc ?
  		subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
  
- 	init_devid(xe);
- 
  	xe->info.dma_mask_size = desc->dma_mask_size;
  	xe->info.va_bits = desc->va_bits;
  	xe->info.vm_max_level = desc->vm_max_level;
@@@ -760,6 -780,7 +780,7 @@@
  
  	xe->info.is_dgfx = desc->is_dgfx;
  	xe->info.has_cached_pt = desc->has_cached_pt;
+ 	xe->info.has_drm_ras = desc->has_drm_ras;
  	xe->info.has_fan_control = desc->has_fan_control;
  	/* runtime fusing may force flat_ccs to disabled later */
  	xe->info.has_flat_ccs = desc->has_flat_ccs;
@@@ -788,16 -809,11 +809,11 @@@
  
  	xe->info.probe_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
  				 xe_modparam.probe_display &&
- 				 desc->has_display &&
- 				 !xe_device_is_admin_only(xe);
- 	xe->info.force_execlist = xe_modparam.force_execlist;
+ 				 desc->has_display;
  
  	xe_assert(xe, desc->max_gt_per_tile > 0);
  	xe_assert(xe, desc->max_gt_per_tile <= XE_MAX_GT_PER_TILE);
  	xe->info.max_gt_per_tile = desc->max_gt_per_tile;
- 	xe->info.tile_count = 1 + desc->max_remote_tiles;
- 
- 	xe_step_platform_get(xe);
  
  	err = xe_tile_init_early(xe_device_get_root_tile(xe), xe, 0);
  	if (err)
@@@ -806,22 -822,21 +822,21 @@@
  	return 0;
  }
  
- /*
-  * Possibly override number of tile based on configuration register.
-  */
- static void xe_info_probe_tile_count(struct xe_device *xe)
+ static void xe_probe_tile_count(struct xe_device *xe,
+ 				const struct xe_device_desc *desc,
+ 				struct xe_probed_info *probed_info)
  {
  	struct xe_mmio *mmio;
  	u8 tile_count;
  	u32 mtcfg;
  
- 	KUNIT_STATIC_STUB_REDIRECT(xe_info_probe_tile_count, xe);
+ 	probed_info->tile_count = 1 + desc->max_remote_tiles;
  
  	/*
  	 * Probe for tile count only for platforms that support multiple
  	 * tiles.
  	 */
- 	if (xe->info.tile_count == 1)
+ 	if (probed_info->tile_count == 1)
  		return;
  
  	mmio = xe_root_tile_mmio(xe);
@@@ -834,10 -849,10 +849,10 @@@
  	mtcfg = xe_mmio_read32(mmio, XEHP_MTCFG_ADDR);
  	tile_count = REG_FIELD_GET(TILE_COUNT, mtcfg) + 1;
  
- 	if (tile_count < xe->info.tile_count) {
+ 	if (tile_count < probed_info->tile_count) {
  		drm_info(&xe->drm, "tile_count: %d, reduced_tile_count %d\n",
- 			 xe->info.tile_count, tile_count);
- 		xe->info.tile_count = tile_count;
+ 			 probed_info->tile_count, tile_count);
+ 		probed_info->tile_count = tile_count;
  	}
  }
  
@@@ -910,25 -925,10 +925,10 @@@ static struct xe_gt *alloc_media_gt(str
  	return gt;
  }
  
- /*
-  * Initialize device info content that does require knowledge about
-  * graphics / media IP version.
-  * Make sure that GT / tile structures allocated by the driver match the data
-  * present in device info.
-  */
- static int xe_info_init(struct xe_device *xe,
- 			const struct xe_device_desc *desc)
+ static int xe_probe_ips(struct xe_device *xe,
+ 			const struct xe_device_desc *desc,
+ 			struct xe_probed_info *probed_info)
  {
- 	u32 graphics_gmdid_revid = 0, media_gmdid_revid = 0;
- 	const struct xe_ip *graphics_ip;
- 	const struct xe_ip *media_ip;
- 	const struct xe_graphics_desc *graphics_desc;
- 	const struct xe_media_desc *media_desc;
- 	struct xe_tile *tile;
- 	struct xe_gt *gt;
- 	int ret;
- 	u8 id;
- 
  	/*
  	 * If this platform supports GMD_ID, we'll detect the proper IP
  	 * descriptor to use from hardware registers.
@@@ -937,17 -937,21 +937,21 @@@
  	 * versions are simply derived from that.
  	 */
  	if (desc->pre_gmdid_graphics_ip) {
- 		graphics_ip = desc->pre_gmdid_graphics_ip;
- 		media_ip = desc->pre_gmdid_media_ip;
- 		xe_step_pre_gmdid_get(xe);
+ 		probed_info->graphics_ip = desc->pre_gmdid_graphics_ip;
+ 		probed_info->media_ip = desc->pre_gmdid_media_ip;
+ 		xe_step_pre_gmdid_get(xe, &probed_info->step);
  	} else {
- 		xe_assert(xe, !desc->pre_gmdid_media_ip);
- 		ret = handle_gmdid(xe, &graphics_ip, &media_ip,
- 				   &graphics_gmdid_revid, &media_gmdid_revid);
- 		if (ret)
- 			return ret;
+ 		int err;
+ 		u32 graphics_revid, media_revid;
  
- 		xe_step_gmdid_get(xe, graphics_gmdid_revid, media_gmdid_revid);
+ 		xe_assert(xe, !desc->pre_gmdid_media_ip);
+ 
+ 		err = handle_gmdid(xe, &probed_info->graphics_ip, &probed_info->media_ip,
+ 				   &graphics_revid, &media_revid);
+ 		if (err)
+ 			return err;
+ 
+ 		xe_step_gmdid_get(xe, graphics_revid, media_revid, &probed_info->step);
  	}
  
  	/*
@@@ -955,9 -959,56 +959,56 @@@
  	 * error and we should abort driver load.  Failing to detect media
  	 * IP is non-fatal; we'll just proceed without enabling media support.
  	 */
- 	if (!graphics_ip)
+ 	if (!probed_info->graphics_ip)
  		return -ENODEV;
  
+ 	return 0;
+ }
+ 
+ /*
+  * Probe from the hardware the info required by xe_info_init().
+  */
+ static int xe_probe_info(struct xe_device *xe,
+ 			 const struct xe_device_desc *desc,
+ 			 struct xe_probed_info *probed_info)
+ {
+ 	int err;
+ 
+ 	xe_probe_tile_count(xe, desc, probed_info);
+ 
+ 	err = xe_probe_ips(xe, desc, probed_info);
+ 	if (err)
+ 		return err;
+ 
+ 	return 0;
+ }
+ 
+ /*
+  * Initialize device info content that does require knowledge about
+  * graphics / media IP version.
+  * Make sure that GT / tile structures allocated by the driver match the data
+  * present in device info.
+  */
+ static int xe_info_init(struct xe_device *xe,
+ 			const struct xe_device_desc *desc,
+ 			struct xe_probed_info *probed_info)
+ {
+ 	const struct xe_ip *graphics_ip;
+ 	const struct xe_ip *media_ip;
+ 	const struct xe_graphics_desc *graphics_desc;
+ 	const struct xe_media_desc *media_desc;
+ 	struct xe_tile *tile;
+ 	struct xe_gt *gt;
+ 	u8 id;
+ 
+ 	graphics_ip = probed_info->graphics_ip;
+ 	media_ip = probed_info->media_ip;
+ 
+ 	xe->info.tile_count = probed_info->tile_count;
+ 	xe->info.step.basedie = probed_info->step.basedie;
+ 	xe->info.step.graphics = probed_info->step.graphics;
+ 	xe->info.step.media = probed_info->step.media;
+ 
  	xe->info.graphics_verx100 = graphics_ip->verx100;
  	xe->info.graphics_name = graphics_ip->name;
  	graphics_desc = graphics_ip->desc;
@@@ -989,8 -1040,6 +1040,6 @@@
  		xe->info.has_soc_remapper_telem = 0;
  	}
  
- 	xe_info_probe_tile_count(xe);
- 
  	for_each_remote_tile(tile, xe, id) {
  		int err;
  
@@@ -1049,12 -1098,6 +1098,12 @@@ static void xe_pci_remove(struct pci_de
  		return;
  
  	xe_device_remove(xe);
 +
 +	/*
 +	 * Preserve remove-time flush after moving destroy work to module
 +	 * lifetime.
 +	 */
 +	xe_destroy_wq_flush();
  	xe_pm_fini(xe);
  }
  
@@@ -1079,9 -1122,11 +1128,11 @@@
   */
  static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
  {
+ 	struct xe_probed_info probed_info = {};
  	const struct xe_device_desc *desc = (const void *)ent->driver_data;
  	const struct xe_subplatform_desc *subplatform_desc;
  	struct xe_device *xe;
+ 	void *group;
  	int err;
  
  	subplatform_desc = find_subplatform(desc, pdev->device);
@@@ -1109,6 -1154,11 +1160,11 @@@
  	if (xe_display_driver_probe_defer(pdev))
  		return -EPROBE_DEFER;
  
+ 	/* Group all devres so xe_pci_error_slot_reset() can release them as a unit. */
+ 	group = devres_open_group(&pdev->dev, NULL, GFP_KERNEL);
+ 	if (!group)
+ 		return -ENOMEM;
+ 
  	err = pcim_enable_device(pdev);
  	if (err)
  		return err;
@@@ -1117,13 -1167,19 +1173,19 @@@
  	if (IS_ERR(xe))
  		return PTR_ERR(xe);
  
+ 	xe->devres_group = group;
+ 
  	pci_set_drvdata(pdev, &xe->drm);
  
  	xe_pm_assert_unbounded_bridge(xe);
  
  	pci_set_master(pdev);
  
- 	err = xe_info_init_early(xe, desc, subplatform_desc);
+ 	err = xe_probe_info_early(xe, desc, &probed_info);
+ 	if (err)
+ 		return err;
+ 
+ 	err = xe_info_init_early(xe, desc, subplatform_desc, &probed_info);
  	if (err)
  		return err;
  
@@@ -1142,7 -1198,11 +1204,11 @@@
  	if (err)
  		return err;
  
- 	err = xe_info_init(xe, desc);
+ 	err = xe_probe_info(xe, desc, &probed_info);
+ 	if (err)
+ 		return err;
+ 
+ 	err = xe_info_init(xe, desc, &probed_info);
  	if (err)
  		return err;
  
@@@ -1355,6 -1415,7 +1421,7 @@@ static struct pci_driver xe_pci_driver 
  	.remove = xe_pci_remove,
  	.shutdown = xe_pci_shutdown,
  	.sriov_configure = xe_pci_sriov_configure,
+ 	.err_handler = &xe_pci_error_handlers,
  #ifdef CONFIG_PM_SLEEP
  	.driver.pm = &xe_pm_ops,
  #endif

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

^ permalink raw reply

* linux-next: manual merge of the drm tree with the origin tree
From: Mark Brown @ 2026-07-20 14:44 UTC (permalink / raw)
  To: Dave Airlie, DRI
  Cc: Boris Brezillon, Laura Nao, Linux Kernel Mailing List,
	Linux Next Mailing List, Rodrigo Vivi, Satyanarayana K V P,
	Thomas Hellström

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

Hi all,

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

  drivers/gpu/drm/xe/xe_device.c

between commit:

  130910bac905a ("drm/xe/pf: Disable display in admin only PF mode")

from the origin tree and commit:

  21fcb222f0d1e ("drm: Remove DRIVER_GEM_GPUVA feature flag")

from the drm 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/gpu/drm/xe/xe_device.c
index 9d119c95a569a,ad7f3e61d4579..0000000000000
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@@ -426,7 -427,8 +427,7 @@@ static const struct drm_ioctl_desc xe_i
  
  static const struct drm_driver admin_only_driver = {
  	.driver_features =
- 	    DRIVER_GEM | DRIVER_RENDER | DRIVER_GEM_GPUVA,
 -	    XE_DISPLAY_DRIVER_FEATURES |
+ 	    DRIVER_GEM | DRIVER_RENDER,
  	.open = xe_file_open,
  	.postclose = xe_file_close,
  	.ioctls = xe_ioctls_admin_only,

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

^ permalink raw reply

* linux-next: manual merge of the rdma tree with the origin tree
From: Mark Brown @ 2026-07-20 14:43 UTC (permalink / raw)
  To: Jason Gunthorpe, Leon Romanovsky
  Cc: Jacob Moroni, Jason Gunthorpe, Leon Romanovsky,
	Linux Kernel Mailing List, Linux Next Mailing List

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

Hi all,

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

  drivers/infiniband/hw/irdma/verbs.c

between commit:

  b9b0889071569 ("RDMA/irdma: Prevent user-triggered null deref on QP create")

from the origin tree and commit:

  d83bf998f719d ("RDMA/irdma: Prevent user-triggered null deref on QP create")

from the rdma 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/infiniband/hw/irdma/verbs.c
index b7388b41ed958,16c80367270f5..0000000000000
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@@ -18,11 -18,10 +18,10 @@@ static int irdma_query_device(struct ib
  	struct irdma_hw_attrs *hw_attrs = &rf->sc_dev.hw_attrs;
  	int err;
  
- 	err = ib_is_udata_in_empty(udata);
+ 	err = ib_no_udata_io(udata);
  	if (err)
  		return err;
  
- 	memset(props, 0, sizeof(*props));
  	addrconf_addr_eui48((u8 *)&props->sys_image_guid,
  			    iwdev->netdev->dev_addr);
  	props->fw_ver = (u64)irdma_fw_major_ver(&rf->sc_dev) << 32 |
@@@ -76,7 -75,7 +75,7 @@@
  	if (hw_attrs->uk_attrs.hw_rev >= IRDMA_GEN_3)
  		props->device_cap_flags |= IB_DEVICE_MEM_WINDOW_TYPE_2B;
  
- 	return ib_respond_empty_udata(udata);
+ 	return 0;
  }
  
  /**
@@@ -407,6 -406,10 +406,10 @@@ static int irdma_alloc_pd(struct ib_pd 
  	u32 pd_id = 0;
  	int err;
  
+ 	err = ib_is_udata_in_empty(udata);
+ 	if (err)
+ 		return err;
+ 
  	if (udata && udata->outlen < IRDMA_ALLOC_PD_MIN_RESP_LEN)
  		return -EINVAL;
  
@@@ -445,6 -448,11 +448,11 @@@ static int irdma_dealloc_pd(struct ib_p
  {
  	struct irdma_pd *iwpd = to_iwpd(ibpd);
  	struct irdma_device *iwdev = to_iwdev(ibpd->device);
+ 	int ret;
+ 
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ret;
  
  	irdma_free_rsrc(iwdev->rf, iwdev->rf->allocated_pds, iwpd->sc_pd.pd_id);
  
@@@ -464,6 -472,9 +472,9 @@@ static struct irdma_pbl *irdma_get_pbl(
  
  	list_for_each_entry (iwpbl, pbl_list, list) {
  		if (iwpbl->user_base == va) {
+ 			struct irdma_mr *iwmr = iwpbl->iwmr;
+ 
+ 			refcount_inc(&iwmr->user_ring_refs);
  			list_del(&iwpbl->list);
  			iwpbl->on_list = false;
  			return iwpbl;
@@@ -534,11 -545,10 +545,10 @@@ static int irdma_setup_push_mmap_entrie
  }
  
  /**
-  * irdma_destroy_qp - destroy qp
+  * _irdma_destroy_qp - destroy qp
   * @ibqp: qp's ib pointer also to get to device's qp address
-  * @udata: user data
   */
- static int irdma_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
+ static void _irdma_destroy_qp(struct ib_qp *ibqp)
  {
  	struct irdma_qp *iwqp = to_iwqp(ibqp);
  	struct irdma_device *iwdev = iwqp->iwdev;
@@@ -570,6 -580,22 +580,22 @@@
  	if (iwqp->sc_qp.qp_uk.qp_id == 1)
  		iwdev->rf->hwqp1_rsvd = false;
  	irdma_free_qp_rsrc(iwqp);
+ }
+ 
+ /**
+  * irdma_destroy_qp - destroy qp
+  * @ibqp: qp's ib pointer also to get to device's qp address
+  * @udata: user data
+  */
+ static int irdma_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
+ {
+ 	int ret;
+ 
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ret;
+ 
+ 	_irdma_destroy_qp(ibqp);
  
  	return 0;
  }
@@@ -605,37 -631,29 +631,29 @@@ static void irdma_setup_virt_qp(struct 
  
  /**
   * irdma_setup_umode_qp - setup sq and rq size in user mode qp
-  * @udata: udata
+  * @ucontext: user context
+  * @req: user request pointer
   * @iwdev: iwarp device
   * @iwqp: qp ptr (user or kernel)
   * @info: initialize info to return
   * @init_attr: Initial QP create attributes
   */
- static int irdma_setup_umode_qp(struct ib_udata *udata,
+ static int irdma_setup_umode_qp(struct irdma_ucontext *ucontext,
+ 				struct irdma_create_qp_req *req,
  				struct irdma_device *iwdev,
  				struct irdma_qp *iwqp,
  				struct irdma_qp_init_info *info,
  				struct ib_qp_init_attr *init_attr)
  {
- 	struct irdma_ucontext *ucontext = rdma_udata_to_drv_context(udata,
- 				struct irdma_ucontext, ibucontext);
  	struct irdma_qp_uk_init_info *ukinfo = &info->qp_uk_init_info;
- 	struct irdma_create_qp_req req;
  	unsigned long flags;
  	int ret;
  
- 	ret = ib_copy_from_udata(&req, udata,
- 				 min(sizeof(req), udata->inlen));
- 	if (ret) {
- 		ibdev_dbg(&iwdev->ibdev, "VERBS: ib_copy_from_data fail\n");
- 		return ret;
- 	}
- 
- 	iwqp->ctx_info.qp_compl_ctx = req.user_compl_ctx;
+ 	iwqp->ctx_info.qp_compl_ctx = req->user_compl_ctx;
  	iwqp->user_mode = 1;
  
  	spin_lock_irqsave(&ucontext->qp_reg_mem_list_lock, flags);
- 	iwqp->iwpbl = irdma_get_pbl((unsigned long)req.user_wqe_bufs,
+ 	iwqp->iwpbl = irdma_get_pbl((unsigned long)req->user_wqe_bufs,
  				    &ucontext->qp_reg_mem_list);
  	spin_unlock_irqrestore(&ucontext->qp_reg_mem_list_lock, flags);
  
@@@ -962,6 -980,7 +980,7 @@@ static int irdma_create_qp(struct ib_q
  	struct irdma_uk_attrs *uk_attrs = &dev->hw_attrs.uk_attrs;
  	struct irdma_qp_init_info init_info = {};
  	struct irdma_qp_host_ctx_info *ctx_info;
+ 	struct irdma_create_qp_req ureq = {};
  	struct irdma_srq *iwsrq;
  	bool srq_valid = false;
  	u32 srq_id = 0;
@@@ -979,9 -998,14 +998,14 @@@
  	if (err_code)
  		return err_code;
  
- 	if (udata && (udata->inlen < IRDMA_CREATE_QP_MIN_REQ_LEN ||
- 		      udata->outlen < IRDMA_CREATE_QP_MIN_RESP_LEN))
- 		return -EINVAL;
+ 	if (udata) {
+ 		if (udata->outlen < IRDMA_CREATE_QP_MIN_RESP_LEN)
+ 			return -EINVAL;
+ 
+ 		err_code = ib_copy_validate_udata_in(udata, ureq, user_compl_ctx);
+ 		if (err_code)
+ 			return err_code;
+ 	}
  
  	init_info.vsi = &iwdev->vsi;
  	init_info.qp_uk_init_info.uk_attrs = uk_attrs;
@@@ -1040,9 -1064,14 +1064,14 @@@
  	init_waitqueue_head(&iwqp->mod_qp_waitq);
  
  	if (udata) {
+ 		struct irdma_ucontext *ucontext =
+ 			rdma_udata_to_drv_context(udata,
+ 						  struct irdma_ucontext,
+ 						  ibucontext);
+ 
  		init_info.qp_uk_init_info.abi_ver = iwpd->sc_pd.abi_ver;
- 		err_code = irdma_setup_umode_qp(udata, iwdev, iwqp, &init_info,
- 						init_attr);
+ 		err_code = irdma_setup_umode_qp(ucontext, &ureq, iwdev, iwqp,
+ 						&init_info, init_attr);
  	} else {
  		INIT_DELAYED_WORK(&iwqp->dwork_flush, irdma_flush_worker);
  		init_info.qp_uk_init_info.abi_ver = IRDMA_ABI_VER;
@@@ -1109,8 -1138,12 +1138,12 @@@
  	init_completion(&iwqp->free_qp);
  
  	if (udata) {
- 		/* GEN_1 legacy support with libi40iw does not have expanded uresp struct */
- 		if (udata->outlen < sizeof(uresp)) {
+ 		/* GEN_1 legacy support with libi40iw does not have expanded
+ 		 * uresp struct. Check for the exact legacy size (20 bytes) to
+ 		 * ensure that newer expanded uresp structs don't accidentally
+ 		 * trigger the legacy fallback.
+ 		 */
+ 		if (udata->outlen == IRDMA_CREATE_QP_MIN_RESP_LEN) {
  			uresp.lsmm = 1;
  			uresp.push_idx = IRDMA_INVALID_PUSH_PAGE_INDEX_GEN_1;
  		} else {
@@@ -1124,7 -1157,7 +1157,7 @@@
  
  		err_code = ib_respond_udata(udata, uresp);
  		if (err_code) {
- 			irdma_destroy_qp(&iwqp->ibqp, udata);
+ 			_irdma_destroy_qp(&iwqp->ibqp);
  			return err_code;
  		}
  	}
@@@ -1273,7 -1306,6 +1306,6 @@@ static int irdma_wait_for_suspend(struc
  int irdma_modify_qp_roce(struct ib_qp *ibqp, struct ib_qp_attr *attr,
  			 int attr_mask, struct ib_udata *udata)
  {
- #define IRDMA_MODIFY_QP_MIN_REQ_LEN offsetofend(struct irdma_modify_qp_req, rq_flush)
  #define IRDMA_MODIFY_QP_MIN_RESP_LEN offsetofend(struct irdma_modify_qp_resp, push_valid)
  	struct irdma_pd *iwpd = to_iwpd(ibqp->pd);
  	struct irdma_qp *iwqp = to_iwqp(ibqp);
@@@ -1289,15 -1321,26 +1321,26 @@@
  	u8 issue_modify_qp = 0;
  	int ret = 0;
  
+ 	/* Clear the response buffer (if any). It may be updated again later. */
+ 	ret = ib_respond_empty_udata(udata);
+ 	if (ret)
+ 		return ret;
+ 
  	ctx_info = &iwqp->ctx_info;
  	roce_info = &iwqp->roce_info;
  	udp_info = &iwqp->udp_info;
  
  	if (udata) {
  		/* udata inlen/outlen can be 0 when supporting legacy libi40iw */
- 		if ((udata->inlen && udata->inlen < IRDMA_MODIFY_QP_MIN_REQ_LEN) ||
- 		    (udata->outlen && udata->outlen < IRDMA_MODIFY_QP_MIN_RESP_LEN))
+ 		if (udata->outlen && udata->outlen < IRDMA_MODIFY_QP_MIN_RESP_LEN)
  			return -EINVAL;
+ 
+ 		/* For current irdma, validate against ABI def. */
+ 		if (udata->inlen) {
+ 			ret = ib_copy_validate_udata_in(udata, ureq, rsvd);
+ 			if (ret)
+ 				return ret;
+ 		}
  	}
  
  	if (attr_mask & ~IB_QP_ATTR_STANDARD_BITS)
@@@ -1540,10 -1583,6 +1583,6 @@@
  				iwqp->ibqp_state = attr->qp_state;
  				spin_unlock_irqrestore(&iwqp->lock, flags);
  				if (udata && udata->inlen) {
- 					if (ib_copy_from_udata(&ureq, udata,
- 					    min(sizeof(ureq), udata->inlen)))
- 						return -EINVAL;
- 
  					irdma_flush_wqes(iwqp,
  					    (ureq.sq_flush ? IRDMA_FLUSH_SQ : 0) |
  					    (ureq.rq_flush ? IRDMA_FLUSH_RQ : 0) |
@@@ -1633,7 -1672,6 +1672,6 @@@ exit
  int irdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
  		    struct ib_udata *udata)
  {
- #define IRDMA_MODIFY_QP_MIN_REQ_LEN offsetofend(struct irdma_modify_qp_req, rq_flush)
  #define IRDMA_MODIFY_QP_MIN_RESP_LEN offsetofend(struct irdma_modify_qp_resp, push_valid)
  	struct irdma_qp *iwqp = to_iwqp(ibqp);
  	struct irdma_device *iwdev = iwqp->iwdev;
@@@ -1649,11 -1687,20 +1687,20 @@@
  	int err;
  	unsigned long flags;
  
+ 	err = ib_respond_empty_udata(udata);
+ 	if (err)
+ 		return err;
+ 
  	if (udata) {
  		/* udata inlen/outlen can be 0 when supporting legacy libi40iw */
- 		if ((udata->inlen && udata->inlen < IRDMA_MODIFY_QP_MIN_REQ_LEN) ||
- 		    (udata->outlen && udata->outlen < IRDMA_MODIFY_QP_MIN_RESP_LEN))
+ 		if (udata->outlen && udata->outlen < IRDMA_MODIFY_QP_MIN_RESP_LEN)
  			return -EINVAL;
+ 
+ 		if (udata->inlen) {
+ 			err = ib_copy_validate_udata_in(udata, ureq, rsvd);
+ 			if (err)
+ 				return err;
+ 		}
  	}
  
  	if (attr_mask & ~IB_QP_ATTR_STANDARD_BITS)
@@@ -1743,10 -1790,6 +1790,6 @@@
  				iwqp->ibqp_state = attr->qp_state;
  				spin_unlock_irqrestore(&iwqp->lock, flags);
  				if (udata && udata->inlen) {
- 					if (ib_copy_from_udata(&ureq, udata,
- 					    min(sizeof(ureq), udata->inlen)))
- 						return -EINVAL;
- 
  					irdma_flush_wqes(iwqp,
  					    (ureq.sq_flush ? IRDMA_FLUSH_SQ : 0) |
  					    (ureq.rq_flush ? IRDMA_FLUSH_RQ : 0) |
@@@ -1880,6 -1923,11 +1923,11 @@@ static void irdma_srq_free_rsrc(struct 
  		dma_free_coherent(rf->sc_dev.hw->device, iwsrq->kmem.size,
  				  iwsrq->kmem.va, iwsrq->kmem.pa);
  		iwsrq->kmem.va = NULL;
+ 	} else {
+ 		/* Not called in any failure path, so iwpbl is valid. */
+ 		struct irdma_mr *iwmr = iwsrq->iwpbl->iwmr;
+ 
+ 		refcount_dec(&iwmr->user_ring_refs);
  	}
  
  	irdma_free_rsrc(rf, rf->allocated_srqs, srq->srq_uk.srq_id);
@@@ -1902,6 -1950,21 +1950,21 @@@ static void irdma_cq_free_rsrc(struct i
  				  iwcq->kmem_shadow.size,
  				  iwcq->kmem_shadow.va, iwcq->kmem_shadow.pa);
  		iwcq->kmem_shadow.va = NULL;
+ 	} else {
+ 		struct irdma_mr *iwmr;
+ 
+ 		/* May be called in a failure path before iwpbl is valid. */
+ 		if (iwcq->iwpbl) {
+ 			iwmr = iwcq->iwpbl->iwmr;
+ 
+ 			refcount_dec(&iwmr->user_ring_refs);
+ 		}
+ 
+ 		if (iwcq->iwpbl_shadow) {
+ 			iwmr = iwcq->iwpbl_shadow->iwmr;
+ 
+ 			refcount_dec(&iwmr->user_ring_refs);
+ 		}
  	}
  
  	irdma_free_rsrc(rf, rf->allocated_cqs, cq->cq_uk.cq_id);
@@@ -1958,6 -2021,11 +2021,11 @@@ static int irdma_destroy_srq(struct ib_
  	struct irdma_device *iwdev = to_iwdev(ibsrq->device);
  	struct irdma_srq *iwsrq = to_iwsrq(ibsrq);
  	struct irdma_sc_srq *srq = &iwsrq->sc_srq;
+ 	int ret;
+ 
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ret;
  
  	irdma_srq_wq_destroy(iwdev->rf, srq);
  	irdma_srq_free_rsrc(iwdev->rf, iwsrq);
@@@ -1978,6 -2046,11 +2046,11 @@@ static int irdma_destroy_cq(struct ib_c
  	struct irdma_sc_ceq *ceq = dev->ceq[cq->ceq_id];
  	struct irdma_ceq *iwceq = container_of(ceq, struct irdma_ceq, sc_ceq);
  	unsigned long flags;
+ 	int ret;
+ 
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ret;
  
  	spin_lock_irqsave(&iwcq->lock, flags);
  	if (!list_empty(&iwcq->cmpl_generated))
@@@ -2008,7 -2081,6 +2081,6 @@@
  static int irdma_resize_cq(struct ib_cq *ibcq, unsigned int entries,
  			   struct ib_udata *udata)
  {
- #define IRDMA_RESIZE_CQ_MIN_REQ_LEN offsetofend(struct irdma_resize_cq_req, user_cq_buffer)
  	struct irdma_cq *iwcq = to_iwcq(ibcq);
  	struct irdma_sc_dev *dev = iwcq->sc_cq.dev;
  	struct irdma_cqp_request *cqp_request;
@@@ -2017,7 -2089,7 +2089,7 @@@
  	struct irdma_modify_cq_info info = {};
  	struct irdma_dma_mem kmem_buf;
  	struct irdma_cq_mr *cqmr_buf;
- 	struct irdma_pbl *iwpbl_buf;
+ 	struct irdma_pbl *iwpbl_buf = NULL;
  	struct irdma_device *iwdev;
  	struct irdma_pci_f *rf;
  	struct irdma_cq_buf *cq_buf = NULL;
@@@ -2032,12 -2104,13 +2104,13 @@@
  	    IRDMA_FEATURE_CQ_RESIZE))
  		return -EOPNOTSUPP;
  
- 	if (udata && udata->inlen < IRDMA_RESIZE_CQ_MIN_REQ_LEN)
- 		return -EINVAL;
- 
  	if (entries > rf->max_cqe)
  		return -EINVAL;
  
+ 	ret = ib_respond_empty_udata(udata);
+ 	if (ret)
+ 		return ret;
+ 
  	if (!iwcq->user_mode) {
  		entries += 2;
  
@@@ -2064,9 -2137,9 +2137,9 @@@
  			rdma_udata_to_drv_context(udata, struct irdma_ucontext,
  						  ibucontext);
  
- 		if (ib_copy_from_udata(&req, udata,
- 				       min(sizeof(req), udata->inlen)))
- 			return -EINVAL;
+ 		ret = ib_copy_validate_udata_in(udata, req, user_cq_buffer);
+ 		if (ret)
+ 			return ret;
  
  		spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
  		iwpbl_buf = irdma_get_pbl((unsigned long)req.user_cq_buffer,
@@@ -2128,6 -2201,19 +2201,19 @@@
  		goto error;
  
  	spin_lock_irqsave(&iwcq->lock, flags);
+ 	if (udata) {
+ 		struct irdma_pbl *old_iwpbl = iwcq->iwpbl;
+ 
+ 		/* Only update if the resize was successful. Otherwise, HW is
+ 		 * still pointing to the old PBL.
+ 		 */
+ 		iwcq->iwpbl = iwpbl_buf;
+ 		if (old_iwpbl) {
+ 			struct irdma_mr *old_iwmr = old_iwpbl->iwmr;
+ 
+ 			refcount_dec(&old_iwmr->user_ring_refs);
+ 		}
+ 	}
  	if (cq_buf) {
  		cq_buf->kmem_buf = iwcq->kmem;
  		cq_buf->hw = dev->hw;
@@@ -2143,6 -2229,11 +2229,11 @@@
  
  	return 0;
  error:
+ 	if (iwpbl_buf) {
+ 		struct irdma_mr *iwmr = iwpbl_buf->iwmr;
+ 
+ 		refcount_dec(&iwmr->user_ring_refs);
+ 	}
  	if (!udata) {
  		dma_free_coherent(dev->hw->device, kmem_buf.size, kmem_buf.va,
  				  kmem_buf.pa);
@@@ -2194,6 -2285,10 +2285,10 @@@ static int irdma_modify_srq(struct ib_s
  	struct cqp_cmds_info *cqp_info;
  	int status;
  
+ 	status = ib_no_udata_io(udata);
+ 	if (status)
+ 		return status;
+ 
  	if (attr_mask & IB_SRQ_MAX_WR)
  		return -EINVAL;
  
@@@ -2236,24 -2331,20 +2331,20 @@@ static int irdma_setup_umode_srq(struc
  				 struct irdma_srq_init_info *info,
  				 struct ib_udata *udata)
  {
- #define IRDMA_CREATE_SRQ_MIN_REQ_LEN \
- 	offsetofend(struct irdma_create_srq_req, user_shadow_area)
  	struct irdma_create_srq_req req = {};
  	struct irdma_ucontext *ucontext;
  	struct irdma_srq_mr *srqmr;
  	struct irdma_pbl *iwpbl;
  	unsigned long flags;
+ 	int ret;
  
  	iwsrq->user_mode = true;
  	ucontext = rdma_udata_to_drv_context(udata, struct irdma_ucontext,
  					     ibucontext);
  
- 	if (udata->inlen < IRDMA_CREATE_SRQ_MIN_REQ_LEN)
- 		return -EINVAL;
- 
- 	if (ib_copy_from_udata(&req, udata,
- 			       min(sizeof(req), udata->inlen)))
- 		return -EFAULT;
+ 	ret = ib_copy_validate_udata_in(udata, req, user_shadow_area);
+ 	if (ret)
+ 		return ret;
  
  	spin_lock_irqsave(&ucontext->srq_reg_mem_list_lock, flags);
  	iwpbl = irdma_get_pbl((unsigned long)req.user_srq_buf,
@@@ -2316,6 -2407,7 +2407,7 @@@ static int irdma_create_srq(struct ib_s
  			    struct ib_srq_init_attr *initattrs,
  			    struct ib_udata *udata)
  {
+ #define IRDMA_CREATE_SRQ_MIN_RESP_LEN offsetofend(struct irdma_create_srq_resp, srq_size)
  	struct irdma_device *iwdev = to_iwdev(ibsrq->device);
  	struct ib_srq_attr *attr = &initattrs->attr;
  	struct irdma_pd *iwpd = to_iwpd(ibsrq->pd);
@@@ -2336,6 -2428,9 +2428,9 @@@
  	if (initattrs->srq_type != IB_SRQT_BASIC)
  		return -EOPNOTSUPP;
  
+ 	if (udata && udata->outlen < IRDMA_CREATE_SRQ_MIN_RESP_LEN)
+ 		return -EINVAL;
+ 
  	if (!(uk_attrs->feature_flags & IRDMA_FEATURE_SRQ) ||
  	    attr->max_sge > uk_attrs->max_hw_wq_frags)
  		return -EINVAL;
@@@ -2419,6 -2514,11 +2514,11 @@@ free_dmem
  		dma_free_coherent(rf->hw.device, iwsrq->kmem.size,
  				  iwsrq->kmem.va, iwsrq->kmem.pa);
  free_rsrc:
+ 	if (iwsrq->user_mode && iwsrq->iwpbl) {
+ 		struct irdma_mr *iwmr = iwsrq->iwpbl->iwmr;
+ 
+ 		refcount_dec(&iwmr->user_ring_refs);
+ 	}
  	irdma_free_rsrc(rf, rf->allocated_srqs, iwsrq->srq_num);
  	return err_code;
  }
@@@ -2458,7 -2558,6 +2558,6 @@@ static int irdma_create_cq(struct ib_c
  			   const struct ib_cq_init_attr *attr,
  			   struct uverbs_attr_bundle *attrs)
  {
- #define IRDMA_CREATE_CQ_MIN_REQ_LEN offsetofend(struct irdma_create_cq_req, user_cq_buf)
  #define IRDMA_CREATE_CQ_MIN_RESP_LEN offsetofend(struct irdma_create_cq_resp, cq_size)
  	struct ib_udata *udata = &attrs->driver_udata;
  	struct ib_device *ibdev = ibcq->device;
@@@ -2482,8 -2581,7 +2581,7 @@@
  	if (err_code)
  		return err_code;
  
- 	if (udata && (udata->inlen < IRDMA_CREATE_CQ_MIN_REQ_LEN ||
- 		      udata->outlen < IRDMA_CREATE_CQ_MIN_RESP_LEN))
+ 	if (udata && udata->outlen < IRDMA_CREATE_CQ_MIN_RESP_LEN)
  		return -EINVAL;
  
  	err_code = irdma_alloc_rsrc(rf, rf->allocated_cqs, rf->max_cq, &cq_num,
@@@ -2498,6 -2596,8 +2596,8 @@@
  	INIT_LIST_HEAD(&iwcq->resize_list);
  	INIT_LIST_HEAD(&iwcq->cmpl_generated);
  	iwcq->cq_num = cq_num;
+ 	iwcq->iwpbl = NULL;
+ 	iwcq->iwpbl_shadow = NULL;
  	info.dev = dev;
  	ukinfo->cq_size = max(entries, 4);
  	ukinfo->cq_id = cq_num;
@@@ -2517,49 -2617,50 +2617,50 @@@
  		struct irdma_ucontext *ucontext;
  		struct irdma_create_cq_req req = {};
  		struct irdma_cq_mr *cqmr;
- 		struct irdma_pbl *iwpbl;
- 		struct irdma_pbl *iwpbl_shadow;
  		struct irdma_cq_mr *cqmr_shadow;
  
  		iwcq->user_mode = true;
  		ucontext =
  			rdma_udata_to_drv_context(udata, struct irdma_ucontext,
  						  ibucontext);
- 		if (ib_copy_from_udata(&req, udata,
- 				       min(sizeof(req), udata->inlen))) {
- 			err_code = -EFAULT;
+ 		/* Even though the last member of struct irdma_create_cq_req
+ 		 * was always user_shadow_area, we need backwards compat with
+ 		 * the legacy i40iw struct i40iw_ucreate_cq which stopped
+ 		 * at user_cq_buffer.
+ 		 */
+ 		err_code = ib_copy_validate_udata_in(udata, req, user_cq_buf);
+ 		if (err_code)
  			goto cq_free_rsrc;
- 		}
  
  		spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
- 		iwpbl = irdma_get_pbl((unsigned long)req.user_cq_buf,
- 				      &ucontext->cq_reg_mem_list);
+ 		iwcq->iwpbl = irdma_get_pbl((unsigned long)req.user_cq_buf,
+ 					    &ucontext->cq_reg_mem_list);
  		spin_unlock_irqrestore(&ucontext->cq_reg_mem_list_lock, flags);
- 		if (!iwpbl) {
+ 		if (!iwcq->iwpbl) {
  			err_code = -EPROTO;
  			goto cq_free_rsrc;
  		}
  
- 		cqmr = &iwpbl->cq_mr;
+ 		cqmr = &iwcq->iwpbl->cq_mr;
  
  		if (rf->sc_dev.hw_attrs.uk_attrs.feature_flags &
  		    IRDMA_FEATURE_CQ_RESIZE) {
  			spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
- 			iwpbl_shadow = irdma_get_pbl(
+ 			iwcq->iwpbl_shadow = irdma_get_pbl(
  					(unsigned long)req.user_shadow_area,
  					&ucontext->cq_reg_mem_list);
  			spin_unlock_irqrestore(&ucontext->cq_reg_mem_list_lock, flags);
  
- 			if (!iwpbl_shadow) {
+ 			if (!iwcq->iwpbl_shadow) {
  				err_code = -EPROTO;
  				goto cq_free_rsrc;
  			}
- 			cqmr_shadow = &iwpbl_shadow->cq_mr;
+ 			cqmr_shadow = &iwcq->iwpbl_shadow->cq_mr;
  			info.shadow_area_pa = cqmr_shadow->cq_pbl.addr;
  		} else {
  			info.shadow_area_pa = cqmr->shadow;
  		}
- 		if (iwpbl->pbl_allocated) {
+ 		if (iwcq->iwpbl->pbl_allocated) {
  			info.virtual_map = true;
  			info.pbl_chunk_size = 1;
  			info.first_pm_pbl_idx = cqmr->cq_pbl.idx;
@@@ -2801,7 -2902,7 +2902,7 @@@ static bool irdma_check_mem_contiguous(
  	u32 pg_idx;
  
  	for (pg_idx = 0; pg_idx < npages; pg_idx++) {
 -		if ((*arr + (pg_size * pg_idx)) != arr[pg_idx])
 +		if ((*arr + ((u64)pg_size * pg_idx)) != arr[pg_idx])
  			return false;
  	}
  
@@@ -2834,7 -2935,7 +2935,7 @@@ static bool irdma_check_mr_contiguous(s
  
  	for (i = 0; i < lvl2->leaf_cnt; i++, leaf++) {
  		arr = leaf->addr;
 -		if ((*start_addr + (i * pg_size * PBLE_PER_PAGE)) != *arr)
 +		if ((*start_addr + ((u64)i * pg_size * PBLE_PER_PAGE)) != *arr)
  			return false;
  		ret = irdma_check_mem_contiguous(arr, leaf->cnt, pg_size);
  		if (!ret)
@@@ -3034,6 -3135,10 +3135,10 @@@ static int irdma_alloc_mw(struct ib_mw 
  	int err_code;
  	u32 stag;
  
+ 	err_code = ib_no_udata_io(udata);
+ 	if (err_code)
+ 		return err_code;
+ 
  	stag = irdma_create_stag(iwdev);
  	if (!stag)
  		return -ENOMEM;
@@@ -3362,6 -3467,7 +3467,7 @@@ static struct irdma_mr *irdma_alloc_iwm
  	if (!iwmr)
  		return ERR_PTR(-ENOMEM);
  
+ 	refcount_set(&iwmr->user_ring_refs, 1);
  	iwpbl = &iwmr->iwpbl;
  	iwpbl->iwmr = iwmr;
  	iwmr->region = region;
@@@ -3508,7 -3614,6 +3614,6 @@@ static struct ib_mr *irdma_reg_user_mr(
  				       struct ib_dmah *dmah,
  				       struct ib_udata *udata)
  {
- #define IRDMA_MEM_REG_MIN_REQ_LEN offsetofend(struct irdma_mem_reg_req, sq_pages)
  	struct irdma_device *iwdev = to_iwdev(pd->device);
  	struct irdma_mem_reg_req req = {};
  	struct ib_umem *region = NULL;
@@@ -3518,10 -3623,15 +3623,15 @@@
  	if (dmah)
  		return ERR_PTR(-EOPNOTSUPP);
  
- 	if (len > iwdev->rf->sc_dev.hw_attrs.max_mr_size)
- 		return ERR_PTR(-EINVAL);
+ 	err = ib_copy_validate_udata_in(udata, req, sq_pages);
+ 	if (err)
+ 		return ERR_PTR(err);
  
- 	if (udata->inlen < IRDMA_MEM_REG_MIN_REQ_LEN)
+ 	err = ib_respond_empty_udata(udata);
+ 	if (err)
+ 		return ERR_PTR(err);
+ 
+ 	if (len > iwdev->rf->sc_dev.hw_attrs.max_mr_size)
  		return ERR_PTR(-EINVAL);
  
  	region = ib_umem_get_va(pd->device, start, len, access);
@@@ -3532,11 -3642,6 +3642,6 @@@
  		return (struct ib_mr *)region;
  	}
  
- 	if (ib_copy_from_udata(&req, udata, min(sizeof(req), udata->inlen))) {
- 		ib_umem_release(region);
- 		return ERR_PTR(-EFAULT);
- 	}
- 
  	iwmr = irdma_alloc_iwmr(region, pd, virt, req.reg_type);
  	if (IS_ERR(iwmr)) {
  		ib_umem_release(region);
@@@ -3784,15 -3889,16 +3889,19 @@@ static struct ib_mr *irdma_rereg_user_m
  	struct ib_umem_dmabuf *umem_dmabuf;
  	int ret;
  
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ERR_PTR(ret);
+ 
  	if (len > iwdev->rf->sc_dev.hw_attrs.max_mr_size)
  		return ERR_PTR(-EINVAL);
  
  	if (flags & ~(IB_MR_REREG_TRANS | IB_MR_REREG_PD | IB_MR_REREG_ACCESS))
  		return ERR_PTR(-EOPNOTSUPP);
  
 +	if (iwmr->type != IRDMA_MEMREG_TYPE_MEM)
 +	     return ERR_PTR(-EINVAL);
 +
  	ret = ib_umem_check_rereg(iwmr->region, flags, new_access);
  	if (ret)
  		return ERR_PTR(ret);
@@@ -3929,41 -4035,41 +4038,41 @@@ static struct ib_mr *irdma_get_dma_mr(s
   * irdma_del_memlist - Deleting pbl list entries for CQ/QP
   * @iwmr: iwmr for IB's user page addresses
   * @ucontext: ptr to user context
+  *
+  * Return: True if the MR is currently in-use by a QP/CQ/SRQ ring.
   */
- static void irdma_del_memlist(struct irdma_mr *iwmr,
+ static bool irdma_del_memlist(struct irdma_mr *iwmr,
  			      struct irdma_ucontext *ucontext)
  {
  	struct irdma_pbl *iwpbl = &iwmr->iwpbl;
  	unsigned long flags;
+ 	spinlock_t *lock;
+ 	bool in_use = false;
  
  	switch (iwmr->type) {
  	case IRDMA_MEMREG_TYPE_CQ:
- 		spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
- 		if (iwpbl->on_list) {
- 			iwpbl->on_list = false;
- 			list_del(&iwpbl->list);
- 		}
- 		spin_unlock_irqrestore(&ucontext->cq_reg_mem_list_lock, flags);
+ 		lock = &ucontext->cq_reg_mem_list_lock;
  		break;
  	case IRDMA_MEMREG_TYPE_QP:
- 		spin_lock_irqsave(&ucontext->qp_reg_mem_list_lock, flags);
- 		if (iwpbl->on_list) {
- 			iwpbl->on_list = false;
- 			list_del(&iwpbl->list);
- 		}
- 		spin_unlock_irqrestore(&ucontext->qp_reg_mem_list_lock, flags);
+ 		lock = &ucontext->qp_reg_mem_list_lock;
  		break;
  	case IRDMA_MEMREG_TYPE_SRQ:
- 		spin_lock_irqsave(&ucontext->srq_reg_mem_list_lock, flags);
- 		if (iwpbl->on_list) {
- 			iwpbl->on_list = false;
- 			list_del(&iwpbl->list);
- 		}
- 		spin_unlock_irqrestore(&ucontext->srq_reg_mem_list_lock, flags);
+ 		lock = &ucontext->srq_reg_mem_list_lock;
  		break;
  	default:
- 		break;
+ 		return false;
  	}
+ 
+ 	spin_lock_irqsave(lock, flags);
+ 	if (!refcount_dec_if_one(&iwmr->user_ring_refs)) {
+ 		in_use = true;
+ 	} else if (iwpbl->on_list) {
+ 		iwpbl->on_list = false;
+ 		list_del(&iwpbl->list);
+ 	}
+ 	spin_unlock_irqrestore(lock, flags);
+ 
+ 	return in_use;
  }
  
  /**
@@@ -3979,6 -4085,10 +4088,10 @@@ static int irdma_dereg_mr(struct ib_mr 
  	bool dmabuf_revocable = iwmr->region && iwmr->region->is_dmabuf;
  	int ret;
  
+ 	ret = ib_no_udata_io(udata);
+ 	if (ret)
+ 		return ret;
+ 
  	if (iwmr->type != IRDMA_MEMREG_TYPE_MEM) {
  		if (iwmr->region) {
  			struct irdma_ucontext *ucontext;
@@@ -3986,7 -4096,12 +4099,12 @@@
  			ucontext = rdma_udata_to_drv_context(udata,
  						struct irdma_ucontext,
  						ibucontext);
- 			irdma_del_memlist(iwmr, ucontext);
+ 
+ 			/* Do not allow the MR to be unpinned if it is still
+ 			 * backing a user ring.
+ 			 */
+ 			if (irdma_del_memlist(iwmr, ucontext))
+ 				return -EBUSY;
  		}
  		goto done;
  	}
@@@ -5295,6 -5410,10 +5413,10 @@@ static int irdma_create_user_ah(struct 
  	struct irdma_ah *parent_ah;
  	int err;
  
+ 	err = ib_is_udata_in_empty(udata);
+ 	if (err)
+ 		return err;
+ 
  	if (udata->outlen < IRDMA_CREATE_AH_MIN_RESP_LEN)
  		return -EINVAL;
  
@@@ -5346,6 -5465,10 +5468,10 @@@ static int irdma_create_ah(struct ib_a
  	struct irdma_device *iwdev = to_iwdev(ibah->pd->device);
  	int err;
  
+ 	err = ib_no_udata_io(udata);
+ 	if (err)
+ 		return err;
+ 
  	err = irdma_setup_ah(ibah, attr);
  	if (err)
  		return err;
@@@ -5428,6 -5551,7 +5554,7 @@@ static const struct ib_device_ops irdma
  	.owner = THIS_MODULE,
  	.driver_id = RDMA_DRIVER_IRDMA,
  	.uverbs_abi_ver = IRDMA_ABI_VER,
+ 	.uverbs_robust_udata = true,
  
  	.alloc_hw_port_stats = irdma_alloc_hw_port_stats,
  	.alloc_mr = irdma_alloc_mr,

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

^ permalink raw reply

* Re: linux-next: manual merge of the mm-unstable tree with the drm-misc-fixes tree
From: Christoph Hellwig @ 2026-07-20 14:41 UTC (permalink / raw)
  To: Mark Brown
  Cc: Andrew Morton, Christoph Hellwig, Linux Kernel Mailing List,
	Linux Next Mailing List, Matthew Brost, Hugh Dickins, Baolin Wang,
	linux-mm
In-Reply-To: <al4jGBGNG_QACaNL@sirena.org.uk>

On Mon, Jul 20, 2026 at 02:31:04PM +0100, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the mm-unstable tree got a conflict in:
> 
>   drivers/gpu/drm/ttm/ttm_backup.c
> 
> between commit:
> 
>   a3fdf74ffa596 ("drm/ttm/pool: back up at native page order")
> 
> from the drm-misc-fixes tree and commit:
> 
>   c6bfdcf16f131 ("shmem: provide a shmem_write_folio wrapper")
> 
> from the mm-unstable 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.

Much of the code here really should sit in shmem.c instead of having
random drivers/subsystems poke into the internals of shmem mappings
and folios.  But I feel like a broken record for saying that again
and again without any action :(

> 
> diff --combined drivers/gpu/drm/ttm/ttm_backup.c
> index 3c067aadc52de,c5b813a563e7f..0000000000000
> --- a/drivers/gpu/drm/ttm/ttm_backup.c
> +++ b/drivers/gpu/drm/ttm/ttm_backup.c
> @@@ -6,10 -6,9 +6,10 @@@
>   #include <drm/ttm/ttm_backup.h>
>   
>   #include <linux/export.h>
>  -#include <linux/page-flags.h>
>   #include <linux/swap.h>
>   
>  +#include "ttm_pool_internal.h"
>  +
>   /*
>    * Need to map shmem indices to handle since a handle value
>    * of 0 means error, following the swp_entry_t convention.
> @@@ -69,23 -68,17 +69,23 @@@ int ttm_backup_copy_page(struct file *b
>   }
>   
>   /**
>  - * ttm_backup_backup_page() - Backup a page
>  + * ttm_backup_backup_folio() - Backup a folio
>    * @backup: The struct backup pointer to use.
>  - * @page: The page to back up.
>  - * @writeback: Whether to perform immediate writeback of the page.
>  + * @folio: The folio to back up.
>  + * @order: The allocation order of @folio.  Since TTM allocates higher-order
>  + *         pages without __GFP_COMP, folio_nr_pages(@folio) would always
>  + *         return 1; the caller must pass the true order explicitly.
>  + * @writeback: Whether to perform immediate writeback of the folio's pages.
>    * This may have performance implications.
>  - * @idx: A unique integer for each page and each struct backup.
>  + * @idx: A unique integer for the first page of the folio and each struct backup.
>    * This allows the backup implementation to avoid managing
>    * its address space separately.
>  - * @page_gfp: The gfp value used when the page was allocated.
>  - * This is used for accounting purposes.
>  + * @folio_gfp: The gfp value used when the folio was allocated.
>  + * Currently unused.
>    * @alloc_gfp: The gfp to be used when allocating memory.
>  + * @nr_pages_backed: Output. On a successful return, set to the number of
>  + * pages actually backed up, which may be less than (1 << @order)
>  + * if an -ENOMEM was encountered mid-folio.
>    *
>    * Context: If called from reclaim context, the caller needs to
>    * assert that the shrinker gfp has __GFP_FS set, to avoid
> @@@ -94,87 -87,53 +94,87 @@@
>    * that the shrinker gfp has __GFP_IO set, since without it,
>    * we're not allowed to start backup IO.
>    *
>  - * Return: A handle on success. Negative error code on failure.
>  - *
>  - * Note: This function could be extended to back up a folio and
>  - * implementations would then split the folio internally if needed.
>  - * Drawback is that the caller would then have to keep track of
>  - * the folio size- and usage.
>  + * Return: A handle for the first backed-up page on success (handles for
>  + * subsequent pages follow sequentially). -ENOMEM if no pages could be backed
>  + * up. Any other negative error code if a non-ENOMEM failure occurred; in that
>  + * case any pages backed up so far are truncated before returning.
>    */
>   s64
>  -ttm_backup_backup_page(struct file *backup, struct page *page,
>  -		       bool writeback, pgoff_t idx, gfp_t page_gfp,
>  -		       gfp_t alloc_gfp)
>  +ttm_backup_backup_folio(struct file *backup, struct folio *folio,
>  +			unsigned int order, bool writeback, pgoff_t idx,
>  +			gfp_t folio_gfp, gfp_t alloc_gfp,
>  +			pgoff_t *nr_pages_backed)
>   {
>   	struct address_space *mapping = backup->f_mapping;
>  -	unsigned long handle = 0;
>  +	int nr_pages = 1 << order;
>   	struct folio *to_folio;
>  -	int ret;
>  +	int ret, i;
>   
>  -	to_folio = shmem_read_folio_gfp(mapping, idx, alloc_gfp);
>  -	if (IS_ERR(to_folio))
>  -		return PTR_ERR(to_folio);
>  +	*nr_pages_backed = 0;
>   
>  -	folio_mark_accessed(to_folio);
>  -	folio_lock(to_folio);
>  -	folio_mark_dirty(to_folio);
>  -	copy_highpage(folio_file_page(to_folio, idx), page);
>  -	handle = ttm_backup_shmem_idx_to_handle(idx);
>  +	for (i = 0; i < nr_pages; ) {
>  +		int to_nr, j;
>   
>  -	if (writeback && !folio_mapped(to_folio) &&
>  -	    folio_clear_dirty_for_io(to_folio)) {
>  -		folio_set_reclaim(to_folio);
>  -		ret = shmem_write_folio(to_folio);
>  -		if (!folio_test_writeback(to_folio))
>  -			folio_clear_reclaim(to_folio);
>   		/*
>  -		 * If writeout succeeds, it unlocks the folio.	errors
>  -		 * are otherwise dropped, since writeout is only best
>  -		 * effort here.
>  +		 * Only inject past the first subpage so *nr_pages_backed is
>  +		 * always > 0 here, matching a genuine mid-compound -ENOMEM
>  +		 * and driving the caller's reactive split fallback instead
>  +		 * of an early, no-progress failure.
>   		 */
>  -		if (ret)
>  +		if (IS_ENABLED(CONFIG_FAULT_INJECTION) && i &&
>  +		    ttm_backup_fault_inject_folio())
>  +			to_folio = ERR_PTR(-ENOMEM);
>  +		else
>  +			to_folio = shmem_read_folio_gfp(mapping, idx + i, alloc_gfp);
>  +		if (IS_ERR(to_folio)) {
>  +			int err = PTR_ERR(to_folio);
>  +
>  +			if (err == -ENOMEM && *nr_pages_backed)
>  +				return ttm_backup_shmem_idx_to_handle(idx);
>  +
>  +			if (*nr_pages_backed) {
>  +				shmem_truncate_range(file_inode(backup),
>  +						     (loff_t)idx << PAGE_SHIFT,
>  +						     ((loff_t)(idx + i) << PAGE_SHIFT) - 1);
>  +				/*
>  +				 * The pages just truncated are no longer
>  +				 * backed up; don't let the caller mistake
>  +				 * them for valid handles.
>  +				 */
>  +				*nr_pages_backed = 0;
>  +			}
>  +			return err;
>  +		}
>  +
>  +		to_nr = min_t(int, nr_pages - i,
>  +			      folio_next_index(to_folio) - (idx + i));
>  +
>  +		folio_mark_accessed(to_folio);
>  +		folio_lock(to_folio);
>  +		folio_mark_dirty(to_folio);
>  +
>  +		for (j = 0; j < to_nr; j++)
>  +			copy_highpage(folio_file_page(to_folio, idx + i + j),
>  +				      folio_page(folio, i + j));
>  +
>  +		if (writeback && !folio_mapped(to_folio) &&
>  +		    folio_clear_dirty_for_io(to_folio)) {
>  +			folio_set_reclaim(to_folio);
> ++			ret = shmem_write_folio(to_folio);
>  +			if (!folio_test_writeback(to_folio))
>  +				folio_clear_reclaim(to_folio);
>  +			if (ret == AOP_WRITEPAGE_ACTIVATE)
>  +				folio_unlock(to_folio);
>  +		} else {
>   			folio_unlock(to_folio);
>  -	} else {
>  -		folio_unlock(to_folio);
>  +		}
>  +
>  +		folio_put(to_folio);
>  +		i += to_nr;
>  +		*nr_pages_backed = i;
>   	}
>   
>  -	folio_put(to_folio);
>  -
>  -	return handle;
>  +	return ttm_backup_shmem_idx_to_handle(idx);
>   }
>   
>   /**


---end quoted text---

^ permalink raw reply

* linux-next: manual merge of the mm-unstable tree with the drm-misc-fixes tree
From: Mark Brown @ 2026-07-20 13:31 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Christoph Hellwig, Linux Kernel Mailing List,
	Linux Next Mailing List, Matthew Brost

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

Hi all,

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

  drivers/gpu/drm/ttm/ttm_backup.c

between commit:

  a3fdf74ffa596 ("drm/ttm/pool: back up at native page order")

from the drm-misc-fixes tree and commit:

  c6bfdcf16f131 ("shmem: provide a shmem_write_folio wrapper")

from the mm-unstable 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/ttm/ttm_backup.c
index 3c067aadc52de,c5b813a563e7f..0000000000000
--- a/drivers/gpu/drm/ttm/ttm_backup.c
+++ b/drivers/gpu/drm/ttm/ttm_backup.c
@@@ -6,10 -6,9 +6,10 @@@
  #include <drm/ttm/ttm_backup.h>
  
  #include <linux/export.h>
 -#include <linux/page-flags.h>
  #include <linux/swap.h>
  
 +#include "ttm_pool_internal.h"
 +
  /*
   * Need to map shmem indices to handle since a handle value
   * of 0 means error, following the swp_entry_t convention.
@@@ -69,23 -68,17 +69,23 @@@ int ttm_backup_copy_page(struct file *b
  }
  
  /**
 - * ttm_backup_backup_page() - Backup a page
 + * ttm_backup_backup_folio() - Backup a folio
   * @backup: The struct backup pointer to use.
 - * @page: The page to back up.
 - * @writeback: Whether to perform immediate writeback of the page.
 + * @folio: The folio to back up.
 + * @order: The allocation order of @folio.  Since TTM allocates higher-order
 + *         pages without __GFP_COMP, folio_nr_pages(@folio) would always
 + *         return 1; the caller must pass the true order explicitly.
 + * @writeback: Whether to perform immediate writeback of the folio's pages.
   * This may have performance implications.
 - * @idx: A unique integer for each page and each struct backup.
 + * @idx: A unique integer for the first page of the folio and each struct backup.
   * This allows the backup implementation to avoid managing
   * its address space separately.
 - * @page_gfp: The gfp value used when the page was allocated.
 - * This is used for accounting purposes.
 + * @folio_gfp: The gfp value used when the folio was allocated.
 + * Currently unused.
   * @alloc_gfp: The gfp to be used when allocating memory.
 + * @nr_pages_backed: Output. On a successful return, set to the number of
 + * pages actually backed up, which may be less than (1 << @order)
 + * if an -ENOMEM was encountered mid-folio.
   *
   * Context: If called from reclaim context, the caller needs to
   * assert that the shrinker gfp has __GFP_FS set, to avoid
@@@ -94,87 -87,53 +94,87 @@@
   * that the shrinker gfp has __GFP_IO set, since without it,
   * we're not allowed to start backup IO.
   *
 - * Return: A handle on success. Negative error code on failure.
 - *
 - * Note: This function could be extended to back up a folio and
 - * implementations would then split the folio internally if needed.
 - * Drawback is that the caller would then have to keep track of
 - * the folio size- and usage.
 + * Return: A handle for the first backed-up page on success (handles for
 + * subsequent pages follow sequentially). -ENOMEM if no pages could be backed
 + * up. Any other negative error code if a non-ENOMEM failure occurred; in that
 + * case any pages backed up so far are truncated before returning.
   */
  s64
 -ttm_backup_backup_page(struct file *backup, struct page *page,
 -		       bool writeback, pgoff_t idx, gfp_t page_gfp,
 -		       gfp_t alloc_gfp)
 +ttm_backup_backup_folio(struct file *backup, struct folio *folio,
 +			unsigned int order, bool writeback, pgoff_t idx,
 +			gfp_t folio_gfp, gfp_t alloc_gfp,
 +			pgoff_t *nr_pages_backed)
  {
  	struct address_space *mapping = backup->f_mapping;
 -	unsigned long handle = 0;
 +	int nr_pages = 1 << order;
  	struct folio *to_folio;
 -	int ret;
 +	int ret, i;
  
 -	to_folio = shmem_read_folio_gfp(mapping, idx, alloc_gfp);
 -	if (IS_ERR(to_folio))
 -		return PTR_ERR(to_folio);
 +	*nr_pages_backed = 0;
  
 -	folio_mark_accessed(to_folio);
 -	folio_lock(to_folio);
 -	folio_mark_dirty(to_folio);
 -	copy_highpage(folio_file_page(to_folio, idx), page);
 -	handle = ttm_backup_shmem_idx_to_handle(idx);
 +	for (i = 0; i < nr_pages; ) {
 +		int to_nr, j;
  
 -	if (writeback && !folio_mapped(to_folio) &&
 -	    folio_clear_dirty_for_io(to_folio)) {
 -		folio_set_reclaim(to_folio);
 -		ret = shmem_write_folio(to_folio);
 -		if (!folio_test_writeback(to_folio))
 -			folio_clear_reclaim(to_folio);
  		/*
 -		 * If writeout succeeds, it unlocks the folio.	errors
 -		 * are otherwise dropped, since writeout is only best
 -		 * effort here.
 +		 * Only inject past the first subpage so *nr_pages_backed is
 +		 * always > 0 here, matching a genuine mid-compound -ENOMEM
 +		 * and driving the caller's reactive split fallback instead
 +		 * of an early, no-progress failure.
  		 */
 -		if (ret)
 +		if (IS_ENABLED(CONFIG_FAULT_INJECTION) && i &&
 +		    ttm_backup_fault_inject_folio())
 +			to_folio = ERR_PTR(-ENOMEM);
 +		else
 +			to_folio = shmem_read_folio_gfp(mapping, idx + i, alloc_gfp);
 +		if (IS_ERR(to_folio)) {
 +			int err = PTR_ERR(to_folio);
 +
 +			if (err == -ENOMEM && *nr_pages_backed)
 +				return ttm_backup_shmem_idx_to_handle(idx);
 +
 +			if (*nr_pages_backed) {
 +				shmem_truncate_range(file_inode(backup),
 +						     (loff_t)idx << PAGE_SHIFT,
 +						     ((loff_t)(idx + i) << PAGE_SHIFT) - 1);
 +				/*
 +				 * The pages just truncated are no longer
 +				 * backed up; don't let the caller mistake
 +				 * them for valid handles.
 +				 */
 +				*nr_pages_backed = 0;
 +			}
 +			return err;
 +		}
 +
 +		to_nr = min_t(int, nr_pages - i,
 +			      folio_next_index(to_folio) - (idx + i));
 +
 +		folio_mark_accessed(to_folio);
 +		folio_lock(to_folio);
 +		folio_mark_dirty(to_folio);
 +
 +		for (j = 0; j < to_nr; j++)
 +			copy_highpage(folio_file_page(to_folio, idx + i + j),
 +				      folio_page(folio, i + j));
 +
 +		if (writeback && !folio_mapped(to_folio) &&
 +		    folio_clear_dirty_for_io(to_folio)) {
 +			folio_set_reclaim(to_folio);
++			ret = shmem_write_folio(to_folio);
 +			if (!folio_test_writeback(to_folio))
 +				folio_clear_reclaim(to_folio);
 +			if (ret == AOP_WRITEPAGE_ACTIVATE)
 +				folio_unlock(to_folio);
 +		} else {
  			folio_unlock(to_folio);
 -	} else {
 -		folio_unlock(to_folio);
 +		}
 +
 +		folio_put(to_folio);
 +		i += to_nr;
 +		*nr_pages_backed = i;
  	}
  
 -	folio_put(to_folio);
 -
 -	return handle;
 +	return ttm_backup_shmem_idx_to_handle(idx);
  }
  
  /**

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

^ permalink raw reply

* Missing signoff in the rdma tree
From: Mark Brown @ 2026-07-20 13:20 UTC (permalink / raw)
  To: Jason Gunthorpe, Leon Romanovsky; +Cc: linux-kernel, linux-next

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

Commits

  dab886bc4fab4 ("RDMA/mana_ib: Adopt robust udata")
  9df9de4ea0c2c ("RDMA/irdma: Prevent user-triggered null deref on QP create")

are missing a Signed-off-by from their committers

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

^ permalink raw reply

* Missing signoff in the rdma tree
From: Mark Brown @ 2026-07-20 13:19 UTC (permalink / raw)
  To: Jason Gunthorpe, Leon Romanovsky; +Cc: linux-kernel, linux-next

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

Commits

  9499f8d6e3b8e ("RDMA/mana_ib: Adopt robust udata")
  d83bf998f719d ("RDMA/irdma: Prevent user-triggered null deref on QP create")

are missing a Signed-off-by from their committers

[-- 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-20 10:06 UTC (permalink / raw)
  To: Alexander Potapenko
  Cc: Boqun Feng, Gary Guo, Mark Brown, linux-next, linux-kernel,
	Miguel Ojeda, Linus Torvalds, peterz, will, longman, mingo,
	gregkh, Miguel Ojeda
In-Reply-To: <CANiq72=hLXip=gQS1tnLQxe6Kpwq03Bd8F1z_xLrdoCtvSAkfg@mail.gmail.com>

On 2026/07/04 21:06, Miguel Ojeda wrote:
> I understand it may be nice to use such resources, but the solution is
> to talk to both sides, as you do in that thread. From what I see, they
> even offered to add a mailing list for those patches:
> 
>   "Aleksandr says we can create a special mailing list to test draft
>   patches, so the series sent to that list is fuzzed for some time,
>   similarly to how upstream patch testing works now.
>   Do you think that would help you to debug these issues? "
> 
> So what happened with that? It seems there was a way forward there,
> no? (Cc'ing Alexander from that thread)

Alexander, was there any progress?


^ permalink raw reply

* Re: linux-next: test failure after merge of the kunit-next tree
From: David Gow @ 2026-07-20  9:01 UTC (permalink / raw)
  To: Mark Brown, Shuah Khan, Linus Walleij, Bartosz Golaszewski
  Cc: Linux Kernel Mailing List, Linux Next Mailing List
In-Reply-To: <alrCeerj_TmaqUuP@sirena.org.uk>

Le 18/07/2026 à 08:02, Mark Brown a écrit :
> Hi all,
> 
> After merging the kunit-next tree, today's linux-next build
> (arm64 kunit) failed like this:
> 
> [22:59:27] Configuring KUnit Kernel ...
> [22:59:27] Building KUnit Kernel ...
> Populating config with:
> $ make ARCH=arm64 O=/tmp/next/arm64_kunit olddefconfig CROSS_COMPILE=aarch64-linux-gnu-
> Building with:
> $ make all compile_commands.json scripts_gdb ARCH=arm64 O=/tmp/next/arm64_kunit --jobs=192 CROSS_COMPILE=aarch64-linux-gnu-
> [22:59:30] Starting KUnit Kernel (1/1)...
> Running tests with:
> $ qemu-system-aarch64 -nodefaults -m 1024 -kernel /tmp/next/arm64_kunit/arch/arm64/boot/Image.gz -append 'kunit.enable=1 console=ttyAMA0 kunit_shutdown=reboot' -no-reboot -nographic -accel kvm -accel hvf -accel tcg -serial stdio -machine virt -cpu max
> [23:00:36] ============================================================
> [23:00:36] ========== gpio-unbind-with-consumers (1 subtest) ==========
> [23:00:36] # gpio_unbind_with_consumers: ASSERTION FAILED at drivers/gpio/gpiolib-kunit.c:393
> [23:00:36] Expected ret == 0x0001, but
> [23:00:36]     ret == 0 (0x0)
> [23:00:36]     0x0001 == 1 (0x1)
> [23:00:36] [FAILED] gpio_unbind_with_consumers
> [23:00:36] # module: gpiolib_kunit
> [23:00:36] =========== [FAILED] gpio-unbind-with-consumers ============
> [23:00:36] # gpio-swnode-hog:     # failed to initialize (-17)
> [23:00:36] [FAILED] gpio-swnode-hog
> [23:00:36] ============================================================
> [23:00:36] Testing complete. Ran 9377 tests: passed: 9284, failed: 2, skipped: 91
> [23:00:36] Failures: gpio-unbind-with-consumers, gpio-swnode-hog
> [23:00:36] Test results stored in /tmp/next/arm64_kunit.json
> [23:00:36] Elapsed time: 69.716s total, 0.002s configuring, 3.680s building, 66.027s running
> 
> This is caused by commit
> 
>    a05cfd98c5eca (gpio: kunit: add test cases for software node hogs)
> 
> which was from the gpio-brgl tree, it has only just become visible since
> 
>    34b5c0132952c (kunit: configs: enable GPIO kunit test cases in all_tests.config)
> 
> was added causing the gpiolib tests to actually be run though neither of
> these commits was added today (the KUnit tree did not change for a
> while).  I'm not clear why this has started failing today, presumably
> some third commit from another tree has started triggering a regression
> since neither of these trees has changed.
> 
> I have left this for today.


I'm pretty sure the fix for this is a part of:
gpio: kunit: add test cases verifying swnode devlink support
(https://lore.kernel.org/all/20260720-swnode-fw-devlink-v5-1-ec250ae6af91@oss.qualcomm.com/#r)

-- David

^ permalink raw reply

* [next-20260717] ufshcd issues on Pixel 3
From: David Heidelberg @ 2026-07-19 18:14 UTC (permalink / raw)
  To: Linux Next Mailing List, linux-arm-msm

Hello!

With next-20260717 I'm receiving these errors on Pixel 3. Previous kernel was 
running there just fine (I think around next-20260703).

Dropping the log here, in case someone encounter similar issue.

David
---

[   38.963072] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: Device abort task at tag 13
[   38.974926] sd 0:0:0:0: [sda] tag#13 CDB: opcode=0x28 28 00 00 24 bd 2c 00 00 
4d 00
[   38.985435] host_regs: 00000000: 1587031f 00000000 00000210 00000000
[   38.996063] host_regs: 00000010: 01000000 00010217 00000c96 00000000
[   39.005551] host_regs: 00000020: 00000000 00071af5 00000000 00000000
[   39.014378] host_regs: 00000030: 0000010f 00000003 00000000 00000000
[   39.023278] host_regs: 00000040: 00000000 00000000 00000000 00000000
[   39.031466] host_regs: 00000050: fffdf000 0000000f 00002000 00000000
[   39.039694] host_regs: 00000060: 00000001 ffffffff 00000000 00000000
[   39.047888] host_regs: 00000070: fffde000 0000000f 00000000 00000000
[   39.056138] host_regs: 00000080: 00000001 00000000 00000000 00000000
[   39.064373] host_regs: 00000090: 00000002 15710000 00000000 00000226
[   39.072189] ufshcd-qcom 1d84000.ufshc: No record of pa_err
[   39.079057] ufshcd-qcom 1d84000.ufshc: No record of dl_err
[   39.085931] ufshcd-qcom 1d84000.ufshc: No record of nl_err
[   39.092703] ufshcd-qcom 1d84000.ufshc: No record of tl_err
[   39.099401] ufshcd-qcom 1d84000.ufshc: No record of dme_err
[   39.106211] ufshcd-qcom 1d84000.ufshc: No record of auto_hibern8_err
[   39.113744] ufshcd-qcom 1d84000.ufshc: No record of fatal_err
[   39.120609] ufshcd-qcom 1d84000.ufshc: No record of link_startup_fail
[   39.128163] ufshcd-qcom 1d84000.ufshc: No record of resume_fail
[   39.135147] ufshcd-qcom 1d84000.ufshc: No record of suspend_fail
[   39.142151] ufshcd-qcom 1d84000.ufshc: No record of wlun resume_fail
[   39.149458] ufshcd-qcom 1d84000.ufshc: No record of wlun suspend_fail
[   39.156881] ufshcd-qcom 1d84000.ufshc: dev_reset[0] = 0x0 at 3968894 us
[   39.164480] ufshcd-qcom 1d84000.ufshc: dev_reset: total cnt=1
[   39.171193] ufshcd-qcom 1d84000.ufshc: No record of host_reset
[   39.177992] ufshcd-qcom 1d84000.ufshc: task_abort[0] = 0xd at 38985404 us
[   39.185739] ufshcd-qcom 1d84000.ufshc: task_abort: total cnt=1
[   39.192526] ufshcd-qcom 1d84000.ufshc: HW_H8_ENTER_CNT=0
[   39.198768] ufshcd-qcom 1d84000.ufshc: HW_H8_EXIT_CNT=0
[   39.204937] ufshcd-qcom 1d84000.ufshc: SW_H8_ENTER_CNT=0
[   39.211186] ufshcd-qcom 1d84000.ufshc: SW_H8_EXIT_CNT=0
[   39.217338] ufshcd-qcom 1d84000.ufshc: SW_AFTER_HW_H8_ENTER_CNT=0
[   39.224371] HCI Vendor Specific Registers 00000000: 000000c8 00000000 
00000000 00000000
[   39.233311] HCI Vendor Specific Registers 00000010: 00000000 00000000 
00000001 1c00052c
[   39.242249] HCI Vendor Specific Registers 00000020: 3f0113ff 30010001 
00000000 00000000
[   39.251186] HCI Vendor Specific Registers 00000030: 00000000 00000000 
00000000 0000003c
[   39.260143] UFS_UFS_DBG_RD_REG_OCSC 00000000: 00000000 00000000 00000000 00000000
[   39.268558] UFS_UFS_DBG_RD_REG_OCSC 00000010: 00000000 00000000 00000000 00000000
[   39.276953] UFS_UFS_DBG_RD_REG_OCSC 00000020: 00000000 00000000 00000000 00000000
[   39.285343] UFS_UFS_DBG_RD_REG_OCSC 00000030: 00000000 00000000 00000000 00000000
[   39.293732] UFS_UFS_DBG_RD_REG_OCSC 00000040: 00000000 00000000 00000000 00000000
[   39.302111] UFS_UFS_DBG_RD_REG_OCSC 00000050: 00000000 00000000 00000000 00000000
[   39.310481] UFS_UFS_DBG_RD_REG_OCSC 00000060: 00000000 00000000 00000000 00000000
[   39.318849] UFS_UFS_DBG_RD_REG_OCSC 00000070: 00000000 00000000 00000000 00000000
[   39.327205] UFS_UFS_DBG_RD_REG_OCSC 00000080: 00000000 00000000 00000000 00000000
[   39.335562] UFS_UFS_DBG_RD_REG_OCSC 00000090: 00000000 00000000 00000000 00000000
[   39.343906] UFS_UFS_DBG_RD_REG_OCSC 000000a0: 00000000 00000000 00000000 00000000
[   39.352252] UFS_UFS_DBG_RD_EDTL_RAM 00000000: 00000000 00000000 00000000 00000000
[   39.360580] UFS_UFS_DBG_RD_EDTL_RAM 00000010: 00000000 00000000 00000000 00000000
[   39.368900] UFS_UFS_DBG_RD_EDTL_RAM 00000020: 00000000 00000000 00000000 00000000
[   39.377209] UFS_UFS_DBG_RD_EDTL_RAM 00000030: 00000000 00000000 00000000 00000000
[   39.385516] UFS_UFS_DBG_RD_EDTL_RAM 00000040: 00000000 00000000 00000000 00000000
[   39.393812] UFS_UFS_DBG_RD_EDTL_RAM 00000050: 00000000 00000000 00000000 00000000
[   39.402100] UFS_UFS_DBG_RD_EDTL_RAM 00000060: 00000000 00000000 00000000 00000000
[   39.410397] UFS_UFS_DBG_RD_EDTL_RAM 00000070: 00000000 00000000 00000000 00000000
[   39.418768] UFS_UFS_DBG_RD_DESC_RAM 00000000: 00000000 00000000 00000000 00000000
[   39.427046] UFS_UFS_DBG_RD_DESC_RAM 00000010: 00000000 00000000 00000000 00000000
[   39.435331] UFS_UFS_DBG_RD_DESC_RAM 00000020: 00000000 00000000 00000000 00000000
[   39.443609] UFS_UFS_DBG_RD_DESC_RAM 00000030: 00000000 00000000 00000000 00000000
[   39.451858] UFS_UFS_DBG_RD_DESC_RAM 00000040: 00000000 00000000 00000000 00000000
[   39.460096] UFS_UFS_DBG_RD_DESC_RAM 00000050: 00000000 00000000 00000000 00000000
[   39.468328] UFS_UFS_DBG_RD_DESC_RAM 00000060: 00000000 00000000 00000000 00000000
[   39.476551] UFS_UFS_DBG_RD_DESC_RAM 00000070: 00000000 00000000 00000000 00000000
[   39.484773] UFS_UFS_DBG_RD_DESC_RAM 00000080: 00000000 00000000 00000000 00000000
[   39.492974] UFS_UFS_DBG_RD_DESC_RAM 00000090: 00000000 00000000 00000000 00000000
[   39.501186] UFS_UFS_DBG_RD_DESC_RAM 000000a0: 00000000 00000000 00000000 00000000
[   39.509404] UFS_UFS_DBG_RD_DESC_RAM 000000b0: 00000000 00000000 00000000 00000000
[   39.517614] UFS_UFS_DBG_RD_DESC_RAM 000000c0: 00000000 00000000 00000000 00000000
[   39.525808] UFS_UFS_DBG_RD_DESC_RAM 000000d0: 00000000 00000000 00000000 00000000
[   39.534003] UFS_UFS_DBG_RD_DESC_RAM 000000e0: 00000000 00000000 00000000 00000000
[   39.542190] UFS_UFS_DBG_RD_DESC_RAM 000000f0: 00000000 00000000 00000000 00000000
[   39.550377] UFS_UFS_DBG_RD_DESC_RAM 00000100: 00000000 00000000 00000000 00000000
[   39.558548] UFS_UFS_DBG_RD_DESC_RAM 00000110: 00000000 00000000 00000000 00000000
[   39.566713] UFS_UFS_DBG_RD_DESC_RAM 00000120: 00000000 00000000 00000000 00000000
[   39.574881] UFS_UFS_DBG_RD_DESC_RAM 00000130: 00000000 00000000 00000000 00000000
[   39.583050] UFS_UFS_DBG_RD_DESC_RAM 00000140: 00000000 00000000 00000000 00000000
[   39.591213] UFS_UFS_DBG_RD_DESC_RAM 00000150: 00000000 00000000 00000000 00000000
[   39.599373] UFS_UFS_DBG_RD_DESC_RAM 00000160: 00000000 00000000 00000000 00000000
[   39.607533] UFS_UFS_DBG_RD_DESC_RAM 00000170: 00000000 00000000 00000000 00000000
[   39.615694] UFS_UFS_DBG_RD_DESC_RAM 00000180: 00000000 00000000 00000000 00000000
[   39.623843] UFS_UFS_DBG_RD_DESC_RAM 00000190: 00000000 00000000 00000000 00000000
[   39.631988] UFS_UFS_DBG_RD_DESC_RAM 000001a0: 00000000 00000000 00000000 00000000
[   39.640132] UFS_UFS_DBG_RD_DESC_RAM 000001b0: 00000000 00000000 00000000 00000000
[   39.648277] UFS_UFS_DBG_RD_DESC_RAM 000001c0: 00000000 00000000 00000000 00000000
[   39.656416] UFS_UFS_DBG_RD_DESC_RAM 000001d0: 00000000 00000000 00000000 00000000
[   39.664526] UFS_UFS_DBG_RD_DESC_RAM 000001e0: 00000000 00000000 00000000 00000000
[   39.672623] UFS_UFS_DBG_RD_DESC_RAM 000001f0: 00000000 00000000 00000000 00000000
[   39.680755] UFS_UFS_DBG_RD_PRDT_RAM 00000000: 00000000 00000000 00000000 00000000
[   39.688842] UFS_UFS_DBG_RD_PRDT_RAM 00000010: 00000000 00000000 00000000 00000000
[   39.696924] UFS_UFS_DBG_RD_PRDT_RAM 00000020: 00000000 00000000 00000000 00000000
[   39.705006] UFS_UFS_DBG_RD_PRDT_RAM 00000030: 00000000 00000000 00000000 00000000
[   39.713088] UFS_UFS_DBG_RD_PRDT_RAM 00000040: 00000000 00000000 00000000 00000000
[   39.721164] UFS_UFS_DBG_RD_PRDT_RAM 00000050: 00000000 00000000 00000000 00000000
[   39.729227] UFS_UFS_DBG_RD_PRDT_RAM 00000060: 00000000 00000000 00000000 00000000
[   39.737283] UFS_UFS_DBG_RD_PRDT_RAM 00000070: 00000000 00000000 00000000 00000000
[   39.745338] UFS_UFS_DBG_RD_PRDT_RAM 00000080: 00000000 00000000 00000000 00000000
[   39.753374] UFS_UFS_DBG_RD_PRDT_RAM 00000090: 00000000 00000000 00000000 00000000
[   39.761406] UFS_UFS_DBG_RD_PRDT_RAM 000000a0: 00000000 00000000 00000000 00000000
[   39.769425] UFS_UFS_DBG_RD_PRDT_RAM 000000b0: 00000000 00000000 00000000 00000000
[   39.777435] UFS_UFS_DBG_RD_PRDT_RAM 000000c0: 00000000 00000000 00000000 00000000
[   39.785428] UFS_UFS_DBG_RD_PRDT_RAM 000000d0: 00000000 00000000 00000000 00000000
[   39.793421] UFS_UFS_DBG_RD_PRDT_RAM 000000e0: 00000000 00000000 00000000 00000000
[   39.801415] UFS_UFS_DBG_RD_PRDT_RAM 000000f0: 00000000 00000000 00000000 00000000
[   39.809412] UFS_DBG_RD_REG_UAWM 00000000: 00000000 00000000 00000000 00000000
[   39.817068] UFS_DBG_RD_REG_UARM 00000000: 00000000 00000000 00000000 00000000
[   39.824746] UFS_DBG_RD_REG_TXUC 00000000: 00000000 00000000 00000000 00000000
[   39.832401] UFS_DBG_RD_REG_TXUC 00000010: 00000000 00000000 00000000 00000000
[   39.840051] UFS_DBG_RD_REG_TXUC 00000020: 00000000 00000000 00000000 00000000
[   39.847689] UFS_DBG_RD_REG_TXUC 00000030: 00000000 00000000 00000000 00000000
[   39.855317] UFS_DBG_RD_REG_TXUC 00000040: 00000000 00000000 00000000 00000000
[   39.862950] UFS_DBG_RD_REG_TXUC 00000050: 00000000 00000000 00000000 00000000
[   39.870580] UFS_DBG_RD_REG_TXUC 00000060: 00000000 00000000 00000000 00000000
[   39.878200] UFS_DBG_RD_REG_TXUC 00000070: 00000000 00000000 00000000 00000000
[   39.885811] UFS_DBG_RD_REG_TXUC 00000080: 00000000 00000000 00000000 00000000
[   39.893421] UFS_DBG_RD_REG_TXUC 00000090: 00000000 00000000 00000000 00000000
[   39.901025] UFS_DBG_RD_REG_TXUC 000000a0: 00000000 00000000 00000000 00000000
[   39.908627] UFS_DBG_RD_REG_TXUC 000000b0: 00000000 00000000 00000000 00000000
[   39.916252] UFS_DBG_RD_REG_RXUC 00000000: 00000000 00000000 00000000 00000000
[   39.923840] UFS_DBG_RD_REG_RXUC 00000010: 00000000 00000000 00000000 00000000
[   39.931429] UFS_DBG_RD_REG_RXUC 00000020: 00000000 00000000 00000000 00000000
[   39.939015] UFS_DBG_RD_REG_RXUC 00000030: 00000000 00000000 00000000 00000000
[   39.946591] UFS_DBG_RD_REG_RXUC 00000040: 00000000 00000000 00000000 00000000
[   39.954173] UFS_DBG_RD_REG_RXUC 00000050: 00000000 00000000 00000000 00000000
[   39.961743] UFS_DBG_RD_REG_RXUC 00000060: 00000000 00000000 00000000
[   39.968520] UFS_DBG_RD_REG_DFC 00000000: 00000000 00000000 00000000 00000000
[   39.976002] UFS_DBG_RD_REG_DFC 00000010: 00000000 00000000 00000000 00000000
[   39.983470] UFS_DBG_RD_REG_DFC 00000020: 00000000 00000000 00000000 00000000
[   39.990932] UFS_DBG_RD_REG_DFC 00000030: 00000000 00000000 00000000 00000000
[   39.998383] UFS_DBG_RD_REG_DFC 00000040: 00000000 00000000 00000000
[   40.005059] UFS_DBG_RD_REG_TRLUT 00000000: 00000000 00000000 00000000 00000000
[   40.012680] UFS_DBG_RD_REG_TRLUT 00000010: 00000000 00000000 00000000 00000000
[   40.020298] UFS_DBG_RD_REG_TRLUT 00000020: 00000000 00000000 00000000 00000000
[   40.027906] UFS_DBG_RD_REG_TRLUT 00000030: 00000000 00000000 00000000 00000000
[   40.035515] UFS_DBG_RD_REG_TRLUT 00000040: 00000000 00000000 00000000 00000000
[   40.043135] UFS_DBG_RD_REG_TRLUT 00000050: 00000000 00000000 00000000 00000000
[   40.050745] UFS_DBG_RD_REG_TRLUT 00000060: 00000000 00000000 00000000 00000000
[   40.058350] UFS_DBG_RD_REG_TRLUT 00000070: 00000000 00000000 00000000 00000000
[   40.065955] UFS_DBG_RD_REG_TRLUT 00000080: 00000000 00000000
[   40.071988] UFS_DBG_RD_REG_TMRLUT 00000000: 00000000 00000000 00000000 00000000
[   40.079680] UFS_DBG_RD_REG_TMRLUT 00000010: 00000000 00000000 00000000 00000000
[   40.087340] UFS_DBG_RD_REG_TMRLUT 00000020: 00000000
[   40.092653] UFS_TEST_BUS 00000000
[   40.096510] TSTBUS_UAWM00000000: 00000000 00000000 00000000 00000000
[   40.103258] TSTBUS_UAWM00000010: 00000000 00000000 00000000 00000000
[   40.109992] TSTBUS_UAWM00000020: 00000000 00000000 00000000 00000000
[   40.116722] TSTBUS_UAWM00000030: 00000000 00000000 00000000 00000000
[   40.123461] TSTBUS_UAWM00000040: 00000000 00000000 00000000 00000000
[   40.130198] TSTBUS_UAWM00000050: 00000000 00000000 00000000 00000000
[   40.136884] TSTBUS_UAWM00000060: 00000000 00000000 00000000 00000000
[   40.143609] TSTBUS_UAWM00000070: 00000000 00000000 00000000 00000000
[   40.150516] TSTBUS_UARM00000000: 00000000 00000000 00000000 00000000
[   40.157254] TSTBUS_UARM00000010: 00000000 00000000 00000000 00000000
[   40.163988] TSTBUS_UARM00000020: 00000000 00000000 00000000 00000000
[   40.170712] TSTBUS_UARM00000030: 00000000 00000000 00000000 00000000
[   40.177421] TSTBUS_UARM00000040: 00000000 00000000 00000000 00000000
[   40.184133] TSTBUS_UARM00000050: 00000000 00000000 00000000 00000000
[   40.190859] TSTBUS_UARM00000060: 00000000 00000000 00000000 00000000
[   40.197574] TSTBUS_UARM00000070: 00000000 00000000 00000000 00000000
[   40.204469] TSTBUS_TXUC00000000: 00000000 00000000 00000000 00000000
[   40.211184] TSTBUS_TXUC00000010: 00000000 00000000 00000000 00000000
[   40.217860] TSTBUS_TXUC00000020: 00000000 00000000 00000000 00000000
[   40.224570] TSTBUS_TXUC00000030: 00000000 00000000 00000000 00000000
[   40.231272] TSTBUS_TXUC00000040: 00000000 00000000 00000000 00000000
[   40.237967] TSTBUS_TXUC00000050: 00000000 00000000 00000000 00000000
[   40.244651] TSTBUS_TXUC00000060: 00000000 00000000 00000000 00000000
[   40.251339] TSTBUS_TXUC00000070: 00000000 00000000 00000000 00000000
[   40.258205] TSTBUS_RXUC00000000: 00000000 00000000 00000000 00000000
[   40.264877] TSTBUS_RXUC00000010: 00000000 00000000 00000000 00000000
[   40.271561] TSTBUS_RXUC00000020: 00000000 00000000 00000000 00000000
[   40.278244] TSTBUS_RXUC00000030: 00000000 00000000 00000000 00000000
[   40.284880] TSTBUS_RXUC00000040: 00000000 00000000 00000000 00000000
[   40.291556] TSTBUS_RXUC00000050: 00000000 00000000 00000000 00000000
[   40.298239] TSTBUS_RXUC00000060: 00000000 00000000 00000000 00000000
[   40.304924] TSTBUS_RXUC00000070: 00000000 00000000 00000000 00000000
[   40.311778] TSTBUS_DFC00000000: 00000000 00000000 00000000 00000000
[   40.318380] TSTBUS_DFC00000010: 00000000 00000000 00000000 00000000
[   40.324977] TSTBUS_DFC00000020: 00000000 00000000 00000000 00000000
[   40.331560] TSTBUS_DFC00000030: 00000000 00000000 00000000 00000000
[   40.338156] TSTBUS_DFC00000040: 00000000 00000000 00000000 00000000
[   40.344748] TSTBUS_DFC00000050: 00000000 00000000 00000000 00000000
[   40.351339] TSTBUS_DFC00000060: 00000000 00000000 00000000 00000000
[   40.357931] TSTBUS_DFC00000070: 00000000 00000000 00000000 00000000
[   40.364702] TSTBUS_TRLUT00000000: 00000000 00000000 00000000 00000000
[   40.371474] TSTBUS_TRLUT00000010: 00000000 00000000 00000000 00000000
[   40.378255] TSTBUS_TRLUT00000020: 00000000 00000000 00000000 00000000
[   40.385025] TSTBUS_TRLUT00000030: 00000000 00000000 00000000 00000000
[   40.391794] TSTBUS_TRLUT00000040: 00000000 00000000 00000000 00000000
[   40.398567] TSTBUS_TRLUT00000050: 00000000 00000000 00000000 00000000
[   40.405329] TSTBUS_TRLUT00000060: 00000000 00000000 00000000 00000000
[   40.412103] TSTBUS_TRLUT00000070: 00000000 00000000 00000000 00000000
[   40.419057] TSTBUS_TMRLUT00000000: 00000000 00000000 00000000 00000000
[   40.425909] TSTBUS_TMRLUT00000010: 00000000 00000000 00000000 00000000
[   40.432777] TSTBUS_TMRLUT00000020: 00000000 00000000 00000000 00000000
[   40.439625] TSTBUS_TMRLUT00000030: 00000000 00000000 00000000 00000000
[   40.446485] TSTBUS_TMRLUT00000040: 00000000 00000000 00000000 00000000
[   40.453344] TSTBUS_TMRLUT00000050: 00000000 00000000 00000000 00000000
[   40.460202] TSTBUS_TMRLUT00000060: 00000000 00000000 00000000 00000000
[   40.467054] TSTBUS_TMRLUT00000070: 00000000 00000000 00000000 00000000
[   40.474095] TSTBUS_OCSC00000000: 00000000 00000000 00000000 00000000
[   40.480772] TSTBUS_OCSC00000010: 00000000 00000000 00000000 00000000
[   40.487449] TSTBUS_OCSC00000020: 00000000 00000000 00000000 00000000
[   40.494137] TSTBUS_OCSC00000030: 00000000 00000000 00000000 00000000
[   40.500821] TSTBUS_OCSC00000040: 00000000 00000000 00000000 00000000
[   40.507494] TSTBUS_OCSC00000050: 00000000 00000000 00000000 00000000
[   40.514149] TSTBUS_OCSC00000060: 00000000 00000000 00000000 00000000
[   40.520824] TSTBUS_OCSC00000070: 00000000 00000000 00000000 00000000
[   40.527677] TSTBUS_UTP_HCI00000000: 00000000 00000000 00000000 00000000
[   40.534621] TSTBUS_UTP_HCI00000010: 00000000 00000000 00000000 00000000
[   40.541569] TSTBUS_UTP_HCI00000020: 00000000 00000000 00000000 00000000
[   40.548512] TSTBUS_UTP_HCI00000030: 00000000 00000000 00000000 00000000
[   40.555451] TSTBUS_UTP_HCI00000040: 00000000 00000000 00000000 00000000
[   40.562397] TSTBUS_UTP_HCI00000050: 00000000 00000000 00000000 00000000
[   40.569343] TSTBUS_UTP_HCI00000060: 00000000 00000000 00000000 00000000
[   40.576294] TSTBUS_UTP_HCI00000070: 00000000 00000000 00000000 00000000
[   40.583420] TSTBUS_COMBINED00000000: 00000000 00000000 00000000 00000000
[   40.590454] TSTBUS_COMBINED00000010: 00000000 00000000 00000000 00000000
[   40.597478] TSTBUS_COMBINED00000020: 00000000 00000000 00000000 00000000
[   40.604509] TSTBUS_COMBINED00000030: 00000000 00000000 00000000 00000000
[   40.611542] TSTBUS_COMBINED00000040: 00000000 00000000 00000000 00000000
[   40.618578] TSTBUS_COMBINED00000050: 00000000 00000000 00000000 00000000
[   40.625606] TSTBUS_COMBINED00000060: 00000000 00000000 00000000 00000000
[   40.632636] TSTBUS_COMBINED00000070: 00000000 00000000 00000000 00000000
[   40.639849] TSTBUS_WRAPPER00000000: 00000000 00000000 00000000 00000000
[   40.646800] TSTBUS_WRAPPER00000010: 00000000 00000000 00000000 00000000
[   40.653749] TSTBUS_WRAPPER00000020: 00000000 00000000 00000000 00000000
[   40.660696] TSTBUS_WRAPPER00000030: 00000000 00000000 00000000 00000000
[   40.667643] TSTBUS_WRAPPER00000040: 00000000 00000000 00000000 00000000
[   40.674597] TSTBUS_WRAPPER00000050: 00000000 00000000 00000000 00000000
[   40.681546] TSTBUS_WRAPPER00000060: 00000000 00000000 00000000 00000000
[   40.688493] TSTBUS_WRAPPER00000070: 00000000 00000000 00000000 00000000
[   40.696886] TSTBUS_UNIPRO00000000: 00000000 00000000 00000000 00000000
[   40.703747] TSTBUS_UNIPRO00000010: 00000000 00000000 00000000 00000000
[   40.710609] TSTBUS_UNIPRO00000020: 00000000 00000000 00000000 00000000
[   40.717468] TSTBUS_UNIPRO00000030: 00000000 00000000 00000000 00000000
[   40.724324] TSTBUS_UNIPRO00000040: 00000000 00000000 00000000 00000000
[   40.731184] TSTBUS_UNIPRO00000050: 00000000 00000000 00000000 00000000
[   40.738043] TSTBUS_UNIPRO00000060: 00000000 00000000 00000000 00000000
[   40.744897] TSTBUS_UNIPRO00000070: 00000000 00000000 00000000 00000000
[   40.751751] TSTBUS_UNIPRO00000080: 00000000 00000000 00000000 00000000
[   40.758600] TSTBUS_UNIPRO00000090: 00000000 00000000 00000000 00000000
[   40.765454] TSTBUS_UNIPRO000000a0: 00000000 00000000 00000000 00000000
[   40.772308] TSTBUS_UNIPRO000000b0: 00000000 00000000 00000000 00000000
[   40.779165] TSTBUS_UNIPRO000000c0: 00000000 00000000 00000000 00000000
[   40.786018] TSTBUS_UNIPRO000000d0: 00000000 00000000 00000000 00000000
[   40.792880] TSTBUS_UNIPRO000000e0: 00000000 00000000 00000000 00000000
[   40.799734] TSTBUS_UNIPRO000000f0: 00000000 00000000 00000000 00000000
[   40.806589] TSTBUS_UNIPRO00000100: 00000000 00000000 00000000 00000000
[   40.813444] TSTBUS_UNIPRO00000110: 00000000 00000000 00000000 00000000
[   40.820297] TSTBUS_UNIPRO00000120: 00000000 00000000 00000000 00000000
[   40.827161] TSTBUS_UNIPRO00000130: 00000000 00000000 00000000 00000000
[   40.834015] TSTBUS_UNIPRO00000140: 00000000 00000000 00000000 00000000
[   40.840870] TSTBUS_UNIPRO00000150: 00000000 00000000 00000000 00000000
[   40.847721] TSTBUS_UNIPRO00000160: 00000000 00000000 00000000 00000000
[   40.854575] TSTBUS_UNIPRO00000170: 00000000 00000000 00000000 00000000
[   40.861422] TSTBUS_UNIPRO00000180: 00000000 00000000 00000000 00000000
[   40.868274] TSTBUS_UNIPRO00000190: 00000000 00000000 00000000 00000000
[   40.875128] TSTBUS_UNIPRO000001a0: 00000000 00000000 00000000 00000000
[   40.881974] TSTBUS_UNIPRO000001b0: 00000000 00000000 00000000 00000000
[   40.888819] TSTBUS_UNIPRO000001c0: 00000000 00000000 00000000 00000000
[   40.895658] TSTBUS_UNIPRO000001d0: 00000000 00000000 00000000 00000000
[   40.902497] TSTBUS_UNIPRO000001e0: 00000000 00000000 00000000 00000000
[   40.909339] TSTBUS_UNIPRO000001f0: 00000000 00000000 00000000 00000000
[   40.916184] TSTBUS_UNIPRO00000200: 00000000 00000000 00000000 00000000
[   40.923030] TSTBUS_UNIPRO00000210: 00000000 00000000 00000000 00000000
[   40.929867] TSTBUS_UNIPRO00000220: 00000000 00000000 00000000 00000000
[   40.936705] TSTBUS_UNIPRO00000230: 00000000 00000000 00000000 00000000
[   40.943548] TSTBUS_UNIPRO00000240: 00000000 00000000 00000000 00000000
[   40.950384] TSTBUS_UNIPRO00000250: 00000000 00000000 00000000 00000000
[   40.957219] TSTBUS_UNIPRO00000260: 00000000 00000000 00000000 00000000
[   40.964057] TSTBUS_UNIPRO00000270: 00000000 00000000 00000000 00000000
[   40.970888] TSTBUS_UNIPRO00000280: 00000000 00000000 00000000 00000000
[   40.977718] TSTBUS_UNIPRO00000290: 00000000 00000000 00000000 00000000
[   40.984543] TSTBUS_UNIPRO000002a0: 00000000 00000000 00000000 00000000
[   40.991345] TSTBUS_UNIPRO000002b0: 00000000 00000000 00000000 00000000
[   40.998168] TSTBUS_UNIPRO000002c0: 00000000 00000000 00000000 00000000
[   41.004985] TSTBUS_UNIPRO000002d0: 00000000 00000000 00000000 00000000
[   41.011804] TSTBUS_UNIPRO000002e0: 00000000 00000000 00000000 00000000
[   41.018626] TSTBUS_UNIPRO000002f0: 00000000 00000000 00000000 00000000
[   41.025433] TSTBUS_UNIPRO00000300: 00000000 00000000 00000000 00000000
[   41.032261] TSTBUS_UNIPRO00000310: 00000000 00000000 00000000 00000000
[   41.039085] TSTBUS_UNIPRO00000320: 00000000 00000000 00000000 00000000
[   41.045907] TSTBUS_UNIPRO00000330: 00000000 00000000 00000000 00000000
[   41.052731] TSTBUS_UNIPRO00000340: 00000000 00000000 00000000 00000000
[   41.059555] TSTBUS_UNIPRO00000350: 00000000 00000000 00000000 00000000
[   41.066377] TSTBUS_UNIPRO00000360: 00000000 00000000 00000000 00000000
[   41.073205] TSTBUS_UNIPRO00000370: 00000000 00000000 00000000 00000000
[   41.080032] TSTBUS_UNIPRO00000380: 00000000 00000000 00000000 00000000
[   41.086855] TSTBUS_UNIPRO00000390: 00000000 00000000 00000000 00000000
[   41.093677] TSTBUS_UNIPRO000003a0: 00000000 00000000 00000000 00000000
[   41.100496] TSTBUS_UNIPRO000003b0: 00000000 00000000 00000000 00000000
[   41.107320] TSTBUS_UNIPRO000003c0: 00000000 00000000 00000000 00000000
[   41.114145] TSTBUS_UNIPRO000003d0: 00000000 00000000 00000000 00000000
[   41.120963] TSTBUS_UNIPRO000003e0: 00000000 00000000 00000000 00000000
[   41.127782] TSTBUS_UNIPRO000003f0: 00000000 00000000 00000000 00000000
[   41.134602] ufshcd-qcom 1d84000.ufshc: UFS Host state=1
[   41.140130] ufshcd-qcom 1d84000.ufshc: 1 outstanding reqs, tasks=0x0
[   41.146775] ufshcd-qcom 1d84000.ufshc: saved_err=0x0, saved_uic_err=0x0
[   41.153690] ufshcd-qcom 1d84000.ufshc: Device power mode=1, UIC link state=1
[   41.161054] ufshcd-qcom 1d84000.ufshc: PM in progress=0, sys. suspended=0
[   41.168155] ufshcd-qcom 1d84000.ufshc: Auto BKOPS=0, Host self-block=0
[   41.174994] ufshcd-qcom 1d84000.ufshc: Clk gate=1
[   41.179997] ufshcd-qcom 1d84000.ufshc: last_hibern8_exit_tstamp at 0 us, 
hibern8_exit_cnt=7
[   41.188668] ufshcd-qcom 1d84000.ufshc: error handling flags=0x0, req. abort 
count=0
[   41.196656] ufshcd-qcom 1d84000.ufshc: hba->ufs_version=0x210, Host 
capabilities=0x1587031f, caps=0x134f
[   41.206468] ufshcd-qcom 1d84000.ufshc: quirks=0x400000, dev. quirks=0x140
[   41.213589] ufshcd-qcom 1d84000.ufshc: UFS dev info: SKhynix  H28S7Q302BMR 
  rev A202
[   41.221941] ufshcd-qcom 1d84000.ufshc: clk: core_clk, rate: 200000000
[   41.228731] ufshcd-qcom 1d84000.ufshc: clk: core_clk_unipro, rate: 150000000
[   41.236133] ufshcd-qcom 1d84000.ufshc: clk: ice_core_clk, rate: 300000000
[   41.243274] ufshcd-qcom 1d84000.ufshc: UPIU[13] - Transfer Request Descriptor 
phys@0xffffdf1a0
[   41.252254] UPIU TRD: 00000000: 15000000 00000000 0000000f 00000000
[   41.258883] UPIU TRD: 00000010: fffe9c00 0000000f 00800080 01000002
[   41.265500] ufshcd-qcom 1d84000.ufshc: UPIU[13] - Request UPIU phys@0xffffe9c00
[   41.273183] UPIU REQ: 00000000: 0d004001 00000000 00000000 00d00400
[   41.279812] UPIU REQ: 00000010: 24000028 00002cbd 0000004d 00000000
[   41.286440] ufshcd-qcom 1d84000.ufshc: UPIU[13] - Response UPIU phys@0xffffe9c80
[   41.294227] UPIU RSP: 00000000: 00000000 00000000 00000000 00000000
[   41.300871] UPIU RSP: 00000010: 00000000 00000000 00000000 00000000
[   41.307516] UPIU RSP: 00000020: 00000000 00000000 00000000 00000000
[   41.314164] UPIU RSP: 00000030: 00000000
[   41.318447] ufshcd-qcom 1d84000.ufshc: UPIU[13] - PRDT - 2 entries 
phys@0xffffe9d00
[   41.326595] UPIU PRDT: 00000000: fd600000 0000000f 00000000 0003ffff
[   41.333344] UPIU PRDT: 00000010: fd640000 0000000f 00000000 0000cfff
[   41.340185] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.350599] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.361055] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.371497] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.381913] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.392357] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.402749] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.413188] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.423628] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.434043] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.444481] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.454912] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.465321] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.475753] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.486181] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.496596] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.507034] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.517445] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.527889] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.538343] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.548755] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.559181] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.569612] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.580012] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.590433] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.600847] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.611273] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.621699] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.632100] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.642520] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.652939] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.663331] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.673751] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.684172] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.694582] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.704998] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.715392] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.725811] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.736225] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.746615] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.757028] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.767436] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.777821] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.788234] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.798647] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.809039] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.819452] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.829843] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.840257] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.850669] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.861062] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.871478] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.881886] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.892276] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.902684] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.913073] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.923480] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.933887] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.944279] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.954686] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.965098] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.975481] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.985885] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   41.996266] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.006652] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.017065] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.027481] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.037894] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.048319] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.058702] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.069108] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.079522] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.089909] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.100319] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.110712] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.121116] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.131524] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.141906] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.152315] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.162720] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.173103] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.183511] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.193892] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.204277] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.214680] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.225063] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.235471] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.245873] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.256260] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.266659] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.277062] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.287445] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.297846] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.308246] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.318640] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.329062] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.339459] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.349865] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.360267] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.370644] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
13 not pending in the device.
[   42.380989] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: failed with err -16
[   42.394109] ufshcd-qcom 1d84000.ufshc: OCS invalid from controller for tag 13
[   42.466469] systemd[1]: System time advanced to timestamp on 
/var/lib/systemd/timesync/clock: Tue 2025-10-21 16:44:39 CEST
[   42.529436] systemd[1]: systemd 257.10 running in system mode (+PAM +AUDIT 
-SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL 
+BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP 
+LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE -TPM2 
+BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF +XKBCOMMON -UTMP -SYSVINIT 
-LIBARCHIVE)
[   42.569243] systemd[1]: Detected architecture arm64.
[   42.578111] systemd[1]: Hostname set to <google-blueline>.
[   42.646256] systemd[1]: Failed to open libbpf, cgroup BPF features disabled: 
Not supported
[   73.203077] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: Device abort task at tag 10
[   73.212378] sd 0:0:0:0: [sda] tag#10 CDB: opcode=0x28 28 00 00 23 de d1 00 00 
5d 00
[   73.221758] host_regs: 00000000: 1587031f 00000000 00000210 00000000
[   73.229894] host_regs: 00000010: 01000000 00010217 00000c96 00000000
[   73.237958] host_regs: 00000020: 00000000 00071af5 00000000 00000000
[   73.245669] host_regs: 00000030: 0000010f 00000003 00000000 00000000
[   73.253336] host_regs: 00000040: 00000000 00000000 00000000 00000000
[   73.260745] host_regs: 00000050: fffdf000 0000000f 00000400 00000000
[   73.268092] host_regs: 00000060: 00000001 ffffffff 00000000 00000000
[   73.275260] host_regs: 00000070: fffde000 0000000f 00000000 00000000
[   73.282381] host_regs: 00000080: 00000001 00000000 00000000 00000000
[   73.289577] host_regs: 00000090: 00000002 15710000 00000000 00000226
[   73.296680] ufshcd-qcom 1d84000.ufshc: No record of pa_err
[   73.302989] ufshcd-qcom 1d84000.ufshc: No record of dl_err
[   73.309049] ufshcd-qcom 1d84000.ufshc: No record of nl_err
[   73.315132] ufshcd-qcom 1d84000.ufshc: No record of tl_err
[   73.321185] ufshcd-qcom 1d84000.ufshc: No record of dme_err
[   73.327306] ufshcd-qcom 1d84000.ufshc: No record of auto_hibern8_err
[   73.334193] ufshcd-qcom 1d84000.ufshc: No record of fatal_err
[   73.340437] ufshcd-qcom 1d84000.ufshc: No record of link_startup_fail
[   73.347387] ufshcd-qcom 1d84000.ufshc: No record of resume_fail
[   73.353762] ufshcd-qcom 1d84000.ufshc: No record of suspend_fail
[   73.360218] ufshcd-qcom 1d84000.ufshc: No record of wlun resume_fail
[   73.367007] ufshcd-qcom 1d84000.ufshc: No record of wlun suspend_fail
[   73.373875] ufshcd-qcom 1d84000.ufshc: dev_reset[0] = 0x0 at 3968894 us
[   73.380874] ufshcd-qcom 1d84000.ufshc: dev_reset[1] = 0x0 at 42401689 us
[   73.387954] ufshcd-qcom 1d84000.ufshc: dev_reset: total cnt=2
[   73.394084] ufshcd-qcom 1d84000.ufshc: No record of host_reset
[   73.400297] ufshcd-qcom 1d84000.ufshc: task_abort[0] = 0xd at 38985404 us
[   73.407484] ufshcd-qcom 1d84000.ufshc: task_abort[1] = 0xa at 73221727 us
[   73.414650] ufshcd-qcom 1d84000.ufshc: task_abort: total cnt=2
[   73.420871] ufshcd-qcom 1d84000.ufshc: HW_H8_ENTER_CNT=0
[   73.426571] ufshcd-qcom 1d84000.ufshc: HW_H8_EXIT_CNT=0
[   73.432158] ufshcd-qcom 1d84000.ufshc: SW_H8_ENTER_CNT=0
[   73.437854] ufshcd-qcom 1d84000.ufshc: SW_H8_EXIT_CNT=0
[   73.443466] ufshcd-qcom 1d84000.ufshc: SW_AFTER_HW_H8_ENTER_CNT=0
[   73.449963] HCI Vendor Specific Registers 00000000: 000000c8 00000000 
00000000 00000000
[   73.458383] HCI Vendor Specific Registers 00000010: 00000000 00000000 
00000001 5c5c052c
[   73.466811] HCI Vendor Specific Registers 00000020: 3f0113ff 30010001 
00000000 1f1f1f1f
[   73.475242] HCI Vendor Specific Registers 00000030: 1f1f1f1f 001f1f1f 
0ff00000 0000003c
[   73.483701] UFS_UFS_DBG_RD_REG_OCSC 00000000: 00000000 00000000 00000000 00000000
[   73.491621] UFS_UFS_DBG_RD_REG_OCSC 00000010: 00000000 00000000 00000000 00000000
[   73.499540] UFS_UFS_DBG_RD_REG_OCSC 00000020: 00000000 00000000 00000000 00000000
[   73.507454] UFS_UFS_DBG_RD_REG_OCSC 00000030: 00000000 00000000 00000000 00000000
[   73.515377] UFS_UFS_DBG_RD_REG_OCSC 00000040: 00000000 00000000 00000000 00000000
[   73.523304] UFS_UFS_DBG_RD_REG_OCSC 00000050: 00000000 00000000 00000000 00000000
[   73.531236] UFS_UFS_DBG_RD_REG_OCSC 00000060: 00000000 00000000 00000000 00000000
[   73.539173] UFS_UFS_DBG_RD_REG_OCSC 00000070: 00000000 00000000 00000000 00000000
[   73.547092] UFS_UFS_DBG_RD_REG_OCSC 00000080: 00000000 00000000 00000000 00000000
[   73.555019] UFS_UFS_DBG_RD_REG_OCSC 00000090: 00000000 00000000 00000000 00000000
[   73.562941] UFS_UFS_DBG_RD_REG_OCSC 000000a0: 00000000 00000000 00000000 00000000
[   73.570881] UFS_UFS_DBG_RD_EDTL_RAM 00000000: 00000000 00000000 00000000 00000000
[   73.578799] UFS_UFS_DBG_RD_EDTL_RAM 00000010: 00000000 00000000 00000000 00000000
[   73.586723] UFS_UFS_DBG_RD_EDTL_RAM 00000020: 00000000 00000000 00000000 00000000
[   73.594649] UFS_UFS_DBG_RD_EDTL_RAM 00000030: 00000000 00000000 00000000 00000000
[   73.602573] UFS_UFS_DBG_RD_EDTL_RAM 00000040: 00000000 00000000 00000000 00000000
[   73.610505] UFS_UFS_DBG_RD_EDTL_RAM 00000050: 00000000 00000000 00000000 00000000
[   73.618436] UFS_UFS_DBG_RD_EDTL_RAM 00000060: 00000000 00000000 00000000 00000000
[   73.626364] UFS_UFS_DBG_RD_EDTL_RAM 00000070: 00000000 00000000 00000000 00000000
[   73.634379] UFS_UFS_DBG_RD_DESC_RAM 00000000: 00000000 00000000 00000000 00000000
[   73.642316] UFS_UFS_DBG_RD_DESC_RAM 00000010: 00000000 00000000 00000000 00000000
[   73.650256] UFS_UFS_DBG_RD_DESC_RAM 00000020: 00000000 00000000 00000000 00000000
[   73.658186] UFS_UFS_DBG_RD_DESC_RAM 00000030: 00000000 00000000 00000000 00000000
[   73.666128] UFS_UFS_DBG_RD_DESC_RAM 00000040: 00000000 00000000 00000000 00000000
[   73.674059] UFS_UFS_DBG_RD_DESC_RAM 00000050: 00000000 00000000 00000000 00000000
[   73.681987] UFS_UFS_DBG_RD_DESC_RAM 00000060: 00000000 00000000 00000000 00000000
[   73.689920] UFS_UFS_DBG_RD_DESC_RAM 00000070: 00000000 00000000 00000000 00000000
[   73.697848] UFS_UFS_DBG_RD_DESC_RAM 00000080: 00000000 00000000 00000000 00000000
[   73.705778] UFS_UFS_DBG_RD_DESC_RAM 00000090: 00000000 00000000 00000000 00000000
[   73.713716] UFS_UFS_DBG_RD_DESC_RAM 000000a0: 00000000 00000000 00000000 00000000
[   73.721647] UFS_UFS_DBG_RD_DESC_RAM 000000b0: 00000000 00000000 00000000 00000000
[   73.729592] UFS_UFS_DBG_RD_DESC_RAM 000000c0: 00000000 00000000 00000000 00000000
[   73.737538] UFS_UFS_DBG_RD_DESC_RAM 000000d0: 00000000 00000000 00000000 00000000
[   73.745483] UFS_UFS_DBG_RD_DESC_RAM 000000e0: 00000000 00000000 00000000 00000000
[   73.753419] UFS_UFS_DBG_RD_DESC_RAM 000000f0: 00000000 00000000 00000000 00000000
[   73.761328] UFS_UFS_DBG_RD_DESC_RAM 00000100: 00000000 00000000 00000000 00000000
[   73.769265] UFS_UFS_DBG_RD_DESC_RAM 00000110: 00000000 00000000 00000000 00000000
[   73.777204] UFS_UFS_DBG_RD_DESC_RAM 00000120: 00000000 00000000 00000000 00000000
[   73.785145] UFS_UFS_DBG_RD_DESC_RAM 00000130: 00000000 00000000 00000000 00000000
[   73.793070] UFS_UFS_DBG_RD_DESC_RAM 00000140: 00000000 00000000 00000000 00000000
[   73.801006] UFS_UFS_DBG_RD_DESC_RAM 00000150: 00000000 00000000 00000000 00000000
[   73.808945] UFS_UFS_DBG_RD_DESC_RAM 00000160: 00000000 00000000 00000000 00000000
[   73.816889] UFS_UFS_DBG_RD_DESC_RAM 00000170: 00000000 00000000 00000000 00000000
[   73.824820] UFS_UFS_DBG_RD_DESC_RAM 00000180: 00000000 00000000 00000000 00000000
[   73.832755] UFS_UFS_DBG_RD_DESC_RAM 00000190: 00000000 00000000 00000000 00000000
[   73.840705] UFS_UFS_DBG_RD_DESC_RAM 000001a0: 00000000 00000000 00000000 00000000
[   73.848651] UFS_UFS_DBG_RD_DESC_RAM 000001b0: 00000000 00000000 00000000 00000000
[   73.856595] UFS_UFS_DBG_RD_DESC_RAM 000001c0: 00000000 00000000 00000000 00000000
[   73.864543] UFS_UFS_DBG_RD_DESC_RAM 000001d0: 00000000 00000000 00000000 00000000
[   73.872478] UFS_UFS_DBG_RD_DESC_RAM 000001e0: 00000000 00000000 00000000 00000000
[   73.880433] UFS_UFS_DBG_RD_DESC_RAM 000001f0: 00000000 00000000 00000000 00000000
[   73.888416] UFS_UFS_DBG_RD_PRDT_RAM 00000000: 00000000 00000000 00000000 00000000
[   73.896370] UFS_UFS_DBG_RD_PRDT_RAM 00000010: 00000000 00000000 00000000 00000000
[   73.904312] UFS_UFS_DBG_RD_PRDT_RAM 00000020: 00000000 00000000 00000000 00000000
[   73.912271] UFS_UFS_DBG_RD_PRDT_RAM 00000030: 00000000 00000000 00000000 00000000
[   73.920225] UFS_UFS_DBG_RD_PRDT_RAM 00000040: 00000000 00000000 00000000 00000000
[   73.928183] UFS_UFS_DBG_RD_PRDT_RAM 00000050: 00000000 00000000 00000000 00000000
[   73.936131] UFS_UFS_DBG_RD_PRDT_RAM 00000060: 00000000 00000000 00000000 00000000
[   73.944085] UFS_UFS_DBG_RD_PRDT_RAM 00000070: 00000000 00000000 00000000 00000000
[   73.952040] UFS_UFS_DBG_RD_PRDT_RAM 00000080: 00000000 00000000 00000000 00000000
[   73.959998] UFS_UFS_DBG_RD_PRDT_RAM 00000090: 00000000 00000000 00000000 00000000
[   73.967948] UFS_UFS_DBG_RD_PRDT_RAM 000000a0: 00000000 00000000 00000000 00000000
[   73.975893] UFS_UFS_DBG_RD_PRDT_RAM 000000b0: 00000000 00000000 00000000 00000000
[   73.983847] UFS_UFS_DBG_RD_PRDT_RAM 000000c0: 00000000 00000000 00000000 00000000
[   73.991792] UFS_UFS_DBG_RD_PRDT_RAM 000000d0: 00000000 00000000 00000000 00000000
[   73.999741] UFS_UFS_DBG_RD_PRDT_RAM 000000e0: 00000000 00000000 00000000 00000000
[   74.007699] UFS_UFS_DBG_RD_PRDT_RAM 000000f0: 00000000 00000000 00000000 00000000
[   74.015645] UFS_DBG_RD_REG_UAWM 00000000: 00000000 00000000 00000000 00000000
[   74.023234] UFS_DBG_RD_REG_UARM 00000000: 00000000 00000000 00000000 00000000
[   74.030881] UFS_DBG_RD_REG_TXUC 00000000: 00000000 00000000 00000000 00000000
[   74.038491] UFS_DBG_RD_REG_TXUC 00000010: 00000000 00000000 00000000 00000000
[   74.046114] UFS_DBG_RD_REG_TXUC 00000020: 00000000 00000000 00000000 00000000
[   74.053731] UFS_DBG_RD_REG_TXUC 00000030: 00000000 00000000 00000000 00000000
[   74.061352] UFS_DBG_RD_REG_TXUC 00000040: 00000000 00000000 00000000 00000000
[   74.068964] UFS_DBG_RD_REG_TXUC 00000050: 00000000 00000000 00000000 00000000
[   74.076581] UFS_DBG_RD_REG_TXUC 00000060: 00000000 00000000 00000000 00000000
[   74.084200] UFS_DBG_RD_REG_TXUC 00000070: 00000000 00000000 00000000 00000000
[   74.091815] UFS_DBG_RD_REG_TXUC 00000080: 00000000 00000000 00000000 00000000
[   74.099434] UFS_DBG_RD_REG_TXUC 00000090: 00000000 00000000 00000000 00000000
[   74.107058] UFS_DBG_RD_REG_TXUC 000000a0: 00000000 00000000 00000000 00000000
[   74.114678] UFS_DBG_RD_REG_TXUC 000000b0: 00000000 00000000 00000000 00000000
[   74.122314] UFS_DBG_RD_REG_RXUC 00000000: 00000000 00000000 00000000 00000000
[   74.129917] UFS_DBG_RD_REG_RXUC 00000010: 00000000 00000000 00000000 00000000
[   74.137516] UFS_DBG_RD_REG_RXUC 00000020: 00000000 00000000 00000000 00000000
[   74.145111] UFS_DBG_RD_REG_RXUC 00000030: 00000000 00000000 00000000 00000000
[   74.152675] UFS_DBG_RD_REG_RXUC 00000040: 00000000 00000000 00000000 00000000
[   74.160249] UFS_DBG_RD_REG_RXUC 00000050: 00000000 00000000 00000000 00000000
[   74.167804] UFS_DBG_RD_REG_RXUC 00000060: 00000000 00000000 00000000
[   74.174570] UFS_DBG_RD_REG_DFC 00000000: 00000000 00000000 00000000 00000000
[   74.182031] UFS_DBG_RD_REG_DFC 00000010: 00000000 00000000 00000000 00000000
[   74.189485] UFS_DBG_RD_REG_DFC 00000020: 00000000 00000000 00000000 00000000
[   74.196932] UFS_DBG_RD_REG_DFC 00000030: 00000000 00000000 00000000 00000000
[   74.204354] UFS_DBG_RD_REG_DFC 00000040: 00000000 00000000 00000000
[   74.211041] UFS_DBG_RD_REG_TRLUT 00000000: 00000000 00000000 00000000 00000000
[   74.218658] UFS_DBG_RD_REG_TRLUT 00000010: 00000000 00000000 00000000 00000000
[   74.226282] UFS_DBG_RD_REG_TRLUT 00000020: 00000000 00000000 00000000 00000000
[   74.233902] UFS_DBG_RD_REG_TRLUT 00000030: 00000000 00000000 00000000 00000000
[   74.241524] UFS_DBG_RD_REG_TRLUT 00000040: 00000000 00000000 00000000 00000000
[   74.249144] UFS_DBG_RD_REG_TRLUT 00000050: 00000000 00000000 00000000 00000000
[   74.256750] UFS_DBG_RD_REG_TRLUT 00000060: 00000000 00000000 00000000 00000000
[   74.264351] UFS_DBG_RD_REG_TRLUT 00000070: 00000000 00000000 00000000 00000000
[   74.271956] UFS_DBG_RD_REG_TRLUT 00000080: 00000000 00000000
[   74.277993] UFS_DBG_RD_REG_TMRLUT 00000000: 00000000 00000000 00000000 00000000
[   74.285683] UFS_DBG_RD_REG_TMRLUT 00000010: 00000000 00000000 00000000 00000000
[   74.293381] UFS_DBG_RD_REG_TMRLUT 00000020: 00000000
[   74.298717] UFS_TEST_BUS 00000000
[   74.302578] TSTBUS_UAWM00000000: 00000000 00000000 00000000 00000000
[   74.309323] TSTBUS_UAWM00000010: 00000000 00000000 00000000 00000000
[   74.316074] TSTBUS_UAWM00000020: 00000000 00000000 00000000 00000000
[   74.322817] TSTBUS_UAWM00000030: 00000000 00000000 00000000 00000000
[   74.329552] TSTBUS_UAWM00000040: 00000000 00000000 00000000 00000000
[   74.336297] TSTBUS_UAWM00000050: 00000000 00000000 00000000 00000000
[   74.343040] TSTBUS_UAWM00000060: 00000000 00000000 00000000 00000000
[   74.349777] TSTBUS_UAWM00000070: 00000000 00000000 00000000 00000000
[   74.356691] TSTBUS_UARM00000000: 00000000 00000000 00000000 00000000
[   74.363428] TSTBUS_UARM00000010: 00000000 00000000 00000000 00000000
[   74.370158] TSTBUS_UARM00000020: 00000000 00000000 00000000 00000000
[   74.376885] TSTBUS_UARM00000030: 00000000 00000000 00000000 00000000
[   74.383614] TSTBUS_UARM00000040: 00000000 00000000 00000000 00000000
[   74.390342] TSTBUS_UARM00000050: 00000000 00000000 00000000 00000000
[   74.397072] TSTBUS_UARM00000060: 00000000 00000000 00000000 00000000
[   74.403789] TSTBUS_UARM00000070: 00000000 00000000 00000000 00000000
[   74.410680] TSTBUS_TXUC00000000: 00000000 00000000 00000000 00000000
[   74.417394] TSTBUS_TXUC00000010: 00000000 00000000 00000000 00000000
[   74.424114] TSTBUS_TXUC00000020: 00000000 00000000 00000000 00000000
[   74.430823] TSTBUS_TXUC00000030: 00000000 00000000 00000000 00000000
[   74.437523] TSTBUS_TXUC00000040: 00000000 00000000 00000000 00000000
[   74.444231] TSTBUS_TXUC00000050: 00000000 00000000 00000000 00000000
[   74.450888] TSTBUS_TXUC00000060: 00000000 00000000 00000000 00000000
[   74.457575] TSTBUS_TXUC00000070: 00000000 00000000 00000000 00000000
[   74.464431] TSTBUS_RXUC00000000: 00000000 00000000 00000000 00000000
[   74.471125] TSTBUS_RXUC00000010: 00000000 00000000 00000000 00000000
[   74.477812] TSTBUS_RXUC00000020: 00000000 00000000 00000000 00000000
[   74.484499] TSTBUS_RXUC00000030: 00000000 00000000 00000000 00000000
[   74.491197] TSTBUS_RXUC00000040: 00000000 00000000 00000000 00000000
[   74.497883] TSTBUS_RXUC00000050: 00000000 00000000 00000000 00000000
[   74.504573] TSTBUS_RXUC00000060: 00000000 00000000 00000000 00000000
[   74.511252] TSTBUS_RXUC00000070: 00000000 00000000 00000000 00000000
[   74.518092] TSTBUS_DFC00000000: 00000000 00000000 00000000 00000000
[   74.524695] TSTBUS_DFC00000010: 00000000 00000000 00000000 00000000
[   74.531288] TSTBUS_DFC00000020: 00000000 00000000 00000000 00000000
[   74.537890] TSTBUS_DFC00000030: 00000000 00000000 00000000 00000000
[   74.544488] TSTBUS_DFC00000040: 00000000 00000000 00000000 00000000
[   74.551090] TSTBUS_DFC00000050: 00000000 00000000 00000000 00000000
[   74.557689] TSTBUS_DFC00000060: 00000000 00000000 00000000 00000000
[   74.564289] TSTBUS_DFC00000070: 00000000 00000000 00000000 00000000
[   74.571070] TSTBUS_TRLUT00000000: 00000000 00000000 00000000 00000000
[   74.577834] TSTBUS_TRLUT00000010: 00000000 00000000 00000000 00000000
[   74.584598] TSTBUS_TRLUT00000020: 00000000 00000000 00000000 00000000
[   74.591371] TSTBUS_TRLUT00000030: 00000000 00000000 00000000 00000000
[   74.598140] TSTBUS_TRLUT00000040: 00000000 00000000 00000000 00000000
[   74.604908] TSTBUS_TRLUT00000050: 00000000 00000000 00000000 00000000
[   74.611676] TSTBUS_TRLUT00000060: 00000000 00000000 00000000 00000000
[   74.618450] TSTBUS_TRLUT00000070: 00000000 00000000 00000000 00000000
[   74.625407] TSTBUS_TMRLUT00000000: 00000000 00000000 00000000 00000000
[   74.632272] TSTBUS_TMRLUT00000010: 00000000 00000000 00000000 00000000
[   74.639131] TSTBUS_TMRLUT00000020: 00000000 00000000 00000000 00000000
[   74.645989] TSTBUS_TMRLUT00000030: 00000000 00000000 00000000 00000000
[   74.652838] TSTBUS_TMRLUT00000040: 00000000 00000000 00000000 00000000
[   74.659697] TSTBUS_TMRLUT00000050: 00000000 00000000 00000000 00000000
[   74.666556] TSTBUS_TMRLUT00000060: 00000000 00000000 00000000 00000000
[   74.673404] TSTBUS_TMRLUT00000070: 00000000 00000000 00000000 00000000
[   74.680453] TSTBUS_OCSC00000000: 00000000 00000000 00000000 00000000
[   74.687144] TSTBUS_OCSC00000010: 00000000 00000000 00000000 00000000
[   74.693832] TSTBUS_OCSC00000020: 00000000 00000000 00000000 00000000
[   74.700517] TSTBUS_OCSC00000030: 00000000 00000000 00000000 00000000
[   74.707203] TSTBUS_OCSC00000040: 00000000 00000000 00000000 00000000
[   74.713885] TSTBUS_OCSC00000050: 00000000 00000000 00000000 00000000
[   74.720576] TSTBUS_OCSC00000060: 00000000 00000000 00000000 00000000
[   74.727265] TSTBUS_OCSC00000070: 00000000 00000000 00000000 00000000
[   74.734127] TSTBUS_UTP_HCI00000000: 00000000 00000000 00000000 00000000
[   74.741083] TSTBUS_UTP_HCI00000010: 00000000 00000000 00000000 00000000
[   74.747996] TSTBUS_UTP_HCI00000020: 00000000 00000000 00000000 00000000
[   74.754942] TSTBUS_UTP_HCI00000030: 00000000 00000000 00000000 00000000
[   74.761887] TSTBUS_UTP_HCI00000040: 00000000 00000000 00000000 00000000
[   74.768824] TSTBUS_UTP_HCI00000050: 00000000 00000000 00000000 00000000
[   74.775771] TSTBUS_UTP_HCI00000060: 00000000 00000000 00000000 00000000
[   74.782701] TSTBUS_UTP_HCI00000070: 00000000 00000000 00000000 00000000
[   74.789822] TSTBUS_COMBINED00000000: 00000000 00000000 00000000 00000000
[   74.796859] TSTBUS_COMBINED00000010: 00000000 00000000 00000000 00000000
[   74.803895] TSTBUS_COMBINED00000020: 00000000 00000000 00000000 00000000
[   74.810919] TSTBUS_COMBINED00000030: 00000000 00000000 00000000 00000000
[   74.817947] TSTBUS_COMBINED00000040: 00000000 00000000 00000000 00000000
[   74.824973] TSTBUS_COMBINED00000050: 00000000 00000000 00000000 00000000
[   74.831992] TSTBUS_COMBINED00000060: 00000000 00000000 00000000 00000000
[   74.839024] TSTBUS_COMBINED00000070: 00000000 00000000 00000000 00000000
[   74.846246] TSTBUS_WRAPPER00000000: 00000000 00000000 00000000 00000000
[   74.853195] TSTBUS_WRAPPER00000010: 00000000 00000000 00000000 00000000
[   74.860145] TSTBUS_WRAPPER00000020: 00000000 00000000 00000000 00000000
[   74.867094] TSTBUS_WRAPPER00000030: 00000000 00000000 00000000 00000000
[   74.874046] TSTBUS_WRAPPER00000040: 00000000 00000000 00000000 00000000
[   74.880992] TSTBUS_WRAPPER00000050: 00000000 00000000 00000000 00000000
[   74.887936] TSTBUS_WRAPPER00000060: 00000000 00000000 00000000 00000000
[   74.894865] TSTBUS_WRAPPER00000070: 00000000 00000000 00000000 00000000
[   74.903257] TSTBUS_UNIPRO00000000: 00000000 00000000 00000000 00000000
[   74.910120] TSTBUS_UNIPRO00000010: 00000000 00000000 00000000 00000000
[   74.916978] TSTBUS_UNIPRO00000020: 00000000 00000000 00000000 00000000
[   74.923822] TSTBUS_UNIPRO00000030: 00000000 00000000 00000000 00000000
[   74.930678] TSTBUS_UNIPRO00000040: 00000000 00000000 00000000 00000000
[   74.937532] TSTBUS_UNIPRO00000050: 00000000 00000000 00000000 00000000
[   74.944361] TSTBUS_UNIPRO00000060: 00000000 00000000 00000000 00000000
[   74.951215] TSTBUS_UNIPRO00000070: 00000000 00000000 00000000 00000000
[   74.958068] TSTBUS_UNIPRO00000080: 00000000 00000000 00000000 00000000
[   74.964919] TSTBUS_UNIPRO00000090: 00000000 00000000 00000000 00000000
[   74.971774] TSTBUS_UNIPRO000000a0: 00000000 00000000 00000000 00000000
[   74.978625] TSTBUS_UNIPRO000000b0: 00000000 00000000 00000000 00000000
[   74.985472] TSTBUS_UNIPRO000000c0: 00000000 00000000 00000000 00000000
[   74.992324] TSTBUS_UNIPRO000000d0: 00000000 00000000 00000000 00000000
[   74.999179] TSTBUS_UNIPRO000000e0: 00000000 00000000 00000000 00000000
[   75.006034] TSTBUS_UNIPRO000000f0: 00000000 00000000 00000000 00000000
[   75.012879] TSTBUS_UNIPRO00000100: 00000000 00000000 00000000 00000000
[   75.019726] TSTBUS_UNIPRO00000110: 00000000 00000000 00000000 00000000
[   75.026551] TSTBUS_UNIPRO00000120: 00000000 00000000 00000000 00000000
[   75.033404] TSTBUS_UNIPRO00000130: 00000000 00000000 00000000 00000000
[   75.040259] TSTBUS_UNIPRO00000140: 00000000 00000000 00000000 00000000
[   75.047113] TSTBUS_UNIPRO00000150: 00000000 00000000 00000000 00000000
[   75.053967] TSTBUS_UNIPRO00000160: 00000000 00000000 00000000 00000000
[   75.060813] TSTBUS_UNIPRO00000170: 00000000 00000000 00000000 00000000
[   75.067661] TSTBUS_UNIPRO00000180: 00000000 00000000 00000000 00000000
[   75.074507] TSTBUS_UNIPRO00000190: 00000000 00000000 00000000 00000000
[   75.081348] TSTBUS_UNIPRO000001a0: 00000000 00000000 00000000 00000000
[   75.088194] TSTBUS_UNIPRO000001b0: 00000000 00000000 00000000 00000000
[   75.095041] TSTBUS_UNIPRO000001c0: 00000000 00000000 00000000 00000000
[   75.101878] TSTBUS_UNIPRO000001d0: 00000000 00000000 00000000 00000000
[   75.108695] TSTBUS_UNIPRO000001e0: 00000000 00000000 00000000 00000000
[   75.115534] TSTBUS_UNIPRO000001f0: 00000000 00000000 00000000 00000000
[   75.122372] TSTBUS_UNIPRO00000200: 00000000 00000000 00000000 00000000
[   75.129212] TSTBUS_UNIPRO00000210: 00000000 00000000 00000000 00000000
[   75.136053] TSTBUS_UNIPRO00000220: 00000000 00000000 00000000 00000000
[   75.142869] TSTBUS_UNIPRO00000230: 00000000 00000000 00000000 00000000
[   75.149707] TSTBUS_UNIPRO00000240: 00000000 00000000 00000000 00000000
[   75.156544] TSTBUS_UNIPRO00000250: 00000000 00000000 00000000 00000000
[   75.163377] TSTBUS_UNIPRO00000260: 00000000 00000000 00000000 00000000
[   75.170208] TSTBUS_UNIPRO00000270: 00000000 00000000 00000000 00000000
[   75.177041] TSTBUS_UNIPRO00000280: 00000000 00000000 00000000 00000000
[   75.183863] TSTBUS_UNIPRO00000290: 00000000 00000000 00000000 00000000
[   75.190681] TSTBUS_UNIPRO000002a0: 00000000 00000000 00000000 00000000
[   75.197500] TSTBUS_UNIPRO000002b0: 00000000 00000000 00000000 00000000
[   75.204317] TSTBUS_UNIPRO000002c0: 00000000 00000000 00000000 00000000
[   75.211140] TSTBUS_UNIPRO000002d0: 00000000 00000000 00000000 00000000
[   75.217957] TSTBUS_UNIPRO000002e0: 00000000 00000000 00000000 00000000
[   75.224777] TSTBUS_UNIPRO000002f0: 00000000 00000000 00000000 00000000
[   75.231594] TSTBUS_UNIPRO00000300: 00000000 00000000 00000000 00000000
[   75.238413] TSTBUS_UNIPRO00000310: 00000000 00000000 00000000 00000000
[   75.245230] TSTBUS_UNIPRO00000320: 00000000 00000000 00000000 00000000
[   75.252054] TSTBUS_UNIPRO00000330: 00000000 00000000 00000000 00000000
[   75.258872] TSTBUS_UNIPRO00000340: 00000000 00000000 00000000 00000000
[   75.265687] TSTBUS_UNIPRO00000350: 00000000 00000000 00000000 00000000
[   75.272506] TSTBUS_UNIPRO00000360: 00000000 00000000 00000000 00000000
[   75.279326] TSTBUS_UNIPRO00000370: 00000000 00000000 00000000 00000000
[   75.286144] TSTBUS_UNIPRO00000380: 00000000 00000000 00000000 00000000
[   75.292961] TSTBUS_UNIPRO00000390: 00000000 00000000 00000000 00000000
[   75.299778] TSTBUS_UNIPRO000003a0: 00000000 00000000 00000000 00000000
[   75.306598] TSTBUS_UNIPRO000003b0: 00000000 00000000 00000000 00000000
[   75.313415] TSTBUS_UNIPRO000003c0: 00000000 00000000 00000000 00000000
[   75.320235] TSTBUS_UNIPRO000003d0: 00000000 00000000 00000000 00000000
[   75.327055] TSTBUS_UNIPRO000003e0: 00000000 00000000 00000000 00000000
[   75.333872] TSTBUS_UNIPRO000003f0: 00000000 00000000 00000000 00000000
[   75.340690] ufshcd-qcom 1d84000.ufshc: UFS Host state=1
[   75.346204] ufshcd-qcom 1d84000.ufshc: 1 outstanding reqs, tasks=0x0
[   75.352855] ufshcd-qcom 1d84000.ufshc: saved_err=0x0, saved_uic_err=0x0
[   75.359771] ufshcd-qcom 1d84000.ufshc: Device power mode=1, UIC link state=1
[   75.367136] ufshcd-qcom 1d84000.ufshc: PM in progress=0, sys. suspended=0
[   75.374240] ufshcd-qcom 1d84000.ufshc: Auto BKOPS=0, Host self-block=0
[   75.381079] ufshcd-qcom 1d84000.ufshc: Clk gate=1
[   75.386079] ufshcd-qcom 1d84000.ufshc: last_hibern8_exit_tstamp at 0 us, 
hibern8_exit_cnt=9
[   75.394761] ufshcd-qcom 1d84000.ufshc: error handling flags=0x0, req. abort 
count=0
[   75.402750] ufshcd-qcom 1d84000.ufshc: hba->ufs_version=0x210, Host 
capabilities=0x1587031f, caps=0x134f
[   75.412582] ufshcd-qcom 1d84000.ufshc: quirks=0x400000, dev. quirks=0x140
[   75.419708] ufshcd-qcom 1d84000.ufshc: UFS dev info: SKhynix  H28S7Q302BMR 
  rev A202
[   75.428064] ufshcd-qcom 1d84000.ufshc: clk: core_clk, rate: 200000000
[   75.434844] ufshcd-qcom 1d84000.ufshc: clk: core_clk_unipro, rate: 150000000
[   75.442246] ufshcd-qcom 1d84000.ufshc: clk: ice_core_clk, rate: 300000000
[   75.449387] ufshcd-qcom 1d84000.ufshc: UPIU[10] - Transfer Request Descriptor 
phys@0xffffdf140
[   75.458365] UPIU TRD: 00000000: 15000000 00000000 0000000f 00000000
[   75.464990] UPIU TRD: 00000010: fffe7800 0000000f 00800080 01000002
[   75.471593] ufshcd-qcom 1d84000.ufshc: UPIU[10] - Request UPIU phys@0xffffe7800
[   75.479272] UPIU REQ: 00000000: 0a004001 00000000 00000000 00d00500
[   75.485908] UPIU REQ: 00000010: 23000028 0000d1de 0000005d 00000000
[   75.492551] ufshcd-qcom 1d84000.ufshc: UPIU[10] - Response UPIU phys@0xffffe7880
[   75.500336] UPIU RSP: 00000000: 00000000 00000000 00000000 00000000
[   75.506987] UPIU RSP: 00000010: 00000000 00000000 00000000 00000000
[   75.513634] UPIU RSP: 00000020: 00000000 00000000 00000000 00000000
[   75.520293] UPIU RSP: 00000030: 00000000
[   75.524580] ufshcd-qcom 1d84000.ufshc: UPIU[10] - PRDT - 2 entries 
phys@0xffffe7900
[   75.532727] UPIU PRDT: 00000000: fd180000 0000000f 00000000 0003ffff
[   75.539483] UPIU PRDT: 00000010: fd1c0000 0000000f 00000000 0001cfff
[   75.546321] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.556771] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.567188] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.577629] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.588077] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.598496] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.608933] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.619386] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.629805] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.640240] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.650654] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.661094] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.671535] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.681937] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.692373] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.702804] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.713217] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.723647] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.734054] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.744499] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.754942] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.765372] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.775806] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.786250] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.796657] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.807086] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.817520] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.827923] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.838352] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.848757] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.859180] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.869605] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.880006] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.890434] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.900859] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.911255] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.921677] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.932104] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.942505] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.952924] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.963339] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.973762] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.984182] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   75.994576] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.004987] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.015412] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.025809] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.036229] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.046637] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.057064] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.067484] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.077889] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.088308] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.098724] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.109116] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.119535] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.129942] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.140341] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.150749] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.161149] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.171567] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.181984] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.192380] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.202793] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.213207] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.223595] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.234009] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.244427] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.254821] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.265229] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.275617] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.286027] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.296443] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.306851] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.317273] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.327692] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.338077] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.348511] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.358897] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.369324] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.379732] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.390114] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.400532] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.410939] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.421329] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.431740] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.442120] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.452508] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.462922] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.473318] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.483728] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.494144] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.504538] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.514942] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.525356] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.535739] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.546145] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.556546] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.566952] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.577369] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
10 not pending in the device.
[   76.587714] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: failed with err -16
[   76.600145] ufshcd-qcom 1d84000.ufshc: OCS invalid from controller for tag 10
[   77.184700] systemd[1]: Queued start job for default target Graphical Interface.

...

[   81.665841] EXT4-fs (dm-0): mounting ext2 file system using the ext4 subsystem
[   81.712813] EXT4-fs (dm-0): warning: mounting unchecked fs, running e2fsck is 
recommended
[   81.762010] EXT4-fs (dm-0): mounted filesystem 
6f9374cf-6bf4-414c-96b3-c8202cab83f5 r/w without journal. Quota mode: none.

...

[  110.579081] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: Device abort task at tag 4
[  110.586555] sd 0:0:0:0: [sda] tag#4 CDB: opcode=0x28 28 00 00 28 23 00 00 00 
80 00
[  110.594350] host_regs: 00000000: 1587031f 00000000 00000210 00000000
[  110.601431] host_regs: 00000010: 01000000 00010217 00000c96 00000000
[  110.608510] host_regs: 00000020: 00000000 00071af5 00000000 00000000
[  110.615239] host_regs: 00000030: 0000010f 00000003 00000000 00000000
[  110.621791] host_regs: 00000040: 00000000 00000000 00000000 00000000
[  110.628347] host_regs: 00000050: fffdf000 0000000f 00000010 00000000
[  110.634870] host_regs: 00000060: 00000001 ffffffff 00000000 00000000
[  110.641376] host_regs: 00000070: fffde000 0000000f 00000000 00000000
[  110.647905] host_regs: 00000080: 00000001 00000000 00000000 00000000
[  110.654396] host_regs: 00000090: 00000002 15710000 00000000 00000226
[  110.660910] ufshcd-qcom 1d84000.ufshc: No record of pa_err
[  110.666510] ufshcd-qcom 1d84000.ufshc: No record of dl_err
[  110.672115] ufshcd-qcom 1d84000.ufshc: No record of nl_err
[  110.677681] ufshcd-qcom 1d84000.ufshc: No record of tl_err
[  110.683280] ufshcd-qcom 1d84000.ufshc: No record of dme_err
[  110.688962] ufshcd-qcom 1d84000.ufshc: No record of auto_hibern8_err
[  110.695404] ufshcd-qcom 1d84000.ufshc: No record of fatal_err
[  110.701267] ufshcd-qcom 1d84000.ufshc: No record of link_startup_fail
[  110.707824] ufshcd-qcom 1d84000.ufshc: No record of resume_fail
[  110.713837] ufshcd-qcom 1d84000.ufshc: No record of suspend_fail
[  110.719949] ufshcd-qcom 1d84000.ufshc: No record of wlun resume_fail
[  110.726423] ufshcd-qcom 1d84000.ufshc: No record of wlun suspend_fail
[  110.732967] ufshcd-qcom 1d84000.ufshc: dev_reset[0] = 0x0 at 3968894 us
[  110.739675] ufshcd-qcom 1d84000.ufshc: dev_reset[1] = 0x0 at 42401689 us
[  110.746451] ufshcd-qcom 1d84000.ufshc: dev_reset[2] = 0x0 at 76607759 us
[  110.753226] ufshcd-qcom 1d84000.ufshc: dev_reset: total cnt=3
[  110.759048] ufshcd-qcom 1d84000.ufshc: No record of host_reset
[  110.764963] ufshcd-qcom 1d84000.ufshc: task_abort[0] = 0xd at 38985404 us
[  110.771840] ufshcd-qcom 1d84000.ufshc: task_abort[1] = 0xa at 73221727 us
[  110.778702] ufshcd-qcom 1d84000.ufshc: task_abort[2] = 0x4 at 110594271 us
[  110.785653] ufshcd-qcom 1d84000.ufshc: task_abort: total cnt=3
[  110.791566] ufshcd-qcom 1d84000.ufshc: HW_H8_ENTER_CNT=0
[  110.796951] ufshcd-qcom 1d84000.ufshc: HW_H8_EXIT_CNT=0
[  110.802247] ufshcd-qcom 1d84000.ufshc: SW_H8_ENTER_CNT=0
[  110.807627] ufshcd-qcom 1d84000.ufshc: SW_H8_EXIT_CNT=0
[  110.812920] ufshcd-qcom 1d84000.ufshc: SW_AFTER_HW_H8_ENTER_CNT=0
[  110.819121] HCI Vendor Specific Registers 00000000: 000000c8 00000000 
00000000 00000000
[  110.827214] HCI Vendor Specific Registers 00000010: 00000000 00000000 
00000001 5c5c052c
[  110.835307] HCI Vendor Specific Registers 00000020: 3f0113ff 30010001 
00000000 1f1f1f1f
[  110.843399] HCI Vendor Specific Registers 00000030: 1f1f1f1f 001f1f1f 
0ff00000 0000003c
[  110.851577] UFS_UFS_DBG_RD_REG_OCSC 00000000: 00000000 00000000 00000000 00000000
[  110.859136] UFS_UFS_DBG_RD_REG_OCSC 00000010: 00000000 00000000 00000000 00000000
[  110.866699] UFS_UFS_DBG_RD_REG_OCSC 00000020: 00000000 00000000 00000000 00000000
[  110.874259] UFS_UFS_DBG_RD_REG_OCSC 00000030: 00000000 00000000 00000000 00000000
[  110.874261] UFS_UFS_DBG_RD_REG_OCSC 00000040: 00000000 00000000 00000000 00000000
[  110.874263] UFS_UFS_DBG_RD_REG_OCSC 00000050: 00000000 00000000 00000000 00000000
[  110.874264] UFS_UFS_DBG_RD_REG_OCSC 00000060: 00000000 00000000 00000000 00000000
[  110.874266] UFS_UFS_DBG_RD_REG_OCSC 00000070: 00000000 00000000 00000000 00000000
[  110.874268] UFS_UFS_DBG_RD_REG_OCSC 00000080: 00000000 00000000 00000000 00000000
[  110.874270] UFS_UFS_DBG_RD_REG_OCSC 00000090: 00000000 00000000 00000000 00000000
[  110.874271] UFS_UFS_DBG_RD_REG_OCSC 000000a0: 00000000 00000000 00000000 00000000
[  110.874342] UFS_UFS_DBG_RD_EDTL_RAM 00000000: 00000000 00000000 00000000 00000000
[  110.942409] UFS_UFS_DBG_RD_EDTL_RAM 00000010: 00000000 00000000 00000000 00000000
[  110.950035] UFS_UFS_DBG_RD_EDTL_RAM 00000020: 00000000 00000000 00000000 00000000
[  110.957625] UFS_UFS_DBG_RD_EDTL_RAM 00000030: 00000000 00000000 00000000 00000000
[  110.965213] UFS_UFS_DBG_RD_EDTL_RAM 00000040: 00000000 00000000 00000000 00000000
[  110.972790] UFS_UFS_DBG_RD_EDTL_RAM 00000050: 00000000 00000000 00000000 00000000
[  110.980405] UFS_UFS_DBG_RD_EDTL_RAM 00000060: 00000000 00000000 00000000 00000000
[  110.987993] UFS_UFS_DBG_RD_EDTL_RAM 00000070: 00000000 00000000 00000000 00000000
[  110.995846] UFS_UFS_DBG_RD_DESC_RAM 00000000: 00000000 00000000 00000000 00000000
[  111.003414] UFS_UFS_DBG_RD_DESC_RAM 00000010: 00000000 00000000 00000000 00000000
[  111.010989] UFS_UFS_DBG_RD_DESC_RAM 00000020: 00000000 00000000 00000000 00000000
[  111.018570] UFS_UFS_DBG_RD_DESC_RAM 00000030: 00000000 00000000 00000000 00000000
[  111.026142] UFS_UFS_DBG_RD_DESC_RAM 00000040: 00000000 00000000 00000000 00000000
[  111.033722] UFS_UFS_DBG_RD_DESC_RAM 00000050: 00000000 00000000 00000000 00000000
[  111.041295] UFS_UFS_DBG_RD_DESC_RAM 00000060: 00000000 00000000 00000000 00000000
[  111.048877] UFS_UFS_DBG_RD_DESC_RAM 00000070: 00000000 00000000 00000000 00000000
[  111.056446] UFS_UFS_DBG_RD_DESC_RAM 00000080: 00000000 00000000 00000000 00000000
[  111.064048] UFS_UFS_DBG_RD_DESC_RAM 00000090: 00000000 00000000 00000000 00000000
[  111.071615] UFS_UFS_DBG_RD_DESC_RAM 000000a0: 00000000 00000000 00000000 00000000
[  111.079216] UFS_UFS_DBG_RD_DESC_RAM 000000b0: 00000000 00000000 00000000 00000000
[  111.086813] UFS_UFS_DBG_RD_DESC_RAM 000000c0: 00000000 00000000 00000000 00000000
[  111.094384] UFS_UFS_DBG_RD_DESC_RAM 000000d0: 00000000 00000000 00000000 00000000
[  111.101954] UFS_UFS_DBG_RD_DESC_RAM 000000e0: 00000000 00000000 00000000 00000000
[  111.109543] UFS_UFS_DBG_RD_DESC_RAM 000000f0: 00000000 00000000 00000000 00000000
[  111.117131] UFS_UFS_DBG_RD_DESC_RAM 00000100: 00000000 00000000 00000000 00000000
[  111.124705] UFS_UFS_DBG_RD_DESC_RAM 00000110: 00000000 00000000 00000000 00000000
[  111.132270] UFS_UFS_DBG_RD_DESC_RAM 00000120: 00000000 00000000 00000000 00000000
[  111.139834] UFS_UFS_DBG_RD_DESC_RAM 00000130: 00000000 00000000 00000000 00000000
[  111.147415] UFS_UFS_DBG_RD_DESC_RAM 00000140: 00000000 00000000 00000000 00000000
[  111.154989] UFS_UFS_DBG_RD_DESC_RAM 00000150: 00000000 00000000 00000000 00000000
[  111.162572] UFS_UFS_DBG_RD_DESC_RAM 00000160: 00000000 00000000 00000000 00000000
[  111.170146] UFS_UFS_DBG_RD_DESC_RAM 00000170: 00000000 00000000 00000000 00000000
[  111.177723] UFS_UFS_DBG_RD_DESC_RAM 00000180: 00000000 00000000 00000000 00000000
[  111.185293] UFS_UFS_DBG_RD_DESC_RAM 00000190: 00000000 00000000 00000000 00000000
[  111.192861] UFS_UFS_DBG_RD_DESC_RAM 000001a0: 00000000 00000000 00000000 00000000
[  111.200442] UFS_UFS_DBG_RD_DESC_RAM 000001b0: 00000000 00000000 00000000 00000000
[  111.208005] UFS_UFS_DBG_RD_DESC_RAM 000001c0: 00000000 00000000 00000000 00000000
[  111.215586] UFS_UFS_DBG_RD_DESC_RAM 000001d0: 00000000 00000000 00000000 00000000
[  111.223159] UFS_UFS_DBG_RD_DESC_RAM 000001e0: 00000000 00000000 00000000 00000000
[  111.230744] UFS_UFS_DBG_RD_DESC_RAM 000001f0: 00000000 00000000 00000000 00000000
[  111.238444] UFS_UFS_DBG_RD_PRDT_RAM 00000000: 00000000 00000000 00000000 00000000
[  111.246034] UFS_UFS_DBG_RD_PRDT_RAM 00000010: 00000000 00000000 00000000 00000000
[  111.253601] UFS_UFS_DBG_RD_PRDT_RAM 00000020: 00000000 00000000 00000000 00000000
[  111.261190] UFS_UFS_DBG_RD_PRDT_RAM 00000030: 00000000 00000000 00000000 00000000
[  111.268759] UFS_UFS_DBG_RD_PRDT_RAM 00000040: 00000000 00000000 00000000 00000000
[  111.276358] UFS_UFS_DBG_RD_PRDT_RAM 00000050: 00000000 00000000 00000000 00000000
[  111.283927] UFS_UFS_DBG_RD_PRDT_RAM 00000060: 00000000 00000000 00000000 00000000
[  111.291488] UFS_UFS_DBG_RD_PRDT_RAM 00000070: 00000000 00000000 00000000 00000000
[  111.299076] UFS_UFS_DBG_RD_PRDT_RAM 00000080: 00000000 00000000 00000000 00000000
[  111.306639] UFS_UFS_DBG_RD_PRDT_RAM 00000090: 00000000 00000000 00000000 00000000
[  111.314228] UFS_UFS_DBG_RD_PRDT_RAM 000000a0: 00000000 00000000 00000000 00000000
[  111.321794] UFS_UFS_DBG_RD_PRDT_RAM 000000b0: 00000000 00000000 00000000 00000000
[  111.329385] UFS_UFS_DBG_RD_PRDT_RAM 000000c0: 00000000 00000000 00000000 00000000
[  111.336965] UFS_UFS_DBG_RD_PRDT_RAM 000000d0: 00000000 00000000 00000000 00000000
[  111.344554] UFS_UFS_DBG_RD_PRDT_RAM 000000e0: 00000000 00000000 00000000 00000000
[  111.352130] UFS_UFS_DBG_RD_PRDT_RAM 000000f0: 00000000 00000000 00000000 00000000
[  111.359733] UFS_DBG_RD_REG_UAWM 00000000: 00000000 00000000 00000000 00000000
[  111.366964] UFS_DBG_RD_REG_UARM 00000000: 00000000 00000000 00000000 00000000
[  111.374272] UFS_DBG_RD_REG_TXUC 00000000: 00000000 00000000 00000000 00000000
[  111.381515] UFS_DBG_RD_REG_TXUC 00000010: 00000000 00000000 00000000 00000000
[  111.388734] UFS_DBG_RD_REG_TXUC 00000020: 00000000 00000000 00000000 00000000
[  111.395971] UFS_DBG_RD_REG_TXUC 00000030: 00000000 00000000 00000000 00000000
[  111.403193] UFS_DBG_RD_REG_TXUC 00000040: 00000000 00000000 00000000 00000000
[  111.410425] UFS_DBG_RD_REG_TXUC 00000050: 00000000 00000000 00000000 00000000
[  111.417642] UFS_DBG_RD_REG_TXUC 00000060: 00000000 00000000 00000000 00000000
[  111.424878] UFS_DBG_RD_REG_TXUC 00000070: 00000000 00000000 00000000 00000000
[  111.432099] UFS_DBG_RD_REG_TXUC 00000080: 00000000 00000000 00000000 00000000
[  111.439320] UFS_DBG_RD_REG_TXUC 00000090: 00000000 00000000 00000000 00000000
[  111.446562] UFS_DBG_RD_REG_TXUC 000000a0: 00000000 00000000 00000000 00000000
[  111.453778] UFS_DBG_RD_REG_TXUC 000000b0: 00000000 00000000 00000000 00000000
[  111.461079] UFS_DBG_RD_REG_RXUC 00000000: 00000000 00000000 00000000 00000000
[  111.468314] UFS_DBG_RD_REG_RXUC 00000010: 00000000 00000000 00000000 00000000
[  111.475553] UFS_DBG_RD_REG_RXUC 00000020: 00000000 00000000 00000000 00000000
[  111.482772] UFS_DBG_RD_REG_RXUC 00000030: 00000000 00000000 00000000 00000000
[  111.490002] UFS_DBG_RD_REG_RXUC 00000040: 00000000 00000000 00000000 00000000
[  111.497224] UFS_DBG_RD_REG_RXUC 00000050: 00000000 00000000 00000000 00000000
[  111.504441] UFS_DBG_RD_REG_RXUC 00000060: 00000000 00000000 00000000
[  111.510931] UFS_DBG_RD_REG_DFC 00000000: 00000000 00000000 00000000 00000000
[  111.518074] UFS_DBG_RD_REG_DFC 00000010: 00000000 00000000 00000000 00000000
[  111.525220] UFS_DBG_RD_REG_DFC 00000020: 00000000 00000000 00000000 00000000
[  111.532349] UFS_DBG_RD_REG_DFC 00000030: 00000000 00000000 00000000 00000000
[  111.539497] UFS_DBG_RD_REG_DFC 00000040: 00000000 00000000 00000000
[  111.545912] UFS_DBG_RD_REG_TRLUT 00000000: 00000000 00000000 00000000 00000000
[  111.553214] UFS_DBG_RD_REG_TRLUT 00000010: 00000000 00000000 00000000 00000000
[  111.560535] UFS_DBG_RD_REG_TRLUT 00000020: 00000000 00000000 00000000 00000000
[  111.567840] UFS_DBG_RD_REG_TRLUT 00000030: 00000000 00000000 00000000 00000000
[  111.575161] UFS_DBG_RD_REG_TRLUT 00000040: 00000000 00000000 00000000 00000000
[  111.582469] UFS_DBG_RD_REG_TRLUT 00000050: 00000000 00000000 00000000 00000000
[  111.589789] UFS_DBG_RD_REG_TRLUT 00000060: 00000000 00000000 00000000 00000000
[  111.597114] UFS_DBG_RD_REG_TRLUT 00000070: 00000000 00000000 00000000 00000000
[  111.604421] UFS_DBG_RD_REG_TRLUT 00000080: 00000000 00000000
[  111.610191] UFS_DBG_RD_REG_TMRLUT 00000000: 00000000 00000000 00000000 00000000
[  111.617591] UFS_DBG_RD_REG_TMRLUT 00000010: 00000000 00000000 00000000 00000000
[  111.624994] UFS_DBG_RD_REG_TMRLUT 00000020: 00000000
[  111.630033] UFS_TEST_BUS 00000000
[  111.634010] TSTBUS_UAWM00000000: 00000000 00000000 00000000 00000000
[  111.640459] TSTBUS_UAWM00000010: 00000000 00000000 00000000 00000000
[  111.646893] TSTBUS_UAWM00000020: 00000000 00000000 00000000 00000000
[  111.653320] TSTBUS_UAWM00000030: 00000000 00000000 00000000 00000000
[  111.659770] TSTBUS_UAWM00000040: 00000000 00000000 00000000 00000000
[  111.666210] TSTBUS_UAWM00000050: 00000000 00000000 00000000 00000000
[  111.672659] TSTBUS_UAWM00000060: 00000000 00000000 00000000 00000000
[  111.679091] TSTBUS_UAWM00000070: 00000000 00000000 00000000 00000000
[  111.686116] TSTBUS_UARM00000000: 00000000 00000000 00000000 00000000
[  111.692564] TSTBUS_UARM00000010: 00000000 00000000 00000000 00000000
[  111.698998] TSTBUS_UARM00000020: 00000000 00000000 00000000 00000000
[  111.705446] TSTBUS_UARM00000030: 00000000 00000000 00000000 00000000
[  111.711875] TSTBUS_UARM00000040: 00000000 00000000 00000000 00000000
[  111.718300] TSTBUS_UARM00000050: 00000000 00000000 00000000 00000000
[  111.724780] TSTBUS_UARM00000060: 00000000 00000000 00000000 00000000
[  111.731225] TSTBUS_UARM00000070: 00000000 00000000 00000000 00000000
[  111.738273] TSTBUS_TXUC00000000: 00000000 00000000 00000000 00000000
[  111.744710] TSTBUS_TXUC00000010: 00000000 00000000 00000000 00000000
[  111.751138] TSTBUS_TXUC00000020: 00000000 00000000 00000000 00000000
[  111.757580] TSTBUS_TXUC00000030: 00000000 00000000 00000000 00000000
[  111.764017] TSTBUS_TXUC00000040: 00000000 00000000 00000000 00000000
[  111.770439] TSTBUS_TXUC00000050: 00000000 00000000 00000000 00000000
[  111.776894] TSTBUS_TXUC00000060: 00000000 00000000 00000000 00000000
[  111.783328] TSTBUS_TXUC00000070: 00000000 00000000 00000000 00000000
[  111.790374] TSTBUS_RXUC00000000: 00000000 00000000 00000000 00000000
[  111.796804] TSTBUS_RXUC00000010: 00000000 00000000 00000000 00000000
[  111.803245] TSTBUS_RXUC00000020: 00000000 00000000 00000000 00000000
[  111.809673] TSTBUS_RXUC00000030: 00000000 00000000 00000000 00000000
[  111.816098] TSTBUS_RXUC00000040: 00000000 00000000 00000000 00000000
[  111.822533] TSTBUS_RXUC00000050: 00000000 00000000 00000000 00000000
[  111.828960] TSTBUS_RXUC00000060: 00000000 00000000 00000000 00000000
[  111.835401] TSTBUS_RXUC00000070: 00000000 00000000 00000000 00000000
[  111.842416] TSTBUS_DFC00000000: 00000000 00000000 00000000 00000000
[  111.848751] TSTBUS_DFC00000010: 00000000 00000000 00000000 00000000
[  111.855106] TSTBUS_DFC00000020: 00000000 00000000 00000000 00000000
[  111.861456] TSTBUS_DFC00000030: 00000000 00000000 00000000 00000000
[  111.867793] TSTBUS_DFC00000040: 00000000 00000000 00000000 00000000
[  111.874166] TSTBUS_DFC00000050: 00000000 00000000 00000000 00000000
[  111.880522] TSTBUS_DFC00000060: 00000000 00000000 00000000 00000000
[  111.886891] TSTBUS_DFC00000070: 00000000 00000000 00000000 00000000
[  111.893814] TSTBUS_TRLUT00000000: 00000000 00000000 00000000 00000000
[  111.900326] TSTBUS_TRLUT00000010: 00000000 00000000 00000000 00000000
[  111.906836] TSTBUS_TRLUT00000020: 00000000 00000000 00000000 00000000
[  111.913374] TSTBUS_TRLUT00000030: 00000000 00000000 00000000 00000000
[  111.919891] TSTBUS_TRLUT00000040: 00000000 00000000 00000000 00000000
[  111.926419] TSTBUS_TRLUT00000050: 00000000 00000000 00000000 00000000
[  111.932942] TSTBUS_TRLUT00000060: 00000000 00000000 00000000 00000000
[  111.939484] TSTBUS_TRLUT00000070: 00000000 00000000 00000000 00000000
[  111.946624] TSTBUS_TMRLUT00000000: 00000000 00000000 00000000 00000000
[  111.953247] TSTBUS_TMRLUT00000010: 00000000 00000000 00000000 00000000
[  111.959855] TSTBUS_TMRLUT00000020: 00000000 00000000 00000000 00000000
[  111.966452] TSTBUS_TMRLUT00000030: 00000000 00000000 00000000 00000000
[  111.973081] TSTBUS_TMRLUT00000040: 00000000 00000000 00000000 00000000
[  111.979684] TSTBUS_TMRLUT00000050: 00000000 00000000 00000000 00000000
[  111.986306] TSTBUS_TMRLUT00000060: 00000000 00000000 00000000 00000000
[  111.992910] TSTBUS_TMRLUT00000070: 00000000 00000000 00000000 00000000
[  112.000103] TSTBUS_OCSC00000000: 00000000 00000000 00000000 00000000
[  112.006555] TSTBUS_OCSC00000010: 00000000 00000000 00000000 00000000
[  112.012992] TSTBUS_OCSC00000020: 00000000 00000000 00000000 00000000
[  112.019448] TSTBUS_OCSC00000030: 00000000 00000000 00000000 00000000
[  112.025878] TSTBUS_OCSC00000040: 00000000 00000000 00000000 00000000
[  112.032310] TSTBUS_OCSC00000050: 00000000 00000000 00000000 00000000
[  112.038765] TSTBUS_OCSC00000060: 00000000 00000000 00000000 00000000
[  112.045201] TSTBUS_OCSC00000070: 00000000 00000000 00000000 00000000
[  112.052262] TSTBUS_UTP_HCI00000000: 00000000 00000000 00000000 00000000
[  112.058955] TSTBUS_UTP_HCI00000010: 00000000 00000000 00000000 00000000
[  112.065640] TSTBUS_UTP_HCI00000020: 00000000 00000000 00000000 00000000
[  112.072354] TSTBUS_UTP_HCI00000030: 00000000 00000000 00000000 00000000
[  112.079051] TSTBUS_UTP_HCI00000040: 00000000 00000000 00000000 00000000
[  112.085773] TSTBUS_UTP_HCI00000050: 00000000 00000000 00000000 00000000
[  112.092472] TSTBUS_UTP_HCI00000060: 00000000 00000000 00000000 00000000
[  112.099158] TSTBUS_UTP_HCI00000070: 00000000 00000000 00000000 00000000
[  112.106475] TSTBUS_COMBINED00000000: 00000000 00000000 00000000 00000000
[  112.113256] TSTBUS_COMBINED00000010: 00000000 00000000 00000000 00000000
[  112.120057] TSTBUS_COMBINED00000020: 00000000 00000000 00000000 00000000
[  112.126840] TSTBUS_COMBINED00000030: 00000000 00000000 00000000 00000000
[  112.133615] TSTBUS_COMBINED00000040: 00000000 00000000 00000000 00000000
[  112.140426] TSTBUS_COMBINED00000050: 00000000 00000000 00000000 00000000
[  112.147212] TSTBUS_COMBINED00000060: 00000000 00000000 00000000 00000000
[  112.154000] TSTBUS_COMBINED00000070: 00000000 00000000 00000000 00000000
[  112.161369] TSTBUS_WRAPPER00000000: 00000000 00000000 00000000 00000000
[  112.168077] TSTBUS_WRAPPER00000010: 00000000 00000000 00000000 00000000
[  112.174776] TSTBUS_WRAPPER00000020: 00000000 00000000 00000000 00000000
[  112.181463] TSTBUS_WRAPPER00000030: 00000000 00000000 00000000 00000000
[  112.188170] TSTBUS_WRAPPER00000040: 00000000 00000000 00000000 00000000
[  112.194858] TSTBUS_WRAPPER00000050: 00000000 00000000 00000000 00000000
[  112.201557] TSTBUS_WRAPPER00000060: 00000000 00000000 00000000 00000000
[  112.208251] TSTBUS_WRAPPER00000070: 00000000 00000000 00000000 00000000
[  112.219664] TSTBUS_UNIPRO00000000: 00000000 00000000 00000000 00000000
[  112.226269] TSTBUS_UNIPRO00000010: 00000000 00000000 00000000 00000000
[  112.232892] TSTBUS_UNIPRO00000020: 00000000 00000000 00000000 00000000
[  112.239510] TSTBUS_UNIPRO00000030: 00000000 00000000 00000000 00000000
[  112.246110] TSTBUS_UNIPRO00000040: 00000000 00000000 00000000 00000000
[  112.252713] TSTBUS_UNIPRO00000050: 00000000 00000000 00000000 00000000
[  112.259308] TSTBUS_UNIPRO00000060: 00000000 00000000 00000000 00000000
[  112.265940] TSTBUS_UNIPRO00000070: 00000000 00000000 00000000 00000000
[  112.272547] TSTBUS_UNIPRO00000080: 00000000 00000000 00000000 00000000
[  112.279171] TSTBUS_UNIPRO00000090: 00000000 00000000 00000000 00000000
[  112.285778] TSTBUS_UNIPRO000000a0: 00000000 00000000 00000000 00000000
[  112.292379] TSTBUS_UNIPRO000000b0: 00000000 00000000 00000000 00000000
[  112.299002] TSTBUS_UNIPRO000000c0: 00000000 00000000 00000000 00000000
[  112.305611] TSTBUS_UNIPRO000000d0: 00000000 00000000 00000000 00000000
[  112.312218] TSTBUS_UNIPRO000000e0: 00000000 00000000 00000000 00000000
[  112.318846] TSTBUS_UNIPRO000000f0: 00000000 00000000 00000000 00000000
[  112.325455] TSTBUS_UNIPRO00000100: 00000000 00000000 00000000 00000000
[  112.332080] TSTBUS_UNIPRO00000110: 00000000 00000000 00000000 00000000
[  112.338690] TSTBUS_UNIPRO00000120: 00000000 00000000 00000000 00000000
[  112.345300] TSTBUS_UNIPRO00000130: 00000000 00000000 00000000 00000000
[  112.351930] TSTBUS_UNIPRO00000140: 00000000 00000000 00000000 00000000
[  112.358543] TSTBUS_UNIPRO00000150: 00000000 00000000 00000000 00000000
[  112.365169] TSTBUS_UNIPRO00000160: 00000000 00000000 00000000 00000000
[  112.371782] TSTBUS_UNIPRO00000170: 00000000 00000000 00000000 00000000
[  112.378384] TSTBUS_UNIPRO00000180: 00000000 00000000 00000000 00000000
[  112.385006] TSTBUS_UNIPRO00000190: 00000000 00000000 00000000 00000000
[  112.391609] TSTBUS_UNIPRO000001a0: 00000000 00000000 00000000 00000000
[  112.398237] TSTBUS_UNIPRO000001b0: 00000000 00000000 00000000 00000000
[  112.404839] TSTBUS_UNIPRO000001c0: 00000000 00000000 00000000 00000000
[  112.411447] TSTBUS_UNIPRO000001d0: 00000000 00000000 00000000 00000000
[  112.418076] TSTBUS_UNIPRO000001e0: 00000000 00000000 00000000 00000000
[  112.424688] TSTBUS_UNIPRO000001f0: 00000000 00000000 00000000 00000000
[  112.431314] TSTBUS_UNIPRO00000200: 00000000 00000000 00000000 00000000
[  112.437926] TSTBUS_UNIPRO00000210: 00000000 00000000 00000000 00000000
[  112.444533] TSTBUS_UNIPRO00000220: 00000000 00000000 00000000 00000000
[  112.451153] TSTBUS_UNIPRO00000230: 00000000 00000000 00000000 00000000
[  112.457757] TSTBUS_UNIPRO00000240: 00000000 00000000 00000000 00000000
[  112.464382] TSTBUS_UNIPRO00000250: 00000000 00000000 00000000 00000000
[  112.470986] TSTBUS_UNIPRO00000260: 00000000 00000000 00000000 00000000
[  112.477592] TSTBUS_UNIPRO00000270: 00000000 00000000 00000000 00000000
[  112.484217] TSTBUS_UNIPRO00000280: 00000000 00000000 00000000 00000000
[  112.490821] TSTBUS_UNIPRO00000290: 00000000 00000000 00000000 00000000
[  112.497442] TSTBUS_UNIPRO000002a0: 00000000 00000000 00000000 00000000
[  112.504045] TSTBUS_UNIPRO000002b0: 00000000 00000000 00000000 00000000
[  112.510652] TSTBUS_UNIPRO000002c0: 00000000 00000000 00000000 00000000
[  112.517279] TSTBUS_UNIPRO000002d0: 00000000 00000000 00000000 00000000
[  112.523879] TSTBUS_UNIPRO000002e0: 00000000 00000000 00000000 00000000
[  112.530498] TSTBUS_UNIPRO000002f0: 00000000 00000000 00000000 00000000
[  112.537109] TSTBUS_UNIPRO00000300: 00000000 00000000 00000000 00000000
[  112.543713] TSTBUS_UNIPRO00000310: 00000000 00000000 00000000 00000000
[  112.550336] TSTBUS_UNIPRO00000320: 00000000 00000000 00000000 00000000
[  112.556951] TSTBUS_UNIPRO00000330: 00000000 00000000 00000000 00000000
[  112.563572] TSTBUS_UNIPRO00000340: 00000000 00000000 00000000 00000000
[  112.570180] TSTBUS_UNIPRO00000350: 00000000 00000000 00000000 00000000
[  112.576786] TSTBUS_UNIPRO00000360: 00000000 00000000 00000000 00000000
[  112.583410] TSTBUS_UNIPRO00000370: 00000000 00000000 00000000 00000000
[  112.590017] TSTBUS_UNIPRO00000380: 00000000 00000000 00000000 00000000
[  112.596636] TSTBUS_UNIPRO00000390: 00000000 00000000 00000000 00000000
[  112.603244] TSTBUS_UNIPRO000003a0: 00000000 00000000 00000000 00000000
[  112.609869] TSTBUS_UNIPRO000003b0: 00000000 00000000 00000000 00000000
[  112.616475] TSTBUS_UNIPRO000003c0: 00000000 00000000 00000000 00000000
[  112.623076] TSTBUS_UNIPRO000003d0: 00000000 00000000 00000000 00000000
[  112.629709] TSTBUS_UNIPRO000003e0: 00000000 00000000 00000000 00000000
[  112.636320] TSTBUS_UNIPRO000003f0: 00000000 00000000 00000000 00000000
[  112.642950] ufshcd-qcom 1d84000.ufshc: UFS Host state=1
[  112.648256] ufshcd-qcom 1d84000.ufshc: 1 outstanding reqs, tasks=0x0
[  112.654688] ufshcd-qcom 1d84000.ufshc: saved_err=0x0, saved_uic_err=0x0
[  112.661405] ufshcd-qcom 1d84000.ufshc: Device power mode=1, UIC link state=1
[  112.668543] ufshcd-qcom 1d84000.ufshc: PM in progress=0, sys. suspended=0
[  112.675407] ufshcd-qcom 1d84000.ufshc: Auto BKOPS=0, Host self-block=0
[  112.682047] ufshcd-qcom 1d84000.ufshc: Clk gate=1
[  112.686819] ufshcd-qcom 1d84000.ufshc: last_hibern8_exit_tstamp at 0 us, 
hibern8_exit_cnt=18
[  112.695375] ufshcd-qcom 1d84000.ufshc: error handling flags=0x0, req. abort 
count=0
[  112.703113] ufshcd-qcom 1d84000.ufshc: hba->ufs_version=0x210, Host 
capabilities=0x1587031f, caps=0x134f
[  112.712716] ufshcd-qcom 1d84000.ufshc: quirks=0x400000, dev. quirks=0x140
[  112.719593] ufshcd-qcom 1d84000.ufshc: UFS dev info: SKhynix  H28S7Q302BMR 
  rev A202
[  112.727706] ufshcd-qcom 1d84000.ufshc: clk: core_clk, rate: 200000000
[  112.734232] ufshcd-qcom 1d84000.ufshc: clk: core_clk_unipro, rate: 150000000
[  112.741365] ufshcd-qcom 1d84000.ufshc: clk: ice_core_clk, rate: 300000000
[  112.748287] ufshcd-qcom 1d84000.ufshc: UPIU[4] - Transfer Request Descriptor 
phys@0xffffdf080
[  112.756917] UPIU TRD: 00000000: 15000000 00000000 0000000f 00000000
[  112.763289] UPIU TRD: 00000010: fffe3000 0000000f 00800080 01000002
[  112.769642] ufshcd-qcom 1d84000.ufshc: UPIU[4] - Request UPIU phys@0xffffe3000
[  112.776969] UPIU REQ: 00000000: 04004001 00000000 00000000 00000800
[  112.783319] UPIU REQ: 00000010: 28000028 00000023 00000080 00000000
[  112.789659] ufshcd-qcom 1d84000.ufshc: UPIU[4] - Response UPIU phys@0xffffe3080
[  112.797074] UPIU RSP: 00000000: 00000000 00000000 00000000 00000000
[  112.803418] UPIU RSP: 00000010: 00000000 00000000 00000000 00000000
[  112.809785] UPIU RSP: 00000020: 00000000 00000000 00000000 00000000
[  112.816137] UPIU RSP: 00000030: 00000000
[  112.820119] ufshcd-qcom 1d84000.ufshc: UPIU[4] - PRDT - 2 entries 
phys@0xffffe3100
[  112.827883] UPIU PRDT: 00000000: fb780000 0000000f 00000000 0003ffff
[  112.834325] UPIU PRDT: 00000010: fb7c0000 0000000f 00000000 0003ffff
[  112.840874] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.850911] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.860987] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.871017] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.881087] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.891119] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.901111] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.911159] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.921239] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.931311] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.941418] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.951698] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.961758] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.971822] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.981860] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  112.991942] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.001982] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.012081] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.022121] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.032103] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.042111] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.052217] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.062255] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.072300] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.082337] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.092370] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.102390] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.112426] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.122477] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.132509] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.142539] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.152567] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.162596] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.172634] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.182651] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.192689] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.202703] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.212728] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.222766] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.232803] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.242836] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.252867] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.262916] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.272959] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.283003] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.293070] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.303104] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.313115] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.323108] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.333095] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.343103] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.353098] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.363109] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.373106] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.383096] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.393103] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.403107] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.413108] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.423106] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.433096] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.443103] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.453097] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.463100] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.473102] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.483098] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.493108] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.503099] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.513102] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.523105] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.533101] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.543119] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.553100] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.563106] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.573104] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.583101] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.593107] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.603102] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.613101] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.623110] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.633096] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.643112] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.653155] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.663100] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.673120] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.683098] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.693107] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.703110] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.713208] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.723300] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.733325] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.743362] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.753389] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.763420] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.773470] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.783491] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.793540] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.803564] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.813594] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.823634] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.833656] ufshcd-qcom 1d84000.ufshc: ufshcd_try_to_abort_task: cmd with tag 
4 not pending in the device.
[  113.843615] ufshcd-qcom 1d84000.ufshc: ufshcd_abort: failed with err -16
[  113.860149] ufshcd-qcom 1d84000.ufshc: OCS invalid from controller for tag 4

^ permalink raw reply

* [syzbot] [dri?] linux-next test error: WARNING in drm_mode_config_validate
From: syzbot @ 2026-07-19 17:11 UTC (permalink / raw)
  To: airlied, dri-devel, hamohammed.sa, linux-kernel, linux-next,
	louis.chauvet, maarten.lankhorst, melissa.srw, mripard, sfr,
	simona, syzkaller-bugs, tzimmermann

Hello,

syzbot found the following issue on:

HEAD commit:    0718283ab28b Add linux-next specific files for 20260717
git tree:       linux-next
console output: https://syzkaller.appspot.com/x/log.txt?x=16351c32580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=2f6d4fd2982f9977
dashboard link: https://syzkaller.appspot.com/bug?extid=6245cb95ae707991bffa
compiler:       Debian clang version 22.1.8 (++20260613092233+e80beda6e255-1~exp1~20260613092250.77), Debian LLD 22.1.8

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/83fbf4236ddb/disk-0718283a.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/53d15a8f3db7/vmlinux-0718283a.xz
kernel image: https://storage.googleapis.com/syzbot-assets/d826bc7a4a27/bzImage-0718283a.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+6245cb95ae707991bffa@syzkaller.appspotmail.com

smbdirect: subsystem loaded
Key type cifs.spnego registered
Key type cifs.idmap registered
ntfs3: Enabled Linux POSIX ACLs support
ntfs3: Read-only LZX/Xpress compression included
jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
romfs: ROMFS MTD (C) 2007 Red Hat, Inc.
QNX4 filesystem 0.2.3 registered.
qnx6: QNX6 filesystem 1.0.0 registered.
fuse: init (API version 7.45)
orangefs_debugfs_init: called with debug mask: :none: :0:
orangefs_init: module version upstream loaded
JFS: nTxBlock = 8192, nTxLock = 65536
SGI XFS with ACLs, security attributes, realtime, scrub, repair, quota, no debug enabled
9p: Installing v9fs 9p2000 file system support
NILFS version 2 loaded
befs: version: 0.9.3
ocfs2: Registered cluster interface o2cb
ocfs2: Registered cluster interface user
OCFS2 User DLM kernel interface loaded
gfs2: GFS2 installed
ceph: loaded (mds proto 32)
NET: Registered PF_ALG protocol family
async_tx: api initialized (async)
Key type asymmetric registered
Asymmetric key parser 'x509' registered
Asymmetric key parser 'pkcs8' registered
Key type pkcs7_test registered
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 239)
io scheduler mq-deadline registered
io scheduler kyber registered
io scheduler bfq registered
raid6: skipped pq benchmark and selected avx2x4
input: Power Button as /devices/platform/LNXPWRBN:00/input/input0
ACPI: button: Power Button [PWRF]
input: Sleep Button as /devices/platform/LNXSLPBN:00/input/input1
ACPI: button: Sleep Button [SLPF]
ioatdma: Intel(R) QuickData Technology Driver 5.00
N_HDLC line discipline registered with maxframe=4096
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
00:02: ttyS0 I/O:0x3f8 (irq = 4, base_baud = 115200) is a 16550A
00:03: ttyS1 I/O:0x2f8 (irq = 3, base_baud = 115200) is a 16550A
00:04: ttyS2 I/O:0x3e8 (irq = 6, base_baud = 115200) is a 16550A
00:05: ttyS3 I/O:0x2e8 (irq = 7, base_baud = 115200) is a 16550A
Non-volatile memory driver v1.3
usbcore: registered new interface driver xillyusb
ACPI: bus type drm_connector registered
[drm] Initialized vgem 1.0.0 for vgem on minor 0
------------[ cut here ]------------
[PLANE:35:plane-0] pixel format with alpha exposed but blend mode not setup
WARNING: drivers/gpu/drm/drm_mode_config.c:873 at validate_blend_mode_for_alpha_formats drivers/gpu/drm/drm_mode_config.c:872 [inline], CPU#0: swapper/0/1
WARNING: drivers/gpu/drm/drm_mode_config.c:873 at drm_mode_config_validate+0x1c6a/0x1e60 drivers/gpu/drm/drm_mode_config.c:938, CPU#0: swapper/0/1
Modules linked in:
CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/25/2026
RIP: 0010:validate_blend_mode_for_alpha_formats drivers/gpu/drm/drm_mode_config.c:872 [inline]
RIP: 0010:drm_mode_config_validate+0x1cab/0x1e60 drivers/gpu/drm/drm_mode_config.c:938
Code: 0f 85 ae 00 00 00 4d 8d 77 10 8b 6d 00 4c 89 f0 48 c1 e8 03 80 3c 18 00 74 08 4c 89 f7 e8 4d 08 a9 fc 49 8b 16 4c 89 ef 89 ee <67> 48 0f b9 3a eb 05 e8 39 fe 3a fc 49 bd 00 00 00 00 00 fc ff df
RSP: 0000:ffffc90000067810 EFLAGS: 00010246
RAX: 1ffff11004d63408 RBX: dffffc0000000000 RCX: ffff88801daeddc0
RDX: ffff8880268100e0 RSI: 0000000000000023 RDI: ffffffff9063bf50
RBP: 0000000000000023 R08: ffff888023a4e3ab R09: 1ffff11004749c75
R10: dffffc0000000000 R11: ffffed1004749c76 R12: dffffc0000000000
R13: ffffffff9063bf50 R14: ffff888026b1a040 R15: ffff888026b1a030
FS:  0000000000000000(0000) GS:ffff888124f37000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff88823ffff000 CR3: 000000000e946000 CR4: 00000000003526f0
Call Trace:
 <TASK>
 drm_dev_register+0x7c/0xd80 drivers/gpu/drm/drm_drv.c:1075
 vkms_create+0x40d/0x4f0 drivers/gpu/drm/vkms/vkms_drv.c:208
 vkms_init+0x57/0x80 drivers/gpu/drm/vkms/vkms_drv.c:240
 do_one_initcall+0x250/0x870 init/main.c:1357
 do_initcall_level+0x10a/0x1a0 init/main.c:1419
 do_initcalls+0x59/0xa0 init/main.c:1435
 kernel_init_freeable+0x29d/0x3e0 init/main.c:1670
 kernel_init+0x22/0x1d0 init/main.c:1560
 ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
 </TASK>
----------------
Code disassembly (best guess):
   0:	0f 85 ae 00 00 00    	jne    0xb4
   6:	4d 8d 77 10          	lea    0x10(%r15),%r14
   a:	8b 6d 00             	mov    0x0(%rbp),%ebp
   d:	4c 89 f0             	mov    %r14,%rax
  10:	48 c1 e8 03          	shr    $0x3,%rax
  14:	80 3c 18 00          	cmpb   $0x0,(%rax,%rbx,1)
  18:	74 08                	je     0x22
  1a:	4c 89 f7             	mov    %r14,%rdi
  1d:	e8 4d 08 a9 fc       	call   0xfca9086f
  22:	49 8b 16             	mov    (%r14),%rdx
  25:	4c 89 ef             	mov    %r13,%rdi
  28:	89 ee                	mov    %ebp,%esi
* 2a:	67 48 0f b9 3a       	ud1    (%edx),%rdi <-- trapping instruction
  2f:	eb 05                	jmp    0x36
  31:	e8 39 fe 3a fc       	call   0xfc3afe6f
  36:	49 bd 00 00 00 00 00 	movabs $0xdffffc0000000000,%r13
  3d:	fc ff df


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

^ permalink raw reply

* [STATUS] next/master - 0718283ab28bc3907e10b61a6b4be6fefa1cbb2f
From: KernelCI bot @ 2026-07-19  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/0718283ab28bc3907e10b61a6b4be6fefa1cbb2f/

giturl: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
branch: master
commit hash: 0718283ab28bc3907e10b61a6b4be6fefa1cbb2f
origin: maestro
test start time: 2026-07-18 00:17:56.916000+00:00

Builds:	   72 ✅    2 ❌    0 ⚠️
Boots: 	  151 ✅    3 ❌    0 ⚠️
Tests: 	29068 ✅ 2552 ❌ 6788 ⚠️

### POSSIBLE REGRESSIONS
    
Hardware: qcs9100-ride
  > 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:6a5c18ae3427a5b0fbfba8de
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_22000000_displayport-controller_22154000
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d9
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_22000000_displayport-controller_2215c000
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d8
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_22000000_phy_220c2a00
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d7
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_22000000_phy_220c5a00
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d6
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_displayport-controller_af54000
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d2
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_displayport-controller_af5c000
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8d0
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_phy_aec2a00
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8ca
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_phy_aec5a00
      last run: https://d.kernelci.org/test/maestro:6a5c18ae3427a5b0fbfba8c9
      history:  > ✅  > ✅  > ❌  
            
Hardware: sm8750-mtp
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.breakpoints
      last run: https://d.kernelci.org/test/maestro:6a5ad1f83427a5b0fbf60007
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.breakpoints.breakpoints_step_after_suspend_test
      last run: https://d.kernelci.org/test/maestro:6a5ad4593427a5b0fbf65d01
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a5ad6bb3427a5b0fbf67820
      history:  > ✅  > ✅  > ❌  
            
Hardware: x1e80100
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.capabilities
      last run: https://d.kernelci.org/test/maestro:6a5ad2233427a5b0fbf60127
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a5adcb63427a5b0fbf69014
      history:  > ✅  > ✅  > ❌  
            
Hardware: imx8mp-verdin-nonwifi-dahlia
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_bus_30800000_i2c_30a50000_eeprom_50
      last run: https://d.kernelci.org/test/maestro:6a5ad53e3427a5b0fbf66e37
      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:6a5ad7d83427a5b0fbf67de9
      history:  > ✅  > ❌  
            
Hardware: qcs615-ride
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.breakpoints
      last run: https://d.kernelci.org/test/maestro:6a5ad1f13427a5b0fbf5ffe2
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.breakpoints.breakpoints_step_after_suspend_test
      last run: https://d.kernelci.org/test/maestro:6a5bdb473427a5b0fbf9ed71
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a5be4073427a5b0fbfa1a21
      history:  > ✅  > ✅  > ❌  
            
Hardware: lemans-evk
  > 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:6a5b3cee3427a5b0fbf7fc65
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.timers
      last run: https://d.kernelci.org/test/maestro:6a5ad2c73427a5b0fbf6065e
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.timers.timers_posix_timers
      last run: https://d.kernelci.org/test/maestro:6a5b415e3427a5b0fbf7feed
      history:  > ✅  > ✅  > ❌  
            
Hardware: qcs6490-rb3gen2
  > 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:6a5ad6183427a5b0fbf675bf
      history:  > ✅  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_iommu_3da0000
      last run: https://d.kernelci.org/test/maestro:6a5ad6183427a5b0fbf67579
      history:  > ✅  > ✅  > ❌  
            
Hardware: qcs8300-ride
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.arm64
      last run: https://d.kernelci.org/test/maestro:6a5ad1d33427a5b0fbf5ff32
      history:  > ✅  > ❌  > ❌  
            
      - kselftest.arm64.arm64_hwcap_sigbus_LSE2
      last run: https://d.kernelci.org/test/maestro:6a5ad2fb3427a5b0fbf6383a
      history:  > ✅  > ❌  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_crypto_1dfa000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685da
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_display-controller_ae01000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685d1
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_displayport-controller_af54000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685cf
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_display-subsystem_ae00000_dsi_ae94000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685cd
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_ethernet_23040000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685c7
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_geniqup_ac0000_i2c_a80000_i2c-mux_70_i2c_0_bridge_58
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf685a4
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_pci_1c00000_pcie_0_wifi_0
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf68589
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_pci_1c10000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf68588
      history:  > ✅  > ❌  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_usb_a600000
      last run: https://d.kernelci.org/test/maestro:6a5ad99b3427a5b0fbf6852c
      history:  > ✅  > ❌  
            


### FIXED REGRESSIONS
    
Hardware: cd8180-orion-o6
  > Config: defconfig+netdev+nfs-root-boot+kselftest
    - Architecture/compiler: arm64/gcc-15
      - kselftest.arm64
      last run: https://d.kernelci.org/test/maestro:6a5acf3d3427a5b0fbf5e75f
      history:  > ❌  > ✅  > ✅  > ✅  
            
      - ltp
      last run: https://d.kernelci.org/test/maestro:6a5acf3c3427a5b0fbf5e756
      history:  > ❌  > ✅  > ✅  > ✅  
            
Hardware: imx8mp-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.alsa
      last run: https://d.kernelci.org/test/maestro:6a5ad1a73427a5b0fbf5fd92
      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:6a5ad0b43427a5b0fbf5f68b
      history:  > ❌  > ❌  > ❌  > ❌  > ✅  
            
      - rt-tests.rt-migrate-test.rt-migrate-test
      last run: https://d.kernelci.org/test/maestro:6a5ad1ac3427a5b0fbf5fe2e
      history:  > ❌  > ❌  > ❌  > ❌  > ✅  
            
Hardware: lemans-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest-devices-probe-ramdisk
      last run: https://d.kernelci.org/test/maestro:6a5ad31c3427a5b0fbf64154
      history:  > ❌  > ❌  > ❌  > ✅  
            


### UNSTABLE TESTS
    
Hardware: imx8mp-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt.dt_test_unprobed_devices_sh_sound-wm8960
      last run: https://d.kernelci.org/test/maestro:6a5ad5053427a5b0fbf66c0a
      history:  > ✅  > ✅  > ❌  > ✅  > ✅  
            
Hardware: lemans-evk
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_geniqup_8c0000_i2c_890000_eeprom_50_nvmem-layout
      last run: https://d.kernelci.org/test/maestro:6a5b3ced3427a5b0fbf7fc3f
      history:  > ⚠️  > ⚠️  > ✅  
            
      - kselftest.dt.dt_test_unprobed_devices_sh_soc_0_usb_a800000_hub_2
      last run: https://d.kernelci.org/test/maestro:6a5b3ced3427a5b0fbf7fb99
      history:  > ⚠️  > ✅  > ✅  
            
Hardware: qcs6490-rb3gen2
  > Config: defconfig+lab-setup+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.breakpoints
      last run: https://d.kernelci.org/test/maestro:6a5ad1f23427a5b0fbf5ffe9
      history:  > ❌  > ✅  > ❌  
            
Hardware: qcs8300-ride
  > Config: defconfig+arm64-chromebook+kselftest
    - Architecture/compiler: arm64/gcc-14
      - kselftest.efivars
      last run: https://d.kernelci.org/test/maestro:6a5ad3e83427a5b0fbf6570a
      history:  > ✅  > ❌  > ✅  
            
      - kselftest.gpio
      last run: https://d.kernelci.org/test/maestro:6a5ad4113427a5b0fbf659d9
      history:  > ❌  > ✅  > ❌  
            



This branch has 1 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: warnings from validate_blend_mode_for_alpha_formats() in next-20260715
From: Bert Karwatzki @ 2026-07-18 12:22 UTC (permalink / raw)
  To: Leandro Ribeiro, Alex Deucher, Wentland, Harry, Leo (Sunpeng) Li,
	Alex Hung
  Cc: Alex Deucher, linux-kernel, amd-gfx, linux-next, Jesse Zhang,
	Amber Lin, Mario Limonciello, spasswolf
In-Reply-To: <cd96faf15c338157e49a858f9e4f94acba4c28ab.camel@web.de>

Am Samstag, dem 18.07.2026 um 11:21 +0200 schrieb Bert Karwatzki:
> Am Freitag, dem 17.07.2026 um 19:54 -0300 schrieb Leandro Ribeiro:
> > 
> > On 7/17/26 11:55 AM, Alex Deucher wrote:
> > > + Some display folks
> > > 
> > > On Fri, Jul 17, 2026 at 9:04 AM Bert Karwatzki <spasswolf@web.de> wrote:
> > > > 
> > > > commit 860e748bddcc ("drm: ensure blend mode supported if pixel format with alpha exposed")
> > > > introduces validate_blend_mode_for_alpha_formats() which prints warnings for amdpgu as
> > > > amdgpu only set blend_mode_property for planes of type DRM_PLANE_TYPE_OVERLAY. I tried to fix
> > > > this by removing he (plane->type == DRM_PLANE_TYPE_OVERLAY) check in amdgpu_dm_plane_init():
> > > > 
> > > >         printk(KERN_INFO "%s: plane=%px plane->type=0x%x plane_cap=%px\n", __func__, plane, plane->type, plane_cap);
> > > >         if (plane_cap)
> > > >                 printk(KERN_INFO "%s: per_pixel_alpha =%u\n", __func__, plane_cap->per_pixel_alpha);
> > > >         if (plane_cap && plane_cap->per_pixel_alpha) {
> > > >                 unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) |
> > > >                                           BIT(DRM_MODE_BLEND_PREMULTI) |
> > > >                                           BIT(DRM_MODE_BLEND_COVERAGE);
> > > > 
> > > >                 printk(KERN_INFO "%s: creating alpha and blend mode properties for plane %px\n", __func__, plane);
> > > >                 drm_plane_create_alpha_property(plane);
> > > >                 drm_plane_create_blend_mode_property(plane, blend_caps);
> > > >         }
> > > > 
> > > > But this does not completely silence the warnings becuase for planes of type DRM_PLANE_TYPE_CURSOR plane_cap is NULL.
> > > > Is this a problem that should be fixed in amdgpu or is should validate_blend_mode_for_alpha_formats() only be called
> > > > for planes of certain types?
> > 
> > IMO validate_blend_mode_for_alpha_formats() should be called for all
> > types of planes. I can't think of anything special about a cursor plane
> > that would justify it being allowed to expose formats with alpha but not
> > the blend mode property.
> > 
> > I'm not familiar with the AMD codebase to suggest the best fix, but the
> > driver would need some way to know whether cursor planes are exposing
> > formats with alpha.
> > 
> > > > 
> > > > Bert Karwatzki
> > > > 
> 
> So I looked through the code and found that the cursor planes are initiallized by 
> amdgpu_dm_crtc_init() which calls amdgpu_dm_plane_init() with plane_cap = NULL.
> So I was able to silence the warning by introducing a dummy_plane_cap in amdgpu_dm_crtc_init()
> and dropping the plane->type check in amdgpu_dm_plane_init().
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> index d63688b9d93d..7fb118444d14 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
> @@ -731,13 +731,17 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
>         struct drm_plane *cursor_plane;
>         bool has_degamma;
>         int res = -ENOMEM;
> +       struct dc_plane_cap dummy_cap = {
> +               .type = DC_PLANE_TYPE_DCE_RGB,
> +               .per_pixel_alpha = 1,
> +       };
>  
>         cursor_plane = kzalloc_obj(*cursor_plane);
>         if (!cursor_plane)
>                 goto fail;
>  
>         cursor_plane->type = DRM_PLANE_TYPE_CURSOR;
> -       res = amdgpu_dm_plane_init(dm, cursor_plane, 0, NULL);
> +       res = amdgpu_dm_plane_init(dm, cursor_plane, 0, &dummy_cap);
>  
>         acrtc = kzalloc_obj(struct amdgpu_crtc);
>         if (!acrtc)
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index 26f35434a92f..20785fb451dd 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> @@ -1932,8 +1932,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
>         if (res)
>                 return res;
>  
> -       if (plane->type == DRM_PLANE_TYPE_OVERLAY &&
> -           plane_cap && plane_cap->per_pixel_alpha) {
> +       if (plane_cap && plane_cap->per_pixel_alpha) {
>                 unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) |
>                                           BIT(DRM_MODE_BLEND_PREMULTI) |
>                                           BIT(DRM_MODE_BLEND_COVERAGE);
> 
> One can probably also omit the .type field in the dummy_cap struct and
> also does not have to check if plance_cap is NULL anymore.
> 
> Bert Karwatzki

This might seem problematic as this unconditionally sets per_pixel_alpha = true for cursor planes,
but currently the only pixel format used for cursor planes in amdgpu is DRM_FORMAT_ARGB8888:

$ grep -B 1 -A 3 'cursor_formats\[\]' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c

static const u32 cursor_formats[] = {
	DRM_FORMAT_ARGB8888
};

Bert Karwatzki

^ permalink raw reply

* Re: [PATCH] USB: phy: fsl-usb: fix missing static keywords
From: Manuel Ebner @ 2026-07-18 11:30 UTC (permalink / raw)
  To: Johan Hovold, Greg Kroah-Hartman
  Cc: linux-next, linux-usb, linuxppc-dev, linux-kernel, stable,
	Mark Brown
In-Reply-To: <20260717154957.1853976-1-johan@kernel.org>

On Fri, 2026-07-17 at 17:49 +0200, Johan Hovold wrote:
> A recent change enabling compile testing of a Freescale dual-role
> controller indirectly enabled a USB PHY driver to be built. That driver
> in turn is missing a bunch of static keywords which results in warnings
> like:
> 
> drivers/usb/phy/phy-fsl-usb.c:105:5: error: no previous prototype for 'write_ulpi' [-
> Werror=missing-prototypes]
>   105 | int write_ulpi(u8 addr, u8 data)
>         |     ^~~~~~~~~~
> 
> which consequently breaks -Werror builds.
> 
> Add the missing static keywords.
> 
> Fixes: 0807c500a1a6 ("USB: add Freescale USB OTG Transceiver driver")
> Cc: stable@vger.kernel.org	# 3.0

Add linux-next@vger.kernel.org

> Reported-by: Mark Brown <broonie@kernel.org>
> Link: https://lore.kernel.org/r/4f9f5ff9-8eaa-4bd5-9331-37119f78e13f@sirena.org.uk
> Signed-off-by: Johan Hovold <johan@kernel.org>

Reviewed-by: Manuel Ebner <manuelebner@mailbox.org>

Thanks
 Manuel

> ---
>  drivers/usb/phy/phy-fsl-usb.c | 52 +++++++++++++++++------------------
>  drivers/usb/phy/phy-fsl-usb.h |  6 ++--
>  2 files changed, 29 insertions(+), 29 deletions(-)
> 
> [...]

^ permalink raw reply

* Re: linux-next: manual merge of the kvm tree with the tip tree
From: Juergen Gross @ 2026-07-18  9:34 UTC (permalink / raw)
  To: Mark Brown, Paolo Bonzini, KVM
  Cc: Borislav Petkov, Ingo Molnar, Linux Kernel Mailing List,
	Linux Next Mailing List, Sean Christopherson
In-Reply-To: <alpUTu5ttdBcjZCP@sirena.org.uk>


[-- Attachment #1.1.1: Type: text/plain, Size: 1365 bytes --]

On 17.07.26 18:11, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the kvm tree got a conflict in:
> 
>    arch/x86/kvm/x86.c
> 
> between commits:
> 
>    3eaa50e1e255e ("x86/cpu: Hide and rename static_cpu_has()")
>    1620ddc0dcefc ("KVM/x86: Stop using 32-bit MSR interfaces")
> 
> from the tip tree and commit:
> 
>    7a26830801584 ("KVM: x86: Move the bulk of MSR specific code from x86.c to msrs.{c,h}")
> 
> from the kvm 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 --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
> index c230b18d87e38..764cda8045a17 100644
> --- a/arch/x86/kvm/msrs.c
> +++ b/arch/x86/kvm/msrs.c
> @@ -2579,9 +2579,9 @@ static void kvm_probe_feature_msr(u32 msr_index)
>   
>   static void kvm_probe_msr_to_save(u32 msr_index)
>   {
> -	u32 dummy[2];
> +	u64 dummy;
>   
> -	if (rdmsr_safe(msr_index, &dummy[0], &dummy[1]))
> +	if (rdmsrq_safe(msr_index, &dummy))
>   		return;
>   
>   	/*

The fix looks fine.


Juergen

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3743 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply

* Re: warnings from validate_blend_mode_for_alpha_formats() in next-20260715
From: Bert Karwatzki @ 2026-07-18  9:21 UTC (permalink / raw)
  To: Leandro Ribeiro, Alex Deucher, Wentland, Harry, Leo (Sunpeng) Li,
	Alex Hung
  Cc: Alex Deucher, linux-kernel, amd-gfx, linux-next, Jesse Zhang,
	Amber Lin, Mario Limonciello, spasswolf
In-Reply-To: <45d341e6-d438-4e34-bba2-f6d23dbcf7fb@collabora.com>

Am Freitag, dem 17.07.2026 um 19:54 -0300 schrieb Leandro Ribeiro:
> 
> On 7/17/26 11:55 AM, Alex Deucher wrote:
> > + Some display folks
> > 
> > On Fri, Jul 17, 2026 at 9:04 AM Bert Karwatzki <spasswolf@web.de> wrote:
> > > 
> > > commit 860e748bddcc ("drm: ensure blend mode supported if pixel format with alpha exposed")
> > > introduces validate_blend_mode_for_alpha_formats() which prints warnings for amdpgu as
> > > amdgpu only set blend_mode_property for planes of type DRM_PLANE_TYPE_OVERLAY. I tried to fix
> > > this by removing he (plane->type == DRM_PLANE_TYPE_OVERLAY) check in amdgpu_dm_plane_init():
> > > 
> > >         printk(KERN_INFO "%s: plane=%px plane->type=0x%x plane_cap=%px\n", __func__, plane, plane->type, plane_cap);
> > >         if (plane_cap)
> > >                 printk(KERN_INFO "%s: per_pixel_alpha =%u\n", __func__, plane_cap->per_pixel_alpha);
> > >         if (plane_cap && plane_cap->per_pixel_alpha) {
> > >                 unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) |
> > >                                           BIT(DRM_MODE_BLEND_PREMULTI) |
> > >                                           BIT(DRM_MODE_BLEND_COVERAGE);
> > > 
> > >                 printk(KERN_INFO "%s: creating alpha and blend mode properties for plane %px\n", __func__, plane);
> > >                 drm_plane_create_alpha_property(plane);
> > >                 drm_plane_create_blend_mode_property(plane, blend_caps);
> > >         }
> > > 
> > > But this does not completely silence the warnings becuase for planes of type DRM_PLANE_TYPE_CURSOR plane_cap is NULL.
> > > Is this a problem that should be fixed in amdgpu or is should validate_blend_mode_for_alpha_formats() only be called
> > > for planes of certain types?
> 
> IMO validate_blend_mode_for_alpha_formats() should be called for all
> types of planes. I can't think of anything special about a cursor plane
> that would justify it being allowed to expose formats with alpha but not
> the blend mode property.
> 
> I'm not familiar with the AMD codebase to suggest the best fix, but the
> driver would need some way to know whether cursor planes are exposing
> formats with alpha.
> 
> > > 
> > > Bert Karwatzki
> > > 

So I looked through the code and found that the cursor planes are initiallized by 
amdgpu_dm_crtc_init() which calls amdgpu_dm_plane_init() with plane_cap = NULL.
So I was able to silence the warning by introducing a dummy_plane_cap in amdgpu_dm_crtc_init()
and dropping the plane->type check in amdgpu_dm_plane_init().

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
index d63688b9d93d..7fb118444d14 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
@@ -731,13 +731,17 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
        struct drm_plane *cursor_plane;
        bool has_degamma;
        int res = -ENOMEM;
+       struct dc_plane_cap dummy_cap = {
+               .type = DC_PLANE_TYPE_DCE_RGB,
+               .per_pixel_alpha = 1,
+       };
 
        cursor_plane = kzalloc_obj(*cursor_plane);
        if (!cursor_plane)
                goto fail;
 
        cursor_plane->type = DRM_PLANE_TYPE_CURSOR;
-       res = amdgpu_dm_plane_init(dm, cursor_plane, 0, NULL);
+       res = amdgpu_dm_plane_init(dm, cursor_plane, 0, &dummy_cap);
 
        acrtc = kzalloc_obj(struct amdgpu_crtc);
        if (!acrtc)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index 26f35434a92f..20785fb451dd 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
@@ -1932,8 +1932,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,
        if (res)
                return res;
 
-       if (plane->type == DRM_PLANE_TYPE_OVERLAY &&
-           plane_cap && plane_cap->per_pixel_alpha) {
+       if (plane_cap && plane_cap->per_pixel_alpha) {
                unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) |
                                          BIT(DRM_MODE_BLEND_PREMULTI) |
                                          BIT(DRM_MODE_BLEND_COVERAGE);

One can probably also omit the .type field in the dummy_cap struct and
also does not have to check if plance_cap is NULL anymore.

Bert Karwatzki

^ permalink raw reply related

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

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

Hi all,

Changes since 20260716:

The qcom tree acquired a build failure, I used the version from
next-20260716 instead.

The bluetooth tree acquired a conflict with the origin tree.

The drm-next tree acquired multiple conflicts with the drm-fixes tree.

The kvm tree acquired a conflict with the tip tree.

The tty tree lost it's build failure.

The scsi-mkp tree lost it's build failure.

The nvmem tree acquired a conflict with the iio tree.

Some interaction between gpio-brgl, kunit and most likely a third tree
triggered a KUnit regression.

Non-merge commits (relative to Linus' tree): 6698
 6416 files changed, 277182 insertions(+), 104787 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


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