linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@amacapital.net>
To: Dave Hansen <dave.hansen@intel.com>
Cc: Len Brown <lenb@kernel.org>, 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: Tue, 30 Mar 2021 13:20:27 -0700	[thread overview]
Message-ID: <F2653B18-239A-42BB-84EE-04F18B712279@amacapital.net> (raw)
In-Reply-To: <d10affcb-d315-cebc-4162-084f0a1e4d43@intel.com>


> On Mar 30, 2021, at 12:12 PM, Dave Hansen <dave.hansen@intel.com> wrote:
> 
> On 3/30/21 10:56 AM, Len Brown wrote:
>> On Tue, Mar 30, 2021 at 1:06 PM Andy Lutomirski <luto@amacapital.net> wrote:
>>>> On Mar 30, 2021, at 10:01 AM, Len Brown <lenb@kernel.org> wrote:
>>>> Is it required (by the "ABI") that a user program has everything
>>>> on the stack for user-space XSAVE/XRESTOR to get back
>>>> to the state of the program just before receiving the signal?
>>> The current Linux signal frame format has XSTATE in uncompacted format,
>>> so everything has to be there.
>>> Maybe we could have an opt in new signal frame format, but the details would need to be worked out.
>>> 
>>> It is certainly the case that a signal should be able to be delivered, run “async-signal-safe” code,
>>> and return, without corrupting register contents.
>> And so an an acknowledgement:
>> 
>> We can't change the legacy signal stack format without breaking
>> existing programs.  The legacy is uncompressed XSTATE.  It is a
>> complete set of architectural state -- everything necessary to
>> XRESTOR.  Further, the sigreturn flow allows the signal handler to
>> *change* any of that state, so that it becomes active upon return from
>> signal.
> 
> One nit with this: XRSTOR itself can work with the compacted format or
> uncompacted format.  Unlike the XSAVE/XSAVEC side where compaction is
> explicit from the instruction itself, XRSTOR changes its behavior by
> reading XCOMP_BV.  There's no XRSTORC.
> 
> The issue with using the compacted format is when legacy software in the
> signal handler needs to go access the state.  *That* is what can't
> handle a change in the XSAVE buffer format (either optimized/XSAVEOPT,
> or compacted/XSAVEC).

The compacted format isn’t compact enough anyway. If we want to keep AMX and AVX512 enabled in XCR0 then we need to further muck with the format to omit the not-in-use features. I *think* we can pull this off in a way that still does the right thing wrt XRSTOR.

If we go this route, I think we want a way for sigreturn to understand a pointer to the state instead of inline state to allow programs to change the state.  Or maybe just to have a way to ask sigreturn to skip the restore entirely.

  reply	other threads:[~2021-03-30 20:21 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 [this message]
2021-03-30 20:42                         ` Len Brown
2021-03-30 22:01                           ` David Laight
2021-03-31 16:31                             ` Len Brown
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=F2653B18-239A-42BB-84EE-04F18B712279@amacapital.net \
    --to=luto@amacapital.net \
    --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=lenb@kernel.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --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).