All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Byungchul Park <byungchul.park@lge.com>
Cc: torvalds@linux-foundation.org, damien.lemoal@opensource.wdc.com,
	linux-ide@vger.kernel.org, adilger.kernel@dilger.ca,
	linux-ext4@vger.kernel.org, mingo@redhat.com,
	linux-kernel@vger.kernel.org, peterz@infradead.org,
	will@kernel.org, tglx@linutronix.de, rostedt@goodmis.org,
	joel@joelfernandes.org, sashal@kernel.org,
	daniel.vetter@ffwll.ch, chris@chris-wilson.co.uk,
	duyuyang@gmail.com, johannes.berg@intel.com, tj@kernel.org,
	tytso@mit.edu, willy@infradead.org, david@fromorbit.com,
	amir73il@gmail.com, bfields@fieldses.org,
	gregkh@linuxfoundation.org, kernel-team@lge.com,
	linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org,
	minchan@kernel.org, hannes@cmpxchg.org, vdavydov.dev@gmail.com,
	sj@kernel.org, jglisse@redhat.com, dennis@kernel.org,
	cl@linux.com, penberg@kernel.org, rientjes@google.com,
	vbabka@suse.cz, ngupta@vflare.org, linux-block@vger.kernel.org,
	paolo.valente@linaro.org, josef@toxicpanda.com,
	linux-fsdevel@vger.kernel.org, viro@zeniv.linux.org.uk,
	jack@suse.cz, jack@suse.com, jlayton@kernel.org,
	dan.j.williams@intel.com, hch@infradead.org, djwong@kernel.org,
	dri-devel@lists.freedesktop.org, airlied@linux.ie,
	rodrigosiqueiramelo@gmail.com, melissa.srw@gmail.com,
	hamohammed.sa@gmail.com
Subject: Re: [PATCH RFC v6 07/21] dept: Apply Dept to seqlock
Date: Sat, 21 May 2022 14:25:35 +0900	[thread overview]
Message-ID: <Yoh3zzMPkCo2OP39@hyeyoo> (raw)
In-Reply-To: <1651652269-15342-8-git-send-email-byungchul.park@lge.com>

Hello I got new report from dept, related to seqlock.
I applied dept 1.20 series on v5.18-rc7.

Below is what DEPT reported.
I think this is bogus because reader of p->alloc_lock cannot block
its writer. Or please kindly tell me if I'm missing something ;)

Thanks.

[    8.032674] ===================================================
[    8.032676] DEPT: Circular dependency has been detected.
[    8.032677] 5.18.0-rc7-dept+ #10 Tainted: G            E
[    8.032677] ---------------------------------------------------
[    8.032678] summary
[    8.032678] ---------------------------------------------------
[    8.032679] *** DEADLOCK ***

[    8.032679] context A
[    8.032679]     [S] __raw_spin_lock_irqsave(&host->lock:0)
[    8.032681]     [W] __seqprop_spinlock_wait(&p->alloc_lock:0)
[    8.032681]     [E] spin_unlock(&host->lock:0)

[    8.032682] context B
[    8.032682]     [S] __raw_spin_lock(&dentry->d_lock:0)
[    8.032683]     [W] __raw_spin_lock(&host->lock:0)
[    8.032684]     [E] spin_unlock(&dentry->d_lock:0)

[    8.032684] context C
[    8.032685]     [S] __raw_spin_lock(&p->alloc_lock:0)
[    8.032685]     [W] __raw_spin_lock(&dentry->d_lock:0)
[    8.032685]     [E] spin_unlock(&p->alloc_lock:0)

[    8.032686] [S]: start of the event context
[    8.032686] [W]: the wait blocked
[    8.032687] [E]: the event not reachable
[    8.032687] ---------------------------------------------------
[    8.032687] context A's detail
[    8.032688] ---------------------------------------------------
[    8.032688] context A
[    8.032688]     [S] __raw_spin_lock_irqsave(&host->lock:0)
[    8.032689]     [W] __seqprop_spinlock_wait(&p->alloc_lock:0)
[    8.032689]     [E] spin_unlock(&host->lock:0)

[    8.032690] [S] __raw_spin_lock_irqsave(&host->lock:0):
[    8.032690] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:2734 drivers/ata/libata-scsi.c:4017) 
[    8.032694] stacktrace:
[    8.032694] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:2734 drivers/ata/libata-scsi.c:4017) 
[    8.032696] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032697] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032700] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 
[    8.032701] __blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:313) 
[    8.032702] blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:339) 
[    8.032703] __blk_mq_run_hw_queue (./include/linux/rcupdate.h:723 block/blk-mq.c:1974) 
[    8.032704] __blk_mq_delay_run_hw_queue (block/blk-mq.c:2052) 
[    8.032705] blk_mq_run_hw_queue (block/blk-mq.c:2103) 
[    8.032706] blk_mq_sched_insert_requests (./include/linux/rcupdate.h:692 ./include/linux/percpu-refcount.h:330 ./include/linux/percpu-refcount.h:351 block/blk-mq-sched.c:495) 
[    8.032707] blk_mq_flush_plug_list (block/blk-mq.c:2640) 
[    8.032708] __blk_flush_plug (block/blk-core.c:1247) 
[    8.032709] blk_finish_plug (block/blk-core.c:1265 block/blk-core.c:1261) 
[    8.032710] read_pages (mm/readahead.c:181) 
[    8.032712] page_cache_ra_unbounded (./include/linux/fs.h:815 mm/readahead.c:262) 
[    8.032713] page_cache_ra_order (mm/readahead.c:547) 

