[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 4/4] x86/cpuid: Move the legacy cpuids array into struct cpuid_policy
This hides the legacy details inside the cpuid subsystem, where they will eventually be dropped entirely. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> --- xen/arch/x86/cpuid.c | 10 +++++++++- xen/arch/x86/domain.c | 14 +------------- xen/arch/x86/domctl.c | 4 ++-- xen/include/asm-x86/cpuid.h | 4 ++++ xen/include/asm-x86/domain.h | 5 ----- 5 files changed, 16 insertions(+), 21 deletions(-) diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c index e173ff7..20cb25b 100644 --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -338,6 +338,8 @@ void recalculate_cpuid_policy(struct domain *d) int init_domain_cpuid_policy(struct domain *d) { + unsigned int i; + d->arch.cpuid = xmalloc(struct cpuid_policy); if ( !d->arch.cpuid ) @@ -347,6 +349,12 @@ int init_domain_cpuid_policy(struct domain *d) recalculate_cpuid_policy(d); + for ( i = 0; i < MAX_CPUID_INPUT; i++ ) + { + d->arch.cpuid->legacy[i].input[0] = XEN_CPUID_INPUT_UNUSED; + d->arch.cpuid->legacy[i].input[1] = XEN_CPUID_INPUT_UNUSED; + } + return 0; } @@ -357,7 +365,7 @@ static void domain_cpuid(const struct domain *d, uint32_t leaf, for ( i = 0; i < MAX_CPUID_INPUT; i++ ) { - cpuid_input_t *cpuid = &d->arch.cpuids[i]; + xen_domctl_cpuid_t *cpuid = &d->arch.cpuid->legacy[i]; if ( (cpuid->input[0] == leaf) && ((cpuid->input[1] == XEN_CPUID_INPUT_UNUSED) || diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 6fc1242..44ee92a 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -503,7 +503,7 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) int arch_domain_create(struct domain *d, unsigned int domcr_flags, struct xen_arch_domainconfig *config) { - int i, paging_initialised = 0; + int paging_initialised = 0; int rc = -ENOMEM; if ( config == NULL && !is_idle_domain(d) ) @@ -606,16 +606,6 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, if ( (rc = init_domain_cpuid_policy(d)) ) goto fail; - d->arch.cpuids = xmalloc_array(cpuid_input_t, MAX_CPUID_INPUT); - rc = -ENOMEM; - if ( d->arch.cpuids == NULL ) - goto fail; - for ( i = 0; i < MAX_CPUID_INPUT; i++ ) - { - d->arch.cpuids[i].input[0] = XEN_CPUID_INPUT_UNUSED; - d->arch.cpuids[i].input[1] = XEN_CPUID_INPUT_UNUSED; - } - d->arch.x86_vendor = boot_cpu_data.x86_vendor; d->arch.x86 = boot_cpu_data.x86; d->arch.x86_model = boot_cpu_data.x86_model; @@ -678,7 +668,6 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags, iommu_domain_destroy(d); cleanup_domain_irq_mapping(d); free_xenheap_page(d->shared_info); - xfree(d->arch.cpuids); xfree(d->arch.cpuid); if ( paging_initialised ) paging_final_teardown(d); @@ -697,7 +686,6 @@ void arch_domain_destroy(struct domain *d) hvm_domain_destroy(d); xfree(d->arch.e820); - xfree(d->arch.cpuids); xfree(d->arch.cpuid); free_domain_pirqs(d); diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 038521a..772c5d2 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -51,13 +51,13 @@ static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop) static int update_legacy_cpuid_array(struct domain *d, const xen_domctl_cpuid_t *ctl) { - cpuid_input_t *cpuid, *unused = NULL; + xen_domctl_cpuid_t *cpuid, *unused = NULL; unsigned int i; /* Try to insert ctl into d->arch.cpuids[] */ for ( i = 0; i < MAX_CPUID_INPUT; i++ ) { - cpuid = &d->arch.cpuids[i]; + cpuid = &d->arch.cpuid->legacy[i]; if ( cpuid->input[0] == XEN_CPUID_INPUT_UNUSED ) { diff --git a/xen/include/asm-x86/cpuid.h b/xen/include/asm-x86/cpuid.h index 38e3975..b359b38 100644 --- a/xen/include/asm-x86/cpuid.h +++ b/xen/include/asm-x86/cpuid.h @@ -203,6 +203,10 @@ struct cpuid_policy /* Toolstack selected Hypervisor max_leaf (if non-zero). */ uint8_t hv_limit, hv2_limit; + + /* Temporary: Legacy data array. */ +#define MAX_CPUID_INPUT 40 + xen_domctl_cpuid_t legacy[MAX_CPUID_INPUT]; }; /* Fill in a featureset bitmap from a CPUID policy. */ diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h index 9e3a07b..eb6227d 100644 --- a/xen/include/asm-x86/domain.h +++ b/xen/include/asm-x86/domain.h @@ -234,9 +234,6 @@ struct paging_vcpu { struct shadow_vcpu shadow; }; -#define MAX_CPUID_INPUT 40 -typedef xen_domctl_cpuid_t cpuid_input_t; - #define MAX_NESTEDP2M 10 #define MAX_ALTP2M 10 /* arbitrary */ @@ -360,8 +357,6 @@ struct arch_domain */ uint8_t x87_fip_width; - cpuid_input_t *cpuids; - /* CPUID Policy. */ struct cpuid_policy *cpuid; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |