Re: [PATCH v7 11/13] arch/x86: Introduce QOS feature for AMD

From: Moger, Babu
Date: Wed Nov 14 2018 - 13:17:32 EST




On 11/14/18 10:38 AM, Moger, Babu wrote:
> Fenghua,
>
>> -----Original Message-----
>> From: linux-kernel-owner@xxxxxxxxxxxxxxx <linux-kernel-
>> owner@xxxxxxxxxxxxxxx> On Behalf Of Yu, Fenghua
>> Sent: Tuesday, November 13, 2018 3:50 PM
>> To: Moger, Babu <Babu.Moger@xxxxxxx>; tglx@xxxxxxxxxxxxx;
>> mingo@xxxxxxxxxx; bp@xxxxxxxxx; corbet@xxxxxxx; Chatre, Reinette
>> <reinette.chatre@xxxxxxxxx>; peterz@xxxxxxxxxxxxx;
>> gregkh@xxxxxxxxxxxxxxxxxxx; davem@xxxxxxxxxxxxx; akpm@linux-
>> foundation.org
>> Cc: hpa@xxxxxxxxx; x86@xxxxxxxxxx; mchehab+samsung@xxxxxxxxxx;
>> arnd@xxxxxxxx; kstewart@xxxxxxxxxxxxxxxxxxx; pombredanne@xxxxxxxx;
>> rafael@xxxxxxxxxx; kirill.shutemov@xxxxxxxxxxxxxxx; Luck, Tony
>> <tony.luck@xxxxxxxxx>; qianyue.zj@xxxxxxxxxxxxxxx; Shen, Xiaochen
>> <xiaochen.shen@xxxxxxxxx>; pbonzini@xxxxxxxxxx; Singh, Brijesh
>> <brijesh.singh@xxxxxxx>; Hurwitz, Sherry <sherry.hurwitz@xxxxxxx>;
>> dwmw2@xxxxxxxxxxxxx; Lendacky, Thomas <Thomas.Lendacky@xxxxxxx>;
>> luto@xxxxxxxxxx; joro@xxxxxxxxxx; jannh@xxxxxxxxxx;
>> vkuznets@xxxxxxxxxx; rian@xxxxxxxxxxxx; jpoimboe@xxxxxxxxxx; linux-
>> kernel@xxxxxxxxxxxxxxx; linux-doc@xxxxxxxxxxxxxxx; Yu, Fenghua
>> <fenghua.yu@xxxxxxxxx>
>> Subject: RE: [PATCH v7 11/13] arch/x86: Introduce QOS feature for AMD
>>
>>> From: Moger, Babu [mailto:Babu.Moger@xxxxxxx]
>>> Subject: [PATCH v7 11/13] arch/x86: Introduce QOS feature for AMD
>>> The specification for this feature is available at
>>> https://developer.amd.com/wp-content/resources/56375.pdf
>>
>>> +bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r) {
>>> + if (val > r->default_ctrl) {
>>> + rdt_last_cmd_puts("mask out of range\n");
>>> + return false;
>>> + }
>>
>> If val is zero, then this closid cannot allocate any cache line.
>>
>> I'm wondering: does that mean the tasks running with this closid directly
>> access memory without cache? Is there any usage for this situation?

Here is the detailed answer to your question from Doug(in CC).

A closid with L3_MASK of all 0's will not use any of the L3 cache, but
will still be able to use L2 cache. So, no, the processes in that closid
will not "directly access memory" in the sense that they will use the L1
and L2 caches as normal. But if they miss the L2 then, yes, the access
will go directly to memory. To be precise, none of the lines which are
fetched by a process running with such a configuration will be installed
in the L3 cache, so subsequent accesses which miss the L2 cache will not
find the requested data in the L3 cache and will then go on to access memory.

- Doug

>
> I would think any memory access has to happen via cache only. But
> I am not sure about the usage of this situation. Will check on that.
> Will post if I get any more information. But I can say that it is
> allowed to have mask as zero. Looking at the specs
> https://developer.amd.com/wp-content/resources/56375.pdf
>
> The bits which are set in the various L3_MASK_n registers do not have to be
> contiguous and may overlap in any desired combination. If an L3_MASK_n
> register is programmed with all 0's, that COS will be prevented from allocating
> any lines in the L3 cache. At reset, all L3_MASK_n registers are initialized to all
> 1's, allowing all processors to use the entire L3 cache accessible to them.
>
>>
>> Thanks.
>>
>> -Fenghua