[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 09/12] tools: add physinfo arch_capabilities handling for Arm



On Tue, May 23, 2023 at 08:43:23AM +0100, Luca Fancellu wrote:
> On Arm, the SVE vector length is encoded in arch_capabilities field
> of struct xen_sysctl_physinfo, make use of this field in the tools
> when building for arm.
> 
> Create header arm-arch-capabilities.h to handle the arch_capabilities
> field of physinfo for Arm.
> 
> Removed include for xen-tools/common-macros.h in
> python/xen/lowlevel/xc/xc.c because it is already included by the
> arm-arch-capabilities.h header.
> 
> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
> Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
> Acked-by: Christian Lindig <christian.lindig@xxxxxxxxx>
> Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> ---
> Changes from v6:
>  - Fix licence header in arm-atch-capabilities.h, add R-by (Anthony)
> Changes from v5:
>  - no changes
> Changes from v4:
>  - Move arm-arch-capabilities.h into xen-tools/, add LIBXL_HAVE_,
>    fixed python return type to I instead of i. (Anthony)
> Changes from v3:
>  - add Ack-by for the Golang bits (George)
>  - add Ack-by for the OCaml tools (Christian)
>  - now xen-tools/libs.h is named xen-tools/common-macros.h
>  - changed commit message to explain why the header modification
>    in python/xen/lowlevel/xc/xc.c
> Changes from v2:
>  - rename arm_arch_capabilities.h in arm-arch-capabilities.h, use
>    MASK_EXTR.
>  - Now arm-arch-capabilities.h needs MASK_EXTR macro, but it is
>    defined in libxl_internal.h, it doesn't feel right to include
>    that header so move MASK_EXTR into xen-tools/libs.h that is also
>    included in libxl_internal.h
> Changes from v1:
>  - now SVE VL is encoded in arch_capabilities on Arm
> Changes from RFC:
>  - new patch
> ---
>  tools/golang/xenlight/helpers.gen.go          |  2 ++
>  tools/golang/xenlight/types.gen.go            |  1 +
>  tools/include/libxl.h                         |  6 ++++
>  .../include/xen-tools/arm-arch-capabilities.h | 28 +++++++++++++++++++
>  tools/include/xen-tools/common-macros.h       |  2 ++
>  tools/libs/light/libxl.c                      |  1 +
>  tools/libs/light/libxl_internal.h             |  1 -
>  tools/libs/light/libxl_types.idl              |  1 +
>  tools/ocaml/libs/xc/xenctrl.ml                |  4 +--
>  tools/ocaml/libs/xc/xenctrl.mli               |  4 +--
>  tools/ocaml/libs/xc/xenctrl_stubs.c           |  8 ++++--
>  tools/python/xen/lowlevel/xc/xc.c             |  8 ++++--
>  tools/xl/xl_info.c                            |  8 ++++++
>  13 files changed, 62 insertions(+), 12 deletions(-)
>  create mode 100644 tools/include/xen-tools/arm-arch-capabilities.h
> 

(...)

> diff --git a/tools/python/xen/lowlevel/xc/xc.c 
> b/tools/python/xen/lowlevel/xc/xc.c
> index 9728b34185ac..b3699fdac58e 100644
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -22,6 +22,7 @@
>  #include <xen/hvm/hvm_info_table.h>
>  #include <xen/hvm/params.h>
>  
> +#include <xen-tools/arm-arch-capabilities.h>
>  #include <xen-tools/common-macros.h>
>  
>  /* Needed for Python versions earlier than 2.3. */
> @@ -897,7 +898,7 @@ static PyObject *pyxc_physinfo(XcObject *self)
>      if ( p != virt_caps )
>        *(p-1) = '\0';
>  
> -    return Py_BuildValue("{s:i,s:i,s:i,s:i,s:l,s:l,s:l,s:i,s:s,s:s}",
> +    return Py_BuildValue("{s:i,s:i,s:i,s:i,s:l,s:l,s:l,s:i,s:s,s:s,s:I}",
>                              "nr_nodes",         pinfo.nr_nodes,
>                              "threads_per_core", pinfo.threads_per_core,
>                              "cores_per_socket", pinfo.cores_per_socket,
> @@ -907,7 +908,10 @@ static PyObject *pyxc_physinfo(XcObject *self)
>                              "scrub_memory",     
> pages_to_kib(pinfo.scrub_pages),
>                              "cpu_khz",          pinfo.cpu_khz,
>                              "hw_caps",          cpu_cap,
> -                            "virt_caps",        virt_caps);
> +                            "virt_caps",        virt_caps,
> +                            "arm_sve_vl",
> +                              
> arch_capabilities_arm_sve(pinfo.arch_capabilities)
> +                        );

This should be added only when building for ARM, similar as for other
bindings.

>  }
>  
>  static PyObject *pyxc_getcpuinfo(XcObject *self, PyObject *args, PyObject 
> *kwds)

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab

Attachment: signature.asc
Description: PGP signature


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.