mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 00/12] x86: WARN() hackery
@ 2025-11-10 11:46 Peter Zijlstra
  2025-11-10 11:46 ` [PATCH v2 01/12] x86: Rework __bug_table helpers Peter Zijlstra
                   ` (12 more replies)
  0 siblings, 13 replies; 23+ messages in thread
From: Peter Zijlstra @ 2025-11-10 11:46 UTC (permalink / raw)
  To: x86
  Cc: linux-kernel, peterz, kees, acarmina, jpoimboe, mark.rutland,
	torvalds, maciej.wieczor-retman

Hi!

I was going through my patch cabinet the other day and found these patches.

Mark was going to see if he could make ARM64 play ball to see if the generic
bits really are that. But clearly he's forgotten about things just as much as I
had.

We should probably just merge these, as they improbe the code-gen for WARN()
significantly on x86 and then I'll help Mark out for ARM64 when he gets around
to it and needs a hand.

Freshly rebased and somewhat tested.

As a quick reminder, this makes WARN(), which has a vararg printf like
arguments work with the #UD based WARN infra by hiding the format in the
bug_table (its a constant after all) and replacing this first argument with the
address of the bug-table entry while making the actual function that's called a
UD1 instruction.

The exception handler then create a va_list from pt_regs and vprintk() does the
rest.

Also here:

  git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/bugs


v1: https://lkml.kernel.org/r/20250607094224.104791182@infradead.org




^ permalink raw reply	[flat|nested] 23+ messages in thread
* Re: [PATCH v2 10/12] x86_64/bug: Implement __WARN_printf()
@ 2025-11-17  9:22 Maciej Wieczór-Retman
  0 siblings, 0 replies; 23+ messages in thread
From: Maciej Wieczór-Retman @ 2025-11-17  9:22 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: x86, linux-kernel, kees, acarmina, jpoimboe, mark.rutland,
	torvalds, maciej.wieczor-retman

On 2025-11-11 at 10:54:42 +0100, Peter Zijlstra wrote:
>On Mon, Nov 10, 2025 at 12:46:43PM +0100, Peter Zijlstra wrote:
>
>>  #endif /* _ASM_X86_BUG_H */
>> --- a/arch/x86/kernel/traps.c
>> +++ b/arch/x86/kernel/traps.c
>> @@ -102,25 +102,37 @@ __always_inline int is_valid_bugaddr(uns
>>   * UBSan{0}:     67 0f b9 00             ud1    (%eax),%eax
>>   * UBSan{10}:    67 0f b9 40 10          ud1    0x10(%eax),%eax
>>   * static_call:  0f b9 cc                ud1    %esp,%ecx
>> + * __WARN_trap:  67 48 0f b9 39          ud1    (%ecx),%reg
>>   *
>> - * Notably UBSAN uses EAX, static_call uses ECX.
>> + * Notable, since __WARN_trap can use all registers, the distinction between
>> + * UD1 users is through R/M.
>>   */
>
>Maciej; you were working on making KASAN emit UD1 instructions, right?
>Where are you with those patches and are we conflicting on the encoding?

I noticed your comment on my KASAN series so I'll just reply there.

>
>/me goes find the emails.. Yeah, I suggested UD1 /1, specifically:
>
>	ud1 xx(%ecx), %ecx
>
>and that does conflict. How about I switch to using:
>
>	ud1 (%edx), %reg
>
>for this?

Thanks for asking, that sounds good :)


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2025-11-26 10:56 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-10 11:46 [PATCH v2 00/12] x86: WARN() hackery Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 01/12] x86: Rework __bug_table helpers Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 02/12] bug: Add BUG_FORMAT infrastructure Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 03/12] bug: Clean up CONFIG_GENERIC_BUG_RELATIVE_POINTERS Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 04/12] bug: Add BUG_FORMAT_ARGS infrastructure Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 05/12] bug: Add report_bug_entry() Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 06/12] bug: Implement WARN_ON() using __WARN_FLAGS() Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 07/12] bug: Allow architectures to provide __WARN_printf() Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 08/12] x86/bug: Add BUG_FORMAT basics Peter Zijlstra
2025-11-25 11:17   ` Peter Zijlstra
2025-11-25 12:33     ` Peter Zijlstra
2025-11-25 15:17       ` Peter Zijlstra
2025-11-25 16:27         ` Linus Torvalds
2025-11-26  9:54           ` Peter Zijlstra
2025-11-26 10:56           ` Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 09/12] x86/bug: Use BUG_FORMAT for DEBUG_BUGVERBOSE_DETAILED Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 10/12] x86_64/bug: Implement __WARN_printf() Peter Zijlstra
2025-11-11  9:54   ` Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 11/12] x86/bug: Implement WARN_ONCE() Peter Zijlstra
2025-11-10 11:46 ` [PATCH v2 12/12] x86_64/bug: Inline the UD1 Peter Zijlstra
2025-11-10 16:18 ` [PATCH v2 00/12] x86: WARN() hackery Linus Torvalds
2025-11-10 22:20   ` Peter Zijlstra
2025-11-17  9:22 [PATCH v2 10/12] x86_64/bug: Implement __WARN_printf() Maciej Wieczór-Retman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®