[    8.032714] [W] __seqprop_spinlock_wait(&p->alloc_lock:0):
[    8.032714] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032717] stacktrace:
[    8.032717] dept_wait (./arch/x86/include/asm/current.h:15 kernel/dependency/dept.c:227 kernel/dependency/dept.c:1013 kernel/dependency/dept.c:1057 kernel/dependency/dept.c:2216) 
[    8.032719] ___slab_alloc (./include/linux/seqlock.h:326 ./include/linux/cpuset.h:151 mm/slub.c:2223 mm/slub.c:2266 mm/slub.c:3000) 
[    8.032720] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032721] kmem_cache_alloc (mm/slub.c:3183 mm/slub.c:3225 mm/slub.c:3232 mm/slub.c:3242) 
[    8.032722] alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032724] alloc_iova_fast (drivers/iommu/iova.c:455) 
[    8.032725] iommu_dma_alloc_iova (drivers/iommu/dma-iommu.c:628) 
[    8.032726] iommu_dma_map_sg (drivers/iommu/dma-iommu.c:1201) 
[    8.032727] __dma_map_sg_attrs (kernel/dma/mapping.c:195) 
[    8.032729] dma_map_sg_attrs (kernel/dma/mapping.c:232) 
[    8.032730] ata_qc_issue (drivers/ata/libata-core.c:4530 drivers/ata/libata-core.c:4876) 
[    8.032731] __ata_scsi_queuecmd (drivers/ata/libata-scsi.c:1710 drivers/ata/libata-scsi.c:3974) 
[    8.032732] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:4019) 
[    8.032734] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032734] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032735] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 

[    8.032736] [E] spin_unlock(&host->lock:0):
[    8.032737] (N/A)
[    8.032737] ---------------------------------------------------
[    8.032738] context B's detail
[    8.032738] ---------------------------------------------------
[    8.032738] context B
[    8.032738]     [S] __raw_spin_lock(&dentry->d_lock:0)
[    8.032739]     [W] __raw_spin_lock(&host->lock:0)
[    8.032740]     [E] spin_unlock(&dentry->d_lock:0)

[    8.032740] [S] __raw_spin_lock(&dentry->d_lock:0):
[    8.032741] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032743] stacktrace:
[    8.032743] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032744] path_get (fs/namei.c:546) 
[    8.032746] do_dentry_open (fs/open.c:778) 
[    8.032747] vfs_open (fs/open.c:959) 
[    8.032748] path_openat (fs/namei.c:3583 fs/namei.c:3602) 
[    8.032749] do_filp_open (fs/namei.c:3636) 
[    8.032750] do_sys_openat2 (fs/open.c:1213) 
[    8.032751] __x64_sys_openat (fs/open.c:1240) 
[    8.032752] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032754] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032756] [W] __raw_spin_lock(&host->lock:0):
[    8.032756] ahci_single_level_irq_intr (drivers/ata/libahci.c:1970) libahci
[    8.032759] stacktrace:
[    8.032760] ahci_single_level_irq_intr (drivers/ata/libahci.c:1970) libahci
[    8.032761] __handle_irq_event_percpu (kernel/irq/handle.c:158) 
[    8.032763] handle_irq_event (kernel/irq/handle.c:195 kernel/irq/handle.c:210) 
[    8.032763] handle_edge_irq (kernel/irq/chip.c:819) 
[    8.032764] __common_interrupt (./include/asm-generic/irq_regs.h:28 (discriminator 22) arch/x86/kernel/irq.c:263 (discriminator 22)) 
[    8.032766] common_interrupt (arch/x86/kernel/irq.c:240 (discriminator 14)) 
[    8.032768] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[    8.032769] lock_release (kernel/locking/lockdep.c:5665) 
[    8.032771] _raw_spin_unlock (./include/linux/spinlock_api_smp.h:141 kernel/locking/spinlock.c:186) 
[    8.032772] lockref_get (lib/lockref.c:55) 
[    8.032772] path_get (fs/namei.c:546) 
[    8.032774] do_dentry_open (fs/open.c:778) 
[    8.032774] vfs_open (fs/open.c:959) 
[    8.032775] path_openat (fs/namei.c:3583 fs/namei.c:3602) 
[    8.032776] do_filp_open (fs/namei.c:3636) 
[    8.032777] do_sys_openat2 (fs/open.c:1213) 

[    8.032778] [E] spin_unlock(&dentry->d_lock:0):
[    8.032778] (N/A)
[    8.032779] ---------------------------------------------------
[    8.032779] context C's detail
[    8.032779] ---------------------------------------------------
[    8.032780] context C
[    8.032780]     [S] __raw_spin_lock(&p->alloc_lock:0)
[    8.032780]     [W] __raw_spin_lock(&dentry->d_lock:0)
[    8.032781]     [E] spin_unlock(&p->alloc_lock:0)

[    8.032781] [S] __raw_spin_lock(&p->alloc_lock:0):
[    8.032782] proc_root_link (fs/proc/base.c:177 fs/proc/base.c:208) 
[    8.032784] stacktrace:
[    8.032784] proc_root_link (fs/proc/base.c:177 fs/proc/base.c:208) 
[    8.032784] proc_pid_get_link.part.0 (fs/proc/base.c:1756) 
[    8.032785] proc_pid_get_link (fs/proc/base.c:1762) 
[    8.032786] step_into (fs/namei.c:1819 fs/namei.c:1876) 
[    8.032787] walk_component (fs/namei.c:2027) 
[    8.032788] path_lookupat (fs/namei.c:2475 fs/namei.c:2499) 
[    8.032789] filename_lookup (fs/namei.c:2528) 
[    8.032790] vfs_statx (fs/stat.c:229) 
[    8.032791] vfs_fstatat (fs/stat.c:256) 
[    8.032792] __do_sys_newfstatat (fs/stat.c:426) 
[    8.032793] __x64_sys_newfstatat (fs/stat.c:419) 
[    8.032793] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032794] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032796] [W] __raw_spin_lock(&dentry->d_lock:0):
[    8.032796] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032797] stacktrace:
[    8.032797] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032798] path_get (fs/namei.c:546) 
[    8.032799] proc_root_link (./include/linux/spinlock.h:410 ./include/linux/fs_struct.h:32 fs/proc/base.c:178 fs/proc/base.c:208) 
[    8.032800] proc_pid_get_link.part.0 (fs/proc/base.c:1756) 
[    8.032801] proc_pid_get_link (fs/proc/base.c:1762) 
[    8.032801] step_into (fs/namei.c:1819 fs/namei.c:1876) 
[    8.032802] walk_component (fs/namei.c:2027) 
[    8.032803] path_lookupat (fs/namei.c:2475 fs/namei.c:2499) 
[    8.032805] filename_lookup (fs/namei.c:2528) 
[    8.032805] vfs_statx (fs/stat.c:229) 
[    8.032806] vfs_fstatat (fs/stat.c:256) 
[    8.032807] __do_sys_newfstatat (fs/stat.c:426) 
[    8.032808] __x64_sys_newfstatat (fs/stat.c:419) 
[    8.032808] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032809] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032810] [E] spin_unlock(&p->alloc_lock:0):
[    8.032811] (N/A)
[    8.032811] ---------------------------------------------------
[    8.032811] information that might be helpful
[    8.032812] ---------------------------------------------------
[    8.032812] CPU: 4 PID: 534 Comm: systemd-tmpfile Tainted: G            E     5.18.0-rc7-dept+ #10
[    8.032814] Hardware name: ASUS System Product Name/TUF GAMING B550-PLUS (WI-FI), BIOS 1401 12/03/2020
[    8.032814] Call Trace:
[    8.032815]  <TASK>
[    8.032816] dump_stack_lvl (lib/dump_stack.c:107 (discriminator 4)) 
[    8.032819] dump_stack (lib/dump_stack.c:114) 
[    8.032820] print_circle.cold (./arch/x86/include/asm/atomic.h:108 ./include/linux/atomic/atomic-instrumented.h:258 kernel/dependency/dept.c:143 kernel/dependency/dept.c:776) 
[    8.032822] ? print_circle (kernel/dependency/dept.c:1107) 
[    8.032824] cb_check_dl (kernel/dependency/dept.c:1133) 
[    8.032825] bfs (kernel/dependency/dept.c:874) 
[    8.032826] add_dep (kernel/dependency/dept.c:1457) 
[    8.032828] add_wait (kernel/dependency/dept.c:1505) 
[    8.032829] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032831] __dept_wait (kernel/dependency/dept.c:2156 (discriminator 2)) 
[    8.032832] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032833] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032834] dept_wait (./arch/x86/include/asm/current.h:15 kernel/dependency/dept.c:227 kernel/dependency/dept.c:1013 kernel/dependency/dept.c:1057 kernel/dependency/dept.c:2216) 
[    8.032836] ___slab_alloc (./include/linux/seqlock.h:326 ./include/linux/cpuset.h:151 mm/slub.c:2223 mm/slub.c:2266 mm/slub.c:3000) 
[    8.032837] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032839] ? arch_stack_walk (arch/x86/kernel/stacktrace.c:27 (discriminator 1)) 
[    8.032841] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032842] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032844] kmem_cache_alloc (mm/slub.c:3183 mm/slub.c:3225 mm/slub.c:3232 mm/slub.c:3242) 
[    8.032845] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032846] alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032847] ? dept_ecxt_exit (kernel/dependency/dept.c:2506 (discriminator 1)) 
[    8.032849] alloc_iova_fast (drivers/iommu/iova.c:455) 
[    8.032851] iommu_dma_alloc_iova (drivers/iommu/dma-iommu.c:628) 
[    8.032852] iommu_dma_map_sg (drivers/iommu/dma-iommu.c:1201) 
[    8.032854] ? ata_scsi_mode_select_xlat (drivers/ata/libata-scsi.c:1503) 
[    8.032855] __dma_map_sg_attrs (kernel/dma/mapping.c:195) 
[    8.032856] dma_map_sg_attrs (kernel/dma/mapping.c:232) 
[    8.032858] ata_qc_issue (drivers/ata/libata-core.c:4530 drivers/ata/libata-core.c:4876) 
[    8.032859] __ata_scsi_queuecmd (drivers/ata/libata-scsi.c:1710 drivers/ata/libata-scsi.c:3974) 
[    8.032861] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:4019) 
[    8.032862] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032864] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032866] ? sbitmap_get (lib/sbitmap.c:179 lib/sbitmap.c:206 lib/sbitmap.c:231) 
[    8.032869] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 
[    8.032871] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032872] __blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:313) 
[    8.032874] blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:339) 
[    8.032875] __blk_mq_run_hw_queue (./include/linux/rcupdate.h:723 block/blk-mq.c:1974) 
[    8.032876] __blk_mq_delay_run_hw_queue (block/blk-mq.c:2052) 
[    8.032877] blk_mq_run_hw_queue (block/blk-mq.c:2103) 
[    8.032879] blk_mq_sched_insert_requests (./include/linux/rcupdate.h:692 ./include/linux/percpu-refcount.h:330 ./include/linux/percpu-refcount.h:351 block/blk-mq-sched.c:495) 
[    8.032880] blk_mq_flush_plug_list (block/blk-mq.c:2640) 
[    8.032882] __blk_flush_plug (block/blk-core.c:1247) 
[    8.032883] ? lock_release (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5664 (discriminator 1)) 
[    8.032885] blk_finish_plug (block/blk-core.c:1265 block/blk-core.c:1261) 
[    8.032886] read_pages (mm/readahead.c:181) 
[    8.032888] page_cache_ra_unbounded (./include/linux/fs.h:815 mm/readahead.c:262) 
[    8.032890] page_cache_ra_order (mm/readahead.c:547) 
[    8.032892] ondemand_readahead (mm/readahead.c:669) 
[    8.032893] page_cache_sync_ra (mm/readahead.c:696) 
[    8.032894] filemap_get_pages (mm/filemap.c:2613) 
[    8.032896] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032898] filemap_read (mm/filemap.c:2698) 
[    8.032900] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032901] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032901] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032903] ? sched_clock (arch/x86/kernel/tsc.c:254) 
[    8.032904] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032905] ? lock_release (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5664 (discriminator 1)) 
[    8.032907] generic_file_read_iter (mm/filemap.c:2845) 
[    8.032908] ? aa_file_perm (security/apparmor/file.c:644) 
[    8.032910] ext4_file_read_iter (fs/ext4/file.c:133) 
[    8.032912] new_sync_read (fs/read_write.c:402 (discriminator 1)) 
[    8.032915] vfs_read (fs/read_write.c:482) 
[    8.032916] ksys_read (fs/read_write.c:620) 
[    8.032918] __x64_sys_read (fs/read_write.c:628) 
[    8.032919] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032920] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032921] ? syscall_exit_to_user_mode (kernel/entry/common.c:297) 
[    8.032922] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032924] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032925] ? do_syscall_64 (./arch/x86/include/asm/jump_label.h:27 arch/x86/entry/common.c:77) 
[    8.032926] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 
[    8.032927] RIP: 0033:0x7f66de513932
[ 8.032928] Code: c0 e9 b2 fe ff ff 50 48 8d 3d 3a b9 0c 00 e8 15 1a 02 00 0f 1f 44 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 0f 05 <48> 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 48 83 ec 28 48 89 54 24
All code
========
   0:	c0 e9 b2             	shr    $0xb2,%cl
   3:	fe                   	(bad)  
   4:	ff                   	(bad)  
   5:	ff 50 48             	call   *0x48(%rax)
   8:	8d 3d 3a b9 0c 00    	lea    0xcb93a(%rip),%edi        # 0xcb948
   e:	e8 15 1a 02 00       	call   0x21a28
  13:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
  18:	f3 0f 1e fa          	endbr64 
  1c:	64 8b 04 25 18 00 00 	mov    %fs:0x18,%eax
  23:	00 
  24:	85 c0                	test   %eax,%eax
  26:	75 10                	jne    0x38
  28:	0f 05                	syscall 
  2a:*	48 3d 00 f0 ff ff    	cmp    $0xfffffffffffff000,%rax		<-- trapping instruction
  30:	77 56                	ja     0x88
  32:	c3                   	ret    
  33:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
  38:	48 83 ec 28          	sub    $0x28,%rsp
  3c:	48                   	rex.W
  3d:	89                   	.byte 0x89
  3e:	54                   	push   %rsp
  3f:	24                   	.byte 0x24

