[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
>> >> (...) >> >>> 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. > > Hi Marek, > > Thank you for taking the time to review this, are you ok if I make these > changes to the code? > > diff --git a/tools/python/xen/lowlevel/xc/xc.c > b/tools/python/xen/lowlevel/xc/xc.c > index b3699fdac58e..c7f690189770 100644 > --- a/tools/python/xen/lowlevel/xc/xc.c > +++ b/tools/python/xen/lowlevel/xc/xc.c > @@ -872,6 +872,8 @@ static PyObject *pyxc_physinfo(XcObject *self) > const char *virtcap_names[] = { "hvm", "pv" }; > const unsigned virtcaps_bits[] = { XEN_SYSCTL_PHYSCAP_hvm, > XEN_SYSCTL_PHYSCAP_pv }; > + PyObject *objret; > + int retcode; > > if ( xc_physinfo(self->xc_handle, &pinfo) != 0 ) > return pyxc_error_to_exception(self->xc_handle); > @@ -898,20 +900,31 @@ 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,s:I}", > - "nr_nodes", pinfo.nr_nodes, > - "threads_per_core", pinfo.threads_per_core, > - "cores_per_socket", pinfo.cores_per_socket, > - "nr_cpus", pinfo.nr_cpus, > - "total_memory", > pages_to_kib(pinfo.total_pages), > - "free_memory", > pages_to_kib(pinfo.free_pages), > - "scrub_memory", > pages_to_kib(pinfo.scrub_pages), > - "cpu_khz", pinfo.cpu_khz, > - "hw_caps", cpu_cap, > - "virt_caps", virt_caps, > - "arm_sve_vl", > - > arch_capabilities_arm_sve(pinfo.arch_capabilities) > + objret = Py_BuildValue("{s:i,s:i,s:i,s:i,s:l,s:l,s:l,s:i,s:s,s:s}", > + "nr_nodes", pinfo.nr_nodes, > + "threads_per_core", pinfo.threads_per_core, > + "cores_per_socket", pinfo.cores_per_socket, > + "nr_cpus", pinfo.nr_cpus, > + "total_memory", > pages_to_kib(pinfo.total_pages), > + "free_memory", > pages_to_kib(pinfo.free_pages), > + "scrub_memory", > pages_to_kib(pinfo.scrub_pages), > + "cpu_khz", pinfo.cpu_khz, > + "hw_caps", cpu_cap, > + "virt_caps", virt_caps > ); > + > + #if defined(__aarch64__) > + if (objret) { > + retcode = PyDict_SetItemString( > + objret, "arm_sve_vl", > + > arch_capabilities_arm_sve(pinfo.arch_capabilities) > + ); > + if ( retcode < 0 ) > + return NULL; > + } > + #endif > + > + return objret; > } > > static PyObject *pyxc_getcpuinfo(XcObject *self, PyObject *args, PyObject > *kwds) > > > Please notice that now we can have a path that could return NULL, are you ok > for > It or should I just ignore the return code for PyDict_SetItemString? > > Also, do you want me to protect the include to > <xen-tools/arm-arch-capabilities.h> > with ifdef? > EDIT: I saw this doesn’t even compile, I will ask later when I will have something working, I saw PyDict_SetItemString is used somewhere else so I will use that approach before Proposing you a solution >> >>> } >>> >>> static PyObject *pyxc_getcpuinfo(XcObject *self, PyObject *args, PyObject >>> *kwds) >> >> -- >> Best Regards, >> Marek Marczykowski-Górecki >> Invisible Things Lab
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |