From nobody Tue Feb 10 00:27:47 2026 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 826EB225A39 for ; Tue, 1 Apr 2025 18:25:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743531956; cv=none; b=DCIjD1tahYr3xMvrNJmcaOucHvseA/KB+QhXN6n7+TEVglvOx797O0lY7vfNpw7uLlTlXWUkPel7XRay820aE+BnFepcrEgemBBWWGHrE5cTSPAlisWlySPn0JCN8+5qY/3y5EI4S17Rj2Y7OnFlOd1SbBiXyoeKpXEVFu7pngs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743531956; c=relaxed/simple; bh=ssJnoXCMCIxg/r0KvR46wCsctcfmKPYwSEmK6Obx5Iw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=tSrD87uLHpCsUnVHM6FwYcsIZ5HjKhr0VleWP6jHJeNhwNv7luDH1DQ/+PFvWTLDKhgMdyiBdj4qbhCTfh0RR5GOaRzALsBJbMuL6dzQKMGhFlg/mAFArdpnwGrFtdYFLIMLgR3vh8YUikHx8SFLa89qPliaBbr0pex5W232flI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=wJdUXJJA; arc=none smtp.client-ip=209.85.214.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="wJdUXJJA" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-224191d9228so7805185ad.3 for ; Tue, 01 Apr 2025 11:25:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1743531954; x=1744136754; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=WbTNVfPfGOZtV31+YgAoq7VcrpMcIRlshuKG92aboaA=; b=wJdUXJJA3LyeMiut7LqkxXdiDpExPzfr0yU0cM6QtPQjajAFtuiGCCLAu5T8r/tRv8 enas/WZDRup5mH7aCg4qEgpaCBfyfskFA+MAGEorl/0N1O9j5pTHEPBzkNtuEFoL+xYZ kGbvE8zIiMGkf91ikK1TQdZ519g6uBHYLheohCdG+LMjF5YetLOjQaTG+0jBxjyRSAbZ VWxUf+Tn3ouTuSgIDQqI7nALBu/YbeF438S1ziiNAJ0gatbiq4mnhRhXrMz9cHaASURd i0Vxi94ZlIqASigjNap26U8m+VyII/IrhT2ORmDO7zcTMQHAYcJz9rgabNajoRSj10Oo M9ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743531954; x=1744136754; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WbTNVfPfGOZtV31+YgAoq7VcrpMcIRlshuKG92aboaA=; b=BP8o9/Az5ch0zCYRwN2xCXDWNgvOOSfzkSPK8Wysyq0i8M8D5WM0PBhKfB4hK9tJy8 T27WoqaNzddTBgesrlBVeutew9KPbGG8gAMKkRD5MNyBGEQxYilWXLGF0C7NkjYdoRuz o+ucDok+ySwvtCGg/5H6eHGF+vq2G07sUVip8+Zb1IoqHWxpgmt/mABFN2Ajb5pFdPJi iIDNsEzpeIC0hDvBZMlktU2691eoAXxEYeoyzjK+FA7d1NohIrMCjll6ee+62Z1k4k2h PPkus0ndxpCbG5buL6cMwED9zIT0WA6vT/trUyvJZ2Tnfll3md8Rhl+RNrDgTl7mGvJb v2Kg== X-Forwarded-Encrypted: i=1; AJvYcCURXtBbqjERoa8USzI5xyzHkCqFuvBwmD+zwchS5lNxI8KXcs7oDN0Fnz4cgdr4tGjjp5Q6ewGGCp5WtQk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw7eZqBuZ5Iitm1VoC6Pk5OhPoYAlIL7fHyCMKVUPbCapm8I1+Z rxAqSF23/zw4k8gynGYmOisCXsZA13ylcbvWSwC0vkZf/hAuUB7C3bOF+NMaX/7sQfk31CSLMVx EWLM+Pw== X-Google-Smtp-Source: AGHT+IGm8WFbj7OaIz/NHPNtyB0BO2iv3wTzzs/z112p+SUHgK9W3OD0HDZkH9Rbgrm4+EmSVllWh4/lTaJ6 X-Received: from plkk12.prod.google.com ([2002:a17:902:c40c:b0:215:48e7:5dc8]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ce8b:b0:224:179a:3b8f with SMTP id d9443c01a7336-2292f979cb9mr211562555ad.23.1743531953315; Tue, 01 Apr 2025 11:25:53 -0700 (PDT) Date: Tue, 1 Apr 2025 11:23:36 -0700 In-Reply-To: <20250401182347.3422199-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250401182347.3422199-1-irogers@google.com> X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250401182347.3422199-39-irogers@google.com> Subject: [PATCH v1 38/48] perf sched: Silence -Wshorten-64-to-32 warnings From: Ian Rogers To: Yury Norov , Rasmus Villemoes , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Thomas Gleixner , Darren Hart , Davidlohr Bueso , "=?UTF-8?q?Andr=C3=A9=20Almeida?=" , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Yicong Yang , Jonathan Cameron , Nathan Chancellor , Bill Wendling , Justin Stitt , Josh Poimboeuf , Al Viro , Kyle Meyer , Ben Gainey , Athira Rajeev , Kajol Jain , Aditya Gupta , Eder Zulian , Dapeng Mi , Kuan-Wei Chiu , He Zhe , Dirk Gouders , Brian Geffon , Ravi Bangoria , Howard Chu , Charlie Jenkins , Colin Ian King , Dominique Martinet , Jann Horn , Masahiro Yamada , Arnd Bergmann , Yang Jihong , Dmitry Vyukov , Andi Kleen , Graham Woodward , Ilkka Koskinen , Anshuman Khandual , Zhongqiu Han , Hao Ge , Tengda Wu , Gabriele Monaco , Chun-Tse Shao , Casey Chen , "Dr. David Alan Gilbert" , Li Huafei , "Steinar H. Gunderson" , Levi Yun , Weilin Wang , Thomas Falcon , Thomas Richter , Andrew Kreimer , "=?UTF-8?q?Krzysztof=20=C5=81opatowski?=" , Christophe Leroy , Jean-Philippe Romain , Junhao He , "Masami Hiramatsu (Google)" , Xu Yang , Steve Clevenger , Zixian Cai , Stephen Brennan , Yujie Liu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The clang warning -Wshorten-64-to-32 can be useful to catch inadvertent truncation. In some instances this truncation can lead to changing the sign of a result, for example, truncation to return an int to fit a sort routine. Silence the warning by making the implicit truncation explicit. Signed-off-by: Ian Rogers --- tools/perf/builtin-sched.c | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 26ece6e9bfd1..8ddb0bab5748 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -595,7 +595,7 @@ static int self_open_counters(struct perf_sched *sched,= unsigned long cur_task) static u64 get_cpu_usage_nsec_self(int fd) { u64 runtime; - int ret; + ssize_t ret; =20 ret =3D read(fd, &runtime, sizeof(runtime)); BUG_ON(ret !=3D sizeof(runtime)); @@ -823,7 +823,7 @@ replay_wakeup_event(struct perf_sched *sched, struct machine *machine __maybe_unused) { const char *comm =3D evsel__strval(evsel, sample, "comm"); - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); struct task_desc *waker, *wakee; =20 if (verbose > 0) { @@ -846,8 +846,8 @@ static int replay_switch_event(struct perf_sched *sched, { const char *prev_comm =3D evsel__strval(evsel, sample, "prev_comm"), *next_comm =3D evsel__strval(evsel, sample, "next_comm"); - const u32 prev_pid =3D evsel__intval(evsel, sample, "prev_pid"), - next_pid =3D evsel__intval(evsel, sample, "next_pid"); + const u32 prev_pid =3D (u32)evsel__intval(evsel, sample, "prev_pid"), + next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); struct task_desc *prev, __maybe_unused *next; u64 timestamp0, timestamp =3D sample->time; int cpu =3D sample->cpu; @@ -1116,8 +1116,8 @@ static int latency_switch_event(struct perf_sched *sc= hed, struct perf_sample *sample, struct machine *machine) { - const u32 prev_pid =3D evsel__intval(evsel, sample, "prev_pid"), - next_pid =3D evsel__intval(evsel, sample, "next_pid"); + const u32 prev_pid =3D (u32)evsel__intval(evsel, sample, "prev_pid"), + next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); const char prev_state =3D evsel__taskstate(evsel, sample, "prev_state"); struct work_atoms *out_events, *in_events; struct thread *sched_out, *sched_in; @@ -1186,7 +1186,7 @@ static int latency_runtime_event(struct perf_sched *s= ched, struct perf_sample *sample, struct machine *machine) { - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); const u64 runtime =3D evsel__intval(evsel, sample, "runtime"); struct thread *thread =3D machine__findnew_thread(machine, -1, pid); struct work_atoms *atoms =3D thread_atoms_search(&sched->atom_root, threa= d, &sched->cmp_pid); @@ -1221,7 +1221,7 @@ static int latency_wakeup_event(struct perf_sched *sc= hed, struct perf_sample *sample, struct machine *machine) { - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); struct work_atoms *atoms; struct work_atom *atom; struct thread *wakee; @@ -1282,7 +1282,7 @@ static int latency_migrate_task_event(struct perf_sch= ed *sched, struct perf_sample *sample, struct machine *machine) { - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); u64 timestamp =3D sample->time; struct work_atoms *atoms; struct work_atom *atom; @@ -1618,8 +1618,8 @@ static void print_sched_map(struct perf_sched *sched,= struct perf_cpu this_cpu, static int map_switch_event(struct perf_sched *sched, struct evsel *evsel, struct perf_sample *sample, struct machine *machine) { - const u32 next_pid =3D evsel__intval(evsel, sample, "next_pid"); - const u32 prev_pid =3D evsel__intval(evsel, sample, "prev_pid"); + const u32 next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); + const u32 prev_pid =3D (u32)evsel__intval(evsel, sample, "prev_pid"); struct thread *sched_in, *sched_out; struct thread_runtime *tr; int new_shortname; @@ -1641,7 +1641,7 @@ static int map_switch_event(struct perf_sched *sched,= struct evsel *evsel, sched->max_cpu =3D this_cpu; =20 if (sched->map.comp) { - cpus_nr =3D bitmap_weight(sched->map.comp_cpus_mask, MAX_CPUS); + cpus_nr =3D (int)bitmap_weight(sched->map.comp_cpus_mask, MAX_CPUS); if (!__test_and_set_bit(this_cpu.cpu, sched->map.comp_cpus_mask)) { sched->map.comp_cpus[cpus_nr++] =3D this_cpu; new_cpu =3D true; @@ -1784,8 +1784,8 @@ static int process_sched_switch_event(const struct pe= rf_tool *tool, { struct perf_sched *sched =3D container_of(tool, struct perf_sched, tool); int this_cpu =3D sample->cpu, err =3D 0; - u32 prev_pid =3D evsel__intval(evsel, sample, "prev_pid"), - next_pid =3D evsel__intval(evsel, sample, "next_pid"); + u32 prev_pid =3D (u32)evsel__intval(evsel, sample, "prev_pid"); + u32 next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); =20 if (sched->curr_pid[this_cpu] !=3D (u32)-1) { /* @@ -1919,7 +1919,7 @@ static int perf_sched__read_events(struct perf_sched = *sched) session =3D perf_session__new(&data, &sched->tool); if (IS_ERR(session)) { pr_debug("Error creating perf session"); - return PTR_ERR(session); + return (int)PTR_ERR(session); } =20 symbol__init(&session->header.env); @@ -1990,7 +1990,7 @@ static void evsel__save_time(struct evsel *evsel, u64= timestamp, u32 cpu) return; =20 if ((cpu >=3D r->ncpu) || (r->last_time =3D=3D NULL)) { - int i, n =3D __roundup_pow_of_two(cpu+1); + u32 n =3D (u32)__roundup_pow_of_two(cpu+1); void *p =3D r->last_time; =20 p =3D realloc(r->last_time, n * sizeof(u64)); @@ -1998,7 +1998,7 @@ static void evsel__save_time(struct evsel *evsel, u64= timestamp, u32 cpu) return; =20 r->last_time =3D p; - for (i =3D r->ncpu; i < n; ++i) + for (u32 i =3D r->ncpu; i < n; ++i) r->last_time[i] =3D (u64) 0; =20 r->ncpu =3D n; @@ -2146,7 +2146,7 @@ static void timehist_print_sample(struct perf_sched *= sched, { struct thread_runtime *tr =3D thread__priv(thread); const char *next_comm =3D evsel__strval(evsel, sample, "next_comm"); - const u32 next_pid =3D evsel__intval(evsel, sample, "next_pid"); + const u32 next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); u32 max_cpus =3D sched->max_cpu.cpu + 1; char tstr[64]; char nstr[30]; @@ -2415,7 +2415,7 @@ static struct thread *get_idle_thread(int cpu) * structs if needed */ if ((cpu >=3D idle_max_cpu) || (idle_threads =3D=3D NULL)) { - int i, j =3D __roundup_pow_of_two(cpu+1); + int j =3D (int)__roundup_pow_of_two(cpu+1); void *p; =20 p =3D realloc(idle_threads, j * sizeof(struct thread *)); @@ -2423,7 +2423,7 @@ static struct thread *get_idle_thread(int cpu) return NULL; =20 idle_threads =3D (struct thread **) p; - for (i =3D idle_max_cpu; i < j; ++i) + for (int i =3D idle_max_cpu; i < j; ++i) idle_threads[i] =3D NULL; =20 idle_max_cpu =3D j; @@ -2530,7 +2530,7 @@ static bool timehist_skip_sample(struct perf_sched *s= ched, if (tr && tr->prio !=3D -1) prio =3D tr->prio; else if (evsel__name_is(evsel, "sched:sched_switch")) - prio =3D evsel__intval(evsel, sample, "prev_prio"); + prio =3D (int)evsel__intval(evsel, sample, "prev_prio"); =20 if (prio !=3D -1 && !test_bit(prio, sched->prio_bitmap)) { rc =3D true; @@ -2602,7 +2602,7 @@ static int timehist_sched_wakeup_event(const struct p= erf_tool *tool, struct thread *thread; struct thread_runtime *tr =3D NULL; /* want pid of awakened task not pid in sample */ - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); =20 thread =3D machine__findnew_thread(machine, 0, pid); if (thread =3D=3D NULL) @@ -2638,8 +2638,8 @@ static void timehist_print_migration_event(struct per= f_sched *sched, return; =20 max_cpus =3D sched->max_cpu.cpu + 1; - ocpu =3D evsel__intval(evsel, sample, "orig_cpu"); - dcpu =3D evsel__intval(evsel, sample, "dest_cpu"); + ocpu =3D (u32)evsel__intval(evsel, sample, "orig_cpu"); + dcpu =3D (u32)evsel__intval(evsel, sample, "dest_cpu"); =20 thread =3D machine__findnew_thread(machine, sample->pid, sample->tid); if (thread =3D=3D NULL) @@ -2686,7 +2686,7 @@ static int timehist_migrate_task_event(const struct p= erf_tool *tool, struct thread *thread; struct thread_runtime *tr =3D NULL; /* want pid of migrated task not pid in sample */ - const u32 pid =3D evsel__intval(evsel, sample, "pid"); + const u32 pid =3D (u32)evsel__intval(evsel, sample, "pid"); =20 thread =3D machine__findnew_thread(machine, 0, pid); if (thread =3D=3D NULL) @@ -2714,8 +2714,8 @@ static void timehist_update_task_prio(struct evsel *e= vsel, { struct thread *thread; struct thread_runtime *tr =3D NULL; - const u32 next_pid =3D evsel__intval(evsel, sample, "next_pid"); - const u32 next_prio =3D evsel__intval(evsel, sample, "next_prio"); + const u32 next_pid =3D (u32)evsel__intval(evsel, sample, "next_pid"); + const u32 next_prio =3D (u32)evsel__intval(evsel, sample, "next_prio"); =20 if (next_pid =3D=3D 0) thread =3D get_idle_thread(sample->cpu); @@ -3258,7 +3258,7 @@ static int perf_sched__timehist(struct perf_sched *sc= hed) =20 session =3D perf_session__new(&data, &sched->tool); if (IS_ERR(session)) - return PTR_ERR(session); + return (int)PTR_ERR(session); =20 if (cpu_list) { err =3D perf_session__cpu_bitmap(session, cpu_list, cpu_bitmap); --=20 2.49.0.504.g3bcea36a83-goog