On 6/3/2019 12:36 PM, Jiri Olsa wrote:
On Thu, May 30, 2019 at 07:53:47AM -0700, [email protected] wrote:

SNIP

+
  static int perf_env__get_core(struct cpu_map *map, int idx, void *data)
  {
        struct perf_env *env = data;
        int core = -1, cpu = perf_env__get_cpu(env, map, idx);
if (cpu != -1) {
-               int socket_id = env->cpu[cpu].socket_id;
-
                /*
-                * Encode socket in upper 16 bits
-                * core_id is relative to socket, and
+                * Encode socket in upper 24 bits

please note we use upper 8 bits for socket number,
the comments suggests it's 24 bits

I will fix it in v3.


+                * encode die id in upper 16 bits
+                * core_id is relative to socket and die,
                 * we need a global id. So we combine
-                * socket + core id.
+                * socket + die id + core id
                 */
-               core = (socket_id << 16) | (env->cpu[cpu].core_id & 0xffff);
+               if (WARN_ONCE(env->cpu[cpu].socket_id >> 8,
+                   "The socket_id number is too big. Please upgrade the perf 
tool.\n"))

hum, how's perf tool upgrade going to help in here?


I think there is nothing we can do for current encoding, if the socket number or die number is bigger than 8 bits. We have to design a new encoding method, which needs to update the perf tool.
So I use a similar expression from process_cpu_topology().
                if (do_core_id_test && nr != (u32)-1 && nr > (u32)cpu_nr) {
                        pr_debug("socket_id number is too big."
                                 "You may need to upgrade the perf tool.\n");
                        goto free_cpu;
                }

Any suggestions for the warning message?




+                       return -1;
+
+               if (WARN_ONCE(env->cpu[cpu].die_id >> 8,
+                   "The die_id number is too big. Please upgrade the perf 
tool.\n"))
+                       return -1;
+
+               core = (env->cpu[cpu].socket_id << 24) |
+                      (env->cpu[cpu].die_id << 16) |
+                      (env->cpu[cpu].core_id & 0xffff);
        }

other than comments above, the patchset looks good to me


Thanks for the review. I will send out V3 after the comments are addressed.

Thanks,
Kan

Reply via email to