From: Zhao Liu <zhao1.liu@linux.intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Cc: Zhenyu Wang <zhenyu.z.wang@intel.com>,
Zhuocheng Ding <zhuocheng.ding@intel.com>,
Dapeng Mi <dapeng1.mi@intel.com>,
Yanting Jiang <yanting.jiang@intel.com>,
Yongwei Ma <yongwei.ma@intel.com>, Zhao Liu <zhao1.liu@intel.com>
Subject: [RFC 4/6] target/i386: Add support for Intel Thread Director feature
Date: Sat, 3 Feb 2024 17:30:52 +0800 [thread overview]
Message-ID: <20240203093054.412135-5-zhao1.liu@linux.intel.com> (raw)
In-Reply-To: <20240203093054.412135-1-zhao1.liu@linux.intel.com>
From: Zhao Liu <zhao1.liu@intel.com>
Intel Thread Director (ITD) is the extension of HFI, and it extends
the HFI to provide performance and energy efficiency data for advanced
classes of instructions [1].
From Alder Lake, Intel's client products support ITD, and this feature
can be used in VM to optimize scheduling on hybrid architectures.
Like HFI, ITD virtualization also has the same topology limitations
(only 1 die and 1 socket) because ITD's virtualization support is based
on HFI.
In order to avoid potential contention problems caused by multiple
virtual-packages/dies, add the following restrictions to the ITD feature
bit:
1. Mark ITD as no_autoenable_flags and it won't be enabled by default.
2. ITD can't be enabled for the case with multiple packages/dies.
ITD feature depends on HFI, so also add its dependency.
[1]: SDM, vol. 3B, section 15.6 HARDWARE FEEDBACK INTERFACE AND INTEL
THREAD DIRECTOR
Tested-by: Yanting Jiang <yanting.jiang@intel.com>
Co-developed-by: Zhuocheng Ding <zhuocheng.ding@intel.com>
Signed-off-by: Zhuocheng Ding <zhuocheng.ding@intel.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
target/i386/cpu.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index e3eb361436c9..55287d0a3e73 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1118,17 +1118,18 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, "hfi",
- NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, "itd",
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
},
.cpuid = { .eax = 6, .reg = R_EAX, },
.tcg_features = TCG_6_EAX_FEATURES,
/*
- * PTS and HFI shouldn't be enabled by default since they have
+ * PTS, HFI and ITD shouldn't be enabled by default since they have
* requirement for cpu topology.
*/
- .no_autoenable_flags = CPUID_6_EAX_PTS | CPUID_6_EAX_HFI,
+ .no_autoenable_flags = CPUID_6_EAX_PTS | CPUID_6_EAX_HFI |
+ CPUID_6_EAX_ITD,
},
[FEAT_XSAVE_XCR0_LO] = {
.type = CPUID_FEATURE_WORD,
@@ -1569,6 +1570,10 @@ static FeatureDep feature_dependencies[] = {
.from = { FEAT_6_EAX, CPUID_6_EAX_PTS },
.to = { FEAT_6_EAX, CPUID_6_EAX_HFI },
},
+ {
+ .from = { FEAT_6_EAX, CPUID_6_EAX_HFI },
+ .to = { FEAT_6_EAX, CPUID_6_EAX_ITD },
+ },
};
typedef struct X86RegisterInfo32 {
@@ -7468,10 +7473,10 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
return;
}
- if (env->features[FEAT_6_EAX] & CPUID_6_EAX_HFI &&
+ if (env->features[FEAT_6_EAX] & (CPUID_6_EAX_HFI | CPUID_6_EAX_ITD) &&
(ms->smp.dies > 1 || ms->smp.sockets > 1)) {
error_setg(errp,
- "HFI currently only supports die/package, "
+ "HFI/ITD currently only supports die/package, "
"please set by \"-smp ...,sockets=1,dies=1\"");
return;
}
--
2.34.1
next prev parent reply other threads:[~2024-02-03 9:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-03 9:30 [RFC 0/6] Intel Thread Director Virtualization Support in QEMU Zhao Liu
2024-02-03 9:30 ` [RFC 1/6] target/i386: Add support for save/load of ACPI thermal MSRs Zhao Liu
2024-02-03 9:30 ` [RFC 2/6] target/i386: Add support for Package Thermal Management feature Zhao Liu
2024-02-03 9:30 ` [RFC 3/6] target/i386: Add support for Hardware Feedback Interface feature Zhao Liu
2024-02-03 9:30 ` Zhao Liu [this message]
2024-02-03 9:30 ` [RFC 5/6] target/i386: Add support for HRESET feature Zhao Liu
2024-02-03 9:30 ` [RFC 6/6] i386: Add a new property to set ITD related feature bits for Guest Zhao Liu
2024-02-03 9:37 ` [RFC 0/6] Intel Thread Director Virtualization Support in QEMU Zhao Liu
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=20240203093054.412135-5-zhao1.liu@linux.intel.com \
--to=zhao1.liu@linux.intel.com \
--cc=dapeng1.mi@intel.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yanting.jiang@intel.com \
--cc=yongwei.ma@intel.com \
--cc=zhao1.liu@intel.com \
--cc=zhenyu.z.wang@intel.com \
--cc=zhuocheng.ding@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).