diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc index ef3c737189..93c2a73f4a 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -1259,12 +1259,13 @@ does not provide `VM_ENTRY_LOAD_GUEST_PAT`. ### fred (x86) > `= ` -> Default: `false` +> Default: `true` on AMD, `false` otherwise Flexible Return and Event Delivery is an overhaul of interrupt, exception and -system call handling, fixing many corner cases in the x86 architecture, and -expected in hardware from 2025. Support in Xen is a work in progress and -disabled by default. +system call handling, fixing many corner cases in the x86 architecture, and is +available on Intel Panther Lake and Diamond Rapids CPUs, and AMD Zen6 CPUs. +FRED is fully supported on AMD hardware. On Intel hardware it is still tech +preview, and in particular not security supported. ### gnttab > `= List of [ max-ver:, transitive=, transfer= ]` diff --git a/xen/arch/x86/traps-setup.c b/xen/arch/x86/traps-setup.c index ccbd53fd9d..a79a3b2013 100644 --- a/xen/arch/x86/traps-setup.c +++ b/xen/arch/x86/traps-setup.c @@ -22,7 +22,7 @@ unsigned int __ro_after_init ler_msr; static bool __initdata opt_ler; boolean_param("ler", opt_ler); -int8_t __ro_after_init opt_fred = 0; +int8_t __ro_after_init opt_fred = -1; boolean_param("fred", opt_fred); void nocall entry_PF(void); @@ -392,7 +392,7 @@ void __init traps_init(void) } if ( opt_fred == -1 ) - opt_fred = !pv_shim; + opt_fred = (boot_cpu_data.x86_vendor == X86_VENDOR_AMD) && !pv_shim; if ( opt_fred ) {