[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 7/8] x86/SVM: Introduce svm command line option
From: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx> This patch introduces a new Xen command line option to enable/disable SVM sub-options. Currently, it support sub-option "avic", which can be used to enable/disable SVM AVIC feature. Signed-off-by: Suavee Suthikulpant <suravee.suthikulpanit@xxxxxxx> Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@xxxxxxx> --- docs/misc/xen-command-line.markdown | 16 ++++++++++++++++ xen/arch/x86/hvm/svm/svm.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index b353352adf..60a1005c42 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -1730,6 +1730,22 @@ enforces the maximum theoretically necessary timeout of 670ms. Any number is being interpreted as a custom timeout in milliseconds. Zero or boolean false disable the quirk workaround, which is also the default. +### svm +> `= List of [ avic ]` + +> Sub-options: + +> All sub-options are of boolean kind and can be prefixed with `no-` to +> effect the inverse meaning. + +> `avic` + +> Default: `false` + +>> This option enables Advanced Virtual Interrupt Controller (AVIC), +>> which is an extension of AMD Secure Virtual Machine (SVM) to virtualize +>> local APIC for guest VM. + ### sync\_console > `= <boolean>` diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index fdbe8e3008..0c5c26cce8 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -64,6 +64,16 @@ #include <asm/monitor.h> #include <asm/xstate.h> +static int parse_svm_param(const char *s); + +/* + * The 'svm' parameter en/dis-ables various SVM features. + * Optional comma separated value may contain: + * + * avic - Enable SVM Advanced Virtual Interrupt Controller (AVIC) + */ +custom_param("svm", parse_svm_param); + void svm_asm_do_resume(void); u32 svm_feature_flags; @@ -89,6 +99,28 @@ static bool_t amd_erratum383_found __read_mostly; static uint64_t osvw_length, osvw_status; static DEFINE_SPINLOCK(osvw_lock); +static int __init parse_svm_param(const char *s) +{ + char *ss; + int val; + + do { + val = !!strncmp(s, "no-", 3); + if ( !val ) + s += 3; + + ss = strchr(s, ','); + if ( ss ) + *ss = '\0'; + + if ( !strcmp(s, "avic") ) + svm_avic = val; + + s = ss + 1; + } while ( ss ); + + return 0; +} /* Only crash the guest if the problem originates in kernel mode. */ static void svm_crash_or_fault(struct vcpu *v) { -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |