Subject: Re: Stalls when starting a VSOCK listening socket: soft lockups, RCU stalls, timeout

From: Thomas Gleixner <[email-masked]>
Date: Thu, 05 Mar 2026 17:16:43 +0100

On Thu, Mar 05 2026 at 13:20, Jiri Slaby wrote:
> On 05. 03. 26, 12:53, Jiri Slaby wrote:
>> owner_cpu is 1, owner is:
>> PID: 7508     TASK: ffff8cc4038b8000  CPU: 1    COMMAND: "compile"
>> 
>> But as you can see above, CPU1 is occupied with a different task:
>> crash> bt -sxc 1
>> PID: 7680     TASK: ffff8cc4038525c0  CPU: 1    COMMAND: "asm"
>> 
>> spinning in mm_get_cid() as I wrote. See the objdump of mm_get_cid below.
>
> You might be interested in mm_cid dumps:
>
> ====== PID 7508 (sleeping, holding the rq lock) ======
>
> crash> task -R mm_cid -x 7508
> PID: 7508     TASK: ffff8cc4038b8000  CPU: 1    COMMAND: "compile"
>    mm_cid = {
>      active = 0x1,
>      cid = 0x40000003

CID 3 owned by CPU 1

>    },
>
> crash> p ((struct task_struct *)(0xffff8cc4038b8000))->mm->mm_cid|head -4
> $6 = {
>    pcpu = 0x66222619df40,
>    mode = 1073741824,

mode = per CPU mode

>    max_cids = 4,
>
>
> ====== PID 7680 (spinning in mm_get_cid()) ======
>
> crash> task -R mm_cid -x 7680
> PID: 7680     TASK: ffff8cc4038525c0  CPU: 1    COMMAND: "asm"
>    mm_cid = {
>      active = 0x1,
>      cid = 0x80000000

CID is unset

>    },
>
> crash> p ((struct task_struct *)(0xffff8cc4038b8000))->mm->mm_cid|head -4
> $8 = {
>    pcpu = 0x66222619df40,
>    mode = 1073741824,

That's per CPU mode too

>    max_cids = 4,
>
>
> ====== per-cpu for CPU1 ======
>
> crash> struct mm_cid_pcpu -x fffff2e9bfc89f40
> struct mm_cid_pcpu {
>    cid = 0x40000003

That's the one owned by CPU 1

> }
>
> Dump of any other's mm_cids needed?

It would be helpful to see the content of all PCPU CIDs and
tsk::mm_cid::* for all tasks which belong to that process.

Thanks,

        tglx