linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: David Laight <David.Laight@aculab.com>
Cc: Andy Lutomirski <luto@amacapital.net>,
	Dave Hansen <dave.hansen@intel.com>,
	Andy Lutomirski <luto@kernel.org>,
	Greg KH <gregkh@linuxfoundation.org>,
	"Bae, Chang Seok" <chang.seok.bae@intel.com>,
	X86 ML <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	libc-alpha <libc-alpha@sourceware.org>,
	Florian Weimer <fweimer@redhat.com>,
	Rich Felker <dalias@libc.org>, Kyle Huey <me@kylehuey.com>,
	Keno Fischer <keno@juliacomputing.com>,
	Linux API <linux-api@vger.kernel.org>
Subject: Re: Candidate Linux ABI for Intel AMX and hypothetical new related features
Date: Wed, 31 Mar 2021 12:31:16 -0400	[thread overview]
Message-ID: <CAJvTdK=evAofQRcmt_iwtYx2f_wTGUDpXzvjuiVwgZZ6BZV_Qg@mail.gmail.com> (raw)
In-Reply-To: <4aa49572cc5f4797922352d1760f3ef4@AcuMS.aculab.com>

On Tue, Mar 30, 2021 at 6:01 PM David Laight <David.Laight@aculab.com> wrote:

> > Can we leave it in live registers?  That would be the speed-of-light
> > signal handler approach.  But we'd need to teach the signal handler to
> > not clobber it.  Perhaps that could be part of the contract that a
> > fast signal handler signs?  INIT=0 AMX state could simply sit
> > patiently in the AMX registers for the duration of the signal handler.
> > You can't get any faster than doing nothing :-)
> >
> > Of course part of the contract for the fast signal handler is that it
> > knows that it can't possibly use XRESTOR of the stuff on the stack to
> > necessarily get back to the state of the signaled thread (assuming we
> > even used XSTATE format on the fast signal handler stack, it would
> > forget the contents of the AMX registers, in this example)
>
> gcc will just use the AVX registers for 'normal' code within
> the signal handler.
> So it has to have its own copy of all the registers.
> (Well, maybe you could make the TMX instructions fault,
> but that would need a nested signal delivered.)

This is true, by default, but it doesn't have to be true.

Today, gcc has an annotation for user-level interrupts
https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html#x86-Function-Attributes

An analogous annotation could be created for fast signals.
gcc can be told exactly what registers and instructions it can use for
that routine.

Of course, this begs the question about what routines that handler calls,
and that would need to be constrained too.

Today signal-safety(7) advises programmers to limit what legacy signal handlers
can call.  There is no reason that a fast-signal-safety(7) could not be created
for the fast path.

> There is also the register save buffer that you need in order
> to long-jump out of a signal handler.
> Unfortunately that is required to work.
> I'm pretty sure the original setjmp/longjmp just saved the stack
> pointer - but that really doesn't work any more.
>
> OTOH most signal handlers don't care - but there isn't a flag
> to sigset() (etc) so ask for a specific register layout.

Right, the idea is to optimize for *most* signal handlers,
since making any changes to *all* signal handlers is intractable.

So the idea is that opting-in to a fast signal handler would opt-out
of some legacy signal capibilities.  Complete state is one of them,
and thus long-jump is not supported, because the complete state
may not automatically be available.

