* [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-08 18:48 konrad
2014-07-08 18:22 ` Boris Ostrovsky
0 siblings, 1 reply; 16+ messages in thread
From: konrad @ 2014-07-08 18:48 UTC (permalink / raw)
To: xen-devel, david.vrabel, boris.ostrovsky
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
run, they will enable the PV extensions (drivers, interrupts, timers,
etc) - which is perfect.
However, in some cases (kexec not fully wokring, benchmarking)
we want to disable Xen PV extensions. As such introduce the
'xen_nopv' parameter that will do it.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
---
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/xen/enlighten.c | 14 ++++++++++++++
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1b9aa8..5dcfa6e 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Disables the ticketlock slowpath using Xen PV
optimizations.
+ xen_nopv [X86,XEN]
+ Disables the PV optimizations forcing the guest to run
+ as generic HVM guest with no PV drivers.
+
xirc2ps_cs= [NET,PCMCIA]
Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index e220197..fec8963 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1930,10 +1930,21 @@ static void __init xen_hvm_guest_init(void)
#endif
}
+static bool off = false;
+static __init int xen_parse_nopv(char *arg)
+{
+ off = true;
+ return 0;
+}
+early_param("xen_nopv", xen_parse_nopv);
+
static uint32_t __init xen_hvm_platform(void)
{
uint32_t eax, ebx, ecx, edx, base;
+ if (off)
+ return 0;
+
if (xen_pv_domain())
return 0;
@@ -1953,6 +1964,9 @@ static uint32_t __init xen_hvm_platform(void)
bool xen_hvm_need_lapic(void)
{
+ if (off)
+ return false;
+
if (xen_pv_domain())
return false;
if (!xen_hvm_domain())
--
1.7.7.6
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-08 18:48 [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests konrad
@ 2014-07-08 18:22 ` Boris Ostrovsky
2014-07-08 18:47 ` Konrad Rzeszutek Wilk
0 siblings, 1 reply; 16+ messages in thread
From: Boris Ostrovsky @ 2014-07-08 18:22 UTC (permalink / raw)
To: konrad, xen-devel, david.vrabel
On 07/08/2014 02:48 PM, konrad@kernel.org wrote:
> From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>
> By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
> run, they will enable the PV extensions (drivers, interrupts, timers,
> etc) - which is perfect.
>
> However, in some cases (kexec not fully wokring, benchmarking)
> we want to disable Xen PV extensions. As such introduce the
> 'xen_nopv' parameter that will do it.
>
> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> ---
> Documentation/kernel-parameters.txt | 4 ++++
> arch/x86/xen/enlighten.c | 14 ++++++++++++++
> 2 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index c1b9aa8..5dcfa6e 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> Disables the ticketlock slowpath using Xen PV
> optimizations.
>
> + xen_nopv [X86,XEN]
> + Disables the PV optimizations forcing the guest to run
> + as generic HVM guest with no PV drivers.
> +
> xirc2ps_cs= [NET,PCMCIA]
> Format:
> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index e220197..fec8963 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -1930,10 +1930,21 @@ static void __init xen_hvm_guest_init(void)
> #endif
> }
>
> +static bool off = false;
A more descriptive name would be better.
-boris
> +static __init int xen_parse_nopv(char *arg)
> +{
> + off = true;
> + return 0;
> +}
> +early_param("xen_nopv", xen_parse_nopv);
> +
> static uint32_t __init xen_hvm_platform(void)
> {
> uint32_t eax, ebx, ecx, edx, base;
>
> + if (off)
> + return 0;
> +
> if (xen_pv_domain())
> return 0;
>
> @@ -1953,6 +1964,9 @@ static uint32_t __init xen_hvm_platform(void)
>
> bool xen_hvm_need_lapic(void)
> {
> + if (off)
> + return false;
> +
> if (xen_pv_domain())
> return false;
> if (!xen_hvm_domain())
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-08 18:22 ` Boris Ostrovsky
@ 2014-07-08 18:47 ` Konrad Rzeszutek Wilk
2014-07-08 18:54 ` Boris Ostrovsky
0 siblings, 1 reply; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-08 18:47 UTC (permalink / raw)
To: Boris Ostrovsky; +Cc: konrad, david.vrabel, xen-devel
On Tue, Jul 08, 2014 at 02:22:48PM -0400, Boris Ostrovsky wrote:
> On 07/08/2014 02:48 PM, konrad@kernel.org wrote:
> >From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> >
> >By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
> >run, they will enable the PV extensions (drivers, interrupts, timers,
> >etc) - which is perfect.
> >
> >However, in some cases (kexec not fully wokring, benchmarking)
> >we want to disable Xen PV extensions. As such introduce the
> >'xen_nopv' parameter that will do it.
> >
> >Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> >---
> > Documentation/kernel-parameters.txt | 4 ++++
> > arch/x86/xen/enlighten.c | 14 ++++++++++++++
> > 2 files changed, 18 insertions(+), 0 deletions(-)
> >
> >diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> >index c1b9aa8..5dcfa6e 100644
> >--- a/Documentation/kernel-parameters.txt
> >+++ b/Documentation/kernel-parameters.txt
> >@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> > Disables the ticketlock slowpath using Xen PV
> > optimizations.
> >+ xen_nopv [X86,XEN]
> >+ Disables the PV optimizations forcing the guest to run
> >+ as generic HVM guest with no PV drivers.
> >+
> > xirc2ps_cs= [NET,PCMCIA]
> > Format:
> > <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> >diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> >index e220197..fec8963 100644
> >--- a/arch/x86/xen/enlighten.c
> >+++ b/arch/x86/xen/enlighten.c
> >@@ -1930,10 +1930,21 @@ static void __init xen_hvm_guest_init(void)
> > #endif
> > }
> >+static bool off = false;
>
> A more descriptive name would be better.
disable_pv ?
disable?
xen_pvoff ?
ignore_xen ?
>
> -boris
>
> >+static __init int xen_parse_nopv(char *arg)
> >+{
> >+ off = true;
> >+ return 0;
> >+}
> >+early_param("xen_nopv", xen_parse_nopv);
> >+
> > static uint32_t __init xen_hvm_platform(void)
> > {
> > uint32_t eax, ebx, ecx, edx, base;
> >+ if (off)
> >+ return 0;
> >+
> > if (xen_pv_domain())
> > return 0;
> >@@ -1953,6 +1964,9 @@ static uint32_t __init xen_hvm_platform(void)
> > bool xen_hvm_need_lapic(void)
> > {
> >+ if (off)
> >+ return false;
> >+
> > if (xen_pv_domain())
> > return false;
> > if (!xen_hvm_domain())
>
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-08 18:47 ` Konrad Rzeszutek Wilk
@ 2014-07-08 18:54 ` Boris Ostrovsky
0 siblings, 0 replies; 16+ messages in thread
From: Boris Ostrovsky @ 2014-07-08 18:54 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk; +Cc: konrad, david.vrabel, xen-devel
On 07/08/2014 02:47 PM, Konrad Rzeszutek Wilk wrote:
> On Tue, Jul 08, 2014 at 02:22:48PM -0400, Boris Ostrovsky wrote:
>> On 07/08/2014 02:48 PM, konrad@kernel.org wrote:
>>> From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>>
>>> By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
>>> run, they will enable the PV extensions (drivers, interrupts, timers,
>>> etc) - which is perfect.
>>>
>>> However, in some cases (kexec not fully wokring, benchmarking)
>>> we want to disable Xen PV extensions. As such introduce the
>>> 'xen_nopv' parameter that will do it.
>>>
>>> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>> ---
>>> Documentation/kernel-parameters.txt | 4 ++++
>>> arch/x86/xen/enlighten.c | 14 ++++++++++++++
>>> 2 files changed, 18 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
>>> index c1b9aa8..5dcfa6e 100644
>>> --- a/Documentation/kernel-parameters.txt
>>> +++ b/Documentation/kernel-parameters.txt
>>> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>>> Disables the ticketlock slowpath using Xen PV
>>> optimizations.
>>> + xen_nopv [X86,XEN]
>>> + Disables the PV optimizations forcing the guest to run
>>> + as generic HVM guest with no PV drivers.
>>> +
>>> xirc2ps_cs= [NET,PCMCIA]
>>> Format:
>>> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
>>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
>>> index e220197..fec8963 100644
>>> --- a/arch/x86/xen/enlighten.c
>>> +++ b/arch/x86/xen/enlighten.c
>>> @@ -1930,10 +1930,21 @@ static void __init xen_hvm_guest_init(void)
>>> #endif
>>> }
>>> +static bool off = false;
>> A more descriptive name would be better.
> disable_pv ?
>
> disable?
>
> xen_pvoff ?
>
> ignore_xen ?
How about xen_nopv, to be consistent with the boot option.
-boris
>
>
>> -boris
>>
>>> +static __init int xen_parse_nopv(char *arg)
>>> +{
>>> + off = true;
>>> + return 0;
>>> +}
>>> +early_param("xen_nopv", xen_parse_nopv);
>>> +
>>> static uint32_t __init xen_hvm_platform(void)
>>> {
>>> uint32_t eax, ebx, ecx, edx, base;
>>> + if (off)
>>> + return 0;
>>> +
>>> if (xen_pv_domain())
>>> return 0;
>>> @@ -1953,6 +1964,9 @@ static uint32_t __init xen_hvm_platform(void)
>>> bool xen_hvm_need_lapic(void)
>>> {
>>> + if (off)
>>> + return false;
>>> +
>>> if (xen_pv_domain())
>>> return false;
>>> if (!xen_hvm_domain())
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 19:53 konrad
2014-07-11 22:52 ` H. Peter Anvin
2014-07-11 22:52 ` H. Peter Anvin
0 siblings, 2 replies; 16+ messages in thread
From: konrad @ 2014-07-11 19:53 UTC (permalink / raw)
To: xen-devel, david.vrabel, boris.ostrovsky, linux-kernel
Cc: Konrad Rzeszutek Wilk
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
run, they will enable the PV extensions (drivers, interrupts, timers,
etc) - which is the best option for the majority of
use cases.
However, in some cases (kexec not fully working, benchmarking)
we want to disable Xen PV extensions. As such introduce the
'xen_nopv' parameter that will do it.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
---
[v2: s/off/xen_nopv/ per Boris Ostrovsky recommendation.]
[v3: Add Reviewed-by]
---
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/xen/enlighten.c | 13 +++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1b9aa8..5dcfa6e 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Disables the ticketlock slowpath using Xen PV
optimizations.
+ xen_nopv [X86,XEN]
+ Disables the PV optimizations forcing the guest to run
+ as generic HVM guest with no PV drivers.
+
xirc2ps_cs= [NET,PCMCIA]
Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ffb101e..eb82239 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
xen_hvm_init_mmu_ops();
}
+static bool xen_nopv = false;
+static __init int xen_parse_nopv(char *arg)
+{
+ xen_nopv = true;
+ return 0;
+}
+early_param("xen_nopv", xen_parse_nopv);
+
static uint32_t __init xen_hvm_platform(void)
{
+ if (xen_nopv)
+ return 0;
+
if (xen_pv_domain())
return 0;
@@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
bool xen_hvm_need_lapic(void)
{
+ if (xen_nopv)
+ return false;
if (xen_pv_domain())
return false;
if (!xen_hvm_domain())
--
1.7.7.6
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-11 19:53 konrad
@ 2014-07-11 22:52 ` H. Peter Anvin
2014-07-11 22:52 ` H. Peter Anvin
1 sibling, 0 replies; 16+ messages in thread
From: H. Peter Anvin @ 2014-07-11 22:52 UTC (permalink / raw)
To: konrad, xen-devel, david.vrabel, boris.ostrovsky, linux-kernel
On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index c1b9aa8..5dcfa6e 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> Disables the ticketlock slowpath using Xen PV
> optimizations.
>
> + xen_nopv [X86,XEN]
> + Disables the PV optimizations forcing the guest to run
> + as generic HVM guest with no PV drivers.
> +
> xirc2ps_cs= [NET,PCMCIA]
> Format:
> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index ffb101e..eb82239 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> xen_hvm_init_mmu_ops();
> }
>
> +static bool xen_nopv = false;
> +static __init int xen_parse_nopv(char *arg)
> +{
> + xen_nopv = true;
> + return 0;
> +}
> +early_param("xen_nopv", xen_parse_nopv);
> +
> static uint32_t __init xen_hvm_platform(void)
> {
> + if (xen_nopv)
> + return 0;
> +
> if (xen_pv_domain())
> return 0;
>
> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
>
> bool xen_hvm_need_lapic(void)
> {
> + if (xen_nopv)
> + return false;
> if (xen_pv_domain())
> return false;
> if (!xen_hvm_domain())
>
Any reason to not simply let xen_pv_domain() return false here?
Also, the latter seems a bit odd?
-hpa
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-11 19:53 konrad
2014-07-11 22:52 ` H. Peter Anvin
@ 2014-07-11 22:52 ` H. Peter Anvin
1 sibling, 0 replies; 16+ messages in thread
From: H. Peter Anvin @ 2014-07-11 22:52 UTC (permalink / raw)
To: konrad, xen-devel, david.vrabel, boris.ostrovsky, linux-kernel
Cc: Konrad Rzeszutek Wilk
On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index c1b9aa8..5dcfa6e 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> Disables the ticketlock slowpath using Xen PV
> optimizations.
>
> + xen_nopv [X86,XEN]
> + Disables the PV optimizations forcing the guest to run
> + as generic HVM guest with no PV drivers.
> +
> xirc2ps_cs= [NET,PCMCIA]
> Format:
> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index ffb101e..eb82239 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> xen_hvm_init_mmu_ops();
> }
>
> +static bool xen_nopv = false;
> +static __init int xen_parse_nopv(char *arg)
> +{
> + xen_nopv = true;
> + return 0;
> +}
> +early_param("xen_nopv", xen_parse_nopv);
> +
> static uint32_t __init xen_hvm_platform(void)
> {
> + if (xen_nopv)
> + return 0;
> +
> if (xen_pv_domain())
> return 0;
>
> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
>
> bool xen_hvm_need_lapic(void)
> {
> + if (xen_nopv)
> + return false;
> if (xen_pv_domain())
> return false;
> if (!xen_hvm_domain())
>
Any reason to not simply let xen_pv_domain() return false here?
Also, the latter seems a bit odd?
-hpa
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 19:53 konrad
0 siblings, 0 replies; 16+ messages in thread
From: konrad @ 2014-07-11 19:53 UTC (permalink / raw)
To: xen-devel, david.vrabel, boris.ostrovsky, linux-kernel
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
run, they will enable the PV extensions (drivers, interrupts, timers,
etc) - which is the best option for the majority of
use cases.
However, in some cases (kexec not fully working, benchmarking)
we want to disable Xen PV extensions. As such introduce the
'xen_nopv' parameter that will do it.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
---
[v2: s/off/xen_nopv/ per Boris Ostrovsky recommendation.]
[v3: Add Reviewed-by]
---
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/xen/enlighten.c | 13 +++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1b9aa8..5dcfa6e 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Disables the ticketlock slowpath using Xen PV
optimizations.
+ xen_nopv [X86,XEN]
+ Disables the PV optimizations forcing the guest to run
+ as generic HVM guest with no PV drivers.
+
xirc2ps_cs= [NET,PCMCIA]
Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ffb101e..eb82239 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
xen_hvm_init_mmu_ops();
}
+static bool xen_nopv = false;
+static __init int xen_parse_nopv(char *arg)
+{
+ xen_nopv = true;
+ return 0;
+}
+early_param("xen_nopv", xen_parse_nopv);
+
static uint32_t __init xen_hvm_platform(void)
{
+ if (xen_nopv)
+ return 0;
+
if (xen_pv_domain())
return 0;
@@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
bool xen_hvm_need_lapic(void)
{
+ if (xen_nopv)
+ return false;
if (xen_pv_domain())
return false;
if (!xen_hvm_domain())
--
1.7.7.6
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 23:09 Konrad Rzeszutek Wilk
2014-07-11 23:14 ` H. Peter Anvin
2014-07-11 23:14 ` H. Peter Anvin
0 siblings, 2 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-11 23:09 UTC (permalink / raw)
To: H. Peter Anvin
Cc: xen-devel, konrad, boris.ostrovsky, linux-kernel, david.vrabel
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=utf-8, Size: 2091 bytes --]
On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>
> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
> >
> > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> > index c1b9aa8..5dcfa6e 100644
> > --- a/Documentation/kernel-parameters.txt
> > +++ b/Documentation/kernel-parameters.txt
> > @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> >Â Disables the ticketlock slowpath using Xen PV
> >Â optimizations.
> >Â
> > + xen_nopv [X86,XEN]
> > + Disables the PV optimizations forcing the guest to run
> > + as generic HVM guest with no PV drivers.
> > +
> >Â xirc2ps_cs= [NET,PCMCIA]
> >Â Format:
> >Â <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> > diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> > index ffb101e..eb82239 100644
> > --- a/arch/x86/xen/enlighten.c
> > +++ b/arch/x86/xen/enlighten.c
> > @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> >Â xen_hvm_init_mmu_ops();
> >Â }
> >Â
> > +static bool xen_nopv = false;
> > +static __init int xen_parse_nopv(char *arg)
> > +{
> > +Â Â Â Â Â Â xen_nopv = true;
> > +Â Â Â Â Â Â return 0;
> > +}
> > +early_param("xen_nopv", xen_parse_nopv);
> > +
> >Â static uint32_t __init xen_hvm_platform(void)
> >Â {
> > + if (xen_nopv)
> > + return 0;
> > +
> >Â if (xen_pv_domain())
> >Â return 0;
> >Â
> > @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
> >Â
> >Â bool xen_hvm_need_lapic(void)
> >Â {
> > + if (xen_nopv)
> > + return false;
> >Â if (xen_pv_domain())
> >Â return false;
> >Â if (!xen_hvm_domain())
> >
>
> Any reason to not simply let xen_pv_domain() return false here?
It does return false already.
Did you mean to collapse them together?
>
> Also, the latter seems a bit odd?
>
> -hpa
>
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-11 23:09 Konrad Rzeszutek Wilk
@ 2014-07-11 23:14 ` H. Peter Anvin
2014-07-11 23:14 ` H. Peter Anvin
1 sibling, 0 replies; 16+ messages in thread
From: H. Peter Anvin @ 2014-07-11 23:14 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk
Cc: xen-devel, boris.ostrovsky, david.vrabel, linux-kernel, konrad
On 07/11/2014 04:09 PM, Konrad Rzeszutek Wilk wrote:
>
> On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>>
>> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
>>>
>>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
>>> index c1b9aa8..5dcfa6e 100644
>>> --- a/Documentation/kernel-parameters.txt
>>> +++ b/Documentation/kernel-parameters.txt
>>> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>>> Disables the ticketlock slowpath using Xen PV
>>> optimizations.
>>>
>>> + xen_nopv [X86,XEN]
>>> + Disables the PV optimizations forcing the guest to run
>>> + as generic HVM guest with no PV drivers.
>>> +
>>> xirc2ps_cs= [NET,PCMCIA]
>>> Format:
>>> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
>>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
>>> index ffb101e..eb82239 100644
>>> --- a/arch/x86/xen/enlighten.c
>>> +++ b/arch/x86/xen/enlighten.c
>>> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
>>> xen_hvm_init_mmu_ops();
>>> }
>>>
>>> +static bool xen_nopv = false;
>>> +static __init int xen_parse_nopv(char *arg)
>>> +{
>>> + xen_nopv = true;
>>> + return 0;
>>> +}
>>> +early_param("xen_nopv", xen_parse_nopv);
>>> +
>>> static uint32_t __init xen_hvm_platform(void)
>>> {
>>> + if (xen_nopv)
>>> + return 0;
>>> +
>>> if (xen_pv_domain())
>>> return 0;
>>>
>>> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
>>>
>>> bool xen_hvm_need_lapic(void)
>>> {
>>> + if (xen_nopv)
>>> + return false;
>>> if (xen_pv_domain())
>>> return false;
>>> if (!xen_hvm_domain())
>>>
>>
>> Any reason to not simply let xen_pv_domain() return false here?
>
> It does return false already.
>
> Did you mean to collapse them together?
OK, I'm confused. The description of the option makes it look like it
could disable things associated with PV domains, but it looks like it
actually disables things having to do with HVM domains...
-hpa
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
2014-07-11 23:09 Konrad Rzeszutek Wilk
2014-07-11 23:14 ` H. Peter Anvin
@ 2014-07-11 23:14 ` H. Peter Anvin
1 sibling, 0 replies; 16+ messages in thread
From: H. Peter Anvin @ 2014-07-11 23:14 UTC (permalink / raw)
To: Konrad Rzeszutek Wilk
Cc: xen-devel, konrad, boris.ostrovsky, linux-kernel, david.vrabel
On 07/11/2014 04:09 PM, Konrad Rzeszutek Wilk wrote:
>
> On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>>
>> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
>>>
>>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
>>> index c1b9aa8..5dcfa6e 100644
>>> --- a/Documentation/kernel-parameters.txt
>>> +++ b/Documentation/kernel-parameters.txt
>>> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>>> Disables the ticketlock slowpath using Xen PV
>>> optimizations.
>>>
>>> + xen_nopv [X86,XEN]
>>> + Disables the PV optimizations forcing the guest to run
>>> + as generic HVM guest with no PV drivers.
>>> +
>>> xirc2ps_cs= [NET,PCMCIA]
>>> Format:
>>> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
>>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
>>> index ffb101e..eb82239 100644
>>> --- a/arch/x86/xen/enlighten.c
>>> +++ b/arch/x86/xen/enlighten.c
>>> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
>>> xen_hvm_init_mmu_ops();
>>> }
>>>
>>> +static bool xen_nopv = false;
>>> +static __init int xen_parse_nopv(char *arg)
>>> +{
>>> + xen_nopv = true;
>>> + return 0;
>>> +}
>>> +early_param("xen_nopv", xen_parse_nopv);
>>> +
>>> static uint32_t __init xen_hvm_platform(void)
>>> {
>>> + if (xen_nopv)
>>> + return 0;
>>> +
>>> if (xen_pv_domain())
>>> return 0;
>>>
>>> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
>>>
>>> bool xen_hvm_need_lapic(void)
>>> {
>>> + if (xen_nopv)
>>> + return false;
>>> if (xen_pv_domain())
>>> return false;
>>> if (!xen_hvm_domain())
>>>
>>
>> Any reason to not simply let xen_pv_domain() return false here?
>
> It does return false already.
>
> Did you mean to collapse them together?
OK, I'm confused. The description of the option makes it look like it
could disable things associated with PV domains, but it looks like it
actually disables things having to do with HVM domains...
-hpa
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 23:09 Konrad Rzeszutek Wilk
0 siblings, 0 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-11 23:09 UTC (permalink / raw)
To: H. Peter Anvin
Cc: xen-devel, boris.ostrovsky, david.vrabel, linux-kernel, konrad
On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>
> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
> >
> > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> > index c1b9aa8..5dcfa6e 100644
> > --- a/Documentation/kernel-parameters.txt
> > +++ b/Documentation/kernel-parameters.txt
> > @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> > Disables the ticketlock slowpath using Xen PV
> > optimizations.
> >
> > + xen_nopv [X86,XEN]
> > + Disables the PV optimizations forcing the guest to run
> > + as generic HVM guest with no PV drivers.
> > +
> > xirc2ps_cs= [NET,PCMCIA]
> > Format:
> > <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> > diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> > index ffb101e..eb82239 100644
> > --- a/arch/x86/xen/enlighten.c
> > +++ b/arch/x86/xen/enlighten.c
> > @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> > xen_hvm_init_mmu_ops();
> > }
> >
> > +static bool xen_nopv = false;
> > +static __init int xen_parse_nopv(char *arg)
> > +{
> > + xen_nopv = true;
> > + return 0;
> > +}
> > +early_param("xen_nopv", xen_parse_nopv);
> > +
> > static uint32_t __init xen_hvm_platform(void)
> > {
> > + if (xen_nopv)
> > + return 0;
> > +
> > if (xen_pv_domain())
> > return 0;
> >
> > @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
> >
> > bool xen_hvm_need_lapic(void)
> > {
> > + if (xen_nopv)
> > + return false;
> > if (xen_pv_domain())
> > return false;
> > if (!xen_hvm_domain())
> >
>
> Any reason to not simply let xen_pv_domain() return false here?
It does return false already.
Did you mean to collapse them together?
>
> Also, the latter seems a bit odd?
>
> -hpa
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 23:31 Konrad Rzeszutek Wilk
0 siblings, 0 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-11 23:31 UTC (permalink / raw)
To: H. Peter Anvin
Cc: konrad, boris.ostrovsky, david.vrabel, linux-kernel, xen-devel
On Jul 11, 2014 7:14 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>
> On 07/11/2014 04:09 PM, Konrad Rzeszutek Wilk wrote:
> >
> > On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
> >>
> >> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
> >>>
> >>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> >>> index c1b9aa8..5dcfa6e 100644
> >>> --- a/Documentation/kernel-parameters.txt
> >>> +++ b/Documentation/kernel-parameters.txt
> >>> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> >>> Disables the ticketlock slowpath using Xen PV
> >>> optimizations.
> >>>
> >>> + xen_nopv [X86,XEN]
> >>> + Disables the PV optimizations forcing the guest to run
> >>> + as generic HVM guest with no PV drivers.
> >>> +
> >>> xirc2ps_cs= [NET,PCMCIA]
> >>> Format:
> >>> <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> >>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> >>> index ffb101e..eb82239 100644
> >>> --- a/arch/x86/xen/enlighten.c
> >>> +++ b/arch/x86/xen/enlighten.c
> >>> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> >>> xen_hvm_init_mmu_ops();
> >>> }
> >>>
> >>> +static bool xen_nopv = false;
> >>> +static __init int xen_parse_nopv(char *arg)
> >>> +{
> >>> + xen_nopv = true;
> >>> + return 0;
> >>> +}
> >>> +early_param("xen_nopv", xen_parse_nopv);
> >>> +
> >>> static uint32_t __init xen_hvm_platform(void)
> >>> {
> >>> + if (xen_nopv)
> >>> + return 0;
> >>> +
> >>> if (xen_pv_domain())
> >>> return 0;
> >>>
> >>> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
> >>>
> >>> bool xen_hvm_need_lapic(void)
> >>> {
> >>> + if (xen_nopv)
> >>> + return false;
> >>> if (xen_pv_domain())
> >>> return false;
> >>> if (!xen_hvm_domain())
> >>>
> >>
> >> Any reason to not simply let xen_pv_domain() return false here?
> >
> > It does return false already.
> >
> > Did you mean to collapse them together?
>
> OK, I'm confused. The description of the option makes it look like it
> could disable things associated with PV domains, but it looks like it
> actually disables things having to do with HVM domains...
>
Thank you for pointing that out. I will update the documentation to be more clear and specific. It is as you surmised only for HVM guest.
The a
> -hpa
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-11 23:31 Konrad Rzeszutek Wilk
0 siblings, 0 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-11 23:31 UTC (permalink / raw)
To: H. Peter Anvin
Cc: konrad, xen-devel, boris.ostrovsky, david.vrabel, linux-kernel
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=utf-8, Size: 2715 bytes --]
On Jul 11, 2014 7:14 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
>
> On 07/11/2014 04:09 PM, Konrad Rzeszutek Wilk wrote:
> >
> > On Jul 11, 2014 6:52 PM, "H. Peter Anvin" <hpa@zytor.com> wrote:
> >>
> >> On 07/11/2014 12:53 PM, konrad@kernel.org wrote:
> >>>
> >>> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> >>> index c1b9aa8..5dcfa6e 100644
> >>> --- a/Documentation/kernel-parameters.txt
> >>> +++ b/Documentation/kernel-parameters.txt
> >>> @@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> >>>Â Â Disables the ticketlock slowpath using Xen PV
> >>>Â Â optimizations.
> >>>Â Â
> >>> + xen_nopv [X86,XEN]
> >>> + Disables the PV optimizations forcing the guest to run
> >>> + as generic HVM guest with no PV drivers.
> >>> +
> >>>Â Â xirc2ps_cs= [NET,PCMCIA]
> >>>Â Â Format:
> >>>Â Â <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
> >>> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> >>> index ffb101e..eb82239 100644
> >>> --- a/arch/x86/xen/enlighten.c
> >>> +++ b/arch/x86/xen/enlighten.c
> >>> @@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
> >>>Â Â xen_hvm_init_mmu_ops();
> >>>Â Â }
> >>>Â Â
> >>> +static bool xen_nopv = false;
> >>> +static __init int xen_parse_nopv(char *arg)
> >>> +{
> >>> +Â Â Â Â Â Â xen_nopv = true;
> >>> +Â Â Â Â Â Â return 0;
> >>> +}
> >>> +early_param("xen_nopv", xen_parse_nopv);
> >>> +
> >>>Â Â static uint32_t __init xen_hvm_platform(void)
> >>>Â Â {
> >>> + if (xen_nopv)
> >>> + return 0;
> >>> +
> >>>Â Â if (xen_pv_domain())
> >>>Â Â return 0;
> >>>Â Â
> >>> @@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
> >>>Â Â
> >>>Â Â bool xen_hvm_need_lapic(void)
> >>>Â Â {
> >>> + if (xen_nopv)
> >>> + return false;
> >>>Â Â if (xen_pv_domain())
> >>>Â Â return false;
> >>>Â Â if (!xen_hvm_domain())
> >>>
> >>
> >> Any reason to not simply let xen_pv_domain() return false here?
> >
> > It does return false already.
> >
> > Did you mean to collapse them together?
>
> OK, I'm confused. The description of the option makes it look like it
> could disable things associated with PV domains, but it looks like it
> actually disables things having to do with HVM domains...
>
Thank you for pointing that out. I will update the documentation to be more clear and specific. It is as you surmised only for HVM guest.
The a
> -hpa
>
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-14 16:23 Konrad Rzeszutek Wilk
0 siblings, 0 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-14 16:23 UTC (permalink / raw)
To: boris.ostrovsky, david.vrabel, hpa, linux-kernel, xen-devel
Cc: Konrad Rzeszutek Wilk
By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
run, they will enable the PV extensions (drivers, interrupts, timers,
etc) - which is the best option for the majority of use cases.
However, in some cases (kexec not fully working, benchmarking)
we want to disable Xen PV extensions. As such introduce the
'xen_nopv' parameter that will do it.
This parameter is intended only for HVM guests as the Xen PV
guests MUST boot with PV extensions. However, even if you use
'xen_nopv' on Xen PV guests it will be ignored.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
---
[v2: s/off/xen_nopv/ per Boris Ostrovsky recommendation.]
[v3: Add Reviewed-by]
[v4: Clarify that this is only for HVM guests]
---
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/xen/enlighten.c | 13 +++++++++++++
2 files changed, 17 insertions(+)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1b9aa8..403f927 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Disables the ticketlock slowpath using Xen PV
optimizations.
+ xen_nopv [X86]
+ Disables the PV optimizations forcing the HVM guest to
+ run as generic HVM guest with no PV drivers.
+
xirc2ps_cs= [NET,PCMCIA]
Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ffb101e..eb82239 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
xen_hvm_init_mmu_ops();
}
+static bool xen_nopv = false;
+static __init int xen_parse_nopv(char *arg)
+{
+ xen_nopv = true;
+ return 0;
+}
+early_param("xen_nopv", xen_parse_nopv);
+
static uint32_t __init xen_hvm_platform(void)
{
+ if (xen_nopv)
+ return 0;
+
if (xen_pv_domain())
return 0;
@@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
bool xen_hvm_need_lapic(void)
{
+ if (xen_nopv)
+ return false;
if (xen_pv_domain())
return false;
if (!xen_hvm_domain())
--
1.9.3
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests.
@ 2014-07-14 16:23 Konrad Rzeszutek Wilk
0 siblings, 0 replies; 16+ messages in thread
From: Konrad Rzeszutek Wilk @ 2014-07-14 16:23 UTC (permalink / raw)
To: boris.ostrovsky, david.vrabel, hpa, linux-kernel, xen-devel
Cc: Konrad Rzeszutek Wilk
By default when CONFIG_XEN and CONFIG_XEN_PVHVM kernels are
run, they will enable the PV extensions (drivers, interrupts, timers,
etc) - which is the best option for the majority of use cases.
However, in some cases (kexec not fully working, benchmarking)
we want to disable Xen PV extensions. As such introduce the
'xen_nopv' parameter that will do it.
This parameter is intended only for HVM guests as the Xen PV
guests MUST boot with PV extensions. However, even if you use
'xen_nopv' on Xen PV guests it will be ignored.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
---
[v2: s/off/xen_nopv/ per Boris Ostrovsky recommendation.]
[v3: Add Reviewed-by]
[v4: Clarify that this is only for HVM guests]
---
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/xen/enlighten.c | 13 +++++++++++++
2 files changed, 17 insertions(+)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c1b9aa8..403f927 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -3691,6 +3691,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Disables the ticketlock slowpath using Xen PV
optimizations.
+ xen_nopv [X86]
+ Disables the PV optimizations forcing the HVM guest to
+ run as generic HVM guest with no PV drivers.
+
xirc2ps_cs= [NET,PCMCIA]
Format:
<irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ffb101e..eb82239 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1826,8 +1826,19 @@ static void __init xen_hvm_guest_init(void)
xen_hvm_init_mmu_ops();
}
+static bool xen_nopv = false;
+static __init int xen_parse_nopv(char *arg)
+{
+ xen_nopv = true;
+ return 0;
+}
+early_param("xen_nopv", xen_parse_nopv);
+
static uint32_t __init xen_hvm_platform(void)
{
+ if (xen_nopv)
+ return 0;
+
if (xen_pv_domain())
return 0;
@@ -1836,6 +1847,8 @@ static uint32_t __init xen_hvm_platform(void)
bool xen_hvm_need_lapic(void)
{
+ if (xen_nopv)
+ return false;
if (xen_pv_domain())
return false;
if (!xen_hvm_domain())
--
1.9.3
^ permalink raw reply related [flat|nested] 16+ messages in thread
end of thread, other threads:[~2014-07-14 16:23 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-08 18:48 [PATCH] xen: Introduce 'xen_nopv' to disable PV extensions for HVM guests konrad
2014-07-08 18:22 ` Boris Ostrovsky
2014-07-08 18:47 ` Konrad Rzeszutek Wilk
2014-07-08 18:54 ` Boris Ostrovsky
-- strict thread matches above, loose matches on Subject: below --
2014-07-11 19:53 konrad
2014-07-11 22:52 ` H. Peter Anvin
2014-07-11 22:52 ` H. Peter Anvin
2014-07-11 19:53 konrad
2014-07-11 23:09 Konrad Rzeszutek Wilk
2014-07-11 23:14 ` H. Peter Anvin
2014-07-11 23:14 ` H. Peter Anvin
2014-07-11 23:09 Konrad Rzeszutek Wilk
2014-07-11 23:31 Konrad Rzeszutek Wilk
2014-07-11 23:31 Konrad Rzeszutek Wilk
2014-07-14 16:23 Konrad Rzeszutek Wilk
2014-07-14 16:23 Konrad Rzeszutek Wilk
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.