On Jul 29, 2026, at 20:08, Konstantin Belousov <[email protected]> wrote:

> On Wed, Jul 29, 2026 at 03:08:20PM -0700, Mark Millard wrote:
>> On 7/29/26 13:44, John Baldwin wrote:
>>> On 7/20/26 17:51, Konstantin Belousov wrote:
>>>> The branch main has been updated by kib:
>>>> 
>>>> URL: https://cgit.FreeBSD.org/src/commit/?
>>>> id=6e93f5e4d6932c423b89dff8fc08d86f8bdeb7b9
>>>> 
>>>> commit 6e93f5e4d6932c423b89dff8fc08d86f8bdeb7b9
>>>> Author:     Konstantin Belousov <[email protected]>
>>>> AuthorDate: 2026-02-13 11:24:40 +0000
>>>> Commit:     Konstantin Belousov <[email protected]>
>>>> CommitDate: 2026-07-20 21:51:02 +0000
>>>> 
>>>>      amd64: FRED support
>>>>           FRED support as defined starting from the SDM rev. 90,
>>>> requires a new
>>>>      'events' entry point to receive user and kernel mode exceptions and
>>>>      interrupts notifications from the hardware.  A minimal asm
>>>> trampoline is
>>>>      enough, rest can be implemented in C due to the clean FRED
>>>> organization
>>>>      of the event reporting.
>>>>           The syscall entry is handled by a microptimized assembly
>>>> path, directly
>>>>      calling into the amd64_syscall() handler, instead of the generic
>>>> events
>>>>      entry point.
>>>>           Tested by:      emaste
>>>>      Sponsored by:   The FreeBSD Foundation
>>>>      MFC after:      1 week
>>>>      Differential revision:  https://reviews.freebsd.org/D55829
>>> 
>>> This appears to have broken the cross-build jobs on GitHub for the past
>>> week
>>> which build with clang 15 and clang 18.  Are those versions too old to
>>> support
>>> the instructions used here?
>>> 
>>> Sample output:
>>> 
>>> --------------------------------------------------------------
>>>>>> stage 3.1: building everything
>>> --------------------------------------------------------------
>>> /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/
>>> exception.S:1455:2: error: invalid instruction mnemonic 'eretu'
>>>  eretu
>>>  ^~~~~
>>> /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/
>>> exception.S:1521:2: error: invalid instruction mnemonic 'lkgs'
>>>  lkgs %ax
>>>  ^~~~
>>> /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/
>>> exception.S:1542:2: error: invalid instruction mnemonic 'eretu'
>>>  eretu
>>>  ^~~~~
>>> /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/
>>> exception.S:1662:2: error: invalid instruction mnemonic 'erets'
>>>  erets
>>>  ^~~~~
>>> /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/
>>> exception.S:1682:2: error: invalid instruction mnemonic 'erets'
>>>  erets
>>>  ^~~~~
>>> --- exception.o ---
>>> *** [exception.o] Error code 1
>>> 
>>> (Or maybe clang needs some -m<foo> or .set <foo> to enable use of these
>>> instructions?)
>>> 
>> 
>>> From what I read (but its is only reading):
>> 
>> clang-15 predates any FRED support.
>> clang-17 was more incomplete/preliminary/experimental for FRED support
>> 
>> 
>> clang-18 has .S and inline assembly FRED support but various (most?)
>> target triples do not enable it by default.
>> 
>> Possibly add to appropriate .S file(s):
>> 
>> .arch x86-64
>> .arch .fred
>> .arch .lkgs
>> 
>> for defined(__clang__) && (__clang_major__ >= 18)
>> 
>> Or, make use of:
>> 
>> -Wa,-mwave-fred -Wa,-mwave-lkgs
>> 
>> 
>> clang-19 has the intended fully general handling of FRED.
> 
> I think that the adequate workaround would be to #ifdef out the
> instructions for old versions of clang.  I doubt that anybody would
> run the built kernel, esp. on the new enough hardware.
> 
> But I am open for other suggestions.


So far as I can tell, clang documentation does not cover this area,
making what I read solidly hear-say. (The -mwave-* notation is a
possible hint at that status.) It seems that linux may have gotten
its source to go through all the tools via use of (what translates
to) .byte use for the 3 instructions.

It is not clear to me what versions of clang may require -mattr= or
-mcpu= to specify something known to support LKGS/FRED in order to
enable the notation for the 3 instructions.


[Note: For some reason, I only found your note in my Email, not in
dev-commits-src-all@ or dev-commits-src-main@ (via multiple ways of
accessing those). So this is an Email based reply, not thunderbird
based use of news.gmane.io .]


===
Mark Millard
marklmi at yahoo.com


Reply via email to