• Stefan Metzmacher's avatar
    x86/process: setup io_threads more like normal user space threads · 50b7b6f2
    Stefan Metzmacher authored
    As io_threads are fully set up USER threads it's clearer to separate the
    code path from the KTHREAD logic.
    
    The only remaining difference to user space threads is that io_threads
    never return to user space again. Instead they loop within the given
    worker function.
    
    The fact that they never return to user space means they don't have an
    user space thread stack. In order to indicate that to tools like gdb we
    reset the stack and instruction pointers to 0.
    
    This allows gdb attach to user space processes using io-uring, which like
    means that they have io_threads, without printing worrying message like
    this:
    
      warning: Selected architecture i386:x86-64 is not compatible with reported target architecture i386
    
      warning: Architecture rejected target-supplied description
    
    The output will be something like this:
    
      (gdb) info threads
        Id   Target Id                  Frame
      * 1    LWP 4863 "io_uring-cp-for" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
        2    LWP 4864 "iou-mgr-4863"    0x0000000000000000 in ?? ()
        3    LWP 4865 "iou-wrk-4863"    0x0000000000000000 in ?? ()
      (gdb) thread 3
      [Switching to thread 3 (LWP 4865)]
      #0  0x0000000000000000 in ?? ()
      (gdb) bt
      #0  0x0000000000000000 in ?? ()
      Backtrace stopped: Cannot access memory at address 0x0
    
    Fixes: 4727dc20 ("arch: setup PF_IO_WORKER threads like PF_KTHREAD")
    Link: https://lore.kernel.org/io-uring/044d0bad-6888-a211-e1d3-159a4aeed52d@polymtl.ca/T/#m1bbf5727e3d4e839603f6ec7ed79c7eebfba6267Signed-off-by: default avatarStefan Metzmacher <metze@samba.org>
    cc: Linus Torvalds <torvalds@linux-foundation.org>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Andy Lutomirski <luto@kernel.org>
    cc: linux-kernel@vger.kernel.org
    cc: io-uring@vger.kernel.org
    cc: x86@kernel.org
    Link: https://lore.kernel.org/r/20210505110310.237537-1-metze@samba.orgReviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    50b7b6f2
process.c 24.2 KB