All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] xen: report PV capability in sysctl and use it in toolstack
@ 2018-11-09 11:23 Wei Liu
  2018-11-09 11:25 ` Andrew Cooper
  2018-11-15 15:08 ` Ian Jackson
  0 siblings, 2 replies; 3+ messages in thread
From: Wei Liu @ 2018-11-09 11:23 UTC (permalink / raw)
  To: Xen-devel; +Cc: Andrew Cooper, Ian Jackson, Wei Liu, Jan Beulich

0e2c886ef ("xen: decouple HVM and IOMMU capabilities") provided a
truth table for what `xl info` would report. In order to make the
table work xen will need to report its PV capability.

Replace cap_directio with cap_pv in libxl IDL. It is safe to do so
because cap_directio has never been released. Revert to use
cap_hvm_directio to mark the availability of IOMMU, to save us from
providing a compatibility layer.

Don't bump sysctl version number because we've already done so.

Also provide a new virt_caps "pv", change "directio" to "pv_directio".
The truth table is now:

    pv      hvm     iommu           flags in xl info
    0       0       x               n/a
    0       1       0               hvm
    0       1       1               hvm hvm_directio
    1       0       0               pv
    1       0       1               pv pv_directio
    1       1       0               pv hvm
    1       1       1               pv hvm hvm_directio pv_directio

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
v2: adderss Andrew's comments, update `xl info` output table
---
 tools/libxl/libxl.c         | 4 ++--
 tools/libxl/libxl.h         | 6 +++---
 tools/libxl/libxl_types.idl | 4 ++--
 tools/xl/xl_info.c          | 7 ++++---
 xen/arch/x86/sysctl.c       | 2 ++
 xen/include/public/sysctl.h | 5 ++++-
 6 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index a0d9f2bfe7..ec71574e99 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -396,9 +396,9 @@ int libxl_get_physinfo(libxl_ctx *ctx, libxl_physinfo *physinfo)
     memcpy(physinfo->hw_cap,xcphysinfo.hw_cap, sizeof(physinfo->hw_cap));
 
     physinfo->cap_hvm = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_hvm);
-    physinfo->cap_directio =
+    physinfo->cap_pv = !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_pv);
+    physinfo->cap_hvm_directio =
         !!(xcphysinfo.capabilities & XEN_SYSCTL_PHYSCAP_directio);
-    physinfo->cap_hvm_directio = physinfo->cap_hvm && physinfo->cap_directio;
 
     GC_FREE;
     return 0;
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 2cfc1b08ad..a38e5cdba2 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -67,11 +67,11 @@
  * the same $(XEN_VERSION) (e.g. throughout a major release).
  */
 
-/* LIBXL_HAVE_PHYSINFO_CAP_DIRECTIO
+/* LIBXL_HAVE_PHYSINFO_CAP_PV
  *
- * If this is defined, libxl_physinfo has a "cap_directio" field.
+ * If this is defined, libxl_physinfo has a "cap_pv" field.
  */
-#define LIBXL_HAVE_PHYSINFO_CAP_DIRECTIO 1
+#define LIBXL_HAVE_PHYSINFO_CAP_PV 1
 
 /* LIBXL_HAVE_CONSOLE_NOTIFY_FD
  *
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 3b8f967651..51cf06a3a2 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -1013,8 +1013,8 @@ libxl_physinfo = Struct("physinfo", [
     ("hw_cap", libxl_hwcap),
 
     ("cap_hvm", bool),
-    ("cap_hvm_directio", bool),
-    ("cap_directio", bool),
+    ("cap_pv", bool),
+    ("cap_hvm_directio", bool), # No longer HVM specific
     ], dir=DIR_OUT)
 
 libxl_connectorinfo = Struct("connectorinfo", [
diff --git a/tools/xl/xl_info.c b/tools/xl/xl_info.c
index 93e2c5fa7d..46d9c9f712 100644
--- a/tools/xl/xl_info.c
+++ b/tools/xl/xl_info.c
@@ -210,10 +210,11 @@ 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\n",
+    maybe_printf("virt_caps              :%s%s%s%s\n",
+         info.cap_pv ? " pv" : "",
          info.cap_hvm ? " hvm" : "",
-         info.cap_hvm_directio ? " hvm_directio" : "",
-         info.cap_directio ? " directio" : ""
+         info.cap_hvm && info.cap_hvm_directio ? " hvm_directio" : "",
+         info.cap_pv && info.cap_hvm_directio ? " pv_directio" : ""
         );
 
     vinfo = libxl_get_version_info(ctx);
diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
index 0bec7e5c3c..1916a3de1b 100644
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
@@ -120,6 +120,8 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
            min(sizeof(pi->hw_cap), sizeof(boot_cpu_data.x86_capability)));
     if ( hvm_enabled )
         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;
 }
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index e3a14dfcc9..1ccf20787a 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -85,8 +85,11 @@ struct xen_sysctl_tbuf_op {
  /* (x86) 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. */