thanks,
Len Brown, Intel Open Source Technology Center

  reply	other threads:[~2021-03-31 16:32 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CALCETrW2QHa2TLvnUuVxAAheqcbSZ-5_WRXtDSAGcbG8N+gtdQ@mail.gmail.com>
2021-03-26 23:18 ` Candidate Linux ABI for Intel AMX and hypothetical new related features Andy Lutomirski
2021-03-27  3:39   ` Len Brown
2021-03-27  9:14     ` Borislav Petkov
2021-03-27  9:58     ` Greg KH
2021-03-29 15:47       ` Len Brown
2021-03-29 16:38         ` Len Brown
2021-03-29 16:48           ` Florian Weimer
2021-03-29 18:14           ` Andy Lutomirski
2021-03-29 18:16         ` Andy Lutomirski
2021-03-29 22:38           ` Len Brown
2021-03-30  5:08             ` Andy Lutomirski
2021-03-30  5:50               ` Noah Goldstein
2021-03-30 17:01               ` Len Brown
2021-03-30 17:05                 ` Andy Lutomirski
2021-03-30 17:56                   ` Len Brown
2021-03-30 19:12                     ` Dave Hansen
2021-03-30 20:20                       ` Andy Lutomirski
2021-03-30 20:42                         ` Len Brown
2021-03-30 22:01                           ` David Laight
2021-03-31 16:31                             ` Len Brown [this message]
2021-03-31 16:53                               ` Andy Lutomirski
2021-03-31 21:42                                 ` Robert O'Callahan
2021-03-31 22:11                                   ` Len Brown
2021-03-31 22:28                                 ` Len Brown
2021-03-31 22:45                                   ` Andy Lutomirski
2021-04-09 20:52                                     ` Len Brown
2021-04-09 21:44                                       ` Andy Lutomirski
2021-04-11 19:07                                         ` Len Brown
2021-04-12  7:59                                           ` David Laight
2021-04-12 12:19                                           ` Borislav Petkov
2021-04-12 17:14                                           ` Sean Christopherson
2021-03-31 22:52                                   ` Borislav Petkov
2021-04-09 20:55                                     ` Len Brown
2021-03-28  0:53   ` Thomas Gleixner
2021-03-29  7:27     ` Peter Zijlstra
2021-03-29 15:06     ` Dave Hansen
     [not found] <20210415044258.GA6318@zn.tnic>
     [not found] ` <20210415052938.GA2325@1wt.eu>
     [not found]   ` <20210415054713.GB6318@zn.tnic>
     [not found]     ` <CAJvTdKnjzAMh3N_c7KP3kA=e0LgYHgCANg44oJp3LcSm7dtbSQ@mail.gmail.com>
     [not found]       ` <20210419141454.GE9093@zn.tnic>
     [not found]         ` <CAJvTdK=p8mgO3xw9sRxu0c7NTNTG109M442b3UZh8TqLLfkC1Q@mail.gmail.com>
     [not found]           ` <20210419191539.GH9093@zn.tnic>
     [not found]             ` <CAJvTdK=VnG94ECcRVoUi8HrCbVEKc8X4_JmRTkqe+vTttf0Wsg@mail.gmail.com>
     [not found]               ` <20210419215809.GJ9093@zn.tnic>
     [not found]                 ` <CAJvTdKn6JHo02karEs0e5g+6SimS5VUcXKjCkX35WY+xkgAgxw@mail.gmail.com>
     [not found]                   ` <YIMmwhEr46VPAZa4@zn.tnic>
     [not found]                     ` <CAJvTdKnhXnynybS4eNEF_EtF26auyb-mhKLNd1D9_zvCrchZsw@mail.gmail.com>
2021-05-17  9:45                       ` Thomas Gleixner
2021-05-17  9:56                         ` Florian Weimer
2021-05-17 10:18                           ` Thomas Gleixner
2021-05-21 16:29                           ` Len Brown
2021-05-17 13:49                         ` Arjan van de Ven
2021-05-20 15:35                         ` Len Brown
2021-05-20 20:54                           ` Thomas Gleixner
2021-05-20 21:13                             ` Dave Hansen
2021-05-20 21:41                               ` Len Brown
2021-05-20 22:53                                 ` Dave Hansen
2021-05-21  9:41                                   ` Thomas Gleixner
2021-05-21 14:44                                   ` Florian Weimer
2021-05-21 14:49                                     ` Peter Zijlstra
2021-06-23 15:06                                       ` Florian Weimer
2021-06-23 23:11                                         ` Len Brown
2021-06-28 10:14                                           ` Enrico Weigelt, metux IT consult
2021-06-28 12:49                                             ` Florian Weimer
2021-06-30 12:22                                               ` Enrico Weigelt, metux IT consult
2021-06-30 12:41                                                 ` Willy Tarreau
2021-06-30 13:55                                                 ` Arjan van de Ven
2021-06-30 15:20                                                   ` Len Brown
2021-06-30 15:25                                                   ` Enrico Weigelt, metux IT consult
2021-05-21 16:14                                     ` Dave Hansen
2021-05-21 16:19                                       ` Florian Weimer
2021-05-21 16:26                                         ` Len Brown
2021-05-21 16:28                                         ` Dave Hansen
2021-05-21 16:31                                         ` Andy Lutomirski
2021-05-21 19:10                                           ` Thomas Gleixner
2021-05-21 20:07                                             ` Andy Lutomirski
2021-05-21 21:43                                               ` Thomas Gleixner
2021-05-21 22:07                                             ` Len Brown
2021-05-21 22:46                                               ` Thomas Gleixner
2021-05-21 23:31                                                 ` Len Brown
2021-05-22  7:16                                                   ` Florian Weimer
2021-05-22 23:55                                                     ` Andy Lutomirski
2021-05-21 23:06                                               ` Dave Hansen
2021-05-21 23:08                                                 ` Len Brown
2021-05-21 19:05                                         ` Thomas Gleixner
2021-05-20 21:22                             ` Len Brown
2021-05-20 21:41                               ` Thomas Gleixner
2021-05-20 21:49                                 ` Len Brown
2021-05-21  9:26                                   ` Thomas Gleixner

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='CAJvTdK=evAofQRcmt_iwtYx2f_wTGUDpXzvjuiVwgZZ6BZV_Qg@mail.gmail.com' \
    --to=lenb@kernel.org \
    --cc=David.Laight@aculab.com \
    --cc=chang.seok.bae@intel.com \
    --cc=dalias@libc.org \
    --cc=dave.hansen@intel.com \
    --cc=fweimer@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=keno@juliacomputing.com \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=luto@kernel.org \
    --cc=me@kylehuey.com \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).