800917b5a2
- Update to Xen 4.1.2_rc2 c/s 23152 - bnc#716695 - domUs using tap devices will not start updated multi-xvdp.patch - Upstream patches from Jan 23803-intel-pmu-models.patch 23800-x86_64-guest-addr-range.patch 23795-intel-ich10-quirk.patch 23804-x86-IPI-counts.patch - bnc#706106 - Inconsistent reporting of VM names during migration xend-migration-domname-fix.patch - bnc#712823 - L3:Xen guest does not start reliable when rebooted xend-vcpu-affinity-fix.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=143
76 lines
3.2 KiB
Diff
76 lines
3.2 KiB
Diff
References: FATE#309900
|
|
|
|
# HG changeset patch
|
|
# User Andre Przywara <andre.przywara@amd.com>
|
|
# Date 1303116553 -3600
|
|
# Node ID bf7afd48339a18cd86d89337f3c055045fb78d3b
|
|
# Parent 1276926e3795b11ef6ac2f59df900d8e0ba9f54b
|
|
svm: add bit definitions for SVM DecodeAssist
|
|
|
|
Chapter 15.33 of recent APM Vol.2 manuals describe some additions
|
|
to SVM called DecodeAssist. Add the newly added fields to the VMCB
|
|
structure and name the associated CPUID bit.
|
|
|
|
Signed-off-by: Andre Przywara <andre.przywara@amd.com>
|
|
|
|
# HG changeset patch
|
|
# User Keir Fraser <keir@xen.org>
|
|
# Date 1303117802 -3600
|
|
# Node ID 381ab77db71a4739b8a4f4fdad4ef3504999f998
|
|
# Parent e324c4d1dd6eeb9417fec513640ca795bd0f5dd4
|
|
svm: decode-assists feature must depend on nextrip feature.
|
|
|
|
...since the decode-assist fast paths assume nextrip vmcb field is
|
|
valid.
|
|
|
|
Signed-off-by: Keir Fraser <keir@xen.org>
|
|
|
|
Index: xen-4.1.2-testing/xen/arch/x86/hvm/svm/svm.c
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/xen/arch/x86/hvm/svm/svm.c
|
|
+++ xen-4.1.2-testing/xen/arch/x86/hvm/svm/svm.c
|
|
@@ -928,11 +928,16 @@ struct hvm_function_table * __init start
|
|
|
|
printk("SVM: Supported advanced features:\n");
|
|
|
|
+ /* DecodeAssists fast paths assume nextrip is valid for fast rIP update. */
|
|
+ if ( !cpu_has_svm_nrips )
|
|
+ clear_bit(SVM_FEATURE_DECODEASSISTS, &svm_feature_flags);
|
|
+
|
|
#define P(p,s) if ( p ) { printk(" - %s\n", s); printed = 1; }
|
|
P(cpu_has_svm_npt, "Nested Page Tables (NPT)");
|
|
P(cpu_has_svm_lbrv, "Last Branch Record (LBR) Virtualisation");
|
|
P(cpu_has_svm_nrips, "Next-RIP Saved on #VMEXIT");
|
|
P(cpu_has_svm_cleanbits, "VMCB Clean Bits");
|
|
+ P(cpu_has_svm_decode, "DecodeAssists");
|
|
P(cpu_has_pause_filter, "Pause-Intercept Filter");
|
|
#undef P
|
|
|
|
Index: xen-4.1.2-testing/xen/include/asm-x86/hvm/svm/svm.h
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/xen/include/asm-x86/hvm/svm/svm.h
|
|
+++ xen-4.1.2-testing/xen/include/asm-x86/hvm/svm/svm.h
|
|
@@ -80,6 +80,7 @@ extern u32 svm_feature_flags;
|
|
#define cpu_has_svm_svml cpu_has_svm_feature(SVM_FEATURE_SVML)
|
|
#define cpu_has_svm_nrips cpu_has_svm_feature(SVM_FEATURE_NRIPS)
|
|
#define cpu_has_svm_cleanbits cpu_has_svm_feature(SVM_FEATURE_VMCBCLEAN)
|
|
+#define cpu_has_svm_decode cpu_has_svm_feature(SVM_FEATURE_DECODEASSISTS)
|
|
#define cpu_has_pause_filter cpu_has_svm_feature(SVM_FEATURE_PAUSEFILTER)
|
|
|
|
#endif /* __ASM_X86_HVM_SVM_H__ */
|
|
Index: xen-4.1.2-testing/xen/include/asm-x86/hvm/svm/vmcb.h
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/xen/include/asm-x86/hvm/svm/vmcb.h
|
|
+++ xen-4.1.2-testing/xen/include/asm-x86/hvm/svm/vmcb.h
|
|
@@ -432,7 +432,9 @@ struct vmcb_struct {
|
|
vmcbcleanbits_t cleanbits; /* offset 0xC0 */
|
|
u32 res09; /* offset 0xC4 */
|
|
u64 nextrip; /* offset 0xC8 */
|
|
- u64 res10a[102]; /* offset 0xD0 pad to save area */
|
|
+ u8 guest_ins_len; /* offset 0xD0 */
|
|
+ u8 guest_ins[15]; /* offset 0xD1 */
|
|
+ u64 res10a[100]; /* offset 0xE0 pad to save area */
|
|
|
|
svm_segment_register_t es; /* offset 1024 - cleanbit 8 */
|
|
svm_segment_register_t cs; /* cleanbit 8 */
|