Code starting with the faulting instruction
===========================================
   0:	48 3d 00 f0 ff ff    	cmp    $0xfffffffffffff000,%rax
   6:	77 56                	ja     0x5e
   8:	c3                   	ret    
   9:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
   e:	48 83 ec 28          	sub    $0x28,%rsp
  12:	48                   	rex.W
  13:	89                   	.byte 0x89
  14:	54                   	push   %rsp
  15:	24                   	.byte 0x24
[    8.032929] RSP: 002b:00007ffcdce2cee8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[    8.032931] RAX: ffffffffffffffda RBX: 000056271b3552d0 RCX: 00007f66de513932
[    8.032932] RDX: 0000000000001000 RSI: 000056271b357f00 RDI: 0000000000000004
[    8.032932] RBP: 00007f66de616600 R08: 0000000000000004 R09: 000056271b358f00
[    8.032933] R10: 000056271b357ef0 R11: 0000000000000246 R12: 00007f66de62aec0
[    8.032934] R13: 0000000000000d68 R14: 00007f66de615a00 R15: 0000000000000d68
[    8.032936]  </TASK>

-- 
Thanks,
Hyeonggon

WARNING: multiple messages have this Message-ID (diff)
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Byungchul Park <byungchul.park@lge.com>
Cc: hamohammed.sa@gmail.com, jack@suse.cz, peterz@infradead.org,
	daniel.vetter@ffwll.ch, amir73il@gmail.com, david@fromorbit.com,
	dri-devel@lists.freedesktop.org, chris@chris-wilson.co.uk,
	bfields@fieldses.org, linux-ide@vger.kernel.org,
	adilger.kernel@dilger.ca, joel@joelfernandes.org, cl@linux.com,
	will@kernel.org, duyuyang@gmail.com, sashal@kernel.org,
	paolo.valente@linaro.org, damien.lemoal@opensource.wdc.com,
	willy@infradead.org, hch@infradead.org, airlied@linux.ie,
	mingo@redhat.com, djwong@kernel.org, vdavydov.dev@gmail.com,
	rientjes@google.com, dennis@kernel.org,
	linux-ext4@vger.kernel.org, linux-mm@kvack.org,
	ngupta@vflare.org, johannes.berg@intel.com, jack@suse.com,
	dan.j.williams@intel.com, josef@toxicpanda.com,
	rostedt@goodmis.org, linux-block@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, jglisse@redhat.com,
	viro@zeniv.linux.org.uk, tglx@linutronix.de, mhocko@kernel.org,
	vbabka@suse.cz, melissa.srw@gmail.com, sj@kernel.org,
	tytso@mit.edu, rodrigosiqueiramelo@gmail.com,
	kernel-team@lge.com, gregkh@linuxfoundation.org,
	jlayton@kernel.org, linux-kernel@vger.kernel.org,
	penberg@kernel.org, minchan@kernel.org, hannes@cmpxchg.org,
	tj@kernel.org, akpm@linux-foundation.org,
	torvalds@linux-foundation.org
Subject: Re: [PATCH RFC v6 07/21] dept: Apply Dept to seqlock
Date: Sat, 21 May 2022 14:25:35 +0900	[thread overview]
Message-ID: <Yoh3zzMPkCo2OP39@hyeyoo> (raw)
In-Reply-To: <1651652269-15342-8-git-send-email-byungchul.park@lge.com>

Hello I got new report from dept, related to seqlock.
I applied dept 1.20 series on v5.18-rc7.

Below is what DEPT reported.
I think this is bogus because reader of p->alloc_lock cannot block
its writer. Or please kindly tell me if I'm missing something ;)

Thanks.

[    8.032674] ===================================================
[    8.032676] DEPT: Circular dependency has been detected.
[    8.032677] 5.18.0-rc7-dept+ #10 Tainted: G            E
[    8.032677] ---------------------------------------------------
[    8.032678] summary
[    8.032678] ---------------------------------------------------
[    8.032679] *** DEADLOCK ***

[    8.032679] context A
[    8.032679]     [S] __raw_spin_lock_irqsave(&host->lock:0)
[    8.032681]     [W] __seqprop_spinlock_wait(&p->alloc_lock:0)
[    8.032681]     [E] spin_unlock(&host->lock:0)

[    8.032682] context B
[    8.032682]     [S] __raw_spin_lock(&dentry->d_lock:0)
[    8.032683]     [W] __raw_spin_lock(&host->lock:0)
[    8.032684]     [E] spin_unlock(&dentry->d_lock:0)

[    8.032684] context C
[    8.032685]     [S] __raw_spin_lock(&p->alloc_lock:0)
[    8.032685]     [W] __raw_spin_lock(&dentry->d_lock:0)
[    8.032685]     [E] spin_unlock(&p->alloc_lock:0)

[    8.032686] [S]: start of the event context
[    8.032686] [W]: the wait blocked
[    8.032687] [E]: the event not reachable
[    8.032687] ---------------------------------------------------
[    8.032687] context A's detail
[    8.032688] ---------------------------------------------------
[    8.032688] context A
[    8.032688]     [S] __raw_spin_lock_irqsave(&host->lock:0)
[    8.032689]     [W] __seqprop_spinlock_wait(&p->alloc_lock:0)
[    8.032689]     [E] spin_unlock(&host->lock:0)

