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] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 6 May 2021 12:59:08 +0800
From:   "Jin, Yao" <yao.jin@...ux.intel.com>
To:     Jiri Olsa <jolsa@...hat.com>
Cc:     acme@...nel.org, jolsa@...nel.org, peterz@...radead.org,
        mingo@...hat.com, alexander.shishkin@...ux.intel.com,
        Linux-kernel@...r.kernel.org, ak@...ux.intel.com,
        kan.liang@...el.com, yao.jin@...el.com
Subject: Re: [PATCH v1 2/2] perf header: Support hybrid CPU_PMU_CAPS

Hi Jiri,

On 5/4/2021 11:07 PM, Jiri Olsa wrote:
> On Fri, Apr 30, 2021 at 03:46:02PM +0800, Jin Yao wrote:
>> On hybrid platform, it may have several cpu pmus, such as,
>> "cpu_core" and "cpu_atom". The CPU_PMU_CAPS feature in perf
>> header needs to be improved to support multiple cpu pmus.
>>
>> The new layout in header is defined as:
>>
>> <nr_caps>
>> <caps string>
>> <caps string>
>> <pmu name>
>> <nr of rest pmus>
> 
> not sure why is the 'nr of rest pmus' needed
> 

The 'nr of rest pmus' indicates the remaining pmus which are waiting for process.

For example,

<nr_caps>
<caps string>
"cpu_core"
1
<nr_caps>
<caps string>
"cpu_atom"
0

When we see '0' in data file processing, we know all the pmu have been processed yet.

> the current format is:
> 
>          u32 nr_cpu_pmu_caps;
>          {
>                  char    name[];
>                  char    value[];
>          } [nr_cpu_pmu_caps]
> 
> 
> I guess we could extend it to:
> 
>          u32 nr_cpu_pmu_caps;
>          {
>                  char    name[];
>                  char    value[];
>          } [nr_cpu_pmu_caps]
> 	char pmu_name[]
> 
>          u32 nr_cpu_pmu_caps;
>          {
>                  char    name[];
>                  char    value[];
>          } [nr_cpu_pmu_caps]
> 	char pmu_name[]
> 
> 	...
> 
> and we could detect the old format by checking that there's no
> pmu name.. but maybe I'm missing something, I did not check deeply,
> please let me know
>

Actually we do the same thing, but I just add an extra 'nr of rest pmus' after the pmu_name. The 
purpose of 'nr of rest pmus' is when we see '0' at 'nr of rest pmus', we know that all pmus have 
been processed.

Otherwise, we have to continue reading data file till we find something incorrect and then finally 
drop the last read data.

So is this solution acceptable?

> also would be great to move the format change and storing hybrid
> pmus in separate patches
> 

Maybe we have to put the storing and processing into one patch.

Say patch 1 contains the format change and storing hybrid pmus. And patch 2 contains the processing 
for the new format. If the repo only contains the patch 1, I'm afraid that may introduce the 
compatible issue.

Thanks
Jin Yao

> thanks,
> jirka
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