Hi Arnaldo, On Tue, Dec 5, 2017 at 7:26 PM, Arnaldo Carvalho de Melo <arnaldo.m...@gmail.com> wrote: > Em Tue, Dec 05, 2017 at 08:35:22PM +0800, Jin, Yao escreveu: >> A quick test with the new patch 'fix_json_v9_2.patch' shows it working. > > Where is this fix_json_v9_2.patch file? I want to fold it with the patch > introducing the problem.
I will send you formal patch ASAP. thanks Ganapat > > - Arnaldo > >> See the log: >> >> root@skl:/tmp# perf stat --per-thread -p 10322 -M CPI,IPC >> ^C >> Performance counter stats for process id '10322': >> >> vmstat-10322 1,879,654 inst_retired.any # >> 0.8 CPI >> vmstat-10322 1,565,807 cycles >> vmstat-10322 1,879,654 inst_retired.any # >> 1.2 IPC >> vmstat-10322 1,565,807 cpu_clk_unhalted.thread >> >> 2.850291804 seconds time elapsed >> >> Thanks for fixing it quickly. >> >> Thanks >> Jin Yao >> >> On 12/5/2017 3:23 PM, Jin, Yao wrote: >> > Hi, >> > >> > I applied the diff but it's failed. >> > >> > jinyao@skl:~/skl-ws/perf-dev/lck-4594/src$ patch -p1 < 1.pat >> > patching file tools/perf/util/pmu.c >> > patch: **** malformed patch at line 41: *head, struct perf_pmu *pmu) >> > >> > Could you send the patch as attachment to me in another mail thread? >> > >> > to yao....@linux.intel.com >> > cc yao....@intel.com >> > >> > Thanks >> > Jin Yao >> > >> > On 12/5/2017 3:12 PM, Ganapatrao Kulkarni wrote: >> > > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c >> > > index 5ad8a18..57e38fd 100644 >> > > --- a/tools/perf/util/pmu.c >> > > +++ b/tools/perf/util/pmu.c >> > > @@ -538,6 +538,34 @@ static bool pmu_is_uncore(const char *name) >> > > } >> > > >> > > /* >> > > + * PMU CORE devices have different name other than cpu in sysfs on some >> > > + * platforms. looking for possible sysfs files to identify as core >> > > device. >> > > + */ >> > > +static int is_pmu_core(const char *name) >> > > +{ >> > > + struct stat st; >> > > + char path[PATH_MAX]; >> > > + const char *sysfs = sysfs__mountpoint(); >> > > + >> > > + if (!sysfs) >> > > + return 0; >> > > + >> > > + /* Look for cpu sysfs (x86 and others) */ >> > > + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/cpu", sysfs); >> > > + if ((stat(path, &st) == 0) && >> > > + (strncmp(name, "cpu", strlen("cpu")) == 0)) >> > > + return 1; >> > > + >> > > + /* Look for cpu sysfs (specific to arm) */ >> > > + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/%s/cpus", >> > > + sysfs, name); >> > > + if (stat(path, &st) == 0) >> > > + return 1; >> > > + >> > > + return 0; >> > > +} >> > > + >> > > +/* >> > > * Return the CPU id as a raw string. >> > > * >> > > * Each architecture should provide a more precise id string that >> > > @@ -641,7 +669,7 @@ static void pmu_add_cpu_aliases(struct list_head >> > > *head, struct perf_pmu *pmu) >> > > break; >> > > } >> > > >> > > - if (pmu->is_uncore) { >> > > + if (!is_pmu_core(name)) { >> > > /* check for uncore devices */ >> > > if (pe->pmu == NULL) >> > > continue; thanks Ganapat