[    8.032690] [S] __raw_spin_lock_irqsave(&host->lock:0):
[    8.032690] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:2734 drivers/ata/libata-scsi.c:4017) 
[    8.032694] stacktrace:
[    8.032694] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:2734 drivers/ata/libata-scsi.c:4017) 
[    8.032696] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032697] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032700] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 
[    8.032701] __blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:313) 
[    8.032702] blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:339) 
[    8.032703] __blk_mq_run_hw_queue (./include/linux/rcupdate.h:723 block/blk-mq.c:1974) 
[    8.032704] __blk_mq_delay_run_hw_queue (block/blk-mq.c:2052) 
[    8.032705] blk_mq_run_hw_queue (block/blk-mq.c:2103) 
[    8.032706] blk_mq_sched_insert_requests (./include/linux/rcupdate.h:692 ./include/linux/percpu-refcount.h:330 ./include/linux/percpu-refcount.h:351 block/blk-mq-sched.c:495) 
[    8.032707] blk_mq_flush_plug_list (block/blk-mq.c:2640) 
[    8.032708] __blk_flush_plug (block/blk-core.c:1247) 
[    8.032709] blk_finish_plug (block/blk-core.c:1265 block/blk-core.c:1261) 
[    8.032710] read_pages (mm/readahead.c:181) 
[    8.032712] page_cache_ra_unbounded (./include/linux/fs.h:815 mm/readahead.c:262) 
[    8.032713] page_cache_ra_order (mm/readahead.c:547) 

[    8.032714] [W] __seqprop_spinlock_wait(&p->alloc_lock:0):
[    8.032714] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032717] stacktrace:
[    8.032717] dept_wait (./arch/x86/include/asm/current.h:15 kernel/dependency/dept.c:227 kernel/dependency/dept.c:1013 kernel/dependency/dept.c:1057 kernel/dependency/dept.c:2216) 
[    8.032719] ___slab_alloc (./include/linux/seqlock.h:326 ./include/linux/cpuset.h:151 mm/slub.c:2223 mm/slub.c:2266 mm/slub.c:3000) 
[    8.032720] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032721] kmem_cache_alloc (mm/slub.c:3183 mm/slub.c:3225 mm/slub.c:3232 mm/slub.c:3242) 
[    8.032722] alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032724] alloc_iova_fast (drivers/iommu/iova.c:455) 
[    8.032725] iommu_dma_alloc_iova (drivers/iommu/dma-iommu.c:628) 
[    8.032726] iommu_dma_map_sg (drivers/iommu/dma-iommu.c:1201) 
[    8.032727] __dma_map_sg_attrs (kernel/dma/mapping.c:195) 
[    8.032729] dma_map_sg_attrs (kernel/dma/mapping.c:232) 
[    8.032730] ata_qc_issue (drivers/ata/libata-core.c:4530 drivers/ata/libata-core.c:4876) 
[    8.032731] __ata_scsi_queuecmd (drivers/ata/libata-scsi.c:1710 drivers/ata/libata-scsi.c:3974) 
[    8.032732] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:4019) 
[    8.032734] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032734] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032735] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 

[    8.032736] [E] spin_unlock(&host->lock:0):
[    8.032737] (N/A)
[    8.032737] ---------------------------------------------------
[    8.032738] context B's detail
[    8.032738] ---------------------------------------------------
[    8.032738] context B
[    8.032738]     [S] __raw_spin_lock(&dentry->d_lock:0)
[    8.032739]     [W] __raw_spin_lock(&host->lock:0)
[    8.032740]     [E] spin_unlock(&dentry->d_lock:0)

[    8.032740] [S] __raw_spin_lock(&dentry->d_lock:0):
[    8.032741] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032743] stacktrace:
[    8.032743] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032744] path_get (fs/namei.c:546) 
[    8.032746] do_dentry_open (fs/open.c:778) 
[    8.032747] vfs_open (fs/open.c:959) 
[    8.032748] path_openat (fs/namei.c:3583 fs/namei.c:3602) 
[    8.032749] do_filp_open (fs/namei.c:3636) 
[    8.032750] do_sys_openat2 (fs/open.c:1213) 
[    8.032751] __x64_sys_openat (fs/open.c:1240) 
[    8.032752] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032754] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032756] [W] __raw_spin_lock(&host->lock:0):
[    8.032756] ahci_single_level_irq_intr (drivers/ata/libahci.c:1970) libahci
[    8.032759] stacktrace:
[    8.032760] ahci_single_level_irq_intr (drivers/ata/libahci.c:1970) libahci
[    8.032761] __handle_irq_event_percpu (kernel/irq/handle.c:158) 
[    8.032763] handle_irq_event (kernel/irq/handle.c:195 kernel/irq/handle.c:210) 
[    8.032763] handle_edge_irq (kernel/irq/chip.c:819) 
[    8.032764] __common_interrupt (./include/asm-generic/irq_regs.h:28 (discriminator 22) arch/x86/kernel/irq.c:263 (discriminator 22)) 
[    8.032766] common_interrupt (arch/x86/kernel/irq.c:240 (discriminator 14)) 
[    8.032768] asm_common_interrupt (./arch/x86/include/asm/idtentry.h:636) 
[    8.032769] lock_release (kernel/locking/lockdep.c:5665) 
[    8.032771] _raw_spin_unlock (./include/linux/spinlock_api_smp.h:141 kernel/locking/spinlock.c:186) 
[    8.032772] lockref_get (lib/lockref.c:55) 
[    8.032772] path_get (fs/namei.c:546) 
[    8.032774] do_dentry_open (fs/open.c:778) 
[    8.032774] vfs_open (fs/open.c:959) 
[    8.032775] path_openat (fs/namei.c:3583 fs/namei.c:3602) 
[    8.032776] do_filp_open (fs/namei.c:3636) 
[    8.032777] do_sys_openat2 (fs/open.c:1213) 

[    8.032778] [E] spin_unlock(&dentry->d_lock:0):
[    8.032778] (N/A)
[    8.032779] ---------------------------------------------------
[    8.032779] context C's detail
[    8.032779] ---------------------------------------------------
[    8.032780] context C
[    8.032780]     [S] __raw_spin_lock(&p->alloc_lock:0)
[    8.032780]     [W] __raw_spin_lock(&dentry->d_lock:0)
[    8.032781]     [E] spin_unlock(&p->alloc_lock:0)

[    8.032781] [S] __raw_spin_lock(&p->alloc_lock:0):
[    8.032782] proc_root_link (fs/proc/base.c:177 fs/proc/base.c:208) 
[    8.032784] stacktrace:
[    8.032784] proc_root_link (fs/proc/base.c:177 fs/proc/base.c:208) 
[    8.032784] proc_pid_get_link.part.0 (fs/proc/base.c:1756) 
[    8.032785] proc_pid_get_link (fs/proc/base.c:1762) 
[    8.032786] step_into (fs/namei.c:1819 fs/namei.c:1876) 
[    8.032787] walk_component (fs/namei.c:2027) 
[    8.032788] path_lookupat (fs/namei.c:2475 fs/namei.c:2499) 
[    8.032789] filename_lookup (fs/namei.c:2528) 
[    8.032790] vfs_statx (fs/stat.c:229) 
[    8.032791] vfs_fstatat (fs/stat.c:256) 
[    8.032792] __do_sys_newfstatat (fs/stat.c:426) 
[    8.032793] __x64_sys_newfstatat (fs/stat.c:419) 
[    8.032793] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032794] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032796] [W] __raw_spin_lock(&dentry->d_lock:0):
[    8.032796] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032797] stacktrace:
[    8.032797] lockref_get (./include/linux/spinlock.h:410 lib/lockref.c:54) 
[    8.032798] path_get (fs/namei.c:546) 
[    8.032799] proc_root_link (./include/linux/spinlock.h:410 ./include/linux/fs_struct.h:32 fs/proc/base.c:178 fs/proc/base.c:208) 
[    8.032800] proc_pid_get_link.part.0 (fs/proc/base.c:1756) 
[    8.032801] proc_pid_get_link (fs/proc/base.c:1762) 
[    8.032801] step_into (fs/namei.c:1819 fs/namei.c:1876) 
[    8.032802] walk_component (fs/namei.c:2027) 
[    8.032803] path_lookupat (fs/namei.c:2475 fs/namei.c:2499) 
[    8.032805] filename_lookup (fs/namei.c:2528) 
[    8.032805] vfs_statx (fs/stat.c:229) 
[    8.032806] vfs_fstatat (fs/stat.c:256) 
[    8.032807] __do_sys_newfstatat (fs/stat.c:426) 
[    8.032808] __x64_sys_newfstatat (fs/stat.c:419) 
[    8.032808] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032809] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 

[    8.032810] [E] spin_unlock(&p->alloc_lock:0):
[    8.032811] (N/A)
[    8.032811] ---------------------------------------------------
[    8.032811] information that might be helpful
[    8.032812] ---------------------------------------------------
[    8.032812] CPU: 4 PID: 534 Comm: systemd-tmpfile Tainted: G            E     5.18.0-rc7-dept+ #10
[    8.032814] Hardware name: ASUS System Product Name/TUF GAMING B550-PLUS (WI-FI), BIOS 1401 12/03/2020
[    8.032814] Call Trace:
[    8.032815]  <TASK>
[    8.032816] dump_stack_lvl (lib/dump_stack.c:107 (discriminator 4)) 
[    8.032819] dump_stack (lib/dump_stack.c:114) 
[    8.032820] print_circle.cold (./arch/x86/include/asm/atomic.h:108 ./include/linux/atomic/atomic-instrumented.h:258 kernel/dependency/dept.c:143 kernel/dependency/dept.c:776) 
[    8.032822] ? print_circle (kernel/dependency/dept.c:1107) 
[    8.032824] cb_check_dl (kernel/dependency/dept.c:1133) 
[    8.032825] bfs (kernel/dependency/dept.c:874) 
[    8.032826] add_dep (kernel/dependency/dept.c:1457) 
[    8.032828] add_wait (kernel/dependency/dept.c:1505) 
[    8.032829] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032831] __dept_wait (kernel/dependency/dept.c:2156 (discriminator 2)) 
[    8.032832] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032833] ? __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032834] dept_wait (./arch/x86/include/asm/current.h:15 kernel/dependency/dept.c:227 kernel/dependency/dept.c:1013 kernel/dependency/dept.c:1057 kernel/dependency/dept.c:2216) 
[    8.032836] ___slab_alloc (./include/linux/seqlock.h:326 ./include/linux/cpuset.h:151 mm/slub.c:2223 mm/slub.c:2266 mm/slub.c:3000) 
[    8.032837] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032839] ? arch_stack_walk (arch/x86/kernel/stacktrace.c:27 (discriminator 1)) 
[    8.032841] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032842] __slab_alloc.constprop.0 (mm/slub.c:3092) 
[    8.032844] kmem_cache_alloc (mm/slub.c:3183 mm/slub.c:3225 mm/slub.c:3232 mm/slub.c:3242) 
[    8.032845] ? alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032846] alloc_iova (./include/linux/slab.h:704 drivers/iommu/iova.c:240 drivers/iommu/iova.c:316) 
[    8.032847] ? dept_ecxt_exit (kernel/dependency/dept.c:2506 (discriminator 1)) 
[    8.032849] alloc_iova_fast (drivers/iommu/iova.c:455) 
[    8.032851] iommu_dma_alloc_iova (drivers/iommu/dma-iommu.c:628) 
[    8.032852] iommu_dma_map_sg (drivers/iommu/dma-iommu.c:1201) 
[    8.032854] ? ata_scsi_mode_select_xlat (drivers/ata/libata-scsi.c:1503) 
[    8.032855] __dma_map_sg_attrs (kernel/dma/mapping.c:195) 
[    8.032856] dma_map_sg_attrs (kernel/dma/mapping.c:232) 
[    8.032858] ata_qc_issue (drivers/ata/libata-core.c:4530 drivers/ata/libata-core.c:4876) 
[    8.032859] __ata_scsi_queuecmd (drivers/ata/libata-scsi.c:1710 drivers/ata/libata-scsi.c:3974) 
[    8.032861] ata_scsi_queuecmd (drivers/ata/libata-scsi.c:4019) 
[    8.032862] scsi_queue_rq (drivers/scsi/scsi_lib.c:1517 drivers/scsi/scsi_lib.c:1745) 
[    8.032864] blk_mq_dispatch_rq_list (block/blk-mq.c:1858) 
[    8.032866] ? sbitmap_get (lib/sbitmap.c:179 lib/sbitmap.c:206 lib/sbitmap.c:231) 
[    8.032869] blk_mq_do_dispatch_sched (block/blk-mq-sched.c:173 block/blk-mq-sched.c:187) 
[    8.032871] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032872] __blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:313) 
[    8.032874] blk_mq_sched_dispatch_requests (block/blk-mq-sched.c:339) 
[    8.032875] __blk_mq_run_hw_queue (./include/linux/rcupdate.h:723 block/blk-mq.c:1974) 
[    8.032876] __blk_mq_delay_run_hw_queue (block/blk-mq.c:2052) 
[    8.032877] blk_mq_run_hw_queue (block/blk-mq.c:2103) 
[    8.032879] blk_mq_sched_insert_requests (./include/linux/rcupdate.h:692 ./include/linux/percpu-refcount.h:330 ./include/linux/percpu-refcount.h:351 block/blk-mq-sched.c:495) 
[    8.032880] blk_mq_flush_plug_list (block/blk-mq.c:2640) 
[    8.032882] __blk_flush_plug (block/blk-core.c:1247) 
[    8.032883] ? lock_release (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5664 (discriminator 1)) 
[    8.032885] blk_finish_plug (block/blk-core.c:1265 block/blk-core.c:1261) 
[    8.032886] read_pages (mm/readahead.c:181) 
[    8.032888] page_cache_ra_unbounded (./include/linux/fs.h:815 mm/readahead.c:262) 
[    8.032890] page_cache_ra_order (mm/readahead.c:547) 
[    8.032892] ondemand_readahead (mm/readahead.c:669) 
[    8.032893] page_cache_sync_ra (mm/readahead.c:696) 
[    8.032894] filemap_get_pages (mm/filemap.c:2613) 
[    8.032896] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032898] filemap_read (mm/filemap.c:2698) 
[    8.032900] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032901] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032901] ? lock_is_held_type (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5686 (discriminator 1)) 
[    8.032903] ? sched_clock (arch/x86/kernel/tsc.c:254) 
[    8.032904] ? __this_cpu_preempt_check (lib/smp_processor_id.c:67) 
[    8.032905] ? lock_release (./arch/x86/include/asm/paravirt.h:704 (discriminator 1) ./arch/x86/include/asm/irqflags.h:138 (discriminator 1) kernel/locking/lockdep.c:5664 (discriminator 1)) 
[    8.032907] generic_file_read_iter (mm/filemap.c:2845) 
[    8.032908] ? aa_file_perm (security/apparmor/file.c:644) 
[    8.032910] ext4_file_read_iter (fs/ext4/file.c:133) 
[    8.032912] new_sync_read (fs/read_write.c:402 (discriminator 1)) 
[    8.032915] vfs_read (fs/read_write.c:482) 
[    8.032916] ksys_read (fs/read_write.c:620) 
[    8.032918] __x64_sys_read (fs/read_write.c:628) 
[    8.032919] do_syscall_64 (arch/x86/entry/common.c:51 arch/x86/entry/common.c:82) 
[    8.032920] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032921] ? syscall_exit_to_user_mode (kernel/entry/common.c:297) 
[    8.032922] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032924] ? do_syscall_64 (arch/x86/entry/common.c:89) 
[    8.032925] ? do_syscall_64 (./arch/x86/include/asm/jump_label.h:27 arch/x86/entry/common.c:77) 
[    8.032926] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:115) 
[    8.032927] RIP: 0033:0x7f66de513932
[ 8.032928] Code: c0 e9 b2 fe ff ff 50 48 8d 3d 3a b9 0c 00 e8 15 1a 02 00 0f 1f 44 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 0f 05 <48> 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 48 83 ec 28 48 89 54 24
All code
========
   0:	c0 e9 b2             	shr    $0xb2,%cl
   3:	fe                   	(bad)  
   4:	ff                   	(bad)  
   5:	ff 50 48             	call   *0x48(%rax)
   8:	8d 3d 3a b9 0c 00    	lea    0xcb93a(%rip),%edi        # 0xcb948
   e:	e8 15 1a 02 00       	call   0x21a28
  13:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
  18:	f3 0f 1e fa          	endbr64 
  1c:	64 8b 04 25 18 00 00 	mov    %fs:0x18,%eax
  23:	00 
  24:	85 c0                	test   %eax,%eax
  26:	75 10                	jne    0x38
  28:	0f 05                	syscall 
  2a:*	48 3d 00 f0 ff ff    	cmp    $0xfffffffffffff000,%rax		<-- trapping instruction
  30:	77 56                	ja     0x88
  32:	c3                   	ret    
  33:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
  38:	48 83 ec 28          	sub    $0x28,%rsp
  3c:	48                   	rex.W
  3d:	89                   	.byte 0x89
  3e:	54                   	push   %rsp
  3f:	24                   	.byte 0x24

Code starting with the faulting instruction
===========================================
   0:	48 3d 00 f0 ff ff    	cmp    $0xfffffffffffff000,%rax
   6:	77 56                	ja     0x5e
   8:	c3                   	ret    
   9:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)
   e:	48 83 ec 28          	sub    $0x28,%rsp
  12:	48                   	rex.W
  13:	89                   	.byte 0x89
  14:	54                   	push   %rsp
  15:	24                   	.byte 0x24
[    8.032929] RSP: 002b:00007ffcdce2cee8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
[    8.032931] RAX: ffffffffffffffda RBX: 000056271b3552d0 RCX: 00007f66de513932
[    8.032932] RDX: 0000000000001000 RSI: 000056271b357f00 RDI: 0000000000000004
[    8.032932] RBP: 00007f66de616600 R08: 0000000000000004 R09: 000056271b358f00
[    8.032933] R10: 000056271b357ef0 R11: 0000000000000246 R12: 00007f66de62aec0
[    8.032934] R13: 0000000000000d68 R14: 00007f66de615a00 R15: 0000000000000d68
[    8.032936]  </TASK>

