From: Mike Galbraith <efault@gmx.de>
To: Peter Zijlstra <peterz@infradead.org>,
mingo@redhat.com, juri.lelli@redhat.com,
vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
vschneid@redhat.com, clm@meta.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH 2/5] sched: Optimize ttwu() / select_task_rq()
Date: Mon, 09 Jun 2025 07:01:47 +0200 [thread overview]
Message-ID: <334e48ebbf34d853777672449cb29d5f06c751b7.camel@gmx.de> (raw)
In-Reply-To: <20250520101727.620602459@infradead.org>
Greetings,
This patch gives RT builds terminal heartburn. This particular boot
survived long/well enough to trigger it with LTP sched tests and still
be able to crash dump the hung box.
(is_migration_disabled() confirmation thingy below gripe)
[ 44.379563] WARNING: CPU: 6 PID: 4468 at kernel/sched/core.c:3354 set_task_cpu+0x1c1/0x1d0
[ 44.379569] Modules linked in: af_packet nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_tables ebtable_nat ebtable_broute ip6table_nat ip6table_mangle ip6table_raw ip6table_security iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security bridge stp llc iscsi_ibft iscsi_boot_sysfs rfkill ip_set nfnetlink ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter binfmt_misc intel_rapl_msr intel_rapl_common x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_realtek nls_iso8859_1 nls_cp437 snd_hda_codec_generic snd_hda_codec_hdmi snd_hda_scodec_component snd_hda_intel at24 iTCO_wdt snd_intel_dspcfg r8169 regmap_i2c snd_intel_sdw_acpi intel_pmc_bxt kvm mei_pxp mei_hdcp iTCO_vendor_support realtek snd_hda_codec i2c_i801 mdio_devres snd_hda_core ums_realtek libphy i2c_mux irqbypass pcspkr i2c_smbus snd_hwdep snd_pcm usblp mdio_bus mei_me lpc_ich mfd_core mei snd_timer
[ 44.379621] snd soundcore thermal fan joydev intel_smartconnect tiny_power_button nfsd auth_rpcgss nfs_acl lockd sch_fq_codel grace sunrpc fuse configfs dmi_sysfs ip_tables x_tables uas usb_storage hid_logitech_hidpp hid_logitech_dj hid_generic usbhid nouveau drm_ttm_helper ttm gpu_sched xhci_pci i2c_algo_bit xhci_hcd ahci drm_gpuvm ehci_pci ehci_hcd libahci drm_exec mxm_wmi libata polyval_clmulni usbcore ghash_clmulni_intel drm_display_helper sha512_ssse3 sha1_ssse3 cec rc_core video wmi button sd_mod scsi_dh_emc scsi_dh_rdac scsi_dh_alua sg scsi_mod scsi_common vfat fat ext4 crc16 mbcache jbd2 loop msr efivarfs aesni_intel
[ 44.379663] CPU: 6 UID: 0 PID: 4468 Comm: sandbox_ipc_thr Kdump: loaded Not tainted 6.15.0.ge271ed52-master-rt #19 PREEMPT_{RT,(lazy)} e4f2516a9b85ac19222adb94a538ef0c57343c1c
[ 44.379666] Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.20C 09/23/2013
[ 44.379668] RIP: 0010:set_task_cpu+0x1c1/0x1d0
[ 44.379670] Code: 0f 0b e9 8f fe ff ff 80 8b 8c 05 00 00 04 e9 f5 fe ff ff 0f 0b e9 7c fe ff ff 0f 0b 66 83 bb 40 04 00 00 00 0f 84 8b fe ff ff <0f> 0b e9 84 fe ff ff 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90
[ 44.379672] RSP: 0018:ffffcd844ef77668 EFLAGS: 00010002
[ 44.379673] RAX: 0000000000000200 RBX: ffff896da1e8c700 RCX: 0000000000000000
[ 44.379675] RDX: ffff896da1e8cb30 RSI: 0000000000000000 RDI: ffff896da1e8c700
[ 44.379676] RBP: 0000000000000000 R08: 0000000000000206 R09: 000000000002361d
[ 44.379677] R10: fbfffffffffff79d R11: 0000000000000004 R12: 0000000000000000
[ 44.379678] R13: 0000000000000000 R14: 0000000000000028 R15: ffff896da1e8d030
[ 44.379679] FS: 0000000000000000(0000) GS:ffff8970f15d8000(0000) knlGS:0000000000000000
[ 44.379681] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 44.379682] CR2: 00007f4c297c4688 CR3: 000000011b9de002 CR4: 00000000001726f0
[ 44.379683] Call Trace:
[ 44.379686] <TASK>
[ 44.379688] try_to_wake_up+0x245/0x810
[ 44.379692] rt_mutex_slowunlock+0x1d2/0x2d0
[ 44.379696] ? __pfx_lru_activate+0x10/0x10
[ 44.379700] folio_batch_move_lru+0xc7/0x100
[ 44.379704] ? __pfx_lru_activate+0x10/0x10
[ 44.379706] __folio_batch_add_and_move+0xf2/0x110
[ 44.379710] folio_mark_accessed+0x80/0x1b0
[ 44.379711] unmap_page_range+0x176b/0x1a60
[ 44.379717] unmap_vmas+0xae/0x1a0
[ 44.379720] exit_mmap+0xe5/0x3c0
[ 44.379725] mmput+0x6e/0x150
[ 44.379729] do_exit+0x23c/0xa20
[ 44.379732] do_group_exit+0x33/0x90
[ 44.379735] get_signal+0x85d/0x8b0
[ 44.379738] arch_do_signal_or_restart+0x2d/0x240
[ 44.379743] ? place_entity+0x1b/0x130
[ 44.379745] ? __x64_sys_poll+0x47/0x1a0
[ 44.379749] exit_to_user_mode_loop+0x86/0x150
[ 44.379753] do_syscall_64+0x1ba/0x8e0
[ 44.379756] ? wakeup_preempt+0x40/0x70
[ 44.379758] ? ttwu_do_activate+0x84/0x210
[ 44.379760] ? _raw_spin_unlock_irqrestore+0x22/0x40
[ 44.379763] ? try_to_wake_up+0xab/0x810
[ 44.379765] ? preempt_count_add+0x4b/0xa0
[ 44.379768] ? futex_hash_put+0x43/0x90
[ 44.379772] ? futex_wake+0xb2/0x1c0
[ 44.379775] ? do_futex+0x125/0x190
[ 44.379776] ? __x64_sys_futex+0x10b/0x1c0
[ 44.379779] ? do_syscall_64+0x7f/0x8e0
[ 44.379781] ? __do_sys_prctl+0xbe/0xee0
[ 44.379783] ? do_syscall_64+0x7f/0x8e0
[ 44.379786] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 44.379789] RIP: 0033:0x7f4c3571fdef
[ 44.379803] Code: Unable to access opcode bytes at 0x7f4c3571fdc5.
[ 44.379803] RSP: 002b:00007f4c0c9fe700 EFLAGS: 00000293 ORIG_RAX: 0000000000000007
[ 44.379805] RAX: fffffffffffffdfc RBX: 00007f4c0c9fe730 RCX: 00007f4c3571fdef
[ 44.379806] RDX: 00000000ffffffff RSI: 0000000000000002 RDI: 00007f4c0c9fe730
[ 44.379807] RBP: 00007f4c0c9fe920 R08: 0000000000000000 R09: 0000000000000007
[ 44.379808] R10: 00005587485bf1d0 R11: 0000000000000293 R12: 00005587485a7fc0
[ 44.379809] R13: 0000000000000000 R14: 0000000000001174 R15: 00007f4c0c1ff000
[ 44.379812] </TASK>
---
kernel/sched/core.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -4313,7 +4313,10 @@ int try_to_wake_up(struct task_struct *p
ttwu_queue_wakelist(p, task_cpu(p), wake_flags))
break;
- cpu = select_task_rq(p, p->wake_cpu, &wake_flags);
+ if (is_migration_disabled(p))
+ cpu = -1;
+ else
+ cpu = select_task_rq(p, p->wake_cpu, &wake_flags);
/*
* If the owning (remote) CPU is still in the middle of schedule() with
@@ -4326,6 +4329,9 @@ int try_to_wake_up(struct task_struct *p
*/
smp_cond_load_acquire(&p->on_cpu, !VAL);
+ if (cpu == -1)
+ cpu = select_task_rq(p, p->wake_cpu, &wake_flags);
+
if (task_cpu(p) != cpu) {
if (p->in_iowait) {
delayacct_blkio_end(p);
next prev parent reply other threads:[~2025-06-09 5:01 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-20 9:45 [RFC][PATCH 0/5] sched: Try and address some recent-ish regressions Peter Zijlstra
2025-05-20 9:45 ` [RFC][PATCH 1/5] sched/deadline: Less agressive dl_server handling Peter Zijlstra
2025-06-03 16:03 ` Juri Lelli
2025-06-13 9:43 ` Peter Zijlstra
2025-05-20 9:45 ` [RFC][PATCH 2/5] sched: Optimize ttwu() / select_task_rq() Peter Zijlstra
2025-06-09 5:01 ` Mike Galbraith [this message]
2025-06-13 9:40 ` Peter Zijlstra
2025-06-13 10:20 ` Mike Galbraith
2025-05-20 9:45 ` [RFC][PATCH 3/5] sched: Split up ttwu_runnable() Peter Zijlstra
2025-05-20 9:45 ` [RFC][PATCH 4/5] sched: Add ttwu_queue controls Peter Zijlstra
2025-05-20 9:45 ` [RFC][PATCH 5/5] sched: Add ttwu_queue support for delayed tasks Peter Zijlstra
2025-06-06 15:03 ` Vincent Guittot
2025-06-06 15:38 ` Peter Zijlstra
2025-06-06 16:55 ` Vincent Guittot
2025-06-11 9:39 ` Peter Zijlstra
2025-06-16 12:39 ` Vincent Guittot
2025-06-06 16:18 ` Phil Auld
2025-06-16 12:01 ` Peter Zijlstra
2025-06-16 16:37 ` Peter Zijlstra
2025-06-13 7:34 ` Dietmar Eggemann
2025-06-13 9:51 ` Peter Zijlstra
2025-06-13 10:46 ` Peter Zijlstra
2025-06-16 8:16 ` Dietmar Eggemann
2025-05-28 19:59 ` [RFC][PATCH 0/5] sched: Try and address some recent-ish regressions Peter Zijlstra
2025-05-29 1:41 ` Chris Mason
2025-06-14 10:04 ` Peter Zijlstra
2025-06-16 0:35 ` Chris Mason
2025-05-29 10:18 ` Beata Michalska
2025-05-30 9:00 ` Peter Zijlstra
2025-05-30 10:04 ` Chris Mason
2025-06-02 4:44 ` K Prateek Nayak
2025-06-13 3:28 ` K Prateek Nayak
2025-06-14 10:15 ` Peter Zijlstra
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=334e48ebbf34d853777672449cb29d5f06c751b7.camel@gmx.de \
--to=efault@gmx.de \
--cc=bsegall@google.com \
--cc=clm@meta.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®