On Fri, 14 Oct 2016, Fenghua Yu wrote:
> +static inline bool cache_alloc_hsw_probe(void)
> +{
> +     u32 l, h;
> +     u32 max_cbm = BIT_MASK(20) - 1;

Two options here:

+       u32 l, h, max_cbm = BIT_MASK(20) - 1;

or

+       u32 max_cbm = BIT_MASK(20) - 1;
+       u32 l, h;

I personally prefer #1, but I can accept #2 as well. Both are quick to
parse while the one you chose is stopping the reading flow.

> +
> +     if (wrmsr_safe(IA32_L3_CBM_BASE, max_cbm, 0))
> +             return false;
> +     rdmsr(IA32_L3_CBM_BASE, l, h);
> +     if (l != max_cbm)
> +             return false;
> +
> +     return true;

        return l == max_cbm;

Hmm?

> +}
> +
>  static inline bool get_rdt_resources(void)
>  {
>       bool ret = false;
>  
> +     if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &&
> +         boot_cpu_data.x86 == 6 &&
> +         boot_cpu_data.x86_model == INTEL_FAM6_HASWELL_X)
> +             return cache_alloc_hsw_probe();

Can you please stick that model check into the probe function and do:

        if (cache_alloc_hsw_probe())
                return true;
> +
>       if (!boot_cpu_has(X86_FEATURE_RDT_A))
>               return false;
>       if (boot_cpu_has(X86_FEATURE_CAT_L3))

Thanks,

        tglx

Reply via email to