H. Peter Anvin (Intel) 99fcc968e7 x86/fred: Add a debug fault entry stub for FRED
When occurred on different ring level, i.e., from user or kernel context,
stack, while kernel #DB on a dedicated stack. This is exactly how FRED
event delivery invokes an exception handler: ring 3 event on level 0
stack, i.e., current task stack; ring 0 event on the #DB dedicated stack
specified in the IA32_FRED_STKLVLS MSR. So unlike IDT, the FRED debug
exception entry stub doesn't do stack switch.

On a FRED system, the debug trap status information (DR6) is passed on
the stack, to avoid the problem of transient state. Furthermore, FRED
transitions avoid a lot of ugly corner cases the handling of which can,
and should be, skipped.

The FRED debug trap status information saved on the stack differs from
DR6 in both stickiness and polarity; it is exactly in the format which
debug_read_clear_dr6() returns for the IDT entry points.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Xin Li <xin3.li@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Tested-by: Shan Kang <shan.kang@intel.com>
Link: https://lore.kernel.org/r/20231205105030.8698-24-xin3.li@intel.com
2024-01-31 22:02:15 +01:00
..
2024-01-18 17:25:39 -08:00
2024-01-18 15:16:57 -08:00
2024-01-19 09:10:23 -08:00
2024-01-19 13:36:15 -08:00
2024-01-19 09:10:23 -08:00
2024-01-10 18:13:44 -08:00
2024-01-19 13:30:49 -08:00
2024-01-18 15:01:28 -08:00
2024-01-17 11:27:23 -08:00
2024-01-19 09:10:23 -08:00
2024-01-18 15:01:28 -08:00
2023-09-05 10:09:31 -07:00
2024-01-18 15:01:28 -08:00
2024-01-21 11:04:29 -08:00
2024-01-19 09:10:23 -08:00
2024-01-20 09:24:06 -08:00
2024-01-19 08:08:53 -06:00
2024-01-18 11:37:24 -08:00
2024-01-18 15:01:28 -08:00
2024-01-18 15:16:57 -08:00