lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 21 May 2015 09:36:54 -0700 (PDT)
From:	Vikas Shivappa <vikas.shivappa@...el.com>
To:	Thomas Gleixner <tglx@...utronix.de>
cc:	Vikas Shivappa <vikas.shivappa@...el.com>,
	Vikas Shivappa <vikas.shivappa@...ux.intel.com>,
	x86@...nel.org, linux-kernel@...r.kernel.org, hpa@...or.com,
	mingo@...nel.org, tj@...nel.org, peterz@...radead.org,
	Matt Fleming <matt.fleming@...el.com>,
	"Auld, Will" <will.auld@...el.com>, peter.zijlstra@...el.com,
	h.peter.anvin@...el.com,
	"Juvva, Kanaka D" <kanaka.d.juvva@...el.com>, mtosatti@...hat.com
Subject: Re: [PATCH 3/7] x86/intel_rdt: Add support for cache bit mask
 management



On Wed, 20 May 2015, Thomas Gleixner wrote:

> On Wed, 20 May 2015, Thomas Gleixner wrote:
>> On Wed, 20 May 2015, Vikas Shivappa wrote:
>>> On Mon, 18 May 2015, Thomas Gleixner wrote:
>>>
>>>> On Mon, 18 May 2015, Vikas Shivappa wrote:
>>>>> On Fri, 15 May 2015, Thomas Gleixner wrote:
>>>>>>> +static inline bool intel_rdt_update_cpumask(int cpu)
>>>>>>> +{
>>>>>>> +	}
>>>>>>
>>>>>> You must be kidding.
>>>>>
>>>>> the rapl and cqm use similar code. You want me to keep a seperate package
>>>>> mask
>>>>> for this code which not would be that frequent at all ?
>>>>
>>>> You find for everything a place where you copied your stuff from
>>>> without thinking about it, right?
>>>>
>>>> Other people dessperately try to fix the cpu online times which are
>>>> more and more interesting the larger the systems become. So it might
>>>> be a good idea to come up with a proper fast implementation which can
>>>> be used everywhere instead of blindly copying code.
>>>
>>> Ok , i can try to do this as a seperate patch after the cache allocation to
>>
>> Hell no. We do preparatory patches first. I'm not believing in 'can
>> try' promises.
>>
>>> get a support for faster implementation for traversing package and cpus in the
>>> packages which can be used by everyone. we would need to start from scratch
>>> with having packagemask_t equivalent to cpumask_t. hope that is fair ?
>>
>> Yes, that's what I want to see.
>
> I was kidding. You need two functionalities:
>
>  1) A way to figure out whether you already have a CPU taking care of the
>     package to which the newly online CPU belongs.
>
>     That's something you need to track in your own code and I already
>     gave you the 5 lines of code which can handle that. Remember?
>
>        id =  topology_physical_package_id(cpu);
>        if (!__test_and_set_bit(id, &package_map)) {
>                cpumask_set_cpu(cpu, &rdt_cpumask);
>                cbm_update_msrs(cpu);
>        }
>
>     So you cannot add much infrastructure for that because you need
>     to track your own state in the CAT relevant package bitmap.
>
>  2) A way to find out whether the to be offlined CPU is the last
>     online CPU of a package. If it's not the last one, then you need
>     a fast way to find the next online cpu which belongs to that
>     package. If it's the last one you need to kill the cat.
>
>     The information is already available, so it's not rocket
>     science. And it takes maximal 7 lines of code to implement
>     it.
>
>     Q: Why 'maximal' 7?
>     A: Because I'm a lazy bastard and cannot be bothered to figure
>     	out whether one of the lines is superfluous.
>     Q: Why can't I be bothered?
>     A: It's none of my problems and it actually does not matter much.
>
>     Here is the pseudo code:
>
>     	   do_magic_stuff(tmp, TCC, COM);
> 	   clr(c, tmp);
> 	   n = do_more_stuff(tmp);
>     	   if (notavailable(n))
> 	      	kill_the_cat();
> 	   else
> 	        set(n, RCM);
>
>     Hint: One of the NNN placeholders resolves to topology_core_cpumask()
>
> Now once you figured that out, you will notice that the above 5
> lines of code to solve problem #1 can be simplified because you can
> avoid the package_map bitmap completely.
>
> Sorry, no pseudo code for this. But you get more than one hint this
> time:
> 	- Hint #1 still applies
> 	- The logic is very similar to the above #2 pseudo code
> 	- It takes maximal 6 lines of code to implement it
>
> There is one caveat:
>
>    If Hint #1 cannot solve your problem, then you need to figure out
>    why and then work with the people who are responsible for it to
>    figure out how it can be resolved.
>
> A few general hints:
>
>    - The line counts are neither including the conditionals which
>      invoke that code nor the function body nor variable
>      declarations. But they include braces,
>
>      All I care about is the logic itself. See the pseudo code
>      example above.
>
>    - Please provide a solution for #2 and #1 before you bother me
>      with another patch series.

Thanks a lot for the very detailed expectations. I appreciate your time. Will 
work on the requirements and send a patch before anything else.

Vikas

>
> Thanks,
>
> 	tglx
>
>
>
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