From: "Doru Blânzeanu" <dblanzeanu@linux.microsoft.com>
To: qemu-devel@nongnu.org
Cc: "Wei Liu" <wei.liu@kernel.org>,
"Magnus Kulke" <magnuskulke@microsoft.com>,
"Wei Liu" <liuwe@microsoft.com>,
"Magnus Kulke" <magnuskulke@linux.microsoft.com>,
"Doru Blânzeanu" <dblanzeanu@microsoft.com>,
"Doru Blânzeanu" <dblanzeanu@linux.microsoft.com>
Subject: [PATCH 2/2] accel/mshv: enable amx tiles support for guests
Date: Mon, 7 Sep 2026 17:23:55 +0300 [thread overview]
Message-ID: <20260907142355.141033-3-dblanzeanu@linux.microsoft.com> (raw)
In-Reply-To: <20260907142355.141033-1-dblanzeanu@linux.microsoft.com>
The AMX tiles feature uses a larger than 4kB area in xsave.
This fix removes the code that disables AMX tiles in the partition and it
adjusts the supported CPUID to advertise AMX tiles.
Signed-off-by: Doru Blânzeanu <dblanzeanu@linux.microsoft.com>
---
accel/mshv/mshv-all.c | 18 +++++-------------
target/i386/mshv/mshv-cpu.c | 16 ----------------
2 files changed, 5 insertions(+), 29 deletions(-)
diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c
index 725ccd0511..99b2b3362a 100644
--- a/accel/mshv/mshv-all.c
+++ b/accel/mshv/mshv-all.c
@@ -187,7 +187,6 @@ static int create_partition(int mshv_fd, int *vm_fd)
{
int ret;
uint64_t pt_flags, host_proc_features;
- union hv_partition_processor_xsave_features disabled_xsave_features;
union hv_partition_processor_features disabled_partition_features = {0};
struct mshv_create_partition_v2 args = {0};
@@ -200,17 +199,6 @@ static int create_partition(int mshv_fd, int *vm_fd)
(1ULL << MSHV_PT_BIT_GPA_SUPER_PAGES) |
(1ULL << MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES);
- /* 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
* features: (0 means supported, 1 means disabled, hence the negation)
@@ -238,10 +226,14 @@ static int create_partition(int mshv_fd, int *vm_fd)
args.pt_cpu_fbanks[0] |= disabled_partition_features.as_uint64[0];
args.pt_cpu_fbanks[1] |= disabled_partition_features.as_uint64[1];
+ /*
+ * for now, all the xsave features are enabled, the filtering is only done
+ * at the CPUID level
+ * TODO: filter the xsave features based on the CPUID derived from Cpu model
+ */
/* populate args structure */
args.pt_flags = pt_flags;
args.pt_isolation = MSHV_PT_ISOLATION_NONE;
- args.pt_disabled_xsave = disabled_xsave_features.as_uint64;
args.pt_num_cpu_fbanks = MSHV_NUM_CPU_FEATURES_BANKS;
ret = ioctl(mshv_fd, MSHV_CREATE_PARTITION, &args);
diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c
index 7ce05bfb17..6a6b9ccd02 100644
--- a/target/i386/mshv/mshv-cpu.c
+++ b/target/i386/mshv/mshv-cpu.c
@@ -2244,22 +2244,6 @@ 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.53.0
prev parent reply other threads:[~2026-09-07 14:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 14:23 [PATCH 0/2] acce/mshv: size XSAVE buffers from the hypervisor Doru Blânzeanu
2026-09-07 14:23 ` [PATCH 1/2] accel/mshv: " Doru Blânzeanu
2026-09-08 11:26 ` Magnus Kulke
2026-09-07 14:23 ` Doru Blânzeanu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260907142355.141033-3-dblanzeanu@linux.microsoft.com \
--to=dblanzeanu@linux.microsoft.com \
--cc=dblanzeanu@microsoft.com \
--cc=liuwe@microsoft.com \
--cc=magnuskulke@linux.microsoft.com \
--cc=magnuskulke@microsoft.com \
--cc=qemu-devel@nongnu.org \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.