Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.12-implement-sysctl-get_cpu_poli...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.12-implement-sysctl-get_cpu_policy.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 7 Feb 2020 19:25:02 +0100 Subject: xen-4.12: implement sysctl get_cpu_policy Handle XEN_SYSCTL_get_cpu_policy bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 28 ++++++++++++++++++++++++++++ include/vki/vki-xen-sysctl.h | 11 +++++++++++ include/vki/vki-xen-x86.h | 14 ++++++++++++++ 3 files changed, 53 insertions(+) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -845,24 +845,36 @@ PRE(sysctl) { { case 0x0000000d: case 0x0000000e: case 0x0000000f: case 0x00000010: case 0x00000011: PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, index); PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, nr_features); break; } break; + case VKI_XEN_SYSCTL_get_cpu_policy: + switch (sysctl->interface_version) + { + case 0x00000012: + PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, index); + PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, nr_leaves); + PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, nr_msrs); + PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, _rsvd); + break; + } + break; + default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_sysctl", sysctl->cmd); break; } #undef PRE_XEN_SYSCTL_READ #undef __PRE_XEN_SYSCTL_READ } PRE(domctl) { struct vki_xen_domctl *domctl = (struct vki_xen_domctl *)ARG1; @@ -2379,24 +2391,40 @@ POST(sysctl) case 0x0000000d: case 0x0000000e: case 0x0000000f: case 0x00000010: case 0x00000011: POST_XEN_SYSCTL_WRITE(cpu_featureset_0000000d, nr_features); POST_MEM_WRITE((Addr)sysctl->u.cpu_featureset_0000000d.features.p, sizeof(uint32_t) * sysctl->u.cpu_featureset_0000000d.nr_features); break; } break; + case VKI_XEN_SYSCTL_get_cpu_policy: + switch (sysctl->interface_version) + { + case 0x00000012: + POST_XEN_SYSCTL_WRITE(get_cpu_policy_00000012, index); + POST_XEN_SYSCTL_WRITE(get_cpu_policy_00000012, nr_leaves); + POST_XEN_SYSCTL_WRITE(get_cpu_policy_00000012, nr_msrs); + POST_XEN_SYSCTL_WRITE(get_cpu_policy_00000012, _rsvd); + POST_MEM_WRITE((Addr)sysctl->u.get_cpu_policy_00000012.cpuid_policy.p, + sizeof(vki_xen_cpuid_leaf_00000012_t) * sysctl->u.get_cpu_policy_00000012.nr_leaves); + POST_MEM_WRITE((Addr)sysctl->u.get_cpu_policy_00000012.msr_policy.p, + sizeof(vki_xen_msr_entry_00000012_t) * sysctl->u.get_cpu_policy_00000012.nr_msrs); + break; + } + break; + /* No outputs */ case VKI_XEN_SYSCTL_debug_keys: break; } #undef POST_XEN_SYSCTL_WRITE #undef __POST_XEN_SYSCTL_WRITE } POST(domctl){ struct vki_xen_domctl *domctl = (struct vki_xen_domctl *)ARG1; switch (domctl->interface_version) { --- a/include/vki/vki-xen-sysctl.h +++ b/include/vki/vki-xen-sysctl.h @@ -50,24 +50,25 @@ #define VKI_XEN_SYSCTL_cpupool_op 18 #define VKI_XEN_SYSCTL_scheduler_op 19 #define VKI_XEN_SYSCTL_coverage_op 20 #define VKI_XEN_SYSCTL_gcov_op 20 /* Since xen-4.9 */ #define VKI_XEN_SYSCTL_psr_cmt_op 21 #define VKI_XEN_SYSCTL_pcitopoinfo 22 #define VKI_XEN_SYSCTL_psr_cat_op 23 #define VKI_XEN_SYSCTL_tmem_op 24 #define VKI_XEN_SYSCTL_get_cpu_levelling_caps 25 #define VKI_XEN_SYSCTL_get_cpu_featureset 26 #define VKI_XEN_SYSCTL_livepatch_op 27 #define VKI_XEN_SYSCTL_set_parameter 28 +#define VKI_XEN_SYSCTL_get_cpu_policy 29 struct vki_xen_sysctl_readconsole { /* IN */ vki_uint8_t clear; vki_uint8_t incremental; vki_uint8_t pad0, pad1; /* * IN: Start index for consumption if @incremental. * OUT: End index after consuming from the console. */ @@ -234,24 +235,33 @@ struct vki_xen_sysctl_physinfo_00000010 { struct vki_xen_sysctl_sched_id { /* OUT variable. */ vki_uint32_t sched_id; }; struct vki_xen_sysctl_cpu_featureset_0000000d { vki_uint32_t index; vki_uint32_t nr_features; VKI_XEN_GUEST_HANDLE_64(vki_uint32) features; }; +struct vki_xen_sysctl_get_cpu_policy_00000012 { + vki_uint32_t index; + vki_uint32_t nr_leaves; + vki_uint64_t nr_msrs; + vki_uint64_t _rsvd; + VKI_XEN_GUEST_HANDLE_64(vki_xen_cpuid_leaf_00000012_t) cpuid_policy; + VKI_XEN_GUEST_HANDLE_64(vki_xen_msr_entry_00000012_t) msr_policy; +}; + struct vki_xen_sysctl { vki_uint32_t cmd; vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ union { struct vki_xen_sysctl_readconsole readconsole; //struct vki_xen_sysctl_tbuf_op tbuf_op; struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008; struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a; struct vki_xen_sysctl_physinfo_00000010 physinfo_00000010; struct vki_xen_sysctl_topologyinfo topologyinfo; struct vki_xen_sysctl_cputopoinfo_0000000c cputopoinfo_0000000c; struct vki_xen_sysctl_pcitopoinfo_0000000c pcitopoinfo_0000000c; @@ -272,22 +282,23 @@ struct vki_xen_sysctl { //struct vki_xen_sysctl_lockprof_op lockprof_op; struct vki_xen_sysctl_cpupool_op cpupool_op; //struct vki_xen_sysctl_scheduler_op scheduler_op; //struct vki_xen_sysctl_coverage_op coverage_op; //struct vki_xen_sysctl_gcov_op gcov_op; //struct vki_xen_sysctl_psr_cmt_op psr_cmt_op; //struct vki_xen_sysctl_psr_cat_op psr_cat_op; //struct vki_xen_sysctl_tmem_op tmem_op; //struct vki_xen_sysctl_cpu_levelling_caps cpu_levelling_caps; struct vki_xen_sysctl_cpu_featureset_0000000d cpu_featureset_0000000d; //struct vki_xen_sysctl_livepatch_op livepatch; //struct vki_xen_sysctl_set_parameter set_parameter; + struct vki_xen_sysctl_get_cpu_policy_00000012 get_cpu_policy_00000012; vki_uint8_t pad[128]; } u; }; #endif // __VKI_XEN_SYSCTL_H /*--------------------------------------------------------------------*/ /*--- end ---*/ /*--------------------------------------------------------------------*/ --- a/include/vki/vki-xen-x86.h +++ b/include/vki/vki-xen-x86.h @@ -272,17 +272,31 @@ struct vki_hvm_hw_mtrr { #define VKI_MTRR_VCNT 8 #define VKI_NUM_FIXED_MSR 11 vki_uint64_t msr_pat_cr; /* mtrr physbase & physmask msr pair*/ vki_uint64_t msr_mtrr_var[VKI_MTRR_VCNT*2]; vki_uint64_t msr_mtrr_fixed[VKI_NUM_FIXED_MSR]; vki_uint64_t msr_mtrr_cap; vki_uint64_t msr_mtrr_def_type; }; VKI_DECLARE_HVM_SAVE_TYPE(MTRR, 14, struct vki_hvm_hw_mtrr); +struct vki_xen_cpuid_leaf_00000012 { + vki_uint32_t leaf, subleaf; + vki_uint32_t a, b, c, d; +}; +typedef struct vki_xen_cpuid_leaf_00000012 vki_xen_cpuid_leaf_00000012_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_cpuid_leaf_00000012_t); + +struct vki_xen_msr_entry_00000012 { + vki_uint32_t leaf, subleaf; + vki_uint32_t a, b, c, d; +}; +typedef struct vki_xen_msr_entry_00000012 vki_xen_msr_entry_00000012_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_msr_entry_00000012_t); + #endif // __VKI_XEN_H /*--------------------------------------------------------------------*/ /*--- end ---*/ /*--------------------------------------------------------------------*/
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor