lkml.org 
[lkml]   [2016]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/5] x86/mbm: Intel Memory B/W Monitoring enumeration and init
On Wed, 10 Feb 2016, Vikas Shivappa wrote:ar	
> +static int intel_mbm_init(void)
> +{
> + int ret = 0, array_size, maxid = cqm_max_rmid + 1;
> +
> + mbm_socket_max = cpumask_weight(&cqm_cpumask);

This should use the new topology_max_packages() function, so you can alloc
your array correctly even if not all sockets are online/plugged yet.

> + array_size = sizeof(struct sample) * maxid * mbm_socket_max;
> + mbm_local = kmalloc(array_size, GFP_KERNEL);
> + if (!mbm_local) {
> + ret = -ENOMEM;

return -ENOMEM is sufficient here.

> + goto out;
> + }
> +
> + mbm_total = kmalloc(array_size, GFP_KERNEL);
> + if (!mbm_total) {
> + kfree(mbm_local);
> + ret = -ENOMEM;
> + }
> +out:
> +
> + return ret;
> +}
> +
> cqm_l3_scale = boot_cpu_data.x86_cache_occ_scale;
> @@ -1384,14 +1520,34 @@ static int __init intel_cqm_init(void)
>
> __perf_cpu_notifier(intel_cqm_cpu_notifier);

You really should register the notifier _AFTER_ registering the pmu. That
needs to be fixed anyway, because the existing code leaks the notifier AND
memory in case perf_pmu_register fails.

Thanks,

tglx

\
 
 \ /
  Last update: 2016-02-24 12:01    [W:0.688 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site