On Fri, Jul 10, 2026 at 12:15:23PM +0200, Magnus Kulke wrote:
> For the time being we disable AMX TILE in partition processor features
> and CPUID b/c AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds
> the current fixed 4KB XSAVE buffer size.
> 
> For now we filter it until buffer sizing is computed dynamically from CPUID.
> 
> Signed-off-by: Magnus Kulke <[email protected]>
> ---
>  accel/mshv/mshv-all.c       |  8 ++++++++
>  target/i386/mshv/mshv-cpu.c | 16 ++++++++++++++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c
> index 72721d0f0d..5e8756ede2 100644
> --- a/accel/mshv/mshv-all.c
> +++ b/accel/mshv/mshv-all.c
> @@ -203,6 +203,14 @@ static int create_partition(int mshv_fd, int *vm_fd)
>  
>      /* enable all */
>      disabled_xsave_features.as_uint64 = 0;
> +    /*
> +     * AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds the
> +     * current fixed 4KB XSAVE buffer size.
> +     */
> +    disabled_xsave_features.amx_tile_support = 1;
> +    disabled_xsave_features.amx_bf16_support = 1;
> +    disabled_xsave_features.amx_int8_support = 1;
> +    disabled_xsave_features.amx_fp16_support = 1;
>  
>      /*
>       * query host for supported processor features and disable unsupported
> diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c
> index 1c433c408c..8eca01a8fa 100644
> --- a/target/i386/mshv/mshv-cpu.c
> +++ b/target/i386/mshv/mshv-cpu.c
> @@ -2156,6 +2156,22 @@ uint32_t mshv_get_supported_cpuid(uint32_t func, 
> uint32_t idx, int reg)
>           */
>          ret &= ~CPUID_7_0_ECX_LA57;
>      }
> +    if (func == 0x07 && idx == 0 && reg == R_EDX) {
> +        /*
> +         * AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds the
> +         * current fixed 4KB XSAVE buffer size. Filter until buffer
> +         * sizing is computed dynamically from CPUID.
> +         */
> +        ret &= ~CPUID_7_0_EDX_AMX_TILE;
> +        ret &= ~CPUID_7_0_EDX_AMX_BF16;
> +        ret &= ~CPUID_7_0_EDX_AMX_INT8;
> +    }
> +    if (func == 0x07 && idx == 1 && reg == R_EAX) {
> +        ret &= ~CPUID_7_1_EAX_AMX_FP16;
> +    }
> +    if (func == 0x07 && idx == 1 && reg == R_EDX) {
> +        ret &= ~CPUID_7_1_EDX_AMX_COMPLEX;
> +    }
>  
>      return ret;
>  }
> -- 
> 2.34.1

Reviewed-by: Doru Blânzeanu <[email protected]>

Reply via email to