From: Andy Lutomirski <[email protected]>
To: Linus Torvalds <[email protected]>
Cc: Thomas Gleixner <[email protected]>,
Stefan Metzmacher <[email protected]>, Jens Axboe <[email protected]>,
Linux Kernel Mailing List <[email protected]>,
io-uring <[email protected]>,
"the arch/x86 maintainers" <[email protected]>
Subject: Re: [PATCH] io_thread/x86: don't reset 'cs', 'ss', 'ds' and 'es' registers for io_threads
Date: Mon, 3 May 2021 13:15:21 -0700 [thread overview]
Message-ID: <CALCETrV9bCenqzzaW6Ra18tCvNP-my09decTjmLDVZZAQxR6VA@mail.gmail.com> (raw)
In-Reply-To: <CAHk-=wh0KoEZXPYMGkfkeVEerSCEF1AiCZSvz9TRrx=Kj74D+Q@mail.gmail.com>
On Mon, May 3, 2021 at 12:15 PM Linus Torvalds
<[email protected]> wrote:
> So generally, the IO threads are now 100% normal threads - it's
> literally just that they never return to user space because they are
> always just doing the IO offload on the kernel side.
>
> That part is lovely, but part of the "100% IO threads" really is that
> they share the signal struct too, which in turn means that they very
> much show up as normal threads. Again, not a problem: they really
> _are_ normal threads for all intents and purposes.
I'm a bit confused, though. All the ptrace register access (AFAICS)
goes through ptrace_check_attach(), which should wait until the tracee
is stopped. Does the io_uring thread now stop in response to ptrace
stop requests?
>
> But then that (b) issue means that gdb gets confused by them. I
> personally think that's just a pure gdb mis-feature, but I also think
> that "hey, if we just make the register state look like the main
> thread, and unconfuse gdb that way, problem solved".
>
> So I'd actually rather not make these non-special threads any more
> special at all. And I strongly suspect that making ptrace() not work
> on them will just confuse gdb even more - so it would make them just
> unnecessarily special in the kernel, for no actual gain.
>
> Is the right thing to do to fix gdb to not look at irrelevant thread B
> when deciding whether thread A is 64-bit or not? Yeah, that seems like
> obviously the RightThing(tm) to me.
>
> But at the same time, this is arguably about "regression", although at
> the same time it's "gdb doesn't understand new user programs that use
> new features, film at 11", so I think that argument is partly bogus
> too.
>
Fair enough. But I would really, really rather that gdb starts fixing
its amazingly broken assumptions about bitness.
> So my personal preference would be:
>
> - make those threads look even more like user threads, even if that
> means giving them pointless user segment data that the threads
> themselves will never use
>
> So I think Stefan's patch is reasonable, if not pretty. Literally
> becasue of that "make these threads look even more normal"
I think it's reasonable except for the bit about copying the segment
regs. Can we hardcode __USER_CS, etc, and, when gdb crashes or
otherwise malfunctions for compat programs, we can say that gdb needs
to stop sucking. In general, I think that piling a bitness hack in
here is a mess, and we're going to have to carry it forward forever
once we do it.
Meanwhile, I am going to put my foot down about one thing: NAK to this
patch until it comes with a selftest. That selftest needs to test the
cs behavior, but it also needs to read the FPU state from an io_uring
thread, write some FPU state to that thread, and read it back. And it
needs to not OOPS. Not breaking ABI is nice and all, but even more
important is not breaking the kernel.
--Andy
next prev parent reply other threads:[~2021-05-03 20:15 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <[email protected]>
2021-05-03 16:05 ` [PATCH] io_thread/x86: don't reset 'cs', 'ss', 'ds' and 'es' registers for io_threads Andy Lutomirski
2021-05-03 19:14 ` Linus Torvalds
2021-05-03 20:15 ` Andy Lutomirski [this message]
2021-05-03 20:21 ` Andy Lutomirski
2021-05-03 20:37 ` Linus Torvalds
2021-05-03 21:26 ` Jens Axboe
2021-05-03 21:49 ` Andy Lutomirski
2021-05-03 22:08 ` Linus Torvalds
2021-05-03 22:56 ` Thomas Gleixner
2021-05-03 23:15 ` Andy Lutomirski
2021-05-03 23:16 ` Linus Torvalds
2021-05-03 23:19 ` Linus Torvalds
2021-05-03 23:27 ` Stefan Metzmacher
2021-05-03 23:48 ` Linus Torvalds
2021-05-04 2:50 ` Jens Axboe
2021-05-04 11:39 ` Stefan Metzmacher
2021-05-04 15:53 ` Linus Torvalds
2021-05-12 4:24 ` Olivier Langlois
2021-05-12 17:44 ` Linus Torvalds
2021-05-12 20:55 ` Jens Axboe
2021-05-20 4:13 ` Olivier Langlois
2021-05-21 7:31 ` Olivier Langlois
2021-05-25 19:39 ` Olivier Langlois
2021-05-25 19:45 ` Olivier Langlois
2021-05-25 19:52 ` Jens Axboe
2021-05-25 20:23 ` Linus Torvalds
2021-05-04 8:22 ` David Laight
2021-05-04 0:01 ` Andy Lutomirski
2021-05-04 8:39 ` Peter Zijlstra
2021-05-04 15:35 ` Borislav Petkov
2021-05-04 15:55 ` Simon Marchi
2021-05-05 11:29 ` Stefan Metzmacher
2021-05-05 21:59 ` Simon Marchi
2021-05-05 22:11 ` Andy Lutomirski
2021-05-05 23:12 ` Borislav Petkov
2021-05-05 23:22 ` Andy Lutomirski
2021-05-06 1:04 ` Simon Marchi
2021-05-06 15:11 ` Andy Lutomirski
2021-05-06 9:47 ` David Laight
2021-05-06 9:53 ` David Laight
2021-05-05 22:21 ` Stefan Metzmacher
2021-05-05 23:15 ` Simon Marchi
2021-04-11 15:27 Stefan Metzmacher
2021-04-14 21:28 ` Stefan Metzmacher
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=CALCETrV9bCenqzzaW6Ra18tCvNP-my09decTjmLDVZZAQxR6VA@mail.gmail.com \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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