+#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. */
-#define _XEN_SYSCTL_PHYSCAP_directio 1
+#define _XEN_SYSCTL_PHYSCAP_directio     2
 #define XEN_SYSCTL_PHYSCAP_directio  (1u<<_XEN_SYSCTL_PHYSCAP_directio)
 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] 3+ messages in thread

* Re: [PATCH v2] xen: report PV capability in sysctl and use it in toolstack
  2018-11-09 11:23 [PATCH v2] xen: report PV capability in sysctl and use it in toolstack Wei Liu
@ 2018-11-09 11:25 ` Andrew Cooper
  2018-11-15 15:08 ` Ian Jackson
  1 sibling, 0 replies; 3+ messages in thread
From: Andrew Cooper @ 2018-11-09 11:25 UTC (permalink / raw)
  To: Wei Liu, Xen-devel; +Cc: Ian Jackson, Jan Beulich

On 09/11/18 11:23, Wei Liu wrote:
> 0e2c886ef ("xen: decouple HVM and IOMMU capabilities") provided a
> truth table for what `xl info` would report. In order to make the
> table work xen will need to report its PV capability.
>
> Replace cap_directio with cap_pv in libxl IDL. It is safe to do so
> because cap_directio has never been released. Revert to use
> cap_hvm_directio to mark the availability of IOMMU, to save us from
> providing a compatibility layer.
>
> Don't bump sysctl version number because we've already done so.
>
> Also provide a new virt_caps "pv", change "directio" to "pv_directio".
> The truth table is now:
>
>     pv      hvm     iommu           flags in xl info
>     0       0       x               n/a
>     0       1       0               hvm
>     0       1       1               hvm hvm_directio
>     1       0       0               pv
>     1       0       1               pv pv_directio
>     1       1       0               pv hvm
>     1       1       1               pv hvm hvm_directio pv_directio
>
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>

LGTM.  Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

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

* Re: [PATCH v2] xen: report PV capability in sysctl and use it in toolstack
  2018-11-09 11:23 [PATCH v2] xen: report PV capability in sysctl and use it in toolstack Wei Liu
  2018-11-09 11:25 ` Andrew Cooper
@ 2018-11-15 15:08 ` Ian Jackson
  1 sibling, 0 replies; 3+ messages in thread
From: Ian Jackson @ 2018-11-15 15:08 UTC (permalink / raw)
  To: Wei Liu; +Cc: Xen-devel, Jan Beulich, Andrew Cooper

Wei Liu writes ("[PATCH v2] xen: report PV capability in sysctl and use it in toolstack"):
> 0e2c886ef ("xen: decouple HVM and IOMMU capabilities") provided a
> truth table for what `xl info` would report. In order to make the
> table work xen will need to report its PV capability.

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] 3+ messages in thread

end of thread, other threads:[~2018-11-15 15:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-09 11:23 [PATCH v2] xen: report PV capability in sysctl and use it in toolstack Wei Liu
2018-11-09 11:25 ` Andrew Cooper
2018-11-15 15:08 ` Ian Jackson

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.