-- 
Thanks,
Hyeonggon

  reply	other threads:[~2022-05-21  5:26 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-04  8:17 [PATCH RFC v6 00/21] DEPT(Dependency Tracker) Byungchul Park
2022-05-04  8:17 ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 01/21] llist: Move llist_{head,node} definition to types.h Byungchul Park
2022-05-04  8:17   ` [PATCH RFC v6 01/21] llist: Move llist_{head, node} " Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 02/21] dept: Implement Dept(Dependency Tracker) Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04 13:29   ` kernel test robot
2022-05-21  3:24   ` Hyeonggon Yoo
2022-05-21  3:24     ` Hyeonggon Yoo
2022-05-04  8:17 ` [PATCH RFC v6 03/21] dept: Apply Dept to spinlock Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 04/21] dept: Apply Dept to mutex families Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 05/21] dept: Apply Dept to rwlock Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 06/21] dept: Apply Dept to wait_for_completion()/complete() Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 07/21] dept: Apply Dept to seqlock Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-21  5:25   ` Hyeonggon Yoo [this message]
2022-05-21  5:25     ` Hyeonggon Yoo
2022-05-24  6:00     ` Byungchul Park
2022-05-24  6:00       ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 08/21] dept: Apply Dept to rwsem Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 09/21] dept: Add proc knobs to show stats and dependency graph Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 10/21] dept: Introduce split map concept and new APIs for them Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 11/21] dept: Apply Dept to wait/event of PG_{locked,writeback} Byungchul Park
2022-05-04  8:17   ` [PATCH RFC v6 11/21] dept: Apply Dept to wait/event of PG_{locked, writeback} Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 12/21] dept: Apply SDT to swait Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 13/21] dept: Apply SDT to wait(waitqueue) Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 14/21] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 15/21] dept: Distinguish each syscall context from another Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 16/21] dept: Distinguish each work " Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04 11:23   ` Sergey Shtylyov
2022-05-04 11:23     ` Sergey Shtylyov
2022-05-04  8:17 ` [PATCH RFC v6 17/21] dept: Disable Dept within the wait_bit layer by default Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 18/21] dept: Disable Dept on struct crypto_larval's completion for now Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 19/21] dept: Differentiate onstack maps from others of different tasks in class Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 20/21] dept: Do not add dependencies between events within scheduler and sleeps Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04  8:17 ` [PATCH RFC v6 21/21] dept: Unstage wait when tagging a normal sleep wait Byungchul Park
2022-05-04  8:17   ` Byungchul Park
2022-05-04 18:17 ` [PATCH RFC v6 00/21] DEPT(Dependency Tracker) Linus Torvalds
2022-05-04 18:17   ` Linus Torvalds
2022-05-06  0:11   ` Byungchul Park
2022-05-06  0:11     ` Byungchul Park
2022-05-07  7:20     ` Hyeonggon Yoo
2022-05-07  7:20       ` Hyeonggon Yoo
2022-05-09  0:16       ` Byungchul Park
2022-05-09  0:16         ` Byungchul Park
2022-05-09 20:47         ` Steven Rostedt
2022-05-09 20:47           ` Steven Rostedt
2022-05-09 23:38           ` Byungchul Park
2022-05-09 23:38             ` Byungchul Park
2022-05-10 14:12             ` Steven Rostedt
2022-05-10 14:12               ` Steven Rostedt
2022-05-10 23:26               ` Byungchul Park
2022-05-10 23:26                 ` Byungchul Park
2022-05-10 11:18         ` Hyeonggon Yoo
2022-05-10 11:18           ` Hyeonggon Yoo
2022-05-10 23:39           ` Byungchul Park
2022-05-10 23:39             ` Byungchul Park
2022-05-11 10:04             ` Hyeonggon Yoo
2022-05-11 10:04               ` Hyeonggon Yoo
2022-05-19 10:11               ` Catalin Marinas
2022-05-19 10:11                 ` Catalin Marinas
2022-05-23  2:43                 ` Byungchul Park
2022-05-23  2:43                   ` Byungchul Park
2022-05-09  1:22   ` Byungchul Park
2022-05-09  1:22     ` Byungchul Park
2022-05-09 21:05 ` Theodore Ts'o
2022-05-09 21:05   ` Theodore Ts'o
2022-05-09 22:28   ` Theodore Ts'o
2022-05-09 22:28     ` Theodore Ts'o
2022-05-10  0:32     ` Byungchul Park
2022-05-10  0:32       ` Byungchul Park
2022-05-10  1:32       ` Theodore Ts'o
2022-05-10  1:32         ` Theodore Ts'o
2022-05-10  5:37         ` Byungchul Park
2022-05-10  5:37           ` Byungchul Park
2022-05-11  1:16           ` Byungchul Park
2022-05-11  1:16             ` Byungchul Park
2022-05-12  5:25 ` [REPORT] syscall reboot + umh + firmware fallback Byungchul Park
2022-05-12  5:25   ` Byungchul Park
2022-05-12  9:15   ` Tejun Heo
2022-05-12  9:15     ` Tejun Heo
2022-05-12 11:18     ` Byungchul Park
2022-05-12 11:18       ` Byungchul Park
2022-05-12 13:56       ` Theodore Ts'o
2022-05-12 13:56         ` Theodore Ts'o
2022-05-23  1:10         ` Byungchul Park
2022-05-23  1:10           ` Byungchul Park
2022-05-12 16:41       ` Tejun Heo
2022-05-12 16:41         ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Yoh3zzMPkCo2OP39@hyeyoo \
    --to=42.hyeyoo@gmail.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=airlied@linux.ie \
    --cc=akpm@linux-foundation.org \
    --cc=amir73il@gmail.com \
    --cc=bfields@fieldses.org \
    --cc=byungchul.park@lge.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=cl@linux.com \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=dan.j.williams@intel.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=david@fromorbit.com \
    --cc=dennis@kernel.org \
    --cc=djwong@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=duyuyang@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@infradead.org \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=jglisse@redhat.com \
    --cc=jlayton@kernel.org \
    --cc=joel@joelfernandes.org \
    --cc=johannes.berg@intel.com \
    --cc=josef@toxicpanda.com \
    --cc=kernel-team@lge.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=melissa.srw@gmail.com \
    --cc=mhocko@kernel.org \
    --cc=minchan@kernel.org \
    --cc=mingo@redhat.com \
    --cc=ngupta@vflare.org \
    --cc=paolo.valente@linaro.org \
    --cc=penberg@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rientjes@google.com \
    --cc=rodrigosiqueiramelo@gmail.com \
    --cc=rostedt@goodmis.org \
    --cc=sashal@kernel.org \
    --cc=sj@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=vbabka@suse.cz \
    --cc=vdavydov.dev@gmail.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.