xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP
@ 2019-09-06 14:30 Roger Pau Monne
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM Roger Pau Monne
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Roger Pau Monne @ 2019-09-06 14:30 UTC (permalink / raw)
  To: xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Julien Grall, Paul Durrant, Jan Beulich, Anthony PERARD,
	Volodymyr Babchuk, Roger Pau Monne

Hello,

First patch is a preparatory change to also make use of the physcaps on
ARM, second patch introduces a new physcap (HAP) in order for the
toolstack to decide whether to use HAP if the user hasn't made a
selection.

Thanks, Roger.

Roger Pau Monne (2):
  sysctl: report existing physcaps on ARM
  sysctl/libxl: choose a sane default for HAP

 tools/libxl/libxl.c         |  1 +
 tools/libxl/libxl.h         |  7 +++++++
 tools/libxl/libxl_create.c  |  8 +++++++-
 tools/libxl/libxl_types.idl |  1 +
 tools/xl/xl_info.c          |  5 +++--
 xen/arch/arm/sysctl.c       |  5 ++++-
 xen/arch/x86/sysctl.c       |  4 ++--
 xen/common/sysctl.c         |  2 ++
 xen/include/public/sysctl.h | 10 +++++++---
 9 files changed, 34 insertions(+), 9 deletions(-)

-- 
2.22.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM
  2019-09-06 14:30 [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP Roger Pau Monne
@ 2019-09-06 14:30 ` Roger Pau Monne
  2019-09-09 10:07   ` Julien Grall
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
  2019-09-09 10:21 ` [Xen-devel] [PATCH v3 0/2] libxl: " Julien Grall
  2 siblings, 1 reply; 12+ messages in thread
From: Roger Pau Monne @ 2019-09-06 14:30 UTC (permalink / raw)
  To: xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Julien Grall, Paul Durrant, Jan Beulich, Volodymyr Babchuk,
	Roger Pau Monne

Current physcaps in XEN_SYSCTL_physinfo are only used by x86, albeit
the capabilities themselves are not x86 specific.

This patch adds support for also reporting the current capabilities on
ARM hardware. Note that on ARM PHYSCAP_hvm is always reported, and
setting PHYSCAP_directio has been moved to common code since the same
logic to set it is used by x86 and ARM.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v1:
 - New in this version.
---
 xen/arch/arm/sysctl.c       | 5 ++++-
 xen/arch/x86/sysctl.c       | 2 --
 xen/common/sysctl.c         | 2 ++
 xen/include/public/sysctl.h | 6 +++---
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c
index fbfdb44eff..92ac99c928 100644
--- a/xen/arch/arm/sysctl.c
+++ b/xen/arch/arm/sysctl.c
@@ -12,7 +12,10 @@
 #include <xen/hypercall.h>
 #include <public/sysctl.h>
 
-void arch_do_physinfo(struct xen_sysctl_physinfo *pi) { }
+void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
+{
+    pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm;
+}
 
 long arch_do_sysctl(struct xen_sysctl *sysctl,
                     XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index c50d910a1c..7ec6174e6b 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -163,8 +163,6 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
         pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm;
     if ( IS_ENABLED(CONFIG_PV) )
         pi->capabilities |= XEN_SYSCTL_PHYSCAP_pv;
-    if ( iommu_enabled )
-        pi->capabilities |= XEN_SYSCTL_PHYSCAP_directio;
 }
 
 long arch_do_sysctl(
diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
index fcf2d2fd7c..92b4ea0d21 100644
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -267,6 +267,8 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
         pi->cpu_khz = cpu_khz;
         pi->max_mfn = get_upper_mfn_bound();
         arch_do_physinfo(pi);
+        if ( iommu_enabled )
+            pi->capabilities |= XEN_SYSCTL_PHYSCAP_directio;
 
         if ( copy_to_guest(u_sysctl, op, 1) )
             ret = -EFAULT;
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index 91c48dcae0..36b3f8c429 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -81,13 +81,13 @@ struct xen_sysctl_tbuf_op {
  * Get physical information about the host machine
  */
 /* XEN_SYSCTL_physinfo */
- /* (x86) The platform supports HVM guests. */
+ /* The platform supports HVM guests. */
 #define _XEN_SYSCTL_PHYSCAP_hvm          0
 #define XEN_SYSCTL_PHYSCAP_hvm           (1u<<_XEN_SYSCTL_PHYSCAP_hvm)
- /* (x86) The platform supports PV guests. */
+ /* The platform supports PV guests. */
 #define _XEN_SYSCTL_PHYSCAP_pv           1
 #define XEN_SYSCTL_PHYSCAP_pv            (1u<<_XEN_SYSCTL_PHYSCAP_pv)
- /* (x86) The platform supports direct access to I/O devices with IOMMU. */
+ /* The platform supports direct access to I/O devices with IOMMU. */
 #define _XEN_SYSCTL_PHYSCAP_directio     2
 #define XEN_SYSCTL_PHYSCAP_directio  (1u<<_XEN_SYSCTL_PHYSCAP_directio)
 struct xen_sysctl_physinfo {
-- 
2.22.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP
  2019-09-06 14:30 [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP Roger Pau Monne
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM Roger Pau Monne
@ 2019-09-06 14:30 ` Roger Pau Monne
  2019-09-06 14:39   ` Andrew Cooper
                     ` (3 more replies)
  2019-09-09 10:21 ` [Xen-devel] [PATCH v3 0/2] libxl: " Julien Grall
  2 siblings, 4 replies; 12+ messages in thread
From: Roger Pau Monne @ 2019-09-06 14:30 UTC (permalink / raw)
  To: xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Julien Grall, Paul Durrant, Jan Beulich, Anthony PERARD,
	Volodymyr Babchuk, Roger Pau Monne

Current libxl code will always enable Hardware Assisted Paging (HAP),
expecting that the hypervisor will fallback to shadow if HAP is not
available. With the changes to the domain builder that's not the case
any longer, and the hypervisor will raise an error if HAP is not
available instead of silently falling back to shadow.

In order to keep the previous functionality report whether HAP is
available or not in XEN_SYSCTL_physinfo, so that the toolstack can
select a sane default if there's no explicit user selection of whether
HAP should be used.

Note that on ARM hardware HAP capability is always reported since it's
a required feature in order to run Xen.

Fixes: d0c0ba7d3de ('x86/hvm/domain: remove the 'hap_enabled' flag')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Cc: Paul Durrant <Paul.Durrant@citrix.com>
---
Changes since v2:
 - Add a LIBXL_HAVE_PHYSINFO_CAP_HAP for compatibility.

Changes since v1:
 - Also report HAP capability for ARM.
 - Print hap capability in xl info.
---
 tools/libxl/libxl.c         | 1 +
 tools/libxl/libxl.h         | 7 +++++++
 tools/libxl/libxl_create.c  | 8 +++++++-
 tools/libxl/libxl_types.idl | 1 +
 tools/xl/xl_info.c          | 5 +++--
 xen/arch/arm/sysctl.c       | 2 +-
 xen/arch/x86/sysctl.c       | 2 ++
 xen/include/public/sysctl.h | 4 ++++
 8 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index ec71574e99..5c0fcf320e 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -399,6 +399,7 @@ int libxl_get_physinfo(libxl_ctx *ctx, libxl_physinfo *physinfo)
     physinfo->cap_pv = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_pv);
     physinfo->cap_hvm_directio =
         !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_directio);
+    physinfo->cap_hap = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_hap);
 
     GC_FREE;
     return 0;
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 9bacfb97f0..3ff67792a7 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -394,6 +394,13 @@
  */
 #define LIBXL_HAVE_EXTENDED_VKB 1
 
+/*
+ * LIBXL_HAVE_PHYSINFO_CAP_HAP indicates that libxl_physinfo has a cap_hap
+ * field that indicates whether the hardware supports Hardware Assisted
+ * Paging.
+ */
+#define LIBXL_HAVE_PHYSINFO_CAP_HAP 1
+
 /*
  * libxl ABI compatibility
  *
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 03ce166f4f..6a556dea8f 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -38,7 +38,13 @@ int libxl__domain_create_info_setdefault(libxl__gc *gc,
     libxl__arch_domain_create_info_setdefault(gc, c_info);
 
     if (c_info->type != LIBXL_DOMAIN_TYPE_PV) {
-        libxl_defbool_setdefault(&c_info->hap, true);
+        libxl_physinfo info;
+        int rc = libxl_get_physinfo(CTX, &info);
+
+        if (rc)
+            return rc;
+
+        libxl_defbool_setdefault(&c_info->hap, info.cap_hap);
         libxl_defbool_setdefault(&c_info->oos, true);
     }
 
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index b61399ce36..9e1f8515d3 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -1025,6 +1025,7 @@ libxl_physinfo = Struct("physinfo", [
     ("cap_hvm", bool),
     ("cap_pv", bool),
     ("cap_hvm_directio", bool), # No longer HVM specific
+    ("cap_hap", bool),
     ], dir=DIR_OUT)
 
 libxl_connectorinfo = Struct("connectorinfo", [
diff --git a/tools/xl/xl_info.c b/tools/xl/xl_info.c
index 46d9c9f712..aa6724bc7f 100644
--- a/tools/xl/xl_info.c
+++ b/tools/xl/xl_info.c
@@ -210,11 +210,12 @@ static void output_physinfo(void)
          info.hw_cap[4], info.hw_cap[5], info.hw_cap[6], info.hw_cap[7]
         );
 
-    maybe_printf("virt_caps              :%s%s%s%s\n",
+    maybe_printf("virt_caps              :%s%s%s%s%s\n",
          info.cap_pv ? " pv" : "",
          info.cap_hvm ? " hvm" : "",
          info.cap_hvm && info.cap_hvm_directio ? " hvm_directio" : "",
-         info.cap_pv && info.cap_hvm_directio ? " pv_directio" : ""
+         info.cap_pv && info.cap_hvm_directio ? " pv_directio" : "",
+         info.cap_hap ? " hap" : ""
         );
 
     vinfo = libxl_get_version_info(ctx);
diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c
index 92ac99c928..f87944e847 100644
--- a/xen/arch/arm/sysctl.c
+++ b/xen/arch/arm/sysctl.c
@@ -14,7 +14,7 @@
 
 void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
 {
-    pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm;
+    pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm | XEN_SYSCTL_PHYSCAP_hap;
 }
 
 long arch_do_sysctl(struct xen_sysctl *sysctl,
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index 7ec6174e6b..5777a05ffc 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -163,6 +163,8 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
         pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm;
     if ( IS_ENABLED(CONFIG_PV) )
         pi->capabilities |= XEN_SYSCTL_PHYSCAP_pv;
+    if ( hvm_hap_supported() )
+        pi->capabilities |= XEN_SYSCTL_PHYSCAP_hap;
 }
 
 long arch_do_sysctl(
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index 36b3f8c429..e02d7ce4c6 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -90,6 +90,10 @@ struct xen_sysctl_tbuf_op {
  /* The platform supports direct access to I/O devices with IOMMU. */
 #define _XEN_SYSCTL_PHYSCAP_directio     2
 #define XEN_SYSCTL_PHYSCAP_directio  (1u<<_XEN_SYSCTL_PHYSCAP_directio)
+/* The platform supports Hardware Assisted Paging. */
+#define _XEN_SYSCTL_PHYSCAP_hap          3
+#define XEN_SYSCTL_PHYSCAP_hap           (1u<<_XEN_SYSCTL_PHYSCAP_hap)
+
 struct xen_sysctl_physinfo {
     uint32_t threads_per_core;
     uint32_t cores_per_socket;
-- 
2.22.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
@ 2019-09-06 14:39   ` Andrew Cooper
  2019-09-09 10:10   ` Julien Grall
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Andrew Cooper @ 2019-09-06 14:39 UTC (permalink / raw)
  To: Roger Pau Monne, xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Tim Deegan, Ian Jackson, Julien Grall,
	Paul Durrant, Jan Beulich, Anthony PERARD, Volodymyr Babchuk

On 06/09/2019 15:30, Roger Pau Monne wrote:
> Current libxl code will always enable Hardware Assisted Paging (HAP),
> expecting that the hypervisor will fallback to shadow if HAP is not
> available. With the changes to the domain builder that's not the case

"domain builder" is usually libxenguest.  I'd suggest using
DOMCTL_createdomain specifically to make it obvious that it was a
hypervisor side change.

otherwise, everything LGTM.  This should probably be adjusted on commit.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM Roger Pau Monne
@ 2019-09-09 10:07   ` Julien Grall
  0 siblings, 0 replies; 12+ messages in thread
From: Julien Grall @ 2019-09-09 10:07 UTC (permalink / raw)
  To: Roger Pau Monne, xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Paul Durrant, Jan Beulich, Volodymyr Babchuk

Hi,

Title NIT: s/ARM/Arm/

On 9/6/19 3:30 PM, Roger Pau Monne wrote:
> Current physcaps in XEN_SYSCTL_physinfo are only used by x86, albeit
> the capabilities themselves are not x86 specific.
> 
> This patch adds support for also reporting the current capabilities on
> ARM hardware. Note that on ARM PHYSCAP_hvm is always reported, and

Ditto.

> setting PHYSCAP_directio has been moved to common code since the same
> logic to set it is used by x86 and ARM.

Ditto.

> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Julien Grall <julien.grall@arm.com>

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
  2019-09-06 14:39   ` Andrew Cooper
@ 2019-09-09 10:10   ` Julien Grall
  2019-09-09 13:47   ` [Xen-devel] [PATCH] fixup " Andrew Cooper
  2019-09-09 14:10   ` [Xen-devel] [PATCH v3 2/2] " Ian Jackson
  3 siblings, 0 replies; 12+ messages in thread
From: Julien Grall @ 2019-09-09 10:10 UTC (permalink / raw)
  To: Roger Pau Monne, xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Paul Durrant, Jan Beulich, Anthony PERARD, Volodymyr Babchuk

Hi,

On 9/6/19 3:30 PM, Roger Pau Monne wrote:
> Current libxl code will always enable Hardware Assisted Paging (HAP),
> expecting that the hypervisor will fallback to shadow if HAP is not
> available. With the changes to the domain builder that's not the case
> any longer, and the hypervisor will raise an error if HAP is not
> available instead of silently falling back to shadow.
> 
> In order to keep the previous functionality report whether HAP is
> available or not in XEN_SYSCTL_physinfo, so that the toolstack can
> select a sane default if there's no explicit user selection of whether
> HAP should be used.
> 
> Note that on ARM hardware HAP capability is always reported since it's

NIT: s/ARM/Arm/

> a required feature in order to run Xen.
> 
> Fixes: d0c0ba7d3de ('x86/hvm/domain: remove the 'hap_enabled' flag')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

For the Arm bits:

Acked-by: Julien Grall <julien.grall@arm.com>

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP
  2019-09-06 14:30 [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP Roger Pau Monne
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM Roger Pau Monne
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
@ 2019-09-09 10:21 ` Julien Grall
  2 siblings, 0 replies; 12+ messages in thread
From: Julien Grall @ 2019-09-09 10:21 UTC (permalink / raw)
  To: Roger Pau Monne, xen-devel
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Paul Durrant, Jan Beulich, Anthony PERARD, Volodymyr Babchuk

Hi,

On 9/6/19 3:30 PM, Roger Pau Monne wrote:
> Hello,
> 
> First patch is a preparatory change to also make use of the physcaps on
> ARM, second patch introduces a new physcap (HAP) in order for the
> toolstack to decide whether to use HAP if the user hasn't made a
> selection.
> 
> Thanks, Roger.
> 
> Roger Pau Monne (2):
>    sysctl: report existing physcaps on ARM

I have committed this patch.

>    sysctl/libxl: choose a sane default for HAP

This one requires an Ack from the tools maintainers.

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Xen-devel] [PATCH] fixup sysctl/libxl: choose a sane default for HAP
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
  2019-09-06 14:39   ` Andrew Cooper
  2019-09-09 10:10   ` Julien Grall
@ 2019-09-09 13:47   ` Andrew Cooper
  2019-09-09 14:29     ` Ian Jackson
  2019-09-10 14:43     ` Jan Beulich
  2019-09-09 14:10   ` [Xen-devel] [PATCH v3 2/2] " Ian Jackson
  3 siblings, 2 replies; 12+ messages in thread
From: Andrew Cooper @ 2019-09-09 13:47 UTC (permalink / raw)
  To: Xen-devel
  Cc: Wei Liu, Andrew Cooper, Rob Hoes, Christian Lindig, Ian Jackson,
	Roger Pau Monné

This delta wants folding to keep the Ocaml stubs in line.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ian Jackson <Ian.Jackson@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Christian Lindig <christian.lindig@citrix.com>
CC: Rob Hoes <Rob.Hoes@citrix.com>
---
 tools/ocaml/libs/xc/xenctrl.ml      | 1 +
 tools/ocaml/libs/xc/xenctrl.mli     | 1 +
 tools/ocaml/libs/xc/xenctrl_stubs.c | 3 ++-
 xen/include/public/sysctl.h         | 2 +-
 4 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
index cd7e95a6fa..5da7c96cee 100644
--- a/tools/ocaml/libs/xc/xenctrl.ml
+++ b/tools/ocaml/libs/xc/xenctrl.ml
@@ -101,6 +101,7 @@ type physinfo_cap_flag =
 	| CAP_HVM
 	| CAP_PV
 	| CAP_DirectIO
+	| CAP_HAP
 
 type physinfo =
 {
diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli
index 0bd06ed920..b4e76b827e 100644
--- a/tools/ocaml/libs/xc/xenctrl.mli
+++ b/tools/ocaml/libs/xc/xenctrl.mli
@@ -86,6 +86,7 @@ type physinfo_cap_flag =
   | CAP_HVM
   | CAP_PV
   | CAP_DirectIO
+  | CAP_HAP
 type physinfo = {
   threads_per_core : int;
   cores_per_socket : int;
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index ce8dbba437..10b306f9f8 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -690,7 +690,8 @@ CAMLprim value stub_xc_physinfo(value xch)
 	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hvm      != (1u <<  0));
 	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_pv       != (1u <<  1));
 	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_directio != (1u <<  2));
-	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_directio);
+	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hap      != (1u <<  3));
+	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_hap);
 	cap_list = c_bitmap_to_ocaml_list(c_physinfo.capabilities);
 
 	physinfo = caml_alloc_tuple(10);
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index c325ae496c..d4b455619c 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -95,7 +95,7 @@ struct xen_sysctl_tbuf_op {
 #define XEN_SYSCTL_PHYSCAP_hap           (1u<<_XEN_SYSCTL_PHYSCAP_hap)
 
 /* Max XEN_SYSCTL_PHYSCAP_* constant.  Used for ABI checking. */
-#define XEN_SYSCTL_PHYSCAP_MAX XEN_SYSCTL_PHYSCAP_directio
+#define XEN_SYSCTL_PHYSCAP_MAX XEN_SYSCTL_PHYSCAP_hap
 
 struct xen_sysctl_physinfo {
     uint32_t threads_per_core;
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP
  2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
                     ` (2 preceding siblings ...)
  2019-09-09 13:47   ` [Xen-devel] [PATCH] fixup " Andrew Cooper
@ 2019-09-09 14:10   ` Ian Jackson
  3 siblings, 0 replies; 12+ messages in thread
From: Ian Jackson @ 2019-09-09 14:10 UTC (permalink / raw)
  To: Roger Pau Monne
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	Andrew Cooper, Tim  (Xen.org),
	George Dunlap, Julien Grall, Paul Durrant, Jan Beulich,
	Anthony Perard, xen-devel, Volodymyr Babchuk

Roger Pau Monne writes ("[PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP"):
> Current libxl code will always enable Hardware Assisted Paging (HAP),
> expecting that the hypervisor will fallback to shadow if HAP is not
> available. With the changes to the domain builder that's not the case
> any longer, and the hypervisor will raise an error if HAP is not
> available instead of silently falling back to shadow.
> 
> In order to keep the previous functionality report whether HAP is
> available or not in XEN_SYSCTL_physinfo, so that the toolstack can
> select a sane default if there's no explicit user selection of whether
> HAP should be used.
> 
> Note that on ARM hardware HAP capability is always reported since it's
> a required feature in order to run Xen.
> 
> Fixes: d0c0ba7d3de ('x86/hvm/domain: remove the 'hap_enabled' flag')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH] fixup sysctl/libxl: choose a sane default for HAP
  2019-09-09 13:47   ` [Xen-devel] [PATCH] fixup " Andrew Cooper
@ 2019-09-09 14:29     ` Ian Jackson
  2019-09-10 14:43     ` Jan Beulich
  1 sibling, 0 replies; 12+ messages in thread
From: Ian Jackson @ 2019-09-09 14:29 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: Rob Hoes, Xen-devel, Christian Lindig, Wei Liu, Roger Pau Monne

Andrew Cooper writes ("[PATCH] fixup sysctl/libxl: choose a sane default for HAP"):
> This delta wants folding to keep the Ocaml stubs in line.

Gnagh.

Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH] fixup sysctl/libxl: choose a sane default for HAP
  2019-09-09 13:47   ` [Xen-devel] [PATCH] fixup " Andrew Cooper
  2019-09-09 14:29     ` Ian Jackson
@ 2019-09-10 14:43     ` Jan Beulich
  2019-09-10 14:44       ` Andrew Cooper
  1 sibling, 1 reply; 12+ messages in thread
From: Jan Beulich @ 2019-09-10 14:43 UTC (permalink / raw)
  To: Andrew Cooper, Xen-devel, Roger Pau Monné
  Cc: Ian Jackson, Christian Lindig, Wei Liu, Rob Hoes

On 09.09.2019 15:47, Andrew Cooper wrote:
> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
> @@ -690,7 +690,8 @@ CAMLprim value stub_xc_physinfo(value xch)
>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hvm      != (1u <<  0));
>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_pv       != (1u <<  1));
>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_directio != (1u <<  2));
> -	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_directio);
> +	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hap      != (1u <<  3));
> +	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_hap);
>  	cap_list = c_bitmap_to_ocaml_list(c_physinfo.capabilities);
>  
>  	physinfo = caml_alloc_tuple(10);

I'm afraid in particular this hunk doesn't apply anymore, and
I'm not confident that simply dropping it is the right answer.
I'd therefore like to ask for a proper re-base, or for someone
else to apply the result of folding these additions into the
base patch.

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Xen-devel] [PATCH] fixup sysctl/libxl: choose a sane default for HAP
  2019-09-10 14:43     ` Jan Beulich
@ 2019-09-10 14:44       ` Andrew Cooper
  0 siblings, 0 replies; 12+ messages in thread
From: Andrew Cooper @ 2019-09-10 14:44 UTC (permalink / raw)
  To: Jan Beulich, Xen-devel, Roger Pau Monné
  Cc: Ian Jackson, Christian Lindig, Wei Liu, Rob Hoes

On 10/09/2019 15:43, Jan Beulich wrote:
> On 09.09.2019 15:47, Andrew Cooper wrote:
>> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
>> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
>> @@ -690,7 +690,8 @@ CAMLprim value stub_xc_physinfo(value xch)
>>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hvm      != (1u <<  0));
>>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_pv       != (1u <<  1));
>>  	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_directio != (1u <<  2));
>> -	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_directio);
>> +	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_hap      != (1u <<  3));
>> +	BUILD_BUG_ON(XEN_SYSCTL_PHYSCAP_MAX      != XEN_SYSCTL_PHYSCAP_hap);
>>  	cap_list = c_bitmap_to_ocaml_list(c_physinfo.capabilities);
>>  
>>  	physinfo = caml_alloc_tuple(10);
> I'm afraid in particular this hunk doesn't apply anymore, and
> I'm not confident that simply dropping it is the right answer.
> I'd therefore like to ask for a proper re-base, or for someone
> else to apply the result of folding these additions into the
> base patch.

Roger is currently working on a rebase.  There is also a logical error
which requires the addition of CAP_SHADOW.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-09-10 14:45 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-06 14:30 [Xen-devel] [PATCH v3 0/2] libxl: choose a sane default for HAP Roger Pau Monne
2019-09-06 14:30 ` [Xen-devel] [PATCH v3 1/2] sysctl: report existing physcaps on ARM Roger Pau Monne
2019-09-09 10:07   ` Julien Grall
2019-09-06 14:30 ` [Xen-devel] [PATCH v3 2/2] sysctl/libxl: choose a sane default for HAP Roger Pau Monne
2019-09-06 14:39   ` Andrew Cooper
2019-09-09 10:10   ` Julien Grall
2019-09-09 13:47   ` [Xen-devel] [PATCH] fixup " Andrew Cooper
2019-09-09 14:29     ` Ian Jackson
2019-09-10 14:43     ` Jan Beulich
2019-09-10 14:44       ` Andrew Cooper
2019-09-09 14:10   ` [Xen-devel] [PATCH v3 2/2] " Ian Jackson
2019-09-09 10:21 ` [Xen-devel] [PATCH v3 0/2] libxl: " Julien Grall

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).