diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-09-22 15:24:03 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-09-22 15:24:03 +0100 |
commit | 755af07edba1768cefdc33851b70fc21bc17e0f6 (patch) | |
tree | 93726c2d9f64fac39d5f28895ef9a4bf0d2e5c0b /xen/arch/x86/platform_hypercall.c | |
parent | 23f36ed6ff84de351caab8903b9909ec22e5d294 (diff) | |
download | xen-755af07edba1768cefdc33851b70fc21bc17e0f6.tar.gz xen-755af07edba1768cefdc33851b70fc21bc17e0f6.tar.bz2 xen-755af07edba1768cefdc33851b70fc21bc17e0f6.zip |
x86/cpufreq: don't use static array for large per-CPU data structures
... as this is rather wasteful when Xen is configured to support many
CPUs but is running on systems having only a few.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/arch/x86/platform_hypercall.c')
-rw-r--r-- | xen/arch/x86/platform_hypercall.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index bb36f8943b..72c6648deb 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -380,8 +380,19 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op) ret = -EINVAL; break; } - pmpt = &processor_pminfo[cpuid]; - pxpt = &processor_pminfo[cpuid].perf; + pmpt = processor_pminfo[cpuid]; + if ( !pmpt ) + { + pmpt = xmalloc(struct processor_pminfo); + if ( !pmpt ) + { + ret = -ENOMEM; + break; + } + memset(pmpt, 0, sizeof(*pmpt)); + processor_pminfo[cpuid] = pmpt; + } + pxpt = &pmpt->perf; pmpt->acpi_id = xenpmpt->id; pmpt->id = cpuid; |